diff --git a/AY2324S2-CS2103T-F14-1_tp_master/authorship.json b/AY2324S2-CS2103T-F14-1_tp_master/authorship.json index 4bc2d626..af8c95c2 100644 --- a/AY2324S2-CS2103T-F14-1_tp_master/authorship.json +++ b/AY2324S2-CS2103T-F14-1_tp_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"eunrcn"},"content":"# InternHub","lastModifiedDate":"2024-02-25"},{"lineNumber":2,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":3,"author":{"gitId":"ashleygoh1"},"content":"[![CI Status](https://github.com/AY2324S2-CS2103T-F14-1/tp/actions/workflows/gradle.yml/badge.svg)](https://github.com/AY2324S2-CS2103T-F14-1/tp/actions/workflows/gradle.yml)","lastModifiedDate":"2024-03-02"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"eunrcn"},"content":"## Overview","lastModifiedDate":"2024-02-25"},{"lineNumber":8,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":9,"author":{"gitId":"eunrcn"},"content":"InternHub is a comprehensive project designed to assist Computer Science (CS) students in managing their internship applications. This project serves various purposes:","lastModifiedDate":"2024-02-25"},{"lineNumber":10,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":11,"author":{"gitId":"eunrcn"},"content":"- It can be utilized as a starting point for a course project, offering students a foundation rather than building everything from scratch.","lastModifiedDate":"2024-02-25"},{"lineNumber":12,"author":{"gitId":"eunrcn"},"content":"- It serves as a case study for understanding the development of a desktop application in an Object-Oriented Programming (OOP) fashion.","lastModifiedDate":"2024-02-25"},{"lineNumber":13,"author":{"gitId":"eunrcn"},"content":"- The project provides a well-written code base, surpassing the typical size of beginner-level SE modules (around 6 KLoC) without becoming overwhelming.","lastModifiedDate":"2024-02-25"},{"lineNumber":14,"author":{"gitId":"eunrcn"},"content":"- Extensive user and developer documentation is included to facilitate understanding and usage.","lastModifiedDate":"2024-02-25"},{"lineNumber":15,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":16,"author":{"gitId":"eunrcn"},"content":"## Project Details","lastModifiedDate":"2024-02-25"},{"lineNumber":17,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":18,"author":{"gitId":"eunrcn"},"content":"- **Name:** InternHub","lastModifiedDate":"2024-02-25"},{"lineNumber":19,"author":{"gitId":"eunrcn"},"content":"- **Type:** Desktop Application","lastModifiedDate":"2024-02-25"},{"lineNumber":20,"author":{"gitId":"eunrcn"},"content":"- **Initiative:** Part of the se-education.org initiative","lastModifiedDate":"2024-02-25"},{"lineNumber":21,"author":{"gitId":"eunrcn"},"content":"- **Documentation:** [InternHub Product Website](https://ay2324s2-cs2103t-f14-1.github.io/tp/index.html)","lastModifiedDate":"2024-02-28"},{"lineNumber":22,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":23,"author":{"gitId":"eunrcn"},"content":"## Features","lastModifiedDate":"2024-02-25"},{"lineNumber":24,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":25,"author":{"gitId":"eunrcn"},"content":"InternHub is specifically tailored for CS students, offering the following features:","lastModifiedDate":"2024-02-25"},{"lineNumber":26,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":27,"author":{"gitId":"eunrcn"},"content":"- Organization and optimization of internship application details.","lastModifiedDate":"2024-02-25"},{"lineNumber":28,"author":{"gitId":"eunrcn"},"content":"- Seamless management of contacts, interview dates, internship duration, salary and job description.","lastModifiedDate":"2024-02-28"},{"lineNumber":29,"author":{"gitId":"eunrcn"},"content":"- Editable fields to meet sudden changes in attributes.","lastModifiedDate":"2024-02-28"},{"lineNumber":30,"author":{"gitId":"eunrcn"},"content":"- Tagging system to categorize and track the stages of each interview process.","lastModifiedDate":"2024-02-25"},{"lineNumber":31,"author":{"gitId":"eunrcn"},"content":"- Filtering and sorting capabilities for efficient access to relevant information.","lastModifiedDate":"2024-02-25"},{"lineNumber":32,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":33,"author":{"gitId":"eunrcn"},"content":"## Getting Started","lastModifiedDate":"2024-02-25"},{"lineNumber":34,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":35,"author":{"gitId":"eunrcn"},"content":"For detailed information on using InternHub, refer to our [User Guide](https://ay2324s2-cs2103t-f14-1.github.io/tp/UserGuide.html).","lastModifiedDate":"2024-02-28"},{"lineNumber":36,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":37,"author":{"gitId":"eunrcn"},"content":"## Contributing","lastModifiedDate":"2024-02-25"},{"lineNumber":38,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":39,"author":{"gitId":"ashleygoh1"},"content":"This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-03-02"}],"authorContributionMap":{"eunrcn":34,"ashleygoh1":2,"-":3}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"About Us\"","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"# About Us","lastModifiedDate":"2023-09-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"We are a team based in the [School of Computing, National University of Singapore](http://www.comp.nus.edu.sg).","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"You can reach us at the email `seer[at]comp.nus.edu.sg`","lastModifiedDate":"2020-06-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"ashleygoh1"},"content":"### Ashley Goh","lastModifiedDate":"2024-02-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"ashleygoh1"},"content":"\u003cimg src\u003d\"images/ashleygoh1.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-02-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"ashleygoh1"},"content":"[[github](http://github.com/ashleygoh1)]","lastModifiedDate":"2024-02-27"},{"lineNumber":19,"author":{"gitId":"ashleygoh1"},"content":"[[portfolio](team/ashley.md)]","lastModifiedDate":"2024-02-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"ashleygoh1"},"content":"* Role: Developer","lastModifiedDate":"2024-02-27"},{"lineNumber":22,"author":{"gitId":"ashleygoh1"},"content":"* Responsibilities: Model","lastModifiedDate":"2024-02-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"ashleygoh1"},"content":"### Chai Ming How","lastModifiedDate":"2024-02-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"ashleygoh1"},"content":"\u003cimg src\u003d\"images/minghowc.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-02"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"ashleygoh1"},"content":"[[github](http://github.com/minghowC)]","lastModifiedDate":"2024-02-27"},{"lineNumber":29,"author":{"gitId":"ashleygoh1"},"content":"[[portfolio](team/minghow.md)]","lastModifiedDate":"2024-02-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"ashleygoh1"},"content":"* Role: Developer","lastModifiedDate":"2024-02-27"},{"lineNumber":32,"author":{"gitId":"minghowC"},"content":"* Responsibilities: Features Testing","lastModifiedDate":"2024-03-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"ashleygoh1"},"content":"### Chen Yixin","lastModifiedDate":"2024-02-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"Jawad280"},"content":"\u003cimg src\u003d\"images/chenyixin0.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-03"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"ashleygoh1"},"content":"[[github](http://github.com/chenyixin0)]","lastModifiedDate":"2024-02-27"},{"lineNumber":39,"author":{"gitId":"ashleygoh1"},"content":"[[portfolio](team/yixin.md)]","lastModifiedDate":"2024-02-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"ashleygoh1"},"content":"* Responsibilities: Dev Ops + Threading","lastModifiedDate":"2024-02-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"ashleygoh1"},"content":"### Eunice Koh","lastModifiedDate":"2024-02-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"eunrcn"},"content":"\u003cimg src\u003d\"images/eunrcn.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-01"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"ashleygoh1"},"content":"[[github](http://github.com/eunrcn)]","lastModifiedDate":"2024-02-27"},{"lineNumber":49,"author":{"gitId":"ashleygoh1"},"content":"[[portfolio](team/eunice.md)]","lastModifiedDate":"2024-02-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"eunrcn"},"content":"* Responsibilities: Model","lastModifiedDate":"2024-02-28"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"Jawad280"},"content":"### Jawad Afthab","lastModifiedDate":"2024-02-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"Jawad280"},"content":"\u003cimg src\u003d\"images/jawad280.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-02-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"ashleygoh1"},"content":"[[github](http://github.com/Jawad280)]","lastModifiedDate":"2024-02-27"},{"lineNumber":59,"author":{"gitId":"ashleygoh1"},"content":"[[portfolio](team/jawad.md)]","lastModifiedDate":"2024-02-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":"* Responsibilities: UI","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"eunrcn":2,"minghowC":1,"Jawad280":3,"ashleygoh1":20,"-":36}},{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: default.md","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: \"Developer Guide\"","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"pageNav: 3","lastModifiedDate":"2023-09-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":7,"author":{"gitId":"ashleygoh1"},"content":"# InternHub Developer Guide","lastModifiedDate":"2024-03-02"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":14,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":16,"author":{"gitId":"-"},"content":"_{ list here sources of all reused/adapted ideas, code, documentation, and third-party libraries -- include links to the original source as well }_","lastModifiedDate":"2023-09-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureDiagram.puml\" width\u003d\"280\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":"The ***Architecture Diagram*** given above explains the high-level design of the App.","lastModifiedDate":"2021-07-31"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":"Given below is a quick overview of main components and how they interact with each other.","lastModifiedDate":"2021-07-31"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"**`Main`** (consisting of classes [`Main`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/Main.java) and [`MainApp`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/MainApp.java)) is in charge of the app launch and shut down.","lastModifiedDate":"2023-09-03"},{"lineNumber":39,"author":{"gitId":"-"},"content":"* At app launch, it initializes the other components in the correct sequence, and connects them up with each other.","lastModifiedDate":"2023-09-03"},{"lineNumber":40,"author":{"gitId":"-"},"content":"* At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2023-09-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"* [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"* [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"* [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"The *Sequence Diagram* below shows how the components interact with each other for the scenario where the user issues the command `delete 1`.","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureSequenceDiagram.puml\" width\u003d\"574\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":59,"author":{"gitId":"-"},"content":"* defines its *API* in an `interface` with the same name as the Component.","lastModifiedDate":"2021-07-31"},{"lineNumber":60,"author":{"gitId":"-"},"content":"* implements its functionality using a concrete `{Component Name}Manager` class (which follows the corresponding API `interface` mentioned in the previous point.","lastModifiedDate":"2021-07-31"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":62,"author":{"gitId":"-"},"content":"For example, the `Logic` component defines its API in the `Logic.java` interface and implements its functionality using the `LogicManager.java` class which follows the `Logic` interface. Other components interact with a given component through its interface rather than the concrete class (reason: to prevent outside component\u0027s being coupled to the implementation of a component), as illustrated in the (partial) class diagram below.","lastModifiedDate":"2021-07-31"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":64,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ComponentManagers.puml\" width\u003d\"300\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":66,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"The **API** of this component is specified in [`Ui.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/Ui.java)","lastModifiedDate":"2021-07-31"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UiClassDiagram.puml\" alt\u003d\"Structure of the UI Component\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"The UI consists of a `MainWindow` that is made up of parts e.g.`CommandBox`, `ResultDisplay`, `PersonListPanel`, `StatusBarFooter` etc. All these, including the `MainWindow`, inherit from the abstract `UiPart` class which captures the commonalities between classes that represent parts of the visible GUI.","lastModifiedDate":"2021-07-31"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"The `UI` component uses the JavaFx UI framework. The layout of these UI parts are defined in matching `.fxml` files that are in the `src/main/resources/view` folder. For example, the layout of the [`MainWindow`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/MainWindow.java) is specified in [`MainWindow.fxml`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/resources/view/MainWindow.fxml)","lastModifiedDate":"2021-07-31"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"* executes user commands using the `Logic` component.","lastModifiedDate":"2021-07-31"},{"lineNumber":81,"author":{"gitId":"-"},"content":"* listens for changes to `Model` data so that the UI can be updated with the modified data.","lastModifiedDate":"2021-07-31"},{"lineNumber":82,"author":{"gitId":"-"},"content":"* keeps a reference to the `Logic` component, because the `UI` relies on the `Logic` to execute commands.","lastModifiedDate":"2021-07-31"},{"lineNumber":83,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component, as it displays `Person` object residing in the `Model`.","lastModifiedDate":"2021-07-31"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"**API** : [`Logic.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/logic/Logic.java)","lastModifiedDate":"2021-07-31"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/LogicClassDiagram.puml\" width\u003d\"550\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"The sequence diagram below illustrates the interactions within the `Logic` component, taking `execute(\"delete 1\")` API call as an example.","lastModifiedDate":"2023-09-03"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/DeleteSequenceDiagram.puml\" alt\u003d\"Interactions Inside the Logic Component for the `delete 1` Command\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":97,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"**Note:** The lifeline for `DeleteCommandParser` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline continues till the end of diagram.","lastModifiedDate":"2023-09-12"},{"lineNumber":100,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":104,"author":{"gitId":"-"},"content":"1. When `Logic` is called upon to execute a command, it is passed to an `AddressBookParser` object which in turn creates a parser that matches the command (e.g., `DeleteCommandParser`) and uses it to parse the command.","lastModifiedDate":"2023-09-03"},{"lineNumber":105,"author":{"gitId":"-"},"content":"1. This results in a `Command` object (more precisely, an object of one of its subclasses e.g., `DeleteCommand`) which is executed by the `LogicManager`.","lastModifiedDate":"2023-09-03"},{"lineNumber":106,"author":{"gitId":"-"},"content":"1. The command can communicate with the `Model` when it is executed (e.g. to delete a person).\u003cbr\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":107,"author":{"gitId":"-"},"content":" Note that although this is shown as a single step in the diagram above (for simplicity), in the code it can take several interactions (between the command object and the `Model`) to achieve.","lastModifiedDate":"2024-02-09"},{"lineNumber":108,"author":{"gitId":"-"},"content":"1. The result of the command execution is encapsulated as a `CommandResult` object which is returned back from `Logic`.","lastModifiedDate":"2023-09-03"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":110,"author":{"gitId":"-"},"content":"Here are the other classes in `Logic` (omitted from the class diagram above) that are used for parsing a user command:","lastModifiedDate":"2021-07-31"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":112,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ParserClasses.puml\" width\u003d\"600\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31"},{"lineNumber":115,"author":{"gitId":"-"},"content":"* When called upon to parse a user command, the `AddressBookParser` class creates an `XYZCommandParser` (`XYZ` is a placeholder for the specific command name e.g., `AddCommandParser`) which uses the other classes shown above to parse the user command and create a `XYZCommand` object (e.g., `AddCommand`) which the `AddressBookParser` returns back as a `Command` object.","lastModifiedDate":"2021-07-31"},{"lineNumber":116,"author":{"gitId":"-"},"content":"* All `XYZCommandParser` classes (e.g., `AddCommandParser`, `DeleteCommandParser`, ...) inherit from the `Parser` interface so that they can be treated similarly where possible e.g, during testing.","lastModifiedDate":"2021-07-31"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31"},{"lineNumber":119,"author":{"gitId":"-"},"content":"**API** : [`Model.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/model/Model.java)","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":"* stores the address book data i.e., all `Person` objects (which are contained in a `UniquePersonList` object).","lastModifiedDate":"2021-07-31"},{"lineNumber":127,"author":{"gitId":"-"},"content":"* stores the currently \u0027selected\u0027 `Person` objects (e.g., results of a search query) as a separate _filtered_ list which is exposed to outsiders as an unmodifiable `ObservableList\u003cPerson\u003e` that can be \u0027observed\u0027 e.g. the UI can be bound to this list so that the UI automatically updates when the data in the list change.","lastModifiedDate":"2021-07-31"},{"lineNumber":128,"author":{"gitId":"-"},"content":"* stores a `UserPref` object that represents the user’s preferences. This is exposed to the outside as a `ReadOnlyUserPref` objects.","lastModifiedDate":"2021-07-31"},{"lineNumber":129,"author":{"gitId":"-"},"content":"* does not depend on any of the other three components (as the `Model` represents data entities of the domain, they should make sense on their own without depending on other components)","lastModifiedDate":"2021-07-31"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":131,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":133,"author":{"gitId":"-"},"content":"**Note:** An alternative (arguably, a more OOP) model is given below. It has a `Tag` list in the `AddressBook`, which `Person` references. This allows `AddressBook` to only require one `Tag` object per unique tag, instead of each `Person` needing their own `Tag` objects.\u003cbr\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":135,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/BetterModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":"**API** : [`Storage.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/storage/Storage.java)","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/StorageClassDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":146,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":"* can save both address book data and user preference data in JSON format, and read them back into corresponding objects.","lastModifiedDate":"2023-09-03"},{"lineNumber":148,"author":{"gitId":"-"},"content":"* inherits from both `AddressBookStorage` and `UserPrefStorage`, which means it can be treated as either one (if only the functionality of only one is needed).","lastModifiedDate":"2021-07-31"},{"lineNumber":149,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component (because the `Storage` component\u0027s job is to save/retrieve objects that belong to the `Model`)","lastModifiedDate":"2021-07-21"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.addressbook.commons` package.","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":"The proposed undo/redo mechanism is facilitated by `VersionedAddressBook`. It extends `AddressBook` with an undo/redo history, stored internally as an `addressBookStateList` and `currentStatePointer`. Additionally, it implements the following operations:","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":"These operations are exposed in the `Model` interface as `Model#commitAddressBook()`, `Model#undoAddressBook()` and `Model#redoAddressBook()` respectively.","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":"Given below is an example usage scenario and how the undo/redo mechanism behaves at each step.","lastModifiedDate":"2020-05-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":"Step 1. The user launches the application for the first time. The `VersionedAddressBook` will be initialized with the initial address book state, and the `currentStatePointer` pointing to that single address book state.","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState0.puml\" alt\u003d\"UndoRedoState0\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":"Step 2. The user executes `delete 5` command to delete the 5th person in the address book. The `delete` command calls `Model#commitAddressBook()`, causing the modified state of the address book after the `delete 5` command executes to be saved in the `addressBookStateList`, and the `currentStatePointer` is shifted to the newly inserted address book state.","lastModifiedDate":"2020-05-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState1.puml\" alt\u003d\"UndoRedoState1\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"Step 3. The user executes `add n/David …​` to add a new person. The `add` command also calls `Model#commitAddressBook()`, causing another modified address book state to be saved into the `addressBookStateList`.","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState2.puml\" alt\u003d\"UndoRedoState2\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":"**Note:** If a command fails its execution, it will not call `Model#commitAddressBook()`, so the address book state will not be saved into the `addressBookStateList`.","lastModifiedDate":"2023-09-12"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":191,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":"Step 4. The user now decides that adding the person was a mistake, and decides to undo that action by executing the `undo` command. The `undo` command will call `Model#undoAddressBook()`, which will shift the `currentStatePointer` once to the left, pointing it to the previous address book state, and restores the address book to that state.","lastModifiedDate":"2020-05-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState3.puml\" alt\u003d\"UndoRedoState3\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":198,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"author":{"gitId":"-"},"content":"**Note:** If the `currentStatePointer` is at index 0, pointing to the initial AddressBook state, then there are no previous AddressBook states to restore. The `undo` command uses `Model#canUndoAddressBook()` to check if this is the case. If so, it will return an error to the user rather","lastModifiedDate":"2023-09-12"},{"lineNumber":201,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Logic.puml\" alt\u003d\"UndoSequenceDiagram-Logic\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":209,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":"**Note:** The lifeline for `UndoCommand` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.","lastModifiedDate":"2023-09-12"},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":213,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":217,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Model.puml\" alt\u003d\"UndoSequenceDiagram-Model\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":219,"author":{"gitId":"-"},"content":"The `redo` command does the opposite — it calls `Model#redoAddressBook()`, which shifts the `currentStatePointer` once to the right, pointing to the previously undone state, and restores the address book to that state.","lastModifiedDate":"2020-05-23"},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":221,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":223,"author":{"gitId":"-"},"content":"**Note:** If the `currentStatePointer` is at index `addressBookStateList.size() - 1`, pointing to the latest address book state, then there are no undone AddressBook states to restore. The `redo` command uses `Model#canRedoAddressBook()` to check if this is the case. If so, it will return an error to the user rather than attempting to perform the redo.","lastModifiedDate":"2023-09-12"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"author":{"gitId":"-"},"content":"Step 5. The user then decides to execute the command `list`. Commands that do not modify the address book, such as `list`, will usually not call `Model#commitAddressBook()`, `Model#undoAddressBook()` or `Model#redoAddressBook()`. Thus, the `addressBookStateList` remains unchanged.","lastModifiedDate":"2020-05-23"},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState4.puml\" alt\u003d\"UndoRedoState4\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"author":{"gitId":"-"},"content":"Step 6. The user executes `clear`, which calls `Model#commitAddressBook()`. Since the `currentStatePointer` is not pointing at the end of the `addressBookStateList`, all address book states after the `currentStatePointer` will be purged. Reason: It no longer makes sense to redo the `add n/David …​` command. This is the behavior that most modern desktop applications follow.","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState5.puml\" alt\u003d\"UndoRedoState5\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/CommitActivityDiagram.puml\" width\u003d\"250\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":239,"author":{"gitId":"Jawad280"},"content":"### Design considerations:","lastModifiedDate":"2024-03-01"},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31"},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":247,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23"},{"lineNumber":248,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23"},{"lineNumber":249,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23"},{"lineNumber":250,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":254,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23"},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":259,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07"},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":264,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":265,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":266,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":267,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":268,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":269,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":271,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":273,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23"},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":275,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23"},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":277,"author":{"gitId":"ashleygoh1"},"content":"* CS students","lastModifiedDate":"2024-03-02"},{"lineNumber":278,"author":{"gitId":"ashleygoh1"},"content":"* has a need to keep track of contacts of companies and interview dates during thier internship hunt","lastModifiedDate":"2024-03-02"},{"lineNumber":279,"author":{"gitId":"ashleygoh1"},"content":"* prefer a one-stop, centralised dashboard to manage all contact details of companies","lastModifiedDate":"2024-03-02"},{"lineNumber":280,"author":{"gitId":"ashleygoh1"},"content":"* is reasonably comfortable in using a more CLI based app","lastModifiedDate":"2024-03-02"},{"lineNumber":281,"author":{"gitId":"ashleygoh1"},"content":"* wants to be better organized","lastModifiedDate":"2024-03-02"},{"lineNumber":282,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":283,"author":{"gitId":"ashleygoh1"},"content":"**Value proposition**: Ultimate companion for Computer Science (CS) students embarking on their internship journey !","lastModifiedDate":"2024-03-02"},{"lineNumber":284,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":285,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07"},{"lineNumber":286,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":287,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23"},{"lineNumber":288,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":290,"author":{"gitId":"eunrcn"},"content":"| Priority | As an …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2024-03-01"},{"lineNumber":291,"author":{"gitId":"Jawad280"},"content":"|----------|----------------------|---------------------------------------------------------|---------------------------------------------------------------------------------------------------|","lastModifiedDate":"2024-03-01"},{"lineNumber":292,"author":{"gitId":"Jawad280"},"content":"| `* * *` | internship applicant | add contact information of internship companies | easily access their details when needed |","lastModifiedDate":"2024-03-01"},{"lineNumber":293,"author":{"gitId":"Jawad280"},"content":"| `* * *` | internship applicant | delete contact information of internship companies | easily remove any old or irrelevant company contacts |","lastModifiedDate":"2024-03-01"},{"lineNumber":294,"author":{"gitId":"Jawad280"},"content":"| `* * *` | internship applicant | edit contact information of internship companies | easily update any details on the go |","lastModifiedDate":"2024-03-01"},{"lineNumber":295,"author":{"gitId":"Jawad280"},"content":"| `* * *` | internship applicant | see usage instructions | refer to instructions when I forget how to use the AddressBook |","lastModifiedDate":"2024-03-01"},{"lineNumber":296,"author":{"gitId":"Jawad280"},"content":"| `* * *` | internship applicant | find the contact information of a certain company | easily search which company contact I want by name |","lastModifiedDate":"2024-03-01"},{"lineNumber":297,"author":{"gitId":"Jawad280"},"content":"| `* * *` | internship applicant | keep track of the status of each internship application | categorize and easily follow up accordingly |","lastModifiedDate":"2024-03-01"},{"lineNumber":298,"author":{"gitId":"Jawad280"},"content":"| `* * *` | internship applicant | sort company contacts by dates | prioritize and plan for upcoming interviews |","lastModifiedDate":"2024-03-01"},{"lineNumber":299,"author":{"gitId":"Jawad280"},"content":"| `* * ` | internship applicant | filter company contacts by date | quickly access contacts associated with a specific date |","lastModifiedDate":"2024-03-01"},{"lineNumber":300,"author":{"gitId":"Jawad280"},"content":"| `* * ` | internship applicant | filter company contacts by tag | easily find and manage contacts within specific categories |","lastModifiedDate":"2024-03-01"},{"lineNumber":301,"author":{"gitId":"Jawad280"},"content":"| `* * ` | internship applicant | add a time to a company contact | record when a specific task or interaction needs to be done |","lastModifiedDate":"2024-03-01"},{"lineNumber":302,"author":{"gitId":"Jawad280"},"content":"| `* ` | internship applicant | add notes to company contacts | include important details or information about specific interviews and what I can learn from them |","lastModifiedDate":"2024-03-01"},{"lineNumber":303,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":304,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":305,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07"},{"lineNumber":306,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":307,"author":{"gitId":"-"},"content":"(For all use cases below, the **System** is the `AddressBook` and the **Actor** is the `user`, unless specified otherwise)","lastModifiedDate":"2020-05-23"},{"lineNumber":308,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":309,"author":{"gitId":"Jawad280"},"content":"**Use Case: Input Company Contact Information**","lastModifiedDate":"2024-03-01"},{"lineNumber":310,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":311,"author":{"gitId":"Jawad280"},"content":"**Actor:** Internship Applicant","lastModifiedDate":"2024-03-01"},{"lineNumber":312,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":313,"author":{"gitId":"Jawad280"},"content":"**Main Success Scenario (MSS):**","lastModifiedDate":"2024-03-01"},{"lineNumber":314,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":315,"author":{"gitId":"Jawad280"},"content":"1. Internship Applicant inputs contact information of internship company.","lastModifiedDate":"2024-03-01"},{"lineNumber":316,"author":{"gitId":"Jawad280"},"content":"2. System stores the contact information.","lastModifiedDate":"2024-03-01"},{"lineNumber":317,"author":{"gitId":"Jawad280"},"content":"3. Use case ends.","lastModifiedDate":"2024-03-01"},{"lineNumber":318,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":319,"author":{"gitId":"Jawad280"},"content":"**Extensions:**","lastModifiedDate":"2024-03-01"},{"lineNumber":320,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":321,"author":{"gitId":"Jawad280"},"content":"* 1a. System detects an error in the entered data.","lastModifiedDate":"2024-03-01"},{"lineNumber":322,"author":{"gitId":"Jawad280"},"content":" * 1a1. System requests for the correct data.","lastModifiedDate":"2024-03-01"},{"lineNumber":323,"author":{"gitId":"Jawad280"},"content":" * 1a2. Internship Applicant enters new data.","lastModifiedDate":"2024-03-01"},{"lineNumber":324,"author":{"gitId":"Jawad280"},"content":" * Steps 1a1-1a2 are repeated until the data entered are correct.","lastModifiedDate":"2024-03-01"},{"lineNumber":325,"author":{"gitId":"Jawad280"},"content":" * Use case resumes from step 2.","lastModifiedDate":"2024-03-01"},{"lineNumber":326,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":327,"author":{"gitId":"Jawad280"},"content":"* *a. At any time, Internship Applicant chooses to cancel the input.","lastModifiedDate":"2024-03-01"},{"lineNumber":328,"author":{"gitId":"Jawad280"},"content":" * Use case ends.","lastModifiedDate":"2024-03-01"},{"lineNumber":329,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":330,"author":{"gitId":"Jawad280"},"content":"---","lastModifiedDate":"2024-03-01"},{"lineNumber":331,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":332,"author":{"gitId":"Jawad280"},"content":"**Use Case: Delete Company Contact Information**","lastModifiedDate":"2024-03-01"},{"lineNumber":333,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":334,"author":{"gitId":"Jawad280"},"content":"**Actor:** Internship Applicant","lastModifiedDate":"2024-03-01"},{"lineNumber":335,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":336,"author":{"gitId":"Jawad280"},"content":"**Main Success Scenario (MSS):**","lastModifiedDate":"2024-03-01"},{"lineNumber":337,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":338,"author":{"gitId":"Jawad280"},"content":"1. Internship Applicant inputs index of contact to be deleted.","lastModifiedDate":"2024-03-01"},{"lineNumber":339,"author":{"gitId":"Jawad280"},"content":"2. System deletes the relevant contact information.","lastModifiedDate":"2024-03-01"},{"lineNumber":340,"author":{"gitId":"Jawad280"},"content":"3. Use case ends.","lastModifiedDate":"2024-03-01"},{"lineNumber":341,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":342,"author":{"gitId":"Jawad280"},"content":"**Extensions:**","lastModifiedDate":"2024-03-01"},{"lineNumber":343,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":344,"author":{"gitId":"Jawad280"},"content":"* 1a. System detects an error in index of contact","lastModifiedDate":"2024-03-01"},{"lineNumber":345,"author":{"gitId":"Jawad280"},"content":" * 1a1. System requests for proper input of index (1 to current number of contacts)","lastModifiedDate":"2024-03-01"},{"lineNumber":346,"author":{"gitId":"Jawad280"},"content":" * 1a2. Internship Applicant enters the correct index.","lastModifiedDate":"2024-03-01"},{"lineNumber":347,"author":{"gitId":"Jawad280"},"content":" * Steps 1a1-1a2 are repeated until the selection is correct.","lastModifiedDate":"2024-03-01"},{"lineNumber":348,"author":{"gitId":"Jawad280"},"content":" * Use case resumes from step 2.","lastModifiedDate":"2024-03-01"},{"lineNumber":349,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":350,"author":{"gitId":"Jawad280"},"content":"* *a. At any time, the Internship Applicant chooses to cancel to detect contact.","lastModifiedDate":"2024-03-01"},{"lineNumber":351,"author":{"gitId":"Jawad280"},"content":" * *a1. System cancels deletion of contact.","lastModifiedDate":"2024-03-01"},{"lineNumber":352,"author":{"gitId":"Jawad280"},"content":" * Use case ends.","lastModifiedDate":"2024-03-01"},{"lineNumber":353,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":354,"author":{"gitId":"Jawad280"},"content":"---","lastModifiedDate":"2024-03-01"},{"lineNumber":355,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":356,"author":{"gitId":"Jawad280"},"content":"**Use Case: Edit Contacts Info**","lastModifiedDate":"2024-03-01"},{"lineNumber":357,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":358,"author":{"gitId":"Jawad280"},"content":"**Actor:** Internship Applicant","lastModifiedDate":"2024-03-01"},{"lineNumber":359,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":360,"author":{"gitId":"Jawad280"},"content":"**Main Success Scenario (MSS):**","lastModifiedDate":"2024-03-01"},{"lineNumber":361,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":362,"author":{"gitId":"Jawad280"},"content":"1. Internship Applicant chooses contact to edit by its index and enters relevant fields to be modified","lastModifiedDate":"2024-03-01"},{"lineNumber":363,"author":{"gitId":"Jawad280"},"content":"2. System modifies that corresponding field of that contact","lastModifiedDate":"2024-03-01"},{"lineNumber":364,"author":{"gitId":"Jawad280"},"content":"3. Use case ends","lastModifiedDate":"2024-03-01"},{"lineNumber":365,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":366,"author":{"gitId":"Jawad280"},"content":"**Extensions:**","lastModifiedDate":"2024-03-01"},{"lineNumber":367,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":368,"author":{"gitId":"Jawad280"},"content":"* 1a. System detects an error in index of contact","lastModifiedDate":"2024-03-01"},{"lineNumber":369,"author":{"gitId":"Jawad280"},"content":" * 1a1. System requests for proper input of index (1 to current number of contacts)","lastModifiedDate":"2024-03-01"},{"lineNumber":370,"author":{"gitId":"Jawad280"},"content":" * 1a2. Internship Applicant enters the correct index.","lastModifiedDate":"2024-03-01"},{"lineNumber":371,"author":{"gitId":"Jawad280"},"content":" * Steps 1a1-1a2 are repeated until the selection is correct.","lastModifiedDate":"2024-03-01"},{"lineNumber":372,"author":{"gitId":"Jawad280"},"content":" * Use case resumes from step 2.","lastModifiedDate":"2024-03-01"},{"lineNumber":373,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":374,"author":{"gitId":"Jawad280"},"content":"* 1a. System detects an error in the fields to be edited (No fields at all or incorrect field prefixes)","lastModifiedDate":"2024-03-01"},{"lineNumber":375,"author":{"gitId":"Jawad280"},"content":" * 1a1. System requests for proper input of fields and correct prefix","lastModifiedDate":"2024-03-01"},{"lineNumber":376,"author":{"gitId":"Jawad280"},"content":" * 1a2. Internship Applicant enters the fields to be edited.","lastModifiedDate":"2024-03-01"},{"lineNumber":377,"author":{"gitId":"Jawad280"},"content":" * Steps 1a1-1a2 are repeated until the selection is correct.","lastModifiedDate":"2024-03-01"},{"lineNumber":378,"author":{"gitId":"Jawad280"},"content":" * Use case resumes from step 2.","lastModifiedDate":"2024-03-01"},{"lineNumber":379,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":380,"author":{"gitId":"Jawad280"},"content":"* *a. At any time, the Internship Applicant chooses to cancel to edit contact.","lastModifiedDate":"2024-03-01"},{"lineNumber":381,"author":{"gitId":"Jawad280"},"content":" * *a1. System cancels edit of contact.","lastModifiedDate":"2024-03-01"},{"lineNumber":382,"author":{"gitId":"Jawad280"},"content":" * Use case ends.","lastModifiedDate":"2024-03-01"},{"lineNumber":383,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":384,"author":{"gitId":"Jawad280"},"content":"---","lastModifiedDate":"2024-03-01"},{"lineNumber":385,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":386,"author":{"gitId":"Jawad280"},"content":"**Use Case: Filter Contacts by Tag**","lastModifiedDate":"2024-03-01"},{"lineNumber":387,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":388,"author":{"gitId":"Jawad280"},"content":"**Actor:** Internship Applicant","lastModifiedDate":"2024-03-01"},{"lineNumber":389,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":390,"author":{"gitId":"Jawad280"},"content":"**Main Success Scenario (MSS):**","lastModifiedDate":"2024-03-01"},{"lineNumber":391,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":392,"author":{"gitId":"Jawad280"},"content":"1. Internship Applicant chooses to filter contacts by tag.","lastModifiedDate":"2024-03-01"},{"lineNumber":393,"author":{"gitId":"Jawad280"},"content":"2. Internship Applicant inputs the tag.","lastModifiedDate":"2024-03-01"},{"lineNumber":394,"author":{"gitId":"Jawad280"},"content":"3. System filters the contacts associated with the selected tag.","lastModifiedDate":"2024-03-01"},{"lineNumber":395,"author":{"gitId":"Jawad280"},"content":"4. System displays the filtered contacts.","lastModifiedDate":"2024-03-01"},{"lineNumber":396,"author":{"gitId":"Jawad280"},"content":"5. Use case ends.","lastModifiedDate":"2024-03-01"},{"lineNumber":397,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":398,"author":{"gitId":"Jawad280"},"content":"**Extensions:**","lastModifiedDate":"2024-03-01"},{"lineNumber":399,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":400,"author":{"gitId":"Jawad280"},"content":"* 2a. System detects an error in tag to be filtered","lastModifiedDate":"2024-03-01"},{"lineNumber":401,"author":{"gitId":"Jawad280"},"content":" * 2a1. System requests for proper input of tag (One of existing tags)","lastModifiedDate":"2024-03-01"},{"lineNumber":402,"author":{"gitId":"Jawad280"},"content":" * 2a2. Internship Applicant enters the correct tag.","lastModifiedDate":"2024-03-01"},{"lineNumber":403,"author":{"gitId":"Jawad280"},"content":" * Steps 2a1-2a2 are repeated until the selection is correct.","lastModifiedDate":"2024-03-01"},{"lineNumber":404,"author":{"gitId":"Jawad280"},"content":" * Use case resumes from step 3.","lastModifiedDate":"2024-03-01"},{"lineNumber":405,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":406,"author":{"gitId":"Jawad280"},"content":"* *a. At any time, the Internship Applicant chooses to cancel the filtering.","lastModifiedDate":"2024-03-01"},{"lineNumber":407,"author":{"gitId":"Jawad280"},"content":" * *a1. System cancels the filtering.","lastModifiedDate":"2024-03-01"},{"lineNumber":408,"author":{"gitId":"Jawad280"},"content":" * Use case ends.","lastModifiedDate":"2024-03-01"},{"lineNumber":409,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":410,"author":{"gitId":"Jawad280"},"content":"---","lastModifiedDate":"2024-03-01"},{"lineNumber":411,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":412,"author":{"gitId":"Jawad280"},"content":"**Use Case: View information of a contact**","lastModifiedDate":"2024-03-01"},{"lineNumber":413,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":414,"author":{"gitId":"Jawad280"},"content":"**Actor:** Internship Applicant","lastModifiedDate":"2024-03-01"},{"lineNumber":415,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":416,"author":{"gitId":"Jawad280"},"content":"**Main Success Scenario (MSS):**","lastModifiedDate":"2024-03-01"},{"lineNumber":417,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":418,"author":{"gitId":"Jawad280"},"content":"1. Internship Applicant chooses contact to be viewed on view panel.","lastModifiedDate":"2024-03-01"},{"lineNumber":419,"author":{"gitId":"Jawad280"},"content":"2. System requests for the specific contact index.","lastModifiedDate":"2024-03-01"},{"lineNumber":420,"author":{"gitId":"Jawad280"},"content":"3. Internship Applicant enters the contact index.","lastModifiedDate":"2024-03-01"},{"lineNumber":421,"author":{"gitId":"Jawad280"},"content":"4. System views the relevant contact on the view panel.","lastModifiedDate":"2024-03-01"},{"lineNumber":422,"author":{"gitId":"Jawad280"},"content":"5. Use case ends.","lastModifiedDate":"2024-03-01"},{"lineNumber":423,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":424,"author":{"gitId":"Jawad280"},"content":"**Extensions:**","lastModifiedDate":"2024-03-01"},{"lineNumber":425,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":426,"author":{"gitId":"Jawad280"},"content":"* 3a. IH detects an error in index of contact","lastModifiedDate":"2024-03-01"},{"lineNumber":427,"author":{"gitId":"Jawad280"},"content":" * 3a1. System requests for proper input of index (1 to current number of contacts)","lastModifiedDate":"2024-03-01"},{"lineNumber":428,"author":{"gitId":"Jawad280"},"content":" * 3a2. Internship Applicant enters the correct index.","lastModifiedDate":"2024-03-01"},{"lineNumber":429,"author":{"gitId":"Jawad280"},"content":" * Steps 3a1-3a2 are repeated until the selection is correct.","lastModifiedDate":"2024-03-01"},{"lineNumber":430,"author":{"gitId":"Jawad280"},"content":" * Use case resumes from step 3.","lastModifiedDate":"2024-03-01"},{"lineNumber":431,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":432,"author":{"gitId":"Jawad280"},"content":"* *a. At any time, Internship Applicant chooses to cancel to view contact.","lastModifiedDate":"2024-03-01"},{"lineNumber":433,"author":{"gitId":"Jawad280"},"content":" * *a1. System cancels viewing of contact.","lastModifiedDate":"2024-03-01"},{"lineNumber":434,"author":{"gitId":"Jawad280"},"content":" * Use case ends.","lastModifiedDate":"2024-03-01"},{"lineNumber":435,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":436,"author":{"gitId":"Jawad280"},"content":"---","lastModifiedDate":"2024-03-01"},{"lineNumber":437,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":438,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23"},{"lineNumber":439,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":440,"author":{"gitId":"-"},"content":"1. Should work on any _mainstream OS_ as long as it has Java `11` or above installed.","lastModifiedDate":"2020-05-23"},{"lineNumber":441,"author":{"gitId":"-"},"content":"2. Should be able to hold up to 1000 persons without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":442,"author":{"gitId":"-"},"content":"3. A user with above average typing speed for regular English text (i.e. not code, not system admin commands) should be able to accomplish most of the tasks faster using commands than using the mouse.","lastModifiedDate":"2020-05-23"},{"lineNumber":443,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":444,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23"},{"lineNumber":445,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":446,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09"},{"lineNumber":447,"author":{"gitId":"-"},"content":"* **Private contact detail**: A contact detail that is not meant to be shared with others","lastModifiedDate":"2020-05-23"},{"lineNumber":448,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":449,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":450,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":451,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23"},{"lineNumber":452,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":453,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":454,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":455,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":456,"author":{"gitId":"-"},"content":"**Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2023-09-12"},{"lineNumber":457,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":458,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":459,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":460,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":461,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":462,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":463,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":464,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23"},{"lineNumber":465,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":466,"author":{"gitId":"-"},"content":" 1. Double-click the jar file Expected: Shows the GUI with a set of sample contacts. The window size may not be optimum.","lastModifiedDate":"2020-05-23"},{"lineNumber":467,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":468,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23"},{"lineNumber":469,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":470,"author":{"gitId":"-"},"content":" 1. Resize the window to an optimum size. Move the window to a different location. Close the window.","lastModifiedDate":"2020-05-23"},{"lineNumber":471,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":472,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":473,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23"},{"lineNumber":474,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":475,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":476,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":477,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23"},{"lineNumber":478,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":479,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23"},{"lineNumber":480,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":481,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23"},{"lineNumber":482,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":483,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":484,"author":{"gitId":"-"},"content":" Expected: First contact is deleted from the list. Details of the deleted contact shown in the status message. Timestamp in the status bar is updated.","lastModifiedDate":"2020-05-23"},{"lineNumber":485,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":486,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":487,"author":{"gitId":"-"},"content":" Expected: No person is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2020-05-23"},{"lineNumber":488,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":489,"author":{"gitId":"-"},"content":" 1. Other incorrect delete commands to try: `delete`, `delete x`, `...` (where x is larger than the list size)\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":490,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":491,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":492,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":493,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":494,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":495,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":496,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":497,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":498,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23"},{"lineNumber":499,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":500,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"eunrcn":1,"Jawad280":120,"ashleygoh1":7,"-":372}},{"path":"docs/UserGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: default.md","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: \"User Guide\"","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"pageNav: 3","lastModifiedDate":"2023-09-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"eunrcn"},"content":"# Internhub User Guide","lastModifiedDate":"2024-02-28"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"Jawad280"},"content":"Intern Hub is a **desktop app for managing contacts, optimized for use via a Line Interface** (CLI) while still having the benefits of a Graphical User Interface (GUI). If you can type fast, InternHub can get your contact management tasks done faster than traditional GUI apps.","lastModifiedDate":"2024-03-01"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"## Quick start","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"1. Ensure you have Java `11` or above installed in your Computer.","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"eunrcn"},"content":"1. Download the latest `internhub.jar` from [here](https://github.com/se-edu/addressbook-level3/releases).","lastModifiedDate":"2024-02-28"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"1. Copy the file to the folder you want to use as the _home folder_ for your AddressBook.","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"eunrcn"},"content":"1. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar internhub.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":25,"author":{"gitId":"-"},"content":" A GUI similar to the below should appear in a few seconds. Note how the app contains some sample data.\u003cbr\u003e","lastModifiedDate":"2023-01-01"},{"lineNumber":26,"author":{"gitId":"-"},"content":" ![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":"1. Type the command in the command box and press Enter to execute it. e.g. typing **`help`** and pressing Enter will open the help window.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":" Some example commands you can try:","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * `list` : Lists all contacts.","lastModifiedDate":"2023-01-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"ashleygoh1"},"content":" * `add c/Food Panda p/12345678 e/panda@food.com a/CBD t/F jd/Front End Intern d/15-04-2024 0900 id/6 months s/500","lastModifiedDate":"2024-02-27"},{"lineNumber":34,"author":{"gitId":"ashleygoh1"},"content":" ` : Adds a contact named `Food Panda` to the Address Book.","lastModifiedDate":"2024-02-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * `delete 3` : Deletes the 3rd contact shown in the current list.","lastModifiedDate":"2023-01-01"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * `clear` : Deletes all contacts.","lastModifiedDate":"2023-01-01"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * `exit` : Exits the app.","lastModifiedDate":"2023-01-01"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"1. Refer to the [Features](#features) below for details of each command.","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"**Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"* Words in `UPPER_CASE` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"ashleygoh1"},"content":" e.g. in `add c/COMPANY_NAME`, `COMPANY_NAME` is a parameter which can be used as `add c/Food Panda`.","lastModifiedDate":"2024-02-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"* Items in square brackets are optional.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"ashleygoh1"},"content":" e.g `c/COMPANY_NAME [a/ADDRESS]` can be used as `c/Food Panda a/CBD` or as `c/Food Panda`.","lastModifiedDate":"2024-02-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"* Parameters can be in any order.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"ashleygoh1"},"content":" e.g. if the command specifies `add c/COMPANY_NAME p/PHONE_NUMBER`, `p/PHONE_NUMBER add c/COMPANY_NAME` is also acceptable.","lastModifiedDate":"2024-02-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"* Extraneous parameters for commands that do not take in parameters (such as `help`, `list`, `exit` and `clear`) will be ignored.\u003cbr\u003e","lastModifiedDate":"2021-02-03"},{"lineNumber":62,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2021-02-03"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03"},{"lineNumber":64,"author":{"gitId":"-"},"content":"* If you are using a PDF version of this document, be careful when copying and pasting commands that span multiple lines as space characters surrounding line-breaks may be omitted when copied over to the application.","lastModifiedDate":"2023-06-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"### Viewing help : `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"Shows a message explaning how to access the help page.","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"Format: `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"Jawad280"},"content":"### Adding a contact: `add`","lastModifiedDate":"2024-03-01"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"Jawad280"},"content":"Adds a contact to the address book.","lastModifiedDate":"2024-03-01"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"ashleygoh1"},"content":"Format: `add c/COMPANY_NAME p/PHONE_NUMBER e/EMAIL a/[ADDRESS] t/TAG jd/JOB_DESCRIPTION d/[INTERVIEW_DATE] id/INTERN_DURATION s/salary`","lastModifiedDate":"2024-02-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":84,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"ashleygoh1"},"content":"* `add c/FoodPanda p/12345678 e/panda@food.com a/CBD t/F jd/Front End Intern d/15-04-2024 0900 id/6 months s/500`","lastModifiedDate":"2024-02-27"},{"lineNumber":88,"author":{"gitId":"ashleygoh1"},"content":"* `add c/Shoppa p/99912345 e/panda@food.com t/F jd/Software Developer Intern id/6 months s/500`","lastModifiedDate":"2024-02-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"Jawad280"},"content":"### Listing all contacts : `list`","lastModifiedDate":"2024-03-01"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"Jawad280"},"content":"Shows a list of all contacts in the address book sorted in ascending order of interview dates. If a company contact does not have any interview dates yet, it will be pushed to the end of the list.","lastModifiedDate":"2024-03-01"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":"Format: `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"Jawad280"},"content":"### Viewing a contact : `view`","lastModifiedDate":"2024-03-02"},{"lineNumber":97,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":98,"author":{"gitId":"Jawad280"},"content":"Views the details of the contact on the view panel in address book.","lastModifiedDate":"2024-03-02"},{"lineNumber":99,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":100,"author":{"gitId":"Jawad280"},"content":"Format: `View INDEX`","lastModifiedDate":"2024-03-02"},{"lineNumber":101,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":102,"author":{"gitId":"Jawad280"},"content":"* Views the contact at the specified `INDEX`. The index refers to the index number shown in the displayed contact list. The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2024-03-02"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":104,"author":{"gitId":"Jawad280"},"content":"Example:","lastModifiedDate":"2024-03-02"},{"lineNumber":105,"author":{"gitId":"Jawad280"},"content":"* `view 3` Shows the company name of the 3rd contact on the view panel.","lastModifiedDate":"2024-03-02"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":107,"author":{"gitId":"Jawad280"},"content":"### Editing a contact : `edit`","lastModifiedDate":"2024-03-01"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"author":{"gitId":"Jawad280"},"content":"Edits an existing contact detail in the address book.","lastModifiedDate":"2024-03-01"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":111,"author":{"gitId":"Jawad280"},"content":"Format: `Edit INDEX c/[COMPANY_NAME] p/[PHONE_NUMBER] e/[EMAIL] a/[ADDRESS] t/[TAG] jd/[JOB_DESCRIPTION] d/[INTERVIEW_DATE] id/[INTERN_DURATION] s/[salary]`","lastModifiedDate":"2024-03-01"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"Jawad280"},"content":"* Edits the contact at the specified `INDEX`. The index refers to the index number shown in the displayed contact list. The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2024-03-01"},{"lineNumber":114,"author":{"gitId":"-"},"content":"* At least one of the optional fields must be provided.","lastModifiedDate":"2020-05-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":"* Existing values will be updated to the input values.","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"Jawad280"},"content":"* For `[INTERVIEW_DATE]`, if you want to remove a date, just enter `d/` and it will remove that field.","lastModifiedDate":"2024-03-01"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":118,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"Jawad280"},"content":"* `edit 1 p/91234567 e/foodpanda@example.com` Edits the phone number and email address of the 1st contact to be `91234567` and `foodpanda@example.com` respectively.","lastModifiedDate":"2024-03-01"},{"lineNumber":120,"author":{"gitId":"Jawad280"},"content":"* `edit 2 c/shopee` Edits the company name of the 2nd contact to be `shopee`.","lastModifiedDate":"2024-03-01"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"Jawad280"},"content":"### Locating contacts by name: `find`","lastModifiedDate":"2024-03-01"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"Jawad280"},"content":"Finds contacts whose names contain any of the given keywords.","lastModifiedDate":"2024-03-01"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":"Format: `find KEYWORD [MORE_KEYWORDS]`","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":128,"author":{"gitId":"chenyixin0"},"content":"* The search is case-insensitive. e.g `shoppa` will match `Shoppa`","lastModifiedDate":"2024-02-29"},{"lineNumber":129,"author":{"gitId":"chenyixin0"},"content":"* The order of the keywords does not matter. e.g. `Food Panda` will match `Panda Food`","lastModifiedDate":"2024-02-29"},{"lineNumber":130,"author":{"gitId":"-"},"content":"* Only the name is searched.","lastModifiedDate":"2020-05-23"},{"lineNumber":131,"author":{"gitId":"chenyixin0"},"content":"* Only full words will be matched e.g. `Shopp` will not match `Shoppa`","lastModifiedDate":"2024-02-29"},{"lineNumber":132,"author":{"gitId":"Jawad280"},"content":"* Contacts matching at least one keyword will be returned (i.e. `OR` search).","lastModifiedDate":"2024-03-01"},{"lineNumber":133,"author":{"gitId":"Jawad280"},"content":" e.g. `Happy Burger` will return `Happy Meal`, `Burger Queen`","lastModifiedDate":"2024-03-01"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":136,"author":{"gitId":"Jawad280"},"content":"* `find Happy` returns `happy` and `Happy Burger`","lastModifiedDate":"2024-03-01"},{"lineNumber":137,"author":{"gitId":"-"},"content":"* `find alex david` returns `Alex Yeoh`, `David Li`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":" ![result for \u0027find alex david\u0027](images/findAlexDavidResult.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"Jawad280"},"content":"### Deleting a contact : `delete`","lastModifiedDate":"2024-03-01"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"Jawad280"},"content":"Deletes the specified contact from the address book.","lastModifiedDate":"2024-03-01"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"Format: `delete INDEX`","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":146,"author":{"gitId":"Jawad280"},"content":"* Deletes the contact at the specified `INDEX`.","lastModifiedDate":"2024-03-01"},{"lineNumber":147,"author":{"gitId":"Jawad280"},"content":"* The index refers to the index number shown in the displayed contact list.","lastModifiedDate":"2024-03-01"},{"lineNumber":148,"author":{"gitId":"-"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"Jawad280"},"content":"* `list` followed by `delete 2` deletes the 2nd contact in the address book.","lastModifiedDate":"2024-03-01"},{"lineNumber":152,"author":{"gitId":"Jawad280"},"content":"* `find Betsy` followed by `delete 1` deletes the 1st contact in the results of the `find` command.","lastModifiedDate":"2024-03-01"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":"### Clearing all entries : `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"Clears all entries from the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"Format: `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":"AddressBook data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":172,"author":{"gitId":"-"},"content":"AddressBook data are saved automatically as a JSON file `[JAR file location]/data/addressbook.json`. Advanced users are welcome to update data directly by editing that data file.","lastModifiedDate":"2023-09-08"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":174,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"warning\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":176,"author":{"gitId":"-"},"content":"**Caution:**","lastModifiedDate":"2023-09-12"},{"lineNumber":177,"author":{"gitId":"-"},"content":"If your changes to the data file makes its format invalid, AddressBook will discard all data and start with an empty data file at the next run. Hence, it is recommended to take a backup of the file before editing it.\u003cbr\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":178,"author":{"gitId":"-"},"content":"Furthermore, certain edits can cause the AddressBook to behave in unexpected ways (e.g., if a value entered is outside the acceptable range). Therefore, edit the data file only if you are confident that you can update it correctly.","lastModifiedDate":"2023-09-12"},{"lineNumber":179,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":180,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":182,"author":{"gitId":"-"},"content":"### Archiving data files `[coming in v2.0]`","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"_Details coming soon ..._","lastModifiedDate":"2021-02-04"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":190,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":191,"author":{"gitId":"chenyixin0"},"content":"**A**: Install the app in the other computer and overwrite the empty data file it creates with the file that contains the data of your previous InternHub home folder.","lastModifiedDate":"2024-02-29"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":"## Known issues","lastModifiedDate":"2023-09-08"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":197,"author":{"gitId":"-"},"content":"1. **When using multiple screens**, if you move the application to a secondary screen, and later switch to using only the primary screen, the GUI will open off-screen. The remedy is to delete the `preferences.json` file created by the application before running the application again.","lastModifiedDate":"2023-09-08"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":199,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":201,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"Jawad280"},"content":"| Action | Format, Examples |","lastModifiedDate":"2024-03-01"},{"lineNumber":204,"author":{"gitId":"Jawad280"},"content":"|------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|","lastModifiedDate":"2024-03-01"},{"lineNumber":205,"author":{"gitId":"Jawad280"},"content":"| **Add** | `add c/COMPANY_NAME p/PHONE_NUMBER e/EMAIL a/[ADDRESS] t/TAG jd/JOB_DESCRIPTION d/[INTERVIEW_DATE] id/INTERN_DURATION s/salary` \u003cbr\u003e e.g., `add c/FoodPanda p/12345678 e/panda@food.com a/CBD t/F jd/Front End Intern d/15-04-2024 0900 id/6 months s/500` |","lastModifiedDate":"2024-03-01"},{"lineNumber":206,"author":{"gitId":"Jawad280"},"content":"| **Clear** | `clear` |","lastModifiedDate":"2024-03-01"},{"lineNumber":207,"author":{"gitId":"Jawad280"},"content":"| **Delete** | `delete INDEX`\u003cbr\u003e e.g., `delete 3` |","lastModifiedDate":"2024-03-01"},{"lineNumber":208,"author":{"gitId":"Jawad280"},"content":"| **Edit** | `Edit INDEX c/[COMPANY_NAME] p/[PHONE_NUMBER] e/[EMAIL] a/[ADDRESS] t/[TAG] jd/[JOB_DESCRIPTION] d/[INTERVIEW_DATE] id/[INTERN_DURATION] s/[salary]`\u003cbr\u003e e.g.,`Edit 2 p/9998765` |","lastModifiedDate":"2024-03-01"},{"lineNumber":209,"author":{"gitId":"Jawad280"},"content":"| **Find** | `find KEYWORD [MORE_KEYWORDS]`\u003cbr\u003e e.g., `find foodpanda` |","lastModifiedDate":"2024-03-01"},{"lineNumber":210,"author":{"gitId":"Jawad280"},"content":"| **List** | `list` |","lastModifiedDate":"2024-03-01"},{"lineNumber":211,"author":{"gitId":"Jawad280"},"content":"| **View** | `view INDEX`\u003cbr\u003e e.g., `view 3` |","lastModifiedDate":"2024-03-02"},{"lineNumber":212,"author":{"gitId":"Jawad280"},"content":"| **Help** | `help` |","lastModifiedDate":"2024-03-01"}],"authorContributionMap":{"eunrcn":3,"chenyixin0":4,"Jawad280":43,"ashleygoh1":8,"-":154}},{"path":"docs/_markbind/layouts/default.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003chead-bottom\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":" \u003clink rel\u003d\"stylesheet\" href\u003d\"{{baseUrl}}/stylesheets/main.css\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c/head-bottom\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003cheader sticky\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":" \u003cnavbar type\u003d\"dark\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":7,"author":{"gitId":"ashleygoh1"},"content":" \u003ca slot\u003d\"brand\" href\u003d\"{{baseUrl}}/index.html\" title\u003d\"Home\" class\u003d\"navbar-brand\"\u003eInternHub\u003c/a\u003e","lastModifiedDate":"2024-02-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/index.html\" class\u003d\"nav-link\"\u003eHome\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/UserGuide.html\" class\u003d\"nav-link\"\u003eUser Guide\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/DeveloperGuide.html\" class\u003d\"nav-link\"\u003eDeveloper Guide\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/AboutUs.html\" class\u003d\"nav-link\"\u003eAbout Us\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"https://github.com/se-edu/addressbook-level3\" target\u003d\"_blank\" class\u003d\"nav-link\"\u003e\u003cmd\u003e:fab-github:\u003c/md\u003e\u003c/a\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003cli slot\u003d\"right\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cform class\u003d\"navbar-form\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003csearchbar :data\u003d\"searchData\" placeholder\u003d\"Search\" :on-hit\u003d\"searchCallback\" menu-align-right\u003e\u003c/searchbar\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003c/form\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003c/navbar\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"\u003c/header\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"\u003cdiv id\u003d\"flex-body\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"site-nav\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"site-nav-top\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"fw-bold mb-2\" style\u003d\"font-size: 1.25rem;\"\u003eSite Map\u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003csite-nav\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"* [Home]({{ baseUrl }}/index.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":"* [User Guide]({{ baseUrl }}/UserGuide.html) :expanded:","lastModifiedDate":"2023-09-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * [Quick Start]({{ baseUrl }}/UserGuide.html#quick-start)","lastModifiedDate":"2023-09-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * [Features]({{ baseUrl }}/UserGuide.html#features)","lastModifiedDate":"2023-09-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * [FAQ]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * [Command Summary]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":"* [Developer Guide]({{ baseUrl }}/DeveloperGuide.html) :expanded:","lastModifiedDate":"2023-09-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * [Acknowledgements]({{ baseUrl }}/DeveloperGuide.html#acknowledgements)","lastModifiedDate":"2023-09-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * [Setting Up]({{ baseUrl }}/DeveloperGuide.html#setting-up-getting-started)","lastModifiedDate":"2023-09-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * [Design]({{ baseUrl }}/DeveloperGuide.html#design)","lastModifiedDate":"2023-09-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * [Implementation]({{ baseUrl }}/DeveloperGuide.html#implementation)","lastModifiedDate":"2023-09-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * [Documentation, logging, testing, configuration, dev-ops]({{ baseUrl }}/DeveloperGuide.html#documentation-logging-testing-configuration-dev-ops)","lastModifiedDate":"2023-09-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * [Appendix: Requirements]({{ baseUrl }}/DeveloperGuide.html#appendix-requirements)","lastModifiedDate":"2023-09-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * [Appendix: Instructions for manual testing]({{ baseUrl }}/DeveloperGuide.html#appendix-instructions-for-manual-testing)","lastModifiedDate":"2023-09-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":"* Tutorials","lastModifiedDate":"2023-09-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * [Tracing code]({{ baseUrl }}/tutorials/TracingCode.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * [Adding a command]({{ baseUrl }}/tutorials/AddRemark.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * [Removing Fields]({{ baseUrl }}/tutorials/RemovingFields.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [About Us]({{ baseUrl }}/AboutUs.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u003c/site-nav\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003cdiv id\u003d\"content-wrapper\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":" {{ content }}","lastModifiedDate":"2023-09-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"page-nav\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cpage-nav /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003cscroll-top-button\u003e\u003c/scroll-top-button\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":62,"author":{"gitId":"-"},"content":"\u003cfooter\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":63,"author":{"gitId":"-"},"content":" \u003c!-- Support MarkBind by including a link to us on your landing page! --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":64,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"text-center\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":" \u003csmall\u003e[\u003cmd\u003e**Powered by**\u003c/md\u003e \u003cimg src\u003d\"https://markbind.org/favicon.ico\" width\u003d\"30\"\u003e {{MarkBind}}, generated on {{timestamp}}]\u003c/small\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":66,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":"\u003c/footer\u003e","lastModifiedDate":"2023-09-12"}],"authorContributionMap":{"ashleygoh1":1,"-":66}},{"path":"docs/diagrams/BetterModelClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam arrowColor MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam classBackgroundColor MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"AddressBook *-right-\u003e \"1\" UniquePersonList","lastModifiedDate":"2019-07-30"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"UniquePersonList -right-\u003e Person","lastModifiedDate":"2021-07-31"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":11,"author":{"gitId":"-"},"content":"Person *--\u003e Name","lastModifiedDate":"2019-07-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"Person *--\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"Person *--\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"Person *--\u003e Address","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"eunrcn"},"content":"Person *--\u003e Tag","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"eunrcn"},"content":"Person *--\u003e InternDuration","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"eunrcn"},"content":"Person *--\u003e InterviewDate","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"eunrcn"},"content":"Person *--\u003e JobDescription","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"eunrcn"},"content":"Person *--\u003e Salary","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"eunrcn":5,"-":15}},{"path":"docs/diagrams/ModelClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam arrowColor MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam classBackgroundColor MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Package Model as ModelPackage \u003c\u003cRectangle\u003e\u003e{","lastModifiedDate":"2023-07-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nReadOnlyAddressBook\" as ReadOnlyAddressBook","lastModifiedDate":"2022-01-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nReadOnlyUserPrefs\" as ReadOnlyUserPrefs","lastModifiedDate":"2022-01-03"},{"lineNumber":10,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nModel\" as Model","lastModifiedDate":"2022-01-03"},{"lineNumber":11,"author":{"gitId":"-"},"content":"Class AddressBook","lastModifiedDate":"2019-07-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"Class ModelManager","lastModifiedDate":"2019-07-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"Class UserPrefs","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":15,"author":{"gitId":"-"},"content":"Class UniquePersonList","lastModifiedDate":"2021-07-31"},{"lineNumber":16,"author":{"gitId":"-"},"content":"Class Person","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"Class Address","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"Class Email","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"eunrcn"},"content":"Class CompanyName","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Class Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"Class Tag","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"eunrcn"},"content":"Class InternDuration","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"eunrcn"},"content":"Class InterviewDate","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"eunrcn"},"content":"Class JobDescription","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"eunrcn"},"content":"Class Salary","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":27,"author":{"gitId":"-"},"content":"Class I #FFFFFF","lastModifiedDate":"2023-07-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":"AddressBook .up.|\u003e ReadOnlyAddressBook","lastModifiedDate":"2019-07-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":35,"author":{"gitId":"-"},"content":"ModelManager .up.|\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":36,"author":{"gitId":"-"},"content":"Model .right.\u003e ReadOnlyUserPrefs","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"Model .left.\u003e ReadOnlyAddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":38,"author":{"gitId":"-"},"content":"ModelManager -left-\u003e \"1\" AddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":39,"author":{"gitId":"-"},"content":"ModelManager -right-\u003e \"1\" UserPrefs","lastModifiedDate":"2021-07-31"},{"lineNumber":40,"author":{"gitId":"-"},"content":"UserPrefs .up.|\u003e ReadOnlyUserPrefs","lastModifiedDate":"2019-07-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":42,"author":{"gitId":"-"},"content":"AddressBook *--\u003e \"1\" UniquePersonList","lastModifiedDate":"2019-07-30"},{"lineNumber":43,"author":{"gitId":"-"},"content":"UniquePersonList --\u003e \"~* all\" Person","lastModifiedDate":"2021-07-31"},{"lineNumber":44,"author":{"gitId":"eunrcn"},"content":"Person *--\u003e CompanyName","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"-"},"content":"Person *--\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":46,"author":{"gitId":"-"},"content":"Person *--\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":47,"author":{"gitId":"-"},"content":"Person *--\u003e Address","lastModifiedDate":"2019-07-03"},{"lineNumber":48,"author":{"gitId":"eunrcn"},"content":"Person *--\u003e Tag","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"eunrcn"},"content":"Person *--\u003e InternDuration","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"eunrcn"},"content":"Person *--\u003e InterviewDate","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"eunrcn"},"content":"Person *--\u003e JobDescription","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"eunrcn"},"content":"Person *--\u003e Salary","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":54,"author":{"gitId":"-"},"content":"Person -[hidden]up--\u003e I","lastModifiedDate":"2023-07-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":"UniquePersonList -[hidden]right-\u003e I","lastModifiedDate":"2023-07-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-27"},{"lineNumber":57,"author":{"gitId":"eunrcn"},"content":"CompanyName -[hidden]right-\u003e Phone","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"-"},"content":"Phone -[hidden]right-\u003e Address","lastModifiedDate":"2019-07-03"},{"lineNumber":59,"author":{"gitId":"-"},"content":"Address -[hidden]right-\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":61,"author":{"gitId":"-"},"content":"ModelManager --\u003e \"~* filtered\" Person","lastModifiedDate":"2021-07-31"},{"lineNumber":62,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"eunrcn":12,"-":50}},{"path":"docs/team/ashley.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"ashleygoh1"},"content":"---","lastModifiedDate":"2024-02-27"},{"lineNumber":2,"author":{"gitId":"ashleygoh1"},"content":" layout: default.md","lastModifiedDate":"2024-02-27"},{"lineNumber":3,"author":{"gitId":"ashleygoh1"},"content":" title: \"John Doe\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-02-27"},{"lineNumber":4,"author":{"gitId":"ashleygoh1"},"content":"---","lastModifiedDate":"2024-02-27"},{"lineNumber":5,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-27"},{"lineNumber":6,"author":{"gitId":"ashleygoh1"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-02-27"},{"lineNumber":7,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-27"},{"lineNumber":8,"author":{"gitId":"ashleygoh1"},"content":"AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2024-02-27"},{"lineNumber":9,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-27"},{"lineNumber":10,"author":{"gitId":"ashleygoh1"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-02-27"},{"lineNumber":11,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-27"},{"lineNumber":12,"author":{"gitId":"ashleygoh1"},"content":"* **New Feature**: Allow user to add new contact to the address book.","lastModifiedDate":"2024-02-27"},{"lineNumber":13,"author":{"gitId":"ashleygoh1"},"content":" * What it does: Allow user to add the internship information that they applied for","lastModifiedDate":"2024-02-27"},{"lineNumber":14,"author":{"gitId":"ashleygoh1"},"content":" * Justification: This feature allow users to conveniently store all relevant internship details in one centralized location alongside their other contacts. This helps them stay organized and easily access internship information when needed.","lastModifiedDate":"2024-02-27"},{"lineNumber":15,"author":{"gitId":"ashleygoh1"},"content":" * Credits: The feature builds upon the robust foundation of AB3, optimizing code to accommodate new parameters.","lastModifiedDate":"2024-02-27"},{"lineNumber":16,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-27"},{"lineNumber":17,"author":{"gitId":"ashleygoh1"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-02-27"},{"lineNumber":18,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-27"},{"lineNumber":19,"author":{"gitId":"ashleygoh1"},"content":"* **Project management**:","lastModifiedDate":"2024-02-27"},{"lineNumber":20,"author":{"gitId":"ashleygoh1"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-02-27"},{"lineNumber":21,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-27"},{"lineNumber":22,"author":{"gitId":"ashleygoh1"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-02-27"},{"lineNumber":23,"author":{"gitId":"ashleygoh1"},"content":" * Update existing tests for existing features with coverage of 78.57% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-02-27"},{"lineNumber":24,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-27"},{"lineNumber":25,"author":{"gitId":"ashleygoh1"},"content":"* **Documentation**:","lastModifiedDate":"2024-02-27"},{"lineNumber":26,"author":{"gitId":"ashleygoh1"},"content":" * User Guide:","lastModifiedDate":"2024-02-27"},{"lineNumber":27,"author":{"gitId":"ashleygoh1"},"content":" * Added documentation for the features `add` and `edit` [\\#72]()","lastModifiedDate":"2024-02-27"},{"lineNumber":28,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-27"},{"lineNumber":29,"author":{"gitId":"ashleygoh1"},"content":"* **Community**:","lastModifiedDate":"2024-02-27"},{"lineNumber":30,"author":{"gitId":"ashleygoh1"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-02-27"},{"lineNumber":31,"author":{"gitId":"ashleygoh1"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-02-27"},{"lineNumber":32,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-27"},{"lineNumber":33,"author":{"gitId":"ashleygoh1"},"content":"* **Tools**:","lastModifiedDate":"2024-02-27"},{"lineNumber":34,"author":{"gitId":"ashleygoh1"},"content":" * Set up codecov to the team repo","lastModifiedDate":"2024-02-27"},{"lineNumber":35,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-27"},{"lineNumber":36,"author":{"gitId":"ashleygoh1"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-02-27"}],"authorContributionMap":{"ashleygoh1":36}},{"path":"src/main/java/seedu/address/logic/Messages.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2023-07-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-07-14"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-07-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2023-07-14"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Container for user visible messages.","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class Messages {","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2016-09-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_PERSON_DISPLAYED_INDEX \u003d \"The person index provided is invalid\";","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String MESSAGE_PERSONS_LISTED_OVERVIEW \u003d \"%1$d persons listed!\";","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2023-07-14"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-07-14"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2023-07-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2023-07-14"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":28,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":29,"author":{"gitId":"-"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-07-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":31,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Formats the {@code person} for display to the user.","lastModifiedDate":"2019-02-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static String format(Person person) {","lastModifiedDate":"2019-02-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23"},{"lineNumber":39,"author":{"gitId":"ashleygoh1"},"content":" builder.append(person.getCompanyName())","lastModifiedDate":"2024-02-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" .append(\"; Phone: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" .append(person.getPhone())","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" .append(\"; Email: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" .append(person.getEmail())","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" .append(\"; Address: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" .append(person.getAddress())","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"ashleygoh1"},"content":" .append(\"; Tags: \")","lastModifiedDate":"2024-02-25"},{"lineNumber":47,"author":{"gitId":"ashleygoh1"},"content":" .append(person.getTag())","lastModifiedDate":"2024-02-25"},{"lineNumber":48,"author":{"gitId":"ashleygoh1"},"content":" .append(\"; Job Description: \")","lastModifiedDate":"2024-02-25"},{"lineNumber":49,"author":{"gitId":"ashleygoh1"},"content":" .append(person.getJobDescription())","lastModifiedDate":"2024-02-25"},{"lineNumber":50,"author":{"gitId":"ashleygoh1"},"content":" .append(\"; Interview Date: \")","lastModifiedDate":"2024-02-25"},{"lineNumber":51,"author":{"gitId":"ashleygoh1"},"content":" .append(person.getInterviewDate())","lastModifiedDate":"2024-02-25"},{"lineNumber":52,"author":{"gitId":"ashleygoh1"},"content":" .append(\"; Internship Duration: \")","lastModifiedDate":"2024-02-25"},{"lineNumber":53,"author":{"gitId":"ashleygoh1"},"content":" .append(person.getInternDuration())","lastModifiedDate":"2024-02-25"},{"lineNumber":54,"author":{"gitId":"ashleygoh1"},"content":" .append(\"; Salary: \")","lastModifiedDate":"2024-02-25"},{"lineNumber":55,"author":{"gitId":"ashleygoh1"},"content":" .append(person.getSalary());","lastModifiedDate":"2024-02-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"ashleygoh1":11,"-":48}},{"path":"src/main/java/seedu/address/logic/commands/AddCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09"},{"lineNumber":6,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_INTERN_DURATION;","lastModifiedDate":"2024-02-26"},{"lineNumber":7,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_INTERVIEW_DATE;","lastModifiedDate":"2024-02-26"},{"lineNumber":8,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_JOB_DESCRIPTION;","lastModifiedDate":"2024-02-26"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09"},{"lineNumber":11,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SALARY;","lastModifiedDate":"2024-02-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-01-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"add\";","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a person to the address book. \"","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2017-06-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2017-06-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2017-05-09"},{"lineNumber":31,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2017-05-09"},{"lineNumber":32,"author":{"gitId":"ashleygoh1"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS] \"","lastModifiedDate":"2024-02-26"},{"lineNumber":33,"author":{"gitId":"ashleygoh1"},"content":" + PREFIX_TAG + \"TAG \"","lastModifiedDate":"2024-02-26"},{"lineNumber":34,"author":{"gitId":"ashleygoh1"},"content":" + PREFIX_JOB_DESCRIPTION + \"JOB DESCRIPTION \"","lastModifiedDate":"2024-02-26"},{"lineNumber":35,"author":{"gitId":"ashleygoh1"},"content":" + \"[\" + PREFIX_INTERVIEW_DATE + \"INTERVIEW DATE] \"","lastModifiedDate":"2024-02-26"},{"lineNumber":36,"author":{"gitId":"ashleygoh1"},"content":" + PREFIX_INTERN_DURATION + \"INTERN DURATION \"","lastModifiedDate":"2024-02-26"},{"lineNumber":37,"author":{"gitId":"ashleygoh1"},"content":" + PREFIX_SALARY + \"SALARY\\n\"","lastModifiedDate":"2024-02-26"},{"lineNumber":38,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":39,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06"},{"lineNumber":40,"author":{"gitId":"ashleygoh1"},"content":" + PREFIX_NAME + \"Happy Burger \"","lastModifiedDate":"2024-02-26"},{"lineNumber":41,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":42,"author":{"gitId":"ashleygoh1"},"content":" + PREFIX_EMAIL + \"HappyBurger@example.com \"","lastModifiedDate":"2024-02-26"},{"lineNumber":43,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"311, Clementi Ave 2, #02-25 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":44,"author":{"gitId":"ashleygoh1"},"content":" + PREFIX_TAG + \"I \"","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"ashleygoh1"},"content":" + PREFIX_JOB_DESCRIPTION + \"Software Developer intern \"","lastModifiedDate":"2024-02-26"},{"lineNumber":46,"author":{"gitId":"eunrcn"},"content":" + PREFIX_INTERVIEW_DATE + \"03-03-2024 1200 \"","lastModifiedDate":"2024-02-28"},{"lineNumber":47,"author":{"gitId":"ashleygoh1"},"content":" + PREFIX_INTERN_DURATION + \"3 months \"","lastModifiedDate":"2024-02-26"},{"lineNumber":48,"author":{"gitId":"ashleygoh1"},"content":" + PREFIX_SALARY + \"1000\";","lastModifiedDate":"2024-02-26"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New person added: %1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book\";","lastModifiedDate":"2016-08-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" private final Person toAdd;","lastModifiedDate":"2016-08-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2018-01-10"},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public AddCommand(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":59,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":60,"author":{"gitId":"-"},"content":" toAdd \u003d person;","lastModifiedDate":"2018-01-10"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":65,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":67,"author":{"gitId":"-"},"content":" if (model.hasPerson(toAdd)) {","lastModifiedDate":"2018-08-07"},{"lineNumber":68,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":71,"author":{"gitId":"-"},"content":" model.addPerson(toAdd);","lastModifiedDate":"2016-09-25"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2019-02-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-22"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22"},{"lineNumber":77,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" if (!(other instanceof AddCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" AddCommand otherAddCommand \u003d (AddCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2023-07-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"eunrcn":1,"ashleygoh1":17,"-":78}},{"path":"src/main/java/seedu/address/logic/commands/CommandResult.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2018-12-09"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":7,"author":{"gitId":"chenyixin0"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2024-02-29"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"Jawad280"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-02-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Represents the result of a command execution.","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class CommandResult {","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":16,"author":{"gitId":"-"},"content":" private final String feedbackToUser;","lastModifiedDate":"2018-12-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" /** Help information should be shown to the user. */","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private final boolean showHelp;","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":" /** The application should exit. */","lastModifiedDate":"2018-12-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final boolean exit;","lastModifiedDate":"2018-12-09"},{"lineNumber":23,"author":{"gitId":"Jawad280"},"content":" private final Person viewPerson;","lastModifiedDate":"2024-02-26"},{"lineNumber":24,"author":{"gitId":"chenyixin0"},"content":" private final FilteredList\u003cPerson\u003e viewList;","lastModifiedDate":"2024-02-29"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Constructs a {@code CommandResult} with the specified fields.","lastModifiedDate":"2018-12-09"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public CommandResult(String feedbackToUser, boolean showHelp, boolean exit) {","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"-"},"content":" this.feedbackToUser \u003d requireNonNull(feedbackToUser);","lastModifiedDate":"2017-05-15"},{"lineNumber":31,"author":{"gitId":"-"},"content":" this.showHelp \u003d showHelp;","lastModifiedDate":"2018-12-09"},{"lineNumber":32,"author":{"gitId":"-"},"content":" this.exit \u003d exit;","lastModifiedDate":"2018-12-09"},{"lineNumber":33,"author":{"gitId":"Jawad280"},"content":" this.viewPerson \u003d null;","lastModifiedDate":"2024-02-26"},{"lineNumber":34,"author":{"gitId":"chenyixin0"},"content":" this.viewList \u003d null;","lastModifiedDate":"2024-02-29"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Constructs a {@code CommandResult} with the specified {@code feedbackToUser},","lastModifiedDate":"2018-12-09"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * and other fields set to their default value.","lastModifiedDate":"2018-12-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public CommandResult(String feedbackToUser) {","lastModifiedDate":"2018-12-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":" this(feedbackToUser, false, false);","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":45,"author":{"gitId":"Jawad280"},"content":" /**","lastModifiedDate":"2024-02-26"},{"lineNumber":46,"author":{"gitId":"Jawad280"},"content":" * Constructs a {@code CommandResult} with the specified {@code feedbackToUser},","lastModifiedDate":"2024-02-26"},{"lineNumber":47,"author":{"gitId":"Jawad280"},"content":" * and other fields set to their default value.","lastModifiedDate":"2024-02-26"},{"lineNumber":48,"author":{"gitId":"Jawad280"},"content":" */","lastModifiedDate":"2024-02-26"},{"lineNumber":49,"author":{"gitId":"Jawad280"},"content":" public CommandResult(String feedbackToUser, Person viewPerson) {","lastModifiedDate":"2024-02-26"},{"lineNumber":50,"author":{"gitId":"Jawad280"},"content":" this.feedbackToUser \u003d requireNonNull(feedbackToUser);","lastModifiedDate":"2024-02-26"},{"lineNumber":51,"author":{"gitId":"Jawad280"},"content":" this.showHelp \u003d false;","lastModifiedDate":"2024-02-26"},{"lineNumber":52,"author":{"gitId":"Jawad280"},"content":" this.exit \u003d false;","lastModifiedDate":"2024-02-26"},{"lineNumber":53,"author":{"gitId":"Jawad280"},"content":" this.viewPerson \u003d viewPerson;","lastModifiedDate":"2024-02-26"},{"lineNumber":54,"author":{"gitId":"chenyixin0"},"content":" this.viewList \u003d null;","lastModifiedDate":"2024-02-29"},{"lineNumber":55,"author":{"gitId":"chenyixin0"},"content":" }","lastModifiedDate":"2024-02-29"},{"lineNumber":56,"author":{"gitId":"chenyixin0"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":57,"author":{"gitId":"Jawad280"},"content":" /**","lastModifiedDate":"2024-03-01"},{"lineNumber":58,"author":{"gitId":"Jawad280"},"content":" * Constructs a {@code CommandResult} with the specified {@code feedbackToUser},","lastModifiedDate":"2024-03-01"},{"lineNumber":59,"author":{"gitId":"Jawad280"},"content":" * and other fields set to their default value.","lastModifiedDate":"2024-03-01"},{"lineNumber":60,"author":{"gitId":"Jawad280"},"content":" */","lastModifiedDate":"2024-03-01"},{"lineNumber":61,"author":{"gitId":"chenyixin0"},"content":" public CommandResult(String feedbackToUser, FilteredList\u003cPerson\u003e viewList) {","lastModifiedDate":"2024-02-29"},{"lineNumber":62,"author":{"gitId":"chenyixin0"},"content":" this.feedbackToUser \u003d requireNonNull(feedbackToUser);","lastModifiedDate":"2024-02-29"},{"lineNumber":63,"author":{"gitId":"chenyixin0"},"content":" this.showHelp \u003d false;","lastModifiedDate":"2024-02-29"},{"lineNumber":64,"author":{"gitId":"chenyixin0"},"content":" this.exit \u003d false;","lastModifiedDate":"2024-02-29"},{"lineNumber":65,"author":{"gitId":"chenyixin0"},"content":" this.viewPerson \u003d null;","lastModifiedDate":"2024-02-29"},{"lineNumber":66,"author":{"gitId":"chenyixin0"},"content":" this.viewList \u003d viewList;","lastModifiedDate":"2024-02-29"},{"lineNumber":67,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public String getFeedbackToUser() {","lastModifiedDate":"2018-12-09"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return feedbackToUser;","lastModifiedDate":"2018-12-09"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":72,"author":{"gitId":"Jawad280"},"content":" public Person getViewPerson() {","lastModifiedDate":"2024-02-26"},{"lineNumber":73,"author":{"gitId":"Jawad280"},"content":" return this.viewPerson;","lastModifiedDate":"2024-02-26"},{"lineNumber":74,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":75,"author":{"gitId":"chenyixin0"},"content":" public FilteredList\u003cPerson\u003e getViewList() {","lastModifiedDate":"2024-02-29"},{"lineNumber":76,"author":{"gitId":"chenyixin0"},"content":" return this.viewList;","lastModifiedDate":"2024-02-29"},{"lineNumber":77,"author":{"gitId":"chenyixin0"},"content":" }","lastModifiedDate":"2024-02-29"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public boolean isShowHelp() {","lastModifiedDate":"2018-12-09"},{"lineNumber":80,"author":{"gitId":"-"},"content":" return showHelp;","lastModifiedDate":"2018-12-09"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public boolean isExit() {","lastModifiedDate":"2018-12-09"},{"lineNumber":84,"author":{"gitId":"-"},"content":" return exit;","lastModifiedDate":"2018-12-09"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":87,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":89,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2018-12-09"},{"lineNumber":90,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-12-09"},{"lineNumber":91,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-12-09"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":94,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2018-12-09"},{"lineNumber":95,"author":{"gitId":"-"},"content":" if (!(other instanceof CommandResult)) {","lastModifiedDate":"2018-12-09"},{"lineNumber":96,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-12-09"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":99,"author":{"gitId":"-"},"content":" CommandResult otherCommandResult \u003d (CommandResult) other;","lastModifiedDate":"2018-12-09"},{"lineNumber":100,"author":{"gitId":"-"},"content":" return feedbackToUser.equals(otherCommandResult.feedbackToUser)","lastModifiedDate":"2018-12-09"},{"lineNumber":101,"author":{"gitId":"-"},"content":" \u0026\u0026 showHelp \u003d\u003d otherCommandResult.showHelp","lastModifiedDate":"2018-12-09"},{"lineNumber":102,"author":{"gitId":"-"},"content":" \u0026\u0026 exit \u003d\u003d otherCommandResult.exit;","lastModifiedDate":"2018-12-09"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":106,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2018-12-09"},{"lineNumber":107,"author":{"gitId":"-"},"content":" return Objects.hash(feedbackToUser, showHelp, exit);","lastModifiedDate":"2018-12-09"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":" .add(\"feedbackToUser\", feedbackToUser)","lastModifiedDate":"2019-02-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":" .add(\"showHelp\", showHelp)","lastModifiedDate":"2019-02-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":" .add(\"exit\", exit)","lastModifiedDate":"2019-02-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"chenyixin0":15,"Jawad280":21,"-":83}},{"path":"src/main/java/seedu/address/logic/commands/DeleteCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-09-01"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Deletes a person identified using it\u0027s displayed index from the address book.","lastModifiedDate":"2018-04-01"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"delete\";","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" + \": Deletes the person identified by the index number used in the displayed person list.\\n\"","lastModifiedDate":"2018-04-01"},{"lineNumber":23,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer)\\n\"","lastModifiedDate":"2016-09-29"},{"lineNumber":24,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"minghowC"},"content":" // Output message: \"Deleted Person: Person Name\"","lastModifiedDate":"2024-03-01"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DELETE_PERSON_SUCCESS \u003d \"Deleted Person: %1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private final Index targetIndex;","lastModifiedDate":"2017-06-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public DeleteCommand(Index targetIndex) {","lastModifiedDate":"2017-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2016-09-22"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":44,"author":{"gitId":"-"},"content":" Person personToDelete \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2018-04-19"},{"lineNumber":45,"author":{"gitId":"-"},"content":" model.deletePerson(personToDelete);","lastModifiedDate":"2016-09-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_PERSON_SUCCESS, Messages.format(personToDelete)));","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" if (!(other instanceof DeleteCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" DeleteCommand otherDeleteCommand \u003d (DeleteCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return targetIndex.equals(otherDeleteCommand.targetIndex);","lastModifiedDate":"2023-07-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2019-02-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"minghowC":1,"-":69}},{"path":"src/main/java/seedu/address/logic/commands/EditCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-02-28"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-02-28"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-02-28"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-02-28"},{"lineNumber":6,"author":{"gitId":"eunrcn"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_INTERN_DURATION;","lastModifiedDate":"2024-02-28"},{"lineNumber":7,"author":{"gitId":"eunrcn"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_INTERVIEW_DATE;","lastModifiedDate":"2024-02-28"},{"lineNumber":8,"author":{"gitId":"eunrcn"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_JOB_DESCRIPTION;","lastModifiedDate":"2024-02-28"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-02-28"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-02-28"},{"lineNumber":11,"author":{"gitId":"eunrcn"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SALARY;","lastModifiedDate":"2024-02-28"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-02-28"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-02-28"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2024-02-28"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2024-02-28"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2024-02-28"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-02-28"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2024-02-28"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-02-28"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-02-28"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-02-28"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-02-28"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-02-28"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-02-29"},{"lineNumber":27,"author":{"gitId":"eunrcn"},"content":"import seedu.address.model.person.InternDuration;","lastModifiedDate":"2024-02-28"},{"lineNumber":28,"author":{"gitId":"eunrcn"},"content":"import seedu.address.model.person.InterviewDate;","lastModifiedDate":"2024-02-28"},{"lineNumber":29,"author":{"gitId":"Jawad280"},"content":"import seedu.address.model.person.JobDescription;","lastModifiedDate":"2024-02-29"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-02-28"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-02-28"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-02-28"},{"lineNumber":33,"author":{"gitId":"Jawad280"},"content":"import seedu.address.model.person.Salary;","lastModifiedDate":"2024-02-29"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-02-28"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":36,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2024-02-28"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Edits the details of an existing person in the address book.","lastModifiedDate":"2024-02-28"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-02-28"},{"lineNumber":39,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2024-02-28"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2024-02-28"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the person identified \"","lastModifiedDate":"2024-02-28"},{"lineNumber":44,"author":{"gitId":"-"},"content":" + \"by the index number used in the displayed person list. \"","lastModifiedDate":"2024-02-28"},{"lineNumber":45,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2024-02-28"},{"lineNumber":46,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2024-02-28"},{"lineNumber":47,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2024-02-28"},{"lineNumber":48,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2024-02-28"},{"lineNumber":49,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2024-02-28"},{"lineNumber":50,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS] \"","lastModifiedDate":"2024-02-28"},{"lineNumber":51,"author":{"gitId":"eunrcn"},"content":" + \"[\" + PREFIX_JOB_DESCRIPTION + \"JOB DESCRIPTION] \"","lastModifiedDate":"2024-02-28"},{"lineNumber":52,"author":{"gitId":"eunrcn"},"content":" + \"[\" + PREFIX_INTERVIEW_DATE + \"INTERVIEW DATE] \"","lastModifiedDate":"2024-02-28"},{"lineNumber":53,"author":{"gitId":"eunrcn"},"content":" + \"[\" + PREFIX_INTERN_DURATION + \"INTERN DURATION] \"","lastModifiedDate":"2024-02-28"},{"lineNumber":54,"author":{"gitId":"eunrcn"},"content":" + \"[\" + PREFIX_SALARY + \"SALARY] \"","lastModifiedDate":"2024-02-28"},{"lineNumber":55,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2024-02-28"},{"lineNumber":56,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2024-02-28"},{"lineNumber":57,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"91234567 \"","lastModifiedDate":"2024-02-28"},{"lineNumber":58,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2024-02-28"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Person: %1$s\";","lastModifiedDate":"2024-02-28"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2024-02-28"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book.\";","lastModifiedDate":"2024-02-28"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":64,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2024-02-28"},{"lineNumber":65,"author":{"gitId":"-"},"content":" private final EditPersonDescriptor editPersonDescriptor;","lastModifiedDate":"2024-02-28"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":67,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-02-28"},{"lineNumber":68,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit","lastModifiedDate":"2024-02-28"},{"lineNumber":69,"author":{"gitId":"-"},"content":" * @param editPersonDescriptor details to edit the person with","lastModifiedDate":"2024-02-28"},{"lineNumber":70,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-02-28"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public EditCommand(Index index, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2024-02-28"},{"lineNumber":72,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2024-02-28"},{"lineNumber":73,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2024-02-28"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":75,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2024-02-28"},{"lineNumber":76,"author":{"gitId":"-"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2024-02-28"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-02-28"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-02-28"},{"lineNumber":81,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2024-02-28"},{"lineNumber":82,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-02-28"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":84,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-02-28"},{"lineNumber":85,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-02-28"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":88,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-02-28"},{"lineNumber":89,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2024-02-28"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":91,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2024-02-28"},{"lineNumber":92,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2024-02-28"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":95,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2024-02-28"},{"lineNumber":96,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-02-28"},{"lineNumber":97,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson)));","lastModifiedDate":"2024-02-28"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":100,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-02-28"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2024-02-28"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2024-02-28"},{"lineNumber":103,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-02-28"},{"lineNumber":104,"author":{"gitId":"-"},"content":" private static Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2024-02-28"},{"lineNumber":105,"author":{"gitId":"-"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2024-02-28"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":107,"author":{"gitId":"eunrcn"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(personToEdit.getCompanyName());","lastModifiedDate":"2024-02-28"},{"lineNumber":108,"author":{"gitId":"-"},"content":" Phone updatedPhone \u003d editPersonDescriptor.getPhone().orElse(personToEdit.getPhone());","lastModifiedDate":"2024-02-28"},{"lineNumber":109,"author":{"gitId":"-"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2024-02-28"},{"lineNumber":110,"author":{"gitId":"-"},"content":" Address updatedAddress \u003d editPersonDescriptor.getAddress().orElse(personToEdit.getAddress());","lastModifiedDate":"2024-02-28"},{"lineNumber":111,"author":{"gitId":"Jawad280"},"content":" JobDescription updatedJobDescription \u003d editPersonDescriptor","lastModifiedDate":"2024-02-29"},{"lineNumber":112,"author":{"gitId":"Jawad280"},"content":" .getJobDescription()","lastModifiedDate":"2024-02-29"},{"lineNumber":113,"author":{"gitId":"Jawad280"},"content":" .orElse(personToEdit.getJobDescription());","lastModifiedDate":"2024-02-29"},{"lineNumber":114,"author":{"gitId":"Jawad280"},"content":" InterviewDate updatedInterviewDate \u003d editPersonDescriptor","lastModifiedDate":"2024-02-29"},{"lineNumber":115,"author":{"gitId":"Jawad280"},"content":" .getInterviewDate()","lastModifiedDate":"2024-02-29"},{"lineNumber":116,"author":{"gitId":"Jawad280"},"content":" .orElse(personToEdit.getInterviewDate());","lastModifiedDate":"2024-02-29"},{"lineNumber":117,"author":{"gitId":"Jawad280"},"content":" InternDuration updatedInternDuration \u003d editPersonDescriptor","lastModifiedDate":"2024-02-29"},{"lineNumber":118,"author":{"gitId":"Jawad280"},"content":" .getInternDuration()","lastModifiedDate":"2024-02-29"},{"lineNumber":119,"author":{"gitId":"Jawad280"},"content":" .orElse(personToEdit.getInternDuration());","lastModifiedDate":"2024-02-29"},{"lineNumber":120,"author":{"gitId":"eunrcn"},"content":" Salary updatedSalary \u003d editPersonDescriptor.getSalary().orElse(personToEdit.getSalary());","lastModifiedDate":"2024-02-28"},{"lineNumber":121,"author":{"gitId":"Jawad280"},"content":" Tag updatedTags \u003d editPersonDescriptor.getTag().orElse(personToEdit.getTag());","lastModifiedDate":"2024-02-29"},{"lineNumber":122,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":123,"author":{"gitId":"eunrcn"},"content":" return new Person(updatedName, updatedPhone, updatedEmail, updatedAddress, updatedTags,","lastModifiedDate":"2024-02-28"},{"lineNumber":124,"author":{"gitId":"eunrcn"},"content":" updatedJobDescription, updatedInterviewDate,","lastModifiedDate":"2024-02-28"},{"lineNumber":125,"author":{"gitId":"eunrcn"},"content":" updatedInternDuration, updatedSalary);","lastModifiedDate":"2024-02-28"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-02-28"},{"lineNumber":129,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-02-28"},{"lineNumber":130,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-02-28"},{"lineNumber":131,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2024-02-28"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":134,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-02-28"},{"lineNumber":135,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2024-02-28"},{"lineNumber":136,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2024-02-28"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":139,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2024-02-28"},{"lineNumber":140,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2024-02-28"},{"lineNumber":141,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2024-02-28"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":144,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-02-28"},{"lineNumber":145,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2024-02-28"},{"lineNumber":146,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-02-28"},{"lineNumber":147,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2024-02-28"},{"lineNumber":148,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2024-02-28"},{"lineNumber":149,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2024-02-28"},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":152,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-02-28"},{"lineNumber":153,"author":{"gitId":"-"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2024-02-28"},{"lineNumber":154,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2024-02-28"},{"lineNumber":155,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-02-28"},{"lineNumber":156,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2024-02-28"},{"lineNumber":157,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2024-02-28"},{"lineNumber":158,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2024-02-28"},{"lineNumber":159,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2024-02-28"},{"lineNumber":160,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2024-02-28"},{"lineNumber":161,"author":{"gitId":"Jawad280"},"content":" private Tag tag;","lastModifiedDate":"2024-02-29"},{"lineNumber":162,"author":{"gitId":"eunrcn"},"content":" private JobDescription jobDescription;","lastModifiedDate":"2024-02-28"},{"lineNumber":163,"author":{"gitId":"eunrcn"},"content":" private InternDuration internDuration;","lastModifiedDate":"2024-02-28"},{"lineNumber":164,"author":{"gitId":"eunrcn"},"content":" private InterviewDate interviewDate;","lastModifiedDate":"2024-02-28"},{"lineNumber":165,"author":{"gitId":"eunrcn"},"content":" private Salary salary;","lastModifiedDate":"2024-02-28"},{"lineNumber":166,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":168,"author":{"gitId":"-"},"content":" public EditPersonDescriptor() {}","lastModifiedDate":"2024-02-28"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":170,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-02-28"},{"lineNumber":171,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2024-02-28"},{"lineNumber":172,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2024-02-28"},{"lineNumber":173,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-02-28"},{"lineNumber":174,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2024-02-28"},{"lineNumber":175,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2024-02-28"},{"lineNumber":176,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2024-02-28"},{"lineNumber":177,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2024-02-28"},{"lineNumber":178,"author":{"gitId":"-"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2024-02-28"},{"lineNumber":179,"author":{"gitId":"Jawad280"},"content":" setTag(toCopy.tag);","lastModifiedDate":"2024-02-29"},{"lineNumber":180,"author":{"gitId":"eunrcn"},"content":" setJobDescription(toCopy.jobDescription);","lastModifiedDate":"2024-02-28"},{"lineNumber":181,"author":{"gitId":"eunrcn"},"content":" setInternDuration(toCopy.internDuration);","lastModifiedDate":"2024-02-28"},{"lineNumber":182,"author":{"gitId":"eunrcn"},"content":" setInterviewDate(toCopy.interviewDate);","lastModifiedDate":"2024-02-28"},{"lineNumber":183,"author":{"gitId":"eunrcn"},"content":" setSalary(toCopy.salary);","lastModifiedDate":"2024-02-28"},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":186,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-02-28"},{"lineNumber":187,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2024-02-28"},{"lineNumber":188,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-02-28"},{"lineNumber":189,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2024-02-28"},{"lineNumber":190,"author":{"gitId":"Jawad280"},"content":" return CollectionUtil.isAnyNonNull(","lastModifiedDate":"2024-02-29"},{"lineNumber":191,"author":{"gitId":"Jawad280"},"content":" name, phone, email, address, tag, jobDescription, interviewDate, internDuration, salary","lastModifiedDate":"2024-02-29"},{"lineNumber":192,"author":{"gitId":"Jawad280"},"content":" );","lastModifiedDate":"2024-02-29"},{"lineNumber":193,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":195,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2024-02-28"},{"lineNumber":196,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2024-02-28"},{"lineNumber":197,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":199,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2024-02-28"},{"lineNumber":200,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2024-02-28"},{"lineNumber":201,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":203,"author":{"gitId":"-"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2024-02-28"},{"lineNumber":204,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2024-02-28"},{"lineNumber":205,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":207,"author":{"gitId":"-"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2024-02-28"},{"lineNumber":208,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2024-02-28"},{"lineNumber":209,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":211,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2024-02-28"},{"lineNumber":212,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2024-02-28"},{"lineNumber":213,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":215,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2024-02-28"},{"lineNumber":216,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2024-02-28"},{"lineNumber":217,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":219,"author":{"gitId":"-"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2024-02-28"},{"lineNumber":220,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2024-02-28"},{"lineNumber":221,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":223,"author":{"gitId":"-"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2024-02-28"},{"lineNumber":224,"author":{"gitId":"-"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2024-02-28"},{"lineNumber":225,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":227,"author":{"gitId":"eunrcn"},"content":" public void setJobDescription(JobDescription jobDescription) {","lastModifiedDate":"2024-02-28"},{"lineNumber":228,"author":{"gitId":"eunrcn"},"content":" this.jobDescription \u003d jobDescription;","lastModifiedDate":"2024-02-28"},{"lineNumber":229,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":231,"author":{"gitId":"eunrcn"},"content":" public Optional\u003cJobDescription\u003e getJobDescription() {","lastModifiedDate":"2024-02-28"},{"lineNumber":232,"author":{"gitId":"eunrcn"},"content":" return Optional.ofNullable(jobDescription);","lastModifiedDate":"2024-02-28"},{"lineNumber":233,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":234,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":235,"author":{"gitId":"eunrcn"},"content":" public void setInternDuration(InternDuration internDuration) {","lastModifiedDate":"2024-02-28"},{"lineNumber":236,"author":{"gitId":"eunrcn"},"content":" this.internDuration \u003d internDuration;","lastModifiedDate":"2024-02-28"},{"lineNumber":237,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":238,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":239,"author":{"gitId":"eunrcn"},"content":" public Optional\u003cInternDuration\u003e getInternDuration() {","lastModifiedDate":"2024-02-28"},{"lineNumber":240,"author":{"gitId":"eunrcn"},"content":" return Optional.ofNullable(internDuration);","lastModifiedDate":"2024-02-28"},{"lineNumber":241,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":242,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":243,"author":{"gitId":"eunrcn"},"content":" public void setInterviewDate(InterviewDate interviewDate) {","lastModifiedDate":"2024-02-28"},{"lineNumber":244,"author":{"gitId":"eunrcn"},"content":" this.interviewDate \u003d interviewDate;","lastModifiedDate":"2024-02-28"},{"lineNumber":245,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":246,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":247,"author":{"gitId":"eunrcn"},"content":" public Optional\u003cInterviewDate\u003e getInterviewDate() {","lastModifiedDate":"2024-02-28"},{"lineNumber":248,"author":{"gitId":"eunrcn"},"content":" return Optional.ofNullable(interviewDate);","lastModifiedDate":"2024-02-28"},{"lineNumber":249,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":250,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":251,"author":{"gitId":"eunrcn"},"content":" public void setSalary(Salary salary) {","lastModifiedDate":"2024-02-28"},{"lineNumber":252,"author":{"gitId":"eunrcn"},"content":" this.salary \u003d salary;","lastModifiedDate":"2024-02-28"},{"lineNumber":253,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":254,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":255,"author":{"gitId":"eunrcn"},"content":" public Optional\u003cSalary\u003e getSalary() {","lastModifiedDate":"2024-02-28"},{"lineNumber":256,"author":{"gitId":"eunrcn"},"content":" return Optional.ofNullable(salary);","lastModifiedDate":"2024-02-28"},{"lineNumber":257,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":258,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":259,"author":{"gitId":"Jawad280"},"content":" public void setTag(Tag tag) {","lastModifiedDate":"2024-02-29"},{"lineNumber":260,"author":{"gitId":"Jawad280"},"content":" this.tag \u003d tag;","lastModifiedDate":"2024-02-29"},{"lineNumber":261,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":262,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":263,"author":{"gitId":"Jawad280"},"content":" public Optional\u003cTag\u003e getTag() {","lastModifiedDate":"2024-02-29"},{"lineNumber":264,"author":{"gitId":"Jawad280"},"content":" return Optional.ofNullable(tag);","lastModifiedDate":"2024-02-29"},{"lineNumber":265,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":266,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":267,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-02-28"},{"lineNumber":268,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-02-28"},{"lineNumber":269,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-02-28"},{"lineNumber":270,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2024-02-28"},{"lineNumber":271,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":273,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-02-28"},{"lineNumber":274,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2024-02-28"},{"lineNumber":275,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2024-02-28"},{"lineNumber":276,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":277,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":278,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2024-02-28"},{"lineNumber":279,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2024-02-28"},{"lineNumber":280,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2024-02-28"},{"lineNumber":281,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2024-02-28"},{"lineNumber":282,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(address, otherEditPersonDescriptor.address)","lastModifiedDate":"2024-02-28"},{"lineNumber":283,"author":{"gitId":"Jawad280"},"content":" \u0026\u0026 Objects.equals(tag, otherEditPersonDescriptor.tag)","lastModifiedDate":"2024-02-29"},{"lineNumber":284,"author":{"gitId":"eunrcn"},"content":" \u0026\u0026 Objects.equals(jobDescription, otherEditPersonDescriptor.jobDescription)","lastModifiedDate":"2024-02-28"},{"lineNumber":285,"author":{"gitId":"eunrcn"},"content":" \u0026\u0026 Objects.equals(internDuration, otherEditPersonDescriptor.internDuration)","lastModifiedDate":"2024-02-28"},{"lineNumber":286,"author":{"gitId":"eunrcn"},"content":" \u0026\u0026 Objects.equals(interviewDate, otherEditPersonDescriptor.interviewDate)","lastModifiedDate":"2024-02-28"},{"lineNumber":287,"author":{"gitId":"eunrcn"},"content":" \u0026\u0026 Objects.equals(salary, otherEditPersonDescriptor.salary);","lastModifiedDate":"2024-02-28"},{"lineNumber":288,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":290,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-02-28"},{"lineNumber":291,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2024-02-28"},{"lineNumber":292,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-02-28"},{"lineNumber":293,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2024-02-28"},{"lineNumber":294,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2024-02-28"},{"lineNumber":295,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2024-02-28"},{"lineNumber":296,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2024-02-28"},{"lineNumber":297,"author":{"gitId":"Jawad280"},"content":" .add(\"tag\", tag)","lastModifiedDate":"2024-02-29"},{"lineNumber":298,"author":{"gitId":"Jawad280"},"content":" .add(\"job description\", jobDescription)","lastModifiedDate":"2024-02-29"},{"lineNumber":299,"author":{"gitId":"Jawad280"},"content":" .add(\"intern duration\", internDuration)","lastModifiedDate":"2024-02-29"},{"lineNumber":300,"author":{"gitId":"Jawad280"},"content":" .add(\"interview date\", interviewDate)","lastModifiedDate":"2024-02-29"},{"lineNumber":301,"author":{"gitId":"Jawad280"},"content":" .add(\"salary\", salary)","lastModifiedDate":"2024-02-29"},{"lineNumber":302,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2024-02-28"},{"lineNumber":303,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":304,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":305,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-02-28"}],"authorContributionMap":{"eunrcn":61,"Jawad280":27,"-":217}},{"path":"src/main/java/seedu/address/logic/commands/FindCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-22"},{"lineNumber":9,"author":{"gitId":"chenyixin0"},"content":" * Finds and lists all companies in address book whose name contains any of the argument keywords.","lastModifiedDate":"2024-02-29"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * Keyword matching is case insensitive.","lastModifiedDate":"2018-04-01"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class FindCommand extends Command {","lastModifiedDate":"2016-09-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"find\";","lastModifiedDate":"2016-09-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":16,"author":{"gitId":"chenyixin0"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Finds all companies whose names contain any of \"","lastModifiedDate":"2024-02-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":" + \"the specified keywords (case-insensitive) and displays them as a list with index numbers.\\n\"","lastModifiedDate":"2018-04-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":" + \"Parameters: KEYWORD [MORE_KEYWORDS]...\\n\"","lastModifiedDate":"2016-09-22"},{"lineNumber":19,"author":{"gitId":"chenyixin0"},"content":" + \"Example: \" + COMMAND_WORD + \" food panda\";","lastModifiedDate":"2024-02-29"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private final NameContainsKeywordsPredicate predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public FindCommand(NameContainsKeywordsPredicate predicate) {","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-22"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":29,"author":{"gitId":"chenyixin0"},"content":" //requireNonNull(model);","lastModifiedDate":"2024-03-08"},{"lineNumber":30,"author":{"gitId":"chenyixin0"},"content":" //model.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-03-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" return new CommandResult(","lastModifiedDate":"2018-04-01"},{"lineNumber":32,"author":{"gitId":"Jawad280"},"content":" String.format(","lastModifiedDate":"2024-03-01"},{"lineNumber":33,"author":{"gitId":"Jawad280"},"content":" Messages.MESSAGE_PERSONS_LISTED_OVERVIEW,","lastModifiedDate":"2024-03-01"},{"lineNumber":34,"author":{"gitId":"Jawad280"},"content":" model.generateNewFilteredPersonList(predicate).size()),","lastModifiedDate":"2024-03-01"},{"lineNumber":35,"author":{"gitId":"chenyixin0"},"content":" model.generateNewFilteredPersonList(predicate));","lastModifiedDate":"2024-02-29"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" if (!(other instanceof FindCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" FindCommand otherFindCommand \u003d (FindCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" return predicate.equals(otherFindCommand.predicate);","lastModifiedDate":"2023-07-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" .add(\"predicate\", predicate)","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22"}],"authorContributionMap":{"chenyixin0":6,"Jawad280":3,"-":50}},{"path":"src/main/java/seedu/address/logic/commands/ListCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * Lists all persons in the address book to the user.","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2016-09-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"list\";","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Listed all persons\";","lastModifiedDate":"2016-09-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":22,"author":{"gitId":"Jawad280"},"content":" return new CommandResult(MESSAGE_SUCCESS, false, false);","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"Jawad280":1,"-":23}},{"path":"src/main/java/seedu/address/logic/commands/ViewCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Jawad280"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-02-26"},{"lineNumber":2,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":3,"author":{"gitId":"Jawad280"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-02-26"},{"lineNumber":4,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":5,"author":{"gitId":"Jawad280"},"content":"import java.util.List;","lastModifiedDate":"2024-02-26"},{"lineNumber":6,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":7,"author":{"gitId":"Jawad280"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-02-26"},{"lineNumber":8,"author":{"gitId":"Jawad280"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-02-26"},{"lineNumber":9,"author":{"gitId":"Jawad280"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-02-26"},{"lineNumber":10,"author":{"gitId":"Jawad280"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-02-26"},{"lineNumber":11,"author":{"gitId":"Jawad280"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-02-26"},{"lineNumber":12,"author":{"gitId":"Jawad280"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-02-26"},{"lineNumber":13,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":14,"author":{"gitId":"Jawad280"},"content":"/**","lastModifiedDate":"2024-02-26"},{"lineNumber":15,"author":{"gitId":"Jawad280"},"content":" * Views a person identified using it\u0027s displayed index from the address book.","lastModifiedDate":"2024-02-26"},{"lineNumber":16,"author":{"gitId":"Jawad280"},"content":" */","lastModifiedDate":"2024-02-26"},{"lineNumber":17,"author":{"gitId":"Jawad280"},"content":"public class ViewCommand extends Command {","lastModifiedDate":"2024-02-26"},{"lineNumber":18,"author":{"gitId":"Jawad280"},"content":" public static final String COMMAND_WORD \u003d \"view\";","lastModifiedDate":"2024-02-26"},{"lineNumber":19,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":20,"author":{"gitId":"Jawad280"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-02-26"},{"lineNumber":21,"author":{"gitId":"Jawad280"},"content":" + \": Views the person identified by the index number used in the displayed person list.\\n\"","lastModifiedDate":"2024-02-26"},{"lineNumber":22,"author":{"gitId":"Jawad280"},"content":" + \"Parameters: INDEX (must be a positive integer)\\n\"","lastModifiedDate":"2024-02-26"},{"lineNumber":23,"author":{"gitId":"Jawad280"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2024-02-26"},{"lineNumber":24,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":25,"author":{"gitId":"Jawad280"},"content":" public static final String MESSAGE_VIEW_PERSON_SUCCESS \u003d \"Viewing Person: %1$s\";","lastModifiedDate":"2024-02-26"},{"lineNumber":26,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":27,"author":{"gitId":"Jawad280"},"content":" private final Index targetIndex;","lastModifiedDate":"2024-02-26"},{"lineNumber":28,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":29,"author":{"gitId":"Jawad280"},"content":" public ViewCommand(Index targetIndex) {","lastModifiedDate":"2024-02-26"},{"lineNumber":30,"author":{"gitId":"Jawad280"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2024-02-26"},{"lineNumber":31,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":32,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":33,"author":{"gitId":"Jawad280"},"content":" @Override","lastModifiedDate":"2024-02-26"},{"lineNumber":34,"author":{"gitId":"Jawad280"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-02-26"},{"lineNumber":35,"author":{"gitId":"Jawad280"},"content":" requireNonNull(model);","lastModifiedDate":"2024-02-26"},{"lineNumber":36,"author":{"gitId":"Jawad280"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-02-26"},{"lineNumber":37,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":38,"author":{"gitId":"Jawad280"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-02-26"},{"lineNumber":39,"author":{"gitId":"Jawad280"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-02-26"},{"lineNumber":40,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":41,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":42,"author":{"gitId":"Jawad280"},"content":" Person personToView \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2024-02-26"},{"lineNumber":43,"author":{"gitId":"Jawad280"},"content":" return new CommandResult(","lastModifiedDate":"2024-02-26"},{"lineNumber":44,"author":{"gitId":"Jawad280"},"content":" String.format(MESSAGE_VIEW_PERSON_SUCCESS, Messages.format(personToView)),","lastModifiedDate":"2024-02-26"},{"lineNumber":45,"author":{"gitId":"Jawad280"},"content":" personToView);","lastModifiedDate":"2024-02-26"},{"lineNumber":46,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":47,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":48,"author":{"gitId":"Jawad280"},"content":" @Override","lastModifiedDate":"2024-02-26"},{"lineNumber":49,"author":{"gitId":"Jawad280"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-02-26"},{"lineNumber":50,"author":{"gitId":"Jawad280"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-02-26"},{"lineNumber":51,"author":{"gitId":"Jawad280"},"content":" return true;","lastModifiedDate":"2024-02-26"},{"lineNumber":52,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":53,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":54,"author":{"gitId":"Jawad280"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-02-26"},{"lineNumber":55,"author":{"gitId":"Jawad280"},"content":" if (!(other instanceof ViewCommand)) {","lastModifiedDate":"2024-02-26"},{"lineNumber":56,"author":{"gitId":"Jawad280"},"content":" return false;","lastModifiedDate":"2024-02-26"},{"lineNumber":57,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":58,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":59,"author":{"gitId":"Jawad280"},"content":" ViewCommand otherViewCommand \u003d (ViewCommand) other;","lastModifiedDate":"2024-02-26"},{"lineNumber":60,"author":{"gitId":"Jawad280"},"content":" return targetIndex.equals(otherViewCommand.targetIndex);","lastModifiedDate":"2024-02-26"},{"lineNumber":61,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":62,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":63,"author":{"gitId":"Jawad280"},"content":" @Override","lastModifiedDate":"2024-02-26"},{"lineNumber":64,"author":{"gitId":"Jawad280"},"content":" public String toString() {","lastModifiedDate":"2024-02-26"},{"lineNumber":65,"author":{"gitId":"Jawad280"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-02-26"},{"lineNumber":66,"author":{"gitId":"Jawad280"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2024-02-26"},{"lineNumber":67,"author":{"gitId":"Jawad280"},"content":" .toString();","lastModifiedDate":"2024-02-26"},{"lineNumber":68,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":69,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-02-26"}],"authorContributionMap":{"Jawad280":69}},{"path":"src/main/java/seedu/address/logic/commands/exceptions/CommandException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands.exceptions;","lastModifiedDate":"2017-02-05"},{"lineNumber":2,"author":{"gitId":"eunrcn"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":" * Represents an error which occurs during execution of a {@link Command}.","lastModifiedDate":"2017-02-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"public class CommandException extends Exception {","lastModifiedDate":"2017-02-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":" public CommandException(String message) {","lastModifiedDate":"2017-02-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":" super(message);","lastModifiedDate":"2017-02-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":12,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * Constructs a new {@code CommandException} with the specified detail {@code message} and {@code cause}.","lastModifiedDate":"2018-08-06"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public CommandException(String message, Throwable cause) {","lastModifiedDate":"2018-08-06"},{"lineNumber":16,"author":{"gitId":"-"},"content":" super(message, cause);","lastModifiedDate":"2018-08-06"},{"lineNumber":17,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05"}],"authorContributionMap":{"eunrcn":1,"-":17}},{"path":"src/main/java/seedu/address/logic/parser/AddCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-02-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-02-05"},{"lineNumber":6,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_INTERN_DURATION;","lastModifiedDate":"2024-02-25"},{"lineNumber":7,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_INTERVIEW_DATE;","lastModifiedDate":"2024-02-25"},{"lineNumber":8,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_JOB_DESCRIPTION;","lastModifiedDate":"2024-02-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-02-05"},{"lineNumber":11,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SALARY;","lastModifiedDate":"2024-02-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-02-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-02-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-02-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-02-25"},{"lineNumber":20,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.InternDuration;","lastModifiedDate":"2024-02-25"},{"lineNumber":21,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.InterviewDate;","lastModifiedDate":"2024-02-25"},{"lineNumber":22,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.JobDescription;","lastModifiedDate":"2024-02-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-02-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-02-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-02-25"},{"lineNumber":26,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.Salary;","lastModifiedDate":"2024-02-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-17"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":40,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":41,"author":{"gitId":"ashleygoh1"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_TAG,","lastModifiedDate":"2024-02-25"},{"lineNumber":42,"author":{"gitId":"ashleygoh1"},"content":" PREFIX_JOB_DESCRIPTION, PREFIX_INTERVIEW_DATE, PREFIX_INTERN_DURATION, PREFIX_SALARY);","lastModifiedDate":"2024-02-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":44,"author":{"gitId":"ashleygoh1"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_TAG,","lastModifiedDate":"2024-02-26"},{"lineNumber":45,"author":{"gitId":"ashleygoh1"},"content":" PREFIX_JOB_DESCRIPTION, PREFIX_INTERN_DURATION, PREFIX_SALARY)","lastModifiedDate":"2024-02-26"},{"lineNumber":46,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":50,"author":{"gitId":"ashleygoh1"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-02-26"},{"lineNumber":51,"author":{"gitId":"ashleygoh1"},"content":" PREFIX_TAG, PREFIX_JOB_DESCRIPTION, PREFIX_INTERVIEW_DATE, PREFIX_INTERN_DURATION,","lastModifiedDate":"2024-02-26"},{"lineNumber":52,"author":{"gitId":"ashleygoh1"},"content":" PREFIX_SALARY);","lastModifiedDate":"2024-02-26"},{"lineNumber":53,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":54,"author":{"gitId":"-"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":55,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":57,"author":{"gitId":"ashleygoh1"},"content":" Address address;","lastModifiedDate":"2024-02-26"},{"lineNumber":58,"author":{"gitId":"ashleygoh1"},"content":" if (argMultimap.getValue(PREFIX_ADDRESS).isPresent()) {","lastModifiedDate":"2024-02-26"},{"lineNumber":59,"author":{"gitId":"ashleygoh1"},"content":" try {","lastModifiedDate":"2024-02-26"},{"lineNumber":60,"author":{"gitId":"ashleygoh1"},"content":" address \u003d ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get());","lastModifiedDate":"2024-02-26"},{"lineNumber":61,"author":{"gitId":"ashleygoh1"},"content":" } catch (ParseException e) {","lastModifiedDate":"2024-02-26"},{"lineNumber":62,"author":{"gitId":"ashleygoh1"},"content":" throw new ParseException(\"Error parsing address: \" + e.getMessage());","lastModifiedDate":"2024-02-26"},{"lineNumber":63,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":64,"author":{"gitId":"ashleygoh1"},"content":" } else {","lastModifiedDate":"2024-02-26"},{"lineNumber":65,"author":{"gitId":"ashleygoh1"},"content":" address \u003d new Address(\"\"); // Provide a default empty address if not provided","lastModifiedDate":"2024-02-26"},{"lineNumber":66,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":67,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":68,"author":{"gitId":"ashleygoh1"},"content":" Tag tag \u003d ParserUtil.parseTag(argMultimap.getValue(PREFIX_TAG).get());","lastModifiedDate":"2024-02-25"},{"lineNumber":69,"author":{"gitId":"ashleygoh1"},"content":" JobDescription jobDescription \u003d ParserUtil.parseJobDescription(","lastModifiedDate":"2024-02-25"},{"lineNumber":70,"author":{"gitId":"ashleygoh1"},"content":" argMultimap.getValue(PREFIX_JOB_DESCRIPTION).get());","lastModifiedDate":"2024-02-25"},{"lineNumber":71,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":72,"author":{"gitId":"ashleygoh1"},"content":" InterviewDate interviewDate \u003d new InterviewDate(null);","lastModifiedDate":"2024-02-26"},{"lineNumber":73,"author":{"gitId":"ashleygoh1"},"content":" if (argMultimap.getValue(PREFIX_INTERVIEW_DATE).isPresent()) {","lastModifiedDate":"2024-02-26"},{"lineNumber":74,"author":{"gitId":"ashleygoh1"},"content":" try {","lastModifiedDate":"2024-02-26"},{"lineNumber":75,"author":{"gitId":"ashleygoh1"},"content":" String givenDate \u003d argMultimap.getValue(PREFIX_INTERVIEW_DATE).get();","lastModifiedDate":"2024-02-26"},{"lineNumber":76,"author":{"gitId":"ashleygoh1"},"content":" if (!givenDate.isEmpty()) {","lastModifiedDate":"2024-02-26"},{"lineNumber":77,"author":{"gitId":"ashleygoh1"},"content":" interviewDate \u003d ParserUtil.parseInterviewDate(givenDate);","lastModifiedDate":"2024-02-26"},{"lineNumber":78,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":79,"author":{"gitId":"ashleygoh1"},"content":" } catch (ParseException e) {","lastModifiedDate":"2024-02-26"},{"lineNumber":80,"author":{"gitId":"ashleygoh1"},"content":" throw new ParseException(\"Error parsing interview date: \" + e.getMessage());","lastModifiedDate":"2024-02-26"},{"lineNumber":81,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":82,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":83,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":84,"author":{"gitId":"ashleygoh1"},"content":" InternDuration internDuration \u003d ParserUtil.parseInternDuration(","lastModifiedDate":"2024-02-25"},{"lineNumber":85,"author":{"gitId":"ashleygoh1"},"content":" argMultimap.getValue(PREFIX_INTERN_DURATION).get());","lastModifiedDate":"2024-02-25"},{"lineNumber":86,"author":{"gitId":"ashleygoh1"},"content":" Salary salary \u003d ParserUtil.parseSalary(argMultimap.getValue(PREFIX_SALARY).get());","lastModifiedDate":"2024-02-25"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":88,"author":{"gitId":"ashleygoh1"},"content":" Person person \u003d new Person(name, phone, email, address, tag,","lastModifiedDate":"2024-02-25"},{"lineNumber":89,"author":{"gitId":"ashleygoh1"},"content":" jobDescription, interviewDate, internDuration, salary);","lastModifiedDate":"2024-02-25"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":91,"author":{"gitId":"-"},"content":" return new AddCommand(person);","lastModifiedDate":"2017-03-17"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":94,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17"},{"lineNumber":97,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17"},{"lineNumber":98,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17"},{"lineNumber":99,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":102,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05"}],"authorContributionMap":{"ashleygoh1":47,"-":55}},{"path":"src/main/java/seedu/address/logic/parser/AddressBookParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-07-29"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-07-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2024-02-29"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2017-01-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2024-03-01"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2024-02-29"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2024-02-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2024-02-29"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2024-02-26"},{"lineNumber":20,"author":{"gitId":"Jawad280"},"content":"import seedu.address.logic.commands.ViewCommand;","lastModifiedDate":"2024-02-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":42,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":50,"author":{"gitId":"-"},"content":" // Note to developers: Change the log level in config.json to enable lower level (i.e., FINE, FINER and lower)","lastModifiedDate":"2023-07-29"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":55,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2024-02-26"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2024-02-26"},{"lineNumber":61,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2024-02-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return new ListCommand();","lastModifiedDate":"2024-02-26"},{"lineNumber":63,"author":{"gitId":"minghowC"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-01"},{"lineNumber":64,"author":{"gitId":"minghowC"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2024-03-01"},{"lineNumber":65,"author":{"gitId":"Jawad280"},"content":" case ViewCommand.COMMAND_WORD:","lastModifiedDate":"2024-02-26"},{"lineNumber":66,"author":{"gitId":"Jawad280"},"content":" return new ViewCommandParser().parse(arguments);","lastModifiedDate":"2024-02-26"},{"lineNumber":67,"author":{"gitId":"eunrcn"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2024-02-28"},{"lineNumber":68,"author":{"gitId":"eunrcn"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2024-02-28"},{"lineNumber":69,"author":{"gitId":"ashleygoh1"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2024-02-27"},{"lineNumber":70,"author":{"gitId":"ashleygoh1"},"content":" return new ClearCommand();","lastModifiedDate":"2024-02-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2024-02-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2024-02-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2024-02-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2024-02-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26"},{"lineNumber":77,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29"},{"lineNumber":78,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"eunrcn":2,"minghowC":2,"Jawad280":3,"ashleygoh1":2,"-":73}},{"path":"src/main/java/seedu/address/logic/parser/CliSyntax.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11"},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":" /* Prefix definitions */","lastModifiedDate":"2017-02-11"},{"lineNumber":9,"author":{"gitId":"eunrcn"},"content":" public static final Prefix PREFIX_INDEX \u003d new Prefix(\"i/\");","lastModifiedDate":"2024-02-28"},{"lineNumber":10,"author":{"gitId":"ashleygoh1"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"c/\");","lastModifiedDate":"2024-02-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"p/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"e/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_ADDRESS \u003d new Prefix(\"a/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":14,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"t/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":15,"author":{"gitId":"ashleygoh1"},"content":" public static final Prefix PREFIX_JOB_DESCRIPTION \u003d new Prefix(\"jd/\");","lastModifiedDate":"2024-02-25"},{"lineNumber":16,"author":{"gitId":"ashleygoh1"},"content":" public static final Prefix PREFIX_INTERVIEW_DATE \u003d new Prefix(\"d/\");","lastModifiedDate":"2024-02-25"},{"lineNumber":17,"author":{"gitId":"ashleygoh1"},"content":" public static final Prefix PREFIX_INTERN_DURATION \u003d new Prefix(\"id/\");","lastModifiedDate":"2024-02-25"},{"lineNumber":18,"author":{"gitId":"ashleygoh1"},"content":" public static final Prefix PREFIX_SALARY \u003d new Prefix(\"s/\");","lastModifiedDate":"2024-02-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":20,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"eunrcn":1,"ashleygoh1":5,"-":14}},{"path":"src/main/java/seedu/address/logic/parser/EditCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-02-28"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-02-28"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-02-28"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-02-28"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-02-28"},{"lineNumber":7,"author":{"gitId":"eunrcn"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_INTERN_DURATION;","lastModifiedDate":"2024-02-28"},{"lineNumber":8,"author":{"gitId":"eunrcn"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_INTERVIEW_DATE;","lastModifiedDate":"2024-02-28"},{"lineNumber":9,"author":{"gitId":"eunrcn"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_JOB_DESCRIPTION;","lastModifiedDate":"2024-02-28"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-02-28"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-02-28"},{"lineNumber":12,"author":{"gitId":"eunrcn"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SALARY;","lastModifiedDate":"2024-02-28"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-02-28"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-02-28"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2024-02-28"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2024-02-28"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-02-28"},{"lineNumber":19,"author":{"gitId":"Jawad280"},"content":"import seedu.address.model.person.InterviewDate;","lastModifiedDate":"2024-02-29"},{"lineNumber":20,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2024-02-28"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new EditCommand object","lastModifiedDate":"2024-02-28"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-02-28"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class EditCommandParser implements Parser\u003cEditCommand\u003e {","lastModifiedDate":"2024-02-28"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-02-28"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the EditCommand","lastModifiedDate":"2024-02-28"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * and returns an EditCommand object for execution.","lastModifiedDate":"2024-02-28"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-02-28"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-02-28"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public EditCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-02-28"},{"lineNumber":33,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2024-02-28"},{"lineNumber":34,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-02-28"},{"lineNumber":35,"author":{"gitId":"eunrcn"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_TAG,","lastModifiedDate":"2024-02-28"},{"lineNumber":36,"author":{"gitId":"eunrcn"},"content":" PREFIX_JOB_DESCRIPTION, PREFIX_INTERVIEW_DATE, PREFIX_INTERN_DURATION, PREFIX_SALARY);","lastModifiedDate":"2024-02-28"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":38,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2024-02-28"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":40,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2024-02-28"},{"lineNumber":41,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2024-02-28"},{"lineNumber":42,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-02-28"},{"lineNumber":43,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-02-28"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":46,"author":{"gitId":"eunrcn"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-02-28"},{"lineNumber":47,"author":{"gitId":"eunrcn"},"content":" PREFIX_TAG, PREFIX_JOB_DESCRIPTION, PREFIX_INTERVIEW_DATE, PREFIX_INTERN_DURATION,","lastModifiedDate":"2024-02-28"},{"lineNumber":48,"author":{"gitId":"eunrcn"},"content":" PREFIX_SALARY);","lastModifiedDate":"2024-02-28"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":50,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2024-02-28"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":52,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2024-02-28"},{"lineNumber":53,"author":{"gitId":"-"},"content":" editPersonDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()));","lastModifiedDate":"2024-02-28"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":55,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2024-02-28"},{"lineNumber":56,"author":{"gitId":"-"},"content":" editPersonDescriptor.setPhone(ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get()));","lastModifiedDate":"2024-02-28"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":58,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2024-02-28"},{"lineNumber":59,"author":{"gitId":"-"},"content":" editPersonDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2024-02-28"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":61,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_ADDRESS).isPresent()) {","lastModifiedDate":"2024-02-28"},{"lineNumber":62,"author":{"gitId":"-"},"content":" editPersonDescriptor.setAddress(ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get()));","lastModifiedDate":"2024-02-28"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":64,"author":{"gitId":"eunrcn"},"content":" if (argMultimap.getValue(PREFIX_JOB_DESCRIPTION).isPresent()) {","lastModifiedDate":"2024-02-28"},{"lineNumber":65,"author":{"gitId":"Jawad280"},"content":" editPersonDescriptor.setJobDescription(","lastModifiedDate":"2024-02-29"},{"lineNumber":66,"author":{"gitId":"Jawad280"},"content":" ParserUtil.parseJobDescription(argMultimap.getValue(PREFIX_JOB_DESCRIPTION).get())","lastModifiedDate":"2024-02-29"},{"lineNumber":67,"author":{"gitId":"Jawad280"},"content":" );","lastModifiedDate":"2024-02-29"},{"lineNumber":68,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":69,"author":{"gitId":"eunrcn"},"content":" if (argMultimap.getValue(PREFIX_INTERVIEW_DATE).isPresent()) {","lastModifiedDate":"2024-02-28"},{"lineNumber":70,"author":{"gitId":"Jawad280"},"content":" String givenDate \u003d argMultimap.getValue(PREFIX_INTERVIEW_DATE).get();","lastModifiedDate":"2024-02-29"},{"lineNumber":71,"author":{"gitId":"Jawad280"},"content":" if (!givenDate.isEmpty()) {","lastModifiedDate":"2024-02-29"},{"lineNumber":72,"author":{"gitId":"Jawad280"},"content":" editPersonDescriptor.setInterviewDate(","lastModifiedDate":"2024-02-29"},{"lineNumber":73,"author":{"gitId":"Jawad280"},"content":" ParserUtil.parseInterviewDate(argMultimap.getValue(PREFIX_INTERVIEW_DATE).get())","lastModifiedDate":"2024-02-29"},{"lineNumber":74,"author":{"gitId":"Jawad280"},"content":" );","lastModifiedDate":"2024-02-29"},{"lineNumber":75,"author":{"gitId":"Jawad280"},"content":" } else {","lastModifiedDate":"2024-02-29"},{"lineNumber":76,"author":{"gitId":"Jawad280"},"content":" editPersonDescriptor.setInterviewDate(new InterviewDate(null));","lastModifiedDate":"2024-02-29"},{"lineNumber":77,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-02-29"},{"lineNumber":78,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":79,"author":{"gitId":"eunrcn"},"content":" if (argMultimap.getValue(PREFIX_INTERN_DURATION).isPresent()) {","lastModifiedDate":"2024-02-28"},{"lineNumber":80,"author":{"gitId":"Jawad280"},"content":" editPersonDescriptor.setInternDuration(","lastModifiedDate":"2024-02-29"},{"lineNumber":81,"author":{"gitId":"Jawad280"},"content":" ParserUtil.parseInternDuration(argMultimap.getValue(PREFIX_INTERN_DURATION).get())","lastModifiedDate":"2024-02-29"},{"lineNumber":82,"author":{"gitId":"Jawad280"},"content":" );","lastModifiedDate":"2024-02-29"},{"lineNumber":83,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":84,"author":{"gitId":"eunrcn"},"content":" if (argMultimap.getValue(PREFIX_SALARY).isPresent()) {","lastModifiedDate":"2024-02-28"},{"lineNumber":85,"author":{"gitId":"eunrcn"},"content":" editPersonDescriptor.setSalary(ParserUtil.parseSalary(argMultimap.getValue(PREFIX_SALARY).get()));","lastModifiedDate":"2024-02-28"},{"lineNumber":86,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":87,"author":{"gitId":"eunrcn"},"content":" if (argMultimap.getValue(PREFIX_TAG).isPresent()) {","lastModifiedDate":"2024-02-28"},{"lineNumber":88,"author":{"gitId":"Jawad280"},"content":" editPersonDescriptor.setTag(ParserUtil.parseTag(argMultimap.getValue(PREFIX_TAG).get()));","lastModifiedDate":"2024-02-29"},{"lineNumber":89,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":90,"author":{"gitId":"-"},"content":" if (!editPersonDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2024-02-28"},{"lineNumber":91,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2024-02-28"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":95,"author":{"gitId":"eunrcn"},"content":" return new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2024-02-28"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":97,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-02-28"}],"authorContributionMap":{"eunrcn":22,"Jawad280":16,"-":59}},{"path":"src/main/java/seedu/address/logic/parser/ParserUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-02-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-02-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-02-25"},{"lineNumber":10,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.InternDuration;","lastModifiedDate":"2024-02-25"},{"lineNumber":11,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.InterviewDate;","lastModifiedDate":"2024-02-25"},{"lineNumber":12,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.JobDescription;","lastModifiedDate":"2024-02-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-02-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-02-25"},{"lineNumber":15,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.Salary;","lastModifiedDate":"2024-02-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-02-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02"},{"lineNumber":24,"author":{"gitId":"ashleygoh1"},"content":" public static final String MESSAGE_INVALID_NUMBER_OF_PEOPLE \u003d","lastModifiedDate":"2024-02-25"},{"lineNumber":25,"author":{"gitId":"ashleygoh1"},"content":" \"Number of people is not a non-zero unsigned integer.\";","lastModifiedDate":"2024-02-25"},{"lineNumber":26,"author":{"gitId":"ashleygoh1"},"content":" public static final String MESSAGE_INVALID_DATE_TIME_FORMAT \u003d","lastModifiedDate":"2024-02-25"},{"lineNumber":27,"author":{"gitId":"ashleygoh1"},"content":" \"Date time is wrongly formatted. You need to input a date in yyyy-mm-dd or dd-mm-yyyy \"","lastModifiedDate":"2024-02-25"},{"lineNumber":28,"author":{"gitId":"ashleygoh1"},"content":" + \"format and a time in HH:mm or HHmm (24hr clock) format (eg: 1800 or 18:00 for 6 pm). \"","lastModifiedDate":"2024-02-25"},{"lineNumber":29,"author":{"gitId":"ashleygoh1"},"content":" + \"You can choose to entire enter a date first or time first in any of the formats mentioned\";","lastModifiedDate":"2024-02-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02"},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2017-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":37,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02"},{"lineNumber":39,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":41,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29"},{"lineNumber":47,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":51,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29"},{"lineNumber":52,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":54,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":56,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":62,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":66,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30"},{"lineNumber":67,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":68,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":69,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","lastModifiedDate":"2017-05-30"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":74,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":75,"author":{"gitId":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30"},{"lineNumber":76,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":77,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":79,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":81,"author":{"gitId":"-"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":82,"author":{"gitId":"-"},"content":" return new Address(trimmedAddress);","lastModifiedDate":"2017-05-30"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":88,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":92,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30"},{"lineNumber":93,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":94,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":95,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":97,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","lastModifiedDate":"2017-05-30"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":100,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":103,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":104,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":105,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":106,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":107,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30"},{"lineNumber":108,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":109,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":110,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":112,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","lastModifiedDate":"2017-05-30"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":115,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":116,"author":{"gitId":"ashleygoh1"},"content":" * Parses a {@code String jobDescription} into an {@code jobDescription}.","lastModifiedDate":"2024-02-25"},{"lineNumber":117,"author":{"gitId":"ashleygoh1"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-02-25"},{"lineNumber":118,"author":{"gitId":"ashleygoh1"},"content":" *","lastModifiedDate":"2024-02-25"},{"lineNumber":119,"author":{"gitId":"ashleygoh1"},"content":" * @throws ParseException if the given {@code jobDescription} is invalid.","lastModifiedDate":"2024-02-25"},{"lineNumber":120,"author":{"gitId":"ashleygoh1"},"content":" */","lastModifiedDate":"2024-02-25"},{"lineNumber":121,"author":{"gitId":"ashleygoh1"},"content":" public static JobDescription parseJobDescription(String jobDescription) throws ParseException {","lastModifiedDate":"2024-02-25"},{"lineNumber":122,"author":{"gitId":"ashleygoh1"},"content":" requireNonNull(jobDescription);","lastModifiedDate":"2024-02-25"},{"lineNumber":123,"author":{"gitId":"ashleygoh1"},"content":" String trimmedJobDescription \u003d jobDescription.trim();","lastModifiedDate":"2024-02-25"},{"lineNumber":124,"author":{"gitId":"ashleygoh1"},"content":" if (!JobDescription.isValidJobDescription(trimmedJobDescription)) {","lastModifiedDate":"2024-02-25"},{"lineNumber":125,"author":{"gitId":"ashleygoh1"},"content":" throw new ParseException(JobDescription.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-25"},{"lineNumber":126,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":127,"author":{"gitId":"ashleygoh1"},"content":" return new JobDescription(trimmedJobDescription);","lastModifiedDate":"2024-02-25"},{"lineNumber":128,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":129,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":130,"author":{"gitId":"ashleygoh1"},"content":" /**","lastModifiedDate":"2024-02-25"},{"lineNumber":131,"author":{"gitId":"ashleygoh1"},"content":" * Parses {@code dateTime} into a {@code LocalDateTime} object.","lastModifiedDate":"2024-02-25"},{"lineNumber":132,"author":{"gitId":"ashleygoh1"},"content":" * @throws ParseException if {@code dateTime} is of invalid format.","lastModifiedDate":"2024-02-25"},{"lineNumber":133,"author":{"gitId":"ashleygoh1"},"content":" */","lastModifiedDate":"2024-02-25"},{"lineNumber":134,"author":{"gitId":"ashleygoh1"},"content":" public static InterviewDate parseInterviewDate(String interviewDate) throws ParseException {","lastModifiedDate":"2024-02-25"},{"lineNumber":135,"author":{"gitId":"ashleygoh1"},"content":" String trimmedDateTime \u003d interviewDate.trim();","lastModifiedDate":"2024-02-25"},{"lineNumber":136,"author":{"gitId":"ashleygoh1"},"content":" return new InterviewDate(trimmedDateTime);","lastModifiedDate":"2024-02-25"},{"lineNumber":137,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":138,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":139,"author":{"gitId":"ashleygoh1"},"content":" /**","lastModifiedDate":"2024-02-25"},{"lineNumber":140,"author":{"gitId":"ashleygoh1"},"content":" * Parses a {@code String internDuration} into an {@code internDuration}.","lastModifiedDate":"2024-02-25"},{"lineNumber":141,"author":{"gitId":"ashleygoh1"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-02-25"},{"lineNumber":142,"author":{"gitId":"ashleygoh1"},"content":" *","lastModifiedDate":"2024-02-25"},{"lineNumber":143,"author":{"gitId":"ashleygoh1"},"content":" * @throws ParseException if the given {@code internDuration} is invalid.","lastModifiedDate":"2024-02-25"},{"lineNumber":144,"author":{"gitId":"ashleygoh1"},"content":" */","lastModifiedDate":"2024-02-25"},{"lineNumber":145,"author":{"gitId":"ashleygoh1"},"content":" public static InternDuration parseInternDuration(String internDuration) throws ParseException {","lastModifiedDate":"2024-02-25"},{"lineNumber":146,"author":{"gitId":"ashleygoh1"},"content":" String trimmedInternDuration \u003d internDuration.trim();","lastModifiedDate":"2024-02-25"},{"lineNumber":147,"author":{"gitId":"ashleygoh1"},"content":" if (!InternDuration.isValidInternDuration(trimmedInternDuration)) {","lastModifiedDate":"2024-02-25"},{"lineNumber":148,"author":{"gitId":"ashleygoh1"},"content":" throw new ParseException(InternDuration.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-25"},{"lineNumber":149,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":150,"author":{"gitId":"ashleygoh1"},"content":" return new InternDuration(trimmedInternDuration);","lastModifiedDate":"2024-02-25"},{"lineNumber":151,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":152,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":153,"author":{"gitId":"ashleygoh1"},"content":" /**","lastModifiedDate":"2024-02-25"},{"lineNumber":154,"author":{"gitId":"ashleygoh1"},"content":" * Parses a {@code String salary} into an {@code salary}.","lastModifiedDate":"2024-02-25"},{"lineNumber":155,"author":{"gitId":"ashleygoh1"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-02-25"},{"lineNumber":156,"author":{"gitId":"ashleygoh1"},"content":" *","lastModifiedDate":"2024-02-25"},{"lineNumber":157,"author":{"gitId":"ashleygoh1"},"content":" * @throws ParseException if the given {@code salary} is invalid.","lastModifiedDate":"2024-02-25"},{"lineNumber":158,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":159,"author":{"gitId":"ashleygoh1"},"content":" public static Salary parseSalary(String salary) throws ParseException {","lastModifiedDate":"2024-02-25"},{"lineNumber":160,"author":{"gitId":"ashleygoh1"},"content":" String trimmedSalary \u003d salary.trim();","lastModifiedDate":"2024-02-25"},{"lineNumber":161,"author":{"gitId":"ashleygoh1"},"content":" if (!Salary.isValidSalary(trimmedSalary)) {","lastModifiedDate":"2024-02-25"},{"lineNumber":162,"author":{"gitId":"ashleygoh1"},"content":" throw new ParseException(Salary.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-25"},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":164,"author":{"gitId":"ashleygoh1"},"content":" return new Salary(trimmedSalary);","lastModifiedDate":"2024-02-25"},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":166,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"ashleygoh1":57,"-":109}},{"path":"src/main/java/seedu/address/logic/parser/ViewCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Jawad280"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-02-26"},{"lineNumber":2,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":3,"author":{"gitId":"Jawad280"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-02-26"},{"lineNumber":4,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":5,"author":{"gitId":"Jawad280"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-02-26"},{"lineNumber":6,"author":{"gitId":"Jawad280"},"content":"import seedu.address.logic.commands.ViewCommand;","lastModifiedDate":"2024-02-26"},{"lineNumber":7,"author":{"gitId":"Jawad280"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-02-26"},{"lineNumber":8,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":9,"author":{"gitId":"Jawad280"},"content":"/**","lastModifiedDate":"2024-02-26"},{"lineNumber":10,"author":{"gitId":"Jawad280"},"content":" * Parses input arguments and creates a new ViewCommand object","lastModifiedDate":"2024-02-26"},{"lineNumber":11,"author":{"gitId":"Jawad280"},"content":" */","lastModifiedDate":"2024-02-26"},{"lineNumber":12,"author":{"gitId":"Jawad280"},"content":"public class ViewCommandParser {","lastModifiedDate":"2024-02-26"},{"lineNumber":13,"author":{"gitId":"Jawad280"},"content":" /**","lastModifiedDate":"2024-02-26"},{"lineNumber":14,"author":{"gitId":"Jawad280"},"content":" * Parses the given {@code String} of arguments in the context of the ViewCommand","lastModifiedDate":"2024-02-26"},{"lineNumber":15,"author":{"gitId":"Jawad280"},"content":" * and returns a ViewCommand object for execution.","lastModifiedDate":"2024-02-26"},{"lineNumber":16,"author":{"gitId":"Jawad280"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-02-26"},{"lineNumber":17,"author":{"gitId":"Jawad280"},"content":" */","lastModifiedDate":"2024-02-26"},{"lineNumber":18,"author":{"gitId":"Jawad280"},"content":" public ViewCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-02-26"},{"lineNumber":19,"author":{"gitId":"Jawad280"},"content":" try {","lastModifiedDate":"2024-02-26"},{"lineNumber":20,"author":{"gitId":"Jawad280"},"content":" Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2024-02-26"},{"lineNumber":21,"author":{"gitId":"Jawad280"},"content":" return new ViewCommand(index);","lastModifiedDate":"2024-02-26"},{"lineNumber":22,"author":{"gitId":"Jawad280"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-02-26"},{"lineNumber":23,"author":{"gitId":"Jawad280"},"content":" throw new ParseException(","lastModifiedDate":"2024-02-26"},{"lineNumber":24,"author":{"gitId":"Jawad280"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, ViewCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-02-26"},{"lineNumber":25,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":26,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":27,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-02-26"}],"authorContributionMap":{"Jawad280":27}},{"path":"src/main/java/seedu/address/model/AddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.UniquePersonList;","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * Wraps all data at the address-book level","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Duplicates are not allowed (by .isSamePerson comparison)","lastModifiedDate":"2018-04-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class AddressBook implements ReadOnlyAddressBook {","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private final UniquePersonList persons;","lastModifiedDate":"2016-08-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * The \u0027unusual\u0027 code block below is a non-static initialization block, sometimes used to avoid duplication","lastModifiedDate":"2019-05-11"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * between constructors. See https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html","lastModifiedDate":"2016-10-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Note that non-static init blocks are not recommended to use. There are other ways to avoid duplication","lastModifiedDate":"2016-10-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * among constructors.","lastModifiedDate":"2016-10-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" {","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" persons \u003d new UniquePersonList();","lastModifiedDate":"2016-08-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public AddressBook() {}","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Creates an AddressBook using the Persons in the {@code toBeCopied}","lastModifiedDate":"2018-03-29"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public AddressBook(ReadOnlyAddressBook toBeCopied) {","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" this();","lastModifiedDate":"2016-12-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" resetData(toBeCopied);","lastModifiedDate":"2016-12-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":41,"author":{"gitId":"-"},"content":" //// list overwrite operations","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Replaces the contents of the person list with {@code persons}.","lastModifiedDate":"2018-08-07"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * {@code persons} must not contain duplicate persons.","lastModifiedDate":"2018-08-07"},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public void setPersons(List\u003cPerson\u003e persons) {","lastModifiedDate":"2018-08-07"},{"lineNumber":48,"author":{"gitId":"-"},"content":" this.persons.setPersons(persons);","lastModifiedDate":"2016-10-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Resets the existing data of this {@code AddressBook} with {@code newData}.","lastModifiedDate":"2017-08-16"},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void resetData(ReadOnlyAddressBook newData) {","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":" requireNonNull(newData);","lastModifiedDate":"2017-05-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" setPersons(newData.getPersonList());","lastModifiedDate":"2018-03-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" //// person-level operations","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * Returns true if a person with the same identity as {@code person} exists in the address book.","lastModifiedDate":"2018-08-06"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06"},{"lineNumber":66,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return persons.contains(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-09-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * The person must not already exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void addPerson(Person p) {","lastModifiedDate":"2018-08-07"},{"lineNumber":75,"author":{"gitId":"-"},"content":" persons.add(p);","lastModifiedDate":"2018-03-29"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Replaces the given person {@code target} in the list with {@code editedPerson}.","lastModifiedDate":"2018-01-10"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * The person identity of {@code editedPerson} must not be the same as another existing person in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":82,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":84,"author":{"gitId":"-"},"content":" requireNonNull(editedPerson);","lastModifiedDate":"2018-01-10"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" persons.setPerson(target, editedPerson);","lastModifiedDate":"2018-03-29"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":89,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * Removes {@code key} from this {@code AddressBook}.","lastModifiedDate":"2017-08-16"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * {@code key} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":92,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void removePerson(Person key) {","lastModifiedDate":"2018-08-07"},{"lineNumber":94,"author":{"gitId":"-"},"content":" persons.remove(key);","lastModifiedDate":"2018-02-28"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":" //// util methods","lastModifiedDate":"2016-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":" .add(\"persons\", persons)","lastModifiedDate":"2019-02-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":108,"author":{"gitId":"Jawad280"},"content":" ObservableList\u003cPerson\u003e personList \u003d persons.asUnmodifiableObservableList();","lastModifiedDate":"2024-02-26"},{"lineNumber":109,"author":{"gitId":"Jawad280"},"content":" // Sort the list","lastModifiedDate":"2024-02-26"},{"lineNumber":110,"author":{"gitId":"Jawad280"},"content":" personList \u003d personList.sorted();","lastModifiedDate":"2024-02-26"},{"lineNumber":111,"author":{"gitId":"Jawad280"},"content":" return personList;","lastModifiedDate":"2024-02-26"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-01"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-01"},{"lineNumber":114,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":115,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-21"},{"lineNumber":116,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":121,"author":{"gitId":"-"},"content":" if (!(other instanceof AddressBook)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":122,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":" AddressBook otherAddressBook \u003d (AddressBook) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":126,"author":{"gitId":"-"},"content":" return persons.equals(otherAddressBook.persons);","lastModifiedDate":"2023-07-13"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":129,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":130,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-21"},{"lineNumber":131,"author":{"gitId":"-"},"content":" return persons.hashCode();","lastModifiedDate":"2018-03-29"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":133,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"Jawad280":4,"-":129}},{"path":"src/main/java/seedu/address/model/Model.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":7,"author":{"gitId":"chenyixin0"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2024-02-29"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * The API of the Model component.","lastModifiedDate":"2016-09-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public interface Model {","lastModifiedDate":"2016-09-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":" /** {@code Predicate} that always evaluate to true */","lastModifiedDate":"2017-08-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":" Predicate\u003cPerson\u003e PREDICATE_SHOW_ALL_PERSONS \u003d unused -\u003e true;","lastModifiedDate":"2018-01-10"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Replaces user prefs data with the data in {@code userPrefs}.","lastModifiedDate":"2018-12-06"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":" void setUserPrefs(ReadOnlyUserPrefs userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Returns the user prefs.","lastModifiedDate":"2018-11-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" ReadOnlyUserPrefs getUserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" void setAddressBookFilePath(Path addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Replaces address book data with the data in {@code addressBook}.","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" void setAddressBook(ReadOnlyAddressBook addressBook);","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":" /** Returns the AddressBook */","lastModifiedDate":"2016-09-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2016-09-25"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Returns true if a person with the same identity as {@code person} exists in the address book.","lastModifiedDate":"2018-08-06"},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":59,"author":{"gitId":"-"},"content":" boolean hasPerson(Person person);","lastModifiedDate":"2018-08-06"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Deletes the given person.","lastModifiedDate":"2018-08-07"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * The person must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":65,"author":{"gitId":"-"},"content":" void deletePerson(Person target);","lastModifiedDate":"2018-08-07"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":67,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":68,"author":{"gitId":"-"},"content":" * Adds the given person.","lastModifiedDate":"2018-08-07"},{"lineNumber":69,"author":{"gitId":"-"},"content":" * {@code person} must not already exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":70,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":71,"author":{"gitId":"-"},"content":" void addPerson(Person person);","lastModifiedDate":"2018-08-07"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":73,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * Replaces the given person {@code target} with {@code editedPerson}.","lastModifiedDate":"2017-06-07"},{"lineNumber":75,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":76,"author":{"gitId":"-"},"content":" * The person identity of {@code editedPerson} must not be the same as another existing person in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":77,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" void setPerson(Person target, Person editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" /** Returns an unmodifiable view of the filtered person list */","lastModifiedDate":"2017-09-01"},{"lineNumber":81,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":83,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-05"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * Updates the filter of the filtered person list to filter by the given {@code predicate}.","lastModifiedDate":"2017-08-05"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2017-08-05"},{"lineNumber":86,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05"},{"lineNumber":87,"author":{"gitId":"-"},"content":" void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate);","lastModifiedDate":"2018-01-10"},{"lineNumber":88,"author":{"gitId":"Jawad280"},"content":" Person choosePersonToView(Predicate\u003cPerson\u003e predicate);","lastModifiedDate":"2024-02-26"},{"lineNumber":89,"author":{"gitId":"chenyixin0"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":90,"author":{"gitId":"chenyixin0"},"content":" FilteredList\u003cPerson\u003e generateNewFilteredPersonList(Predicate\u003cPerson\u003e predicate);","lastModifiedDate":"2024-02-29"},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"chenyixin0":3,"Jawad280":1,"-":87}},{"path":"src/main/java/seedu/address/model/ModelManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-08-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2016-08-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Represents the in-memory model of the address book data.","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class ModelManager implements Model {","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ModelManager.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final AddressBook addressBook;","lastModifiedDate":"2019-01-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final UserPrefs userPrefs;","lastModifiedDate":"2018-12-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final FilteredList\u003cPerson\u003e filteredPersons;","lastModifiedDate":"2018-01-10"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Initializes a ModelManager with the given addressBook and userPrefs.","lastModifiedDate":"2016-12-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public ModelManager(ReadOnlyAddressBook addressBook, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":" requireAllNonNull(addressBook, userPrefs);","lastModifiedDate":"2017-05-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" logger.fine(\"Initializing with address book: \" + addressBook + \" and user prefs \" + userPrefs);","lastModifiedDate":"2016-12-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" this.addressBook \u003d new AddressBook(addressBook);","lastModifiedDate":"2019-01-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":36,"author":{"gitId":"-"},"content":" filteredPersons \u003d new FilteredList\u003c\u003e(this.addressBook.getPersonList());","lastModifiedDate":"2019-01-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public ModelManager() {","lastModifiedDate":"2016-09-22"},{"lineNumber":40,"author":{"gitId":"-"},"content":" this(new AddressBook(), new UserPrefs());","lastModifiedDate":"2016-09-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d UserPrefs \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":47,"author":{"gitId":"-"},"content":" requireNonNull(userPrefs);","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" this.userPrefs.resetData(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return userPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return userPrefs.getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return userPrefs.getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d AddressBook \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook addressBook) {","lastModifiedDate":"2018-11-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" this.addressBook.resetData(addressBook);","lastModifiedDate":"2019-01-25"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2016-09-21"},{"lineNumber":87,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2019-01-25"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":92,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":93,"author":{"gitId":"-"},"content":" return addressBook.hasPerson(person);","lastModifiedDate":"2019-01-25"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-15"},{"lineNumber":98,"author":{"gitId":"-"},"content":" addressBook.removePerson(target);","lastModifiedDate":"2019-01-25"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":102,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":103,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2019-01-25"},{"lineNumber":104,"author":{"gitId":"-"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":109,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2017-06-07"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":" addressBook.setPerson(target, editedPerson);","lastModifiedDate":"2019-01-25"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Filtered Person List Accessors \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2016-10-12"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19"},{"lineNumber":117,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the list of {@code Person} backed by the internal list of","lastModifiedDate":"2018-01-10"},{"lineNumber":118,"author":{"gitId":"-"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2018-06-11"},{"lineNumber":119,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19"},{"lineNumber":120,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":121,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":122,"author":{"gitId":"-"},"content":" return filteredPersons;","lastModifiedDate":"2018-12-09"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":125,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":126,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10"},{"lineNumber":127,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05"},{"lineNumber":128,"author":{"gitId":"-"},"content":" filteredPersons.setPredicate(predicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":131,"author":{"gitId":"chenyixin0"},"content":" @Override","lastModifiedDate":"2024-02-29"},{"lineNumber":132,"author":{"gitId":"chenyixin0"},"content":" public FilteredList\u003cPerson\u003e generateNewFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2024-02-29"},{"lineNumber":133,"author":{"gitId":"chenyixin0"},"content":" requireNonNull(predicate);","lastModifiedDate":"2024-02-29"},{"lineNumber":134,"author":{"gitId":"chenyixin0"},"content":" return new FilteredList\u003c\u003e(filteredPersons, predicate);","lastModifiedDate":"2024-02-29"},{"lineNumber":135,"author":{"gitId":"chenyixin0"},"content":" //return filteredPersons;","lastModifiedDate":"2024-02-29"},{"lineNumber":136,"author":{"gitId":"chenyixin0"},"content":" }","lastModifiedDate":"2024-02-29"},{"lineNumber":137,"author":{"gitId":"chenyixin0"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":138,"author":{"gitId":"Jawad280"},"content":" @Override","lastModifiedDate":"2024-02-26"},{"lineNumber":139,"author":{"gitId":"Jawad280"},"content":" public Person choosePersonToView(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2024-02-26"},{"lineNumber":140,"author":{"gitId":"Jawad280"},"content":" requireNonNull(predicate);","lastModifiedDate":"2024-02-26"},{"lineNumber":141,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":142,"author":{"gitId":"Jawad280"},"content":" for (Person p : filteredPersons) {","lastModifiedDate":"2024-02-26"},{"lineNumber":143,"author":{"gitId":"Jawad280"},"content":" if (predicate.test(p)) {","lastModifiedDate":"2024-02-26"},{"lineNumber":144,"author":{"gitId":"Jawad280"},"content":" return p;","lastModifiedDate":"2024-02-26"},{"lineNumber":145,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":146,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":147,"author":{"gitId":"Jawad280"},"content":" return null;","lastModifiedDate":"2024-02-26"},{"lineNumber":148,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":150,"author":{"gitId":"chenyixin0"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":151,"author":{"gitId":"chenyixin0"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":152,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-31"},{"lineNumber":153,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13"},{"lineNumber":154,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":155,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31"},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":158,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31"},{"lineNumber":159,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":160,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-31"},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":163,"author":{"gitId":"-"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":164,"author":{"gitId":"-"},"content":" return addressBook.equals(otherModelManager.addressBook)","lastModifiedDate":"2023-07-13"},{"lineNumber":165,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13"},{"lineNumber":166,"author":{"gitId":"-"},"content":" \u0026\u0026 filteredPersons.equals(otherModelManager.filteredPersons);","lastModifiedDate":"2023-07-13"},{"lineNumber":167,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":168,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"chenyixin0":9,"Jawad280":11,"-":148}},{"path":"src/main/java/seedu/address/model/person/Address.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2016-08-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-02-26"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * Represents a Person\u0027s address in the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class Address {","lastModifiedDate":"2016-09-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Addresses can take any values, and it should not be blank\";","lastModifiedDate":"2024-02-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2024-02-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2024-02-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2024-02-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-02-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d \"[^\\\\s].*\";","lastModifiedDate":"2024-02-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public final String value;","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Constructs an {@code Address}.","lastModifiedDate":"2017-05-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * @param address A valid address.","lastModifiedDate":"2017-05-30"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public Address(String address) {","lastModifiedDate":"2017-05-30"},{"lineNumber":26,"author":{"gitId":"ashleygoh1"},"content":" if (address.isEmpty()) {","lastModifiedDate":"2024-02-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":" value \u003d address;","lastModifiedDate":"2018-08-14"},{"lineNumber":28,"author":{"gitId":"ashleygoh1"},"content":" } else {","lastModifiedDate":"2024-02-26"},{"lineNumber":29,"author":{"gitId":"ashleygoh1"},"content":" checkArgument(isValidAddress(address), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-26"},{"lineNumber":30,"author":{"gitId":"ashleygoh1"},"content":" value \u003d address;","lastModifiedDate":"2024-02-26"},{"lineNumber":31,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-02-26"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid email.","lastModifiedDate":"2024-02-26"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-02-26"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static boolean isValidAddress(String test) {","lastModifiedDate":"2024-02-26"},{"lineNumber":38,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-02-26"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" return value;","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" if (!(other instanceof Address)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" Address otherAddress \u003d (Address) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return value.equals(otherAddress.value);","lastModifiedDate":"2023-07-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return value.hashCode();","lastModifiedDate":"2016-08-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"ashleygoh1":5,"-":61}},{"path":"src/main/java/seedu/address/model/person/InternDuration.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ashleygoh1"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-02-25"},{"lineNumber":2,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":3,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-02-25"},{"lineNumber":4,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":5,"author":{"gitId":"ashleygoh1"},"content":"/**","lastModifiedDate":"2024-02-25"},{"lineNumber":6,"author":{"gitId":"ashleygoh1"},"content":" * Represents a Person\u0027s Intern Duration in the address book.","lastModifiedDate":"2024-02-25"},{"lineNumber":7,"author":{"gitId":"ashleygoh1"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidInternDuration(String)}","lastModifiedDate":"2024-02-25"},{"lineNumber":8,"author":{"gitId":"ashleygoh1"},"content":" */","lastModifiedDate":"2024-02-25"},{"lineNumber":9,"author":{"gitId":"ashleygoh1"},"content":"public class InternDuration {","lastModifiedDate":"2024-02-25"},{"lineNumber":10,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":11,"author":{"gitId":"ashleygoh1"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Intern Duration can take any values, and it should not be blank\";","lastModifiedDate":"2024-02-25"},{"lineNumber":12,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":13,"author":{"gitId":"ashleygoh1"},"content":" /*","lastModifiedDate":"2024-02-25"},{"lineNumber":14,"author":{"gitId":"ashleygoh1"},"content":" * The first character of the intern duration must not be a whitespace,","lastModifiedDate":"2024-02-25"},{"lineNumber":15,"author":{"gitId":"ashleygoh1"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2024-02-25"},{"lineNumber":16,"author":{"gitId":"ashleygoh1"},"content":" */","lastModifiedDate":"2024-02-25"},{"lineNumber":17,"author":{"gitId":"ashleygoh1"},"content":" public static final String VALIDATION_REGEX \u003d \"[^\\\\s].*\";","lastModifiedDate":"2024-02-25"},{"lineNumber":18,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":19,"author":{"gitId":"ashleygoh1"},"content":" public final String value;","lastModifiedDate":"2024-02-25"},{"lineNumber":20,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":21,"author":{"gitId":"ashleygoh1"},"content":" /**","lastModifiedDate":"2024-02-25"},{"lineNumber":22,"author":{"gitId":"ashleygoh1"},"content":" * Constructs an {@code internDuration}.","lastModifiedDate":"2024-02-25"},{"lineNumber":23,"author":{"gitId":"ashleygoh1"},"content":" *","lastModifiedDate":"2024-02-25"},{"lineNumber":24,"author":{"gitId":"ashleygoh1"},"content":" * @param internDuration A valid intern duration.","lastModifiedDate":"2024-02-25"},{"lineNumber":25,"author":{"gitId":"ashleygoh1"},"content":" */","lastModifiedDate":"2024-02-25"},{"lineNumber":26,"author":{"gitId":"ashleygoh1"},"content":" public InternDuration(String internDuration) {","lastModifiedDate":"2024-02-25"},{"lineNumber":27,"author":{"gitId":"ashleygoh1"},"content":" checkArgument(isValidInternDuration(internDuration), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-25"},{"lineNumber":28,"author":{"gitId":"ashleygoh1"},"content":" value \u003d internDuration;","lastModifiedDate":"2024-02-25"},{"lineNumber":29,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":30,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":31,"author":{"gitId":"ashleygoh1"},"content":" /**","lastModifiedDate":"2024-02-25"},{"lineNumber":32,"author":{"gitId":"ashleygoh1"},"content":" * Returns true if a given string is a valid intern duration.","lastModifiedDate":"2024-02-25"},{"lineNumber":33,"author":{"gitId":"ashleygoh1"},"content":" */","lastModifiedDate":"2024-02-25"},{"lineNumber":34,"author":{"gitId":"ashleygoh1"},"content":" public static boolean isValidInternDuration(String test) {","lastModifiedDate":"2024-02-25"},{"lineNumber":35,"author":{"gitId":"ashleygoh1"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-02-25"},{"lineNumber":36,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":37,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":38,"author":{"gitId":"ashleygoh1"},"content":" @Override","lastModifiedDate":"2024-02-25"},{"lineNumber":39,"author":{"gitId":"ashleygoh1"},"content":" public String toString() {","lastModifiedDate":"2024-02-25"},{"lineNumber":40,"author":{"gitId":"ashleygoh1"},"content":" return value;","lastModifiedDate":"2024-02-25"},{"lineNumber":41,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":42,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":43,"author":{"gitId":"ashleygoh1"},"content":" @Override","lastModifiedDate":"2024-02-25"},{"lineNumber":44,"author":{"gitId":"ashleygoh1"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-02-25"},{"lineNumber":45,"author":{"gitId":"ashleygoh1"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-02-25"},{"lineNumber":46,"author":{"gitId":"ashleygoh1"},"content":" return true;","lastModifiedDate":"2024-02-25"},{"lineNumber":47,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":48,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":49,"author":{"gitId":"ashleygoh1"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-02-25"},{"lineNumber":50,"author":{"gitId":"ashleygoh1"},"content":" if (!(other instanceof InternDuration)) {","lastModifiedDate":"2024-02-25"},{"lineNumber":51,"author":{"gitId":"ashleygoh1"},"content":" return false;","lastModifiedDate":"2024-02-25"},{"lineNumber":52,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":53,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":54,"author":{"gitId":"ashleygoh1"},"content":" InternDuration otherInternDuration \u003d (InternDuration) other;","lastModifiedDate":"2024-02-25"},{"lineNumber":55,"author":{"gitId":"ashleygoh1"},"content":" return value.equals(otherInternDuration.value);","lastModifiedDate":"2024-02-25"},{"lineNumber":56,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":57,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":58,"author":{"gitId":"ashleygoh1"},"content":" @Override","lastModifiedDate":"2024-02-25"},{"lineNumber":59,"author":{"gitId":"ashleygoh1"},"content":" public int hashCode() {","lastModifiedDate":"2024-02-25"},{"lineNumber":60,"author":{"gitId":"ashleygoh1"},"content":" return value.hashCode();","lastModifiedDate":"2024-02-25"},{"lineNumber":61,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":62,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":63,"author":{"gitId":"ashleygoh1"},"content":"}","lastModifiedDate":"2024-02-25"}],"authorContributionMap":{"ashleygoh1":63}},{"path":"src/main/java/seedu/address/model/person/InterviewDate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ashleygoh1"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-02-25"},{"lineNumber":2,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":3,"author":{"gitId":"ashleygoh1"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-02-25"},{"lineNumber":4,"author":{"gitId":"ashleygoh1"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-25"},{"lineNumber":5,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":6,"author":{"gitId":"ashleygoh1"},"content":"/**","lastModifiedDate":"2024-02-25"},{"lineNumber":7,"author":{"gitId":"ashleygoh1"},"content":" * Represents a Person\u0027s interview date in the address book.","lastModifiedDate":"2024-02-26"},{"lineNumber":8,"author":{"gitId":"ashleygoh1"},"content":" */","lastModifiedDate":"2024-02-25"},{"lineNumber":9,"author":{"gitId":"ashleygoh1"},"content":"public class InterviewDate {","lastModifiedDate":"2024-02-25"},{"lineNumber":10,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":11,"author":{"gitId":"ashleygoh1"},"content":" public final LocalDateTime value;","lastModifiedDate":"2024-02-25"},{"lineNumber":12,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":13,"author":{"gitId":"ashleygoh1"},"content":" private DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"dd-MM-yyyy HHmm\");","lastModifiedDate":"2024-02-25"},{"lineNumber":14,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":15,"author":{"gitId":"ashleygoh1"},"content":" /**","lastModifiedDate":"2024-02-25"},{"lineNumber":16,"author":{"gitId":"ashleygoh1"},"content":" * Constructs an {@code interview date}.","lastModifiedDate":"2024-02-25"},{"lineNumber":17,"author":{"gitId":"ashleygoh1"},"content":" *","lastModifiedDate":"2024-02-25"},{"lineNumber":18,"author":{"gitId":"ashleygoh1"},"content":" * @param interviewDate A valid interview date.","lastModifiedDate":"2024-02-25"},{"lineNumber":19,"author":{"gitId":"ashleygoh1"},"content":" */","lastModifiedDate":"2024-02-25"},{"lineNumber":20,"author":{"gitId":"ashleygoh1"},"content":" public InterviewDate(String interviewDate) {","lastModifiedDate":"2024-02-25"},{"lineNumber":21,"author":{"gitId":"ashleygoh1"},"content":" if (interviewDate \u003d\u003d null) {","lastModifiedDate":"2024-02-26"},{"lineNumber":22,"author":{"gitId":"ashleygoh1"},"content":" value \u003d null;","lastModifiedDate":"2024-02-26"},{"lineNumber":23,"author":{"gitId":"ashleygoh1"},"content":" } else {","lastModifiedDate":"2024-02-26"},{"lineNumber":24,"author":{"gitId":"ashleygoh1"},"content":" value \u003d LocalDateTime.parse(interviewDate, formatter);","lastModifiedDate":"2024-02-25"},{"lineNumber":25,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":26,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":27,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":28,"author":{"gitId":"ashleygoh1"},"content":" @Override","lastModifiedDate":"2024-02-25"},{"lineNumber":29,"author":{"gitId":"ashleygoh1"},"content":" public String toString() {","lastModifiedDate":"2024-02-25"},{"lineNumber":30,"author":{"gitId":"ashleygoh1"},"content":" String str \u003d \"\";","lastModifiedDate":"2024-02-26"},{"lineNumber":31,"author":{"gitId":"ashleygoh1"},"content":" if (value !\u003d null) {","lastModifiedDate":"2024-02-26"},{"lineNumber":32,"author":{"gitId":"ashleygoh1"},"content":" str \u003d value.format(DateTimeFormatter.ofPattern(\"dd-MM-yyyy HHmm\"));","lastModifiedDate":"2024-02-26"},{"lineNumber":33,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":34,"author":{"gitId":"ashleygoh1"},"content":" return str;","lastModifiedDate":"2024-02-26"},{"lineNumber":35,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":36,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":37,"author":{"gitId":"ashleygoh1"},"content":" @Override","lastModifiedDate":"2024-02-25"},{"lineNumber":38,"author":{"gitId":"ashleygoh1"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-02-25"},{"lineNumber":39,"author":{"gitId":"ashleygoh1"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-02-25"},{"lineNumber":40,"author":{"gitId":"ashleygoh1"},"content":" return true;","lastModifiedDate":"2024-02-25"},{"lineNumber":41,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":42,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":43,"author":{"gitId":"ashleygoh1"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-02-25"},{"lineNumber":44,"author":{"gitId":"ashleygoh1"},"content":" // if (!(other instanceof InterviewDate)) {","lastModifiedDate":"2024-02-26"},{"lineNumber":45,"author":{"gitId":"ashleygoh1"},"content":" // return false;","lastModifiedDate":"2024-02-26"},{"lineNumber":46,"author":{"gitId":"ashleygoh1"},"content":" // }","lastModifiedDate":"2024-02-26"},{"lineNumber":47,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":48,"author":{"gitId":"ashleygoh1"},"content":" if (other \u003d\u003d null || getClass() !\u003d other.getClass()) {","lastModifiedDate":"2024-02-26"},{"lineNumber":49,"author":{"gitId":"ashleygoh1"},"content":" return false;","lastModifiedDate":"2024-02-26"},{"lineNumber":50,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":51,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":52,"author":{"gitId":"ashleygoh1"},"content":" InterviewDate otherInterviewDate \u003d (InterviewDate) other;","lastModifiedDate":"2024-02-25"},{"lineNumber":53,"author":{"gitId":"ashleygoh1"},"content":" if (value \u003d\u003d null) {","lastModifiedDate":"2024-02-26"},{"lineNumber":54,"author":{"gitId":"ashleygoh1"},"content":" return otherInterviewDate.value \u003d\u003d null;","lastModifiedDate":"2024-02-26"},{"lineNumber":55,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":56,"author":{"gitId":"ashleygoh1"},"content":" return value.equals(otherInterviewDate.value);","lastModifiedDate":"2024-02-25"},{"lineNumber":57,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":58,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":59,"author":{"gitId":"ashleygoh1"},"content":" @Override","lastModifiedDate":"2024-02-25"},{"lineNumber":60,"author":{"gitId":"ashleygoh1"},"content":" public int hashCode() {","lastModifiedDate":"2024-02-25"},{"lineNumber":61,"author":{"gitId":"ashleygoh1"},"content":" return value.hashCode();","lastModifiedDate":"2024-02-25"},{"lineNumber":62,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":63,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":64,"author":{"gitId":"ashleygoh1"},"content":"}","lastModifiedDate":"2024-02-25"}],"authorContributionMap":{"ashleygoh1":64}},{"path":"src/main/java/seedu/address/model/person/JobDescription.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ashleygoh1"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-02-25"},{"lineNumber":2,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":3,"author":{"gitId":"ashleygoh1"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-02-25"},{"lineNumber":4,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-02-25"},{"lineNumber":5,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":6,"author":{"gitId":"ashleygoh1"},"content":"/**","lastModifiedDate":"2024-02-25"},{"lineNumber":7,"author":{"gitId":"ashleygoh1"},"content":" * Represents a Person\u0027s job description in the address book.","lastModifiedDate":"2024-02-25"},{"lineNumber":8,"author":{"gitId":"ashleygoh1"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidJobDescription(String)}","lastModifiedDate":"2024-02-25"},{"lineNumber":9,"author":{"gitId":"ashleygoh1"},"content":" */","lastModifiedDate":"2024-02-25"},{"lineNumber":10,"author":{"gitId":"ashleygoh1"},"content":"public class JobDescription {","lastModifiedDate":"2024-02-25"},{"lineNumber":11,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":12,"author":{"gitId":"ashleygoh1"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Job Description can take any values, and it should not be blank\";","lastModifiedDate":"2024-02-25"},{"lineNumber":13,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":14,"author":{"gitId":"ashleygoh1"},"content":" /*","lastModifiedDate":"2024-02-25"},{"lineNumber":15,"author":{"gitId":"ashleygoh1"},"content":" * The first character of the job description must not be a whitespace,","lastModifiedDate":"2024-02-25"},{"lineNumber":16,"author":{"gitId":"ashleygoh1"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2024-02-25"},{"lineNumber":17,"author":{"gitId":"ashleygoh1"},"content":" */","lastModifiedDate":"2024-02-25"},{"lineNumber":18,"author":{"gitId":"ashleygoh1"},"content":" public static final String VALIDATION_REGEX \u003d \"\\\\S.*\";","lastModifiedDate":"2024-02-25"},{"lineNumber":19,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":20,"author":{"gitId":"ashleygoh1"},"content":" public final String value;","lastModifiedDate":"2024-02-25"},{"lineNumber":21,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":22,"author":{"gitId":"ashleygoh1"},"content":" /**","lastModifiedDate":"2024-02-25"},{"lineNumber":23,"author":{"gitId":"ashleygoh1"},"content":" * Constructs an {@code Job Description}.","lastModifiedDate":"2024-02-25"},{"lineNumber":24,"author":{"gitId":"ashleygoh1"},"content":" *","lastModifiedDate":"2024-02-25"},{"lineNumber":25,"author":{"gitId":"ashleygoh1"},"content":" * @param jobDescription A valid Job Description.","lastModifiedDate":"2024-02-25"},{"lineNumber":26,"author":{"gitId":"ashleygoh1"},"content":" */","lastModifiedDate":"2024-02-25"},{"lineNumber":27,"author":{"gitId":"ashleygoh1"},"content":" public JobDescription(String jobDescription) {","lastModifiedDate":"2024-02-25"},{"lineNumber":28,"author":{"gitId":"ashleygoh1"},"content":" requireNonNull(jobDescription);","lastModifiedDate":"2024-02-25"},{"lineNumber":29,"author":{"gitId":"ashleygoh1"},"content":" checkArgument(isValidJobDescription(jobDescription), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-25"},{"lineNumber":30,"author":{"gitId":"ashleygoh1"},"content":" value \u003d jobDescription;","lastModifiedDate":"2024-02-25"},{"lineNumber":31,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":32,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":33,"author":{"gitId":"ashleygoh1"},"content":" /**","lastModifiedDate":"2024-02-25"},{"lineNumber":34,"author":{"gitId":"ashleygoh1"},"content":" * Returns true if a given string is a valid job description.","lastModifiedDate":"2024-02-25"},{"lineNumber":35,"author":{"gitId":"ashleygoh1"},"content":" */","lastModifiedDate":"2024-02-25"},{"lineNumber":36,"author":{"gitId":"ashleygoh1"},"content":" public static boolean isValidJobDescription(String test) {","lastModifiedDate":"2024-02-25"},{"lineNumber":37,"author":{"gitId":"ashleygoh1"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-02-25"},{"lineNumber":38,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":39,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":40,"author":{"gitId":"ashleygoh1"},"content":" @Override","lastModifiedDate":"2024-02-25"},{"lineNumber":41,"author":{"gitId":"ashleygoh1"},"content":" public String toString() {","lastModifiedDate":"2024-02-25"},{"lineNumber":42,"author":{"gitId":"ashleygoh1"},"content":" return value;","lastModifiedDate":"2024-02-25"},{"lineNumber":43,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":44,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":45,"author":{"gitId":"ashleygoh1"},"content":" @Override","lastModifiedDate":"2024-02-25"},{"lineNumber":46,"author":{"gitId":"ashleygoh1"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-02-25"},{"lineNumber":47,"author":{"gitId":"ashleygoh1"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-02-25"},{"lineNumber":48,"author":{"gitId":"ashleygoh1"},"content":" return true;","lastModifiedDate":"2024-02-25"},{"lineNumber":49,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":50,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":51,"author":{"gitId":"ashleygoh1"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-02-25"},{"lineNumber":52,"author":{"gitId":"ashleygoh1"},"content":" if (!(other instanceof JobDescription)) {","lastModifiedDate":"2024-02-25"},{"lineNumber":53,"author":{"gitId":"ashleygoh1"},"content":" return false;","lastModifiedDate":"2024-02-25"},{"lineNumber":54,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":55,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":56,"author":{"gitId":"ashleygoh1"},"content":" JobDescription otherJobDescription \u003d (JobDescription) other;","lastModifiedDate":"2024-02-25"},{"lineNumber":57,"author":{"gitId":"ashleygoh1"},"content":" return value.equals(otherJobDescription.value);","lastModifiedDate":"2024-02-25"},{"lineNumber":58,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":59,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":60,"author":{"gitId":"ashleygoh1"},"content":" @Override","lastModifiedDate":"2024-02-25"},{"lineNumber":61,"author":{"gitId":"ashleygoh1"},"content":" public int hashCode() {","lastModifiedDate":"2024-02-25"},{"lineNumber":62,"author":{"gitId":"ashleygoh1"},"content":" return value.hashCode();","lastModifiedDate":"2024-02-25"},{"lineNumber":63,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":64,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":65,"author":{"gitId":"ashleygoh1"},"content":"}","lastModifiedDate":"2024-02-25"}],"authorContributionMap":{"ashleygoh1":65}},{"path":"src/main/java/seedu/address/model/person/NameContainsKeywordsPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2017-06-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-06-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * Tests that a {@code Person}\u0027s {@code Name} matches any of the keywords given.","lastModifiedDate":"2018-01-10"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class NameContainsKeywordsPredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2018-01-10"},{"lineNumber":13,"author":{"gitId":"-"},"content":" private final List\u003cString\u003e keywords;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public NameContainsKeywordsPredicate(List\u003cString\u003e keywords) {","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":" this.keywords \u003d keywords;","lastModifiedDate":"2017-06-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public boolean test(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":21,"author":{"gitId":"-"},"content":" return keywords.stream()","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"ashleygoh1"},"content":" .anyMatch(keyword -\u003e StringUtil.containsWordIgnoreCase(person.getCompanyName().fullName, keyword));","lastModifiedDate":"2024-02-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" if (!(other instanceof NameContainsKeywordsPredicate)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate otherNameContainsKeywordsPredicate \u003d (NameContainsKeywordsPredicate) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" return keywords.equals(otherNameContainsKeywordsPredicate.keywords);","lastModifiedDate":"2023-07-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this).add(\"keywords\", keywords).toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"ashleygoh1":1,"-":43}},{"path":"src/main/java/seedu/address/model/person/Person.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2016-08-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Represents a Person in the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2017-12-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"Jawad280"},"content":"public class Person implements Comparable\u003cPerson\u003e {","lastModifiedDate":"2024-02-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19"},{"lineNumber":17,"author":{"gitId":"ashleygoh1"},"content":" private final Name companyName;","lastModifiedDate":"2024-02-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private final Phone phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private final Email email;","lastModifiedDate":"2017-12-20"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final Address address;","lastModifiedDate":"2018-04-19"},{"lineNumber":23,"author":{"gitId":"ashleygoh1"},"content":" private final Tag tag;","lastModifiedDate":"2024-02-25"},{"lineNumber":24,"author":{"gitId":"ashleygoh1"},"content":" private final JobDescription jobDescription;","lastModifiedDate":"2024-02-25"},{"lineNumber":25,"author":{"gitId":"ashleygoh1"},"content":" private final InterviewDate interviewDate;","lastModifiedDate":"2024-02-25"},{"lineNumber":26,"author":{"gitId":"ashleygoh1"},"content":" private final InternDuration internDuration;","lastModifiedDate":"2024-02-25"},{"lineNumber":27,"author":{"gitId":"ashleygoh1"},"content":" private final Salary salary;","lastModifiedDate":"2024-02-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"ashleygoh1"},"content":" public Person(Name companyName, Phone phone, Email email, Address address, Tag tag,","lastModifiedDate":"2024-02-25"},{"lineNumber":33,"author":{"gitId":"ashleygoh1"},"content":" JobDescription jobDescription, InterviewDate interviewDate,","lastModifiedDate":"2024-02-25"},{"lineNumber":34,"author":{"gitId":"ashleygoh1"},"content":" InternDuration internDuration, Salary salary) {","lastModifiedDate":"2024-02-25"},{"lineNumber":35,"author":{"gitId":"ashleygoh1"},"content":" requireAllNonNull(companyName, phone, email, tag, jobDescription);","lastModifiedDate":"2024-02-26"},{"lineNumber":36,"author":{"gitId":"ashleygoh1"},"content":" this.companyName \u003d companyName;","lastModifiedDate":"2024-02-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":38,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20"},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-12-20"},{"lineNumber":40,"author":{"gitId":"ashleygoh1"},"content":" this.tag \u003d tag;","lastModifiedDate":"2024-02-25"},{"lineNumber":41,"author":{"gitId":"ashleygoh1"},"content":" this.jobDescription \u003d jobDescription;","lastModifiedDate":"2024-02-25"},{"lineNumber":42,"author":{"gitId":"ashleygoh1"},"content":" this.interviewDate \u003d interviewDate;","lastModifiedDate":"2024-02-25"},{"lineNumber":43,"author":{"gitId":"ashleygoh1"},"content":" this.internDuration \u003d internDuration;","lastModifiedDate":"2024-02-25"},{"lineNumber":44,"author":{"gitId":"ashleygoh1"},"content":" this.salary \u003d salary;","lastModifiedDate":"2024-02-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"ashleygoh1"},"content":" public Name getCompanyName() {","lastModifiedDate":"2024-02-25"},{"lineNumber":48,"author":{"gitId":"ashleygoh1"},"content":" return companyName;","lastModifiedDate":"2024-02-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2017-07-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":" return phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2017-12-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public Address getAddress() {","lastModifiedDate":"2017-07-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return address;","lastModifiedDate":"2017-12-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":63,"author":{"gitId":"ashleygoh1"},"content":" public Tag getTag() {","lastModifiedDate":"2024-02-25"},{"lineNumber":64,"author":{"gitId":"ashleygoh1"},"content":" return tag;","lastModifiedDate":"2024-02-25"},{"lineNumber":65,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":66,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":67,"author":{"gitId":"ashleygoh1"},"content":" public JobDescription getJobDescription() {","lastModifiedDate":"2024-02-25"},{"lineNumber":68,"author":{"gitId":"ashleygoh1"},"content":" return jobDescription;","lastModifiedDate":"2024-02-25"},{"lineNumber":69,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":70,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":71,"author":{"gitId":"ashleygoh1"},"content":" public InterviewDate getInterviewDate() {","lastModifiedDate":"2024-02-25"},{"lineNumber":72,"author":{"gitId":"ashleygoh1"},"content":" return interviewDate;","lastModifiedDate":"2024-02-25"},{"lineNumber":73,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":74,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":75,"author":{"gitId":"ashleygoh1"},"content":" public InternDuration getInternDuration() {","lastModifiedDate":"2024-02-25"},{"lineNumber":76,"author":{"gitId":"ashleygoh1"},"content":" return internDuration;","lastModifiedDate":"2024-02-25"},{"lineNumber":77,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":78,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":79,"author":{"gitId":"ashleygoh1"},"content":" public Salary getSalary() {","lastModifiedDate":"2024-02-25"},{"lineNumber":80,"author":{"gitId":"ashleygoh1"},"content":" return salary;","lastModifiedDate":"2024-02-25"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":83,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":84,"author":{"gitId":"ashleygoh1"},"content":" * Returns true if both inputs have the same company name and job description.","lastModifiedDate":"2024-02-25"},{"lineNumber":85,"author":{"gitId":"ashleygoh1"},"content":" * This defines a weaker notion of equality between two inputs.","lastModifiedDate":"2024-02-25"},{"lineNumber":86,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19"},{"lineNumber":88,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19"},{"lineNumber":89,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19"},{"lineNumber":93,"author":{"gitId":"ashleygoh1"},"content":" \u0026\u0026 otherPerson.getCompanyName().equals(getCompanyName())","lastModifiedDate":"2024-02-25"},{"lineNumber":94,"author":{"gitId":"ashleygoh1"},"content":" \u0026\u0026 otherPerson.getJobDescription().equals(getJobDescription());","lastModifiedDate":"2024-02-25"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":98,"author":{"gitId":"ashleygoh1"},"content":" * Returns true if both inputs have the same identity and data fields.","lastModifiedDate":"2024-02-25"},{"lineNumber":99,"author":{"gitId":"ashleygoh1"},"content":" * This defines a stronger notion of equality between two inputs.","lastModifiedDate":"2024-02-25"},{"lineNumber":100,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":102,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":103,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10"},{"lineNumber":104,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":107,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10"},{"lineNumber":109,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":112,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10"},{"lineNumber":113,"author":{"gitId":"ashleygoh1"},"content":" return companyName.equals(otherPerson.companyName)","lastModifiedDate":"2024-02-25"},{"lineNumber":114,"author":{"gitId":"-"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":" \u0026\u0026 address.equals(otherPerson.address)","lastModifiedDate":"2023-07-13"},{"lineNumber":117,"author":{"gitId":"ashleygoh1"},"content":" \u0026\u0026 tag.equals(otherPerson.tag)","lastModifiedDate":"2024-02-25"},{"lineNumber":118,"author":{"gitId":"ashleygoh1"},"content":" \u0026\u0026 jobDescription.equals(otherPerson.jobDescription)","lastModifiedDate":"2024-02-25"},{"lineNumber":119,"author":{"gitId":"ashleygoh1"},"content":" \u0026\u0026 interviewDate.equals(otherPerson.interviewDate)","lastModifiedDate":"2024-02-25"},{"lineNumber":120,"author":{"gitId":"ashleygoh1"},"content":" \u0026\u0026 internDuration.equals(otherPerson.internDuration)","lastModifiedDate":"2024-02-25"},{"lineNumber":121,"author":{"gitId":"ashleygoh1"},"content":" \u0026\u0026 salary.equals(otherPerson.salary);","lastModifiedDate":"2024-02-25"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":124,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":125,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":126,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24"},{"lineNumber":127,"author":{"gitId":"ashleygoh1"},"content":" return Objects.hash(companyName, phone, email, address, tag,","lastModifiedDate":"2024-02-25"},{"lineNumber":128,"author":{"gitId":"ashleygoh1"},"content":" jobDescription, interviewDate, internDuration, salary);","lastModifiedDate":"2024-02-25"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":131,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":132,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":133,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":134,"author":{"gitId":"ashleygoh1"},"content":" .add(\"name\", companyName)","lastModifiedDate":"2024-02-25"},{"lineNumber":135,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":138,"author":{"gitId":"ashleygoh1"},"content":" .add(\"tag\", tag)","lastModifiedDate":"2024-02-25"},{"lineNumber":139,"author":{"gitId":"ashleygoh1"},"content":" .add(\"job description\", jobDescription)","lastModifiedDate":"2024-02-25"},{"lineNumber":140,"author":{"gitId":"ashleygoh1"},"content":" .add(\"interview date\", interviewDate)","lastModifiedDate":"2024-02-25"},{"lineNumber":141,"author":{"gitId":"ashleygoh1"},"content":" .add(\"intern duration\", internDuration)","lastModifiedDate":"2024-02-25"},{"lineNumber":142,"author":{"gitId":"ashleygoh1"},"content":" .add(\"salary\", salary)","lastModifiedDate":"2024-02-25"},{"lineNumber":143,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":145,"author":{"gitId":"Jawad280"},"content":" @Override","lastModifiedDate":"2024-02-26"},{"lineNumber":146,"author":{"gitId":"Jawad280"},"content":" public int compareTo(Person otherPerson) {","lastModifiedDate":"2024-02-26"},{"lineNumber":147,"author":{"gitId":"Jawad280"},"content":" if (this.interviewDate.value !\u003d null \u0026\u0026 otherPerson.getInterviewDate().value !\u003d null) {","lastModifiedDate":"2024-02-26"},{"lineNumber":148,"author":{"gitId":"Jawad280"},"content":" return this.interviewDate.value.compareTo(otherPerson.getInterviewDate().value);","lastModifiedDate":"2024-02-26"},{"lineNumber":149,"author":{"gitId":"Jawad280"},"content":" } else if (this.interviewDate.value !\u003d null) {","lastModifiedDate":"2024-02-26"},{"lineNumber":150,"author":{"gitId":"Jawad280"},"content":" return -1;","lastModifiedDate":"2024-02-26"},{"lineNumber":151,"author":{"gitId":"Jawad280"},"content":" } else if (otherPerson.getInterviewDate().value !\u003d null) {","lastModifiedDate":"2024-02-26"},{"lineNumber":152,"author":{"gitId":"Jawad280"},"content":" return 1;","lastModifiedDate":"2024-02-26"},{"lineNumber":153,"author":{"gitId":"Jawad280"},"content":" } else {","lastModifiedDate":"2024-02-26"},{"lineNumber":154,"author":{"gitId":"Jawad280"},"content":" return 0;","lastModifiedDate":"2024-02-26"},{"lineNumber":155,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":156,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":158,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"Jawad280":13,"ashleygoh1":56,"-":89}},{"path":"src/main/java/seedu/address/model/person/Salary.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ashleygoh1"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-02-25"},{"lineNumber":2,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":3,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-02-25"},{"lineNumber":4,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":5,"author":{"gitId":"ashleygoh1"},"content":"/**","lastModifiedDate":"2024-02-25"},{"lineNumber":6,"author":{"gitId":"ashleygoh1"},"content":" * Represents a Person\u0027s salary in the address book.","lastModifiedDate":"2024-02-25"},{"lineNumber":7,"author":{"gitId":"ashleygoh1"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidSalary(String)}","lastModifiedDate":"2024-02-25"},{"lineNumber":8,"author":{"gitId":"ashleygoh1"},"content":" */","lastModifiedDate":"2024-02-25"},{"lineNumber":9,"author":{"gitId":"ashleygoh1"},"content":"public class Salary {","lastModifiedDate":"2024-02-25"},{"lineNumber":10,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":11,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":12,"author":{"gitId":"ashleygoh1"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Salary should only contain numbers\";","lastModifiedDate":"2024-02-26"},{"lineNumber":13,"author":{"gitId":"ashleygoh1"},"content":" public static final String VALIDATION_REGEX \u003d \"[1-9]\\\\d*\";","lastModifiedDate":"2024-02-26"},{"lineNumber":14,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":15,"author":{"gitId":"ashleygoh1"},"content":" public final String value;","lastModifiedDate":"2024-02-25"},{"lineNumber":16,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":17,"author":{"gitId":"ashleygoh1"},"content":" /**","lastModifiedDate":"2024-02-25"},{"lineNumber":18,"author":{"gitId":"ashleygoh1"},"content":" * Constructs a {@code Salary}.","lastModifiedDate":"2024-02-25"},{"lineNumber":19,"author":{"gitId":"ashleygoh1"},"content":" *","lastModifiedDate":"2024-02-25"},{"lineNumber":20,"author":{"gitId":"ashleygoh1"},"content":" * @param salary A valid salary.","lastModifiedDate":"2024-02-25"},{"lineNumber":21,"author":{"gitId":"ashleygoh1"},"content":" */","lastModifiedDate":"2024-02-25"},{"lineNumber":22,"author":{"gitId":"ashleygoh1"},"content":" public Salary(String salary) {","lastModifiedDate":"2024-02-25"},{"lineNumber":23,"author":{"gitId":"ashleygoh1"},"content":" checkArgument(isValidSalary(salary), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-25"},{"lineNumber":24,"author":{"gitId":"ashleygoh1"},"content":" value \u003d salary;","lastModifiedDate":"2024-02-25"},{"lineNumber":25,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":26,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":27,"author":{"gitId":"ashleygoh1"},"content":" /**","lastModifiedDate":"2024-02-25"},{"lineNumber":28,"author":{"gitId":"ashleygoh1"},"content":" * Returns true if a given string is a valid phone number.","lastModifiedDate":"2024-02-25"},{"lineNumber":29,"author":{"gitId":"ashleygoh1"},"content":" */","lastModifiedDate":"2024-02-25"},{"lineNumber":30,"author":{"gitId":"ashleygoh1"},"content":" public static boolean isValidSalary(String test) {","lastModifiedDate":"2024-02-25"},{"lineNumber":31,"author":{"gitId":"ashleygoh1"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-02-25"},{"lineNumber":32,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":33,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":34,"author":{"gitId":"ashleygoh1"},"content":" @Override","lastModifiedDate":"2024-02-25"},{"lineNumber":35,"author":{"gitId":"ashleygoh1"},"content":" public String toString() {","lastModifiedDate":"2024-02-25"},{"lineNumber":36,"author":{"gitId":"ashleygoh1"},"content":" return value;","lastModifiedDate":"2024-02-25"},{"lineNumber":37,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":38,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":39,"author":{"gitId":"ashleygoh1"},"content":" @Override","lastModifiedDate":"2024-02-25"},{"lineNumber":40,"author":{"gitId":"ashleygoh1"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-02-25"},{"lineNumber":41,"author":{"gitId":"ashleygoh1"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-02-25"},{"lineNumber":42,"author":{"gitId":"ashleygoh1"},"content":" return true;","lastModifiedDate":"2024-02-25"},{"lineNumber":43,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":44,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":45,"author":{"gitId":"ashleygoh1"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-02-25"},{"lineNumber":46,"author":{"gitId":"ashleygoh1"},"content":" if (!(other instanceof Salary)) {","lastModifiedDate":"2024-02-25"},{"lineNumber":47,"author":{"gitId":"ashleygoh1"},"content":" return false;","lastModifiedDate":"2024-02-25"},{"lineNumber":48,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":49,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":50,"author":{"gitId":"ashleygoh1"},"content":" Salary otherSalary \u003d (Salary) other;","lastModifiedDate":"2024-02-25"},{"lineNumber":51,"author":{"gitId":"ashleygoh1"},"content":" return value.equals(otherSalary.value);","lastModifiedDate":"2024-02-25"},{"lineNumber":52,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":53,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":54,"author":{"gitId":"ashleygoh1"},"content":" @Override","lastModifiedDate":"2024-02-25"},{"lineNumber":55,"author":{"gitId":"ashleygoh1"},"content":" public int hashCode() {","lastModifiedDate":"2024-02-25"},{"lineNumber":56,"author":{"gitId":"ashleygoh1"},"content":" return value.hashCode();","lastModifiedDate":"2024-02-25"},{"lineNumber":57,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":58,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":59,"author":{"gitId":"ashleygoh1"},"content":"}","lastModifiedDate":"2024-02-25"}],"authorContributionMap":{"ashleygoh1":59}},{"path":"src/main/java/seedu/address/model/util/SampleDataUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.util;","lastModifiedDate":"2016-12-20"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-12-20"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-12-20"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-02-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-02-25"},{"lineNumber":11,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.InternDuration;","lastModifiedDate":"2024-02-25"},{"lineNumber":12,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.InterviewDate;","lastModifiedDate":"2024-02-25"},{"lineNumber":13,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.JobDescription;","lastModifiedDate":"2024-02-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-02-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-02-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-02-25"},{"lineNumber":17,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.Salary;","lastModifiedDate":"2024-02-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-14"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16"},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static Person[] getSamplePersons() {","lastModifiedDate":"2016-12-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":" return new Person[] {","lastModifiedDate":"2016-12-20"},{"lineNumber":26,"author":{"gitId":"ashleygoh1"},"content":" new Person(new Name(\"FoodPanda\"), new Phone(\"12345678\"), new Email(\"panda@food.com\"),","lastModifiedDate":"2024-02-25"},{"lineNumber":27,"author":{"gitId":"ashleygoh1"},"content":" new Address(\"CBD\"), new Tag(\"F\"), new JobDescription(\"Front End Intern\"),","lastModifiedDate":"2024-02-25"},{"lineNumber":28,"author":{"gitId":"ashleygoh1"},"content":" new InterviewDate(\"15-04-2024 0900\"), new InternDuration(\"6 months\"), new Salary(\"500\"))","lastModifiedDate":"2024-02-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20"},{"lineNumber":33,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07"},{"lineNumber":34,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20"},{"lineNumber":35,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":37,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2017-05-30"},{"lineNumber":44,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2018-01-21"},{"lineNumber":46,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20"}],"authorContributionMap":{"ashleygoh1":7,"-":42}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedPerson.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-02-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-02-25"},{"lineNumber":9,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.InternDuration;","lastModifiedDate":"2024-02-25"},{"lineNumber":10,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.InterviewDate;","lastModifiedDate":"2024-02-25"},{"lineNumber":11,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.JobDescription;","lastModifiedDate":"2024-02-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-02-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-02-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-02-25"},{"lineNumber":15,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.Salary;","lastModifiedDate":"2024-02-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Jackson-friendly version of {@link Person}.","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"class JsonAdaptedPerson {","lastModifiedDate":"2018-12-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"ashleygoh1"},"content":" private final String companyName;","lastModifiedDate":"2024-02-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final String phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final String address;","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"ashleygoh1"},"content":" private final String tag;","lastModifiedDate":"2024-02-25"},{"lineNumber":30,"author":{"gitId":"ashleygoh1"},"content":" private final String jobDescription;","lastModifiedDate":"2024-02-25"},{"lineNumber":31,"author":{"gitId":"ashleygoh1"},"content":" private final String interviewDate;","lastModifiedDate":"2024-02-25"},{"lineNumber":32,"author":{"gitId":"ashleygoh1"},"content":" private final String internDuration;","lastModifiedDate":"2024-02-25"},{"lineNumber":33,"author":{"gitId":"ashleygoh1"},"content":" private final String salary;","lastModifiedDate":"2024-02-25"},{"lineNumber":34,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given person details.","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"ashleygoh1"},"content":" public JsonAdaptedPerson(@JsonProperty(\"companyName\") String name, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2024-02-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @JsonProperty(\"email\") String email, @JsonProperty(\"address\") String address,","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"ashleygoh1"},"content":" @JsonProperty(\"tag\") String tag, @JsonProperty(\"jobDescription\") String jobDescription,","lastModifiedDate":"2024-02-25"},{"lineNumber":43,"author":{"gitId":"ashleygoh1"},"content":" @JsonProperty(\"interviewDate\") String interviewDate,","lastModifiedDate":"2024-02-25"},{"lineNumber":44,"author":{"gitId":"ashleygoh1"},"content":" @JsonProperty(\"internDuration\") String internDuration,","lastModifiedDate":"2024-02-25"},{"lineNumber":45,"author":{"gitId":"ashleygoh1"},"content":" @JsonProperty(\"salary\") String salary) {","lastModifiedDate":"2024-02-25"},{"lineNumber":46,"author":{"gitId":"ashleygoh1"},"content":" this.companyName \u003d name;","lastModifiedDate":"2024-02-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"ashleygoh1"},"content":" this.tag \u003d tag;","lastModifiedDate":"2024-02-25"},{"lineNumber":51,"author":{"gitId":"ashleygoh1"},"content":" this.jobDescription \u003d jobDescription;","lastModifiedDate":"2024-02-25"},{"lineNumber":52,"author":{"gitId":"ashleygoh1"},"content":" this.interviewDate \u003d interviewDate;","lastModifiedDate":"2024-02-25"},{"lineNumber":53,"author":{"gitId":"ashleygoh1"},"content":" this.internDuration \u003d internDuration;","lastModifiedDate":"2024-02-25"},{"lineNumber":54,"author":{"gitId":"ashleygoh1"},"content":" this.salary \u003d salary;","lastModifiedDate":"2024-02-25"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2018-08-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13"},{"lineNumber":61,"author":{"gitId":"ashleygoh1"},"content":" companyName \u003d source.getCompanyName().fullName;","lastModifiedDate":"2024-02-25"},{"lineNumber":62,"author":{"gitId":"-"},"content":" phone \u003d source.getPhone().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" address \u003d source.getAddress().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"ashleygoh1"},"content":" tag \u003d source.getTag().tagName;","lastModifiedDate":"2024-02-25"},{"lineNumber":66,"author":{"gitId":"ashleygoh1"},"content":" jobDescription \u003d source.getJobDescription().value;","lastModifiedDate":"2024-02-25"},{"lineNumber":67,"author":{"gitId":"ashleygoh1"},"content":" interviewDate \u003d source.getInterviewDate().toString();","lastModifiedDate":"2024-02-25"},{"lineNumber":68,"author":{"gitId":"ashleygoh1"},"content":" internDuration \u003d source.getInternDuration().value;","lastModifiedDate":"2024-02-25"},{"lineNumber":69,"author":{"gitId":"ashleygoh1"},"content":" salary \u003d source.getSalary().value;","lastModifiedDate":"2024-02-25"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":79,"author":{"gitId":"ashleygoh1"},"content":" if (companyName \u003d\u003d null) {","lastModifiedDate":"2024-02-25"},{"lineNumber":80,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":82,"author":{"gitId":"ashleygoh1"},"content":" if (!Name.isValidName(companyName)) {","lastModifiedDate":"2024-02-25"},{"lineNumber":83,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"ashleygoh1"},"content":" final Name modelCompanyName \u003d new Name(companyName);","lastModifiedDate":"2024-02-25"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":" if (address \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":" final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2018-08-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":108,"author":{"gitId":"ashleygoh1"},"content":" if (tag \u003d\u003d null) {","lastModifiedDate":"2024-02-25"},{"lineNumber":109,"author":{"gitId":"ashleygoh1"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Tag.class.getSimpleName()));","lastModifiedDate":"2024-02-25"},{"lineNumber":110,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":111,"author":{"gitId":"ashleygoh1"},"content":" if (!Tag.isValidTagName(tag)) {","lastModifiedDate":"2024-02-25"},{"lineNumber":112,"author":{"gitId":"ashleygoh1"},"content":" throw new IllegalValueException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-26"},{"lineNumber":113,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":114,"author":{"gitId":"ashleygoh1"},"content":" final Tag modelTag \u003d new Tag(tag);","lastModifiedDate":"2024-02-25"},{"lineNumber":115,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":116,"author":{"gitId":"ashleygoh1"},"content":" if (jobDescription \u003d\u003d null) {","lastModifiedDate":"2024-02-25"},{"lineNumber":117,"author":{"gitId":"ashleygoh1"},"content":" throw new IllegalValueException(","lastModifiedDate":"2024-02-25"},{"lineNumber":118,"author":{"gitId":"ashleygoh1"},"content":" String.format(MISSING_FIELD_MESSAGE_FORMAT, JobDescription.class.getSimpleName()));","lastModifiedDate":"2024-02-25"},{"lineNumber":119,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":120,"author":{"gitId":"ashleygoh1"},"content":" if (!JobDescription.isValidJobDescription(jobDescription)) {","lastModifiedDate":"2024-02-25"},{"lineNumber":121,"author":{"gitId":"ashleygoh1"},"content":" throw new IllegalValueException(JobDescription.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-25"},{"lineNumber":122,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":123,"author":{"gitId":"ashleygoh1"},"content":" final JobDescription modelJobDescription \u003d new JobDescription(jobDescription);","lastModifiedDate":"2024-02-25"},{"lineNumber":124,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":125,"author":{"gitId":"ashleygoh1"},"content":" final InterviewDate modelInterviewDate;","lastModifiedDate":"2024-02-26"},{"lineNumber":126,"author":{"gitId":"ashleygoh1"},"content":" if (interviewDate.isEmpty()) {","lastModifiedDate":"2024-02-26"},{"lineNumber":127,"author":{"gitId":"ashleygoh1"},"content":" modelInterviewDate \u003d new InterviewDate(null);","lastModifiedDate":"2024-02-26"},{"lineNumber":128,"author":{"gitId":"ashleygoh1"},"content":" } else {","lastModifiedDate":"2024-02-26"},{"lineNumber":129,"author":{"gitId":"ashleygoh1"},"content":" modelInterviewDate \u003d new InterviewDate(interviewDate);","lastModifiedDate":"2024-02-26"},{"lineNumber":130,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":131,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":132,"author":{"gitId":"ashleygoh1"},"content":" if (internDuration \u003d\u003d null) {","lastModifiedDate":"2024-02-25"},{"lineNumber":133,"author":{"gitId":"ashleygoh1"},"content":" throw new IllegalValueException(","lastModifiedDate":"2024-02-25"},{"lineNumber":134,"author":{"gitId":"ashleygoh1"},"content":" String.format(MISSING_FIELD_MESSAGE_FORMAT, InternDuration.class.getSimpleName()));","lastModifiedDate":"2024-02-25"},{"lineNumber":135,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":136,"author":{"gitId":"ashleygoh1"},"content":" if (!InternDuration.isValidInternDuration(internDuration)) {","lastModifiedDate":"2024-02-26"},{"lineNumber":137,"author":{"gitId":"ashleygoh1"},"content":" throw new IllegalValueException(InternDuration.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-25"},{"lineNumber":138,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":139,"author":{"gitId":"ashleygoh1"},"content":" final InternDuration modelInternDuration \u003d new InternDuration(internDuration);","lastModifiedDate":"2024-02-25"},{"lineNumber":140,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":141,"author":{"gitId":"ashleygoh1"},"content":" if (salary \u003d\u003d null) {","lastModifiedDate":"2024-02-25"},{"lineNumber":142,"author":{"gitId":"ashleygoh1"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Salary.class.getSimpleName()));","lastModifiedDate":"2024-02-25"},{"lineNumber":143,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":144,"author":{"gitId":"ashleygoh1"},"content":" if (!Salary.isValidSalary(salary)) {","lastModifiedDate":"2024-02-25"},{"lineNumber":145,"author":{"gitId":"ashleygoh1"},"content":" throw new IllegalValueException(Salary.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-26"},{"lineNumber":146,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":147,"author":{"gitId":"ashleygoh1"},"content":" final Salary modelSalary \u003d new Salary(salary);","lastModifiedDate":"2024-02-25"},{"lineNumber":148,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":149,"author":{"gitId":"ashleygoh1"},"content":" return new Person(modelCompanyName, modelPhone, modelEmail, modelAddress, modelTag,","lastModifiedDate":"2024-02-25"},{"lineNumber":150,"author":{"gitId":"ashleygoh1"},"content":" modelJobDescription, modelInterviewDate, modelInternDuration, modelSalary);","lastModifiedDate":"2024-02-25"},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":153,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"ashleygoh1":74,"-":79}},{"path":"src/main/java/seedu/address/ui/MainWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-06-16"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.event.ActionEvent;","lastModifiedDate":"2016-12-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-08-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.MenuItem;","lastModifiedDate":"2016-08-26"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.control.TextInputControl;","lastModifiedDate":"2016-12-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyCombination;","lastModifiedDate":"2016-08-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyEvent;","lastModifiedDate":"2016-12-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.scene.layout.StackPane;","lastModifiedDate":"2017-05-09"},{"lineNumber":12,"author":{"gitId":"Jawad280"},"content":"import javafx.scene.layout.VBox;","lastModifiedDate":"2024-02-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2016-09-28"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2017-06-16"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.Logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"Jawad280"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-02-26"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * The Main Window. Provides the basic application layout containing","lastModifiedDate":"2016-08-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * a menu bar and space where other JavaFX elements can be placed.","lastModifiedDate":"2016-08-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class MainWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-11-29"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"MainWindow.fxml\";","lastModifiedDate":"2016-08-18"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(getClass());","lastModifiedDate":"2018-08-14"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Stage primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // Independent Ui parts residing in this Ui container","lastModifiedDate":"2016-08-18"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private PersonListPanel personListPanel;","lastModifiedDate":"2016-08-18"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private ResultDisplay resultDisplay;","lastModifiedDate":"2018-12-09"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private HelpWindow helpWindow;","lastModifiedDate":"2018-03-15"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" private StackPane commandBoxPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":44,"author":{"gitId":"-"},"content":" private MenuItem helpMenuItem;","lastModifiedDate":"2016-08-18"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" private StackPane personListPanelPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":50,"author":{"gitId":"-"},"content":" private StackPane resultDisplayPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":" private StackPane statusbarPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":55,"author":{"gitId":"Jawad280"},"content":" @FXML","lastModifiedDate":"2024-02-26"},{"lineNumber":56,"author":{"gitId":"Jawad280"},"content":" private VBox viewPanelPlaceholder;","lastModifiedDate":"2024-03-11"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * Creates a {@code MainWindow} with the given {@code Stage} and {@code Logic}.","lastModifiedDate":"2020-05-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public MainWindow(Stage primaryStage, Logic logic) {","lastModifiedDate":"2018-12-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" super(FXML, primaryStage);","lastModifiedDate":"2017-11-29"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":" // Set dependencies","lastModifiedDate":"2016-09-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":" this.primaryStage \u003d primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":66,"author":{"gitId":"-"},"content":" this.logic \u003d logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":68,"author":{"gitId":"-"},"content":" // Configure the UI","lastModifiedDate":"2016-09-21"},{"lineNumber":69,"author":{"gitId":"-"},"content":" setWindowDefaultSize(logic.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":71,"author":{"gitId":"-"},"content":" setAccelerators();","lastModifiedDate":"2016-09-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":73,"author":{"gitId":"-"},"content":" helpWindow \u003d new HelpWindow();","lastModifiedDate":"2018-03-15"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public Stage getPrimaryStage() {","lastModifiedDate":"2016-12-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return primaryStage;","lastModifiedDate":"2016-12-24"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":" private void setAccelerators() {","lastModifiedDate":"2016-09-21"},{"lineNumber":81,"author":{"gitId":"-"},"content":" setAccelerator(helpMenuItem, KeyCombination.valueOf(\"F1\"));","lastModifiedDate":"2016-12-18"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":84,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * Sets the accelerator of a MenuItem.","lastModifiedDate":"2016-12-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * @param keyCombination the KeyCombination value of the accelerator","lastModifiedDate":"2016-12-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":88,"author":{"gitId":"-"},"content":" private void setAccelerator(MenuItem menuItem, KeyCombination keyCombination) {","lastModifiedDate":"2016-12-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":" menuItem.setAccelerator(keyCombination);","lastModifiedDate":"2016-12-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":91,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-12-18"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * TODO: the code below can be removed once the bug reported here","lastModifiedDate":"2016-12-18"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * https://bugs.openjdk.java.net/browse/JDK-8131666","lastModifiedDate":"2016-12-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * is fixed in later version of SDK.","lastModifiedDate":"2016-12-18"},{"lineNumber":95,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * According to the bug report, TextInputControl (TextField, TextArea) will","lastModifiedDate":"2016-12-18"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * consume function-key events. Because CommandBox contains a TextField, and","lastModifiedDate":"2016-12-18"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * ResultDisplay contains a TextArea, thus some accelerators (e.g F1) will","lastModifiedDate":"2016-12-18"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * not work when the focus is in them because the key event is consumed by","lastModifiedDate":"2016-12-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * the TextInputControl(s).","lastModifiedDate":"2016-12-18"},{"lineNumber":101,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * For now, we add following event filter to capture such key events and open","lastModifiedDate":"2016-12-18"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * help window purposely so to support accelerators even when focus is","lastModifiedDate":"2016-12-18"},{"lineNumber":104,"author":{"gitId":"-"},"content":" * in CommandBox or ResultDisplay.","lastModifiedDate":"2016-12-18"},{"lineNumber":105,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":106,"author":{"gitId":"-"},"content":" getRoot().addEventFilter(KeyEvent.KEY_PRESSED, event -\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":107,"author":{"gitId":"-"},"content":" if (event.getTarget() instanceof TextInputControl \u0026\u0026 keyCombination.match(event)) {","lastModifiedDate":"2016-12-18"},{"lineNumber":108,"author":{"gitId":"-"},"content":" menuItem.getOnAction().handle(new ActionEvent());","lastModifiedDate":"2016-12-18"},{"lineNumber":109,"author":{"gitId":"-"},"content":" event.consume();","lastModifiedDate":"2016-12-18"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":111,"author":{"gitId":"-"},"content":" });","lastModifiedDate":"2016-12-18"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":114,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":115,"author":{"gitId":"-"},"content":" * Fills up all the placeholders of this window.","lastModifiedDate":"2017-08-16"},{"lineNumber":116,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":117,"author":{"gitId":"-"},"content":" void fillInnerParts() {","lastModifiedDate":"2016-09-21"},{"lineNumber":118,"author":{"gitId":"-"},"content":" personListPanel \u003d new PersonListPanel(logic.getFilteredPersonList());","lastModifiedDate":"2019-01-25"},{"lineNumber":119,"author":{"gitId":"-"},"content":" personListPanelPlaceholder.getChildren().add(personListPanel.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":" resultDisplay \u003d new ResultDisplay();","lastModifiedDate":"2018-12-09"},{"lineNumber":122,"author":{"gitId":"-"},"content":" resultDisplayPlaceholder.getChildren().add(resultDisplay.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":" StatusBarFooter statusBarFooter \u003d new StatusBarFooter(logic.getAddressBookFilePath());","lastModifiedDate":"2019-01-25"},{"lineNumber":125,"author":{"gitId":"-"},"content":" statusbarPlaceholder.getChildren().add(statusBarFooter.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":127,"author":{"gitId":"-"},"content":" CommandBox commandBox \u003d new CommandBox(this::executeCommand);","lastModifiedDate":"2019-01-25"},{"lineNumber":128,"author":{"gitId":"-"},"content":" commandBoxPlaceholder.getChildren().add(commandBox.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":131,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":132,"author":{"gitId":"-"},"content":" * Sets the default size based on {@code guiSettings}.","lastModifiedDate":"2018-11-27"},{"lineNumber":133,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":134,"author":{"gitId":"-"},"content":" private void setWindowDefaultSize(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":135,"author":{"gitId":"-"},"content":" primaryStage.setHeight(guiSettings.getWindowHeight());","lastModifiedDate":"2018-11-27"},{"lineNumber":136,"author":{"gitId":"-"},"content":" primaryStage.setWidth(guiSettings.getWindowWidth());","lastModifiedDate":"2018-11-27"},{"lineNumber":137,"author":{"gitId":"-"},"content":" if (guiSettings.getWindowCoordinates() !\u003d null) {","lastModifiedDate":"2018-11-27"},{"lineNumber":138,"author":{"gitId":"-"},"content":" primaryStage.setX(guiSettings.getWindowCoordinates().getX());","lastModifiedDate":"2018-11-27"},{"lineNumber":139,"author":{"gitId":"-"},"content":" primaryStage.setY(guiSettings.getWindowCoordinates().getY());","lastModifiedDate":"2018-11-27"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":143,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":144,"author":{"gitId":"-"},"content":" * Opens the help window or focuses on it if it\u0027s already opened.","lastModifiedDate":"2018-03-15"},{"lineNumber":145,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":146,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":147,"author":{"gitId":"-"},"content":" public void handleHelp() {","lastModifiedDate":"2016-08-31"},{"lineNumber":148,"author":{"gitId":"-"},"content":" if (!helpWindow.isShowing()) {","lastModifiedDate":"2018-03-15"},{"lineNumber":149,"author":{"gitId":"-"},"content":" helpWindow.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":150,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-15"},{"lineNumber":151,"author":{"gitId":"-"},"content":" helpWindow.focus();","lastModifiedDate":"2018-03-15"},{"lineNumber":152,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":155,"author":{"gitId":"-"},"content":" void show() {","lastModifiedDate":"2016-10-15"},{"lineNumber":156,"author":{"gitId":"-"},"content":" primaryStage.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":159,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":160,"author":{"gitId":"-"},"content":" * Closes the application.","lastModifiedDate":"2016-08-18"},{"lineNumber":161,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":162,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":163,"author":{"gitId":"-"},"content":" private void handleExit() {","lastModifiedDate":"2016-08-18"},{"lineNumber":164,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(primaryStage.getWidth(), primaryStage.getHeight(),","lastModifiedDate":"2018-12-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":" (int) primaryStage.getX(), (int) primaryStage.getY());","lastModifiedDate":"2018-12-08"},{"lineNumber":166,"author":{"gitId":"-"},"content":" logic.setGuiSettings(guiSettings);","lastModifiedDate":"2018-12-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":" helpWindow.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":168,"author":{"gitId":"-"},"content":" primaryStage.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":170,"author":{"gitId":"Jawad280"},"content":" /**","lastModifiedDate":"2024-02-26"},{"lineNumber":171,"author":{"gitId":"Jawad280"},"content":" * Views the person on the View Panel.","lastModifiedDate":"2024-02-26"},{"lineNumber":172,"author":{"gitId":"Jawad280"},"content":" */","lastModifiedDate":"2024-02-26"},{"lineNumber":173,"author":{"gitId":"Jawad280"},"content":" @FXML","lastModifiedDate":"2024-02-26"},{"lineNumber":174,"author":{"gitId":"chenyixin0"},"content":" // private void handleView(Person p, int displayIndex) {","lastModifiedDate":"2024-02-29"},{"lineNumber":175,"author":{"gitId":"chenyixin0"},"content":" // PersonCard viewPanel \u003d new PersonCard(p, displayIndex);","lastModifiedDate":"2024-02-29"},{"lineNumber":176,"author":{"gitId":"chenyixin0"},"content":" // //ViewPanel viewPanel \u003d new ViewPanel(p);","lastModifiedDate":"2024-02-29"},{"lineNumber":177,"author":{"gitId":"chenyixin0"},"content":" // //viewPanelPlaceHolder.getChildren().clear();","lastModifiedDate":"2024-02-29"},{"lineNumber":178,"author":{"gitId":"chenyixin0"},"content":" // viewPanelPlaceHolder.getChildren().add(viewPanel.getRoot());","lastModifiedDate":"2024-02-29"},{"lineNumber":179,"author":{"gitId":"chenyixin0"},"content":" // }","lastModifiedDate":"2024-02-29"},{"lineNumber":180,"author":{"gitId":"chenyixin0"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":181,"author":{"gitId":"Jawad280"},"content":" // private void handleView(Person p) {","lastModifiedDate":"2024-03-11"},{"lineNumber":182,"author":{"gitId":"Jawad280"},"content":" // ViewPanel viewPanel \u003d new ViewPanel(p);","lastModifiedDate":"2024-03-11"},{"lineNumber":183,"author":{"gitId":"Jawad280"},"content":" // //viewPanelPlaceHolder.getChildren().clear();","lastModifiedDate":"2024-03-11"},{"lineNumber":184,"author":{"gitId":"Jawad280"},"content":" // VBox holder \u003d viewPanelPlaceHolder.getContent() \u003d\u003d null ? new VBox()","lastModifiedDate":"2024-03-11"},{"lineNumber":185,"author":{"gitId":"Jawad280"},"content":" // : (VBox) viewPanelPlaceHolder.getContent();","lastModifiedDate":"2024-03-11"},{"lineNumber":186,"author":{"gitId":"Jawad280"},"content":" // holder.getChildren().add(viewPanel.getRoot());","lastModifiedDate":"2024-03-11"},{"lineNumber":187,"author":{"gitId":"Jawad280"},"content":" // viewPanelPlaceHolder.setContent(holder);","lastModifiedDate":"2024-03-11"},{"lineNumber":188,"author":{"gitId":"Jawad280"},"content":" // }","lastModifiedDate":"2024-03-11"},{"lineNumber":189,"author":{"gitId":"chenyixin0"},"content":" private void handleView(Person p) {","lastModifiedDate":"2024-02-29"},{"lineNumber":190,"author":{"gitId":"chenyixin0"},"content":" ViewPanel viewPanel \u003d new ViewPanel(p);","lastModifiedDate":"2024-02-29"},{"lineNumber":191,"author":{"gitId":"Jawad280"},"content":" viewPanelPlaceholder.getChildren().add(viewPanel.getRoot());","lastModifiedDate":"2024-03-11"},{"lineNumber":192,"author":{"gitId":"chenyixin0"},"content":" }","lastModifiedDate":"2024-02-29"},{"lineNumber":193,"author":{"gitId":"chenyixin0"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":195,"author":{"gitId":"-"},"content":" public PersonListPanel getPersonListPanel() {","lastModifiedDate":"2016-08-25"},{"lineNumber":196,"author":{"gitId":"-"},"content":" return personListPanel;","lastModifiedDate":"2018-08-14"},{"lineNumber":197,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-25"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":199,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":200,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2018-12-09"},{"lineNumber":201,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09"},{"lineNumber":202,"author":{"gitId":"-"},"content":" * @see seedu.address.logic.Logic#execute(String)","lastModifiedDate":"2018-12-09"},{"lineNumber":203,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":204,"author":{"gitId":"-"},"content":" private CommandResult executeCommand(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2018-12-09"},{"lineNumber":205,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":206,"author":{"gitId":"Jawad280"},"content":" // viewPanelPlaceHolder.setContent(null);","lastModifiedDate":"2024-03-11"},{"lineNumber":207,"author":{"gitId":"Jawad280"},"content":" viewPanelPlaceholder.getChildren().clear();","lastModifiedDate":"2024-03-11"},{"lineNumber":208,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d logic.execute(commandText);","lastModifiedDate":"2018-12-09"},{"lineNumber":209,"author":{"gitId":"-"},"content":" logger.info(\"Result: \" + commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":210,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":212,"author":{"gitId":"-"},"content":" if (commandResult.isShowHelp()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":213,"author":{"gitId":"-"},"content":" handleHelp();","lastModifiedDate":"2018-12-09"},{"lineNumber":214,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":215,"author":{"gitId":"Jawad280"},"content":" if (commandResult.getViewPerson() !\u003d null) {","lastModifiedDate":"2024-02-26"},{"lineNumber":216,"author":{"gitId":"Jawad280"},"content":" Person p \u003d commandResult.getViewPerson();","lastModifiedDate":"2024-02-26"},{"lineNumber":217,"author":{"gitId":"chenyixin0"},"content":" handleView(p);","lastModifiedDate":"2024-02-29"},{"lineNumber":218,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":219,"author":{"gitId":"Jawad280"},"content":" if (commandResult.getViewList() !\u003d null) {","lastModifiedDate":"2024-03-11"},{"lineNumber":220,"author":{"gitId":"chenyixin0"},"content":" for (Person p : commandResult.getViewList()) {","lastModifiedDate":"2024-02-29"},{"lineNumber":221,"author":{"gitId":"chenyixin0"},"content":" handleView(p);","lastModifiedDate":"2024-02-29"},{"lineNumber":222,"author":{"gitId":"chenyixin0"},"content":" }","lastModifiedDate":"2024-02-29"},{"lineNumber":223,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":225,"author":{"gitId":"-"},"content":" if (commandResult.isExit()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":226,"author":{"gitId":"-"},"content":" handleExit();","lastModifiedDate":"2018-12-09"},{"lineNumber":227,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":229,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":230,"author":{"gitId":"-"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2018-12-09"},{"lineNumber":231,"author":{"gitId":"-"},"content":" logger.info(\"An error occurred while executing command: \" + commandText);","lastModifiedDate":"2023-06-13"},{"lineNumber":232,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(e.getMessage());","lastModifiedDate":"2018-12-09"},{"lineNumber":233,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2018-12-09"},{"lineNumber":234,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":235,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":236,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"chenyixin0":15,"Jawad280":24,"-":197}},{"path":"src/main/java/seedu/address/ui/PersonCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-09-21"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2016-09-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2016-09-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * An UI component that displays information of a {@code Person}.","lastModifiedDate":"2017-08-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class PersonCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":14,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"PersonListCard.fxml\";","lastModifiedDate":"2016-09-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2017-03-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2017-03-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2017-03-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * @see \u003ca href\u003d\"https://github.com/se-edu/addressbook-level4/issues/336\"\u003eThe issue on AddressBook level 4\u003c/a\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public final Person person;","lastModifiedDate":"2018-01-10"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private HBox cardPane;","lastModifiedDate":"2016-09-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private Label name;","lastModifiedDate":"2016-09-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Label id;","lastModifiedDate":"2016-09-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private Label phone;","lastModifiedDate":"2016-09-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private Label address;","lastModifiedDate":"2016-09-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private Label email;","lastModifiedDate":"2016-09-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":39,"author":{"gitId":"ashleygoh1"},"content":" private Label tags;","lastModifiedDate":"2024-02-25"},{"lineNumber":40,"author":{"gitId":"ashleygoh1"},"content":" @FXML","lastModifiedDate":"2024-02-25"},{"lineNumber":41,"author":{"gitId":"ashleygoh1"},"content":" private Label jobDescription;","lastModifiedDate":"2024-02-25"},{"lineNumber":42,"author":{"gitId":"ashleygoh1"},"content":" @FXML","lastModifiedDate":"2024-02-25"},{"lineNumber":43,"author":{"gitId":"ashleygoh1"},"content":" private Label interviewDate;","lastModifiedDate":"2024-02-25"},{"lineNumber":44,"author":{"gitId":"ashleygoh1"},"content":" @FXML","lastModifiedDate":"2024-02-25"},{"lineNumber":45,"author":{"gitId":"ashleygoh1"},"content":" private Label internDuration;","lastModifiedDate":"2024-02-25"},{"lineNumber":46,"author":{"gitId":"ashleygoh1"},"content":" @FXML","lastModifiedDate":"2024-02-25"},{"lineNumber":47,"author":{"gitId":"ashleygoh1"},"content":" private Label salary;","lastModifiedDate":"2024-02-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2020-05-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2018-01-10"},{"lineNumber":53,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2017-07-12"},{"lineNumber":55,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21"},{"lineNumber":56,"author":{"gitId":"ashleygoh1"},"content":" name.setText(person.getCompanyName().fullName);","lastModifiedDate":"2024-02-25"},{"lineNumber":57,"author":{"gitId":"-"},"content":" phone.setText(person.getPhone().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" address.setText(person.getAddress().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":" email.setText(person.getEmail().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":60,"author":{"gitId":"ashleygoh1"},"content":" tags.setText(person.getTag().tagName);","lastModifiedDate":"2024-02-25"},{"lineNumber":61,"author":{"gitId":"ashleygoh1"},"content":" jobDescription.setText(person.getJobDescription().value);","lastModifiedDate":"2024-02-25"},{"lineNumber":62,"author":{"gitId":"ashleygoh1"},"content":" interviewDate.setText(person.getInterviewDate().toString());","lastModifiedDate":"2024-02-25"},{"lineNumber":63,"author":{"gitId":"ashleygoh1"},"content":" internDuration.setText(person.getInternDuration().value);","lastModifiedDate":"2024-02-25"},{"lineNumber":64,"author":{"gitId":"ashleygoh1"},"content":" salary.setText(person.getSalary().value);","lastModifiedDate":"2024-02-25"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"ashleygoh1":15,"-":51}},{"path":"src/main/java/seedu/address/ui/ViewPanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Jawad280"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-02-26"},{"lineNumber":2,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":3,"author":{"gitId":"Jawad280"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-02-26"},{"lineNumber":4,"author":{"gitId":"Jawad280"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2024-02-26"},{"lineNumber":5,"author":{"gitId":"Jawad280"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-02-26"},{"lineNumber":6,"author":{"gitId":"Jawad280"},"content":"import javafx.scene.layout.VBox;","lastModifiedDate":"2024-02-26"},{"lineNumber":7,"author":{"gitId":"Jawad280"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-02-26"},{"lineNumber":8,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":9,"author":{"gitId":"Jawad280"},"content":"/**","lastModifiedDate":"2024-02-26"},{"lineNumber":10,"author":{"gitId":"Jawad280"},"content":" * A UI component that displays information of a {@code Person}.","lastModifiedDate":"2024-02-26"},{"lineNumber":11,"author":{"gitId":"Jawad280"},"content":" */","lastModifiedDate":"2024-02-26"},{"lineNumber":12,"author":{"gitId":"Jawad280"},"content":"public class ViewPanel extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-02-26"},{"lineNumber":13,"author":{"gitId":"Jawad280"},"content":" private static final String FXML \u003d \"ViewPanel.fxml\";","lastModifiedDate":"2024-02-26"},{"lineNumber":14,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":15,"author":{"gitId":"Jawad280"},"content":" public final Person person;","lastModifiedDate":"2024-02-26"},{"lineNumber":16,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":17,"author":{"gitId":"Jawad280"},"content":" @FXML","lastModifiedDate":"2024-02-26"},{"lineNumber":18,"author":{"gitId":"Jawad280"},"content":" private VBox viewPanel;","lastModifiedDate":"2024-02-26"},{"lineNumber":19,"author":{"gitId":"Jawad280"},"content":" @FXML","lastModifiedDate":"2024-02-26"},{"lineNumber":20,"author":{"gitId":"Jawad280"},"content":" private Label companyName;","lastModifiedDate":"2024-02-26"},{"lineNumber":21,"author":{"gitId":"Jawad280"},"content":" @FXML","lastModifiedDate":"2024-02-26"},{"lineNumber":22,"author":{"gitId":"Jawad280"},"content":" private Label jobDescription;","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"Jawad280"},"content":" @FXML","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"Jawad280"},"content":" private Label phone;","lastModifiedDate":"2024-02-26"},{"lineNumber":25,"author":{"gitId":"Jawad280"},"content":" @FXML","lastModifiedDate":"2024-02-26"},{"lineNumber":26,"author":{"gitId":"Jawad280"},"content":" private Label address;","lastModifiedDate":"2024-02-26"},{"lineNumber":27,"author":{"gitId":"Jawad280"},"content":" @FXML","lastModifiedDate":"2024-02-26"},{"lineNumber":28,"author":{"gitId":"Jawad280"},"content":" private Label email;","lastModifiedDate":"2024-02-26"},{"lineNumber":29,"author":{"gitId":"Jawad280"},"content":" @FXML","lastModifiedDate":"2024-02-26"},{"lineNumber":30,"author":{"gitId":"Jawad280"},"content":" private Label tag;","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"Jawad280"},"content":" @FXML","lastModifiedDate":"2024-02-26"},{"lineNumber":32,"author":{"gitId":"Jawad280"},"content":" private Label interviewDate;","lastModifiedDate":"2024-02-26"},{"lineNumber":33,"author":{"gitId":"Jawad280"},"content":" @FXML","lastModifiedDate":"2024-02-26"},{"lineNumber":34,"author":{"gitId":"Jawad280"},"content":" private Label internDuration;","lastModifiedDate":"2024-02-26"},{"lineNumber":35,"author":{"gitId":"Jawad280"},"content":" @FXML","lastModifiedDate":"2024-02-26"},{"lineNumber":36,"author":{"gitId":"Jawad280"},"content":" private Label salary;","lastModifiedDate":"2024-02-26"},{"lineNumber":37,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":38,"author":{"gitId":"Jawad280"},"content":" /**","lastModifiedDate":"2024-02-26"},{"lineNumber":39,"author":{"gitId":"Jawad280"},"content":" * Creates a {@code PersonCode} with the given {@code Person} to display.","lastModifiedDate":"2024-02-26"},{"lineNumber":40,"author":{"gitId":"Jawad280"},"content":" */","lastModifiedDate":"2024-02-26"},{"lineNumber":41,"author":{"gitId":"Jawad280"},"content":" public ViewPanel(Person person) {","lastModifiedDate":"2024-02-26"},{"lineNumber":42,"author":{"gitId":"Jawad280"},"content":" super(FXML);","lastModifiedDate":"2024-02-26"},{"lineNumber":43,"author":{"gitId":"Jawad280"},"content":" this.person \u003d person;","lastModifiedDate":"2024-02-26"},{"lineNumber":44,"author":{"gitId":"Jawad280"},"content":" companyName.setText(person.getCompanyName().fullName);","lastModifiedDate":"2024-02-26"},{"lineNumber":45,"author":{"gitId":"Jawad280"},"content":" jobDescription.setText(person.getJobDescription().value);","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"Jawad280"},"content":" phone.setText(person.getPhone().value);","lastModifiedDate":"2024-02-26"},{"lineNumber":47,"author":{"gitId":"Jawad280"},"content":" address.setText(person.getAddress().value);","lastModifiedDate":"2024-02-26"},{"lineNumber":48,"author":{"gitId":"Jawad280"},"content":" email.setText(person.getEmail().value);","lastModifiedDate":"2024-02-26"},{"lineNumber":49,"author":{"gitId":"Jawad280"},"content":" interviewDate.setText(\"Interview : \" + person.getInterviewDate().toString());","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"Jawad280"},"content":" tag.setText(person.getTag().tagName);","lastModifiedDate":"2024-03-11"},{"lineNumber":51,"author":{"gitId":"Jawad280"},"content":" internDuration.setText(person.getInternDuration().value);","lastModifiedDate":"2024-02-26"},{"lineNumber":52,"author":{"gitId":"Jawad280"},"content":" salary.setText(\"$\" + person.getSalary().value);","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":54,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-02-26"}],"authorContributionMap":{"Jawad280":54}},{"path":"src/main/resources/view/DarkTheme.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":".background {","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":" background-color: #383838; /* Used in the default.html file */","lastModifiedDate":"2017-03-02"},{"lineNumber":4,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":".label {","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":" -fx-text-fill: #555555;","lastModifiedDate":"2016-08-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":".label-bright {","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":".label-header {","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" -fx-font-size: 32pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":".text-field {","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" -fx-font-size: 12pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":".tab-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":".tab-pane .tab-header-area {","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" -fx-min-height: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" -fx-max-height: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":".table-view {","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" -fx-base: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" -fx-control-inner-background: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" -fx-table-cell-border-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" -fx-table-header-border-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" -fx-padding: 5;","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":".table-view .column-header-background {","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":".table-view .column-header, .table-view .filler {","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" -fx-size: 35;","lastModifiedDate":"2016-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" -fx-border-width: 0 0 1 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" -fx-border-color:","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" derive(-fx-base, 80%)","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" -fx-border-insets: 0 10 1 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":".table-view .column-header .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" -fx-font-size: 20pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" -fx-alignment: center-left;","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":".table-view:focused .table-row-cell:filled:focused:selected {","lastModifiedDate":"2016-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":".split-pane:horizontal .split-pane-divider {","lastModifiedDate":"2016-08-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02"},{"lineNumber":81,"author":{"gitId":"-"},"content":" -fx-border-color: transparent transparent transparent #4d4d4d;","lastModifiedDate":"2017-03-02"},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":84,"author":{"gitId":"-"},"content":".split-pane {","lastModifiedDate":"2016-08-15"},{"lineNumber":85,"author":{"gitId":"-"},"content":" -fx-border-radius: 1;","lastModifiedDate":"2016-08-15"},{"lineNumber":86,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2016-08-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":".list-view {","lastModifiedDate":"2017-03-02"},{"lineNumber":91,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":92,"author":{"gitId":"-"},"content":" -fx-padding: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":93,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2018-01-10"},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":96,"author":{"gitId":"-"},"content":".list-cell {","lastModifiedDate":"2016-08-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":" -fx-label-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":" -fx-graphic-text-gap : 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":".list-cell:filled:even {","lastModifiedDate":"2017-03-02"},{"lineNumber":103,"author":{"gitId":"-"},"content":" -fx-background-color: #3c3e3f;","lastModifiedDate":"2017-03-02"},{"lineNumber":104,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":106,"author":{"gitId":"-"},"content":".list-cell:filled:odd {","lastModifiedDate":"2017-03-02"},{"lineNumber":107,"author":{"gitId":"-"},"content":" -fx-background-color: #515658;","lastModifiedDate":"2017-03-02"},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":110,"author":{"gitId":"-"},"content":".list-cell:filled:selected {","lastModifiedDate":"2017-03-02"},{"lineNumber":111,"author":{"gitId":"-"},"content":" -fx-background-color: #424d5f;","lastModifiedDate":"2017-03-02"},{"lineNumber":112,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":114,"author":{"gitId":"-"},"content":".list-cell:filled:selected #cardPane {","lastModifiedDate":"2017-03-02"},{"lineNumber":115,"author":{"gitId":"-"},"content":" -fx-border-color: #3e7b91;","lastModifiedDate":"2017-03-02"},{"lineNumber":116,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02"},{"lineNumber":117,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":119,"author":{"gitId":"-"},"content":".list-cell .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":121,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":".cell_big_label {","lastModifiedDate":"2016-08-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":" -fx-font-size: 16px;","lastModifiedDate":"2016-08-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":".cell_small_label {","lastModifiedDate":"2016-08-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\";","lastModifiedDate":"2022-01-13"},{"lineNumber":131,"author":{"gitId":"-"},"content":" -fx-font-size: 13px;","lastModifiedDate":"2017-03-02"},{"lineNumber":132,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":".stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":136,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":137,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":".pane-with-border {","lastModifiedDate":"2017-05-15"},{"lineNumber":140,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-05-09"},{"lineNumber":141,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 10%);","lastModifiedDate":"2017-05-09"},{"lineNumber":142,"author":{"gitId":"-"},"content":" -fx-border-top-width: 1px;","lastModifiedDate":"2017-05-09"},{"lineNumber":143,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-09"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":145,"author":{"gitId":"-"},"content":".status-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":146,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2018-12-08"},{"lineNumber":147,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":149,"author":{"gitId":"-"},"content":".result-display {","lastModifiedDate":"2016-09-14"},{"lineNumber":150,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2017-03-02"},{"lineNumber":151,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":152,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02"},{"lineNumber":153,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":154,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":156,"author":{"gitId":"-"},"content":".result-display .label {","lastModifiedDate":"2016-09-14"},{"lineNumber":157,"author":{"gitId":"-"},"content":" -fx-text-fill: black !important;","lastModifiedDate":"2016-09-14"},{"lineNumber":158,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":160,"author":{"gitId":"-"},"content":".status-bar .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":162,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":163,"author":{"gitId":"-"},"content":" -fx-padding: 4px;","lastModifiedDate":"2018-12-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":" -fx-pref-height: 30px;","lastModifiedDate":"2018-12-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":".status-bar-with-border {","lastModifiedDate":"2016-08-08"},{"lineNumber":168,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":169,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15"},{"lineNumber":170,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08"},{"lineNumber":171,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":173,"author":{"gitId":"-"},"content":".status-bar-with-border .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":174,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":175,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":177,"author":{"gitId":"-"},"content":".grid-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":178,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":179,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":180,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08"},{"lineNumber":181,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":183,"author":{"gitId":"-"},"content":".grid-pane .stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":184,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":185,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":187,"author":{"gitId":"-"},"content":".context-menu {","lastModifiedDate":"2016-08-08"},{"lineNumber":188,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15"},{"lineNumber":189,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":191,"author":{"gitId":"-"},"content":".context-menu .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":192,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":193,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":195,"author":{"gitId":"-"},"content":".menu-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":196,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":197,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":199,"author":{"gitId":"-"},"content":".menu-bar .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":200,"author":{"gitId":"-"},"content":" -fx-font-size: 14pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":201,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":202,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":203,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08"},{"lineNumber":204,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":206,"author":{"gitId":"-"},"content":".menu .left-container {","lastModifiedDate":"2016-08-08"},{"lineNumber":207,"author":{"gitId":"-"},"content":" -fx-background-color: black;","lastModifiedDate":"2016-08-08"},{"lineNumber":208,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":210,"author":{"gitId":"-"},"content":"/*","lastModifiedDate":"2016-08-08"},{"lineNumber":211,"author":{"gitId":"-"},"content":" * Metro style Push Button","lastModifiedDate":"2016-08-08"},{"lineNumber":212,"author":{"gitId":"-"},"content":" * Author: Pedro Duque Vieira","lastModifiedDate":"2016-08-08"},{"lineNumber":213,"author":{"gitId":"-"},"content":" * http://pixelduke.wordpress.com/2012/10/23/jmetro-windows-8-controls-on-java/","lastModifiedDate":"2016-08-08"},{"lineNumber":214,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":215,"author":{"gitId":"-"},"content":".button {","lastModifiedDate":"2016-08-08"},{"lineNumber":216,"author":{"gitId":"-"},"content":" -fx-padding: 5 22 5 22;","lastModifiedDate":"2016-08-08"},{"lineNumber":217,"author":{"gitId":"-"},"content":" -fx-border-color: #e2e2e2;","lastModifiedDate":"2016-08-08"},{"lineNumber":218,"author":{"gitId":"-"},"content":" -fx-border-width: 2;","lastModifiedDate":"2016-08-08"},{"lineNumber":219,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":220,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":221,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\", Helvetica, Arial, sans-serif;","lastModifiedDate":"2022-01-13"},{"lineNumber":222,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":223,"author":{"gitId":"-"},"content":" -fx-text-fill: #d8d8d8;","lastModifiedDate":"2016-08-08"},{"lineNumber":224,"author":{"gitId":"-"},"content":" -fx-background-insets: 0 0 0 0, 0, 1, 2;","lastModifiedDate":"2016-08-08"},{"lineNumber":225,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":227,"author":{"gitId":"-"},"content":".button:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":228,"author":{"gitId":"-"},"content":" -fx-background-color: #3a3a3a;","lastModifiedDate":"2016-08-08"},{"lineNumber":229,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":231,"author":{"gitId":"-"},"content":".button:pressed, .button:default:hover:pressed {","lastModifiedDate":"2016-08-08"},{"lineNumber":232,"author":{"gitId":"-"},"content":" -fx-background-color: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":233,"author":{"gitId":"-"},"content":" -fx-text-fill: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":234,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":236,"author":{"gitId":"-"},"content":".button:focused {","lastModifiedDate":"2016-08-08"},{"lineNumber":237,"author":{"gitId":"-"},"content":" -fx-border-color: white, white;","lastModifiedDate":"2016-08-08"},{"lineNumber":238,"author":{"gitId":"-"},"content":" -fx-border-width: 1, 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":239,"author":{"gitId":"-"},"content":" -fx-border-style: solid, segments(1, 1);","lastModifiedDate":"2016-08-08"},{"lineNumber":240,"author":{"gitId":"-"},"content":" -fx-border-radius: 0, 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":241,"author":{"gitId":"-"},"content":" -fx-border-insets: 1 1 1 1, 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":242,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":244,"author":{"gitId":"-"},"content":".button:disabled, .button:default:disabled {","lastModifiedDate":"2016-08-08"},{"lineNumber":245,"author":{"gitId":"-"},"content":" -fx-opacity: 0.4;","lastModifiedDate":"2016-08-08"},{"lineNumber":246,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":247,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":248,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":250,"author":{"gitId":"-"},"content":".button:default {","lastModifiedDate":"2016-08-08"},{"lineNumber":251,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08"},{"lineNumber":252,"author":{"gitId":"-"},"content":" -fx-text-fill: #ffffff;","lastModifiedDate":"2016-08-08"},{"lineNumber":253,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":255,"author":{"gitId":"-"},"content":".button:default:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":256,"author":{"gitId":"-"},"content":" -fx-background-color: derive(-fx-focus-color, 30%);","lastModifiedDate":"2016-08-08"},{"lineNumber":257,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":259,"author":{"gitId":"-"},"content":".dialog-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":260,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":261,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":263,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.button-bar \u003e *.container {","lastModifiedDate":"2016-08-08"},{"lineNumber":264,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":265,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":266,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":267,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.label.content {","lastModifiedDate":"2016-08-08"},{"lineNumber":268,"author":{"gitId":"-"},"content":" -fx-font-size: 14px;","lastModifiedDate":"2016-08-08"},{"lineNumber":269,"author":{"gitId":"-"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2016-08-08"},{"lineNumber":270,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":271,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":273,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel {","lastModifiedDate":"2016-08-08"},{"lineNumber":274,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15"},{"lineNumber":275,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":277,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel *.label {","lastModifiedDate":"2016-08-08"},{"lineNumber":278,"author":{"gitId":"-"},"content":" -fx-font-size: 18px;","lastModifiedDate":"2016-08-08"},{"lineNumber":279,"author":{"gitId":"-"},"content":" -fx-font-style: italic;","lastModifiedDate":"2016-08-08"},{"lineNumber":280,"author":{"gitId":"-"},"content":" -fx-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":281,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":282,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":284,"author":{"gitId":"-"},"content":".scroll-bar {","lastModifiedDate":"2017-03-02"},{"lineNumber":285,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02"},{"lineNumber":286,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":288,"author":{"gitId":"-"},"content":".scroll-bar .thumb {","lastModifiedDate":"2016-08-15"},{"lineNumber":289,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15"},{"lineNumber":290,"author":{"gitId":"-"},"content":" -fx-background-insets: 3;","lastModifiedDate":"2016-08-15"},{"lineNumber":291,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":293,"author":{"gitId":"-"},"content":".scroll-bar .increment-button, .scroll-bar .decrement-button {","lastModifiedDate":"2016-08-15"},{"lineNumber":294,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-15"},{"lineNumber":295,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-15"},{"lineNumber":296,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":298,"author":{"gitId":"-"},"content":".scroll-bar .increment-arrow, .scroll-bar .decrement-arrow {","lastModifiedDate":"2016-08-15"},{"lineNumber":299,"author":{"gitId":"-"},"content":" -fx-shape: \" \";","lastModifiedDate":"2016-08-15"},{"lineNumber":300,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":301,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":302,"author":{"gitId":"-"},"content":".scroll-bar:vertical .increment-arrow, .scroll-bar:vertical .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":303,"author":{"gitId":"-"},"content":" -fx-padding: 1 8 1 8;","lastModifiedDate":"2016-08-15"},{"lineNumber":304,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":306,"author":{"gitId":"-"},"content":".scroll-bar:horizontal .increment-arrow, .scroll-bar:horizontal .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":307,"author":{"gitId":"-"},"content":" -fx-padding: 8 1 8 1;","lastModifiedDate":"2016-08-18"},{"lineNumber":308,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":309,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":310,"author":{"gitId":"-"},"content":"#cardPane {","lastModifiedDate":"2016-08-08"},{"lineNumber":311,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":312,"author":{"gitId":"-"},"content":" -fx-border-width: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":313,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":314,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":315,"author":{"gitId":"-"},"content":"#commandTypeLabel {","lastModifiedDate":"2016-08-08"},{"lineNumber":316,"author":{"gitId":"-"},"content":" -fx-font-size: 11px;","lastModifiedDate":"2016-08-08"},{"lineNumber":317,"author":{"gitId":"-"},"content":" -fx-text-fill: #F70D1A;","lastModifiedDate":"2016-08-08"},{"lineNumber":318,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":319,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":320,"author":{"gitId":"-"},"content":"#commandTextField {","lastModifiedDate":"2017-03-02"},{"lineNumber":321,"author":{"gitId":"-"},"content":" -fx-background-color: transparent #383838 transparent #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":322,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":323,"author":{"gitId":"-"},"content":" -fx-border-color: #383838 #383838 #ffffff #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":324,"author":{"gitId":"-"},"content":" -fx-border-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":325,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02"},{"lineNumber":326,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":327,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02"},{"lineNumber":328,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":329,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":330,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":331,"author":{"gitId":"-"},"content":"#filterField, #personListPanel, #personWebpage {","lastModifiedDate":"2016-08-15"},{"lineNumber":332,"author":{"gitId":"-"},"content":" -fx-effect: innershadow(gaussian, black, 10, 0, 0, 0);","lastModifiedDate":"2016-08-15"},{"lineNumber":333,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":334,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":335,"author":{"gitId":"-"},"content":"#resultDisplay .content {","lastModifiedDate":"2017-03-02"},{"lineNumber":336,"author":{"gitId":"-"},"content":" -fx-background-color: transparent, #383838, transparent, #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":337,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":338,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":339,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":340,"author":{"gitId":"-"},"content":"#tags {","lastModifiedDate":"2016-12-18"},{"lineNumber":341,"author":{"gitId":"-"},"content":" -fx-hgap: 7;","lastModifiedDate":"2016-12-18"},{"lineNumber":342,"author":{"gitId":"-"},"content":" -fx-vgap: 3;","lastModifiedDate":"2016-12-18"},{"lineNumber":343,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"},{"lineNumber":344,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":345,"author":{"gitId":"-"},"content":"#tags .label {","lastModifiedDate":"2016-12-18"},{"lineNumber":346,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-12-18"},{"lineNumber":347,"author":{"gitId":"-"},"content":" -fx-background-color: #3e7b91;","lastModifiedDate":"2017-03-02"},{"lineNumber":348,"author":{"gitId":"-"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2016-12-18"},{"lineNumber":349,"author":{"gitId":"-"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2016-12-18"},{"lineNumber":350,"author":{"gitId":"-"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2016-12-18"},{"lineNumber":351,"author":{"gitId":"-"},"content":" -fx-font-size: 11;","lastModifiedDate":"2016-12-18"},{"lineNumber":352,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"},{"lineNumber":353,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":354,"author":{"gitId":"Jawad280"},"content":"/*","lastModifiedDate":"2024-03-11"},{"lineNumber":355,"author":{"gitId":"Jawad280"},"content":"Custom Styles","lastModifiedDate":"2024-03-11"},{"lineNumber":356,"author":{"gitId":"Jawad280"},"content":"*/","lastModifiedDate":"2024-03-11"},{"lineNumber":357,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":358,"author":{"gitId":"Jawad280"},"content":".cell-header {","lastModifiedDate":"2024-03-11"},{"lineNumber":359,"author":{"gitId":"Jawad280"},"content":" -fx-font-family: Arial;","lastModifiedDate":"2024-03-11"},{"lineNumber":360,"author":{"gitId":"Jawad280"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2024-03-11"},{"lineNumber":361,"author":{"gitId":"Jawad280"},"content":" -fx-font-size: 32px;","lastModifiedDate":"2024-03-11"},{"lineNumber":362,"author":{"gitId":"Jawad280"},"content":" -fx-text-fill: black;","lastModifiedDate":"2024-03-11"},{"lineNumber":363,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-03-11"},{"lineNumber":364,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":365,"author":{"gitId":"Jawad280"},"content":".cell-subHeader {","lastModifiedDate":"2024-03-11"},{"lineNumber":366,"author":{"gitId":"Jawad280"},"content":" -fx-font-family: Arial;","lastModifiedDate":"2024-03-11"},{"lineNumber":367,"author":{"gitId":"Jawad280"},"content":" -fx-font-weight: 700;","lastModifiedDate":"2024-03-11"},{"lineNumber":368,"author":{"gitId":"Jawad280"},"content":" -fx-font-size: 24px;","lastModifiedDate":"2024-03-11"},{"lineNumber":369,"author":{"gitId":"Jawad280"},"content":" -fx-text-fill: #0065d6;","lastModifiedDate":"2024-03-11"},{"lineNumber":370,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-03-11"},{"lineNumber":371,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":372,"author":{"gitId":"Jawad280"},"content":".cell-content {","lastModifiedDate":"2024-03-11"},{"lineNumber":373,"author":{"gitId":"Jawad280"},"content":" -fx-font-family: Arial;","lastModifiedDate":"2024-03-11"},{"lineNumber":374,"author":{"gitId":"Jawad280"},"content":" -fx-font-size: 20px;","lastModifiedDate":"2024-03-11"},{"lineNumber":375,"author":{"gitId":"Jawad280"},"content":" -fx-text-fill: #2a3166;","lastModifiedDate":"2024-03-11"},{"lineNumber":376,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-03-11"},{"lineNumber":377,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":378,"author":{"gitId":"Jawad280"},"content":".cell-content-header {","lastModifiedDate":"2024-03-11"},{"lineNumber":379,"author":{"gitId":"Jawad280"},"content":" -fx-font-family: Arial;","lastModifiedDate":"2024-03-11"},{"lineNumber":380,"author":{"gitId":"Jawad280"},"content":" -fx-font-weight: 700;","lastModifiedDate":"2024-03-11"},{"lineNumber":381,"author":{"gitId":"Jawad280"},"content":" -fx-font-size: 20px;","lastModifiedDate":"2024-03-11"},{"lineNumber":382,"author":{"gitId":"Jawad280"},"content":" -fx-text-fill: black;","lastModifiedDate":"2024-03-11"},{"lineNumber":383,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-03-11"},{"lineNumber":384,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":385,"author":{"gitId":"Jawad280"},"content":".cell-date {","lastModifiedDate":"2024-03-11"},{"lineNumber":386,"author":{"gitId":"Jawad280"},"content":" -fx-font-family: Arial;","lastModifiedDate":"2024-03-11"},{"lineNumber":387,"author":{"gitId":"Jawad280"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2024-03-11"},{"lineNumber":388,"author":{"gitId":"Jawad280"},"content":" -fx-font-size: 24px;","lastModifiedDate":"2024-03-11"},{"lineNumber":389,"author":{"gitId":"Jawad280"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-11"},{"lineNumber":390,"author":{"gitId":"Jawad280"},"content":" -fx-padding: 15;","lastModifiedDate":"2024-03-11"},{"lineNumber":391,"author":{"gitId":"Jawad280"},"content":" -fx-background-color: #Ce1313;","lastModifiedDate":"2024-03-11"},{"lineNumber":392,"author":{"gitId":"Jawad280"},"content":" -fx-background-radius: 10;","lastModifiedDate":"2024-03-11"},{"lineNumber":393,"author":{"gitId":"Jawad280"},"content":" -fx-alignment: CENTER;","lastModifiedDate":"2024-03-11"},{"lineNumber":394,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-03-11"},{"lineNumber":395,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":396,"author":{"gitId":"Jawad280"},"content":".cell-tag {","lastModifiedDate":"2024-03-11"},{"lineNumber":397,"author":{"gitId":"Jawad280"},"content":" -fx-font-family: Arial;","lastModifiedDate":"2024-03-11"},{"lineNumber":398,"author":{"gitId":"Jawad280"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2024-03-11"},{"lineNumber":399,"author":{"gitId":"Jawad280"},"content":" -fx-font-size: 18px;","lastModifiedDate":"2024-03-11"},{"lineNumber":400,"author":{"gitId":"Jawad280"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-11"},{"lineNumber":401,"author":{"gitId":"Jawad280"},"content":" -fx-background-color: #0065d6;","lastModifiedDate":"2024-03-11"},{"lineNumber":402,"author":{"gitId":"Jawad280"},"content":" -fx-padding: 8;","lastModifiedDate":"2024-03-11"},{"lineNumber":403,"author":{"gitId":"Jawad280"},"content":" -fx-background-radius: 3;","lastModifiedDate":"2024-03-11"},{"lineNumber":404,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-03-11"},{"lineNumber":405,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":406,"author":{"gitId":"Jawad280"},"content":".view-panel-cell {","lastModifiedDate":"2024-03-11"},{"lineNumber":407,"author":{"gitId":"Jawad280"},"content":" -fx-background-color: white;","lastModifiedDate":"2024-03-11"},{"lineNumber":408,"author":{"gitId":"Jawad280"},"content":" -fx-background-radius: 10;","lastModifiedDate":"2024-03-11"},{"lineNumber":409,"author":{"gitId":"Jawad280"},"content":" -width: 450;","lastModifiedDate":"2024-03-11"},{"lineNumber":410,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"Jawad280":58,"-":352}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2016-08-26"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Menu?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuBar?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuItem?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.SplitPane?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":14,"author":{"gitId":"Jawad280"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-02-26"},{"lineNumber":15,"author":{"gitId":"chenyixin0"},"content":"\u003c?import javafx.scene.control.ScrollPane?\u003e","lastModifiedDate":"2024-02-29"},{"lineNumber":16,"author":{"gitId":"Jawad280"},"content":"\u003c?import javafx.scene.layout.Pane?\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"\u003cfx:root type\u003d\"javafx.stage.Stage\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"","lastModifiedDate":"2023-07-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":" title\u003d\"Address App\" minWidth\u003d\"450\" minHeight\u003d\"600\" onCloseRequest\u003d\"#handleExit\"\u003e","lastModifiedDate":"2018-12-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cicons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cImage url\u003d\"@/images/address_book_32.png\" /\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003c/icons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cscene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cScene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@DarkTheme.css\" /\u003e","lastModifiedDate":"2016-08-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@Extensions.css\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003cVBox\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003cMenuBar fx:id\u003d\"menuBar\" VBox.vgrow\u003d\"NEVER\"\u003e","lastModifiedDate":"2017-06-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"File\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cMenuItem mnemonicParsing\u003d\"false\" onAction\u003d\"#handleExit\" text\u003d\"Exit\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"Help\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003cMenuItem fx:id\u003d\"helpMenuItem\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleHelp\" text\u003d\"Help\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003c/MenuBar\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"commandBoxPlaceholder\" styleClass\u003d\"pane-with-border\"\u003e","lastModifiedDate":"2017-05-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":41,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":43,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"resultDisplayPlaceholder\" styleClass\u003d\"pane-with-border\"","lastModifiedDate":"2017-05-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" minHeight\u003d\"100\" prefHeight\u003d\"100\" maxHeight\u003d\"100\"\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":52,"author":{"gitId":"Jawad280"},"content":" \u003cSplitPane VBox.vgrow\u003d\"ALWAYS\" HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-02-26"},{"lineNumber":53,"author":{"gitId":"Jawad280"},"content":" \u003cVBox fx:id\u003d\"personList\" styleClass\u003d\"pane-with-border\" minWidth\u003d\"300\" prefWidth\u003d\"400\" VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-02-26"},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"10\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"personListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\"/\u003e","lastModifiedDate":"2017-06-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":60,"author":{"gitId":"Jawad280"},"content":" \u003cScrollPane fitToHeight\u003d\"true\" fitToWidth\u003d\"true\" hbarPolicy\u003d\"NEVER\" minWidth\u003d\"475\" maxWidth\u003d\"475\"\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"chenyixin0"},"content":" \u003ccontent\u003e","lastModifiedDate":"2024-02-29"},{"lineNumber":62,"author":{"gitId":"Jawad280"},"content":" \u003cVBox styleClass\u003d\"pane-with-border\" VBox.vgrow\u003d\"ALWAYS\" prefWidth\u003d\"475\" \u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":63,"author":{"gitId":"Jawad280"},"content":" \u003cVBox VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"viewPanelPlaceholder\" spacing\u003d\"20\"\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":64,"author":{"gitId":"Jawad280"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-02-26"},{"lineNumber":65,"author":{"gitId":"Jawad280"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"10\" left\u003d\"10\" /\u003e","lastModifiedDate":"2024-02-26"},{"lineNumber":66,"author":{"gitId":"Jawad280"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-02-26"},{"lineNumber":67,"author":{"gitId":"Jawad280"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-02-26"},{"lineNumber":68,"author":{"gitId":"Jawad280"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":69,"author":{"gitId":"chenyixin0"},"content":" \u003c/content\u003e","lastModifiedDate":"2024-02-29"},{"lineNumber":70,"author":{"gitId":"chenyixin0"},"content":" \u003c/ScrollPane\u003e","lastModifiedDate":"2024-02-29"},{"lineNumber":71,"author":{"gitId":"chenyixin0"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":72,"author":{"gitId":"Jawad280"},"content":" \u003c/SplitPane\u003e","lastModifiedDate":"2024-02-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":74,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"statusbarPlaceholder\" VBox.vgrow\u003d\"NEVER\" /\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":75,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":77,"author":{"gitId":"-"},"content":" \u003c/scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":78,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-11-29"}],"authorContributionMap":{"chenyixin0":5,"Jawad280":13,"-":60}},{"path":"src/main/resources/view/PersonListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003cHBox id\u003d\"cardPane\" fx:id\u003d\"cardPane\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-07-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2017-03-28"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2017-03-28"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003c/Label\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"name\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2016-09-03"},{"lineNumber":30,"author":{"gitId":"ashleygoh1"},"content":" \u003cLabel fx:id\u003d\"tags\" /\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"ashleygoh1"},"content":" \u003cLabel fx:id\u003d\"jobDescription\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$job description\" /\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":35,"author":{"gitId":"ashleygoh1"},"content":" \u003cLabel fx:id\u003d\"interviewDate\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$interview date\" /\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":36,"author":{"gitId":"ashleygoh1"},"content":" \u003cLabel fx:id\u003d\"internDuration\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$intern duration\" /\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":37,"author":{"gitId":"ashleygoh1"},"content":" \u003cLabel fx:id\u003d\"salary\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$salary\" /\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"ashleygoh1":5,"-":35}},{"path":"src/main/resources/view/ViewPanel.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Jawad280"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-02-26"},{"lineNumber":2,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":3,"author":{"gitId":"Jawad280"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-02-26"},{"lineNumber":4,"author":{"gitId":"Jawad280"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-02-26"},{"lineNumber":5,"author":{"gitId":"Jawad280"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2024-02-26"},{"lineNumber":6,"author":{"gitId":"Jawad280"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-02-26"},{"lineNumber":7,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":8,"author":{"gitId":"Jawad280"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"Jawad280"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"Jawad280"},"content":"\u003cVBox id\u003d\"viewPanel\" fx:id\u003d\"ViewPanel\" xmlns\u003d\"http://javafx.com/javafx/21\" xmlns:fx\u003d\"http://javafx.com/fxml/1\" alignment\u003d\"CENTER\" GridPane.columnIndex\u003d\"0\" styleClass\u003d\"view-panel-cell\" prefWidth\u003d\"450\" spacing\u003d\"15\"\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"Jawad280"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-02-26"},{"lineNumber":12,"author":{"gitId":"Jawad280"},"content":" \u003cInsets bottom\u003d\"20.0\" left\u003d\"20.0\" right\u003d\"20.0\" top\u003d\"20.0\" /\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"Jawad280"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-02-26"},{"lineNumber":14,"author":{"gitId":"Jawad280"},"content":" \u003cHBox\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"Jawad280"},"content":" \u003cLabel fx:id\u003d\"companyName\" text\u003d\"\\$first\" styleClass\u003d\"cell-header\" /\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"Jawad280"},"content":" \u003cRegion HBox.hgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"Jawad280"},"content":" \u003cLabel fx:id\u003d\"tag\" text\u003d\"\\$tag\" styleClass\u003d\"cell-tag\" /\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"Jawad280"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"Jawad280"},"content":" \u003cVBox spacing\u003d\"15\"\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"Jawad280"},"content":" \u003cLabel fx:id\u003d\"jobDescription\" text\u003d\"\\$jobDescription\" styleClass\u003d\"cell-subHeader\" /\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"Jawad280"},"content":" \u003cHBox\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"Jawad280"},"content":" \u003cLabel text\u003d\"Phone: \" styleClass\u003d\"cell-content-header\"/\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"Jawad280"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell-content\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"Jawad280"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"Jawad280"},"content":" \u003cHBox\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"Jawad280"},"content":" \u003cLabel text\u003d\"Address: \" styleClass\u003d\"cell-content-header\"/\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":29,"author":{"gitId":"Jawad280"},"content":" \u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell-content\" text\u003d\"\\$address\" /\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"Jawad280"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"Jawad280"},"content":" \u003cHBox\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"Jawad280"},"content":" \u003cLabel text\u003d\"Email: \" styleClass\u003d\"cell-content-header\"/\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"Jawad280"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell-content\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"Jawad280"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"Jawad280"},"content":" \u003cHBox\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"Jawad280"},"content":" \u003cLabel text\u003d\"Duration: \" styleClass\u003d\"cell-content-header\"/\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"Jawad280"},"content":" \u003cLabel fx:id\u003d\"internDuration\" styleClass\u003d\"cell-content\" text\u003d\"\\$internDuration\" /\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"Jawad280"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"Jawad280"},"content":" \u003cHBox\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"Jawad280"},"content":" \u003cLabel text\u003d\"Salary: \" styleClass\u003d\"cell-content-header\"/\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"Jawad280"},"content":" \u003cLabel fx:id\u003d\"salary\" styleClass\u003d\"cell-content\" text\u003d\"\\$salary\" /\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"Jawad280"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"Jawad280"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-02-26"},{"lineNumber":48,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"Jawad280"},"content":" \u003cHBox alignment\u003d\"CENTER\"\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"Jawad280"},"content":" \u003cLabel fx:id\u003d\"interviewDate\" styleClass\u003d\"cell-date\" text\u003d\"\\$interviewDate\" prefWidth\u003d\"450\" HBox.hgrow\u003d\"ALWAYS\"/\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":51,"author":{"gitId":"Jawad280"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":52,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"Jawad280"},"content":"\u003c/VBox\u003e","lastModifiedDate":"2024-02-26"}],"authorContributionMap":{"Jawad280":53}},{"path":"src/test/java/seedu/address/logic/LogicManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"ashleygoh1"},"content":"//import static seedu.address.logic.Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2024-02-26"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":9,"author":{"gitId":"chenyixin0"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INTERN_DURATION_DESC_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"chenyixin0"},"content":"import static seedu.address.logic.commands.CommandTestUtil.JOB_DESCRIPTION_DESC_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":13,"author":{"gitId":"chenyixin0"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SALARY_DESC_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_NO_REPLY;","lastModifiedDate":"2024-02-26"},{"lineNumber":15,"author":{"gitId":"chenyixin0"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_NO_REPLY;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2018-12-09"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2017-01-18"},{"lineNumber":29,"author":{"gitId":"ashleygoh1"},"content":"//import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2024-02-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2016-09-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-12-09"},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-12-09"},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2018-12-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2018-12-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-12-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":43,"author":{"gitId":"-"},"content":"public class LogicManagerTest {","lastModifiedDate":"2016-09-22"},{"lineNumber":44,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_IO_EXCEPTION \u003d new IOException(\"dummy IO exception\");","lastModifiedDate":"2023-06-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_AD_EXCEPTION \u003d new AccessDeniedException(\"dummy access denied exception\");","lastModifiedDate":"2023-06-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public Path temporaryFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-20"},{"lineNumber":51,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2018-12-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2019-04-25"},{"lineNumber":55,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d","lastModifiedDate":"2019-04-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(temporaryFolder.resolve(\"addressBook.json\"));","lastModifiedDate":"2019-04-25"},{"lineNumber":57,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2019-04-25"},{"lineNumber":58,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2018-12-09"},{"lineNumber":59,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-20"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void execute_invalidCommandFormat_throwsParseException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":64,"author":{"gitId":"-"},"content":" String invalidCommand \u003d \"uicfhmowqewca\";","lastModifiedDate":"2017-06-20"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertParseException(invalidCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-06-20"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void execute_commandExecutionError_throwsCommandException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"-"},"content":" String deleteCommand \u003d \"delete 9\";","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertCommandException(deleteCommand, MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void execute_validCommand_success() throws Exception {","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"-"},"content":" String listCommand \u003d ListCommand.COMMAND_WORD;","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertCommandSuccess(listCommand, ListCommand.MESSAGE_SUCCESS, model);","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2024-03-17"},{"lineNumber":83,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2024-03-17"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2024-03-17"},{"lineNumber":89,"author":{"gitId":"chenyixin0"},"content":" // the original test compares expected model and actual model and that one keeps failing so i js","lastModifiedDate":"2024-03-17"},{"lineNumber":90,"author":{"gitId":"chenyixin0"},"content":" // commented that line out first cuz idk whats going on lol","lastModifiedDate":"2024-03-17"},{"lineNumber":91,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2024-03-17"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":95,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":99,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":104,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":105,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":106,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14"},{"lineNumber":107,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14"},{"lineNumber":108,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14"},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14"},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":113,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":114,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a ParseException is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":115,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":116,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":117,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11"},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":121,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a CommandException is thrown and that the result message is correct.","lastModifiedDate":"2017-06-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14"},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":129,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":130,"author":{"gitId":"-"},"content":" * Executes the command, confirms that the exception is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":131,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":132,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":133,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":134,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14"},{"lineNumber":135,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-05-31"},{"lineNumber":136,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":139,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":140,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":141,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":142,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":143,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":144,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":145,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":146,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":147,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31"},{"lineNumber":148,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14"},{"lineNumber":149,"author":{"gitId":"chenyixin0"},"content":" //assertEquals(expectedModel, model);","lastModifiedDate":"2024-03-17"},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19"},{"lineNumber":152,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":153,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13"},{"lineNumber":154,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13"},{"lineNumber":155,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13"},{"lineNumber":156,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13"},{"lineNumber":157,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":158,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13"},{"lineNumber":159,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":161,"author":{"gitId":"-"},"content":" // Inject LogicManager with an AddressBookStorage that throws the IOException e when saving","lastModifiedDate":"2023-06-13"},{"lineNumber":162,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(prefPath) {","lastModifiedDate":"2023-06-13"},{"lineNumber":163,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":164,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath)","lastModifiedDate":"2023-06-13"},{"lineNumber":165,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13"},{"lineNumber":166,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13"},{"lineNumber":167,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":168,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":170,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":171,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13"},{"lineNumber":172,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2023-06-13"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":174,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":176,"author":{"gitId":"-"},"content":" // Triggers the saveAddressBook method by executing an add command","lastModifiedDate":"2023-06-13"},{"lineNumber":177,"author":{"gitId":"-"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2023-06-13"},{"lineNumber":178,"author":{"gitId":"chenyixin0"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + TAG_DESC_NO_REPLY + JOB_DESCRIPTION_DESC_AMY","lastModifiedDate":"2024-03-17"},{"lineNumber":179,"author":{"gitId":"chenyixin0"},"content":" + INTERN_DURATION_DESC_AMY + SALARY_DESC_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":180,"author":{"gitId":"chenyixin0"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags(VALID_TAG_NO_REPLY).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":181,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13"},{"lineNumber":182,"author":{"gitId":"-"},"content":" expectedModel.addPerson(expectedPerson);","lastModifiedDate":"2023-06-13"},{"lineNumber":183,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13"},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":185,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"chenyixin0":10,"ashleygoh1":3,"-":172}},{"path":"src/test/java/seedu/address/logic/commands/AddCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-01-10"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-05-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":18,"author":{"gitId":"Jawad280"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2024-03-01"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-05-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2017-05-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class AddCommandTest {","lastModifiedDate":"2017-05-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddCommand(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void execute_personAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2017-05-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":" ModelStubAcceptingPersonAdded modelStub \u003d new ModelStubAcceptingPersonAdded();","lastModifiedDate":"2017-05-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new AddCommand(validPerson).execute(modelStub);","lastModifiedDate":"2019-01-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertEquals(String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validPerson)),","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(validPerson), modelStub.personsAdded);","lastModifiedDate":"2017-05-12"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12"},{"lineNumber":51,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(validPerson);","lastModifiedDate":"2018-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" ModelStub modelStub \u003d new ModelStubWithPerson(validPerson);","lastModifiedDate":"2018-08-07"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, AddCommand.MESSAGE_DUPLICATE_PERSON, () -\u003e addCommand.execute(modelStub));","lastModifiedDate":"2019-05-03"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-22"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":59,"author":{"gitId":"-"},"content":" Person alice \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2017-06-22"},{"lineNumber":60,"author":{"gitId":"-"},"content":" Person bob \u003d new PersonBuilder().withName(\"Bob\").build();","lastModifiedDate":"2017-06-22"},{"lineNumber":61,"author":{"gitId":"-"},"content":" AddCommand addAliceCommand \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22"},{"lineNumber":62,"author":{"gitId":"-"},"content":" AddCommand addBobCommand \u003d new AddCommand(bob);","lastModifiedDate":"2017-06-22"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":64,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommand));","lastModifiedDate":"2017-06-22"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":67,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":" AddCommand addAliceCommandCopy \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommandCopy));","lastModifiedDate":"2017-06-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(1));","lastModifiedDate":"2017-06-22"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":74,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(null));","lastModifiedDate":"2017-06-22"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":77,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(addBobCommand));","lastModifiedDate":"2017-06-22"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(ALICE);","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" String expected \u003d AddCommand.class.getCanonicalName() + \"{toAdd\u003d\" + ALICE + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertEquals(expected, addCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2017-05-12"},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":91,"author":{"gitId":"-"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2017-05-12"},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":94,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":104,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":109,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":113,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":114,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":118,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27"},{"lineNumber":119,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":123,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":124,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":128,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2018-11-27"},{"lineNumber":129,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":133,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-12"},{"lineNumber":134,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":137,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":138,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06"},{"lineNumber":139,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":142,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":143,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-08"},{"lineNumber":144,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":147,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":148,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":149,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":152,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":153,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":154,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":157,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":158,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10"},{"lineNumber":159,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":161,"author":{"gitId":"Jawad280"},"content":" @Override","lastModifiedDate":"2024-02-29"},{"lineNumber":162,"author":{"gitId":"Jawad280"},"content":" public Person choosePersonToView(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2024-02-29"},{"lineNumber":163,"author":{"gitId":"Jawad280"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-02-29"},{"lineNumber":164,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-02-29"},{"lineNumber":165,"author":{"gitId":"Jawad280"},"content":" @Override","lastModifiedDate":"2024-03-01"},{"lineNumber":166,"author":{"gitId":"Jawad280"},"content":" public FilteredList\u003cPerson\u003e generateNewFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2024-03-01"},{"lineNumber":167,"author":{"gitId":"Jawad280"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-01"},{"lineNumber":168,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":171,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":172,"author":{"gitId":"-"},"content":" * A Model stub that contains a single person.","lastModifiedDate":"2018-08-07"},{"lineNumber":173,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":174,"author":{"gitId":"-"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2018-08-07"},{"lineNumber":175,"author":{"gitId":"-"},"content":" private final Person person;","lastModifiedDate":"2018-08-07"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":177,"author":{"gitId":"-"},"content":" ModelStubWithPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":178,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":179,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2018-08-07"},{"lineNumber":180,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":182,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":183,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":184,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":185,"author":{"gitId":"-"},"content":" return this.person.isSamePerson(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":186,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":189,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":190,"author":{"gitId":"-"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2017-05-12"},{"lineNumber":191,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":192,"author":{"gitId":"-"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2017-05-12"},{"lineNumber":193,"author":{"gitId":"-"},"content":" final ArrayList\u003cPerson\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2017-05-12"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":195,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07"},{"lineNumber":196,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":197,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":198,"author":{"gitId":"-"},"content":" return personsAdded.stream().anyMatch(person::isSamePerson);","lastModifiedDate":"2018-08-07"},{"lineNumber":199,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":201,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":202,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-08"},{"lineNumber":203,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":204,"author":{"gitId":"-"},"content":" personsAdded.add(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":205,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":207,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":208,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04"},{"lineNumber":209,"author":{"gitId":"-"},"content":" return new AddressBook();","lastModifiedDate":"2017-05-04"},{"lineNumber":210,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":211,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":213,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12"}],"authorContributionMap":{"Jawad280":9,"-":204}},{"path":"src/test/java/seedu/address/logic/commands/CommandResultTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2018-12-09"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":7,"author":{"gitId":"chenyixin0"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"chenyixin0"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"chenyixin0"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"chenyixin0"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"chenyixin0"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"chenyixin0"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"chenyixin0"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class CommandResultTest {","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"chenyixin0"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-12-09"},{"lineNumber":22,"author":{"gitId":"chenyixin0"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"chenyixin0"},"content":" // constructor 1: CommandResult(String feedback)","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new CommandResult(\"feedback\");","lastModifiedDate":"2018-12-09"},{"lineNumber":25,"author":{"gitId":"chenyixin0"},"content":" // constructor 2: CommandResult(String feedback, Person viewPerson)","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"chenyixin0"},"content":" CommandResult commandResultViewPerson \u003d new CommandResult(\"feedback\", ALICE);","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"chenyixin0"},"content":" // constructor 3: CommandResult(String feedback, FilteredList\u003cPerson\u003e viewList)","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"chenyixin0"},"content":" CommandResult commandResultViewList \u003d new CommandResult(\"feedback\",","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"chenyixin0"},"content":" new FilteredList\u003c\u003e(model.getFilteredPersonList(), PREDICATE_SHOW_ALL_PERSONS));","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-12-09"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertTrue(commandResult.equals(new CommandResult(\"feedback\")));","lastModifiedDate":"2018-12-09"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertTrue(commandResult.equals(new CommandResult(\"feedback\", false, false)));","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":35,"author":{"gitId":"chenyixin0"},"content":" assertTrue(commandResultViewPerson.equals(new CommandResult(\"feedback\", ALICE)));","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"chenyixin0"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"chenyixin0"},"content":" assertTrue(commandResultViewList.equals(new CommandResult(\"feedback\",","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"chenyixin0"},"content":" new FilteredList\u003c\u003e(model.getFilteredPersonList(), PREDICATE_SHOW_ALL_PERSONS))));","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"chenyixin0"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-12-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertTrue(commandResult.equals(commandResult));","lastModifiedDate":"2018-12-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":43,"author":{"gitId":"chenyixin0"},"content":" assertTrue(commandResultViewPerson.equals(commandResultViewPerson));","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"chenyixin0"},"content":" assertTrue(commandResultViewPerson.getViewPerson().equals(ALICE));","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"chenyixin0"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"chenyixin0"},"content":" assertTrue(commandResultViewList.equals(commandResultViewList));","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"chenyixin0"},"content":" assertTrue(commandResultViewList.getViewList().equals(","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"chenyixin0"},"content":" new FilteredList\u003c\u003e(model.getFilteredPersonList(), PREDICATE_SHOW_ALL_PERSONS)));","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"chenyixin0"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(null));","lastModifiedDate":"2018-12-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(0.5f));","lastModifiedDate":"2018-12-09"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // different feedbackToUser value -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(new CommandResult(\"different\")));","lastModifiedDate":"2018-12-09"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // different showHelp value -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(new CommandResult(\"feedback\", true, false)));","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":62,"author":{"gitId":"-"},"content":" // different exit value -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(new CommandResult(\"feedback\", false, true)));","lastModifiedDate":"2024-03-11"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void hashcode() {","lastModifiedDate":"2018-12-09"},{"lineNumber":68,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new CommandResult(\"feedback\");","lastModifiedDate":"2018-12-09"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":70,"author":{"gitId":"-"},"content":" // same values -\u003e returns same hashcode","lastModifiedDate":"2018-12-09"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertEquals(commandResult.hashCode(), new CommandResult(\"feedback\").hashCode());","lastModifiedDate":"2018-12-09"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":73,"author":{"gitId":"-"},"content":" // different feedbackToUser value -\u003e returns different hashcode","lastModifiedDate":"2018-12-09"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertNotEquals(commandResult.hashCode(), new CommandResult(\"different\").hashCode());","lastModifiedDate":"2018-12-09"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":76,"author":{"gitId":"-"},"content":" // different showHelp value -\u003e returns different hashcode","lastModifiedDate":"2018-12-09"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertNotEquals(commandResult.hashCode(), new CommandResult(\"feedback\", true, false).hashCode());","lastModifiedDate":"2024-03-11"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":79,"author":{"gitId":"-"},"content":" // different exit value -\u003e returns different hashcode","lastModifiedDate":"2018-12-09"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertNotEquals(commandResult.hashCode(), new CommandResult(\"feedback\", false, true).hashCode());","lastModifiedDate":"2024-03-11"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new CommandResult(\"feedback\");","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" String expected \u003d CommandResult.class.getCanonicalName() + \"{feedbackToUser\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" + commandResult.getFeedbackToUser() + \", showHelp\u003d\" + commandResult.isShowHelp()","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" + \", exit\u003d\" + commandResult.isExit() + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertEquals(expected, commandResult.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-12-09"},{"lineNumber":92,"author":{"gitId":"chenyixin0"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":93,"author":{"gitId":"chenyixin0"},"content":"","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"chenyixin0":29,"-":64}},{"path":"src/test/java/seedu/address/logic/commands/CommandTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-07-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_INTERN_DURATION;","lastModifiedDate":"2024-02-26"},{"lineNumber":8,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_INTERVIEW_DATE;","lastModifiedDate":"2024-02-26"},{"lineNumber":9,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_JOB_DESCRIPTION;","lastModifiedDate":"2024-02-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SALARY;","lastModifiedDate":"2024-02-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-07-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-06-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-07-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2024-03-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_AMY \u003d \"11111111\";","lastModifiedDate":"2017-07-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_BOB \u003d \"22222222\";","lastModifiedDate":"2017-07-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_AMY \u003d \"Block 312, Amy Street 1\";","lastModifiedDate":"2017-07-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_BOB \u003d \"Block 123, Bobby Street 3\";","lastModifiedDate":"2017-07-05"},{"lineNumber":41,"author":{"gitId":"ashleygoh1"},"content":" public static final String VALID_TAG_NO_REPLY \u003d \"NR\";","lastModifiedDate":"2024-02-26"},{"lineNumber":42,"author":{"gitId":"ashleygoh1"},"content":" public static final String VALID_TAG_INTERVIEW \u003d \"I\";","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"ashleygoh1"},"content":" public static final String VALID_JOB_DESCRIPTION_AMY \u003d \"Data Science intern\";","lastModifiedDate":"2024-02-26"},{"lineNumber":44,"author":{"gitId":"ashleygoh1"},"content":" public static final String VALID_JOB_DESCRIPTION_BOB \u003d \"Front end developer intern\";","lastModifiedDate":"2024-02-26"},{"lineNumber":45,"author":{"gitId":"ashleygoh1"},"content":" public static final String VALID_INTERVIEW_DATE_AMY \u003d \"15-04-2024 0900\";","lastModifiedDate":"2024-02-26"},{"lineNumber":46,"author":{"gitId":"ashleygoh1"},"content":" public static final String VALID_INTERVIEW_DATE_BOB \u003d \"15-04-2024 1200\";","lastModifiedDate":"2024-02-26"},{"lineNumber":47,"author":{"gitId":"ashleygoh1"},"content":" public static final String VALID_INTERN_DURATION_AMY \u003d \"6 months\";","lastModifiedDate":"2024-02-26"},{"lineNumber":48,"author":{"gitId":"ashleygoh1"},"content":" public static final String VALID_INTERN_DURATION_BOB \u003d \"3 months\";","lastModifiedDate":"2024-02-26"},{"lineNumber":49,"author":{"gitId":"ashleygoh1"},"content":" public static final String VALID_SALARY_AMY \u003d \"500\";","lastModifiedDate":"2024-02-26"},{"lineNumber":50,"author":{"gitId":"ashleygoh1"},"content":" public static final String VALID_SALARY_BOB \u003d \"1000\";","lastModifiedDate":"2024-02-26"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":60,"author":{"gitId":"ashleygoh1"},"content":" public static final String TAG_DESC_NO_REPLY \u003d \" \" + PREFIX_TAG + VALID_TAG_NO_REPLY;","lastModifiedDate":"2024-02-26"},{"lineNumber":61,"author":{"gitId":"ashleygoh1"},"content":" public static final String TAG_DESC_INTERVIEW \u003d \" \" + PREFIX_TAG + VALID_TAG_INTERVIEW;","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"ashleygoh1"},"content":" public static final String JOB_DESCRIPTION_DESC_AMY \u003d \" \" + PREFIX_JOB_DESCRIPTION + VALID_JOB_DESCRIPTION_AMY;","lastModifiedDate":"2024-02-26"},{"lineNumber":63,"author":{"gitId":"ashleygoh1"},"content":" public static final String JOB_DESCRIPTION_DESC_BOB \u003d \" \" + PREFIX_JOB_DESCRIPTION + VALID_JOB_DESCRIPTION_BOB;","lastModifiedDate":"2024-02-26"},{"lineNumber":64,"author":{"gitId":"ashleygoh1"},"content":" public static final String INTERVIEW_DATE_DESC_AMY \u003d \" \" + PREFIX_INTERVIEW_DATE + VALID_INTERVIEW_DATE_AMY;","lastModifiedDate":"2024-02-26"},{"lineNumber":65,"author":{"gitId":"ashleygoh1"},"content":" public static final String INTERVIEW_DATE_DESC_BOB \u003d \" \" + PREFIX_INTERVIEW_DATE + VALID_INTERVIEW_DATE_BOB;","lastModifiedDate":"2024-02-26"},{"lineNumber":66,"author":{"gitId":"ashleygoh1"},"content":" public static final String INTERN_DURATION_DESC_AMY \u003d \" \" + PREFIX_INTERN_DURATION + VALID_INTERN_DURATION_AMY;","lastModifiedDate":"2024-02-26"},{"lineNumber":67,"author":{"gitId":"ashleygoh1"},"content":" public static final String INTERN_DURATION_DESC_BOB \u003d \" \" + PREFIX_INTERN_DURATION + VALID_INTERN_DURATION_BOB;","lastModifiedDate":"2024-02-26"},{"lineNumber":68,"author":{"gitId":"ashleygoh1"},"content":" public static final String SALARY_DESC_AMY \u003d \" \" + PREFIX_SALARY + VALID_SALARY_AMY;","lastModifiedDate":"2024-02-26"},{"lineNumber":69,"author":{"gitId":"ashleygoh1"},"content":" public static final String SALARY_DESC_BOB \u003d \" \" + PREFIX_SALARY + VALID_SALARY_BOB;","lastModifiedDate":"2024-02-26"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public static final String INVALID_NAME_DESC \u003d \" \" + PREFIX_NAME + \"James\u0026\"; // \u0027\u0026\u0027 not allowed in names","lastModifiedDate":"2017-07-05"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public static final String INVALID_PHONE_DESC \u003d \" \" + PREFIX_PHONE + \"911a\"; // \u0027a\u0027 not allowed in phones","lastModifiedDate":"2017-07-05"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public static final String INVALID_ADDRESS_DESC \u003d \" \" + PREFIX_ADDRESS; // empty string not allowed for addresses","lastModifiedDate":"2017-07-05"},{"lineNumber":75,"author":{"gitId":"ashleygoh1"},"content":" public static final String INVALID_TAG_DESC \u003d \" \" + PREFIX_TAG + \"*\"; // \u0027*\u0027 not allowed in tags","lastModifiedDate":"2024-02-26"},{"lineNumber":76,"author":{"gitId":"ashleygoh1"},"content":" public static final String INVALID_JOB_DESCRIPTION_DESC \u003d \" \" + PREFIX_JOB_DESCRIPTION;","lastModifiedDate":"2024-02-26"},{"lineNumber":77,"author":{"gitId":"ashleygoh1"},"content":" // empty string not allowed for job description","lastModifiedDate":"2024-02-26"},{"lineNumber":78,"author":{"gitId":"ashleygoh1"},"content":" public static final String INVALID_INTERN_DURATION_DESC \u003d \" \" + PREFIX_INTERN_DURATION;","lastModifiedDate":"2024-02-26"},{"lineNumber":79,"author":{"gitId":"ashleygoh1"},"content":" // empty string not allowed for intern duration","lastModifiedDate":"2024-02-26"},{"lineNumber":80,"author":{"gitId":"ashleygoh1"},"content":" public static final String INVALID_SALARY_DESC \u003d \" \" + PREFIX_SALARY + \"0\";","lastModifiedDate":"2024-02-26"},{"lineNumber":81,"author":{"gitId":"ashleygoh1"},"content":" // salary need to be above 0 dollar","lastModifiedDate":"2024-02-26"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2024-03-04"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2024-03-04"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":88,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2024-03-04"},{"lineNumber":89,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2024-03-04"},{"lineNumber":90,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2024-03-04"},{"lineNumber":91,"author":{"gitId":"Jawad280"},"content":" .withTags(VALID_TAG_NO_REPLY).withJobDescription(VALID_JOB_DESCRIPTION_AMY)","lastModifiedDate":"2024-03-11"},{"lineNumber":92,"author":{"gitId":"Jawad280"},"content":" .withInterviewDate(VALID_INTERVIEW_DATE_AMY).withInternDuration(VALID_INTERN_DURATION_AMY)","lastModifiedDate":"2024-03-11"},{"lineNumber":93,"author":{"gitId":"Jawad280"},"content":" .withSalary(VALID_SALARY_AMY).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":94,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2024-03-04"},{"lineNumber":95,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2024-03-04"},{"lineNumber":96,"author":{"gitId":"Jawad280"},"content":" .withTags(VALID_TAG_NO_REPLY).withJobDescription(VALID_JOB_DESCRIPTION_BOB)","lastModifiedDate":"2024-03-11"},{"lineNumber":97,"author":{"gitId":"Jawad280"},"content":" .withInterviewDate(VALID_INTERVIEW_DATE_BOB).withInternDuration(VALID_INTERN_DURATION_BOB)","lastModifiedDate":"2024-03-11"},{"lineNumber":98,"author":{"gitId":"Jawad280"},"content":" .withSalary(VALID_SALARY_BOB).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":101,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":102,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":104,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25"},{"lineNumber":106,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25"},{"lineNumber":108,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":109,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":110,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09"},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":113,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15"},{"lineNumber":114,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":118,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":119,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25"},{"lineNumber":120,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09"},{"lineNumber":121,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":122,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25"},{"lineNumber":123,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":124,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09"},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":128,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":129,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":130,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":131,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":132,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25"},{"lineNumber":133,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":134,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25"},{"lineNumber":135,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05"},{"lineNumber":136,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05"},{"lineNumber":137,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":138,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03"},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":142,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":144,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20"},{"lineNumber":145,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show only the person at the given {@code targetIndex} in the","lastModifiedDate":"2018-01-31"},{"lineNumber":146,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31"},{"lineNumber":147,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20"},{"lineNumber":148,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31"},{"lineNumber":149,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31"},{"lineNumber":151,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31"},{"lineNumber":152,"author":{"gitId":"ashleygoh1"},"content":" final String[] splitName \u003d person.getCompanyName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2024-02-25"},{"lineNumber":153,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":155,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08"},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":158,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"eunrcn":1,"Jawad280":6,"ashleygoh1":32,"-":119}},{"path":"src/test/java/seedu/address/logic/commands/EditCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-04"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-04"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-04"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-04"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"chenyixin0"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"chenyixin0"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"chenyixin0"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_INTERN_DURATION_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"chenyixin0"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_INTERVIEW_DATE_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"chenyixin0"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_JOB_DESCRIPTION_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"chenyixin0"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SALARY_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_INTERVIEW;","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-04"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2024-03-04"},{"lineNumber":22,"author":{"gitId":"Jawad280"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-04"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-04"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-04"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-04"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2024-03-04"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-03-04"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-04"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-04"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-04"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-04"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2024-03-04"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-03-04"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":38,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2024-03-04"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for EditCommand.","lastModifiedDate":"2024-03-04"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-04"},{"lineNumber":41,"author":{"gitId":"-"},"content":"public class EditCommandTest {","lastModifiedDate":"2024-03-04"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":43,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-04"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-04"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2024-03-04"},{"lineNumber":47,"author":{"gitId":"Jawad280"},"content":" Person editedPerson \u003d ALICE;","lastModifiedDate":"2024-03-11"},{"lineNumber":48,"author":{"gitId":"Jawad280"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(editedPerson).withTags(\"NR\").build();","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, descriptor);","lastModifiedDate":"2024-03-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":51,"author":{"gitId":"Jawad280"},"content":" String expectedMessage \u003d String.format(","lastModifiedDate":"2024-03-11"},{"lineNumber":52,"author":{"gitId":"Jawad280"},"content":" EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson)","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"Jawad280"},"content":" );","lastModifiedDate":"2024-03-11"},{"lineNumber":54,"author":{"gitId":"Jawad280"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2024-03-11"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":56,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-03-04"},{"lineNumber":57,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2024-03-04"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":59,"author":{"gitId":"Jawad280"},"content":" assertCommandSuccess(editCommand, model, expectedCommandResult, expectedModel);","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-04"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2024-03-04"},{"lineNumber":64,"author":{"gitId":"-"},"content":" Index indexLastPerson \u003d Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2024-03-04"},{"lineNumber":65,"author":{"gitId":"-"},"content":" Person lastPerson \u003d model.getFilteredPersonList().get(indexLastPerson.getZeroBased());","lastModifiedDate":"2024-03-04"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":67,"author":{"gitId":"-"},"content":" PersonBuilder personInList \u003d new PersonBuilder(lastPerson);","lastModifiedDate":"2024-03-04"},{"lineNumber":68,"author":{"gitId":"-"},"content":" Person editedPerson \u003d personInList.withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-03-04"},{"lineNumber":69,"author":{"gitId":"ashleygoh1"},"content":" .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_INTERVIEW)","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"eunrcn"},"content":" .withJobDescription(VALID_JOB_DESCRIPTION_BOB).withInterviewDate(VALID_INTERVIEW_DATE_BOB)","lastModifiedDate":"2024-03-04"},{"lineNumber":71,"author":{"gitId":"eunrcn"},"content":" .withInternDuration(VALID_INTERN_DURATION_BOB).withSalary(VALID_SALARY_BOB).build();","lastModifiedDate":"2024-03-04"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":73,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2024-03-12"},{"lineNumber":74,"author":{"gitId":"chenyixin0"},"content":" .withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-03-12"},{"lineNumber":75,"author":{"gitId":"ashleygoh1"},"content":" .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_INTERVIEW)","lastModifiedDate":"2024-03-13"},{"lineNumber":76,"author":{"gitId":"eunrcn"},"content":" .withJobDescription(VALID_JOB_DESCRIPTION_BOB).withInterviewDate(VALID_INTERVIEW_DATE_BOB)","lastModifiedDate":"2024-03-04"},{"lineNumber":77,"author":{"gitId":"eunrcn"},"content":" .withInternDuration(VALID_INTERN_DURATION_BOB).withSalary(VALID_SALARY_BOB).build();","lastModifiedDate":"2024-03-04"},{"lineNumber":78,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(indexLastPerson, descriptor);","lastModifiedDate":"2024-03-04"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":81,"author":{"gitId":"eunrcn"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS,","lastModifiedDate":"2024-03-04"},{"lineNumber":82,"author":{"gitId":"eunrcn"},"content":" Messages.format(editedPerson));","lastModifiedDate":"2024-03-04"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":84,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-03-04"},{"lineNumber":85,"author":{"gitId":"-"},"content":" expectedModel.setPerson(lastPerson, editedPerson);","lastModifiedDate":"2024-03-04"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":87,"author":{"gitId":"eunrcn"},"content":" // Print actual values for debugging","lastModifiedDate":"2024-03-04"},{"lineNumber":88,"author":{"gitId":"eunrcn"},"content":" System.out.println(\"Actual Message: \" + expectedMessage);","lastModifiedDate":"2024-03-04"},{"lineNumber":89,"author":{"gitId":"eunrcn"},"content":" System.out.println(\"Actual Model: \" + expectedModel);","lastModifiedDate":"2024-03-04"},{"lineNumber":90,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-04"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-04"},{"lineNumber":95,"author":{"gitId":"-"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2024-03-04"},{"lineNumber":96,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, new EditPersonDescriptor());","lastModifiedDate":"2024-03-04"},{"lineNumber":97,"author":{"gitId":"-"},"content":" Person editedPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-03-04"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":99,"author":{"gitId":"eunrcn"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS,","lastModifiedDate":"2024-03-04"},{"lineNumber":100,"author":{"gitId":"eunrcn"},"content":" Messages.format(editedPerson));","lastModifiedDate":"2024-03-04"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":102,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-03-04"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-04"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-04"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2024-03-04"},{"lineNumber":109,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2024-03-04"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":111,"author":{"gitId":"-"},"content":" Person personInFilteredList \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-03-04"},{"lineNumber":112,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder(personInFilteredList).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-04"},{"lineNumber":113,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2024-03-04"},{"lineNumber":114,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2024-03-04"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":116,"author":{"gitId":"eunrcn"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS,","lastModifiedDate":"2024-03-04"},{"lineNumber":117,"author":{"gitId":"eunrcn"},"content":" Messages.format(editedPerson));","lastModifiedDate":"2024-03-04"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":119,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-03-04"},{"lineNumber":120,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2024-03-04"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-04"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":125,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-04"},{"lineNumber":126,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonUnfilteredList_failure() {","lastModifiedDate":"2024-03-04"},{"lineNumber":127,"author":{"gitId":"-"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-03-04"},{"lineNumber":128,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(firstPerson).build();","lastModifiedDate":"2024-03-04"},{"lineNumber":129,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_SECOND_PERSON, descriptor);","lastModifiedDate":"2024-03-04"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":131,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2024-03-04"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":134,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-04"},{"lineNumber":135,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonFilteredList_failure() {","lastModifiedDate":"2024-03-04"},{"lineNumber":136,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2024-03-04"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":138,"author":{"gitId":"-"},"content":" // edit person in filtered list into a duplicate in address book","lastModifiedDate":"2024-03-04"},{"lineNumber":139,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(INDEX_SECOND_PERSON.getZeroBased());","lastModifiedDate":"2024-03-04"},{"lineNumber":140,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2024-03-04"},{"lineNumber":141,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder(personInList).build());","lastModifiedDate":"2024-03-04"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":143,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2024-03-04"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":146,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-04"},{"lineNumber":147,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2024-03-04"},{"lineNumber":148,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2024-03-04"},{"lineNumber":149,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-04"},{"lineNumber":150,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2024-03-04"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":152,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-04"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":155,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-04"},{"lineNumber":156,"author":{"gitId":"-"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2024-03-04"},{"lineNumber":157,"author":{"gitId":"-"},"content":" * but smaller than size of address book","lastModifiedDate":"2024-03-04"},{"lineNumber":158,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-04"},{"lineNumber":159,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-04"},{"lineNumber":160,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2024-03-04"},{"lineNumber":161,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2024-03-04"},{"lineNumber":162,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2024-03-04"},{"lineNumber":163,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2024-03-04"},{"lineNumber":164,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2024-03-04"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":166,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex,","lastModifiedDate":"2024-03-04"},{"lineNumber":167,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2024-03-04"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":169,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-04"},{"lineNumber":170,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":172,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-04"},{"lineNumber":173,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2024-03-04"},{"lineNumber":174,"author":{"gitId":"-"},"content":" final EditCommand standardCommand \u003d new EditCommand(INDEX_FIRST_PERSON, DESC_AMY);","lastModifiedDate":"2024-03-04"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":176,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-04"},{"lineNumber":177,"author":{"gitId":"-"},"content":" EditPersonDescriptor copyDescriptor \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2024-03-04"},{"lineNumber":178,"author":{"gitId":"-"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(INDEX_FIRST_PERSON, copyDescriptor);","lastModifiedDate":"2024-03-04"},{"lineNumber":179,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2024-03-04"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":181,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-04"},{"lineNumber":182,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2024-03-04"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":184,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-04"},{"lineNumber":185,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2024-03-04"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":187,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-04"},{"lineNumber":188,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2024-03-04"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":190,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2024-03-04"},{"lineNumber":191,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_SECOND_PERSON, DESC_AMY)));","lastModifiedDate":"2024-03-04"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":193,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2024-03-04"},{"lineNumber":194,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_FIRST_PERSON, DESC_BOB)));","lastModifiedDate":"2024-03-04"},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":197,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-04"},{"lineNumber":198,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-04"},{"lineNumber":199,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-03-04"},{"lineNumber":200,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2024-03-04"},{"lineNumber":201,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2024-03-04"},{"lineNumber":202,"author":{"gitId":"-"},"content":" String expected \u003d EditCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", editPersonDescriptor\u003d\"","lastModifiedDate":"2024-03-04"},{"lineNumber":203,"author":{"gitId":"-"},"content":" + editPersonDescriptor + \"}\";","lastModifiedDate":"2024-03-04"},{"lineNumber":204,"author":{"gitId":"-"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2024-03-04"},{"lineNumber":205,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":207,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-03-04"}],"authorContributionMap":{"eunrcn":15,"chenyixin0":7,"Jawad280":8,"ashleygoh1":3,"-":174}},{"path":"src/test/java/seedu/address/logic/commands/EditPersonDescriptorTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-04"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-04"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-04"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"Jawad280"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"Jawad280"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"Jawad280"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_INTERN_DURATION_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"Jawad280"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_INTERVIEW_DATE_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"Jawad280"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_JOB_DESCRIPTION_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"Jawad280"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"Jawad280"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"Jawad280"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SALARY_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_INTERVIEW;","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"Jawad280"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_NO_REPLY;","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-04"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2024-03-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2024-03-04"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorTest {","lastModifiedDate":"2024-03-04"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-04"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2024-03-04"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-04"},{"lineNumber":32,"author":{"gitId":"Jawad280"},"content":" EditPersonDescriptor descriptorWithSameValues \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"Jawad280"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"Jawad280"},"content":" .withTags(VALID_TAG_NO_REPLY).withJobDescription(VALID_JOB_DESCRIPTION_AMY)","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"Jawad280"},"content":" .withInterviewDate(VALID_INTERVIEW_DATE_AMY).withInternDuration(VALID_INTERN_DURATION_AMY)","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"Jawad280"},"content":" .withSalary(VALID_SALARY_AMY).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(descriptorWithSameValues));","lastModifiedDate":"2024-03-04"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":39,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-04"},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(DESC_AMY));","lastModifiedDate":"2024-03-04"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":42,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-04"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(null));","lastModifiedDate":"2024-03-04"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-04"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(5));","lastModifiedDate":"2024-03-04"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-04"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(DESC_BOB));","lastModifiedDate":"2024-03-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2024-03-04"},{"lineNumber":52,"author":{"gitId":"-"},"content":" EditPersonDescriptor editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-04"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2024-03-04"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2024-03-04"},{"lineNumber":56,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2024-03-04"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2024-03-04"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2024-03-04"},{"lineNumber":60,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2024-03-04"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2024-03-04"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":63,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2024-03-04"},{"lineNumber":64,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2024-03-04"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2024-03-04"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":67,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2024-03-04"},{"lineNumber":68,"author":{"gitId":"ashleygoh1"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withTags(VALID_TAG_INTERVIEW).build();","lastModifiedDate":"2024-03-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2024-03-04"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-04"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-04"},{"lineNumber":74,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2024-03-04"},{"lineNumber":75,"author":{"gitId":"eunrcn"},"content":" String expected \u003d EditPersonDescriptor.class.getCanonicalName() + \"{Edited Person:\"","lastModifiedDate":"2024-03-04"},{"lineNumber":76,"author":{"gitId":"eunrcn"},"content":" + editPersonDescriptor.getName().orElse(null) + \"; Phone: \"","lastModifiedDate":"2024-03-04"},{"lineNumber":77,"author":{"gitId":"eunrcn"},"content":" + editPersonDescriptor.getPhone().orElse(null) + \"; Email: \"","lastModifiedDate":"2024-03-04"},{"lineNumber":78,"author":{"gitId":"eunrcn"},"content":" + editPersonDescriptor.getEmail().orElse(null) + \"; Address: \"","lastModifiedDate":"2024-03-04"},{"lineNumber":79,"author":{"gitId":"eunrcn"},"content":" + editPersonDescriptor.getAddress().orElse(null) + \"; Tags: \"","lastModifiedDate":"2024-03-04"},{"lineNumber":80,"author":{"gitId":"eunrcn"},"content":" + editPersonDescriptor.getTag().orElse(null) + \"; Job Description: \"","lastModifiedDate":"2024-03-04"},{"lineNumber":81,"author":{"gitId":"eunrcn"},"content":" + editPersonDescriptor.getJobDescription().orElse(null) + \"; Interview Date: \"","lastModifiedDate":"2024-03-04"},{"lineNumber":82,"author":{"gitId":"eunrcn"},"content":" + editPersonDescriptor.getInterviewDate().orElse(null) + \"; Internship Duration: \"","lastModifiedDate":"2024-03-04"},{"lineNumber":83,"author":{"gitId":"eunrcn"},"content":" + editPersonDescriptor.getInternDuration().orElse(null) + \"; Salary: \"","lastModifiedDate":"2024-03-04"},{"lineNumber":84,"author":{"gitId":"eunrcn"},"content":" + editPersonDescriptor.getSalary().orElse(null) + \"}\";","lastModifiedDate":"2024-03-04"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":86,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-03-04"}],"authorContributionMap":{"eunrcn":10,"Jawad280":14,"ashleygoh1":2,"-":60}},{"path":"src/test/java/seedu/address/logic/commands/FindCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.CARL;","lastModifiedDate":"2017-07-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ELLE;","lastModifiedDate":"2017-07-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.FIONA;","lastModifiedDate":"2017-07-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code FindCommand}.","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class FindCommandTest {","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2018-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicate \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"first\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate secondPredicate \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"second\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":" FindCommand findFirstCommand \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" FindCommand findSecondCommand \u003d new FindCommand(secondPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" FindCommand findFirstCommandCopy \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommandCopy));","lastModifiedDate":"2017-06-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(1));","lastModifiedDate":"2017-06-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(null));","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(findSecondCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void execute_zeroKeywords_noPersonFound() {","lastModifiedDate":"2017-08-15"},{"lineNumber":57,"author":{"gitId":"chenyixin0"},"content":" // String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\" \");","lastModifiedDate":"2018-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2024-03-15"},{"lineNumber":60,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":61,"author":{"gitId":"chenyixin0"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":62,"author":{"gitId":"chenyixin0"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":63,"author":{"gitId":"chenyixin0"},"content":" // this test will always fail because the way I implemented the find the list of found names will be","lastModifiedDate":"2024-03-08"},{"lineNumber":64,"author":{"gitId":"chenyixin0"},"content":" // returned as a separate list instead of modifying the existing list inside the model which is","lastModifiedDate":"2024-03-08"},{"lineNumber":65,"author":{"gitId":"chenyixin0"},"content":" // what assertCommandSuccess checks for.","lastModifiedDate":"2024-03-08"},{"lineNumber":66,"author":{"gitId":"chenyixin0"},"content":" // with the current implementation this test is also kind of irrelevant since the find command will not","lastModifiedDate":"2024-03-08"},{"lineNumber":67,"author":{"gitId":"chenyixin0"},"content":" // actually modify the model itself.","lastModifiedDate":"2024-03-08"},{"lineNumber":68,"author":{"gitId":"chenyixin0"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":69,"author":{"gitId":"chenyixin0"},"content":" //assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-08"},{"lineNumber":70,"author":{"gitId":"chenyixin0"},"content":" assertEquals(Collections.emptyList(), model.generateNewFilteredPersonList(predicate));","lastModifiedDate":"2024-03-08"},{"lineNumber":71,"author":{"gitId":"chenyixin0"},"content":" assertEquals(Collections.emptyList(), command.execute(model).getViewList());","lastModifiedDate":"2024-03-15"},{"lineNumber":72,"author":{"gitId":"chenyixin0"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":73,"author":{"gitId":"chenyixin0"},"content":" assertEquals(0, model.generateNewFilteredPersonList(predicate).size());","lastModifiedDate":"2024-03-15"},{"lineNumber":74,"author":{"gitId":"chenyixin0"},"content":" // theres no view size i hope that\u0027s not a problem","lastModifiedDate":"2024-03-15"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void execute_multipleKeywords_multiplePersonsFound() {","lastModifiedDate":"2017-08-15"},{"lineNumber":79,"author":{"gitId":"chenyixin0"},"content":" // String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 3);","lastModifiedDate":"2024-03-15"},{"lineNumber":80,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\"Kurz Elle Kunz\");","lastModifiedDate":"2018-08-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2024-03-15"},{"lineNumber":82,"author":{"gitId":"chenyixin0"},"content":" // expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-03-15"},{"lineNumber":83,"author":{"gitId":"chenyixin0"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":84,"author":{"gitId":"chenyixin0"},"content":" //following line will always fail; see above","lastModifiedDate":"2024-03-08"},{"lineNumber":85,"author":{"gitId":"chenyixin0"},"content":" //assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-08"},{"lineNumber":86,"author":{"gitId":"chenyixin0"},"content":" assertEquals(Arrays.asList(CARL, ELLE, FIONA), model.generateNewFilteredPersonList(predicate));","lastModifiedDate":"2024-03-08"},{"lineNumber":87,"author":{"gitId":"chenyixin0"},"content":" assertEquals(Arrays.asList(CARL, ELLE, FIONA), command.execute(model).getViewList());","lastModifiedDate":"2024-03-15"},{"lineNumber":88,"author":{"gitId":"chenyixin0"},"content":" assertEquals(3, model.generateNewFilteredPersonList(predicate).size());","lastModifiedDate":"2024-03-15"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"keyword\"));","lastModifiedDate":"2019-02-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":" FindCommand findCommand \u003d new FindCommand(predicate);","lastModifiedDate":"2019-02-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":" String expected \u003d FindCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertEquals(expected, findCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-12"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * Parses {@code userInput} into a {@code NameContainsKeywordsPredicate}.","lastModifiedDate":"2018-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":102,"author":{"gitId":"-"},"content":" private NameContainsKeywordsPredicate preparePredicate(String userInput) {","lastModifiedDate":"2018-08-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":" return new NameContainsKeywordsPredicate(Arrays.asList(userInput.split(\"\\\\s+\")));","lastModifiedDate":"2018-08-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":105,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"chenyixin0":23,"-":82}},{"path":"src/test/java/seedu/address/logic/commands/ViewCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"eunrcn"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"eunrcn"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"eunrcn"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"eunrcn"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"eunrcn"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"eunrcn"},"content":"import java.util.List;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"eunrcn"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"eunrcn"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"eunrcn"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"eunrcn"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"eunrcn"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"eunrcn"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"eunrcn"},"content":"class ViewCommandTest {","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"eunrcn"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"eunrcn"},"content":" void execute_validIndex_success() throws CommandException {","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"eunrcn"},"content":" Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"eunrcn"},"content":" List\u003cPerson\u003e personList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"eunrcn"},"content":" Person personToView \u003d personList.get(0);","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"eunrcn"},"content":" ViewCommand viewCommand \u003d new ViewCommand(Index.fromZeroBased(0));","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"eunrcn"},"content":" CommandResult commandResult \u003d viewCommand.execute(model);","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"eunrcn"},"content":" assertEquals(","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"eunrcn"},"content":" String.format(","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"ashleygoh1"},"content":" \"Viewing Person: %s; Phone: %s; Email: %s; Address: %s; Tags: %s; \"","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"ashleygoh1"},"content":" + \"Job Description: %s; Interview Date: %s; Internship Duration: %s; Salary: %s\",","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"eunrcn"},"content":" personToView.getCompanyName(),","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"eunrcn"},"content":" personToView.getPhone(),","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"eunrcn"},"content":" personToView.getEmail(),","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"eunrcn"},"content":" personToView.getAddress(),","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"eunrcn"},"content":" personToView.getTag(),","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"eunrcn"},"content":" personToView.getJobDescription(),","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"eunrcn"},"content":" personToView.getInterviewDate(),","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"eunrcn"},"content":" personToView.getInternDuration(),","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"eunrcn"},"content":" personToView.getSalary()","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"eunrcn"},"content":" ),","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"eunrcn"},"content":" commandResult.getFeedbackToUser()","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"eunrcn"},"content":" );","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"eunrcn"},"content":" assertEquals(personToView, commandResult.getViewPerson());","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"eunrcn"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"eunrcn"},"content":" void execute_invalidIndex_throwsCommandException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"eunrcn"},"content":" Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"eunrcn"},"content":" ViewCommand viewCommand \u003d new ViewCommand(Index.fromZeroBased(10)); // Assuming there are fewer than 10 persons","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"eunrcn"},"content":" assertThrows(CommandException.class, () -\u003e viewCommand.execute(model));","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"eunrcn"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"eunrcn"},"content":" void equals_sameObject_true() {","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"eunrcn"},"content":" ViewCommand viewCommand \u003d new ViewCommand(Index.fromZeroBased(0));","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"eunrcn"},"content":" assertEquals(viewCommand, viewCommand);","lastModifiedDate":"2024-03-14"},{"lineNumber":63,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"eunrcn"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":66,"author":{"gitId":"eunrcn"},"content":" void equals_differentObject_false() {","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"eunrcn"},"content":" ViewCommand viewCommand1 \u003d new ViewCommand(Index.fromZeroBased(0));","lastModifiedDate":"2024-03-12"},{"lineNumber":68,"author":{"gitId":"eunrcn"},"content":" ViewCommand viewCommand2 \u003d new ViewCommand(Index.fromZeroBased(1));","lastModifiedDate":"2024-03-12"},{"lineNumber":69,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"eunrcn"},"content":" assertNotEquals(viewCommand1, viewCommand2);","lastModifiedDate":"2024-03-14"},{"lineNumber":71,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":72,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":73,"author":{"gitId":"eunrcn"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":74,"author":{"gitId":"eunrcn"},"content":" void equals_differentClass_false() {","lastModifiedDate":"2024-03-12"},{"lineNumber":75,"author":{"gitId":"eunrcn"},"content":" ViewCommand viewCommand \u003d new ViewCommand(Index.fromZeroBased(0));","lastModifiedDate":"2024-03-12"},{"lineNumber":76,"author":{"gitId":"eunrcn"},"content":" Object otherObject \u003d new Object();","lastModifiedDate":"2024-03-12"},{"lineNumber":77,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":78,"author":{"gitId":"eunrcn"},"content":" assertNotEquals(viewCommand, otherObject);","lastModifiedDate":"2024-03-14"},{"lineNumber":79,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":80,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":81,"author":{"gitId":"eunrcn"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":82,"author":{"gitId":"eunrcn"},"content":" public void toString_validIndex_success() {","lastModifiedDate":"2024-03-14"},{"lineNumber":83,"author":{"gitId":"eunrcn"},"content":" // Create an Index object","lastModifiedDate":"2024-03-14"},{"lineNumber":84,"author":{"gitId":"eunrcn"},"content":" Index index \u003d Index.fromZeroBased(3);","lastModifiedDate":"2024-03-14"},{"lineNumber":85,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":86,"author":{"gitId":"eunrcn"},"content":" // Create a ViewCommand object using the Index","lastModifiedDate":"2024-03-14"},{"lineNumber":87,"author":{"gitId":"eunrcn"},"content":" ViewCommand viewCommand \u003d new ViewCommand(index);","lastModifiedDate":"2024-03-14"},{"lineNumber":88,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":89,"author":{"gitId":"eunrcn"},"content":" // Create the expected string representation using variables","lastModifiedDate":"2024-03-14"},{"lineNumber":90,"author":{"gitId":"eunrcn"},"content":" String expectedToString \u003d String.format(\"seedu.address.logic.commands.ViewCommand{targetIndex\u003d%s}\", index);","lastModifiedDate":"2024-03-14"},{"lineNumber":91,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":92,"author":{"gitId":"eunrcn"},"content":" // Perform the assertion","lastModifiedDate":"2024-03-14"},{"lineNumber":93,"author":{"gitId":"eunrcn"},"content":" assertEquals(expectedToString, viewCommand.toString());","lastModifiedDate":"2024-03-14"},{"lineNumber":94,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":95,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":96,"author":{"gitId":"eunrcn"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"eunrcn":93,"ashleygoh1":3}},{"path":"src/test/java/seedu/address/logic/parser/AddCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-15"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INTERN_DURATION_DESC_AMY;","lastModifiedDate":"2024-02-26"},{"lineNumber":9,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INTERN_DURATION_DESC_BOB;","lastModifiedDate":"2024-02-26"},{"lineNumber":10,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INTERVIEW_DATE_DESC_AMY;","lastModifiedDate":"2024-02-26"},{"lineNumber":11,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INTERVIEW_DATE_DESC_BOB;","lastModifiedDate":"2024-02-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":14,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_INTERN_DURATION_DESC;","lastModifiedDate":"2024-02-26"},{"lineNumber":15,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_JOB_DESCRIPTION_DESC;","lastModifiedDate":"2024-02-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":18,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_SALARY_DESC;","lastModifiedDate":"2024-02-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":20,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.JOB_DESCRIPTION_DESC_AMY;","lastModifiedDate":"2024-02-26"},{"lineNumber":21,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.JOB_DESCRIPTION_DESC_BOB;","lastModifiedDate":"2024-02-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2017-12-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2017-12-23"},{"lineNumber":28,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SALARY_DESC_AMY;","lastModifiedDate":"2024-02-26"},{"lineNumber":29,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SALARY_DESC_BOB;","lastModifiedDate":"2024-02-26"},{"lineNumber":30,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_INTERVIEW;","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_NO_REPLY;","lastModifiedDate":"2024-02-26"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":34,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_INTERN_DURATION_BOB;","lastModifiedDate":"2024-02-26"},{"lineNumber":35,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_INTERVIEW_DATE_BOB;","lastModifiedDate":"2024-02-26"},{"lineNumber":36,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_JOB_DESCRIPTION_BOB;","lastModifiedDate":"2024-02-26"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14"},{"lineNumber":40,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14"},{"lineNumber":41,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_INTERN_DURATION;","lastModifiedDate":"2024-02-26"},{"lineNumber":42,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_INTERVIEW_DATE;","lastModifiedDate":"2024-02-26"},{"lineNumber":43,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_JOB_DESCRIPTION;","lastModifiedDate":"2024-02-26"},{"lineNumber":44,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-07-14"},{"lineNumber":45,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14"},{"lineNumber":46,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SALARY;","lastModifiedDate":"2024-02-26"},{"lineNumber":47,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-02-26"},{"lineNumber":48,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":49,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":50,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-07-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":52,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":54,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":55,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-06-15"},{"lineNumber":57,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.InternDuration;","lastModifiedDate":"2024-02-26"},{"lineNumber":58,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.JobDescription;","lastModifiedDate":"2024-02-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-06-15"},{"lineNumber":60,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15"},{"lineNumber":61,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-06-15"},{"lineNumber":62,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.Salary;","lastModifiedDate":"2024-02-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-06-15"},{"lineNumber":64,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":66,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":67,"author":{"gitId":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2017-06-15"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":71,"author":{"gitId":"ashleygoh1"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB).build();","lastModifiedDate":"2024-02-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":73,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":75,"author":{"gitId":"ashleygoh1"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_INTERVIEW","lastModifiedDate":"2024-03-12"},{"lineNumber":76,"author":{"gitId":"ashleygoh1"},"content":" + JOB_DESCRIPTION_DESC_BOB + INTERVIEW_DATE_DESC_BOB","lastModifiedDate":"2024-02-26"},{"lineNumber":77,"author":{"gitId":"ashleygoh1"},"content":" + INTERN_DURATION_DESC_BOB + SALARY_DESC_BOB, new AddCommand(expectedPerson));","lastModifiedDate":"2024-02-26"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":83,"author":{"gitId":"-"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-07-14"},{"lineNumber":84,"author":{"gitId":"ashleygoh1"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_INTERVIEW","lastModifiedDate":"2024-03-12"},{"lineNumber":85,"author":{"gitId":"ashleygoh1"},"content":" + JOB_DESCRIPTION_DESC_BOB + INTERVIEW_DATE_DESC_BOB","lastModifiedDate":"2024-02-26"},{"lineNumber":86,"author":{"gitId":"ashleygoh1"},"content":" + INTERN_DURATION_DESC_BOB + SALARY_DESC_BOB;","lastModifiedDate":"2024-02-26"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":88,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":90,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":92,"author":{"gitId":"-"},"content":" // multiple phones","lastModifiedDate":"2023-07-14"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":94,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":96,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14"},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":98,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":100,"author":{"gitId":"-"},"content":" // multiple addresses","lastModifiedDate":"2023-07-14"},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertParseFailure(parser, ADDRESS_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":104,"author":{"gitId":"ashleygoh1"},"content":" // multiple job description","lastModifiedDate":"2024-02-26"},{"lineNumber":105,"author":{"gitId":"ashleygoh1"},"content":" assertParseFailure(parser, JOB_DESCRIPTION_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-02-26"},{"lineNumber":106,"author":{"gitId":"ashleygoh1"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_JOB_DESCRIPTION));","lastModifiedDate":"2024-02-26"},{"lineNumber":107,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":108,"author":{"gitId":"ashleygoh1"},"content":" // multiple interview date","lastModifiedDate":"2024-02-26"},{"lineNumber":109,"author":{"gitId":"ashleygoh1"},"content":" assertParseFailure(parser, INTERVIEW_DATE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-02-26"},{"lineNumber":110,"author":{"gitId":"ashleygoh1"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_INTERVIEW_DATE));","lastModifiedDate":"2024-02-26"},{"lineNumber":111,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":112,"author":{"gitId":"ashleygoh1"},"content":" // multiple intern duration","lastModifiedDate":"2024-02-26"},{"lineNumber":113,"author":{"gitId":"ashleygoh1"},"content":" assertParseFailure(parser, INTERN_DURATION_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-02-26"},{"lineNumber":114,"author":{"gitId":"ashleygoh1"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_INTERN_DURATION));","lastModifiedDate":"2024-02-26"},{"lineNumber":115,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":116,"author":{"gitId":"ashleygoh1"},"content":" // multiple salary","lastModifiedDate":"2024-02-26"},{"lineNumber":117,"author":{"gitId":"ashleygoh1"},"content":" assertParseFailure(parser, SALARY_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-02-26"},{"lineNumber":118,"author":{"gitId":"ashleygoh1"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_SALARY));","lastModifiedDate":"2024-02-26"},{"lineNumber":119,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":120,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":" validExpectedPersonString + PHONE_DESC_AMY + EMAIL_DESC_AMY + NAME_DESC_AMY + ADDRESS_DESC_AMY","lastModifiedDate":"2023-07-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":" + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":124,"author":{"gitId":"ashleygoh1"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_ADDRESS, PREFIX_EMAIL, PREFIX_PHONE,","lastModifiedDate":"2024-02-26"},{"lineNumber":125,"author":{"gitId":"ashleygoh1"},"content":" PREFIX_TAG, PREFIX_JOB_DESCRIPTION, PREFIX_INTERVIEW_DATE, PREFIX_INTERN_DURATION,","lastModifiedDate":"2024-02-26"},{"lineNumber":126,"author":{"gitId":"ashleygoh1"},"content":" PREFIX_SALARY));","lastModifiedDate":"2024-02-26"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":128,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":130,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":131,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":132,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":134,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":135,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":136,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":138,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":139,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_PHONE_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":140,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":142,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":143,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_ADDRESS_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":144,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":146,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":148,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":149,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":150,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":152,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":153,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":154,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":156,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":157,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_PHONE_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":158,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":160,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":161,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_ADDRESS_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":162,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":165,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":166,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":167,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":169,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":170,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":173,"author":{"gitId":"-"},"content":" // missing phone prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":174,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_PHONE_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":177,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":178,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":181,"author":{"gitId":"-"},"content":" // missing address prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":182,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":185,"author":{"gitId":"ashleygoh1"},"content":" // missing tag prefix","lastModifiedDate":"2024-02-26"},{"lineNumber":186,"author":{"gitId":"ashleygoh1"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2024-02-26"},{"lineNumber":187,"author":{"gitId":"ashleygoh1"},"content":" expectedMessage);","lastModifiedDate":"2024-02-26"},{"lineNumber":188,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":189,"author":{"gitId":"ashleygoh1"},"content":" // missing job description prefix","lastModifiedDate":"2024-02-26"},{"lineNumber":190,"author":{"gitId":"ashleygoh1"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + VALID_ADDRESS_BOB","lastModifiedDate":"2024-02-26"},{"lineNumber":191,"author":{"gitId":"ashleygoh1"},"content":" + VALID_JOB_DESCRIPTION_BOB,","lastModifiedDate":"2024-02-26"},{"lineNumber":192,"author":{"gitId":"ashleygoh1"},"content":" expectedMessage);","lastModifiedDate":"2024-02-26"},{"lineNumber":193,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":194,"author":{"gitId":"ashleygoh1"},"content":" // missing interview date prefix","lastModifiedDate":"2024-02-26"},{"lineNumber":195,"author":{"gitId":"ashleygoh1"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + VALID_ADDRESS_BOB","lastModifiedDate":"2024-02-26"},{"lineNumber":196,"author":{"gitId":"ashleygoh1"},"content":" + VALID_INTERVIEW_DATE_BOB,","lastModifiedDate":"2024-02-26"},{"lineNumber":197,"author":{"gitId":"ashleygoh1"},"content":" expectedMessage);","lastModifiedDate":"2024-02-26"},{"lineNumber":198,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":199,"author":{"gitId":"ashleygoh1"},"content":" // missing intern duration prefix","lastModifiedDate":"2024-02-26"},{"lineNumber":200,"author":{"gitId":"ashleygoh1"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + VALID_ADDRESS_BOB","lastModifiedDate":"2024-02-26"},{"lineNumber":201,"author":{"gitId":"ashleygoh1"},"content":" + VALID_INTERN_DURATION_BOB,","lastModifiedDate":"2024-02-26"},{"lineNumber":202,"author":{"gitId":"ashleygoh1"},"content":" expectedMessage);","lastModifiedDate":"2024-02-26"},{"lineNumber":203,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":204,"author":{"gitId":"ashleygoh1"},"content":" // missing salary prefix","lastModifiedDate":"2024-02-26"},{"lineNumber":205,"author":{"gitId":"ashleygoh1"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2024-02-26"},{"lineNumber":206,"author":{"gitId":"ashleygoh1"},"content":" expectedMessage);","lastModifiedDate":"2024-02-26"},{"lineNumber":207,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":208,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15"},{"lineNumber":209,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_PHONE_BOB + VALID_EMAIL_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":210,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":213,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":214,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":215,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15"},{"lineNumber":216,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":217,"author":{"gitId":"ashleygoh1"},"content":" + TAG_DESC_INTERVIEW + JOB_DESCRIPTION_DESC_BOB + INTERVIEW_DATE_DESC_BOB","lastModifiedDate":"2024-03-12"},{"lineNumber":218,"author":{"gitId":"ashleygoh1"},"content":" + INTERN_DURATION_DESC_BOB + SALARY_DESC_BOB, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-26"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":220,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15"},{"lineNumber":221,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_PHONE_DESC + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":222,"author":{"gitId":"ashleygoh1"},"content":" + TAG_DESC_INTERVIEW + JOB_DESCRIPTION_DESC_BOB + INTERVIEW_DATE_DESC_BOB","lastModifiedDate":"2024-03-12"},{"lineNumber":223,"author":{"gitId":"ashleygoh1"},"content":" + INTERN_DURATION_DESC_BOB + SALARY_DESC_BOB, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-26"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":225,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15"},{"lineNumber":226,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":227,"author":{"gitId":"ashleygoh1"},"content":" + TAG_DESC_INTERVIEW + JOB_DESCRIPTION_DESC_BOB + INTERVIEW_DATE_DESC_BOB","lastModifiedDate":"2024-03-12"},{"lineNumber":228,"author":{"gitId":"ashleygoh1"},"content":" + INTERN_DURATION_DESC_BOB + SALARY_DESC_BOB, Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-26"},{"lineNumber":229,"author":{"gitId":"-"},"content":" // invalid tag","lastModifiedDate":"2017-06-15"},{"lineNumber":230,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":231,"author":{"gitId":"ashleygoh1"},"content":" + INVALID_TAG_DESC + JOB_DESCRIPTION_DESC_BOB + INTERVIEW_DATE_DESC_BOB","lastModifiedDate":"2024-02-26"},{"lineNumber":232,"author":{"gitId":"ashleygoh1"},"content":" + INTERN_DURATION_DESC_BOB + SALARY_DESC_BOB, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-26"},{"lineNumber":233,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":234,"author":{"gitId":"ashleygoh1"},"content":" // invalid job description","lastModifiedDate":"2024-02-26"},{"lineNumber":235,"author":{"gitId":"ashleygoh1"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-02-26"},{"lineNumber":236,"author":{"gitId":"ashleygoh1"},"content":" + TAG_DESC_INTERVIEW + INVALID_JOB_DESCRIPTION_DESC + INTERVIEW_DATE_DESC_BOB","lastModifiedDate":"2024-03-12"},{"lineNumber":237,"author":{"gitId":"ashleygoh1"},"content":" + INTERN_DURATION_DESC_BOB + SALARY_DESC_BOB, JobDescription.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-26"},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":239,"author":{"gitId":"ashleygoh1"},"content":" // invalid intern duration","lastModifiedDate":"2024-02-26"},{"lineNumber":240,"author":{"gitId":"ashleygoh1"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-02-26"},{"lineNumber":241,"author":{"gitId":"ashleygoh1"},"content":" + TAG_DESC_INTERVIEW + JOB_DESCRIPTION_DESC_BOB + INTERVIEW_DATE_DESC_BOB","lastModifiedDate":"2024-03-12"},{"lineNumber":242,"author":{"gitId":"ashleygoh1"},"content":" + INVALID_INTERN_DURATION_DESC + SALARY_DESC_BOB, InternDuration.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-26"},{"lineNumber":243,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":244,"author":{"gitId":"ashleygoh1"},"content":" // invalid salary","lastModifiedDate":"2024-02-26"},{"lineNumber":245,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-02-26"},{"lineNumber":246,"author":{"gitId":"ashleygoh1"},"content":" + TAG_DESC_INTERVIEW + JOB_DESCRIPTION_DESC_BOB + INTERVIEW_DATE_DESC_BOB","lastModifiedDate":"2024-03-12"},{"lineNumber":247,"author":{"gitId":"ashleygoh1"},"content":" + INTERN_DURATION_DESC_BOB + INVALID_SALARY_DESC, Salary.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-26"},{"lineNumber":248,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":249,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15"},{"lineNumber":250,"author":{"gitId":"ashleygoh1"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2024-02-26"},{"lineNumber":251,"author":{"gitId":"ashleygoh1"},"content":" + TAG_DESC_INTERVIEW + JOB_DESCRIPTION_DESC_BOB + INTERVIEW_DATE_DESC_BOB","lastModifiedDate":"2024-03-12"},{"lineNumber":252,"author":{"gitId":"ashleygoh1"},"content":" + INTERN_DURATION_DESC_BOB + INVALID_SALARY_DESC,","lastModifiedDate":"2024-02-26"},{"lineNumber":253,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":257,"author":{"gitId":"ashleygoh1"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_INTERVIEW + TAG_DESC_NO_REPLY,","lastModifiedDate":"2024-03-12"},{"lineNumber":258,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-12-23"},{"lineNumber":259,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":260,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"ashleygoh1":97,"-":163}},{"path":"src/test/java/seedu/address/logic/parser/AddressBookParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":15,"author":{"gitId":"eunrcn"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.logic.commands.ViewCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonUtil;","lastModifiedDate":"2017-06-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":32,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(PersonUtil.getAddCommand(person));","lastModifiedDate":"2017-06-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertEquals(new AddCommand(person), command);","lastModifiedDate":"2017-06-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":44,"author":{"gitId":"eunrcn"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"eunrcn"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"eunrcn"},"content":" Index index \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"eunrcn"},"content":" EditCommand.EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(\"Betty\").build();","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"eunrcn"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"eunrcn"},"content":" String.format(\"%s %d %s\", EditCommand.COMMAND_WORD, index.getOneBased(), \"c/\" + \"Betty\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"eunrcn"},"content":" assertEquals(new EditCommand(index, descriptor), command);","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2024-03-12"},{"lineNumber":63,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"-"},"content":" DeleteCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertEquals(new DeleteCommand(INDEX_FIRST_PERSON), command);","lastModifiedDate":"2024-03-12"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2024-03-12"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2024-03-12"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2024-03-12"},{"lineNumber":76,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2024-03-12"},{"lineNumber":77,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2024-03-12"},{"lineNumber":78,"author":{"gitId":"eunrcn"},"content":" FindCommand.COMMAND_WORD + \" \" + String.join(\" \", keywords));","lastModifiedDate":"2024-03-14"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertEquals(new FindCommand(new NameContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2024-03-12"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2024-03-12"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2024-03-12"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2024-03-12"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2024-03-12"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD) instanceof ListCommand);","lastModifiedDate":"2024-03-12"},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" 3\") instanceof ListCommand);","lastModifiedDate":"2024-03-12"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":94,"author":{"gitId":"eunrcn"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":95,"author":{"gitId":"eunrcn"},"content":" public void parseCommand_view() throws Exception {","lastModifiedDate":"2024-03-12"},{"lineNumber":96,"author":{"gitId":"eunrcn"},"content":" Index index \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-12"},{"lineNumber":97,"author":{"gitId":"eunrcn"},"content":" ViewCommand command \u003d (ViewCommand) parser.parseCommand(","lastModifiedDate":"2024-03-12"},{"lineNumber":98,"author":{"gitId":"eunrcn"},"content":" ViewCommand.COMMAND_WORD + \" \" + (index).getOneBased());","lastModifiedDate":"2024-03-14"},{"lineNumber":99,"author":{"gitId":"eunrcn"},"content":" assertEquals(new ViewCommand(index), command);","lastModifiedDate":"2024-03-12"},{"lineNumber":100,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":109,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":112,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"eunrcn":21,"ashleygoh1":1,"-":90}},{"path":"src/test/java/seedu/address/logic/parser/EditCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-04"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-04"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"chenyixin0"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INTERN_DURATION_DESC_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"chenyixin0"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INTERVIEW_DATE_DESC_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"chenyixin0"},"content":"import static seedu.address.logic.commands.CommandTestUtil.JOB_DESCRIPTION_DESC_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"chenyixin0"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SALARY_DESC_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_INTERVIEW;","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"chenyixin0"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_NO_REPLY;","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"chenyixin0"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_INTERN_DURATION_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"chenyixin0"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_INTERVIEW_DATE_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"chenyixin0"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_JOB_DESCRIPTION_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"chenyixin0"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SALARY_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_INTERVIEW;","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"Jawad280"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_NO_REPLY;","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-04"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-04"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-04"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-04"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-04"},{"lineNumber":38,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-04"},{"lineNumber":39,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-04"},{"lineNumber":40,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2024-03-04"},{"lineNumber":41,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_PERSON;","lastModifiedDate":"2024-03-04"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":43,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-04"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-04"},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-04"},{"lineNumber":47,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2024-03-04"},{"lineNumber":48,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2024-03-04"},{"lineNumber":49,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-04"},{"lineNumber":51,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-04"},{"lineNumber":52,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-04"},{"lineNumber":53,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2024-03-04"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":55,"author":{"gitId":"-"},"content":"public class EditCommandParserTest {","lastModifiedDate":"2024-03-04"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":57,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2024-03-04"},{"lineNumber":58,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-03-04"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":60,"author":{"gitId":"Jawad280"},"content":" private final EditCommandParser parser \u003d new EditCommandParser();","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-04"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2024-03-04"},{"lineNumber":64,"author":{"gitId":"-"},"content":" // no index specified","lastModifiedDate":"2024-03-04"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-04"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":67,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2024-03-04"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\", EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2024-03-04"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":70,"author":{"gitId":"-"},"content":" // no index and no field specified","lastModifiedDate":"2024-03-04"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-04"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-04"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2024-03-04"},{"lineNumber":76,"author":{"gitId":"-"},"content":" // negative index","lastModifiedDate":"2024-03-04"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"-5\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-04"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":79,"author":{"gitId":"-"},"content":" // zero index","lastModifiedDate":"2024-03-04"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"0\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-04"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":82,"author":{"gitId":"-"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2024-03-04"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-04"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":85,"author":{"gitId":"-"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2024-03-04"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 i/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-04"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-04"},{"lineNumber":90,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2024-03-04"},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2024-03-04"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC, Phone.MESSAGE_CONSTRAINTS); // invalid phone","lastModifiedDate":"2024-03-04"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_EMAIL_DESC, Email.MESSAGE_CONSTRAINTS); // invalid email","lastModifiedDate":"2024-03-04"},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_TAG_DESC, Tag.MESSAGE_CONSTRAINTS); // invalid tag","lastModifiedDate":"2024-03-04"},{"lineNumber":95,"author":{"gitId":"Jawad280"},"content":" // Since address is optional, the following testcase is not relevant","lastModifiedDate":"2024-03-11"},{"lineNumber":96,"author":{"gitId":"Jawad280"},"content":" // assertParseFailure(parser, \"1\" + INVALID_ADDRESS_DESC, Address.MESSAGE_CONSTRAINTS); // invalid address","lastModifiedDate":"2024-03-11"},{"lineNumber":97,"author":{"gitId":"-"},"content":" // invalid phone followed by valid email","lastModifiedDate":"2024-03-04"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC + EMAIL_DESC_AMY, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-04"},{"lineNumber":99,"author":{"gitId":"-"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2024-03-04"},{"lineNumber":100,"author":{"gitId":"Jawad280"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC + INVALID_EMAIL_DESC + VALID_ADDRESS_AMY","lastModifiedDate":"2024-03-11"},{"lineNumber":101,"author":{"gitId":"Jawad280"},"content":" + VALID_PHONE_AMY, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-11"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-04"},{"lineNumber":105,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2024-03-04"},{"lineNumber":106,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2024-03-04"},{"lineNumber":107,"author":{"gitId":"eunrcn"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + TAG_DESC_NO_REPLY","lastModifiedDate":"2024-03-04"},{"lineNumber":108,"author":{"gitId":"eunrcn"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + NAME_DESC_AMY + JOB_DESCRIPTION_DESC_AMY + INTERVIEW_DATE_DESC_AMY","lastModifiedDate":"2024-03-04"},{"lineNumber":109,"author":{"gitId":"eunrcn"},"content":" + INTERN_DURATION_DESC_AMY + SALARY_DESC_AMY;","lastModifiedDate":"2024-03-04"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":111,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2024-03-04"},{"lineNumber":112,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2024-03-04"},{"lineNumber":113,"author":{"gitId":"Jawad280"},"content":" .withTags(VALID_TAG_NO_REPLY).withJobDescription(VALID_JOB_DESCRIPTION_AMY)","lastModifiedDate":"2024-03-11"},{"lineNumber":114,"author":{"gitId":"eunrcn"},"content":" .withInterviewDate(VALID_INTERVIEW_DATE_AMY).withInternDuration(VALID_INTERN_DURATION_AMY)","lastModifiedDate":"2024-03-04"},{"lineNumber":115,"author":{"gitId":"eunrcn"},"content":" .withSalary(VALID_SALARY_AMY).build();","lastModifiedDate":"2024-03-04"},{"lineNumber":116,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-04"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-04"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-04"},{"lineNumber":122,"author":{"gitId":"-"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2024-03-04"},{"lineNumber":123,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-04"},{"lineNumber":124,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + EMAIL_DESC_AMY;","lastModifiedDate":"2024-03-04"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":126,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-03-04"},{"lineNumber":127,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2024-03-04"},{"lineNumber":128,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-04"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-04"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":133,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-04"},{"lineNumber":134,"author":{"gitId":"-"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2024-03-04"},{"lineNumber":135,"author":{"gitId":"-"},"content":" // name","lastModifiedDate":"2024-03-04"},{"lineNumber":136,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2024-03-04"},{"lineNumber":137,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + NAME_DESC_AMY;","lastModifiedDate":"2024-03-04"},{"lineNumber":138,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY).build();","lastModifiedDate":"2024-03-04"},{"lineNumber":139,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-04"},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-04"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":142,"author":{"gitId":"-"},"content":" // phone","lastModifiedDate":"2024-03-04"},{"lineNumber":143,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY;","lastModifiedDate":"2024-03-04"},{"lineNumber":144,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_AMY).build();","lastModifiedDate":"2024-03-04"},{"lineNumber":145,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-04"},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-04"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":148,"author":{"gitId":"-"},"content":" // email","lastModifiedDate":"2024-03-04"},{"lineNumber":149,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + EMAIL_DESC_AMY;","lastModifiedDate":"2024-03-04"},{"lineNumber":150,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2024-03-04"},{"lineNumber":151,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-04"},{"lineNumber":152,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-04"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":154,"author":{"gitId":"-"},"content":" // address","lastModifiedDate":"2024-03-04"},{"lineNumber":155,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + ADDRESS_DESC_AMY;","lastModifiedDate":"2024-03-04"},{"lineNumber":156,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withAddress(VALID_ADDRESS_AMY).build();","lastModifiedDate":"2024-03-04"},{"lineNumber":157,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-04"},{"lineNumber":158,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-04"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":160,"author":{"gitId":"Jawad280"},"content":" // tag","lastModifiedDate":"2024-03-11"},{"lineNumber":161,"author":{"gitId":"ashleygoh1"},"content":" userInput \u003d targetIndex.getOneBased() + TAG_DESC_INTERVIEW;","lastModifiedDate":"2024-03-13"},{"lineNumber":162,"author":{"gitId":"ashleygoh1"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withTags(VALID_TAG_INTERVIEW).build();","lastModifiedDate":"2024-03-13"},{"lineNumber":163,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":164,"author":{"gitId":"eunrcn"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-04"},{"lineNumber":165,"author":{"gitId":"eunrcn"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-04"},{"lineNumber":166,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":167,"author":{"gitId":"eunrcn"},"content":" // job description","lastModifiedDate":"2024-03-04"},{"lineNumber":168,"author":{"gitId":"Jawad280"},"content":" userInput \u003d targetIndex.getOneBased() + JOB_DESCRIPTION_DESC_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":169,"author":{"gitId":"eunrcn"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withJobDescription(VALID_JOB_DESCRIPTION_AMY).build();","lastModifiedDate":"2024-03-04"},{"lineNumber":170,"author":{"gitId":"eunrcn"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-04"},{"lineNumber":171,"author":{"gitId":"eunrcn"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-04"},{"lineNumber":172,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":173,"author":{"gitId":"eunrcn"},"content":" // interview date","lastModifiedDate":"2024-03-04"},{"lineNumber":174,"author":{"gitId":"Jawad280"},"content":" userInput \u003d targetIndex.getOneBased() + INTERVIEW_DATE_DESC_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":175,"author":{"gitId":"eunrcn"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withInterviewDate(VALID_INTERVIEW_DATE_AMY).build();","lastModifiedDate":"2024-03-04"},{"lineNumber":176,"author":{"gitId":"eunrcn"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-04"},{"lineNumber":177,"author":{"gitId":"eunrcn"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-04"},{"lineNumber":178,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":179,"author":{"gitId":"eunrcn"},"content":" // intern duration","lastModifiedDate":"2024-03-04"},{"lineNumber":180,"author":{"gitId":"Jawad280"},"content":" userInput \u003d targetIndex.getOneBased() + INTERN_DURATION_DESC_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":181,"author":{"gitId":"eunrcn"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withInternDuration(VALID_INTERN_DURATION_AMY).build();","lastModifiedDate":"2024-03-04"},{"lineNumber":182,"author":{"gitId":"eunrcn"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-04"},{"lineNumber":183,"author":{"gitId":"eunrcn"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-04"},{"lineNumber":184,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":185,"author":{"gitId":"eunrcn"},"content":" // salary","lastModifiedDate":"2024-03-04"},{"lineNumber":186,"author":{"gitId":"Jawad280"},"content":" userInput \u003d targetIndex.getOneBased() + SALARY_DESC_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":187,"author":{"gitId":"eunrcn"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withSalary(VALID_SALARY_AMY).build();","lastModifiedDate":"2024-03-04"},{"lineNumber":188,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-04"},{"lineNumber":189,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-04"},{"lineNumber":190,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":192,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-04"},{"lineNumber":193,"author":{"gitId":"-"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2024-03-04"},{"lineNumber":194,"author":{"gitId":"-"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2024-03-04"},{"lineNumber":195,"author":{"gitId":"-"},"content":" // AddCommandParserTest#parse_repeatedNonTagValue_failure()","lastModifiedDate":"2024-03-04"},{"lineNumber":196,"author":{"gitId":"-"},"content":" // valid followed by invalid","lastModifiedDate":"2024-03-04"},{"lineNumber":197,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-04"},{"lineNumber":198,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + PHONE_DESC_BOB;","lastModifiedDate":"2024-03-04"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":200,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2024-03-04"},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":202,"author":{"gitId":"-"},"content":" // invalid followed by valid","lastModifiedDate":"2024-03-04"},{"lineNumber":203,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + INVALID_PHONE_DESC;","lastModifiedDate":"2024-03-04"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":205,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2024-03-04"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":207,"author":{"gitId":"eunrcn"},"content":" // multiple valid fields repeated","lastModifiedDate":"2024-03-04"},{"lineNumber":208,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2024-03-04"},{"lineNumber":209,"author":{"gitId":"ashleygoh1"},"content":" + TAG_DESC_INTERVIEW + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2024-03-13"},{"lineNumber":210,"author":{"gitId":"ashleygoh1"},"content":" + TAG_DESC_INTERVIEW + PHONE_DESC_BOB + ADDRESS_DESC_BOB + EMAIL_DESC_BOB + TAG_DESC_NO_REPLY;","lastModifiedDate":"2024-03-13"},{"lineNumber":211,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":212,"author":{"gitId":"Jawad280"},"content":" assertParseFailure(","lastModifiedDate":"2024-03-11"},{"lineNumber":213,"author":{"gitId":"Jawad280"},"content":" parser,","lastModifiedDate":"2024-03-11"},{"lineNumber":214,"author":{"gitId":"Jawad280"},"content":" userInput,","lastModifiedDate":"2024-03-11"},{"lineNumber":215,"author":{"gitId":"Jawad280"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_TAG, PREFIX_ADDRESS)","lastModifiedDate":"2024-03-11"},{"lineNumber":216,"author":{"gitId":"Jawad280"},"content":" );","lastModifiedDate":"2024-03-11"},{"lineNumber":217,"author":{"gitId":"-"},"content":" // multiple invalid values","lastModifiedDate":"2024-03-04"},{"lineNumber":218,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2024-03-04"},{"lineNumber":219,"author":{"gitId":"-"},"content":" + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC;","lastModifiedDate":"2024-03-04"},{"lineNumber":220,"author":{"gitId":"Jawad280"},"content":" assertParseFailure(","lastModifiedDate":"2024-03-11"},{"lineNumber":221,"author":{"gitId":"Jawad280"},"content":" parser,","lastModifiedDate":"2024-03-11"},{"lineNumber":222,"author":{"gitId":"Jawad280"},"content":" userInput,","lastModifiedDate":"2024-03-11"},{"lineNumber":223,"author":{"gitId":"Jawad280"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS)","lastModifiedDate":"2024-03-11"},{"lineNumber":224,"author":{"gitId":"Jawad280"},"content":" );","lastModifiedDate":"2024-03-11"},{"lineNumber":225,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":226,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-03-04"}],"authorContributionMap":{"eunrcn":27,"chenyixin0":9,"Jawad280":23,"ashleygoh1":6,"-":161}},{"path":"src/test/java/seedu/address/logic/parser/ParserUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.ParserUtil.MESSAGE_INVALID_INDEX;","lastModifiedDate":"2017-06-02"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-05-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class ParserUtilTest {","lastModifiedDate":"2017-05-22"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2017-05-22"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2017-05-22"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2017-05-22"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2017-05-22"},{"lineNumber":22,"author":{"gitId":"ashleygoh1"},"content":" private static final String INVALID_TAG \u003d \"#NR\";","lastModifiedDate":"2024-02-26"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d \"Rachel Walker\";","lastModifiedDate":"2017-05-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d \"123456\";","lastModifiedDate":"2017-05-22"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d \"123 Main Street #0505\";","lastModifiedDate":"2017-05-22"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d \"rachel@example.com\";","lastModifiedDate":"2017-05-22"},{"lineNumber":28,"author":{"gitId":"ashleygoh1"},"content":" private static final String VALID_TAG \u003d \"NR\";","lastModifiedDate":"2024-02-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String WHITESPACE \u003d \" \\t\\r\\n\";","lastModifiedDate":"2017-05-29"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public void parseIndex_invalidInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseIndex(\"10 a\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void parseIndex_outOfRangeInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_INVALID_INDEX, ()","lastModifiedDate":"2019-03-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" -\u003e ParserUtil.parseIndex(Long.toString(Integer.MAX_VALUE + 1)));","lastModifiedDate":"2019-03-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void parseIndex_validInput_success() throws Exception {","lastModifiedDate":"2017-05-26"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // No whitespaces","lastModifiedDate":"2017-05-26"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\"1\"));","lastModifiedDate":"2017-05-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // Leading and trailing whitespaces","lastModifiedDate":"2017-05-26"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\" 1 \"));","lastModifiedDate":"2017-05-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void parseName_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseName((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void parseName_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseName(INVALID_NAME));","lastModifiedDate":"2019-03-14"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void parseName_validValueWithoutWhitespace_returnsName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":64,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(VALID_NAME));","lastModifiedDate":"2017-05-29"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-29"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void parseName_validValueWithWhitespace_returnsTrimmedName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":70,"author":{"gitId":"-"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_NAME + WHITESPACE;","lastModifiedDate":"2017-05-29"},{"lineNumber":71,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-29"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(nameWithWhitespace));","lastModifiedDate":"2017-05-29"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void parsePhone_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parsePhone((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void parsePhone_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parsePhone(INVALID_PHONE));","lastModifiedDate":"2019-03-14"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithoutWhitespace_returnsPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":87,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-22"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(VALID_PHONE));","lastModifiedDate":"2017-05-30"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithWhitespace_returnsTrimmedPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":93,"author":{"gitId":"-"},"content":" String phoneWithWhitespace \u003d WHITESPACE + VALID_PHONE + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":94,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-30"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(phoneWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":99,"author":{"gitId":"-"},"content":" public void parseAddress_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseAddress((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":103,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithoutWhitespace_returnsAddress() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":105,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-22"},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(VALID_ADDRESS));","lastModifiedDate":"2017-05-30"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":110,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithWhitespace_returnsTrimmedAddress() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":111,"author":{"gitId":"-"},"content":" String addressWithWhitespace \u003d WHITESPACE + VALID_ADDRESS + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":112,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-30"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(addressWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":117,"author":{"gitId":"-"},"content":" public void parseEmail_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseEmail((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":122,"author":{"gitId":"-"},"content":" public void parseEmail_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseEmail(INVALID_EMAIL));","lastModifiedDate":"2019-03-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":127,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithoutWhitespace_returnsEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":128,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-22"},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(VALID_EMAIL));","lastModifiedDate":"2017-05-30"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":133,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithWhitespace_returnsTrimmedEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":134,"author":{"gitId":"-"},"content":" String emailWithWhitespace \u003d WHITESPACE + VALID_EMAIL + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":135,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-30"},{"lineNumber":136,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(emailWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":139,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":140,"author":{"gitId":"-"},"content":" public void parseTag_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTag(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":144,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":145,"author":{"gitId":"-"},"content":" public void parseTag_invalidValue_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTag(INVALID_TAG));","lastModifiedDate":"2019-03-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":149,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":150,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithoutWhitespace_returnsTag() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":151,"author":{"gitId":"ashleygoh1"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG);","lastModifiedDate":"2024-02-26"},{"lineNumber":152,"author":{"gitId":"ashleygoh1"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(VALID_TAG));","lastModifiedDate":"2024-02-26"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":155,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":156,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithWhitespace_returnsTrimmedTag() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":157,"author":{"gitId":"ashleygoh1"},"content":" String tagWithWhitespace \u003d WHITESPACE + VALID_TAG + WHITESPACE;","lastModifiedDate":"2024-02-26"},{"lineNumber":158,"author":{"gitId":"ashleygoh1"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG);","lastModifiedDate":"2024-02-26"},{"lineNumber":159,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(tagWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":162,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":163,"author":{"gitId":"-"},"content":" public void parseTags_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":164,"author":{"gitId":"ashleygoh1"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTag(null));","lastModifiedDate":"2024-02-26"},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":167,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-22"}],"authorContributionMap":{"ashleygoh1":7,"-":160}},{"path":"src/test/java/seedu/address/logic/parser/ViewCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"eunrcn"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"eunrcn"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"eunrcn"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"eunrcn"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"eunrcn"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"eunrcn"},"content":"import seedu.address.logic.commands.ViewCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"eunrcn"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"eunrcn"},"content":"class ViewCommandParserTest {","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"eunrcn"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"eunrcn"},"content":" void parse_validArgs_returnsViewCommand() throws ParseException {","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"eunrcn"},"content":" ViewCommandParser parser \u003d new ViewCommandParser();","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"ashleygoh1"},"content":" ViewCommand expectedCommand \u003d new ViewCommand(Index.fromZeroBased(0));","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"eunrcn"},"content":" assertEquals(expectedCommand, parser.parse(\"1\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"eunrcn"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"eunrcn"},"content":" void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"eunrcn"},"content":" ViewCommandParser parser \u003d new ViewCommandParser();","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"eunrcn"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\"abc\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"eunrcn"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\"\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"eunrcn"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"eunrcn"},"content":" void parse_invalidIndex_throwsParseException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"eunrcn"},"content":" ViewCommandParser parser \u003d new ViewCommandParser();","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"eunrcn"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\"0\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"eunrcn"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\"-1\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"eunrcn"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"eunrcn"},"content":" void parse_withWhitespaceAndValidArgs_returnsViewCommand() throws ParseException {","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"eunrcn"},"content":" ViewCommandParser parser \u003d new ViewCommandParser();","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"ashleygoh1"},"content":" ViewCommand expectedCommand \u003d new ViewCommand(Index.fromZeroBased(1));","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"eunrcn"},"content":" assertEquals(expectedCommand, parser.parse(\" 2 \"));","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"eunrcn"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"eunrcn"},"content":" void parse_withWhitespaceAndInvalidArgs_throwsParseException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"eunrcn"},"content":" ViewCommandParser parser \u003d new ViewCommandParser();","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"eunrcn"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\" abc \"));","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"eunrcn"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\" \"));","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"eunrcn"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"eunrcn":50,"ashleygoh1":3}},{"path":"src/test/java/seedu/address/model/AddressBookTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-12-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":7,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_INTERVIEW;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2017-07-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2016-12-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2016-12-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2016-12-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2016-12-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-12-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2018-08-07"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-04-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class AddressBookTest {","lastModifiedDate":"2016-12-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2016-12-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2016-12-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), addressBook.getPersonList());","lastModifiedDate":"2016-12-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public void resetData_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.resetData(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void resetData_withValidReadOnlyAddressBook_replacesData() {","lastModifiedDate":"2016-12-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" AddressBook newData \u003d getTypicalAddressBook();","lastModifiedDate":"2017-07-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":" addressBook.resetData(newData);","lastModifiedDate":"2016-12-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertEquals(newData, addressBook);","lastModifiedDate":"2016-12-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public void resetData_withDuplicatePersons_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-07"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // Two persons with the same identity fields","lastModifiedDate":"2018-04-19"},{"lineNumber":49,"author":{"gitId":"ashleygoh1"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_INTERVIEW)","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-04-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e newPersons \u003d Arrays.asList(ALICE, editedAlice);","lastModifiedDate":"2018-04-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" AddressBookStub newData \u003d new AddressBookStub(newPersons);","lastModifiedDate":"2018-03-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e addressBook.resetData(newData));","lastModifiedDate":"2019-03-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void hasPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-06"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.hasPerson(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void hasPerson_personNotInAddressBook_returnsFalse() {","lastModifiedDate":"2018-08-06"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertFalse(addressBook.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void hasPerson_personInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07"},{"lineNumber":69,"author":{"gitId":"-"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2018-08-06"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertTrue(addressBook.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void hasPerson_personWithSameIdentityFieldsInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07"},{"lineNumber":75,"author":{"gitId":"-"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2018-08-06"},{"lineNumber":76,"author":{"gitId":"ashleygoh1"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_INTERVIEW)","lastModifiedDate":"2024-03-12"},{"lineNumber":77,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-06"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertTrue(addressBook.hasPerson(editedAlice));","lastModifiedDate":"2018-08-06"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void getPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e addressBook.getPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" String expected \u003d AddressBook.class.getCanonicalName() + \"{persons\u003d\" + addressBook.getPersonList() + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertEquals(expected, addressBook.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-24"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * A stub ReadOnlyAddressBook whose persons list can violate interface constraints.","lastModifiedDate":"2018-03-29"},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-24"},{"lineNumber":95,"author":{"gitId":"-"},"content":" private static class AddressBookStub implements ReadOnlyAddressBook {","lastModifiedDate":"2016-12-24"},{"lineNumber":96,"author":{"gitId":"-"},"content":" private final ObservableList\u003cPerson\u003e persons \u003d FXCollections.observableArrayList();","lastModifiedDate":"2018-01-10"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":98,"author":{"gitId":"-"},"content":" AddressBookStub(Collection\u003cPerson\u003e persons) {","lastModifiedDate":"2018-03-29"},{"lineNumber":99,"author":{"gitId":"-"},"content":" this.persons.setAll(persons);","lastModifiedDate":"2016-12-24"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-24"},{"lineNumber":103,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":104,"author":{"gitId":"-"},"content":" return persons;","lastModifiedDate":"2016-12-24"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-24"}],"authorContributionMap":{"ashleygoh1":3,"-":105}},{"path":"src/test/java/seedu/address/model/ModelManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2017-05-31"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2017-07-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2017-07-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-31"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.testutil.AddressBookBuilder;","lastModifiedDate":"2017-05-31"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class ModelManagerTest {","lastModifiedDate":"2017-05-31"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private ModelManager modelManager \u003d new ModelManager();","lastModifiedDate":"2018-08-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2018-11-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertEquals(new UserPrefs(), modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertEquals(new GuiSettings(), modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertEquals(new AddressBook(), new AddressBook(modelManager.getAddressBook()));","lastModifiedDate":"2018-11-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public void setUserPrefs_nullUserPrefs_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setUserPrefs(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void setUserPrefs_validUserPrefs_copiesUserPrefs() {","lastModifiedDate":"2018-12-06"},{"lineNumber":39,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"address/book/file/path\"));","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(new GuiSettings(1, 2, 3, 4));","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" modelManager.setUserPrefs(userPrefs);","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertEquals(userPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // Modifying userPrefs should not modify modelManager\u0027s userPrefs","lastModifiedDate":"2018-12-06"},{"lineNumber":46,"author":{"gitId":"-"},"content":" UserPrefs oldUserPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":47,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"new/address/book/file/path\"));","lastModifiedDate":"2018-12-06"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertEquals(oldUserPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-12-06"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void setGuiSettings_nullGuiSettings_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setGuiSettings(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void setGuiSettings_validGuiSettings_setsGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(1, 2, 3, 4);","lastModifiedDate":"2018-11-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" modelManager.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertEquals(guiSettings, modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setAddressBookFilePath(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_validPath_setsAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" Path path \u003d Paths.get(\"address/book/file/path\");","lastModifiedDate":"2018-11-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" modelManager.setAddressBookFilePath(path);","lastModifiedDate":"2018-11-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertEquals(path, modelManager.getAddressBookFilePath());","lastModifiedDate":"2018-11-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void hasPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-06"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasPerson(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void hasPerson_personNotInAddressBook_returnsFalse() {","lastModifiedDate":"2018-08-06"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertFalse(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void hasPerson_personInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07"},{"lineNumber":87,"author":{"gitId":"-"},"content":" modelManager.addPerson(ALICE);","lastModifiedDate":"2018-08-06"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertTrue(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e modelManager.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-31"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":98,"author":{"gitId":"-"},"content":" AddressBook addressBook \u003d new AddressBookBuilder().withPerson(ALICE).withPerson(BENSON).build();","lastModifiedDate":"2017-07-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" AddressBook differentAddressBook \u003d new AddressBook();","lastModifiedDate":"2017-05-31"},{"lineNumber":100,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":102,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":103,"author":{"gitId":"-"},"content":" modelManager \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2018-08-06"},{"lineNumber":104,"author":{"gitId":"-"},"content":" ModelManager modelManagerCopy \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2017-05-31"},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManagerCopy));","lastModifiedDate":"2017-05-31"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":107,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManager));","lastModifiedDate":"2017-05-31"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":110,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(null));","lastModifiedDate":"2017-05-31"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":113,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(5));","lastModifiedDate":"2017-05-31"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":116,"author":{"gitId":"-"},"content":" // different addressBook -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(differentAddressBook, userPrefs)));","lastModifiedDate":"2017-05-31"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":119,"author":{"gitId":"-"},"content":" // different filteredList -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":120,"author":{"gitId":"ashleygoh1"},"content":" String[] keywords \u003d ALICE.getCompanyName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2024-02-25"},{"lineNumber":121,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(keywords)));","lastModifiedDate":"2017-06-12"},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, userPrefs)));","lastModifiedDate":"2017-05-31"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":124,"author":{"gitId":"-"},"content":" // resets modelManager to initial state for upcoming tests","lastModifiedDate":"2017-08-05"},{"lineNumber":125,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":127,"author":{"gitId":"-"},"content":" // different userPrefs -\u003e returns false","lastModifiedDate":"2018-11-27"},{"lineNumber":128,"author":{"gitId":"-"},"content":" UserPrefs differentUserPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":129,"author":{"gitId":"-"},"content":" differentUserPrefs.setAddressBookFilePath(Paths.get(\"differentFilePath\"));","lastModifiedDate":"2018-08-09"},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, differentUserPrefs)));","lastModifiedDate":"2018-11-27"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":132,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-31"}],"authorContributionMap":{"ashleygoh1":1,"-":131}},{"path":"src/test/java/seedu/address/model/person/InternDurationTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ashleygoh1"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"ashleygoh1"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"ashleygoh1"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"ashleygoh1"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"ashleygoh1"},"content":"public class InternDurationTest {","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"ashleygoh1"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"ashleygoh1"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"ashleygoh1"},"content":" assertThrows(NullPointerException.class, () -\u003e new InternDuration(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"ashleygoh1"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"ashleygoh1"},"content":" public void isValidInternDuration() {","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"ashleygoh1"},"content":" // null address","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"ashleygoh1"},"content":" assertThrows(NullPointerException.class, () -\u003e InternDuration.isValidInternDuration(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"ashleygoh1"},"content":" // invalid addresses","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"ashleygoh1"},"content":" assertFalse(InternDuration.isValidInternDuration(\"\")); // empty string","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"ashleygoh1"},"content":" assertFalse(InternDuration.isValidInternDuration(\" \")); // spaces only","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"ashleygoh1"},"content":" // valid addresses","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"ashleygoh1"},"content":" assertTrue(InternDuration.isValidInternDuration(\"6 months\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"ashleygoh1"},"content":" assertTrue(InternDuration.isValidInternDuration(\"-\")); // one character","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"ashleygoh1"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"ashleygoh1"},"content":" public void equals() {","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"ashleygoh1"},"content":" InternDuration internDuration \u003d new InternDuration(\"Valid InternDuration\");","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"ashleygoh1"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"ashleygoh1"},"content":" assertTrue(internDuration.equals(new InternDuration(\"Valid InternDuration\")));","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"ashleygoh1"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"ashleygoh1"},"content":" assertTrue(internDuration.equals(internDuration));","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"ashleygoh1"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"ashleygoh1"},"content":" assertFalse(internDuration.equals(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"ashleygoh1"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"ashleygoh1"},"content":" assertFalse(internDuration.equals(5.0f));","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"ashleygoh1"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"ashleygoh1"},"content":" assertFalse(internDuration.equals(new Address(\"Other Valid InternDuration\")));","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"ashleygoh1"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"ashleygoh1":48}},{"path":"src/test/java/seedu/address/model/person/JobDescriptionTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ashleygoh1"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"ashleygoh1"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"ashleygoh1"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"ashleygoh1"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"ashleygoh1"},"content":"public class JobDescriptionTest {","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"ashleygoh1"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"ashleygoh1"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"ashleygoh1"},"content":" assertThrows(NullPointerException.class, () -\u003e new InternDuration(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"ashleygoh1"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"ashleygoh1"},"content":" public void isValidInternDuration() {","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"ashleygoh1"},"content":" // null address","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"ashleygoh1"},"content":" assertThrows(NullPointerException.class, () -\u003e InternDuration.isValidInternDuration(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"ashleygoh1"},"content":" // invalid addresses","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"ashleygoh1"},"content":" assertFalse(InternDuration.isValidInternDuration(\"\")); // empty string","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"ashleygoh1"},"content":" assertFalse(InternDuration.isValidInternDuration(\" \")); // spaces only","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"ashleygoh1"},"content":" // valid addresses","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"ashleygoh1"},"content":" assertTrue(InternDuration.isValidInternDuration(\"6 months\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"ashleygoh1"},"content":" assertTrue(InternDuration.isValidInternDuration(\"-\")); // one character","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"ashleygoh1"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"ashleygoh1"},"content":" public void equals() {","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"ashleygoh1"},"content":" InternDuration internDuration \u003d new InternDuration(\"Valid InternDuration\");","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"ashleygoh1"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"ashleygoh1"},"content":" assertTrue(internDuration.equals(new InternDuration(\"Valid InternDuration\")));","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"ashleygoh1"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"ashleygoh1"},"content":" assertTrue(internDuration.equals(internDuration));","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"ashleygoh1"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"ashleygoh1"},"content":" assertFalse(internDuration.equals(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"ashleygoh1"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"ashleygoh1"},"content":" assertFalse(internDuration.equals(5.0f));","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"ashleygoh1"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"ashleygoh1"},"content":" assertFalse(internDuration.equals(new Address(\"Other Valid InternDuration\")));","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"ashleygoh1"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"ashleygoh1":49}},{"path":"src/test/java/seedu/address/model/person/PersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2018-03-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":10,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_INTERVIEW;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-04-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-03-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class PersonTest {","lastModifiedDate":"2018-03-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public void isSamePerson() {","lastModifiedDate":"2018-04-19"},{"lineNumber":22,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(ALICE));","lastModifiedDate":"2018-04-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(null));","lastModifiedDate":"2018-04-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" // same name, all other attributes different -\u003e returns true","lastModifiedDate":"2020-12-18"},{"lineNumber":29,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2020-12-18"},{"lineNumber":30,"author":{"gitId":"ashleygoh1"},"content":" .withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_INTERVIEW).build();","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2020-12-18"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // different name, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":34,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":" // name differs in case, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":38,"author":{"gitId":"-"},"content":" Person editedBob \u003d new PersonBuilder(BOB).withName(VALID_NAME_BOB.toLowerCase()).build();","lastModifiedDate":"2020-12-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":" // name has trailing spaces, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":42,"author":{"gitId":"-"},"content":" String nameWithTrailingSpaces \u003d VALID_NAME_BOB + \" \";","lastModifiedDate":"2020-12-18"},{"lineNumber":43,"author":{"gitId":"-"},"content":" editedBob \u003d new PersonBuilder(BOB).withName(nameWithTrailingSpaces).build();","lastModifiedDate":"2020-12-18"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":" Person aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2018-04-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2018-04-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(null));","lastModifiedDate":"2018-04-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2018-04-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2018-04-19"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":65,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":77,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-18"},{"lineNumber":81,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2018-04-18"},{"lineNumber":82,"author":{"gitId":"ashleygoh1"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_INTERVIEW).build();","lastModifiedDate":"2024-03-12"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-18"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"ashleygoh1"},"content":" String expected \u003d Person.class.getCanonicalName() + \"{name\u003d\" + ALICE.getCompanyName()","lastModifiedDate":"2024-02-26"},{"lineNumber":89,"author":{"gitId":"ashleygoh1"},"content":" + \", phone\u003d\" + ALICE.getPhone() + \", email\u003d\" + ALICE.getEmail()","lastModifiedDate":"2024-02-26"},{"lineNumber":90,"author":{"gitId":"ashleygoh1"},"content":" + \", address\u003d\" + ALICE.getAddress() + \", tag\u003d\" + ALICE.getTag()","lastModifiedDate":"2024-02-26"},{"lineNumber":91,"author":{"gitId":"ashleygoh1"},"content":" + \", job description\u003d\" + ALICE.getJobDescription()","lastModifiedDate":"2024-02-26"},{"lineNumber":92,"author":{"gitId":"ashleygoh1"},"content":" + \", interview date\u003d\" + ALICE.getInterviewDate()","lastModifiedDate":"2024-02-26"},{"lineNumber":93,"author":{"gitId":"ashleygoh1"},"content":" + \", intern duration\u003d\" + ALICE.getInternDuration()","lastModifiedDate":"2024-02-26"},{"lineNumber":94,"author":{"gitId":"ashleygoh1"},"content":" + \", salary\u003d\" + ALICE.getSalary() + \"}\";","lastModifiedDate":"2024-02-26"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"ashleygoh1":10,"-":87}},{"path":"src/test/java/seedu/address/model/person/SalaryTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ashleygoh1"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"ashleygoh1"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"ashleygoh1"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"ashleygoh1"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"ashleygoh1"},"content":"public class SalaryTest {","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"ashleygoh1"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"ashleygoh1"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"ashleygoh1"},"content":" assertThrows(NullPointerException.class, () -\u003e new Salary(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"ashleygoh1"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"ashleygoh1"},"content":" public void constructor_invalidSalary_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"ashleygoh1"},"content":" String invalidSalary \u003d \"\";","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"ashleygoh1"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Salary(invalidSalary));","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"ashleygoh1"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"ashleygoh1"},"content":" public void isValidSalary() {","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"ashleygoh1"},"content":" // null salary","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"ashleygoh1"},"content":" assertThrows(NullPointerException.class, () -\u003e Salary.isValidSalary(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"ashleygoh1"},"content":" // invalid Salary","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"ashleygoh1"},"content":" assertFalse(Salary.isValidSalary(\"\")); // empty string","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"ashleygoh1"},"content":" assertFalse(Salary.isValidSalary(\" \")); // spaces only","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"ashleygoh1"},"content":" assertFalse(Salary.isValidSalary(\"salary\")); // non-numeric","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"ashleygoh1"},"content":" assertFalse(Salary.isValidSalary(\"9011p041\")); // alphabets within digits","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"ashleygoh1"},"content":" assertFalse(Salary.isValidSalary(\"9312 1534\")); // spaces within digits","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"ashleygoh1"},"content":" // valid salary","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"ashleygoh1"},"content":" assertTrue(Salary.isValidSalary(\"1\")); // exactly 1 numbers","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"ashleygoh1"},"content":" assertTrue(Salary.isValidSalary(\"1000\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"ashleygoh1"},"content":" assertTrue(Salary.isValidSalary(\"124293842033123\")); // long salary","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"ashleygoh1"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"ashleygoh1"},"content":" public void equals() {","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"ashleygoh1"},"content":" Salary salary \u003d new Salary(\"1000\");","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"ashleygoh1"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"ashleygoh1"},"content":" assertTrue(salary.equals(new Salary(\"1000\")));","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"ashleygoh1"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"ashleygoh1"},"content":" assertTrue(salary.equals(salary));","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"ashleygoh1"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"ashleygoh1"},"content":" assertFalse(salary.equals(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"ashleygoh1"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"ashleygoh1"},"content":" assertFalse(salary.equals(5.0f));","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"ashleygoh1"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"ashleygoh1"},"content":" assertFalse(salary.equals(new Salary(\"995\")));","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"ashleygoh1"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"ashleygoh1":59}},{"path":"src/test/java/seedu/address/model/person/UniquePersonListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2018-08-09"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-08-08"},{"lineNumber":7,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_INTERVIEW;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2018-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.PersonNotFoundException;","lastModifiedDate":"2018-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class UniquePersonListTest {","lastModifiedDate":"2017-09-01"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final UniquePersonList uniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void contains_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.contains(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void contains_personNotInList_returnsFalse() {","lastModifiedDate":"2018-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(uniquePersonList.contains(ALICE));","lastModifiedDate":"2018-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void contains_personInList_returnsTrue() {","lastModifiedDate":"2018-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertTrue(uniquePersonList.contains(ALICE));","lastModifiedDate":"2018-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void contains_personWithSameIdentityFieldsInList_returnsTrue() {","lastModifiedDate":"2018-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":45,"author":{"gitId":"ashleygoh1"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_INTERVIEW)","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertTrue(uniquePersonList.contains(editedAlice));","lastModifiedDate":"2018-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void add_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.add(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void add_duplicatePerson_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.add(ALICE));","lastModifiedDate":"2019-03-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void setPerson_nullTargetPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPerson(null, ALICE));","lastModifiedDate":"2019-03-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void setPerson_nullEditedPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPerson(ALICE, null));","lastModifiedDate":"2019-03-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void setPerson_targetPersonNotInList_throwsPersonNotFoundException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertThrows(PersonNotFoundException.class, () -\u003e uniquePersonList.setPerson(ALICE, ALICE));","lastModifiedDate":"2019-03-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonIsSamePerson_success() {","lastModifiedDate":"2018-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasSameIdentity_success() {","lastModifiedDate":"2018-08-08"},{"lineNumber":87,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":88,"author":{"gitId":"ashleygoh1"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_INTERVIEW)","lastModifiedDate":"2024-03-12"},{"lineNumber":89,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, editedAlice);","lastModifiedDate":"2018-08-08"},{"lineNumber":91,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":92,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(editedAlice);","lastModifiedDate":"2018-08-08"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasDifferentIdentity_success() {","lastModifiedDate":"2018-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasNonUniqueIdentity_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":108,"author":{"gitId":"-"},"content":" uniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.setPerson(ALICE, BOB));","lastModifiedDate":"2019-03-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":113,"author":{"gitId":"-"},"content":" public void remove_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.remove(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":" public void remove_personDoesNotExist_throwsPersonNotFoundException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertThrows(PersonNotFoundException.class, () -\u003e uniquePersonList.remove(ALICE));","lastModifiedDate":"2019-03-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":" public void remove_existingPerson_removesPerson() {","lastModifiedDate":"2018-08-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":125,"author":{"gitId":"-"},"content":" uniquePersonList.remove(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":131,"author":{"gitId":"-"},"content":" public void setPersons_nullUniquePersonList_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":132,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPersons((UniquePersonList) null));","lastModifiedDate":"2019-03-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":136,"author":{"gitId":"-"},"content":" public void setPersons_uniquePersonList_replacesOwnListWithProvidedUniquePersonList() {","lastModifiedDate":"2018-08-08"},{"lineNumber":137,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":138,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":140,"author":{"gitId":"-"},"content":" uniquePersonList.setPersons(expectedUniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":144,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":145,"author":{"gitId":"-"},"content":" public void setPersons_nullList_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPersons((List\u003cPerson\u003e) null));","lastModifiedDate":"2019-03-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":149,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":150,"author":{"gitId":"-"},"content":" public void setPersons_list_replacesOwnListWithProvidedList() {","lastModifiedDate":"2018-08-08"},{"lineNumber":151,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":152,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e personList \u003d Collections.singletonList(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":153,"author":{"gitId":"-"},"content":" uniquePersonList.setPersons(personList);","lastModifiedDate":"2018-08-08"},{"lineNumber":154,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":155,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":156,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":159,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":160,"author":{"gitId":"-"},"content":" public void setPersons_listWithDuplicatePersons_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e listWithDuplicatePersons \u003d Arrays.asList(ALICE, ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":162,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.setPersons(listWithDuplicatePersons));","lastModifiedDate":"2019-03-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":166,"author":{"gitId":"-"},"content":" public void asUnmodifiableObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2018-04-05"},{"lineNumber":167,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, ()","lastModifiedDate":"2019-03-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":" -\u003e uniquePersonList.asUnmodifiableObservableList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-24"},{"lineNumber":171,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-24"},{"lineNumber":172,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-24"},{"lineNumber":173,"author":{"gitId":"-"},"content":" assertEquals(uniquePersonList.asUnmodifiableObservableList().toString(), uniquePersonList.toString());","lastModifiedDate":"2019-02-24"},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-24"},{"lineNumber":175,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"ashleygoh1":3,"-":172}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedPersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.storage.JsonAdaptedPerson.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13"},{"lineNumber":13,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.InternDuration;","lastModifiedDate":"2024-02-26"},{"lineNumber":14,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.InterviewDate;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.JobDescription;","lastModifiedDate":"2024-02-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.Salary;","lastModifiedDate":"2024-02-26"},{"lineNumber":20,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class JsonAdaptedPersonTest {","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"ashleygoh1"},"content":" private static final String INVALID_JOB_DESCRIPTION \u003d \" \";","lastModifiedDate":"2024-02-26"},{"lineNumber":29,"author":{"gitId":"ashleygoh1"},"content":" private static final String INVALID_INTERVIEW_DATE \u003d \"\";","lastModifiedDate":"2024-02-26"},{"lineNumber":30,"author":{"gitId":"ashleygoh1"},"content":" private static final String INVALID_INTERN_DURATION \u003d \" \";","lastModifiedDate":"2024-02-26"},{"lineNumber":31,"author":{"gitId":"ashleygoh1"},"content":" private static final String INVALID_SALARY \u003d \"0\";","lastModifiedDate":"2024-02-26"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"ashleygoh1"},"content":" private static final String VALID_NAME \u003d BENSON.getCompanyName().toString();","lastModifiedDate":"2024-02-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d BENSON.getPhone().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d BENSON.getAddress().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"ashleygoh1"},"content":" private static final String VALID_TAGS \u003d BENSON.getTag().tagName;","lastModifiedDate":"2024-02-26"},{"lineNumber":38,"author":{"gitId":"ashleygoh1"},"content":" private static final String VALID_JOB_DESCRIPTION \u003d BENSON.getJobDescription().toString();","lastModifiedDate":"2024-02-26"},{"lineNumber":39,"author":{"gitId":"ashleygoh1"},"content":" private static final String VALID_INTERVIEW_DATE \u003d BENSON.getInterviewDate().toString();","lastModifiedDate":"2024-02-26"},{"lineNumber":40,"author":{"gitId":"ashleygoh1"},"content":" private static final String VALID_INTERN_DURATION \u003d BENSON.getInternDuration().toString();","lastModifiedDate":"2024-02-26"},{"lineNumber":41,"author":{"gitId":"ashleygoh1"},"content":" private static final String VALID_SALARY \u003d BENSON.getSalary().toString();","lastModifiedDate":"2024-02-26"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void toModelType_validPersonDetails_returnsPerson() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(BENSON);","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertEquals(BENSON, person.toModelType());","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"ashleygoh1"},"content":" new JsonAdaptedPerson(INVALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_TAGS,","lastModifiedDate":"2024-02-26"},{"lineNumber":53,"author":{"gitId":"ashleygoh1"},"content":" VALID_JOB_DESCRIPTION, VALID_INTERVIEW_DATE, VALID_INTERN_DURATION, VALID_SALARY);","lastModifiedDate":"2024-02-26"},{"lineNumber":54,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"ashleygoh1"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(null, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_TAGS,","lastModifiedDate":"2024-02-26"},{"lineNumber":61,"author":{"gitId":"ashleygoh1"},"content":" VALID_JOB_DESCRIPTION, VALID_INTERVIEW_DATE, VALID_INTERN_DURATION, VALID_SALARY);","lastModifiedDate":"2024-02-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void toModelType_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":69,"author":{"gitId":"ashleygoh1"},"content":" new JsonAdaptedPerson(VALID_NAME, INVALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_TAGS,","lastModifiedDate":"2024-02-26"},{"lineNumber":70,"author":{"gitId":"ashleygoh1"},"content":" VALID_JOB_DESCRIPTION, VALID_INTERVIEW_DATE, VALID_INTERN_DURATION, VALID_SALARY);","lastModifiedDate":"2024-02-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Phone.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void toModelType_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"ashleygoh1"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, null, VALID_EMAIL, VALID_ADDRESS, VALID_TAGS,","lastModifiedDate":"2024-02-26"},{"lineNumber":78,"author":{"gitId":"ashleygoh1"},"content":" VALID_JOB_DESCRIPTION, VALID_INTERVIEW_DATE, VALID_INTERN_DURATION, VALID_SALARY);","lastModifiedDate":"2024-02-26"},{"lineNumber":79,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"ashleygoh1"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, INVALID_EMAIL, VALID_ADDRESS, VALID_TAGS,","lastModifiedDate":"2024-02-26"},{"lineNumber":87,"author":{"gitId":"ashleygoh1"},"content":" VALID_JOB_DESCRIPTION, VALID_INTERVIEW_DATE, VALID_INTERN_DURATION, VALID_SALARY);","lastModifiedDate":"2024-02-26"},{"lineNumber":88,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":94,"author":{"gitId":"ashleygoh1"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, null, VALID_ADDRESS, VALID_TAGS,","lastModifiedDate":"2024-02-26"},{"lineNumber":95,"author":{"gitId":"ashleygoh1"},"content":" VALID_JOB_DESCRIPTION, VALID_INTERVIEW_DATE, VALID_INTERN_DURATION, VALID_SALARY);","lastModifiedDate":"2024-02-26"},{"lineNumber":96,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":" public void toModelType_nullAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":102,"author":{"gitId":"ashleygoh1"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, null, VALID_TAGS,","lastModifiedDate":"2024-02-26"},{"lineNumber":103,"author":{"gitId":"ashleygoh1"},"content":" VALID_JOB_DESCRIPTION, VALID_INTERVIEW_DATE, VALID_INTERN_DURATION, VALID_SALARY);","lastModifiedDate":"2024-02-26"},{"lineNumber":104,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":109,"author":{"gitId":"ashleygoh1"},"content":" public void toModelType_nullTag_throwsIllegalValueException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":110,"author":{"gitId":"ashleygoh1"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, null,","lastModifiedDate":"2024-03-12"},{"lineNumber":111,"author":{"gitId":"ashleygoh1"},"content":" VALID_JOB_DESCRIPTION, VALID_INTERVIEW_DATE, VALID_INTERN_DURATION, VALID_SALARY);","lastModifiedDate":"2024-03-12"},{"lineNumber":112,"author":{"gitId":"ashleygoh1"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Tag.class.getSimpleName());","lastModifiedDate":"2024-03-12"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-12"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":" public void toModelType_invalidTags_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":119,"author":{"gitId":"ashleygoh1"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, INVALID_TAG,","lastModifiedDate":"2024-02-26"},{"lineNumber":120,"author":{"gitId":"ashleygoh1"},"content":" VALID_JOB_DESCRIPTION, VALID_INTERVIEW_DATE, VALID_INTERN_DURATION, VALID_SALARY);","lastModifiedDate":"2024-02-26"},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":124,"author":{"gitId":"ashleygoh1"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":125,"author":{"gitId":"ashleygoh1"},"content":" public void toModelType_nullJobDescription_throwsIllegalValueException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":126,"author":{"gitId":"ashleygoh1"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-03-12"},{"lineNumber":127,"author":{"gitId":"ashleygoh1"},"content":" VALID_ADDRESS, VALID_TAGS, null, VALID_INTERVIEW_DATE, VALID_INTERN_DURATION, VALID_SALARY);","lastModifiedDate":"2024-03-12"},{"lineNumber":128,"author":{"gitId":"ashleygoh1"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, JobDescription.class.getSimpleName());","lastModifiedDate":"2024-03-12"},{"lineNumber":129,"author":{"gitId":"ashleygoh1"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-12"},{"lineNumber":130,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":131,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":132,"author":{"gitId":"ashleygoh1"},"content":" @Test","lastModifiedDate":"2024-02-26"},{"lineNumber":133,"author":{"gitId":"ashleygoh1"},"content":" public void toModelType_invalidJobDescription_throwsIllegalValueException() {","lastModifiedDate":"2024-02-26"},{"lineNumber":134,"author":{"gitId":"ashleygoh1"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-02-26"},{"lineNumber":135,"author":{"gitId":"ashleygoh1"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_TAGS,","lastModifiedDate":"2024-02-26"},{"lineNumber":136,"author":{"gitId":"ashleygoh1"},"content":" INVALID_JOB_DESCRIPTION, VALID_INTERVIEW_DATE, VALID_INTERN_DURATION, VALID_SALARY);","lastModifiedDate":"2024-02-26"},{"lineNumber":137,"author":{"gitId":"ashleygoh1"},"content":" String expectedMessage \u003d JobDescription.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-02-26"},{"lineNumber":138,"author":{"gitId":"ashleygoh1"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-02-26"},{"lineNumber":139,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":140,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":141,"author":{"gitId":"ashleygoh1"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":142,"author":{"gitId":"ashleygoh1"},"content":" public void toModelType_nullInterviewDate_returnPerson() throws Exception {","lastModifiedDate":"2024-03-12"},{"lineNumber":143,"author":{"gitId":"ashleygoh1"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-03-12"},{"lineNumber":144,"author":{"gitId":"ashleygoh1"},"content":" VALID_ADDRESS, VALID_TAGS, VALID_JOB_DESCRIPTION, INVALID_INTERVIEW_DATE,","lastModifiedDate":"2024-03-12"},{"lineNumber":145,"author":{"gitId":"ashleygoh1"},"content":" VALID_INTERN_DURATION, VALID_SALARY);","lastModifiedDate":"2024-03-12"},{"lineNumber":146,"author":{"gitId":"ashleygoh1"},"content":" Person person1 \u003d new Person(BENSON.getCompanyName(), BENSON.getPhone(), BENSON.getEmail(), BENSON.getAddress(),","lastModifiedDate":"2024-03-12"},{"lineNumber":147,"author":{"gitId":"ashleygoh1"},"content":" BENSON.getTag(), BENSON.getJobDescription(), new InterviewDate(null),","lastModifiedDate":"2024-03-12"},{"lineNumber":148,"author":{"gitId":"ashleygoh1"},"content":" BENSON.getInternDuration(), BENSON.getSalary());","lastModifiedDate":"2024-03-12"},{"lineNumber":149,"author":{"gitId":"ashleygoh1"},"content":" assertEquals(person1, person.toModelType());","lastModifiedDate":"2024-03-12"},{"lineNumber":150,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":151,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":152,"author":{"gitId":"ashleygoh1"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":153,"author":{"gitId":"ashleygoh1"},"content":" public void toModelType_validPersonDetails_returnsPe() throws Exception {","lastModifiedDate":"2024-03-12"},{"lineNumber":154,"author":{"gitId":"ashleygoh1"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(BENSON);","lastModifiedDate":"2024-03-12"},{"lineNumber":155,"author":{"gitId":"ashleygoh1"},"content":" assertEquals(BENSON, person.toModelType());","lastModifiedDate":"2024-03-12"},{"lineNumber":156,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":157,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":158,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":159,"author":{"gitId":"ashleygoh1"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":160,"author":{"gitId":"ashleygoh1"},"content":" public void toModelType_nullInternDuration_throwsIllegalValueException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":161,"author":{"gitId":"ashleygoh1"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-12"},{"lineNumber":162,"author":{"gitId":"ashleygoh1"},"content":" VALID_TAGS, VALID_JOB_DESCRIPTION, VALID_INTERVIEW_DATE, null, VALID_SALARY);","lastModifiedDate":"2024-03-12"},{"lineNumber":163,"author":{"gitId":"ashleygoh1"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, InternDuration.class.getSimpleName());","lastModifiedDate":"2024-03-12"},{"lineNumber":164,"author":{"gitId":"ashleygoh1"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-12"},{"lineNumber":165,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":166,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":167,"author":{"gitId":"ashleygoh1"},"content":" @Test","lastModifiedDate":"2024-02-26"},{"lineNumber":168,"author":{"gitId":"ashleygoh1"},"content":" public void toModelType_invalidInternDuration_throwsIllegalValueException() {","lastModifiedDate":"2024-02-26"},{"lineNumber":169,"author":{"gitId":"ashleygoh1"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-02-26"},{"lineNumber":170,"author":{"gitId":"ashleygoh1"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_TAGS,","lastModifiedDate":"2024-02-26"},{"lineNumber":171,"author":{"gitId":"ashleygoh1"},"content":" VALID_JOB_DESCRIPTION, VALID_INTERVIEW_DATE, INVALID_INTERN_DURATION, VALID_SALARY);","lastModifiedDate":"2024-02-26"},{"lineNumber":172,"author":{"gitId":"ashleygoh1"},"content":" String expectedMessage \u003d InternDuration.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-02-26"},{"lineNumber":173,"author":{"gitId":"ashleygoh1"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-02-26"},{"lineNumber":174,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":175,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":176,"author":{"gitId":"ashleygoh1"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":177,"author":{"gitId":"ashleygoh1"},"content":" public void toModelType_nullSalary_throwsIllegalValueException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":178,"author":{"gitId":"ashleygoh1"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-03-12"},{"lineNumber":179,"author":{"gitId":"ashleygoh1"},"content":" VALID_ADDRESS, VALID_TAGS, VALID_JOB_DESCRIPTION, VALID_INTERVIEW_DATE, VALID_INTERN_DURATION, null);","lastModifiedDate":"2024-03-12"},{"lineNumber":180,"author":{"gitId":"ashleygoh1"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Salary.class.getSimpleName());","lastModifiedDate":"2024-03-12"},{"lineNumber":181,"author":{"gitId":"ashleygoh1"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-12"},{"lineNumber":182,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":183,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":184,"author":{"gitId":"ashleygoh1"},"content":" @Test","lastModifiedDate":"2024-02-26"},{"lineNumber":185,"author":{"gitId":"ashleygoh1"},"content":" public void toModelType_invalidSalary_throwsIllegalValueException() {","lastModifiedDate":"2024-02-26"},{"lineNumber":186,"author":{"gitId":"ashleygoh1"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-02-26"},{"lineNumber":187,"author":{"gitId":"ashleygoh1"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_TAGS,","lastModifiedDate":"2024-02-26"},{"lineNumber":188,"author":{"gitId":"ashleygoh1"},"content":" VALID_JOB_DESCRIPTION, VALID_INTERVIEW_DATE, VALID_INTERN_DURATION, INVALID_SALARY);","lastModifiedDate":"2024-02-26"},{"lineNumber":189,"author":{"gitId":"ashleygoh1"},"content":" String expectedMessage \u003d Salary.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-02-26"},{"lineNumber":190,"author":{"gitId":"ashleygoh1"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-02-26"},{"lineNumber":191,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":192,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":193,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"ashleygoh1":105,"-":88}},{"path":"src/test/java/seedu/address/testutil/EditPersonDescriptorBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-03-04"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2024-03-04"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"Jawad280"},"content":"import seedu.address.model.person.InternDuration;","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"Jawad280"},"content":"import seedu.address.model.person.InterviewDate;","lastModifiedDate":"2024-03-11"},{"lineNumber":8,"author":{"gitId":"Jawad280"},"content":"import seedu.address.model.person.JobDescription;","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"Jawad280"},"content":"import seedu.address.model.person.Salary;","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-04"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2024-03-04"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * A utility class to help with building EditPersonDescriptor objects.","lastModifiedDate":"2024-03-04"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-04"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorBuilder {","lastModifiedDate":"2024-03-04"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private EditPersonDescriptor descriptor;","lastModifiedDate":"2024-03-04"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder() {","lastModifiedDate":"2024-03-04"},{"lineNumber":23,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2024-03-04"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(EditPersonDescriptor descriptor) {","lastModifiedDate":"2024-03-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":" this.descriptor \u003d new EditPersonDescriptor(descriptor);","lastModifiedDate":"2024-03-04"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-04"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Returns an {@code EditPersonDescriptor} with fields containing {@code person}\u0027s details","lastModifiedDate":"2024-03-04"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-04"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(Person person) {","lastModifiedDate":"2024-03-04"},{"lineNumber":34,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2024-03-04"},{"lineNumber":35,"author":{"gitId":"eunrcn"},"content":" descriptor.setName(person.getCompanyName());","lastModifiedDate":"2024-03-04"},{"lineNumber":36,"author":{"gitId":"-"},"content":" descriptor.setPhone(person.getPhone());","lastModifiedDate":"2024-03-04"},{"lineNumber":37,"author":{"gitId":"-"},"content":" descriptor.setEmail(person.getEmail());","lastModifiedDate":"2024-03-04"},{"lineNumber":38,"author":{"gitId":"-"},"content":" descriptor.setAddress(person.getAddress());","lastModifiedDate":"2024-03-04"},{"lineNumber":39,"author":{"gitId":"eunrcn"},"content":" descriptor.setTag(person.getTag());","lastModifiedDate":"2024-03-04"},{"lineNumber":40,"author":{"gitId":"eunrcn"},"content":" descriptor.setJobDescription(person.getJobDescription());","lastModifiedDate":"2024-03-04"},{"lineNumber":41,"author":{"gitId":"eunrcn"},"content":" descriptor.setInterviewDate(person.getInterviewDate());","lastModifiedDate":"2024-03-04"},{"lineNumber":42,"author":{"gitId":"eunrcn"},"content":" descriptor.setInternDuration(person.getInternDuration());","lastModifiedDate":"2024-03-04"},{"lineNumber":43,"author":{"gitId":"eunrcn"},"content":" descriptor.setSalary(person.getSalary());","lastModifiedDate":"2024-03-04"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-04"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-03-04"},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-04"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withName(String name) {","lastModifiedDate":"2024-03-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":" descriptor.setName(new Name(name));","lastModifiedDate":"2024-03-04"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2024-03-04"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-04"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-03-04"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-04"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withPhone(String phone) {","lastModifiedDate":"2024-03-04"},{"lineNumber":58,"author":{"gitId":"-"},"content":" descriptor.setPhone(new Phone(phone));","lastModifiedDate":"2024-03-04"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2024-03-04"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-04"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-03-04"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-04"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withEmail(String email) {","lastModifiedDate":"2024-03-04"},{"lineNumber":66,"author":{"gitId":"-"},"content":" descriptor.setEmail(new Email(email));","lastModifiedDate":"2024-03-04"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2024-03-04"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-04"},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-03-04"},{"lineNumber":72,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-04"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withAddress(String address) {","lastModifiedDate":"2024-03-04"},{"lineNumber":74,"author":{"gitId":"-"},"content":" descriptor.setAddress(new Address(address));","lastModifiedDate":"2024-03-04"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2024-03-04"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-04"},{"lineNumber":79,"author":{"gitId":"eunrcn"},"content":" * Sets the {@code Tag} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-03-04"},{"lineNumber":80,"author":{"gitId":"eunrcn"},"content":" */","lastModifiedDate":"2024-03-04"},{"lineNumber":81,"author":{"gitId":"Jawad280"},"content":" public EditPersonDescriptorBuilder withTags(String tag) {","lastModifiedDate":"2024-03-11"},{"lineNumber":82,"author":{"gitId":"Jawad280"},"content":" descriptor.setTag(new Tag(tag));","lastModifiedDate":"2024-03-11"},{"lineNumber":83,"author":{"gitId":"eunrcn"},"content":" return this;","lastModifiedDate":"2024-03-04"},{"lineNumber":84,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":85,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":86,"author":{"gitId":"eunrcn"},"content":" /**","lastModifiedDate":"2024-03-04"},{"lineNumber":87,"author":{"gitId":"eunrcn"},"content":" * Sets the {@code JobDescription} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-03-04"},{"lineNumber":88,"author":{"gitId":"eunrcn"},"content":" */","lastModifiedDate":"2024-03-04"},{"lineNumber":89,"author":{"gitId":"eunrcn"},"content":" public EditPersonDescriptorBuilder withJobDescription(String jobDescription) {","lastModifiedDate":"2024-03-04"},{"lineNumber":90,"author":{"gitId":"eunrcn"},"content":" descriptor.setJobDescription(new JobDescription(jobDescription));","lastModifiedDate":"2024-03-04"},{"lineNumber":91,"author":{"gitId":"eunrcn"},"content":" return this;","lastModifiedDate":"2024-03-04"},{"lineNumber":92,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":93,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":94,"author":{"gitId":"eunrcn"},"content":" /**","lastModifiedDate":"2024-03-04"},{"lineNumber":95,"author":{"gitId":"eunrcn"},"content":" * Sets the {@code InterviewDate} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-03-04"},{"lineNumber":96,"author":{"gitId":"eunrcn"},"content":" */","lastModifiedDate":"2024-03-04"},{"lineNumber":97,"author":{"gitId":"eunrcn"},"content":" public EditPersonDescriptorBuilder withInterviewDate(String interviewDate) {","lastModifiedDate":"2024-03-04"},{"lineNumber":98,"author":{"gitId":"eunrcn"},"content":" descriptor.setInterviewDate(new InterviewDate(interviewDate));","lastModifiedDate":"2024-03-04"},{"lineNumber":99,"author":{"gitId":"eunrcn"},"content":" return this;","lastModifiedDate":"2024-03-04"},{"lineNumber":100,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":101,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":102,"author":{"gitId":"eunrcn"},"content":" /**","lastModifiedDate":"2024-03-04"},{"lineNumber":103,"author":{"gitId":"eunrcn"},"content":" * Sets the {@code InternDuration} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-03-04"},{"lineNumber":104,"author":{"gitId":"eunrcn"},"content":" */","lastModifiedDate":"2024-03-04"},{"lineNumber":105,"author":{"gitId":"eunrcn"},"content":" public EditPersonDescriptorBuilder withInternDuration(String internDuration) {","lastModifiedDate":"2024-03-04"},{"lineNumber":106,"author":{"gitId":"eunrcn"},"content":" descriptor.setInternDuration(new InternDuration(internDuration));","lastModifiedDate":"2024-03-04"},{"lineNumber":107,"author":{"gitId":"eunrcn"},"content":" return this;","lastModifiedDate":"2024-03-04"},{"lineNumber":108,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":109,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":110,"author":{"gitId":"eunrcn"},"content":" /**","lastModifiedDate":"2024-03-04"},{"lineNumber":111,"author":{"gitId":"eunrcn"},"content":" * Sets the {@code Salary} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-03-04"},{"lineNumber":112,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-04"},{"lineNumber":113,"author":{"gitId":"eunrcn"},"content":" public EditPersonDescriptorBuilder withSalary(String salary) {","lastModifiedDate":"2024-03-04"},{"lineNumber":114,"author":{"gitId":"eunrcn"},"content":" descriptor.setSalary(new Salary(salary));","lastModifiedDate":"2024-03-04"},{"lineNumber":115,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2024-03-04"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":118,"author":{"gitId":"-"},"content":" public EditPersonDescriptor build() {","lastModifiedDate":"2024-03-04"},{"lineNumber":119,"author":{"gitId":"-"},"content":" return descriptor;","lastModifiedDate":"2024-03-04"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":121,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-03-04"}],"authorContributionMap":{"eunrcn":39,"Jawad280":6,"-":76}},{"path":"src/test/java/seedu/address/testutil/PersonBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-01-18"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-01-18"},{"lineNumber":5,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.InternDuration;","lastModifiedDate":"2024-02-26"},{"lineNumber":6,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.InterviewDate;","lastModifiedDate":"2024-02-26"},{"lineNumber":7,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.JobDescription;","lastModifiedDate":"2024-02-26"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-01-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-04-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-01-18"},{"lineNumber":11,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.Salary;","lastModifiedDate":"2024-02-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-04-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * A utility class to help with building Person objects.","lastModifiedDate":"2017-04-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class PersonBuilder {","lastModifiedDate":"2016-09-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2020-12-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2017-04-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2020-12-18"},{"lineNumber":22,"author":{"gitId":"ashleygoh1"},"content":" public static final String DEFAULT_ADDRESS \u003d \"\";","lastModifiedDate":"2024-02-26"},{"lineNumber":23,"author":{"gitId":"ashleygoh1"},"content":" public static final String DEFAULT_TAG \u003d \"I\";","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"ashleygoh1"},"content":" public static final String DEFAULT_JOB_DESCRIPTION \u003d \"Software Developer Intern\";","lastModifiedDate":"2024-02-26"},{"lineNumber":25,"author":{"gitId":"ashleygoh1"},"content":" public static final String DEFAULT_INTERVIEW_DATE \u003d null;","lastModifiedDate":"2024-02-26"},{"lineNumber":26,"author":{"gitId":"ashleygoh1"},"content":" public static final String DEFAULT_INTERN_DURATION \u003d \"6 months\";","lastModifiedDate":"2024-02-26"},{"lineNumber":27,"author":{"gitId":"ashleygoh1"},"content":" public static final String DEFAULT_SALARY \u003d \"500\";","lastModifiedDate":"2024-02-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-12-20"},{"lineNumber":33,"author":{"gitId":"ashleygoh1"},"content":" private Tag tag;","lastModifiedDate":"2024-02-26"},{"lineNumber":34,"author":{"gitId":"ashleygoh1"},"content":" private JobDescription jobDescription;","lastModifiedDate":"2024-02-26"},{"lineNumber":35,"author":{"gitId":"ashleygoh1"},"content":" private InterviewDate interviewDate;","lastModifiedDate":"2024-02-26"},{"lineNumber":36,"author":{"gitId":"ashleygoh1"},"content":" private InternDuration internDuration;","lastModifiedDate":"2024-02-26"},{"lineNumber":37,"author":{"gitId":"ashleygoh1"},"content":" private Salary salary;","lastModifiedDate":"2024-02-26"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2020-05-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public PersonBuilder() {","lastModifiedDate":"2017-08-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20"},{"lineNumber":44,"author":{"gitId":"-"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2017-12-20"},{"lineNumber":45,"author":{"gitId":"-"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2017-12-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2017-12-20"},{"lineNumber":47,"author":{"gitId":"ashleygoh1"},"content":" tag \u003d new Tag(DEFAULT_TAG);","lastModifiedDate":"2024-02-26"},{"lineNumber":48,"author":{"gitId":"ashleygoh1"},"content":" jobDescription \u003d new JobDescription(DEFAULT_JOB_DESCRIPTION);","lastModifiedDate":"2024-02-26"},{"lineNumber":49,"author":{"gitId":"ashleygoh1"},"content":" interviewDate \u003d new InterviewDate(DEFAULT_INTERVIEW_DATE);;","lastModifiedDate":"2024-02-26"},{"lineNumber":50,"author":{"gitId":"ashleygoh1"},"content":" internDuration \u003d new InternDuration(DEFAULT_INTERN_DURATION);;","lastModifiedDate":"2024-02-26"},{"lineNumber":51,"author":{"gitId":"ashleygoh1"},"content":" salary \u003d new Salary(DEFAULT_SALARY);;","lastModifiedDate":"2024-02-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * Initializes the PersonBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2016-12-11"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public PersonBuilder(Person personToCopy) {","lastModifiedDate":"2018-01-10"},{"lineNumber":58,"author":{"gitId":"ashleygoh1"},"content":" name \u003d personToCopy.getCompanyName();","lastModifiedDate":"2024-02-25"},{"lineNumber":59,"author":{"gitId":"-"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2017-12-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2017-12-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":" address \u003d personToCopy.getAddress();","lastModifiedDate":"2017-12-20"},{"lineNumber":62,"author":{"gitId":"ashleygoh1"},"content":" tag \u003d personToCopy.getTag();","lastModifiedDate":"2024-02-26"},{"lineNumber":63,"author":{"gitId":"ashleygoh1"},"content":" jobDescription \u003d personToCopy.getJobDescription();","lastModifiedDate":"2024-02-26"},{"lineNumber":64,"author":{"gitId":"ashleygoh1"},"content":" interviewDate \u003d personToCopy.getInterviewDate();","lastModifiedDate":"2024-02-26"},{"lineNumber":65,"author":{"gitId":"ashleygoh1"},"content":" internDuration \u003d personToCopy.getInternDuration();","lastModifiedDate":"2024-02-26"},{"lineNumber":66,"author":{"gitId":"ashleygoh1"},"content":" salary \u003d personToCopy.getSalary();","lastModifiedDate":"2024-02-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11"},{"lineNumber":69,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public PersonBuilder withName(String name) {","lastModifiedDate":"2017-08-15"},{"lineNumber":73,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20"},{"lineNumber":74,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":79,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":80,"author":{"gitId":"ashleygoh1"},"content":" public PersonBuilder withTags(String tag) {","lastModifiedDate":"2024-02-26"},{"lineNumber":81,"author":{"gitId":"ashleygoh1"},"content":" this.tag \u003d new Tag(tag);","lastModifiedDate":"2024-02-26"},{"lineNumber":82,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public PersonBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15"},{"lineNumber":89,"author":{"gitId":"-"},"content":" this.address \u003d new Address(address);","lastModifiedDate":"2017-12-20"},{"lineNumber":90,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":93,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":95,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":96,"author":{"gitId":"-"},"content":" public PersonBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15"},{"lineNumber":97,"author":{"gitId":"-"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2017-12-20"},{"lineNumber":98,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":101,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":103,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15"},{"lineNumber":105,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2017-12-20"},{"lineNumber":106,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":109,"author":{"gitId":"ashleygoh1"},"content":" /**","lastModifiedDate":"2024-02-26"},{"lineNumber":110,"author":{"gitId":"ashleygoh1"},"content":" * Sets the {@code jobDescription} of the {@code Person} that we are building.","lastModifiedDate":"2024-02-26"},{"lineNumber":111,"author":{"gitId":"ashleygoh1"},"content":" */","lastModifiedDate":"2024-02-26"},{"lineNumber":112,"author":{"gitId":"ashleygoh1"},"content":" public PersonBuilder withJobDescription(String jobDescription) {","lastModifiedDate":"2024-02-26"},{"lineNumber":113,"author":{"gitId":"ashleygoh1"},"content":" this.jobDescription \u003d new JobDescription(jobDescription);","lastModifiedDate":"2024-02-26"},{"lineNumber":114,"author":{"gitId":"ashleygoh1"},"content":" return this;","lastModifiedDate":"2024-02-26"},{"lineNumber":115,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":116,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":117,"author":{"gitId":"ashleygoh1"},"content":" /**","lastModifiedDate":"2024-02-26"},{"lineNumber":118,"author":{"gitId":"ashleygoh1"},"content":" * Sets the {@code interviewDate} of the {@code Person} that we are building.","lastModifiedDate":"2024-02-26"},{"lineNumber":119,"author":{"gitId":"ashleygoh1"},"content":" */","lastModifiedDate":"2024-02-26"},{"lineNumber":120,"author":{"gitId":"ashleygoh1"},"content":" public PersonBuilder withInterviewDate(String interviewDate) {","lastModifiedDate":"2024-02-26"},{"lineNumber":121,"author":{"gitId":"ashleygoh1"},"content":" this.interviewDate \u003d new InterviewDate(interviewDate);","lastModifiedDate":"2024-02-26"},{"lineNumber":122,"author":{"gitId":"ashleygoh1"},"content":" return this;","lastModifiedDate":"2024-02-26"},{"lineNumber":123,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":124,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":125,"author":{"gitId":"ashleygoh1"},"content":" /**","lastModifiedDate":"2024-02-26"},{"lineNumber":126,"author":{"gitId":"ashleygoh1"},"content":" * Sets the {@code internDuration} of the {@code Person} that we are building.","lastModifiedDate":"2024-02-26"},{"lineNumber":127,"author":{"gitId":"ashleygoh1"},"content":" */","lastModifiedDate":"2024-02-26"},{"lineNumber":128,"author":{"gitId":"ashleygoh1"},"content":" public PersonBuilder withInternDuration(String internDuration) {","lastModifiedDate":"2024-02-26"},{"lineNumber":129,"author":{"gitId":"ashleygoh1"},"content":" this.internDuration \u003d new InternDuration(internDuration);","lastModifiedDate":"2024-02-26"},{"lineNumber":130,"author":{"gitId":"ashleygoh1"},"content":" return this;","lastModifiedDate":"2024-02-26"},{"lineNumber":131,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":132,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":133,"author":{"gitId":"ashleygoh1"},"content":" /**","lastModifiedDate":"2024-02-26"},{"lineNumber":134,"author":{"gitId":"ashleygoh1"},"content":" * Sets the {@code salary} of the {@code Person} that we are building.","lastModifiedDate":"2024-02-26"},{"lineNumber":135,"author":{"gitId":"ashleygoh1"},"content":" */","lastModifiedDate":"2024-02-26"},{"lineNumber":136,"author":{"gitId":"ashleygoh1"},"content":" public PersonBuilder withSalary(String salary) {","lastModifiedDate":"2024-02-26"},{"lineNumber":137,"author":{"gitId":"ashleygoh1"},"content":" this.salary \u003d new Salary(salary);","lastModifiedDate":"2024-02-26"},{"lineNumber":138,"author":{"gitId":"ashleygoh1"},"content":" return this;","lastModifiedDate":"2024-02-26"},{"lineNumber":139,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":140,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":141,"author":{"gitId":"ashleygoh1"},"content":" /**","lastModifiedDate":"2024-02-26"},{"lineNumber":142,"author":{"gitId":"ashleygoh1"},"content":" * Build the person","lastModifiedDate":"2024-02-26"},{"lineNumber":143,"author":{"gitId":"ashleygoh1"},"content":" */","lastModifiedDate":"2024-02-26"},{"lineNumber":144,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05"},{"lineNumber":145,"author":{"gitId":"ashleygoh1"},"content":" return new Person(name, phone, email, address, tag,","lastModifiedDate":"2024-02-26"},{"lineNumber":146,"author":{"gitId":"ashleygoh1"},"content":" jobDescription, interviewDate, internDuration, salary);","lastModifiedDate":"2024-02-26"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":149,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03"}],"authorContributionMap":{"ashleygoh1":65,"-":84}},{"path":"src/test/java/seedu/address/testutil/PersonUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09"},{"lineNumber":5,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_INTERN_DURATION;","lastModifiedDate":"2024-02-26"},{"lineNumber":6,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_INTERVIEW_DATE;","lastModifiedDate":"2024-02-26"},{"lineNumber":7,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_JOB_DESCRIPTION;","lastModifiedDate":"2024-02-26"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09"},{"lineNumber":10,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SALARY;","lastModifiedDate":"2024-02-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-03-29"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * A utility class for Person.","lastModifiedDate":"2017-04-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class PersonUtil {","lastModifiedDate":"2017-04-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Returns an add command string for adding the {@code person}.","lastModifiedDate":"2017-04-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static String getAddCommand(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":25,"author":{"gitId":"-"},"content":" return AddCommand.COMMAND_WORD + \" \" + getPersonDetails(person);","lastModifiedDate":"2017-03-29"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code person}\u0027s details.","lastModifiedDate":"2017-04-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static String getPersonDetails(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":32,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05"},{"lineNumber":33,"author":{"gitId":"ashleygoh1"},"content":" sb.append(PREFIX_NAME + person.getCompanyName().fullName + \" \");","lastModifiedDate":"2024-02-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" sb.append(PREFIX_PHONE + person.getPhone().value + \" \");","lastModifiedDate":"2017-05-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":" sb.append(PREFIX_EMAIL + person.getEmail().value + \" \");","lastModifiedDate":"2017-05-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":" sb.append(PREFIX_ADDRESS + person.getAddress().value + \" \");","lastModifiedDate":"2017-05-09"},{"lineNumber":37,"author":{"gitId":"ashleygoh1"},"content":" sb.append(PREFIX_TAG + person.getTag().tagName + \" \");","lastModifiedDate":"2024-02-26"},{"lineNumber":38,"author":{"gitId":"ashleygoh1"},"content":" sb.append(PREFIX_JOB_DESCRIPTION + person.getJobDescription().value + \" \");","lastModifiedDate":"2024-02-26"},{"lineNumber":39,"author":{"gitId":"ashleygoh1"},"content":" sb.append(PREFIX_INTERVIEW_DATE + person.getInterviewDate().toString() + \" \");","lastModifiedDate":"2024-02-26"},{"lineNumber":40,"author":{"gitId":"ashleygoh1"},"content":" sb.append(PREFIX_INTERN_DURATION + person.getInternDuration().value + \" \");","lastModifiedDate":"2024-02-26"},{"lineNumber":41,"author":{"gitId":"ashleygoh1"},"content":" sb.append(PREFIX_SALARY + person.getSalary().value);","lastModifiedDate":"2024-02-26"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":44,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05"}],"authorContributionMap":{"ashleygoh1":10,"-":34}},{"path":"src/test/java/seedu/address/testutil/TypicalPersons.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":7,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_INTERN_DURATION_AMY;","lastModifiedDate":"2024-02-26"},{"lineNumber":8,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_INTERN_DURATION_BOB;","lastModifiedDate":"2024-02-26"},{"lineNumber":9,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_INTERVIEW_DATE_AMY;","lastModifiedDate":"2024-02-26"},{"lineNumber":10,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_INTERVIEW_DATE_BOB;","lastModifiedDate":"2024-02-26"},{"lineNumber":11,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_JOB_DESCRIPTION_AMY;","lastModifiedDate":"2024-02-26"},{"lineNumber":12,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_JOB_DESCRIPTION_BOB;","lastModifiedDate":"2024-02-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":17,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SALARY_AMY;","lastModifiedDate":"2024-02-26"},{"lineNumber":18,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SALARY_BOB;","lastModifiedDate":"2024-02-26"},{"lineNumber":19,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_INTERVIEW;","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_NO_REPLY;","lastModifiedDate":"2024-02-26"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-07"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Person} objects to be used in tests.","lastModifiedDate":"2017-08-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":"public class TypicalPersons {","lastModifiedDate":"2017-04-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final Person ALICE \u003d new PersonBuilder().withName(\"Alice Pauline\")","lastModifiedDate":"2018-01-10"},{"lineNumber":35,"author":{"gitId":"-"},"content":" .withPhone(\"94351253\")","lastModifiedDate":"2018-04-19"},{"lineNumber":36,"author":{"gitId":"ashleygoh1"},"content":" .withEmail(\"alice@example.com\")","lastModifiedDate":"2024-02-26"},{"lineNumber":37,"author":{"gitId":"ashleygoh1"},"content":" .withAddress(\"123, Jurong West Ave 6, #08-111\")","lastModifiedDate":"2024-02-26"},{"lineNumber":38,"author":{"gitId":"ashleygoh1"},"content":" .withTags(\"NR\")","lastModifiedDate":"2024-02-26"},{"lineNumber":39,"author":{"gitId":"ashleygoh1"},"content":" .withJobDescription(\"Software engineer developer\")","lastModifiedDate":"2024-02-26"},{"lineNumber":40,"author":{"gitId":"ashleygoh1"},"content":" .withInterviewDate(\"03-01-2024 1000\")","lastModifiedDate":"2024-02-26"},{"lineNumber":41,"author":{"gitId":"ashleygoh1"},"content":" .withInternDuration(\"3 months\")","lastModifiedDate":"2024-02-26"},{"lineNumber":42,"author":{"gitId":"ashleygoh1"},"content":" .withSalary(\"1000\").build();","lastModifiedDate":"2024-02-26"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final Person BENSON \u003d new PersonBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2018-01-10"},{"lineNumber":44,"author":{"gitId":"-"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2017-09-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":" .withEmail(\"johnd@example.com\").withPhone(\"98765432\")","lastModifiedDate":"2017-04-05"},{"lineNumber":46,"author":{"gitId":"ashleygoh1"},"content":" .withTags(\"I\")","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"ashleygoh1"},"content":" .withJobDescription(\"Software engineer developer intern\")","lastModifiedDate":"2024-02-26"},{"lineNumber":48,"author":{"gitId":"Jawad280"},"content":" .withInterviewDate(\"03-02-2024 1000\")","lastModifiedDate":"2024-02-29"},{"lineNumber":49,"author":{"gitId":"ashleygoh1"},"content":" .withInternDuration(\"3 months\")","lastModifiedDate":"2024-02-26"},{"lineNumber":50,"author":{"gitId":"ashleygoh1"},"content":" .withSalary(\"1000\").build();","lastModifiedDate":"2024-02-26"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static final Person CARL \u003d new PersonBuilder().withName(\"Carl Kurz\").withPhone(\"95352563\")","lastModifiedDate":"2018-01-10"},{"lineNumber":52,"author":{"gitId":"ashleygoh1"},"content":" .withEmail(\"heinz@example.com\").withAddress(\"wall street\")","lastModifiedDate":"2024-02-26"},{"lineNumber":53,"author":{"gitId":"ashleygoh1"},"content":" .withTags(\"NR\")","lastModifiedDate":"2024-02-26"},{"lineNumber":54,"author":{"gitId":"ashleygoh1"},"content":" .withJobDescription(\"Software engineer developer intern\")","lastModifiedDate":"2024-02-26"},{"lineNumber":55,"author":{"gitId":"Jawad280"},"content":" .withInterviewDate(\"03-03-2024 1000\")","lastModifiedDate":"2024-02-29"},{"lineNumber":56,"author":{"gitId":"ashleygoh1"},"content":" .withInternDuration(\"3 months\")","lastModifiedDate":"2024-02-26"},{"lineNumber":57,"author":{"gitId":"ashleygoh1"},"content":" .withSalary(\"1000\").build();","lastModifiedDate":"2024-02-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final Person DANIEL \u003d new PersonBuilder().withName(\"Daniel Meier\").withPhone(\"87652533\")","lastModifiedDate":"2018-01-10"},{"lineNumber":59,"author":{"gitId":"ashleygoh1"},"content":" .withEmail(\"cornelia@example.com\").withAddress(\"10th street\")","lastModifiedDate":"2024-02-26"},{"lineNumber":60,"author":{"gitId":"ashleygoh1"},"content":" .withTags(\"NR\")","lastModifiedDate":"2024-02-26"},{"lineNumber":61,"author":{"gitId":"ashleygoh1"},"content":" .withJobDescription(\"Front End intern\")","lastModifiedDate":"2024-02-26"},{"lineNumber":62,"author":{"gitId":"Jawad280"},"content":" .withInterviewDate(\"03-04-2024 1000\")","lastModifiedDate":"2024-02-29"},{"lineNumber":63,"author":{"gitId":"ashleygoh1"},"content":" .withInternDuration(\"3 months\")","lastModifiedDate":"2024-02-26"},{"lineNumber":64,"author":{"gitId":"ashleygoh1"},"content":" .withSalary(\"1200\").build();","lastModifiedDate":"2024-02-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public static final Person ELLE \u003d new PersonBuilder().withName(\"Elle Meyer\").withPhone(\"9482224\")","lastModifiedDate":"2018-01-10"},{"lineNumber":66,"author":{"gitId":"ashleygoh1"},"content":" .withEmail(\"werner@example.com\")","lastModifiedDate":"2024-02-26"},{"lineNumber":67,"author":{"gitId":"ashleygoh1"},"content":" .withTags(\"NR\")","lastModifiedDate":"2024-02-26"},{"lineNumber":68,"author":{"gitId":"ashleygoh1"},"content":" .withJobDescription(\"Software engineer developer intern\")","lastModifiedDate":"2024-02-26"},{"lineNumber":69,"author":{"gitId":"Jawad280"},"content":" .withInterviewDate(\"03-05-2024 1000\")","lastModifiedDate":"2024-02-29"},{"lineNumber":70,"author":{"gitId":"ashleygoh1"},"content":" .withInternDuration(\"3 months\")","lastModifiedDate":"2024-02-26"},{"lineNumber":71,"author":{"gitId":"ashleygoh1"},"content":" .withSalary(\"1000\").build();","lastModifiedDate":"2024-02-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public static final Person FIONA \u003d new PersonBuilder().withName(\"Fiona Kunz\").withPhone(\"9482427\")","lastModifiedDate":"2018-01-10"},{"lineNumber":73,"author":{"gitId":"ashleygoh1"},"content":" .withEmail(\"lydia@example.com\")","lastModifiedDate":"2024-02-26"},{"lineNumber":74,"author":{"gitId":"ashleygoh1"},"content":" .withTags(\"NR\")","lastModifiedDate":"2024-02-26"},{"lineNumber":75,"author":{"gitId":"ashleygoh1"},"content":" .withJobDescription(\"Data science intern\")","lastModifiedDate":"2024-02-26"},{"lineNumber":76,"author":{"gitId":"Jawad280"},"content":" .withInterviewDate(\"03-06-2024 1000\")","lastModifiedDate":"2024-02-29"},{"lineNumber":77,"author":{"gitId":"ashleygoh1"},"content":" .withInternDuration(\"3 months\")","lastModifiedDate":"2024-02-26"},{"lineNumber":78,"author":{"gitId":"ashleygoh1"},"content":" .withSalary(\"1000\").build();","lastModifiedDate":"2024-02-26"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public static final Person GEORGE \u003d new PersonBuilder().withName(\"George Best\").withPhone(\"9482442\")","lastModifiedDate":"2018-01-10"},{"lineNumber":80,"author":{"gitId":"ashleygoh1"},"content":" .withEmail(\"anna@example.com\").withAddress(\"4th street\")","lastModifiedDate":"2024-02-26"},{"lineNumber":81,"author":{"gitId":"ashleygoh1"},"content":" .withTags(\"I\")","lastModifiedDate":"2024-03-12"},{"lineNumber":82,"author":{"gitId":"ashleygoh1"},"content":" .withJobDescription(\"Software engineer developer intern\")","lastModifiedDate":"2024-02-26"},{"lineNumber":83,"author":{"gitId":"Jawad280"},"content":" .withInterviewDate(\"03-07-2024 1000\")","lastModifiedDate":"2024-02-29"},{"lineNumber":84,"author":{"gitId":"ashleygoh1"},"content":" .withInternDuration(\"3 months\")","lastModifiedDate":"2024-02-26"},{"lineNumber":85,"author":{"gitId":"ashleygoh1"},"content":" .withSalary(\"1000\").build();","lastModifiedDate":"2024-02-26"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public static final Person HOON \u003d new PersonBuilder().withName(\"Hoon Meier\").withPhone(\"8482424\")","lastModifiedDate":"2018-01-10"},{"lineNumber":89,"author":{"gitId":"ashleygoh1"},"content":" .withEmail(\"stefan@example.com\").withAddress(\"little india\")","lastModifiedDate":"2024-02-26"},{"lineNumber":90,"author":{"gitId":"ashleygoh1"},"content":" .withTags(\"I\")","lastModifiedDate":"2024-03-12"},{"lineNumber":91,"author":{"gitId":"ashleygoh1"},"content":" .withJobDescription(\"Software engineer developer intern\")","lastModifiedDate":"2024-02-26"},{"lineNumber":92,"author":{"gitId":"Jawad280"},"content":" .withInterviewDate(\"03-08-2024 1700\")","lastModifiedDate":"2024-02-29"},{"lineNumber":93,"author":{"gitId":"ashleygoh1"},"content":" .withInternDuration(\"3 months\")","lastModifiedDate":"2024-02-26"},{"lineNumber":94,"author":{"gitId":"ashleygoh1"},"content":" .withSalary(\"1000\").build();","lastModifiedDate":"2024-02-26"},{"lineNumber":95,"author":{"gitId":"-"},"content":" public static final Person IDA \u003d new PersonBuilder().withName(\"Ida Mueller\").withPhone(\"8482131\")","lastModifiedDate":"2018-01-10"},{"lineNumber":96,"author":{"gitId":"ashleygoh1"},"content":" .withEmail(\"hans@example.com\")","lastModifiedDate":"2024-02-26"},{"lineNumber":97,"author":{"gitId":"ashleygoh1"},"content":" .withTags(\"NR\")","lastModifiedDate":"2024-02-26"},{"lineNumber":98,"author":{"gitId":"ashleygoh1"},"content":" .withJobDescription(\"Full Stack intern\")","lastModifiedDate":"2024-02-26"},{"lineNumber":99,"author":{"gitId":"Jawad280"},"content":" .withInterviewDate(\"03-09-2024 1000\")","lastModifiedDate":"2024-02-29"},{"lineNumber":100,"author":{"gitId":"ashleygoh1"},"content":" .withInternDuration(\"3 months\")","lastModifiedDate":"2024-02-26"},{"lineNumber":101,"author":{"gitId":"ashleygoh1"},"content":" .withSalary(\"1000\").build();","lastModifiedDate":"2024-02-26"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":103,"author":{"gitId":"-"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2017-08-22"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public static final Person AMY \u003d new PersonBuilder().withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2018-01-10"},{"lineNumber":105,"author":{"gitId":"ashleygoh1"},"content":" .withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY).withTags(VALID_TAG_NO_REPLY)","lastModifiedDate":"2024-02-26"},{"lineNumber":106,"author":{"gitId":"ashleygoh1"},"content":" .withJobDescription(VALID_JOB_DESCRIPTION_AMY).withInterviewDate(VALID_INTERVIEW_DATE_AMY)","lastModifiedDate":"2024-02-26"},{"lineNumber":107,"author":{"gitId":"ashleygoh1"},"content":" .withInternDuration(VALID_INTERN_DURATION_AMY).withSalary(VALID_SALARY_AMY).build();","lastModifiedDate":"2024-02-26"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public static final Person BOB \u003d new PersonBuilder().withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2018-01-10"},{"lineNumber":109,"author":{"gitId":"ashleygoh1"},"content":" .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_INTERVIEW)","lastModifiedDate":"2024-03-12"},{"lineNumber":110,"author":{"gitId":"ashleygoh1"},"content":" .withJobDescription(VALID_JOB_DESCRIPTION_BOB).withInterviewDate(VALID_INTERVIEW_DATE_BOB)","lastModifiedDate":"2024-02-26"},{"lineNumber":111,"author":{"gitId":"ashleygoh1"},"content":" .withInternDuration(VALID_INTERN_DURATION_BOB).withSalary(VALID_SALARY_BOB).build();","lastModifiedDate":"2024-02-26"},{"lineNumber":112,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":" private TypicalPersons() {} // prevents instantiation","lastModifiedDate":"2017-07-20"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":116,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":117,"author":{"gitId":"-"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2017-08-05"},{"lineNumber":118,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":119,"author":{"gitId":"-"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2017-08-05"},{"lineNumber":120,"author":{"gitId":"-"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2017-08-05"},{"lineNumber":121,"author":{"gitId":"-"},"content":" for (Person person : getTypicalPersons()) {","lastModifiedDate":"2018-01-10"},{"lineNumber":122,"author":{"gitId":"-"},"content":" ab.addPerson(person);","lastModifiedDate":"2017-08-05"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13"},{"lineNumber":124,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04"},{"lineNumber":127,"author":{"gitId":"-"},"content":" public static List\u003cPerson\u003e getTypicalPersons() {","lastModifiedDate":"2018-01-10"},{"lineNumber":128,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2017-08-07"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04"},{"lineNumber":130,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13"}],"authorContributionMap":{"Jawad280":8,"ashleygoh1":62,"-":60}}] +[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"eunrcn"},"content":"# InternHub","lastModifiedDate":"2024-02-25"},{"lineNumber":2,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":3,"author":{"gitId":"ashleygoh1"},"content":"[![CI Status](https://github.com/AY2324S2-CS2103T-F14-1/tp/actions/workflows/gradle.yml/badge.svg)](https://github.com/AY2324S2-CS2103T-F14-1/tp/actions/workflows/gradle.yml)","lastModifiedDate":"2024-03-02"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"eunrcn"},"content":"## Overview","lastModifiedDate":"2024-02-25"},{"lineNumber":8,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":9,"author":{"gitId":"eunrcn"},"content":"InternHub is a comprehensive project designed to assist Computer Science (CS) students in managing their internship applications. This project serves various purposes:","lastModifiedDate":"2024-02-25"},{"lineNumber":10,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":11,"author":{"gitId":"eunrcn"},"content":"- It can be utilized as a starting point for a course project, offering students a foundation rather than building everything from scratch.","lastModifiedDate":"2024-02-25"},{"lineNumber":12,"author":{"gitId":"eunrcn"},"content":"- It serves as a case study for understanding the development of a desktop application in an Object-Oriented Programming (OOP) fashion.","lastModifiedDate":"2024-02-25"},{"lineNumber":13,"author":{"gitId":"eunrcn"},"content":"- The project provides a well-written code base, surpassing the typical size of beginner-level SE modules (around 6 KLoC) without becoming overwhelming.","lastModifiedDate":"2024-02-25"},{"lineNumber":14,"author":{"gitId":"eunrcn"},"content":"- Extensive user and developer documentation is included to facilitate understanding and usage.","lastModifiedDate":"2024-02-25"},{"lineNumber":15,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":16,"author":{"gitId":"eunrcn"},"content":"## Project Details","lastModifiedDate":"2024-02-25"},{"lineNumber":17,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":18,"author":{"gitId":"eunrcn"},"content":"- **Name:** InternHub","lastModifiedDate":"2024-02-25"},{"lineNumber":19,"author":{"gitId":"eunrcn"},"content":"- **Type:** Desktop Application","lastModifiedDate":"2024-02-25"},{"lineNumber":20,"author":{"gitId":"eunrcn"},"content":"- **Initiative:** Part of the se-education.org initiative","lastModifiedDate":"2024-02-25"},{"lineNumber":21,"author":{"gitId":"eunrcn"},"content":"- **Documentation:** [InternHub Product Website](https://ay2324s2-cs2103t-f14-1.github.io/tp/index.html)","lastModifiedDate":"2024-02-28"},{"lineNumber":22,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":23,"author":{"gitId":"eunrcn"},"content":"## Features","lastModifiedDate":"2024-02-25"},{"lineNumber":24,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":25,"author":{"gitId":"eunrcn"},"content":"InternHub is specifically tailored for CS students, offering the following features:","lastModifiedDate":"2024-02-25"},{"lineNumber":26,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":27,"author":{"gitId":"eunrcn"},"content":"- Organization and optimization of internship application details.","lastModifiedDate":"2024-02-25"},{"lineNumber":28,"author":{"gitId":"eunrcn"},"content":"- Seamless management of contacts, interview dates, internship duration, salary and job description.","lastModifiedDate":"2024-02-28"},{"lineNumber":29,"author":{"gitId":"eunrcn"},"content":"- Editable fields to meet sudden changes in attributes.","lastModifiedDate":"2024-02-28"},{"lineNumber":30,"author":{"gitId":"eunrcn"},"content":"- Tagging system to categorize and track the stages of each interview process.","lastModifiedDate":"2024-02-25"},{"lineNumber":31,"author":{"gitId":"eunrcn"},"content":"- Filtering and sorting capabilities for efficient access to relevant information.","lastModifiedDate":"2024-02-25"},{"lineNumber":32,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":33,"author":{"gitId":"eunrcn"},"content":"## Getting Started","lastModifiedDate":"2024-02-25"},{"lineNumber":34,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":35,"author":{"gitId":"eunrcn"},"content":"For detailed information on using InternHub, refer to our [User Guide](https://ay2324s2-cs2103t-f14-1.github.io/tp/UserGuide.html).","lastModifiedDate":"2024-02-28"},{"lineNumber":36,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":37,"author":{"gitId":"eunrcn"},"content":"## Contributing","lastModifiedDate":"2024-02-25"},{"lineNumber":38,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":39,"author":{"gitId":"ashleygoh1"},"content":"This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-03-02"}],"authorContributionMap":{"eunrcn":34,"ashleygoh1":2,"-":3}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"About Us\"","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"# About Us","lastModifiedDate":"2023-09-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"We are a team based in the [School of Computing, National University of Singapore](http://www.comp.nus.edu.sg).","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"You can reach us at the email `seer[at]comp.nus.edu.sg`","lastModifiedDate":"2020-06-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"ashleygoh1"},"content":"### Ashley Goh","lastModifiedDate":"2024-02-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"ashleygoh1"},"content":"\u003cimg src\u003d\"images/ashleygoh1.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-02-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"ashleygoh1"},"content":"[[github](http://github.com/ashleygoh1)]","lastModifiedDate":"2024-02-27"},{"lineNumber":19,"author":{"gitId":"ashleygoh1"},"content":"[[portfolio](team/ashley.md)]","lastModifiedDate":"2024-02-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"ashleygoh1"},"content":"* Role: Developer","lastModifiedDate":"2024-02-27"},{"lineNumber":22,"author":{"gitId":"ashleygoh1"},"content":"* Responsibilities: Model","lastModifiedDate":"2024-02-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"ashleygoh1"},"content":"### Chai Ming How","lastModifiedDate":"2024-02-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"ashleygoh1"},"content":"\u003cimg src\u003d\"images/minghowc.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-02"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"ashleygoh1"},"content":"[[github](http://github.com/minghowC)]","lastModifiedDate":"2024-02-27"},{"lineNumber":29,"author":{"gitId":"ashleygoh1"},"content":"[[portfolio](team/minghow.md)]","lastModifiedDate":"2024-02-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"ashleygoh1"},"content":"* Role: Developer","lastModifiedDate":"2024-02-27"},{"lineNumber":32,"author":{"gitId":"minghowC"},"content":"* Responsibilities: Features Testing","lastModifiedDate":"2024-03-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"ashleygoh1"},"content":"### Chen Yixin","lastModifiedDate":"2024-02-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"Jawad280"},"content":"\u003cimg src\u003d\"images/chenyixin0.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-03"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"ashleygoh1"},"content":"[[github](http://github.com/chenyixin0)]","lastModifiedDate":"2024-02-27"},{"lineNumber":39,"author":{"gitId":"ashleygoh1"},"content":"[[portfolio](team/yixin.md)]","lastModifiedDate":"2024-02-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"ashleygoh1"},"content":"* Responsibilities: Dev Ops + Threading","lastModifiedDate":"2024-02-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"ashleygoh1"},"content":"### Eunice Koh","lastModifiedDate":"2024-02-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"eunrcn"},"content":"\u003cimg src\u003d\"images/eunrcn.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-01"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"ashleygoh1"},"content":"[[github](http://github.com/eunrcn)]","lastModifiedDate":"2024-02-27"},{"lineNumber":49,"author":{"gitId":"ashleygoh1"},"content":"[[portfolio](team/eunice.md)]","lastModifiedDate":"2024-02-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"eunrcn"},"content":"* Responsibilities: Model","lastModifiedDate":"2024-02-28"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"Jawad280"},"content":"### Jawad Afthab","lastModifiedDate":"2024-02-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"Jawad280"},"content":"\u003cimg src\u003d\"images/jawad280.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-02-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"ashleygoh1"},"content":"[[github](http://github.com/Jawad280)]","lastModifiedDate":"2024-02-27"},{"lineNumber":59,"author":{"gitId":"ashleygoh1"},"content":"[[portfolio](team/jawad.md)]","lastModifiedDate":"2024-02-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":"* Responsibilities: UI","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"eunrcn":2,"minghowC":1,"Jawad280":3,"ashleygoh1":20,"-":36}},{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: default.md","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: \"Developer Guide\"","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"pageNav: 3","lastModifiedDate":"2023-09-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":7,"author":{"gitId":"ashleygoh1"},"content":"# InternHub Developer Guide","lastModifiedDate":"2024-03-02"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":14,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":16,"author":{"gitId":"-"},"content":"_{ list here sources of all reused/adapted ideas, code, documentation, and third-party libraries -- include links to the original source as well }_","lastModifiedDate":"2023-09-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureDiagram.puml\" width\u003d\"280\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":"The ***Architecture Diagram*** given above explains the high-level design of the App.","lastModifiedDate":"2021-07-31"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":"Given below is a quick overview of main components and how they interact with each other.","lastModifiedDate":"2021-07-31"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"**`Main`** (consisting of classes [`Main`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/Main.java) and [`MainApp`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/MainApp.java)) is in charge of the app launch and shut down.","lastModifiedDate":"2023-09-03"},{"lineNumber":39,"author":{"gitId":"-"},"content":"* At app launch, it initializes the other components in the correct sequence, and connects them up with each other.","lastModifiedDate":"2023-09-03"},{"lineNumber":40,"author":{"gitId":"-"},"content":"* At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2023-09-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"* [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"* [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"* [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"The *Sequence Diagram* below shows how the components interact with each other for the scenario where the user issues the command `delete 1`.","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureSequenceDiagram.puml\" width\u003d\"574\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":59,"author":{"gitId":"-"},"content":"* defines its *API* in an `interface` with the same name as the Component.","lastModifiedDate":"2021-07-31"},{"lineNumber":60,"author":{"gitId":"-"},"content":"* implements its functionality using a concrete `{Component Name}Manager` class (which follows the corresponding API `interface` mentioned in the previous point.","lastModifiedDate":"2021-07-31"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":62,"author":{"gitId":"-"},"content":"For example, the `Logic` component defines its API in the `Logic.java` interface and implements its functionality using the `LogicManager.java` class which follows the `Logic` interface. Other components interact with a given component through its interface rather than the concrete class (reason: to prevent outside component\u0027s being coupled to the implementation of a component), as illustrated in the (partial) class diagram below.","lastModifiedDate":"2021-07-31"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":64,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ComponentManagers.puml\" width\u003d\"300\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":66,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"The **API** of this component is specified in [`Ui.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/Ui.java)","lastModifiedDate":"2021-07-31"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UiClassDiagram.puml\" alt\u003d\"Structure of the UI Component\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"The UI consists of a `MainWindow` that is made up of parts e.g.`CommandBox`, `ResultDisplay`, `PersonListPanel`, `StatusBarFooter` etc. All these, including the `MainWindow`, inherit from the abstract `UiPart` class which captures the commonalities between classes that represent parts of the visible GUI.","lastModifiedDate":"2021-07-31"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"The `UI` component uses the JavaFx UI framework. The layout of these UI parts are defined in matching `.fxml` files that are in the `src/main/resources/view` folder. For example, the layout of the [`MainWindow`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/MainWindow.java) is specified in [`MainWindow.fxml`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/resources/view/MainWindow.fxml)","lastModifiedDate":"2021-07-31"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"* executes user commands using the `Logic` component.","lastModifiedDate":"2021-07-31"},{"lineNumber":81,"author":{"gitId":"-"},"content":"* listens for changes to `Model` data so that the UI can be updated with the modified data.","lastModifiedDate":"2021-07-31"},{"lineNumber":82,"author":{"gitId":"-"},"content":"* keeps a reference to the `Logic` component, because the `UI` relies on the `Logic` to execute commands.","lastModifiedDate":"2021-07-31"},{"lineNumber":83,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component, as it displays `Person` object residing in the `Model`.","lastModifiedDate":"2021-07-31"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"**API** : [`Logic.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/logic/Logic.java)","lastModifiedDate":"2021-07-31"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/LogicClassDiagram.puml\" width\u003d\"550\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"The sequence diagram below illustrates the interactions within the `Logic` component, taking `execute(\"delete 1\")` API call as an example.","lastModifiedDate":"2023-09-03"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/DeleteSequenceDiagram.puml\" alt\u003d\"Interactions Inside the Logic Component for the `delete 1` Command\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":97,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"**Note:** The lifeline for `DeleteCommandParser` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline continues till the end of diagram.","lastModifiedDate":"2023-09-12"},{"lineNumber":100,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":104,"author":{"gitId":"-"},"content":"1. When `Logic` is called upon to execute a command, it is passed to an `AddressBookParser` object which in turn creates a parser that matches the command (e.g., `DeleteCommandParser`) and uses it to parse the command.","lastModifiedDate":"2023-09-03"},{"lineNumber":105,"author":{"gitId":"-"},"content":"1. This results in a `Command` object (more precisely, an object of one of its subclasses e.g., `DeleteCommand`) which is executed by the `LogicManager`.","lastModifiedDate":"2023-09-03"},{"lineNumber":106,"author":{"gitId":"-"},"content":"1. The command can communicate with the `Model` when it is executed (e.g. to delete a person).\u003cbr\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":107,"author":{"gitId":"-"},"content":" Note that although this is shown as a single step in the diagram above (for simplicity), in the code it can take several interactions (between the command object and the `Model`) to achieve.","lastModifiedDate":"2024-02-09"},{"lineNumber":108,"author":{"gitId":"-"},"content":"1. The result of the command execution is encapsulated as a `CommandResult` object which is returned back from `Logic`.","lastModifiedDate":"2023-09-03"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":110,"author":{"gitId":"-"},"content":"Here are the other classes in `Logic` (omitted from the class diagram above) that are used for parsing a user command:","lastModifiedDate":"2021-07-31"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":112,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ParserClasses.puml\" width\u003d\"600\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31"},{"lineNumber":115,"author":{"gitId":"-"},"content":"* When called upon to parse a user command, the `AddressBookParser` class creates an `XYZCommandParser` (`XYZ` is a placeholder for the specific command name e.g., `AddCommandParser`) which uses the other classes shown above to parse the user command and create a `XYZCommand` object (e.g., `AddCommand`) which the `AddressBookParser` returns back as a `Command` object.","lastModifiedDate":"2021-07-31"},{"lineNumber":116,"author":{"gitId":"-"},"content":"* All `XYZCommandParser` classes (e.g., `AddCommandParser`, `DeleteCommandParser`, ...) inherit from the `Parser` interface so that they can be treated similarly where possible e.g, during testing.","lastModifiedDate":"2021-07-31"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31"},{"lineNumber":119,"author":{"gitId":"-"},"content":"**API** : [`Model.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/model/Model.java)","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":"* stores the address book data i.e., all `Person` objects (which are contained in a `UniquePersonList` object).","lastModifiedDate":"2021-07-31"},{"lineNumber":127,"author":{"gitId":"-"},"content":"* stores the currently \u0027selected\u0027 `Person` objects (e.g., results of a search query) as a separate _filtered_ list which is exposed to outsiders as an unmodifiable `ObservableList\u003cPerson\u003e` that can be \u0027observed\u0027 e.g. the UI can be bound to this list so that the UI automatically updates when the data in the list change.","lastModifiedDate":"2021-07-31"},{"lineNumber":128,"author":{"gitId":"-"},"content":"* stores a `UserPref` object that represents the user’s preferences. This is exposed to the outside as a `ReadOnlyUserPref` objects.","lastModifiedDate":"2021-07-31"},{"lineNumber":129,"author":{"gitId":"-"},"content":"* does not depend on any of the other three components (as the `Model` represents data entities of the domain, they should make sense on their own without depending on other components)","lastModifiedDate":"2021-07-31"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":131,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":133,"author":{"gitId":"-"},"content":"**Note:** An alternative (arguably, a more OOP) model is given below. It has a `Tag` list in the `AddressBook`, which `Person` references. This allows `AddressBook` to only require one `Tag` object per unique tag, instead of each `Person` needing their own `Tag` objects.\u003cbr\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":135,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/BetterModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":"**API** : [`Storage.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/storage/Storage.java)","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/StorageClassDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":146,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":"* can save both address book data and user preference data in JSON format, and read them back into corresponding objects.","lastModifiedDate":"2023-09-03"},{"lineNumber":148,"author":{"gitId":"-"},"content":"* inherits from both `AddressBookStorage` and `UserPrefStorage`, which means it can be treated as either one (if only the functionality of only one is needed).","lastModifiedDate":"2021-07-31"},{"lineNumber":149,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component (because the `Storage` component\u0027s job is to save/retrieve objects that belong to the `Model`)","lastModifiedDate":"2021-07-21"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.addressbook.commons` package.","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":"The proposed undo/redo mechanism is facilitated by `VersionedAddressBook`. It extends `AddressBook` with an undo/redo history, stored internally as an `addressBookStateList` and `currentStatePointer`. Additionally, it implements the following operations:","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":"These operations are exposed in the `Model` interface as `Model#commitAddressBook()`, `Model#undoAddressBook()` and `Model#redoAddressBook()` respectively.","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":"Given below is an example usage scenario and how the undo/redo mechanism behaves at each step.","lastModifiedDate":"2020-05-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":"Step 1. The user launches the application for the first time. The `VersionedAddressBook` will be initialized with the initial address book state, and the `currentStatePointer` pointing to that single address book state.","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState0.puml\" alt\u003d\"UndoRedoState0\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":"Step 2. The user executes `delete 5` command to delete the 5th person in the address book. The `delete` command calls `Model#commitAddressBook()`, causing the modified state of the address book after the `delete 5` command executes to be saved in the `addressBookStateList`, and the `currentStatePointer` is shifted to the newly inserted address book state.","lastModifiedDate":"2020-05-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState1.puml\" alt\u003d\"UndoRedoState1\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"Step 3. The user executes `add n/David …​` to add a new person. The `add` command also calls `Model#commitAddressBook()`, causing another modified address book state to be saved into the `addressBookStateList`.","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState2.puml\" alt\u003d\"UndoRedoState2\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":"**Note:** If a command fails its execution, it will not call `Model#commitAddressBook()`, so the address book state will not be saved into the `addressBookStateList`.","lastModifiedDate":"2023-09-12"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":191,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":"Step 4. The user now decides that adding the person was a mistake, and decides to undo that action by executing the `undo` command. The `undo` command will call `Model#undoAddressBook()`, which will shift the `currentStatePointer` once to the left, pointing it to the previous address book state, and restores the address book to that state.","lastModifiedDate":"2020-05-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState3.puml\" alt\u003d\"UndoRedoState3\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":198,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"author":{"gitId":"-"},"content":"**Note:** If the `currentStatePointer` is at index 0, pointing to the initial AddressBook state, then there are no previous AddressBook states to restore. The `undo` command uses `Model#canUndoAddressBook()` to check if this is the case. If so, it will return an error to the user rather","lastModifiedDate":"2023-09-12"},{"lineNumber":201,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Logic.puml\" alt\u003d\"UndoSequenceDiagram-Logic\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":209,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":"**Note:** The lifeline for `UndoCommand` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.","lastModifiedDate":"2023-09-12"},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":213,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":217,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Model.puml\" alt\u003d\"UndoSequenceDiagram-Model\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":219,"author":{"gitId":"-"},"content":"The `redo` command does the opposite — it calls `Model#redoAddressBook()`, which shifts the `currentStatePointer` once to the right, pointing to the previously undone state, and restores the address book to that state.","lastModifiedDate":"2020-05-23"},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":221,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":223,"author":{"gitId":"-"},"content":"**Note:** If the `currentStatePointer` is at index `addressBookStateList.size() - 1`, pointing to the latest address book state, then there are no undone AddressBook states to restore. The `redo` command uses `Model#canRedoAddressBook()` to check if this is the case. If so, it will return an error to the user rather than attempting to perform the redo.","lastModifiedDate":"2023-09-12"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"author":{"gitId":"-"},"content":"Step 5. The user then decides to execute the command `list`. Commands that do not modify the address book, such as `list`, will usually not call `Model#commitAddressBook()`, `Model#undoAddressBook()` or `Model#redoAddressBook()`. Thus, the `addressBookStateList` remains unchanged.","lastModifiedDate":"2020-05-23"},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState4.puml\" alt\u003d\"UndoRedoState4\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"author":{"gitId":"-"},"content":"Step 6. The user executes `clear`, which calls `Model#commitAddressBook()`. Since the `currentStatePointer` is not pointing at the end of the `addressBookStateList`, all address book states after the `currentStatePointer` will be purged. Reason: It no longer makes sense to redo the `add n/David …​` command. This is the behavior that most modern desktop applications follow.","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState5.puml\" alt\u003d\"UndoRedoState5\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/CommitActivityDiagram.puml\" width\u003d\"250\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":239,"author":{"gitId":"Jawad280"},"content":"### Design considerations:","lastModifiedDate":"2024-03-01"},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31"},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":247,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23"},{"lineNumber":248,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23"},{"lineNumber":249,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23"},{"lineNumber":250,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":254,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23"},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":259,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07"},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":264,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":265,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":266,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":267,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":268,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":269,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":271,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":273,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23"},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":275,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23"},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":277,"author":{"gitId":"ashleygoh1"},"content":"* CS students","lastModifiedDate":"2024-03-02"},{"lineNumber":278,"author":{"gitId":"ashleygoh1"},"content":"* has a need to keep track of contacts of companies and interview dates during thier internship hunt","lastModifiedDate":"2024-03-02"},{"lineNumber":279,"author":{"gitId":"ashleygoh1"},"content":"* prefer a one-stop, centralised dashboard to manage all contact details of companies","lastModifiedDate":"2024-03-02"},{"lineNumber":280,"author":{"gitId":"ashleygoh1"},"content":"* is reasonably comfortable in using a more CLI based app","lastModifiedDate":"2024-03-02"},{"lineNumber":281,"author":{"gitId":"ashleygoh1"},"content":"* wants to be better organized","lastModifiedDate":"2024-03-02"},{"lineNumber":282,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":283,"author":{"gitId":"ashleygoh1"},"content":"**Value proposition**: Ultimate companion for Computer Science (CS) students embarking on their internship journey !","lastModifiedDate":"2024-03-02"},{"lineNumber":284,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":285,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07"},{"lineNumber":286,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":287,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23"},{"lineNumber":288,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":290,"author":{"gitId":"eunrcn"},"content":"| Priority | As an …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2024-03-01"},{"lineNumber":291,"author":{"gitId":"Jawad280"},"content":"|----------|----------------------|---------------------------------------------------------|---------------------------------------------------------------------------------------------------|","lastModifiedDate":"2024-03-01"},{"lineNumber":292,"author":{"gitId":"Jawad280"},"content":"| `* * *` | internship applicant | add contact information of internship companies | easily access their details when needed |","lastModifiedDate":"2024-03-01"},{"lineNumber":293,"author":{"gitId":"Jawad280"},"content":"| `* * *` | internship applicant | delete contact information of internship companies | easily remove any old or irrelevant company contacts |","lastModifiedDate":"2024-03-01"},{"lineNumber":294,"author":{"gitId":"Jawad280"},"content":"| `* * *` | internship applicant | edit contact information of internship companies | easily update any details on the go |","lastModifiedDate":"2024-03-01"},{"lineNumber":295,"author":{"gitId":"Jawad280"},"content":"| `* * *` | internship applicant | see usage instructions | refer to instructions when I forget how to use the AddressBook |","lastModifiedDate":"2024-03-01"},{"lineNumber":296,"author":{"gitId":"Jawad280"},"content":"| `* * *` | internship applicant | find the contact information of a certain company | easily search which company contact I want by name |","lastModifiedDate":"2024-03-01"},{"lineNumber":297,"author":{"gitId":"Jawad280"},"content":"| `* * *` | internship applicant | keep track of the status of each internship application | categorize and easily follow up accordingly |","lastModifiedDate":"2024-03-01"},{"lineNumber":298,"author":{"gitId":"Jawad280"},"content":"| `* * *` | internship applicant | sort company contacts by dates | prioritize and plan for upcoming interviews |","lastModifiedDate":"2024-03-01"},{"lineNumber":299,"author":{"gitId":"Jawad280"},"content":"| `* * ` | internship applicant | filter company contacts by date | quickly access contacts associated with a specific date |","lastModifiedDate":"2024-03-01"},{"lineNumber":300,"author":{"gitId":"Jawad280"},"content":"| `* * ` | internship applicant | filter company contacts by tag | easily find and manage contacts within specific categories |","lastModifiedDate":"2024-03-01"},{"lineNumber":301,"author":{"gitId":"Jawad280"},"content":"| `* * ` | internship applicant | add a time to a company contact | record when a specific task or interaction needs to be done |","lastModifiedDate":"2024-03-01"},{"lineNumber":302,"author":{"gitId":"Jawad280"},"content":"| `* ` | internship applicant | add notes to company contacts | include important details or information about specific interviews and what I can learn from them |","lastModifiedDate":"2024-03-01"},{"lineNumber":303,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":304,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":305,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07"},{"lineNumber":306,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":307,"author":{"gitId":"-"},"content":"(For all use cases below, the **System** is the `AddressBook` and the **Actor** is the `user`, unless specified otherwise)","lastModifiedDate":"2020-05-23"},{"lineNumber":308,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":309,"author":{"gitId":"Jawad280"},"content":"**Use Case: Input Company Contact Information**","lastModifiedDate":"2024-03-01"},{"lineNumber":310,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":311,"author":{"gitId":"Jawad280"},"content":"**Actor:** Internship Applicant","lastModifiedDate":"2024-03-01"},{"lineNumber":312,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":313,"author":{"gitId":"Jawad280"},"content":"**Main Success Scenario (MSS):**","lastModifiedDate":"2024-03-01"},{"lineNumber":314,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":315,"author":{"gitId":"Jawad280"},"content":"1. Internship Applicant inputs contact information of internship company.","lastModifiedDate":"2024-03-01"},{"lineNumber":316,"author":{"gitId":"Jawad280"},"content":"2. System stores the contact information.","lastModifiedDate":"2024-03-01"},{"lineNumber":317,"author":{"gitId":"Jawad280"},"content":"3. Use case ends.","lastModifiedDate":"2024-03-01"},{"lineNumber":318,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":319,"author":{"gitId":"Jawad280"},"content":"**Extensions:**","lastModifiedDate":"2024-03-01"},{"lineNumber":320,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":321,"author":{"gitId":"Jawad280"},"content":"* 1a. System detects an error in the entered data.","lastModifiedDate":"2024-03-01"},{"lineNumber":322,"author":{"gitId":"Jawad280"},"content":" * 1a1. System requests for the correct data.","lastModifiedDate":"2024-03-01"},{"lineNumber":323,"author":{"gitId":"Jawad280"},"content":" * 1a2. Internship Applicant enters new data.","lastModifiedDate":"2024-03-01"},{"lineNumber":324,"author":{"gitId":"Jawad280"},"content":" * Steps 1a1-1a2 are repeated until the data entered are correct.","lastModifiedDate":"2024-03-01"},{"lineNumber":325,"author":{"gitId":"Jawad280"},"content":" * Use case resumes from step 2.","lastModifiedDate":"2024-03-01"},{"lineNumber":326,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":327,"author":{"gitId":"Jawad280"},"content":"* *a. At any time, Internship Applicant chooses to cancel the input.","lastModifiedDate":"2024-03-01"},{"lineNumber":328,"author":{"gitId":"Jawad280"},"content":" * Use case ends.","lastModifiedDate":"2024-03-01"},{"lineNumber":329,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":330,"author":{"gitId":"Jawad280"},"content":"---","lastModifiedDate":"2024-03-01"},{"lineNumber":331,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":332,"author":{"gitId":"Jawad280"},"content":"**Use Case: Delete Company Contact Information**","lastModifiedDate":"2024-03-01"},{"lineNumber":333,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":334,"author":{"gitId":"Jawad280"},"content":"**Actor:** Internship Applicant","lastModifiedDate":"2024-03-01"},{"lineNumber":335,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":336,"author":{"gitId":"Jawad280"},"content":"**Main Success Scenario (MSS):**","lastModifiedDate":"2024-03-01"},{"lineNumber":337,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":338,"author":{"gitId":"Jawad280"},"content":"1. Internship Applicant inputs index of contact to be deleted.","lastModifiedDate":"2024-03-01"},{"lineNumber":339,"author":{"gitId":"Jawad280"},"content":"2. System deletes the relevant contact information.","lastModifiedDate":"2024-03-01"},{"lineNumber":340,"author":{"gitId":"Jawad280"},"content":"3. Use case ends.","lastModifiedDate":"2024-03-01"},{"lineNumber":341,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":342,"author":{"gitId":"Jawad280"},"content":"**Extensions:**","lastModifiedDate":"2024-03-01"},{"lineNumber":343,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":344,"author":{"gitId":"Jawad280"},"content":"* 1a. System detects an error in index of contact","lastModifiedDate":"2024-03-01"},{"lineNumber":345,"author":{"gitId":"Jawad280"},"content":" * 1a1. System requests for proper input of index (1 to current number of contacts)","lastModifiedDate":"2024-03-01"},{"lineNumber":346,"author":{"gitId":"Jawad280"},"content":" * 1a2. Internship Applicant enters the correct index.","lastModifiedDate":"2024-03-01"},{"lineNumber":347,"author":{"gitId":"Jawad280"},"content":" * Steps 1a1-1a2 are repeated until the selection is correct.","lastModifiedDate":"2024-03-01"},{"lineNumber":348,"author":{"gitId":"Jawad280"},"content":" * Use case resumes from step 2.","lastModifiedDate":"2024-03-01"},{"lineNumber":349,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":350,"author":{"gitId":"Jawad280"},"content":"* *a. At any time, the Internship Applicant chooses to cancel to detect contact.","lastModifiedDate":"2024-03-01"},{"lineNumber":351,"author":{"gitId":"Jawad280"},"content":" * *a1. System cancels deletion of contact.","lastModifiedDate":"2024-03-01"},{"lineNumber":352,"author":{"gitId":"Jawad280"},"content":" * Use case ends.","lastModifiedDate":"2024-03-01"},{"lineNumber":353,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":354,"author":{"gitId":"Jawad280"},"content":"---","lastModifiedDate":"2024-03-01"},{"lineNumber":355,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":356,"author":{"gitId":"Jawad280"},"content":"**Use Case: Edit Contacts Info**","lastModifiedDate":"2024-03-01"},{"lineNumber":357,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":358,"author":{"gitId":"Jawad280"},"content":"**Actor:** Internship Applicant","lastModifiedDate":"2024-03-01"},{"lineNumber":359,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":360,"author":{"gitId":"Jawad280"},"content":"**Main Success Scenario (MSS):**","lastModifiedDate":"2024-03-01"},{"lineNumber":361,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":362,"author":{"gitId":"Jawad280"},"content":"1. Internship Applicant chooses contact to edit by its index and enters relevant fields to be modified","lastModifiedDate":"2024-03-01"},{"lineNumber":363,"author":{"gitId":"Jawad280"},"content":"2. System modifies that corresponding field of that contact","lastModifiedDate":"2024-03-01"},{"lineNumber":364,"author":{"gitId":"Jawad280"},"content":"3. Use case ends","lastModifiedDate":"2024-03-01"},{"lineNumber":365,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":366,"author":{"gitId":"Jawad280"},"content":"**Extensions:**","lastModifiedDate":"2024-03-01"},{"lineNumber":367,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":368,"author":{"gitId":"Jawad280"},"content":"* 1a. System detects an error in index of contact","lastModifiedDate":"2024-03-01"},{"lineNumber":369,"author":{"gitId":"Jawad280"},"content":" * 1a1. System requests for proper input of index (1 to current number of contacts)","lastModifiedDate":"2024-03-01"},{"lineNumber":370,"author":{"gitId":"Jawad280"},"content":" * 1a2. Internship Applicant enters the correct index.","lastModifiedDate":"2024-03-01"},{"lineNumber":371,"author":{"gitId":"Jawad280"},"content":" * Steps 1a1-1a2 are repeated until the selection is correct.","lastModifiedDate":"2024-03-01"},{"lineNumber":372,"author":{"gitId":"Jawad280"},"content":" * Use case resumes from step 2.","lastModifiedDate":"2024-03-01"},{"lineNumber":373,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":374,"author":{"gitId":"Jawad280"},"content":"* 1a. System detects an error in the fields to be edited (No fields at all or incorrect field prefixes)","lastModifiedDate":"2024-03-01"},{"lineNumber":375,"author":{"gitId":"Jawad280"},"content":" * 1a1. System requests for proper input of fields and correct prefix","lastModifiedDate":"2024-03-01"},{"lineNumber":376,"author":{"gitId":"Jawad280"},"content":" * 1a2. Internship Applicant enters the fields to be edited.","lastModifiedDate":"2024-03-01"},{"lineNumber":377,"author":{"gitId":"Jawad280"},"content":" * Steps 1a1-1a2 are repeated until the selection is correct.","lastModifiedDate":"2024-03-01"},{"lineNumber":378,"author":{"gitId":"Jawad280"},"content":" * Use case resumes from step 2.","lastModifiedDate":"2024-03-01"},{"lineNumber":379,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":380,"author":{"gitId":"Jawad280"},"content":"* *a. At any time, the Internship Applicant chooses to cancel to edit contact.","lastModifiedDate":"2024-03-01"},{"lineNumber":381,"author":{"gitId":"Jawad280"},"content":" * *a1. System cancels edit of contact.","lastModifiedDate":"2024-03-01"},{"lineNumber":382,"author":{"gitId":"Jawad280"},"content":" * Use case ends.","lastModifiedDate":"2024-03-01"},{"lineNumber":383,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":384,"author":{"gitId":"Jawad280"},"content":"---","lastModifiedDate":"2024-03-01"},{"lineNumber":385,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":386,"author":{"gitId":"Jawad280"},"content":"**Use Case: Filter Contacts by Tag**","lastModifiedDate":"2024-03-01"},{"lineNumber":387,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":388,"author":{"gitId":"Jawad280"},"content":"**Actor:** Internship Applicant","lastModifiedDate":"2024-03-01"},{"lineNumber":389,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":390,"author":{"gitId":"Jawad280"},"content":"**Main Success Scenario (MSS):**","lastModifiedDate":"2024-03-01"},{"lineNumber":391,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":392,"author":{"gitId":"Jawad280"},"content":"1. Internship Applicant chooses to filter contacts by tag.","lastModifiedDate":"2024-03-01"},{"lineNumber":393,"author":{"gitId":"Jawad280"},"content":"2. Internship Applicant inputs the tag.","lastModifiedDate":"2024-03-01"},{"lineNumber":394,"author":{"gitId":"Jawad280"},"content":"3. System filters the contacts associated with the selected tag.","lastModifiedDate":"2024-03-01"},{"lineNumber":395,"author":{"gitId":"Jawad280"},"content":"4. System displays the filtered contacts.","lastModifiedDate":"2024-03-01"},{"lineNumber":396,"author":{"gitId":"Jawad280"},"content":"5. Use case ends.","lastModifiedDate":"2024-03-01"},{"lineNumber":397,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":398,"author":{"gitId":"Jawad280"},"content":"**Extensions:**","lastModifiedDate":"2024-03-01"},{"lineNumber":399,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":400,"author":{"gitId":"Jawad280"},"content":"* 2a. System detects an error in tag to be filtered","lastModifiedDate":"2024-03-01"},{"lineNumber":401,"author":{"gitId":"Jawad280"},"content":" * 2a1. System requests for proper input of tag (One of existing tags)","lastModifiedDate":"2024-03-01"},{"lineNumber":402,"author":{"gitId":"Jawad280"},"content":" * 2a2. Internship Applicant enters the correct tag.","lastModifiedDate":"2024-03-01"},{"lineNumber":403,"author":{"gitId":"Jawad280"},"content":" * Steps 2a1-2a2 are repeated until the selection is correct.","lastModifiedDate":"2024-03-01"},{"lineNumber":404,"author":{"gitId":"Jawad280"},"content":" * Use case resumes from step 3.","lastModifiedDate":"2024-03-01"},{"lineNumber":405,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":406,"author":{"gitId":"Jawad280"},"content":"* *a. At any time, the Internship Applicant chooses to cancel the filtering.","lastModifiedDate":"2024-03-01"},{"lineNumber":407,"author":{"gitId":"Jawad280"},"content":" * *a1. System cancels the filtering.","lastModifiedDate":"2024-03-01"},{"lineNumber":408,"author":{"gitId":"Jawad280"},"content":" * Use case ends.","lastModifiedDate":"2024-03-01"},{"lineNumber":409,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":410,"author":{"gitId":"Jawad280"},"content":"---","lastModifiedDate":"2024-03-01"},{"lineNumber":411,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":412,"author":{"gitId":"Jawad280"},"content":"**Use Case: View information of a contact**","lastModifiedDate":"2024-03-01"},{"lineNumber":413,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":414,"author":{"gitId":"Jawad280"},"content":"**Actor:** Internship Applicant","lastModifiedDate":"2024-03-01"},{"lineNumber":415,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":416,"author":{"gitId":"Jawad280"},"content":"**Main Success Scenario (MSS):**","lastModifiedDate":"2024-03-01"},{"lineNumber":417,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":418,"author":{"gitId":"Jawad280"},"content":"1. Internship Applicant chooses contact to be viewed on view panel.","lastModifiedDate":"2024-03-01"},{"lineNumber":419,"author":{"gitId":"Jawad280"},"content":"2. System requests for the specific contact index.","lastModifiedDate":"2024-03-01"},{"lineNumber":420,"author":{"gitId":"Jawad280"},"content":"3. Internship Applicant enters the contact index.","lastModifiedDate":"2024-03-01"},{"lineNumber":421,"author":{"gitId":"Jawad280"},"content":"4. System views the relevant contact on the view panel.","lastModifiedDate":"2024-03-01"},{"lineNumber":422,"author":{"gitId":"Jawad280"},"content":"5. Use case ends.","lastModifiedDate":"2024-03-01"},{"lineNumber":423,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":424,"author":{"gitId":"Jawad280"},"content":"**Extensions:**","lastModifiedDate":"2024-03-01"},{"lineNumber":425,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":426,"author":{"gitId":"Jawad280"},"content":"* 3a. IH detects an error in index of contact","lastModifiedDate":"2024-03-01"},{"lineNumber":427,"author":{"gitId":"Jawad280"},"content":" * 3a1. System requests for proper input of index (1 to current number of contacts)","lastModifiedDate":"2024-03-01"},{"lineNumber":428,"author":{"gitId":"Jawad280"},"content":" * 3a2. Internship Applicant enters the correct index.","lastModifiedDate":"2024-03-01"},{"lineNumber":429,"author":{"gitId":"Jawad280"},"content":" * Steps 3a1-3a2 are repeated until the selection is correct.","lastModifiedDate":"2024-03-01"},{"lineNumber":430,"author":{"gitId":"Jawad280"},"content":" * Use case resumes from step 3.","lastModifiedDate":"2024-03-01"},{"lineNumber":431,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":432,"author":{"gitId":"Jawad280"},"content":"* *a. At any time, Internship Applicant chooses to cancel to view contact.","lastModifiedDate":"2024-03-01"},{"lineNumber":433,"author":{"gitId":"Jawad280"},"content":" * *a1. System cancels viewing of contact.","lastModifiedDate":"2024-03-01"},{"lineNumber":434,"author":{"gitId":"Jawad280"},"content":" * Use case ends.","lastModifiedDate":"2024-03-01"},{"lineNumber":435,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":436,"author":{"gitId":"Jawad280"},"content":"---","lastModifiedDate":"2024-03-01"},{"lineNumber":437,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":438,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23"},{"lineNumber":439,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":440,"author":{"gitId":"-"},"content":"1. Should work on any _mainstream OS_ as long as it has Java `11` or above installed.","lastModifiedDate":"2020-05-23"},{"lineNumber":441,"author":{"gitId":"-"},"content":"2. Should be able to hold up to 1000 persons without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":442,"author":{"gitId":"-"},"content":"3. A user with above average typing speed for regular English text (i.e. not code, not system admin commands) should be able to accomplish most of the tasks faster using commands than using the mouse.","lastModifiedDate":"2020-05-23"},{"lineNumber":443,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":444,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23"},{"lineNumber":445,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":446,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09"},{"lineNumber":447,"author":{"gitId":"-"},"content":"* **Private contact detail**: A contact detail that is not meant to be shared with others","lastModifiedDate":"2020-05-23"},{"lineNumber":448,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":449,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":450,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":451,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23"},{"lineNumber":452,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":453,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":454,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":455,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":456,"author":{"gitId":"-"},"content":"**Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2023-09-12"},{"lineNumber":457,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":458,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":459,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":460,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":461,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":462,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":463,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":464,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23"},{"lineNumber":465,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":466,"author":{"gitId":"-"},"content":" 1. Double-click the jar file Expected: Shows the GUI with a set of sample contacts. The window size may not be optimum.","lastModifiedDate":"2020-05-23"},{"lineNumber":467,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":468,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23"},{"lineNumber":469,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":470,"author":{"gitId":"-"},"content":" 1. Resize the window to an optimum size. Move the window to a different location. Close the window.","lastModifiedDate":"2020-05-23"},{"lineNumber":471,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":472,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":473,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23"},{"lineNumber":474,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":475,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":476,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":477,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23"},{"lineNumber":478,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":479,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23"},{"lineNumber":480,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":481,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23"},{"lineNumber":482,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":483,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":484,"author":{"gitId":"-"},"content":" Expected: First contact is deleted from the list. Details of the deleted contact shown in the status message. Timestamp in the status bar is updated.","lastModifiedDate":"2020-05-23"},{"lineNumber":485,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":486,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":487,"author":{"gitId":"-"},"content":" Expected: No person is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2020-05-23"},{"lineNumber":488,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":489,"author":{"gitId":"-"},"content":" 1. Other incorrect delete commands to try: `delete`, `delete x`, `...` (where x is larger than the list size)\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":490,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":491,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":492,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":493,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":494,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":495,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":496,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":497,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":498,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23"},{"lineNumber":499,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":500,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"eunrcn":1,"Jawad280":120,"ashleygoh1":7,"-":372}},{"path":"docs/UserGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: default.md","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: \"User Guide\"","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"pageNav: 3","lastModifiedDate":"2023-09-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"eunrcn"},"content":"# Internhub User Guide","lastModifiedDate":"2024-02-28"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"Jawad280"},"content":"Intern Hub is a **desktop app for managing contacts, optimized for use via a Line Interface** (CLI) while still having the benefits of a Graphical User Interface (GUI). If you can type fast, InternHub can get your contact management tasks done faster than traditional GUI apps.","lastModifiedDate":"2024-03-01"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"## Quick start","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"1. Ensure you have Java `11` or above installed in your Computer.","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"eunrcn"},"content":"1. Download the latest `internhub.jar` from [here](https://github.com/se-edu/addressbook-level3/releases).","lastModifiedDate":"2024-02-28"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"1. Copy the file to the folder you want to use as the _home folder_ for your AddressBook.","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"eunrcn"},"content":"1. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar internhub.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":25,"author":{"gitId":"-"},"content":" A GUI similar to the below should appear in a few seconds. Note how the app contains some sample data.\u003cbr\u003e","lastModifiedDate":"2023-01-01"},{"lineNumber":26,"author":{"gitId":"-"},"content":" ![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":"1. Type the command in the command box and press Enter to execute it. e.g. typing **`help`** and pressing Enter will open the help window.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":" Some example commands you can try:","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * `list` : Lists all contacts.","lastModifiedDate":"2023-01-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"ashleygoh1"},"content":" * `add c/Food Panda p/12345678 e/panda@food.com a/CBD t/F jd/Front End Intern d/15-04-2024 0900 id/6 months s/500","lastModifiedDate":"2024-02-27"},{"lineNumber":34,"author":{"gitId":"ashleygoh1"},"content":" ` : Adds a contact named `Food Panda` to the Address Book.","lastModifiedDate":"2024-02-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * `delete 3` : Deletes the 3rd contact shown in the current list.","lastModifiedDate":"2023-01-01"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * `clear` : Deletes all contacts.","lastModifiedDate":"2023-01-01"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * `exit` : Exits the app.","lastModifiedDate":"2023-01-01"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"1. Refer to the [Features](#features) below for details of each command.","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"**Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"* Words in `UPPER_CASE` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"ashleygoh1"},"content":" e.g. in `add c/COMPANY_NAME`, `COMPANY_NAME` is a parameter which can be used as `add c/Food Panda`.","lastModifiedDate":"2024-02-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"* Items in square brackets are optional.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"ashleygoh1"},"content":" e.g `c/COMPANY_NAME [a/ADDRESS]` can be used as `c/Food Panda a/CBD` or as `c/Food Panda`.","lastModifiedDate":"2024-02-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"* Parameters can be in any order.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"ashleygoh1"},"content":" e.g. if the command specifies `add c/COMPANY_NAME p/PHONE_NUMBER`, `p/PHONE_NUMBER add c/COMPANY_NAME` is also acceptable.","lastModifiedDate":"2024-02-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"* Extraneous parameters for commands that do not take in parameters (such as `help`, `list`, `exit` and `clear`) will be ignored.\u003cbr\u003e","lastModifiedDate":"2021-02-03"},{"lineNumber":62,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2021-02-03"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03"},{"lineNumber":64,"author":{"gitId":"-"},"content":"* If you are using a PDF version of this document, be careful when copying and pasting commands that span multiple lines as space characters surrounding line-breaks may be omitted when copied over to the application.","lastModifiedDate":"2023-06-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"### Viewing help : `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"Shows a message explaning how to access the help page.","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"Format: `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"Jawad280"},"content":"### Adding a contact: `add`","lastModifiedDate":"2024-03-01"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"Jawad280"},"content":"Adds a contact to the address book.","lastModifiedDate":"2024-03-01"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"ashleygoh1"},"content":"Format: `add c/COMPANY_NAME p/PHONE_NUMBER e/EMAIL a/[ADDRESS] t/TAG jd/JOB_DESCRIPTION d/[INTERVIEW_DATE] id/INTERN_DURATION s/salary`","lastModifiedDate":"2024-02-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":84,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"ashleygoh1"},"content":"* `add c/FoodPanda p/12345678 e/panda@food.com a/CBD t/F jd/Front End Intern d/15-04-2024 0900 id/6 months s/500`","lastModifiedDate":"2024-02-27"},{"lineNumber":88,"author":{"gitId":"ashleygoh1"},"content":"* `add c/Shoppa p/99912345 e/panda@food.com t/F jd/Software Developer Intern id/6 months s/500`","lastModifiedDate":"2024-02-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"Jawad280"},"content":"### Listing all contacts : `list`","lastModifiedDate":"2024-03-01"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"Jawad280"},"content":"Shows a list of all contacts in the address book sorted in ascending order of interview dates. If a company contact does not have any interview dates yet, it will be pushed to the end of the list.","lastModifiedDate":"2024-03-01"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":"Format: `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"Jawad280"},"content":"### Viewing a contact : `view`","lastModifiedDate":"2024-03-02"},{"lineNumber":97,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":98,"author":{"gitId":"Jawad280"},"content":"Views the details of the contact on the view panel in address book.","lastModifiedDate":"2024-03-02"},{"lineNumber":99,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":100,"author":{"gitId":"Jawad280"},"content":"Format: `View INDEX`","lastModifiedDate":"2024-03-02"},{"lineNumber":101,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":102,"author":{"gitId":"Jawad280"},"content":"* Views the contact at the specified `INDEX`. The index refers to the index number shown in the displayed contact list. The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2024-03-02"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":104,"author":{"gitId":"Jawad280"},"content":"Example:","lastModifiedDate":"2024-03-02"},{"lineNumber":105,"author":{"gitId":"Jawad280"},"content":"* `view 3` Shows the company name of the 3rd contact on the view panel.","lastModifiedDate":"2024-03-02"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":107,"author":{"gitId":"Jawad280"},"content":"### Editing a contact : `edit`","lastModifiedDate":"2024-03-01"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"author":{"gitId":"Jawad280"},"content":"Edits an existing contact detail in the address book.","lastModifiedDate":"2024-03-01"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":111,"author":{"gitId":"Jawad280"},"content":"Format: `Edit INDEX c/[COMPANY_NAME] p/[PHONE_NUMBER] e/[EMAIL] a/[ADDRESS] t/[TAG] jd/[JOB_DESCRIPTION] d/[INTERVIEW_DATE] id/[INTERN_DURATION] s/[salary]`","lastModifiedDate":"2024-03-01"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"Jawad280"},"content":"* Edits the contact at the specified `INDEX`. The index refers to the index number shown in the displayed contact list. The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2024-03-01"},{"lineNumber":114,"author":{"gitId":"-"},"content":"* At least one of the optional fields must be provided.","lastModifiedDate":"2020-05-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":"* Existing values will be updated to the input values.","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"Jawad280"},"content":"* For `[INTERVIEW_DATE]`, if you want to remove a date, just enter `d/` and it will remove that field.","lastModifiedDate":"2024-03-01"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":118,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"Jawad280"},"content":"* `edit 1 p/91234567 e/foodpanda@example.com` Edits the phone number and email address of the 1st contact to be `91234567` and `foodpanda@example.com` respectively.","lastModifiedDate":"2024-03-01"},{"lineNumber":120,"author":{"gitId":"Jawad280"},"content":"* `edit 2 c/shopee` Edits the company name of the 2nd contact to be `shopee`.","lastModifiedDate":"2024-03-01"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"Jawad280"},"content":"### Locating contacts by name: `find`","lastModifiedDate":"2024-03-01"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"Jawad280"},"content":"Finds contacts whose names contain any of the given keywords.","lastModifiedDate":"2024-03-01"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":"Format: `find KEYWORD [MORE_KEYWORDS]`","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":128,"author":{"gitId":"chenyixin0"},"content":"* The search is case-insensitive. e.g `shoppa` will match `Shoppa`","lastModifiedDate":"2024-02-29"},{"lineNumber":129,"author":{"gitId":"chenyixin0"},"content":"* The order of the keywords does not matter. e.g. `Food Panda` will match `Panda Food`","lastModifiedDate":"2024-02-29"},{"lineNumber":130,"author":{"gitId":"-"},"content":"* Only the name is searched.","lastModifiedDate":"2020-05-23"},{"lineNumber":131,"author":{"gitId":"chenyixin0"},"content":"* Only full words will be matched e.g. `Shopp` will not match `Shoppa`","lastModifiedDate":"2024-02-29"},{"lineNumber":132,"author":{"gitId":"Jawad280"},"content":"* Contacts matching at least one keyword will be returned (i.e. `OR` search).","lastModifiedDate":"2024-03-01"},{"lineNumber":133,"author":{"gitId":"Jawad280"},"content":" e.g. `Happy Burger` will return `Happy Meal`, `Burger Queen`","lastModifiedDate":"2024-03-01"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":136,"author":{"gitId":"Jawad280"},"content":"* `find Happy` returns `happy` and `Happy Burger`","lastModifiedDate":"2024-03-01"},{"lineNumber":137,"author":{"gitId":"-"},"content":"* `find alex david` returns `Alex Yeoh`, `David Li`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":" ![result for \u0027find alex david\u0027](images/findAlexDavidResult.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"Jawad280"},"content":"### Deleting a contact : `delete`","lastModifiedDate":"2024-03-01"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"Jawad280"},"content":"Deletes the specified contact from the address book.","lastModifiedDate":"2024-03-01"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"Format: `delete INDEX`","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":146,"author":{"gitId":"Jawad280"},"content":"* Deletes the contact at the specified `INDEX`.","lastModifiedDate":"2024-03-01"},{"lineNumber":147,"author":{"gitId":"Jawad280"},"content":"* The index refers to the index number shown in the displayed contact list.","lastModifiedDate":"2024-03-01"},{"lineNumber":148,"author":{"gitId":"-"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"Jawad280"},"content":"* `list` followed by `delete 2` deletes the 2nd contact in the address book.","lastModifiedDate":"2024-03-01"},{"lineNumber":152,"author":{"gitId":"Jawad280"},"content":"* `find Betsy` followed by `delete 1` deletes the 1st contact in the results of the `find` command.","lastModifiedDate":"2024-03-01"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":"### Clearing all entries : `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"Clears all entries from the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"Format: `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":"AddressBook data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":172,"author":{"gitId":"-"},"content":"AddressBook data are saved automatically as a JSON file `[JAR file location]/data/addressbook.json`. Advanced users are welcome to update data directly by editing that data file.","lastModifiedDate":"2023-09-08"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":174,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"warning\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":176,"author":{"gitId":"-"},"content":"**Caution:**","lastModifiedDate":"2023-09-12"},{"lineNumber":177,"author":{"gitId":"-"},"content":"If your changes to the data file makes its format invalid, AddressBook will discard all data and start with an empty data file at the next run. Hence, it is recommended to take a backup of the file before editing it.\u003cbr\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":178,"author":{"gitId":"-"},"content":"Furthermore, certain edits can cause the AddressBook to behave in unexpected ways (e.g., if a value entered is outside the acceptable range). Therefore, edit the data file only if you are confident that you can update it correctly.","lastModifiedDate":"2023-09-12"},{"lineNumber":179,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":180,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":182,"author":{"gitId":"-"},"content":"### Archiving data files `[coming in v2.0]`","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"_Details coming soon ..._","lastModifiedDate":"2021-02-04"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":190,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":191,"author":{"gitId":"chenyixin0"},"content":"**A**: Install the app in the other computer and overwrite the empty data file it creates with the file that contains the data of your previous InternHub home folder.","lastModifiedDate":"2024-02-29"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":"## Known issues","lastModifiedDate":"2023-09-08"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":197,"author":{"gitId":"-"},"content":"1. **When using multiple screens**, if you move the application to a secondary screen, and later switch to using only the primary screen, the GUI will open off-screen. The remedy is to delete the `preferences.json` file created by the application before running the application again.","lastModifiedDate":"2023-09-08"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":199,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":201,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"Jawad280"},"content":"| Action | Format, Examples |","lastModifiedDate":"2024-03-01"},{"lineNumber":204,"author":{"gitId":"Jawad280"},"content":"|------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|","lastModifiedDate":"2024-03-01"},{"lineNumber":205,"author":{"gitId":"Jawad280"},"content":"| **Add** | `add c/COMPANY_NAME p/PHONE_NUMBER e/EMAIL a/[ADDRESS] t/TAG jd/JOB_DESCRIPTION d/[INTERVIEW_DATE] id/INTERN_DURATION s/salary` \u003cbr\u003e e.g., `add c/FoodPanda p/12345678 e/panda@food.com a/CBD t/F jd/Front End Intern d/15-04-2024 0900 id/6 months s/500` |","lastModifiedDate":"2024-03-01"},{"lineNumber":206,"author":{"gitId":"Jawad280"},"content":"| **Clear** | `clear` |","lastModifiedDate":"2024-03-01"},{"lineNumber":207,"author":{"gitId":"Jawad280"},"content":"| **Delete** | `delete INDEX`\u003cbr\u003e e.g., `delete 3` |","lastModifiedDate":"2024-03-01"},{"lineNumber":208,"author":{"gitId":"Jawad280"},"content":"| **Edit** | `Edit INDEX c/[COMPANY_NAME] p/[PHONE_NUMBER] e/[EMAIL] a/[ADDRESS] t/[TAG] jd/[JOB_DESCRIPTION] d/[INTERVIEW_DATE] id/[INTERN_DURATION] s/[salary]`\u003cbr\u003e e.g.,`Edit 2 p/9998765` |","lastModifiedDate":"2024-03-01"},{"lineNumber":209,"author":{"gitId":"Jawad280"},"content":"| **Find** | `find KEYWORD [MORE_KEYWORDS]`\u003cbr\u003e e.g., `find foodpanda` |","lastModifiedDate":"2024-03-01"},{"lineNumber":210,"author":{"gitId":"Jawad280"},"content":"| **List** | `list` |","lastModifiedDate":"2024-03-01"},{"lineNumber":211,"author":{"gitId":"Jawad280"},"content":"| **View** | `view INDEX`\u003cbr\u003e e.g., `view 3` |","lastModifiedDate":"2024-03-02"},{"lineNumber":212,"author":{"gitId":"Jawad280"},"content":"| **Help** | `help` |","lastModifiedDate":"2024-03-01"}],"authorContributionMap":{"eunrcn":3,"chenyixin0":4,"Jawad280":43,"ashleygoh1":8,"-":154}},{"path":"docs/_markbind/layouts/default.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003chead-bottom\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":" \u003clink rel\u003d\"stylesheet\" href\u003d\"{{baseUrl}}/stylesheets/main.css\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c/head-bottom\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003cheader sticky\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":" \u003cnavbar type\u003d\"dark\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":7,"author":{"gitId":"ashleygoh1"},"content":" \u003ca slot\u003d\"brand\" href\u003d\"{{baseUrl}}/index.html\" title\u003d\"Home\" class\u003d\"navbar-brand\"\u003eInternHub\u003c/a\u003e","lastModifiedDate":"2024-02-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/index.html\" class\u003d\"nav-link\"\u003eHome\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/UserGuide.html\" class\u003d\"nav-link\"\u003eUser Guide\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/DeveloperGuide.html\" class\u003d\"nav-link\"\u003eDeveloper Guide\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/AboutUs.html\" class\u003d\"nav-link\"\u003eAbout Us\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"https://github.com/se-edu/addressbook-level3\" target\u003d\"_blank\" class\u003d\"nav-link\"\u003e\u003cmd\u003e:fab-github:\u003c/md\u003e\u003c/a\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003cli slot\u003d\"right\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cform class\u003d\"navbar-form\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003csearchbar :data\u003d\"searchData\" placeholder\u003d\"Search\" :on-hit\u003d\"searchCallback\" menu-align-right\u003e\u003c/searchbar\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003c/form\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003c/navbar\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"\u003c/header\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"\u003cdiv id\u003d\"flex-body\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"site-nav\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"site-nav-top\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"fw-bold mb-2\" style\u003d\"font-size: 1.25rem;\"\u003eSite Map\u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003csite-nav\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"* [Home]({{ baseUrl }}/index.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":"* [User Guide]({{ baseUrl }}/UserGuide.html) :expanded:","lastModifiedDate":"2023-09-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * [Quick Start]({{ baseUrl }}/UserGuide.html#quick-start)","lastModifiedDate":"2023-09-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * [Features]({{ baseUrl }}/UserGuide.html#features)","lastModifiedDate":"2023-09-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * [FAQ]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * [Command Summary]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":"* [Developer Guide]({{ baseUrl }}/DeveloperGuide.html) :expanded:","lastModifiedDate":"2023-09-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * [Acknowledgements]({{ baseUrl }}/DeveloperGuide.html#acknowledgements)","lastModifiedDate":"2023-09-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * [Setting Up]({{ baseUrl }}/DeveloperGuide.html#setting-up-getting-started)","lastModifiedDate":"2023-09-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * [Design]({{ baseUrl }}/DeveloperGuide.html#design)","lastModifiedDate":"2023-09-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * [Implementation]({{ baseUrl }}/DeveloperGuide.html#implementation)","lastModifiedDate":"2023-09-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * [Documentation, logging, testing, configuration, dev-ops]({{ baseUrl }}/DeveloperGuide.html#documentation-logging-testing-configuration-dev-ops)","lastModifiedDate":"2023-09-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * [Appendix: Requirements]({{ baseUrl }}/DeveloperGuide.html#appendix-requirements)","lastModifiedDate":"2023-09-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * [Appendix: Instructions for manual testing]({{ baseUrl }}/DeveloperGuide.html#appendix-instructions-for-manual-testing)","lastModifiedDate":"2023-09-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":"* Tutorials","lastModifiedDate":"2023-09-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * [Tracing code]({{ baseUrl }}/tutorials/TracingCode.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * [Adding a command]({{ baseUrl }}/tutorials/AddRemark.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * [Removing Fields]({{ baseUrl }}/tutorials/RemovingFields.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [About Us]({{ baseUrl }}/AboutUs.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u003c/site-nav\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003cdiv id\u003d\"content-wrapper\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":" {{ content }}","lastModifiedDate":"2023-09-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"page-nav\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cpage-nav /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003cscroll-top-button\u003e\u003c/scroll-top-button\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":62,"author":{"gitId":"-"},"content":"\u003cfooter\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":63,"author":{"gitId":"-"},"content":" \u003c!-- Support MarkBind by including a link to us on your landing page! --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":64,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"text-center\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":" \u003csmall\u003e[\u003cmd\u003e**Powered by**\u003c/md\u003e \u003cimg src\u003d\"https://markbind.org/favicon.ico\" width\u003d\"30\"\u003e {{MarkBind}}, generated on {{timestamp}}]\u003c/small\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":66,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":"\u003c/footer\u003e","lastModifiedDate":"2023-09-12"}],"authorContributionMap":{"ashleygoh1":1,"-":66}},{"path":"docs/diagrams/BetterModelClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam arrowColor MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam classBackgroundColor MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"AddressBook *-right-\u003e \"1\" UniquePersonList","lastModifiedDate":"2019-07-30"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"UniquePersonList -right-\u003e Person","lastModifiedDate":"2021-07-31"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":11,"author":{"gitId":"-"},"content":"Person *--\u003e Name","lastModifiedDate":"2019-07-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"Person *--\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"Person *--\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"Person *--\u003e Address","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"eunrcn"},"content":"Person *--\u003e Tag","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"eunrcn"},"content":"Person *--\u003e InternDuration","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"eunrcn"},"content":"Person *--\u003e InterviewDate","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"eunrcn"},"content":"Person *--\u003e JobDescription","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"eunrcn"},"content":"Person *--\u003e Salary","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"eunrcn":5,"-":15}},{"path":"docs/diagrams/ModelClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam arrowColor MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam classBackgroundColor MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Package Model as ModelPackage \u003c\u003cRectangle\u003e\u003e{","lastModifiedDate":"2023-07-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nReadOnlyAddressBook\" as ReadOnlyAddressBook","lastModifiedDate":"2022-01-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nReadOnlyUserPrefs\" as ReadOnlyUserPrefs","lastModifiedDate":"2022-01-03"},{"lineNumber":10,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nModel\" as Model","lastModifiedDate":"2022-01-03"},{"lineNumber":11,"author":{"gitId":"-"},"content":"Class AddressBook","lastModifiedDate":"2019-07-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"Class ModelManager","lastModifiedDate":"2019-07-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"Class UserPrefs","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":15,"author":{"gitId":"-"},"content":"Class UniquePersonList","lastModifiedDate":"2021-07-31"},{"lineNumber":16,"author":{"gitId":"-"},"content":"Class Person","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"Class Address","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"Class Email","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"eunrcn"},"content":"Class CompanyName","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Class Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"Class Tag","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"eunrcn"},"content":"Class InternDuration","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"eunrcn"},"content":"Class InterviewDate","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"eunrcn"},"content":"Class JobDescription","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"eunrcn"},"content":"Class Salary","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":27,"author":{"gitId":"-"},"content":"Class I #FFFFFF","lastModifiedDate":"2023-07-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":"AddressBook .up.|\u003e ReadOnlyAddressBook","lastModifiedDate":"2019-07-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":35,"author":{"gitId":"-"},"content":"ModelManager .up.|\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":36,"author":{"gitId":"-"},"content":"Model .right.\u003e ReadOnlyUserPrefs","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"Model .left.\u003e ReadOnlyAddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":38,"author":{"gitId":"-"},"content":"ModelManager -left-\u003e \"1\" AddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":39,"author":{"gitId":"-"},"content":"ModelManager -right-\u003e \"1\" UserPrefs","lastModifiedDate":"2021-07-31"},{"lineNumber":40,"author":{"gitId":"-"},"content":"UserPrefs .up.|\u003e ReadOnlyUserPrefs","lastModifiedDate":"2019-07-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":42,"author":{"gitId":"-"},"content":"AddressBook *--\u003e \"1\" UniquePersonList","lastModifiedDate":"2019-07-30"},{"lineNumber":43,"author":{"gitId":"-"},"content":"UniquePersonList --\u003e \"~* all\" Person","lastModifiedDate":"2021-07-31"},{"lineNumber":44,"author":{"gitId":"eunrcn"},"content":"Person *--\u003e CompanyName","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"-"},"content":"Person *--\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":46,"author":{"gitId":"-"},"content":"Person *--\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":47,"author":{"gitId":"-"},"content":"Person *--\u003e Address","lastModifiedDate":"2019-07-03"},{"lineNumber":48,"author":{"gitId":"eunrcn"},"content":"Person *--\u003e Tag","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"eunrcn"},"content":"Person *--\u003e InternDuration","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"eunrcn"},"content":"Person *--\u003e InterviewDate","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"eunrcn"},"content":"Person *--\u003e JobDescription","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"eunrcn"},"content":"Person *--\u003e Salary","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":54,"author":{"gitId":"-"},"content":"Person -[hidden]up--\u003e I","lastModifiedDate":"2023-07-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":"UniquePersonList -[hidden]right-\u003e I","lastModifiedDate":"2023-07-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-27"},{"lineNumber":57,"author":{"gitId":"eunrcn"},"content":"CompanyName -[hidden]right-\u003e Phone","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"-"},"content":"Phone -[hidden]right-\u003e Address","lastModifiedDate":"2019-07-03"},{"lineNumber":59,"author":{"gitId":"-"},"content":"Address -[hidden]right-\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":61,"author":{"gitId":"-"},"content":"ModelManager --\u003e \"~* filtered\" Person","lastModifiedDate":"2021-07-31"},{"lineNumber":62,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"eunrcn":12,"-":50}},{"path":"docs/diagrams/UiClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam arrowColor UI_COLOR_T4","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam classBackgroundColor UI_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"package UI \u003c\u003cRectangle\u003e\u003e{","lastModifiedDate":"2019-07-03"},{"lineNumber":8,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nUi\" as Ui","lastModifiedDate":"2022-01-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"Class \"{abstract}\\nUiPart\" as UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"-"},"content":"Class UiManager","lastModifiedDate":"2019-07-03"},{"lineNumber":11,"author":{"gitId":"-"},"content":"Class MainWindow","lastModifiedDate":"2019-07-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"Class HelpWindow","lastModifiedDate":"2019-07-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"Class ResultDisplay","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"Class PersonListPanel","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"Class PersonCard","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"Class StatusBarFooter","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"Class CommandBox","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"Jawad280"},"content":"Class ViewPanel","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"package Model \u003c\u003cRectangle\u003e\u003e {","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"Class HiddenModel #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":25,"author":{"gitId":"-"},"content":"package Logic \u003c\u003cRectangle\u003e\u003e {","lastModifiedDate":"2019-07-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":"Class HiddenLogic #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Ui","lastModifiedDate":"2019-07-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"UiManager .left.|\u003e Ui","lastModifiedDate":"2019-07-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":"UiManager -down-\u003e \"1\" MainWindow","lastModifiedDate":"2021-07-31"},{"lineNumber":34,"author":{"gitId":"-"},"content":"MainWindow *-down-\u003e \"1\" CommandBox","lastModifiedDate":"2021-07-31"},{"lineNumber":35,"author":{"gitId":"-"},"content":"MainWindow *-down-\u003e \"1\" ResultDisplay","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"MainWindow *-down-\u003e \"1\" PersonListPanel","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"MainWindow *-down-\u003e \"1\" StatusBarFooter","lastModifiedDate":"2021-07-31"},{"lineNumber":38,"author":{"gitId":"-"},"content":"MainWindow --\u003e \"0..1\" HelpWindow","lastModifiedDate":"2021-07-31"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":40,"author":{"gitId":"-"},"content":"PersonListPanel -down-\u003e \"*\" PersonCard","lastModifiedDate":"2021-07-31"},{"lineNumber":41,"author":{"gitId":"Jawad280"},"content":"PersonListPanel -down-\u003e \"1\" ViewPanel","lastModifiedDate":"2024-03-22"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":43,"author":{"gitId":"-"},"content":"MainWindow -left-|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":45,"author":{"gitId":"-"},"content":"ResultDisplay --|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":46,"author":{"gitId":"-"},"content":"CommandBox --|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":47,"author":{"gitId":"-"},"content":"PersonListPanel --|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":48,"author":{"gitId":"-"},"content":"PersonCard --|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":49,"author":{"gitId":"Jawad280"},"content":"ViewPanel --|\u003e UiPart","lastModifiedDate":"2024-03-22"},{"lineNumber":50,"author":{"gitId":"-"},"content":"StatusBarFooter --|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":51,"author":{"gitId":"-"},"content":"HelpWindow --|\u003e UiPart","lastModifiedDate":"2021-07-31"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":53,"author":{"gitId":"-"},"content":"PersonCard ..\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":54,"author":{"gitId":"Jawad280"},"content":"ViewPanel ..\u003e Model","lastModifiedDate":"2024-03-22"},{"lineNumber":55,"author":{"gitId":"-"},"content":"UiManager -right-\u003e Logic","lastModifiedDate":"2019-07-03"},{"lineNumber":56,"author":{"gitId":"-"},"content":"MainWindow -left-\u003e Logic","lastModifiedDate":"2019-07-03"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":58,"author":{"gitId":"-"},"content":"PersonListPanel -[hidden]left- HelpWindow","lastModifiedDate":"2019-07-03"},{"lineNumber":59,"author":{"gitId":"-"},"content":"HelpWindow -[hidden]left- CommandBox","lastModifiedDate":"2019-07-03"},{"lineNumber":60,"author":{"gitId":"-"},"content":"CommandBox -[hidden]left- ResultDisplay","lastModifiedDate":"2019-07-03"},{"lineNumber":61,"author":{"gitId":"-"},"content":"ResultDisplay -[hidden]left- StatusBarFooter","lastModifiedDate":"2019-07-30"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":63,"author":{"gitId":"-"},"content":"MainWindow -[hidden]-|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":64,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"Jawad280":4,"-":60}},{"path":"docs/team/ashley.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"ashleygoh1"},"content":"---","lastModifiedDate":"2024-02-27"},{"lineNumber":2,"author":{"gitId":"ashleygoh1"},"content":" layout: default.md","lastModifiedDate":"2024-02-27"},{"lineNumber":3,"author":{"gitId":"ashleygoh1"},"content":" title: \"John Doe\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-02-27"},{"lineNumber":4,"author":{"gitId":"ashleygoh1"},"content":"---","lastModifiedDate":"2024-02-27"},{"lineNumber":5,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-27"},{"lineNumber":6,"author":{"gitId":"ashleygoh1"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-02-27"},{"lineNumber":7,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-27"},{"lineNumber":8,"author":{"gitId":"ashleygoh1"},"content":"AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2024-02-27"},{"lineNumber":9,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-27"},{"lineNumber":10,"author":{"gitId":"ashleygoh1"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-02-27"},{"lineNumber":11,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-27"},{"lineNumber":12,"author":{"gitId":"ashleygoh1"},"content":"* **New Feature**: Allow user to add new contact to the address book.","lastModifiedDate":"2024-02-27"},{"lineNumber":13,"author":{"gitId":"ashleygoh1"},"content":" * What it does: Allow user to add the internship information that they applied for","lastModifiedDate":"2024-02-27"},{"lineNumber":14,"author":{"gitId":"ashleygoh1"},"content":" * Justification: This feature allow users to conveniently store all relevant internship details in one centralized location alongside their other contacts. This helps them stay organized and easily access internship information when needed.","lastModifiedDate":"2024-02-27"},{"lineNumber":15,"author":{"gitId":"ashleygoh1"},"content":" * Credits: The feature builds upon the robust foundation of AB3, optimizing code to accommodate new parameters.","lastModifiedDate":"2024-02-27"},{"lineNumber":16,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-27"},{"lineNumber":17,"author":{"gitId":"ashleygoh1"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-02-27"},{"lineNumber":18,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-27"},{"lineNumber":19,"author":{"gitId":"ashleygoh1"},"content":"* **Project management**:","lastModifiedDate":"2024-02-27"},{"lineNumber":20,"author":{"gitId":"ashleygoh1"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-02-27"},{"lineNumber":21,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-27"},{"lineNumber":22,"author":{"gitId":"ashleygoh1"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-02-27"},{"lineNumber":23,"author":{"gitId":"ashleygoh1"},"content":" * Update existing tests for existing features with coverage of 78.57% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-02-27"},{"lineNumber":24,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-27"},{"lineNumber":25,"author":{"gitId":"ashleygoh1"},"content":"* **Documentation**:","lastModifiedDate":"2024-02-27"},{"lineNumber":26,"author":{"gitId":"ashleygoh1"},"content":" * User Guide:","lastModifiedDate":"2024-02-27"},{"lineNumber":27,"author":{"gitId":"ashleygoh1"},"content":" * Added documentation for the features `add` and `edit` [\\#72]()","lastModifiedDate":"2024-02-27"},{"lineNumber":28,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-27"},{"lineNumber":29,"author":{"gitId":"ashleygoh1"},"content":"* **Community**:","lastModifiedDate":"2024-02-27"},{"lineNumber":30,"author":{"gitId":"ashleygoh1"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-02-27"},{"lineNumber":31,"author":{"gitId":"ashleygoh1"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-02-27"},{"lineNumber":32,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-27"},{"lineNumber":33,"author":{"gitId":"ashleygoh1"},"content":"* **Tools**:","lastModifiedDate":"2024-02-27"},{"lineNumber":34,"author":{"gitId":"ashleygoh1"},"content":" * Set up codecov to the team repo","lastModifiedDate":"2024-02-27"},{"lineNumber":35,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-27"},{"lineNumber":36,"author":{"gitId":"ashleygoh1"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-02-27"}],"authorContributionMap":{"ashleygoh1":36}},{"path":"src/main/java/seedu/address/logic/Messages.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2023-07-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-07-14"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-07-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2023-07-14"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Container for user visible messages.","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class Messages {","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2016-09-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_PERSON_DISPLAYED_INDEX \u003d \"The person index provided is invalid\";","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String MESSAGE_PERSONS_LISTED_OVERVIEW \u003d \"%1$d persons listed!\";","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2023-07-14"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-07-14"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2023-07-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2023-07-14"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":28,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":29,"author":{"gitId":"-"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-07-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":31,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Formats the {@code person} for display to the user.","lastModifiedDate":"2019-02-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static String format(Person person) {","lastModifiedDate":"2019-02-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23"},{"lineNumber":39,"author":{"gitId":"ashleygoh1"},"content":" builder.append(person.getCompanyName())","lastModifiedDate":"2024-02-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" .append(\"; Phone: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" .append(person.getPhone())","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" .append(\"; Email: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" .append(person.getEmail())","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" .append(\"; Address: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" .append(person.getAddress())","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"ashleygoh1"},"content":" .append(\"; Tags: \")","lastModifiedDate":"2024-02-25"},{"lineNumber":47,"author":{"gitId":"ashleygoh1"},"content":" .append(person.getTag())","lastModifiedDate":"2024-02-25"},{"lineNumber":48,"author":{"gitId":"ashleygoh1"},"content":" .append(\"; Job Description: \")","lastModifiedDate":"2024-02-25"},{"lineNumber":49,"author":{"gitId":"ashleygoh1"},"content":" .append(person.getJobDescription())","lastModifiedDate":"2024-02-25"},{"lineNumber":50,"author":{"gitId":"ashleygoh1"},"content":" .append(\"; Interview Date: \")","lastModifiedDate":"2024-02-25"},{"lineNumber":51,"author":{"gitId":"ashleygoh1"},"content":" .append(person.getInterviewDate())","lastModifiedDate":"2024-02-25"},{"lineNumber":52,"author":{"gitId":"ashleygoh1"},"content":" .append(\"; Internship Duration: \")","lastModifiedDate":"2024-02-25"},{"lineNumber":53,"author":{"gitId":"ashleygoh1"},"content":" .append(person.getInternDuration())","lastModifiedDate":"2024-02-25"},{"lineNumber":54,"author":{"gitId":"ashleygoh1"},"content":" .append(\"; Salary: \")","lastModifiedDate":"2024-02-25"},{"lineNumber":55,"author":{"gitId":"ashleygoh1"},"content":" .append(person.getSalary());","lastModifiedDate":"2024-02-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"ashleygoh1":11,"-":48}},{"path":"src/main/java/seedu/address/logic/commands/AddCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09"},{"lineNumber":6,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_INTERN_DURATION;","lastModifiedDate":"2024-02-26"},{"lineNumber":7,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_INTERVIEW_DATE;","lastModifiedDate":"2024-02-26"},{"lineNumber":8,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_JOB_DESCRIPTION;","lastModifiedDate":"2024-02-26"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09"},{"lineNumber":11,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SALARY;","lastModifiedDate":"2024-02-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-01-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"add\";","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a person to the address book. \"","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2017-06-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2017-06-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2017-05-09"},{"lineNumber":31,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2017-05-09"},{"lineNumber":32,"author":{"gitId":"ashleygoh1"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS] \"","lastModifiedDate":"2024-02-26"},{"lineNumber":33,"author":{"gitId":"ashleygoh1"},"content":" + PREFIX_TAG + \"TAG \"","lastModifiedDate":"2024-02-26"},{"lineNumber":34,"author":{"gitId":"ashleygoh1"},"content":" + PREFIX_JOB_DESCRIPTION + \"JOB DESCRIPTION \"","lastModifiedDate":"2024-02-26"},{"lineNumber":35,"author":{"gitId":"ashleygoh1"},"content":" + \"[\" + PREFIX_INTERVIEW_DATE + \"INTERVIEW DATE] \"","lastModifiedDate":"2024-02-26"},{"lineNumber":36,"author":{"gitId":"ashleygoh1"},"content":" + PREFIX_INTERN_DURATION + \"INTERN DURATION \"","lastModifiedDate":"2024-02-26"},{"lineNumber":37,"author":{"gitId":"ashleygoh1"},"content":" + PREFIX_SALARY + \"SALARY\\n\"","lastModifiedDate":"2024-02-26"},{"lineNumber":38,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":39,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06"},{"lineNumber":40,"author":{"gitId":"ashleygoh1"},"content":" + PREFIX_NAME + \"Happy Burger \"","lastModifiedDate":"2024-02-26"},{"lineNumber":41,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":42,"author":{"gitId":"ashleygoh1"},"content":" + PREFIX_EMAIL + \"HappyBurger@example.com \"","lastModifiedDate":"2024-02-26"},{"lineNumber":43,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"311, Clementi Ave 2, #02-25 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":44,"author":{"gitId":"ashleygoh1"},"content":" + PREFIX_TAG + \"I \"","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"ashleygoh1"},"content":" + PREFIX_JOB_DESCRIPTION + \"Software Developer intern \"","lastModifiedDate":"2024-02-26"},{"lineNumber":46,"author":{"gitId":"eunrcn"},"content":" + PREFIX_INTERVIEW_DATE + \"03-03-2024 1200 \"","lastModifiedDate":"2024-02-28"},{"lineNumber":47,"author":{"gitId":"ashleygoh1"},"content":" + PREFIX_INTERN_DURATION + \"3 months \"","lastModifiedDate":"2024-02-26"},{"lineNumber":48,"author":{"gitId":"ashleygoh1"},"content":" + PREFIX_SALARY + \"1000\";","lastModifiedDate":"2024-02-26"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New person added: %1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book\";","lastModifiedDate":"2016-08-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" private final Person toAdd;","lastModifiedDate":"2016-08-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2018-01-10"},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public AddCommand(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":59,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":60,"author":{"gitId":"-"},"content":" toAdd \u003d person;","lastModifiedDate":"2018-01-10"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":65,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":67,"author":{"gitId":"-"},"content":" if (model.hasPerson(toAdd)) {","lastModifiedDate":"2018-08-07"},{"lineNumber":68,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":71,"author":{"gitId":"-"},"content":" model.addPerson(toAdd);","lastModifiedDate":"2016-09-25"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2019-02-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-22"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22"},{"lineNumber":77,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" if (!(other instanceof AddCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" AddCommand otherAddCommand \u003d (AddCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2023-07-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"eunrcn":1,"ashleygoh1":17,"-":78}},{"path":"src/main/java/seedu/address/logic/commands/CommandResult.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2018-12-09"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":7,"author":{"gitId":"chenyixin0"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2024-02-29"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"Jawad280"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-02-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Represents the result of a command execution.","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class CommandResult {","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":16,"author":{"gitId":"-"},"content":" private final String feedbackToUser;","lastModifiedDate":"2018-12-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" /** Help information should be shown to the user. */","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private final boolean showHelp;","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":" /** The application should exit. */","lastModifiedDate":"2018-12-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final boolean exit;","lastModifiedDate":"2018-12-09"},{"lineNumber":23,"author":{"gitId":"Jawad280"},"content":" private final Person viewPerson;","lastModifiedDate":"2024-02-26"},{"lineNumber":24,"author":{"gitId":"chenyixin0"},"content":" private final FilteredList\u003cPerson\u003e viewList;","lastModifiedDate":"2024-02-29"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Constructs a {@code CommandResult} with the specified fields.","lastModifiedDate":"2018-12-09"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public CommandResult(String feedbackToUser, boolean showHelp, boolean exit) {","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"-"},"content":" this.feedbackToUser \u003d requireNonNull(feedbackToUser);","lastModifiedDate":"2017-05-15"},{"lineNumber":31,"author":{"gitId":"-"},"content":" this.showHelp \u003d showHelp;","lastModifiedDate":"2018-12-09"},{"lineNumber":32,"author":{"gitId":"-"},"content":" this.exit \u003d exit;","lastModifiedDate":"2018-12-09"},{"lineNumber":33,"author":{"gitId":"Jawad280"},"content":" this.viewPerson \u003d null;","lastModifiedDate":"2024-02-26"},{"lineNumber":34,"author":{"gitId":"chenyixin0"},"content":" this.viewList \u003d null;","lastModifiedDate":"2024-02-29"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Constructs a {@code CommandResult} with the specified {@code feedbackToUser},","lastModifiedDate":"2018-12-09"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * and other fields set to their default value.","lastModifiedDate":"2018-12-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public CommandResult(String feedbackToUser) {","lastModifiedDate":"2018-12-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":" this(feedbackToUser, false, false);","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":45,"author":{"gitId":"Jawad280"},"content":" /**","lastModifiedDate":"2024-02-26"},{"lineNumber":46,"author":{"gitId":"Jawad280"},"content":" * Constructs a {@code CommandResult} with the specified {@code feedbackToUser},","lastModifiedDate":"2024-02-26"},{"lineNumber":47,"author":{"gitId":"Jawad280"},"content":" * and other fields set to their default value.","lastModifiedDate":"2024-02-26"},{"lineNumber":48,"author":{"gitId":"Jawad280"},"content":" */","lastModifiedDate":"2024-02-26"},{"lineNumber":49,"author":{"gitId":"Jawad280"},"content":" public CommandResult(String feedbackToUser, Person viewPerson) {","lastModifiedDate":"2024-02-26"},{"lineNumber":50,"author":{"gitId":"Jawad280"},"content":" this.feedbackToUser \u003d requireNonNull(feedbackToUser);","lastModifiedDate":"2024-02-26"},{"lineNumber":51,"author":{"gitId":"Jawad280"},"content":" this.showHelp \u003d false;","lastModifiedDate":"2024-02-26"},{"lineNumber":52,"author":{"gitId":"Jawad280"},"content":" this.exit \u003d false;","lastModifiedDate":"2024-02-26"},{"lineNumber":53,"author":{"gitId":"Jawad280"},"content":" this.viewPerson \u003d viewPerson;","lastModifiedDate":"2024-02-26"},{"lineNumber":54,"author":{"gitId":"chenyixin0"},"content":" this.viewList \u003d null;","lastModifiedDate":"2024-02-29"},{"lineNumber":55,"author":{"gitId":"chenyixin0"},"content":" }","lastModifiedDate":"2024-02-29"},{"lineNumber":56,"author":{"gitId":"chenyixin0"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":57,"author":{"gitId":"Jawad280"},"content":" /**","lastModifiedDate":"2024-03-01"},{"lineNumber":58,"author":{"gitId":"Jawad280"},"content":" * Constructs a {@code CommandResult} with the specified {@code feedbackToUser},","lastModifiedDate":"2024-03-01"},{"lineNumber":59,"author":{"gitId":"Jawad280"},"content":" * and other fields set to their default value.","lastModifiedDate":"2024-03-01"},{"lineNumber":60,"author":{"gitId":"Jawad280"},"content":" */","lastModifiedDate":"2024-03-01"},{"lineNumber":61,"author":{"gitId":"chenyixin0"},"content":" public CommandResult(String feedbackToUser, FilteredList\u003cPerson\u003e viewList) {","lastModifiedDate":"2024-02-29"},{"lineNumber":62,"author":{"gitId":"chenyixin0"},"content":" this.feedbackToUser \u003d requireNonNull(feedbackToUser);","lastModifiedDate":"2024-02-29"},{"lineNumber":63,"author":{"gitId":"chenyixin0"},"content":" this.showHelp \u003d false;","lastModifiedDate":"2024-02-29"},{"lineNumber":64,"author":{"gitId":"chenyixin0"},"content":" this.exit \u003d false;","lastModifiedDate":"2024-02-29"},{"lineNumber":65,"author":{"gitId":"chenyixin0"},"content":" this.viewPerson \u003d null;","lastModifiedDate":"2024-02-29"},{"lineNumber":66,"author":{"gitId":"chenyixin0"},"content":" this.viewList \u003d viewList;","lastModifiedDate":"2024-02-29"},{"lineNumber":67,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public String getFeedbackToUser() {","lastModifiedDate":"2018-12-09"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return feedbackToUser;","lastModifiedDate":"2018-12-09"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":72,"author":{"gitId":"Jawad280"},"content":" public Person getViewPerson() {","lastModifiedDate":"2024-02-26"},{"lineNumber":73,"author":{"gitId":"Jawad280"},"content":" return this.viewPerson;","lastModifiedDate":"2024-02-26"},{"lineNumber":74,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":75,"author":{"gitId":"chenyixin0"},"content":" public FilteredList\u003cPerson\u003e getViewList() {","lastModifiedDate":"2024-02-29"},{"lineNumber":76,"author":{"gitId":"chenyixin0"},"content":" return this.viewList;","lastModifiedDate":"2024-02-29"},{"lineNumber":77,"author":{"gitId":"chenyixin0"},"content":" }","lastModifiedDate":"2024-02-29"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public boolean isShowHelp() {","lastModifiedDate":"2018-12-09"},{"lineNumber":80,"author":{"gitId":"-"},"content":" return showHelp;","lastModifiedDate":"2018-12-09"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public boolean isExit() {","lastModifiedDate":"2018-12-09"},{"lineNumber":84,"author":{"gitId":"-"},"content":" return exit;","lastModifiedDate":"2018-12-09"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":87,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":89,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2018-12-09"},{"lineNumber":90,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-12-09"},{"lineNumber":91,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-12-09"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":94,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2018-12-09"},{"lineNumber":95,"author":{"gitId":"-"},"content":" if (!(other instanceof CommandResult)) {","lastModifiedDate":"2018-12-09"},{"lineNumber":96,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-12-09"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":99,"author":{"gitId":"-"},"content":" CommandResult otherCommandResult \u003d (CommandResult) other;","lastModifiedDate":"2018-12-09"},{"lineNumber":100,"author":{"gitId":"-"},"content":" return feedbackToUser.equals(otherCommandResult.feedbackToUser)","lastModifiedDate":"2018-12-09"},{"lineNumber":101,"author":{"gitId":"-"},"content":" \u0026\u0026 showHelp \u003d\u003d otherCommandResult.showHelp","lastModifiedDate":"2018-12-09"},{"lineNumber":102,"author":{"gitId":"-"},"content":" \u0026\u0026 exit \u003d\u003d otherCommandResult.exit;","lastModifiedDate":"2018-12-09"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":106,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2018-12-09"},{"lineNumber":107,"author":{"gitId":"-"},"content":" return Objects.hash(feedbackToUser, showHelp, exit);","lastModifiedDate":"2018-12-09"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":" .add(\"feedbackToUser\", feedbackToUser)","lastModifiedDate":"2019-02-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":" .add(\"showHelp\", showHelp)","lastModifiedDate":"2019-02-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":" .add(\"exit\", exit)","lastModifiedDate":"2019-02-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"chenyixin0":15,"Jawad280":21,"-":83}},{"path":"src/main/java/seedu/address/logic/commands/DeleteCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-09-01"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Deletes a person identified using it\u0027s displayed index from the address book.","lastModifiedDate":"2018-04-01"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"delete\";","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" + \": Deletes the person identified by the index number used in the displayed person list.\\n\"","lastModifiedDate":"2018-04-01"},{"lineNumber":23,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer)\\n\"","lastModifiedDate":"2016-09-29"},{"lineNumber":24,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"minghowC"},"content":" // Output message: \"Deleted Person: Person Name\"","lastModifiedDate":"2024-03-01"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DELETE_PERSON_SUCCESS \u003d \"Deleted Person: %1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private final Index targetIndex;","lastModifiedDate":"2017-06-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public DeleteCommand(Index targetIndex) {","lastModifiedDate":"2017-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2016-09-22"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":44,"author":{"gitId":"-"},"content":" Person personToDelete \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2018-04-19"},{"lineNumber":45,"author":{"gitId":"-"},"content":" model.deletePerson(personToDelete);","lastModifiedDate":"2016-09-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_PERSON_SUCCESS, Messages.format(personToDelete)));","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" if (!(other instanceof DeleteCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" DeleteCommand otherDeleteCommand \u003d (DeleteCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return targetIndex.equals(otherDeleteCommand.targetIndex);","lastModifiedDate":"2023-07-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2019-02-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"minghowC":1,"-":69}},{"path":"src/main/java/seedu/address/logic/commands/EditCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-02-28"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-02-28"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-02-28"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-02-28"},{"lineNumber":6,"author":{"gitId":"eunrcn"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_INTERN_DURATION;","lastModifiedDate":"2024-02-28"},{"lineNumber":7,"author":{"gitId":"eunrcn"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_INTERVIEW_DATE;","lastModifiedDate":"2024-02-28"},{"lineNumber":8,"author":{"gitId":"eunrcn"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_JOB_DESCRIPTION;","lastModifiedDate":"2024-02-28"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-02-28"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-02-28"},{"lineNumber":11,"author":{"gitId":"eunrcn"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SALARY;","lastModifiedDate":"2024-02-28"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-02-28"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-02-28"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2024-02-28"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2024-02-28"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2024-02-28"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-02-28"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2024-02-28"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-02-28"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-02-28"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-02-28"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-02-28"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-02-28"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-02-29"},{"lineNumber":27,"author":{"gitId":"eunrcn"},"content":"import seedu.address.model.person.InternDuration;","lastModifiedDate":"2024-02-28"},{"lineNumber":28,"author":{"gitId":"eunrcn"},"content":"import seedu.address.model.person.InterviewDate;","lastModifiedDate":"2024-02-28"},{"lineNumber":29,"author":{"gitId":"Jawad280"},"content":"import seedu.address.model.person.JobDescription;","lastModifiedDate":"2024-02-29"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-02-28"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-02-28"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-02-28"},{"lineNumber":33,"author":{"gitId":"Jawad280"},"content":"import seedu.address.model.person.Salary;","lastModifiedDate":"2024-02-29"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-02-28"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":36,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2024-02-28"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Edits the details of an existing person in the address book.","lastModifiedDate":"2024-02-28"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-02-28"},{"lineNumber":39,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2024-02-28"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2024-02-28"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the person identified \"","lastModifiedDate":"2024-02-28"},{"lineNumber":44,"author":{"gitId":"-"},"content":" + \"by the index number used in the displayed person list. \"","lastModifiedDate":"2024-02-28"},{"lineNumber":45,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2024-02-28"},{"lineNumber":46,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2024-02-28"},{"lineNumber":47,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2024-02-28"},{"lineNumber":48,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2024-02-28"},{"lineNumber":49,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2024-02-28"},{"lineNumber":50,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS] \"","lastModifiedDate":"2024-02-28"},{"lineNumber":51,"author":{"gitId":"eunrcn"},"content":" + \"[\" + PREFIX_JOB_DESCRIPTION + \"JOB DESCRIPTION] \"","lastModifiedDate":"2024-02-28"},{"lineNumber":52,"author":{"gitId":"eunrcn"},"content":" + \"[\" + PREFIX_INTERVIEW_DATE + \"INTERVIEW DATE] \"","lastModifiedDate":"2024-02-28"},{"lineNumber":53,"author":{"gitId":"eunrcn"},"content":" + \"[\" + PREFIX_INTERN_DURATION + \"INTERN DURATION] \"","lastModifiedDate":"2024-02-28"},{"lineNumber":54,"author":{"gitId":"eunrcn"},"content":" + \"[\" + PREFIX_SALARY + \"SALARY] \"","lastModifiedDate":"2024-02-28"},{"lineNumber":55,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2024-02-28"},{"lineNumber":56,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2024-02-28"},{"lineNumber":57,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"91234567 \"","lastModifiedDate":"2024-02-28"},{"lineNumber":58,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2024-02-28"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Person: %1$s\";","lastModifiedDate":"2024-02-28"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2024-02-28"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book.\";","lastModifiedDate":"2024-02-28"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":64,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2024-02-28"},{"lineNumber":65,"author":{"gitId":"-"},"content":" private final EditPersonDescriptor editPersonDescriptor;","lastModifiedDate":"2024-02-28"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":67,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-02-28"},{"lineNumber":68,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit","lastModifiedDate":"2024-02-28"},{"lineNumber":69,"author":{"gitId":"-"},"content":" * @param editPersonDescriptor details to edit the person with","lastModifiedDate":"2024-02-28"},{"lineNumber":70,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-02-28"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public EditCommand(Index index, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2024-02-28"},{"lineNumber":72,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2024-02-28"},{"lineNumber":73,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2024-02-28"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":75,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2024-02-28"},{"lineNumber":76,"author":{"gitId":"-"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2024-02-28"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-02-28"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-02-28"},{"lineNumber":81,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2024-02-28"},{"lineNumber":82,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-02-28"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":84,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-02-28"},{"lineNumber":85,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-02-28"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":88,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-02-28"},{"lineNumber":89,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2024-02-28"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":91,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2024-02-28"},{"lineNumber":92,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2024-02-28"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":95,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2024-02-28"},{"lineNumber":96,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-02-28"},{"lineNumber":97,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson)));","lastModifiedDate":"2024-02-28"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":100,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-02-28"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2024-02-28"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2024-02-28"},{"lineNumber":103,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-02-28"},{"lineNumber":104,"author":{"gitId":"-"},"content":" private static Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2024-02-28"},{"lineNumber":105,"author":{"gitId":"-"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2024-02-28"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":107,"author":{"gitId":"eunrcn"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(personToEdit.getCompanyName());","lastModifiedDate":"2024-02-28"},{"lineNumber":108,"author":{"gitId":"-"},"content":" Phone updatedPhone \u003d editPersonDescriptor.getPhone().orElse(personToEdit.getPhone());","lastModifiedDate":"2024-02-28"},{"lineNumber":109,"author":{"gitId":"-"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2024-02-28"},{"lineNumber":110,"author":{"gitId":"-"},"content":" Address updatedAddress \u003d editPersonDescriptor.getAddress().orElse(personToEdit.getAddress());","lastModifiedDate":"2024-02-28"},{"lineNumber":111,"author":{"gitId":"Jawad280"},"content":" JobDescription updatedJobDescription \u003d editPersonDescriptor","lastModifiedDate":"2024-02-29"},{"lineNumber":112,"author":{"gitId":"Jawad280"},"content":" .getJobDescription()","lastModifiedDate":"2024-02-29"},{"lineNumber":113,"author":{"gitId":"Jawad280"},"content":" .orElse(personToEdit.getJobDescription());","lastModifiedDate":"2024-02-29"},{"lineNumber":114,"author":{"gitId":"Jawad280"},"content":" InterviewDate updatedInterviewDate \u003d editPersonDescriptor","lastModifiedDate":"2024-02-29"},{"lineNumber":115,"author":{"gitId":"Jawad280"},"content":" .getInterviewDate()","lastModifiedDate":"2024-02-29"},{"lineNumber":116,"author":{"gitId":"Jawad280"},"content":" .orElse(personToEdit.getInterviewDate());","lastModifiedDate":"2024-02-29"},{"lineNumber":117,"author":{"gitId":"Jawad280"},"content":" InternDuration updatedInternDuration \u003d editPersonDescriptor","lastModifiedDate":"2024-02-29"},{"lineNumber":118,"author":{"gitId":"Jawad280"},"content":" .getInternDuration()","lastModifiedDate":"2024-02-29"},{"lineNumber":119,"author":{"gitId":"Jawad280"},"content":" .orElse(personToEdit.getInternDuration());","lastModifiedDate":"2024-02-29"},{"lineNumber":120,"author":{"gitId":"eunrcn"},"content":" Salary updatedSalary \u003d editPersonDescriptor.getSalary().orElse(personToEdit.getSalary());","lastModifiedDate":"2024-02-28"},{"lineNumber":121,"author":{"gitId":"Jawad280"},"content":" Tag updatedTags \u003d editPersonDescriptor.getTag().orElse(personToEdit.getTag());","lastModifiedDate":"2024-02-29"},{"lineNumber":122,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":123,"author":{"gitId":"eunrcn"},"content":" return new Person(updatedName, updatedPhone, updatedEmail, updatedAddress, updatedTags,","lastModifiedDate":"2024-02-28"},{"lineNumber":124,"author":{"gitId":"eunrcn"},"content":" updatedJobDescription, updatedInterviewDate,","lastModifiedDate":"2024-02-28"},{"lineNumber":125,"author":{"gitId":"eunrcn"},"content":" updatedInternDuration, updatedSalary);","lastModifiedDate":"2024-02-28"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-02-28"},{"lineNumber":129,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-02-28"},{"lineNumber":130,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-02-28"},{"lineNumber":131,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2024-02-28"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":134,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-02-28"},{"lineNumber":135,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2024-02-28"},{"lineNumber":136,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2024-02-28"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":139,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2024-02-28"},{"lineNumber":140,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2024-02-28"},{"lineNumber":141,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2024-02-28"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":144,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-02-28"},{"lineNumber":145,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2024-02-28"},{"lineNumber":146,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-02-28"},{"lineNumber":147,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2024-02-28"},{"lineNumber":148,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2024-02-28"},{"lineNumber":149,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2024-02-28"},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":152,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-02-28"},{"lineNumber":153,"author":{"gitId":"-"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2024-02-28"},{"lineNumber":154,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2024-02-28"},{"lineNumber":155,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-02-28"},{"lineNumber":156,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2024-02-28"},{"lineNumber":157,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2024-02-28"},{"lineNumber":158,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2024-02-28"},{"lineNumber":159,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2024-02-28"},{"lineNumber":160,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2024-02-28"},{"lineNumber":161,"author":{"gitId":"Jawad280"},"content":" private Tag tag;","lastModifiedDate":"2024-02-29"},{"lineNumber":162,"author":{"gitId":"eunrcn"},"content":" private JobDescription jobDescription;","lastModifiedDate":"2024-02-28"},{"lineNumber":163,"author":{"gitId":"eunrcn"},"content":" private InternDuration internDuration;","lastModifiedDate":"2024-02-28"},{"lineNumber":164,"author":{"gitId":"eunrcn"},"content":" private InterviewDate interviewDate;","lastModifiedDate":"2024-02-28"},{"lineNumber":165,"author":{"gitId":"eunrcn"},"content":" private Salary salary;","lastModifiedDate":"2024-02-28"},{"lineNumber":166,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":168,"author":{"gitId":"-"},"content":" public EditPersonDescriptor() {}","lastModifiedDate":"2024-02-28"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":170,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-02-28"},{"lineNumber":171,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2024-02-28"},{"lineNumber":172,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2024-02-28"},{"lineNumber":173,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-02-28"},{"lineNumber":174,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2024-02-28"},{"lineNumber":175,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2024-02-28"},{"lineNumber":176,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2024-02-28"},{"lineNumber":177,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2024-02-28"},{"lineNumber":178,"author":{"gitId":"-"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2024-02-28"},{"lineNumber":179,"author":{"gitId":"Jawad280"},"content":" setTag(toCopy.tag);","lastModifiedDate":"2024-02-29"},{"lineNumber":180,"author":{"gitId":"eunrcn"},"content":" setJobDescription(toCopy.jobDescription);","lastModifiedDate":"2024-02-28"},{"lineNumber":181,"author":{"gitId":"eunrcn"},"content":" setInternDuration(toCopy.internDuration);","lastModifiedDate":"2024-02-28"},{"lineNumber":182,"author":{"gitId":"eunrcn"},"content":" setInterviewDate(toCopy.interviewDate);","lastModifiedDate":"2024-02-28"},{"lineNumber":183,"author":{"gitId":"eunrcn"},"content":" setSalary(toCopy.salary);","lastModifiedDate":"2024-02-28"},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":186,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-02-28"},{"lineNumber":187,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2024-02-28"},{"lineNumber":188,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-02-28"},{"lineNumber":189,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2024-02-28"},{"lineNumber":190,"author":{"gitId":"Jawad280"},"content":" return CollectionUtil.isAnyNonNull(","lastModifiedDate":"2024-02-29"},{"lineNumber":191,"author":{"gitId":"Jawad280"},"content":" name, phone, email, address, tag, jobDescription, interviewDate, internDuration, salary","lastModifiedDate":"2024-02-29"},{"lineNumber":192,"author":{"gitId":"Jawad280"},"content":" );","lastModifiedDate":"2024-02-29"},{"lineNumber":193,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":195,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2024-02-28"},{"lineNumber":196,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2024-02-28"},{"lineNumber":197,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":199,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2024-02-28"},{"lineNumber":200,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2024-02-28"},{"lineNumber":201,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":203,"author":{"gitId":"-"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2024-02-28"},{"lineNumber":204,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2024-02-28"},{"lineNumber":205,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":207,"author":{"gitId":"-"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2024-02-28"},{"lineNumber":208,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2024-02-28"},{"lineNumber":209,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":211,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2024-02-28"},{"lineNumber":212,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2024-02-28"},{"lineNumber":213,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":215,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2024-02-28"},{"lineNumber":216,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2024-02-28"},{"lineNumber":217,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":219,"author":{"gitId":"-"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2024-02-28"},{"lineNumber":220,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2024-02-28"},{"lineNumber":221,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":223,"author":{"gitId":"-"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2024-02-28"},{"lineNumber":224,"author":{"gitId":"-"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2024-02-28"},{"lineNumber":225,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":227,"author":{"gitId":"eunrcn"},"content":" public void setJobDescription(JobDescription jobDescription) {","lastModifiedDate":"2024-02-28"},{"lineNumber":228,"author":{"gitId":"eunrcn"},"content":" this.jobDescription \u003d jobDescription;","lastModifiedDate":"2024-02-28"},{"lineNumber":229,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":231,"author":{"gitId":"eunrcn"},"content":" public Optional\u003cJobDescription\u003e getJobDescription() {","lastModifiedDate":"2024-02-28"},{"lineNumber":232,"author":{"gitId":"eunrcn"},"content":" return Optional.ofNullable(jobDescription);","lastModifiedDate":"2024-02-28"},{"lineNumber":233,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":234,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":235,"author":{"gitId":"eunrcn"},"content":" public void setInternDuration(InternDuration internDuration) {","lastModifiedDate":"2024-02-28"},{"lineNumber":236,"author":{"gitId":"eunrcn"},"content":" this.internDuration \u003d internDuration;","lastModifiedDate":"2024-02-28"},{"lineNumber":237,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":238,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":239,"author":{"gitId":"eunrcn"},"content":" public Optional\u003cInternDuration\u003e getInternDuration() {","lastModifiedDate":"2024-02-28"},{"lineNumber":240,"author":{"gitId":"eunrcn"},"content":" return Optional.ofNullable(internDuration);","lastModifiedDate":"2024-02-28"},{"lineNumber":241,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":242,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":243,"author":{"gitId":"eunrcn"},"content":" public void setInterviewDate(InterviewDate interviewDate) {","lastModifiedDate":"2024-02-28"},{"lineNumber":244,"author":{"gitId":"eunrcn"},"content":" this.interviewDate \u003d interviewDate;","lastModifiedDate":"2024-02-28"},{"lineNumber":245,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":246,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":247,"author":{"gitId":"eunrcn"},"content":" public Optional\u003cInterviewDate\u003e getInterviewDate() {","lastModifiedDate":"2024-02-28"},{"lineNumber":248,"author":{"gitId":"eunrcn"},"content":" return Optional.ofNullable(interviewDate);","lastModifiedDate":"2024-02-28"},{"lineNumber":249,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":250,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":251,"author":{"gitId":"eunrcn"},"content":" public void setSalary(Salary salary) {","lastModifiedDate":"2024-02-28"},{"lineNumber":252,"author":{"gitId":"eunrcn"},"content":" this.salary \u003d salary;","lastModifiedDate":"2024-02-28"},{"lineNumber":253,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":254,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":255,"author":{"gitId":"eunrcn"},"content":" public Optional\u003cSalary\u003e getSalary() {","lastModifiedDate":"2024-02-28"},{"lineNumber":256,"author":{"gitId":"eunrcn"},"content":" return Optional.ofNullable(salary);","lastModifiedDate":"2024-02-28"},{"lineNumber":257,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":258,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":259,"author":{"gitId":"Jawad280"},"content":" public void setTag(Tag tag) {","lastModifiedDate":"2024-02-29"},{"lineNumber":260,"author":{"gitId":"Jawad280"},"content":" this.tag \u003d tag;","lastModifiedDate":"2024-02-29"},{"lineNumber":261,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":262,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":263,"author":{"gitId":"Jawad280"},"content":" public Optional\u003cTag\u003e getTag() {","lastModifiedDate":"2024-02-29"},{"lineNumber":264,"author":{"gitId":"Jawad280"},"content":" return Optional.ofNullable(tag);","lastModifiedDate":"2024-02-29"},{"lineNumber":265,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":266,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":267,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-02-28"},{"lineNumber":268,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-02-28"},{"lineNumber":269,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-02-28"},{"lineNumber":270,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2024-02-28"},{"lineNumber":271,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":273,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-02-28"},{"lineNumber":274,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2024-02-28"},{"lineNumber":275,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2024-02-28"},{"lineNumber":276,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":277,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":278,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2024-02-28"},{"lineNumber":279,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2024-02-28"},{"lineNumber":280,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2024-02-28"},{"lineNumber":281,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2024-02-28"},{"lineNumber":282,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(address, otherEditPersonDescriptor.address)","lastModifiedDate":"2024-02-28"},{"lineNumber":283,"author":{"gitId":"Jawad280"},"content":" \u0026\u0026 Objects.equals(tag, otherEditPersonDescriptor.tag)","lastModifiedDate":"2024-02-29"},{"lineNumber":284,"author":{"gitId":"eunrcn"},"content":" \u0026\u0026 Objects.equals(jobDescription, otherEditPersonDescriptor.jobDescription)","lastModifiedDate":"2024-02-28"},{"lineNumber":285,"author":{"gitId":"eunrcn"},"content":" \u0026\u0026 Objects.equals(internDuration, otherEditPersonDescriptor.internDuration)","lastModifiedDate":"2024-02-28"},{"lineNumber":286,"author":{"gitId":"eunrcn"},"content":" \u0026\u0026 Objects.equals(interviewDate, otherEditPersonDescriptor.interviewDate)","lastModifiedDate":"2024-02-28"},{"lineNumber":287,"author":{"gitId":"eunrcn"},"content":" \u0026\u0026 Objects.equals(salary, otherEditPersonDescriptor.salary);","lastModifiedDate":"2024-02-28"},{"lineNumber":288,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":290,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-02-28"},{"lineNumber":291,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2024-02-28"},{"lineNumber":292,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-02-28"},{"lineNumber":293,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2024-02-28"},{"lineNumber":294,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2024-02-28"},{"lineNumber":295,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2024-02-28"},{"lineNumber":296,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2024-02-28"},{"lineNumber":297,"author":{"gitId":"Jawad280"},"content":" .add(\"tag\", tag)","lastModifiedDate":"2024-02-29"},{"lineNumber":298,"author":{"gitId":"Jawad280"},"content":" .add(\"job description\", jobDescription)","lastModifiedDate":"2024-02-29"},{"lineNumber":299,"author":{"gitId":"Jawad280"},"content":" .add(\"intern duration\", internDuration)","lastModifiedDate":"2024-02-29"},{"lineNumber":300,"author":{"gitId":"Jawad280"},"content":" .add(\"interview date\", interviewDate)","lastModifiedDate":"2024-02-29"},{"lineNumber":301,"author":{"gitId":"Jawad280"},"content":" .add(\"salary\", salary)","lastModifiedDate":"2024-02-29"},{"lineNumber":302,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2024-02-28"},{"lineNumber":303,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":304,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":305,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-02-28"}],"authorContributionMap":{"eunrcn":61,"Jawad280":27,"-":217}},{"path":"src/main/java/seedu/address/logic/commands/FindCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-22"},{"lineNumber":9,"author":{"gitId":"chenyixin0"},"content":" * Finds and lists all companies in address book whose name contains any of the argument keywords.","lastModifiedDate":"2024-02-29"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * Keyword matching is case insensitive.","lastModifiedDate":"2018-04-01"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class FindCommand extends Command {","lastModifiedDate":"2016-09-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"find\";","lastModifiedDate":"2016-09-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":16,"author":{"gitId":"chenyixin0"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Finds all companies whose names contain any of \"","lastModifiedDate":"2024-02-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":" + \"the specified keywords (case-insensitive) and displays them as a list with index numbers.\\n\"","lastModifiedDate":"2018-04-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":" + \"Parameters: KEYWORD [MORE_KEYWORDS]...\\n\"","lastModifiedDate":"2016-09-22"},{"lineNumber":19,"author":{"gitId":"chenyixin0"},"content":" + \"Example: \" + COMMAND_WORD + \" food panda\";","lastModifiedDate":"2024-02-29"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private final NameContainsKeywordsPredicate predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public FindCommand(NameContainsKeywordsPredicate predicate) {","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-22"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":29,"author":{"gitId":"chenyixin0"},"content":" //requireNonNull(model);","lastModifiedDate":"2024-03-08"},{"lineNumber":30,"author":{"gitId":"chenyixin0"},"content":" //model.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-03-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" return new CommandResult(","lastModifiedDate":"2018-04-01"},{"lineNumber":32,"author":{"gitId":"Jawad280"},"content":" String.format(","lastModifiedDate":"2024-03-01"},{"lineNumber":33,"author":{"gitId":"Jawad280"},"content":" Messages.MESSAGE_PERSONS_LISTED_OVERVIEW,","lastModifiedDate":"2024-03-01"},{"lineNumber":34,"author":{"gitId":"Jawad280"},"content":" model.generateNewFilteredPersonList(predicate).size()),","lastModifiedDate":"2024-03-01"},{"lineNumber":35,"author":{"gitId":"chenyixin0"},"content":" model.generateNewFilteredPersonList(predicate));","lastModifiedDate":"2024-02-29"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" if (!(other instanceof FindCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" FindCommand otherFindCommand \u003d (FindCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" return predicate.equals(otherFindCommand.predicate);","lastModifiedDate":"2023-07-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" .add(\"predicate\", predicate)","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22"}],"authorContributionMap":{"chenyixin0":6,"Jawad280":3,"-":50}},{"path":"src/main/java/seedu/address/logic/commands/ListCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * Lists all persons in the address book to the user.","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2016-09-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"list\";","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Listed all persons\";","lastModifiedDate":"2016-09-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":22,"author":{"gitId":"Jawad280"},"content":" return new CommandResult(MESSAGE_SUCCESS, false, false);","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"Jawad280":1,"-":23}},{"path":"src/main/java/seedu/address/logic/commands/ViewCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Jawad280"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-02-26"},{"lineNumber":2,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":3,"author":{"gitId":"Jawad280"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-02-26"},{"lineNumber":4,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":5,"author":{"gitId":"Jawad280"},"content":"import java.util.List;","lastModifiedDate":"2024-02-26"},{"lineNumber":6,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":7,"author":{"gitId":"Jawad280"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-02-26"},{"lineNumber":8,"author":{"gitId":"Jawad280"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-02-26"},{"lineNumber":9,"author":{"gitId":"Jawad280"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-02-26"},{"lineNumber":10,"author":{"gitId":"Jawad280"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-02-26"},{"lineNumber":11,"author":{"gitId":"Jawad280"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-02-26"},{"lineNumber":12,"author":{"gitId":"Jawad280"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-02-26"},{"lineNumber":13,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":14,"author":{"gitId":"Jawad280"},"content":"/**","lastModifiedDate":"2024-02-26"},{"lineNumber":15,"author":{"gitId":"Jawad280"},"content":" * Views a person identified using it\u0027s displayed index from the address book.","lastModifiedDate":"2024-02-26"},{"lineNumber":16,"author":{"gitId":"Jawad280"},"content":" */","lastModifiedDate":"2024-02-26"},{"lineNumber":17,"author":{"gitId":"Jawad280"},"content":"public class ViewCommand extends Command {","lastModifiedDate":"2024-02-26"},{"lineNumber":18,"author":{"gitId":"Jawad280"},"content":" public static final String COMMAND_WORD \u003d \"view\";","lastModifiedDate":"2024-02-26"},{"lineNumber":19,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":20,"author":{"gitId":"Jawad280"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-02-26"},{"lineNumber":21,"author":{"gitId":"Jawad280"},"content":" + \": Views the person identified by the index number used in the displayed person list.\\n\"","lastModifiedDate":"2024-02-26"},{"lineNumber":22,"author":{"gitId":"Jawad280"},"content":" + \"Parameters: INDEX (must be a positive integer)\\n\"","lastModifiedDate":"2024-02-26"},{"lineNumber":23,"author":{"gitId":"Jawad280"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2024-02-26"},{"lineNumber":24,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":25,"author":{"gitId":"Jawad280"},"content":" public static final String MESSAGE_VIEW_PERSON_SUCCESS \u003d \"Viewing Person: %1$s\";","lastModifiedDate":"2024-02-26"},{"lineNumber":26,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":27,"author":{"gitId":"Jawad280"},"content":" private final Index targetIndex;","lastModifiedDate":"2024-02-26"},{"lineNumber":28,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":29,"author":{"gitId":"Jawad280"},"content":" public ViewCommand(Index targetIndex) {","lastModifiedDate":"2024-02-26"},{"lineNumber":30,"author":{"gitId":"Jawad280"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2024-02-26"},{"lineNumber":31,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":32,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":33,"author":{"gitId":"Jawad280"},"content":" @Override","lastModifiedDate":"2024-02-26"},{"lineNumber":34,"author":{"gitId":"Jawad280"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-02-26"},{"lineNumber":35,"author":{"gitId":"Jawad280"},"content":" requireNonNull(model);","lastModifiedDate":"2024-02-26"},{"lineNumber":36,"author":{"gitId":"Jawad280"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-02-26"},{"lineNumber":37,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":38,"author":{"gitId":"Jawad280"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-02-26"},{"lineNumber":39,"author":{"gitId":"Jawad280"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-02-26"},{"lineNumber":40,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":41,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":42,"author":{"gitId":"Jawad280"},"content":" Person personToView \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2024-02-26"},{"lineNumber":43,"author":{"gitId":"Jawad280"},"content":" return new CommandResult(","lastModifiedDate":"2024-02-26"},{"lineNumber":44,"author":{"gitId":"Jawad280"},"content":" String.format(MESSAGE_VIEW_PERSON_SUCCESS, Messages.format(personToView)),","lastModifiedDate":"2024-02-26"},{"lineNumber":45,"author":{"gitId":"Jawad280"},"content":" personToView);","lastModifiedDate":"2024-02-26"},{"lineNumber":46,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":47,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":48,"author":{"gitId":"Jawad280"},"content":" @Override","lastModifiedDate":"2024-02-26"},{"lineNumber":49,"author":{"gitId":"Jawad280"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-02-26"},{"lineNumber":50,"author":{"gitId":"Jawad280"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-02-26"},{"lineNumber":51,"author":{"gitId":"Jawad280"},"content":" return true;","lastModifiedDate":"2024-02-26"},{"lineNumber":52,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":53,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":54,"author":{"gitId":"Jawad280"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-02-26"},{"lineNumber":55,"author":{"gitId":"Jawad280"},"content":" if (!(other instanceof ViewCommand)) {","lastModifiedDate":"2024-02-26"},{"lineNumber":56,"author":{"gitId":"Jawad280"},"content":" return false;","lastModifiedDate":"2024-02-26"},{"lineNumber":57,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":58,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":59,"author":{"gitId":"Jawad280"},"content":" ViewCommand otherViewCommand \u003d (ViewCommand) other;","lastModifiedDate":"2024-02-26"},{"lineNumber":60,"author":{"gitId":"Jawad280"},"content":" return targetIndex.equals(otherViewCommand.targetIndex);","lastModifiedDate":"2024-02-26"},{"lineNumber":61,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":62,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":63,"author":{"gitId":"Jawad280"},"content":" @Override","lastModifiedDate":"2024-02-26"},{"lineNumber":64,"author":{"gitId":"Jawad280"},"content":" public String toString() {","lastModifiedDate":"2024-02-26"},{"lineNumber":65,"author":{"gitId":"Jawad280"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-02-26"},{"lineNumber":66,"author":{"gitId":"Jawad280"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2024-02-26"},{"lineNumber":67,"author":{"gitId":"Jawad280"},"content":" .toString();","lastModifiedDate":"2024-02-26"},{"lineNumber":68,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":69,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-02-26"}],"authorContributionMap":{"Jawad280":69}},{"path":"src/main/java/seedu/address/logic/commands/exceptions/CommandException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands.exceptions;","lastModifiedDate":"2017-02-05"},{"lineNumber":2,"author":{"gitId":"eunrcn"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":" * Represents an error which occurs during execution of a {@link Command}.","lastModifiedDate":"2017-02-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"public class CommandException extends Exception {","lastModifiedDate":"2017-02-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":" public CommandException(String message) {","lastModifiedDate":"2017-02-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":" super(message);","lastModifiedDate":"2017-02-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":12,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * Constructs a new {@code CommandException} with the specified detail {@code message} and {@code cause}.","lastModifiedDate":"2018-08-06"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public CommandException(String message, Throwable cause) {","lastModifiedDate":"2018-08-06"},{"lineNumber":16,"author":{"gitId":"-"},"content":" super(message, cause);","lastModifiedDate":"2018-08-06"},{"lineNumber":17,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05"}],"authorContributionMap":{"eunrcn":1,"-":17}},{"path":"src/main/java/seedu/address/logic/parser/AddCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-02-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-02-05"},{"lineNumber":6,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_INTERN_DURATION;","lastModifiedDate":"2024-02-25"},{"lineNumber":7,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_INTERVIEW_DATE;","lastModifiedDate":"2024-02-25"},{"lineNumber":8,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_JOB_DESCRIPTION;","lastModifiedDate":"2024-02-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-02-05"},{"lineNumber":11,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SALARY;","lastModifiedDate":"2024-02-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-02-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-02-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-02-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-02-25"},{"lineNumber":20,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.InternDuration;","lastModifiedDate":"2024-02-25"},{"lineNumber":21,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.InterviewDate;","lastModifiedDate":"2024-02-25"},{"lineNumber":22,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.JobDescription;","lastModifiedDate":"2024-02-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-02-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-02-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-02-25"},{"lineNumber":26,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.Salary;","lastModifiedDate":"2024-02-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-17"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":40,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":41,"author":{"gitId":"ashleygoh1"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_TAG,","lastModifiedDate":"2024-02-25"},{"lineNumber":42,"author":{"gitId":"ashleygoh1"},"content":" PREFIX_JOB_DESCRIPTION, PREFIX_INTERVIEW_DATE, PREFIX_INTERN_DURATION, PREFIX_SALARY);","lastModifiedDate":"2024-02-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":44,"author":{"gitId":"ashleygoh1"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_TAG,","lastModifiedDate":"2024-02-26"},{"lineNumber":45,"author":{"gitId":"ashleygoh1"},"content":" PREFIX_JOB_DESCRIPTION, PREFIX_INTERN_DURATION, PREFIX_SALARY)","lastModifiedDate":"2024-02-26"},{"lineNumber":46,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":50,"author":{"gitId":"ashleygoh1"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-02-26"},{"lineNumber":51,"author":{"gitId":"ashleygoh1"},"content":" PREFIX_TAG, PREFIX_JOB_DESCRIPTION, PREFIX_INTERVIEW_DATE, PREFIX_INTERN_DURATION,","lastModifiedDate":"2024-02-26"},{"lineNumber":52,"author":{"gitId":"ashleygoh1"},"content":" PREFIX_SALARY);","lastModifiedDate":"2024-02-26"},{"lineNumber":53,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":54,"author":{"gitId":"-"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":55,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":57,"author":{"gitId":"ashleygoh1"},"content":" Address address;","lastModifiedDate":"2024-02-26"},{"lineNumber":58,"author":{"gitId":"ashleygoh1"},"content":" if (argMultimap.getValue(PREFIX_ADDRESS).isPresent()) {","lastModifiedDate":"2024-02-26"},{"lineNumber":59,"author":{"gitId":"ashleygoh1"},"content":" try {","lastModifiedDate":"2024-02-26"},{"lineNumber":60,"author":{"gitId":"ashleygoh1"},"content":" address \u003d ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get());","lastModifiedDate":"2024-02-26"},{"lineNumber":61,"author":{"gitId":"ashleygoh1"},"content":" } catch (ParseException e) {","lastModifiedDate":"2024-02-26"},{"lineNumber":62,"author":{"gitId":"ashleygoh1"},"content":" throw new ParseException(\"Error parsing address: \" + e.getMessage());","lastModifiedDate":"2024-02-26"},{"lineNumber":63,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":64,"author":{"gitId":"ashleygoh1"},"content":" } else {","lastModifiedDate":"2024-02-26"},{"lineNumber":65,"author":{"gitId":"ashleygoh1"},"content":" address \u003d new Address(\"\"); // Provide a default empty address if not provided","lastModifiedDate":"2024-02-26"},{"lineNumber":66,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":67,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":68,"author":{"gitId":"ashleygoh1"},"content":" Tag tag \u003d ParserUtil.parseTag(argMultimap.getValue(PREFIX_TAG).get());","lastModifiedDate":"2024-02-25"},{"lineNumber":69,"author":{"gitId":"ashleygoh1"},"content":" JobDescription jobDescription \u003d ParserUtil.parseJobDescription(","lastModifiedDate":"2024-02-25"},{"lineNumber":70,"author":{"gitId":"ashleygoh1"},"content":" argMultimap.getValue(PREFIX_JOB_DESCRIPTION).get());","lastModifiedDate":"2024-02-25"},{"lineNumber":71,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":72,"author":{"gitId":"ashleygoh1"},"content":" InterviewDate interviewDate \u003d new InterviewDate(null);","lastModifiedDate":"2024-02-26"},{"lineNumber":73,"author":{"gitId":"ashleygoh1"},"content":" if (argMultimap.getValue(PREFIX_INTERVIEW_DATE).isPresent()) {","lastModifiedDate":"2024-02-26"},{"lineNumber":74,"author":{"gitId":"ashleygoh1"},"content":" try {","lastModifiedDate":"2024-02-26"},{"lineNumber":75,"author":{"gitId":"ashleygoh1"},"content":" String givenDate \u003d argMultimap.getValue(PREFIX_INTERVIEW_DATE).get();","lastModifiedDate":"2024-02-26"},{"lineNumber":76,"author":{"gitId":"ashleygoh1"},"content":" if (!givenDate.isEmpty()) {","lastModifiedDate":"2024-02-26"},{"lineNumber":77,"author":{"gitId":"ashleygoh1"},"content":" interviewDate \u003d ParserUtil.parseInterviewDate(givenDate);","lastModifiedDate":"2024-02-26"},{"lineNumber":78,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":79,"author":{"gitId":"ashleygoh1"},"content":" } catch (ParseException e) {","lastModifiedDate":"2024-02-26"},{"lineNumber":80,"author":{"gitId":"ashleygoh1"},"content":" throw new ParseException(\"Error parsing interview date: \" + e.getMessage());","lastModifiedDate":"2024-02-26"},{"lineNumber":81,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":82,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":83,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":84,"author":{"gitId":"ashleygoh1"},"content":" InternDuration internDuration \u003d ParserUtil.parseInternDuration(","lastModifiedDate":"2024-02-25"},{"lineNumber":85,"author":{"gitId":"ashleygoh1"},"content":" argMultimap.getValue(PREFIX_INTERN_DURATION).get());","lastModifiedDate":"2024-02-25"},{"lineNumber":86,"author":{"gitId":"ashleygoh1"},"content":" Salary salary \u003d ParserUtil.parseSalary(argMultimap.getValue(PREFIX_SALARY).get());","lastModifiedDate":"2024-02-25"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":88,"author":{"gitId":"ashleygoh1"},"content":" Person person \u003d new Person(name, phone, email, address, tag,","lastModifiedDate":"2024-02-25"},{"lineNumber":89,"author":{"gitId":"ashleygoh1"},"content":" jobDescription, interviewDate, internDuration, salary);","lastModifiedDate":"2024-02-25"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":91,"author":{"gitId":"-"},"content":" return new AddCommand(person);","lastModifiedDate":"2017-03-17"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":94,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17"},{"lineNumber":97,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17"},{"lineNumber":98,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17"},{"lineNumber":99,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":102,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05"}],"authorContributionMap":{"ashleygoh1":47,"-":55}},{"path":"src/main/java/seedu/address/logic/parser/AddressBookParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-07-29"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-07-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2024-02-29"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2017-01-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2024-03-01"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2024-02-29"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2024-02-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2024-02-29"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2024-02-26"},{"lineNumber":20,"author":{"gitId":"Jawad280"},"content":"import seedu.address.logic.commands.ViewCommand;","lastModifiedDate":"2024-02-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":42,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":50,"author":{"gitId":"-"},"content":" // Note to developers: Change the log level in config.json to enable lower level (i.e., FINE, FINER and lower)","lastModifiedDate":"2023-07-29"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":55,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2024-02-26"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2024-02-26"},{"lineNumber":61,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2024-02-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return new ListCommand();","lastModifiedDate":"2024-02-26"},{"lineNumber":63,"author":{"gitId":"minghowC"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-01"},{"lineNumber":64,"author":{"gitId":"minghowC"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2024-03-01"},{"lineNumber":65,"author":{"gitId":"Jawad280"},"content":" case ViewCommand.COMMAND_WORD:","lastModifiedDate":"2024-02-26"},{"lineNumber":66,"author":{"gitId":"Jawad280"},"content":" return new ViewCommandParser().parse(arguments);","lastModifiedDate":"2024-02-26"},{"lineNumber":67,"author":{"gitId":"eunrcn"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2024-02-28"},{"lineNumber":68,"author":{"gitId":"eunrcn"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2024-02-28"},{"lineNumber":69,"author":{"gitId":"ashleygoh1"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2024-02-27"},{"lineNumber":70,"author":{"gitId":"ashleygoh1"},"content":" return new ClearCommand();","lastModifiedDate":"2024-02-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2024-02-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2024-02-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2024-02-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2024-02-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26"},{"lineNumber":77,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29"},{"lineNumber":78,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"eunrcn":2,"minghowC":2,"Jawad280":3,"ashleygoh1":2,"-":73}},{"path":"src/main/java/seedu/address/logic/parser/CliSyntax.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11"},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":" /* Prefix definitions */","lastModifiedDate":"2017-02-11"},{"lineNumber":9,"author":{"gitId":"eunrcn"},"content":" public static final Prefix PREFIX_INDEX \u003d new Prefix(\"i/\");","lastModifiedDate":"2024-02-28"},{"lineNumber":10,"author":{"gitId":"ashleygoh1"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"c/\");","lastModifiedDate":"2024-02-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"p/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"e/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_ADDRESS \u003d new Prefix(\"a/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":14,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"t/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":15,"author":{"gitId":"ashleygoh1"},"content":" public static final Prefix PREFIX_JOB_DESCRIPTION \u003d new Prefix(\"jd/\");","lastModifiedDate":"2024-02-25"},{"lineNumber":16,"author":{"gitId":"ashleygoh1"},"content":" public static final Prefix PREFIX_INTERVIEW_DATE \u003d new Prefix(\"d/\");","lastModifiedDate":"2024-02-25"},{"lineNumber":17,"author":{"gitId":"ashleygoh1"},"content":" public static final Prefix PREFIX_INTERN_DURATION \u003d new Prefix(\"id/\");","lastModifiedDate":"2024-02-25"},{"lineNumber":18,"author":{"gitId":"ashleygoh1"},"content":" public static final Prefix PREFIX_SALARY \u003d new Prefix(\"s/\");","lastModifiedDate":"2024-02-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":20,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"eunrcn":1,"ashleygoh1":5,"-":14}},{"path":"src/main/java/seedu/address/logic/parser/EditCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-02-28"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-02-28"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-02-28"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-02-28"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-02-28"},{"lineNumber":7,"author":{"gitId":"eunrcn"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_INTERN_DURATION;","lastModifiedDate":"2024-02-28"},{"lineNumber":8,"author":{"gitId":"eunrcn"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_INTERVIEW_DATE;","lastModifiedDate":"2024-02-28"},{"lineNumber":9,"author":{"gitId":"eunrcn"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_JOB_DESCRIPTION;","lastModifiedDate":"2024-02-28"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-02-28"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-02-28"},{"lineNumber":12,"author":{"gitId":"eunrcn"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SALARY;","lastModifiedDate":"2024-02-28"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-02-28"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-02-28"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2024-02-28"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2024-02-28"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-02-28"},{"lineNumber":19,"author":{"gitId":"Jawad280"},"content":"import seedu.address.model.person.InterviewDate;","lastModifiedDate":"2024-02-29"},{"lineNumber":20,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2024-02-28"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new EditCommand object","lastModifiedDate":"2024-02-28"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-02-28"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class EditCommandParser implements Parser\u003cEditCommand\u003e {","lastModifiedDate":"2024-02-28"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-02-28"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the EditCommand","lastModifiedDate":"2024-02-28"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * and returns an EditCommand object for execution.","lastModifiedDate":"2024-02-28"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-02-28"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-02-28"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public EditCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-02-28"},{"lineNumber":33,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2024-02-28"},{"lineNumber":34,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-02-28"},{"lineNumber":35,"author":{"gitId":"eunrcn"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_TAG,","lastModifiedDate":"2024-02-28"},{"lineNumber":36,"author":{"gitId":"eunrcn"},"content":" PREFIX_JOB_DESCRIPTION, PREFIX_INTERVIEW_DATE, PREFIX_INTERN_DURATION, PREFIX_SALARY);","lastModifiedDate":"2024-02-28"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":38,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2024-02-28"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":40,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2024-02-28"},{"lineNumber":41,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2024-02-28"},{"lineNumber":42,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-02-28"},{"lineNumber":43,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-02-28"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":46,"author":{"gitId":"eunrcn"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-02-28"},{"lineNumber":47,"author":{"gitId":"eunrcn"},"content":" PREFIX_TAG, PREFIX_JOB_DESCRIPTION, PREFIX_INTERVIEW_DATE, PREFIX_INTERN_DURATION,","lastModifiedDate":"2024-02-28"},{"lineNumber":48,"author":{"gitId":"eunrcn"},"content":" PREFIX_SALARY);","lastModifiedDate":"2024-02-28"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":50,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2024-02-28"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":52,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2024-02-28"},{"lineNumber":53,"author":{"gitId":"-"},"content":" editPersonDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()));","lastModifiedDate":"2024-02-28"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":55,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2024-02-28"},{"lineNumber":56,"author":{"gitId":"-"},"content":" editPersonDescriptor.setPhone(ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get()));","lastModifiedDate":"2024-02-28"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":58,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2024-02-28"},{"lineNumber":59,"author":{"gitId":"-"},"content":" editPersonDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2024-02-28"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":61,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_ADDRESS).isPresent()) {","lastModifiedDate":"2024-02-28"},{"lineNumber":62,"author":{"gitId":"-"},"content":" editPersonDescriptor.setAddress(ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get()));","lastModifiedDate":"2024-02-28"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":64,"author":{"gitId":"eunrcn"},"content":" if (argMultimap.getValue(PREFIX_JOB_DESCRIPTION).isPresent()) {","lastModifiedDate":"2024-02-28"},{"lineNumber":65,"author":{"gitId":"Jawad280"},"content":" editPersonDescriptor.setJobDescription(","lastModifiedDate":"2024-02-29"},{"lineNumber":66,"author":{"gitId":"Jawad280"},"content":" ParserUtil.parseJobDescription(argMultimap.getValue(PREFIX_JOB_DESCRIPTION).get())","lastModifiedDate":"2024-02-29"},{"lineNumber":67,"author":{"gitId":"Jawad280"},"content":" );","lastModifiedDate":"2024-02-29"},{"lineNumber":68,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":69,"author":{"gitId":"eunrcn"},"content":" if (argMultimap.getValue(PREFIX_INTERVIEW_DATE).isPresent()) {","lastModifiedDate":"2024-02-28"},{"lineNumber":70,"author":{"gitId":"Jawad280"},"content":" String givenDate \u003d argMultimap.getValue(PREFIX_INTERVIEW_DATE).get();","lastModifiedDate":"2024-02-29"},{"lineNumber":71,"author":{"gitId":"Jawad280"},"content":" if (!givenDate.isEmpty()) {","lastModifiedDate":"2024-02-29"},{"lineNumber":72,"author":{"gitId":"Jawad280"},"content":" editPersonDescriptor.setInterviewDate(","lastModifiedDate":"2024-02-29"},{"lineNumber":73,"author":{"gitId":"Jawad280"},"content":" ParserUtil.parseInterviewDate(argMultimap.getValue(PREFIX_INTERVIEW_DATE).get())","lastModifiedDate":"2024-02-29"},{"lineNumber":74,"author":{"gitId":"Jawad280"},"content":" );","lastModifiedDate":"2024-02-29"},{"lineNumber":75,"author":{"gitId":"Jawad280"},"content":" } else {","lastModifiedDate":"2024-02-29"},{"lineNumber":76,"author":{"gitId":"Jawad280"},"content":" editPersonDescriptor.setInterviewDate(new InterviewDate(null));","lastModifiedDate":"2024-02-29"},{"lineNumber":77,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-02-29"},{"lineNumber":78,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":79,"author":{"gitId":"eunrcn"},"content":" if (argMultimap.getValue(PREFIX_INTERN_DURATION).isPresent()) {","lastModifiedDate":"2024-02-28"},{"lineNumber":80,"author":{"gitId":"Jawad280"},"content":" editPersonDescriptor.setInternDuration(","lastModifiedDate":"2024-02-29"},{"lineNumber":81,"author":{"gitId":"Jawad280"},"content":" ParserUtil.parseInternDuration(argMultimap.getValue(PREFIX_INTERN_DURATION).get())","lastModifiedDate":"2024-02-29"},{"lineNumber":82,"author":{"gitId":"Jawad280"},"content":" );","lastModifiedDate":"2024-02-29"},{"lineNumber":83,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":84,"author":{"gitId":"eunrcn"},"content":" if (argMultimap.getValue(PREFIX_SALARY).isPresent()) {","lastModifiedDate":"2024-02-28"},{"lineNumber":85,"author":{"gitId":"eunrcn"},"content":" editPersonDescriptor.setSalary(ParserUtil.parseSalary(argMultimap.getValue(PREFIX_SALARY).get()));","lastModifiedDate":"2024-02-28"},{"lineNumber":86,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":87,"author":{"gitId":"eunrcn"},"content":" if (argMultimap.getValue(PREFIX_TAG).isPresent()) {","lastModifiedDate":"2024-02-28"},{"lineNumber":88,"author":{"gitId":"Jawad280"},"content":" editPersonDescriptor.setTag(ParserUtil.parseTag(argMultimap.getValue(PREFIX_TAG).get()));","lastModifiedDate":"2024-02-29"},{"lineNumber":89,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":90,"author":{"gitId":"-"},"content":" if (!editPersonDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2024-02-28"},{"lineNumber":91,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2024-02-28"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":95,"author":{"gitId":"eunrcn"},"content":" return new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2024-02-28"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":97,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-02-28"}],"authorContributionMap":{"eunrcn":22,"Jawad280":16,"-":59}},{"path":"src/main/java/seedu/address/logic/parser/ParserUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-02-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-02-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-02-25"},{"lineNumber":10,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.InternDuration;","lastModifiedDate":"2024-02-25"},{"lineNumber":11,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.InterviewDate;","lastModifiedDate":"2024-02-25"},{"lineNumber":12,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.JobDescription;","lastModifiedDate":"2024-02-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-02-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-02-25"},{"lineNumber":15,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.Salary;","lastModifiedDate":"2024-02-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-02-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02"},{"lineNumber":24,"author":{"gitId":"ashleygoh1"},"content":" public static final String MESSAGE_INVALID_NUMBER_OF_PEOPLE \u003d","lastModifiedDate":"2024-02-25"},{"lineNumber":25,"author":{"gitId":"ashleygoh1"},"content":" \"Number of people is not a non-zero unsigned integer.\";","lastModifiedDate":"2024-02-25"},{"lineNumber":26,"author":{"gitId":"ashleygoh1"},"content":" public static final String MESSAGE_INVALID_DATE_TIME_FORMAT \u003d","lastModifiedDate":"2024-02-25"},{"lineNumber":27,"author":{"gitId":"ashleygoh1"},"content":" \"Date time is wrongly formatted. You need to input a date in yyyy-mm-dd or dd-mm-yyyy \"","lastModifiedDate":"2024-02-25"},{"lineNumber":28,"author":{"gitId":"ashleygoh1"},"content":" + \"format and a time in HH:mm or HHmm (24hr clock) format (eg: 1800 or 18:00 for 6 pm). \"","lastModifiedDate":"2024-02-25"},{"lineNumber":29,"author":{"gitId":"ashleygoh1"},"content":" + \"You can choose to entire enter a date first or time first in any of the formats mentioned\";","lastModifiedDate":"2024-02-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02"},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2017-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":37,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02"},{"lineNumber":39,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":41,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29"},{"lineNumber":47,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":51,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29"},{"lineNumber":52,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":54,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":56,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":62,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":66,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30"},{"lineNumber":67,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":68,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":69,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","lastModifiedDate":"2017-05-30"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":74,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":75,"author":{"gitId":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30"},{"lineNumber":76,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":77,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":79,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":81,"author":{"gitId":"-"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":82,"author":{"gitId":"-"},"content":" return new Address(trimmedAddress);","lastModifiedDate":"2017-05-30"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":88,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":92,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30"},{"lineNumber":93,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":94,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":95,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":97,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","lastModifiedDate":"2017-05-30"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":100,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":103,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":104,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":105,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":106,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":107,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30"},{"lineNumber":108,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":109,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":110,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":112,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","lastModifiedDate":"2017-05-30"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":115,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":116,"author":{"gitId":"ashleygoh1"},"content":" * Parses a {@code String jobDescription} into an {@code jobDescription}.","lastModifiedDate":"2024-02-25"},{"lineNumber":117,"author":{"gitId":"ashleygoh1"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-02-25"},{"lineNumber":118,"author":{"gitId":"ashleygoh1"},"content":" *","lastModifiedDate":"2024-02-25"},{"lineNumber":119,"author":{"gitId":"ashleygoh1"},"content":" * @throws ParseException if the given {@code jobDescription} is invalid.","lastModifiedDate":"2024-02-25"},{"lineNumber":120,"author":{"gitId":"ashleygoh1"},"content":" */","lastModifiedDate":"2024-02-25"},{"lineNumber":121,"author":{"gitId":"ashleygoh1"},"content":" public static JobDescription parseJobDescription(String jobDescription) throws ParseException {","lastModifiedDate":"2024-02-25"},{"lineNumber":122,"author":{"gitId":"ashleygoh1"},"content":" requireNonNull(jobDescription);","lastModifiedDate":"2024-02-25"},{"lineNumber":123,"author":{"gitId":"ashleygoh1"},"content":" String trimmedJobDescription \u003d jobDescription.trim();","lastModifiedDate":"2024-02-25"},{"lineNumber":124,"author":{"gitId":"ashleygoh1"},"content":" if (!JobDescription.isValidJobDescription(trimmedJobDescription)) {","lastModifiedDate":"2024-02-25"},{"lineNumber":125,"author":{"gitId":"ashleygoh1"},"content":" throw new ParseException(JobDescription.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-25"},{"lineNumber":126,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":127,"author":{"gitId":"ashleygoh1"},"content":" return new JobDescription(trimmedJobDescription);","lastModifiedDate":"2024-02-25"},{"lineNumber":128,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":129,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":130,"author":{"gitId":"ashleygoh1"},"content":" /**","lastModifiedDate":"2024-02-25"},{"lineNumber":131,"author":{"gitId":"ashleygoh1"},"content":" * Parses {@code dateTime} into a {@code LocalDateTime} object.","lastModifiedDate":"2024-02-25"},{"lineNumber":132,"author":{"gitId":"ashleygoh1"},"content":" * @throws ParseException if {@code dateTime} is of invalid format.","lastModifiedDate":"2024-02-25"},{"lineNumber":133,"author":{"gitId":"ashleygoh1"},"content":" */","lastModifiedDate":"2024-02-25"},{"lineNumber":134,"author":{"gitId":"ashleygoh1"},"content":" public static InterviewDate parseInterviewDate(String interviewDate) throws ParseException {","lastModifiedDate":"2024-02-25"},{"lineNumber":135,"author":{"gitId":"ashleygoh1"},"content":" String trimmedDateTime \u003d interviewDate.trim();","lastModifiedDate":"2024-02-25"},{"lineNumber":136,"author":{"gitId":"ashleygoh1"},"content":" return new InterviewDate(trimmedDateTime);","lastModifiedDate":"2024-02-25"},{"lineNumber":137,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":138,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":139,"author":{"gitId":"ashleygoh1"},"content":" /**","lastModifiedDate":"2024-02-25"},{"lineNumber":140,"author":{"gitId":"ashleygoh1"},"content":" * Parses a {@code String internDuration} into an {@code internDuration}.","lastModifiedDate":"2024-02-25"},{"lineNumber":141,"author":{"gitId":"ashleygoh1"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-02-25"},{"lineNumber":142,"author":{"gitId":"ashleygoh1"},"content":" *","lastModifiedDate":"2024-02-25"},{"lineNumber":143,"author":{"gitId":"ashleygoh1"},"content":" * @throws ParseException if the given {@code internDuration} is invalid.","lastModifiedDate":"2024-02-25"},{"lineNumber":144,"author":{"gitId":"ashleygoh1"},"content":" */","lastModifiedDate":"2024-02-25"},{"lineNumber":145,"author":{"gitId":"ashleygoh1"},"content":" public static InternDuration parseInternDuration(String internDuration) throws ParseException {","lastModifiedDate":"2024-02-25"},{"lineNumber":146,"author":{"gitId":"ashleygoh1"},"content":" String trimmedInternDuration \u003d internDuration.trim();","lastModifiedDate":"2024-02-25"},{"lineNumber":147,"author":{"gitId":"ashleygoh1"},"content":" if (!InternDuration.isValidInternDuration(trimmedInternDuration)) {","lastModifiedDate":"2024-02-25"},{"lineNumber":148,"author":{"gitId":"ashleygoh1"},"content":" throw new ParseException(InternDuration.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-25"},{"lineNumber":149,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":150,"author":{"gitId":"ashleygoh1"},"content":" return new InternDuration(trimmedInternDuration);","lastModifiedDate":"2024-02-25"},{"lineNumber":151,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":152,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":153,"author":{"gitId":"ashleygoh1"},"content":" /**","lastModifiedDate":"2024-02-25"},{"lineNumber":154,"author":{"gitId":"ashleygoh1"},"content":" * Parses a {@code String salary} into an {@code salary}.","lastModifiedDate":"2024-02-25"},{"lineNumber":155,"author":{"gitId":"ashleygoh1"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-02-25"},{"lineNumber":156,"author":{"gitId":"ashleygoh1"},"content":" *","lastModifiedDate":"2024-02-25"},{"lineNumber":157,"author":{"gitId":"ashleygoh1"},"content":" * @throws ParseException if the given {@code salary} is invalid.","lastModifiedDate":"2024-02-25"},{"lineNumber":158,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":159,"author":{"gitId":"ashleygoh1"},"content":" public static Salary parseSalary(String salary) throws ParseException {","lastModifiedDate":"2024-02-25"},{"lineNumber":160,"author":{"gitId":"ashleygoh1"},"content":" String trimmedSalary \u003d salary.trim();","lastModifiedDate":"2024-02-25"},{"lineNumber":161,"author":{"gitId":"ashleygoh1"},"content":" if (!Salary.isValidSalary(trimmedSalary)) {","lastModifiedDate":"2024-02-25"},{"lineNumber":162,"author":{"gitId":"ashleygoh1"},"content":" throw new ParseException(Salary.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-25"},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":164,"author":{"gitId":"ashleygoh1"},"content":" return new Salary(trimmedSalary);","lastModifiedDate":"2024-02-25"},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":166,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"ashleygoh1":57,"-":109}},{"path":"src/main/java/seedu/address/logic/parser/ViewCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Jawad280"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-02-26"},{"lineNumber":2,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":3,"author":{"gitId":"Jawad280"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-02-26"},{"lineNumber":4,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":5,"author":{"gitId":"Jawad280"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-02-26"},{"lineNumber":6,"author":{"gitId":"Jawad280"},"content":"import seedu.address.logic.commands.ViewCommand;","lastModifiedDate":"2024-02-26"},{"lineNumber":7,"author":{"gitId":"Jawad280"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-02-26"},{"lineNumber":8,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":9,"author":{"gitId":"Jawad280"},"content":"/**","lastModifiedDate":"2024-02-26"},{"lineNumber":10,"author":{"gitId":"Jawad280"},"content":" * Parses input arguments and creates a new ViewCommand object","lastModifiedDate":"2024-02-26"},{"lineNumber":11,"author":{"gitId":"Jawad280"},"content":" */","lastModifiedDate":"2024-02-26"},{"lineNumber":12,"author":{"gitId":"Jawad280"},"content":"public class ViewCommandParser {","lastModifiedDate":"2024-02-26"},{"lineNumber":13,"author":{"gitId":"Jawad280"},"content":" /**","lastModifiedDate":"2024-02-26"},{"lineNumber":14,"author":{"gitId":"Jawad280"},"content":" * Parses the given {@code String} of arguments in the context of the ViewCommand","lastModifiedDate":"2024-02-26"},{"lineNumber":15,"author":{"gitId":"Jawad280"},"content":" * and returns a ViewCommand object for execution.","lastModifiedDate":"2024-02-26"},{"lineNumber":16,"author":{"gitId":"Jawad280"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-02-26"},{"lineNumber":17,"author":{"gitId":"Jawad280"},"content":" */","lastModifiedDate":"2024-02-26"},{"lineNumber":18,"author":{"gitId":"Jawad280"},"content":" public ViewCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-02-26"},{"lineNumber":19,"author":{"gitId":"Jawad280"},"content":" try {","lastModifiedDate":"2024-02-26"},{"lineNumber":20,"author":{"gitId":"Jawad280"},"content":" Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2024-02-26"},{"lineNumber":21,"author":{"gitId":"Jawad280"},"content":" return new ViewCommand(index);","lastModifiedDate":"2024-02-26"},{"lineNumber":22,"author":{"gitId":"Jawad280"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-02-26"},{"lineNumber":23,"author":{"gitId":"Jawad280"},"content":" throw new ParseException(","lastModifiedDate":"2024-02-26"},{"lineNumber":24,"author":{"gitId":"Jawad280"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, ViewCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-02-26"},{"lineNumber":25,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":26,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":27,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-02-26"}],"authorContributionMap":{"Jawad280":27}},{"path":"src/main/java/seedu/address/model/AddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.UniquePersonList;","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * Wraps all data at the address-book level","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Duplicates are not allowed (by .isSamePerson comparison)","lastModifiedDate":"2018-04-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class AddressBook implements ReadOnlyAddressBook {","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private final UniquePersonList persons;","lastModifiedDate":"2016-08-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * The \u0027unusual\u0027 code block below is a non-static initialization block, sometimes used to avoid duplication","lastModifiedDate":"2019-05-11"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * between constructors. See https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html","lastModifiedDate":"2016-10-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Note that non-static init blocks are not recommended to use. There are other ways to avoid duplication","lastModifiedDate":"2016-10-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * among constructors.","lastModifiedDate":"2016-10-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" {","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" persons \u003d new UniquePersonList();","lastModifiedDate":"2016-08-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public AddressBook() {}","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Creates an AddressBook using the Persons in the {@code toBeCopied}","lastModifiedDate":"2018-03-29"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public AddressBook(ReadOnlyAddressBook toBeCopied) {","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" this();","lastModifiedDate":"2016-12-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" resetData(toBeCopied);","lastModifiedDate":"2016-12-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":41,"author":{"gitId":"-"},"content":" //// list overwrite operations","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Replaces the contents of the person list with {@code persons}.","lastModifiedDate":"2018-08-07"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * {@code persons} must not contain duplicate persons.","lastModifiedDate":"2018-08-07"},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public void setPersons(List\u003cPerson\u003e persons) {","lastModifiedDate":"2018-08-07"},{"lineNumber":48,"author":{"gitId":"-"},"content":" this.persons.setPersons(persons);","lastModifiedDate":"2016-10-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Resets the existing data of this {@code AddressBook} with {@code newData}.","lastModifiedDate":"2017-08-16"},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void resetData(ReadOnlyAddressBook newData) {","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":" requireNonNull(newData);","lastModifiedDate":"2017-05-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" setPersons(newData.getPersonList());","lastModifiedDate":"2018-03-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" //// person-level operations","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * Returns true if a person with the same identity as {@code person} exists in the address book.","lastModifiedDate":"2018-08-06"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06"},{"lineNumber":66,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return persons.contains(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-09-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * The person must not already exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void addPerson(Person p) {","lastModifiedDate":"2018-08-07"},{"lineNumber":75,"author":{"gitId":"-"},"content":" persons.add(p);","lastModifiedDate":"2018-03-29"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Replaces the given person {@code target} in the list with {@code editedPerson}.","lastModifiedDate":"2018-01-10"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * The person identity of {@code editedPerson} must not be the same as another existing person in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":82,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":84,"author":{"gitId":"-"},"content":" requireNonNull(editedPerson);","lastModifiedDate":"2018-01-10"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" persons.setPerson(target, editedPerson);","lastModifiedDate":"2018-03-29"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":89,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * Removes {@code key} from this {@code AddressBook}.","lastModifiedDate":"2017-08-16"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * {@code key} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":92,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void removePerson(Person key) {","lastModifiedDate":"2018-08-07"},{"lineNumber":94,"author":{"gitId":"-"},"content":" persons.remove(key);","lastModifiedDate":"2018-02-28"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":" //// util methods","lastModifiedDate":"2016-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":" .add(\"persons\", persons)","lastModifiedDate":"2019-02-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":108,"author":{"gitId":"Jawad280"},"content":" ObservableList\u003cPerson\u003e personList \u003d persons.asUnmodifiableObservableList();","lastModifiedDate":"2024-02-26"},{"lineNumber":109,"author":{"gitId":"Jawad280"},"content":" // Sort the list","lastModifiedDate":"2024-02-26"},{"lineNumber":110,"author":{"gitId":"Jawad280"},"content":" personList \u003d personList.sorted();","lastModifiedDate":"2024-02-26"},{"lineNumber":111,"author":{"gitId":"Jawad280"},"content":" return personList;","lastModifiedDate":"2024-02-26"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-01"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-01"},{"lineNumber":114,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":115,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-21"},{"lineNumber":116,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":121,"author":{"gitId":"-"},"content":" if (!(other instanceof AddressBook)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":122,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":" AddressBook otherAddressBook \u003d (AddressBook) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":126,"author":{"gitId":"-"},"content":" return persons.equals(otherAddressBook.persons);","lastModifiedDate":"2023-07-13"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":129,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":130,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-21"},{"lineNumber":131,"author":{"gitId":"-"},"content":" return persons.hashCode();","lastModifiedDate":"2018-03-29"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":133,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"Jawad280":4,"-":129}},{"path":"src/main/java/seedu/address/model/Model.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":7,"author":{"gitId":"chenyixin0"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2024-02-29"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * The API of the Model component.","lastModifiedDate":"2016-09-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public interface Model {","lastModifiedDate":"2016-09-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":" /** {@code Predicate} that always evaluate to true */","lastModifiedDate":"2017-08-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":" Predicate\u003cPerson\u003e PREDICATE_SHOW_ALL_PERSONS \u003d unused -\u003e true;","lastModifiedDate":"2018-01-10"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Replaces user prefs data with the data in {@code userPrefs}.","lastModifiedDate":"2018-12-06"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":" void setUserPrefs(ReadOnlyUserPrefs userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Returns the user prefs.","lastModifiedDate":"2018-11-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" ReadOnlyUserPrefs getUserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" void setAddressBookFilePath(Path addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Replaces address book data with the data in {@code addressBook}.","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" void setAddressBook(ReadOnlyAddressBook addressBook);","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":" /** Returns the AddressBook */","lastModifiedDate":"2016-09-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2016-09-25"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Returns true if a person with the same identity as {@code person} exists in the address book.","lastModifiedDate":"2018-08-06"},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":59,"author":{"gitId":"-"},"content":" boolean hasPerson(Person person);","lastModifiedDate":"2018-08-06"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Deletes the given person.","lastModifiedDate":"2018-08-07"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * The person must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":65,"author":{"gitId":"-"},"content":" void deletePerson(Person target);","lastModifiedDate":"2018-08-07"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":67,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":68,"author":{"gitId":"-"},"content":" * Adds the given person.","lastModifiedDate":"2018-08-07"},{"lineNumber":69,"author":{"gitId":"-"},"content":" * {@code person} must not already exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":70,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":71,"author":{"gitId":"-"},"content":" void addPerson(Person person);","lastModifiedDate":"2018-08-07"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":73,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * Replaces the given person {@code target} with {@code editedPerson}.","lastModifiedDate":"2017-06-07"},{"lineNumber":75,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":76,"author":{"gitId":"-"},"content":" * The person identity of {@code editedPerson} must not be the same as another existing person in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":77,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" void setPerson(Person target, Person editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" /** Returns an unmodifiable view of the filtered person list */","lastModifiedDate":"2017-09-01"},{"lineNumber":81,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":83,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-05"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * Updates the filter of the filtered person list to filter by the given {@code predicate}.","lastModifiedDate":"2017-08-05"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2017-08-05"},{"lineNumber":86,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05"},{"lineNumber":87,"author":{"gitId":"-"},"content":" void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate);","lastModifiedDate":"2018-01-10"},{"lineNumber":88,"author":{"gitId":"Jawad280"},"content":" Person choosePersonToView(Predicate\u003cPerson\u003e predicate);","lastModifiedDate":"2024-02-26"},{"lineNumber":89,"author":{"gitId":"chenyixin0"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":90,"author":{"gitId":"chenyixin0"},"content":" FilteredList\u003cPerson\u003e generateNewFilteredPersonList(Predicate\u003cPerson\u003e predicate);","lastModifiedDate":"2024-02-29"},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"chenyixin0":3,"Jawad280":1,"-":87}},{"path":"src/main/java/seedu/address/model/ModelManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-08-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2016-08-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Represents the in-memory model of the address book data.","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class ModelManager implements Model {","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ModelManager.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final AddressBook addressBook;","lastModifiedDate":"2019-01-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final UserPrefs userPrefs;","lastModifiedDate":"2018-12-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final FilteredList\u003cPerson\u003e filteredPersons;","lastModifiedDate":"2018-01-10"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Initializes a ModelManager with the given addressBook and userPrefs.","lastModifiedDate":"2016-12-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public ModelManager(ReadOnlyAddressBook addressBook, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":" requireAllNonNull(addressBook, userPrefs);","lastModifiedDate":"2017-05-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" logger.fine(\"Initializing with address book: \" + addressBook + \" and user prefs \" + userPrefs);","lastModifiedDate":"2016-12-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" this.addressBook \u003d new AddressBook(addressBook);","lastModifiedDate":"2019-01-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":36,"author":{"gitId":"-"},"content":" filteredPersons \u003d new FilteredList\u003c\u003e(this.addressBook.getPersonList());","lastModifiedDate":"2019-01-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public ModelManager() {","lastModifiedDate":"2016-09-22"},{"lineNumber":40,"author":{"gitId":"-"},"content":" this(new AddressBook(), new UserPrefs());","lastModifiedDate":"2016-09-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d UserPrefs \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":47,"author":{"gitId":"-"},"content":" requireNonNull(userPrefs);","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" this.userPrefs.resetData(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return userPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return userPrefs.getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return userPrefs.getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d AddressBook \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook addressBook) {","lastModifiedDate":"2018-11-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" this.addressBook.resetData(addressBook);","lastModifiedDate":"2019-01-25"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2016-09-21"},{"lineNumber":87,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2019-01-25"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":92,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":93,"author":{"gitId":"-"},"content":" return addressBook.hasPerson(person);","lastModifiedDate":"2019-01-25"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-15"},{"lineNumber":98,"author":{"gitId":"-"},"content":" addressBook.removePerson(target);","lastModifiedDate":"2019-01-25"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":102,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":103,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2019-01-25"},{"lineNumber":104,"author":{"gitId":"-"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":109,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2017-06-07"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":" addressBook.setPerson(target, editedPerson);","lastModifiedDate":"2019-01-25"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Filtered Person List Accessors \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2016-10-12"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19"},{"lineNumber":117,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the list of {@code Person} backed by the internal list of","lastModifiedDate":"2018-01-10"},{"lineNumber":118,"author":{"gitId":"-"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2018-06-11"},{"lineNumber":119,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19"},{"lineNumber":120,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":121,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":122,"author":{"gitId":"-"},"content":" return filteredPersons;","lastModifiedDate":"2018-12-09"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":125,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":126,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10"},{"lineNumber":127,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05"},{"lineNumber":128,"author":{"gitId":"-"},"content":" filteredPersons.setPredicate(predicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":131,"author":{"gitId":"chenyixin0"},"content":" @Override","lastModifiedDate":"2024-02-29"},{"lineNumber":132,"author":{"gitId":"chenyixin0"},"content":" public FilteredList\u003cPerson\u003e generateNewFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2024-02-29"},{"lineNumber":133,"author":{"gitId":"chenyixin0"},"content":" requireNonNull(predicate);","lastModifiedDate":"2024-02-29"},{"lineNumber":134,"author":{"gitId":"chenyixin0"},"content":" return new FilteredList\u003c\u003e(filteredPersons, predicate);","lastModifiedDate":"2024-02-29"},{"lineNumber":135,"author":{"gitId":"chenyixin0"},"content":" //return filteredPersons;","lastModifiedDate":"2024-02-29"},{"lineNumber":136,"author":{"gitId":"chenyixin0"},"content":" }","lastModifiedDate":"2024-02-29"},{"lineNumber":137,"author":{"gitId":"chenyixin0"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":138,"author":{"gitId":"Jawad280"},"content":" @Override","lastModifiedDate":"2024-02-26"},{"lineNumber":139,"author":{"gitId":"Jawad280"},"content":" public Person choosePersonToView(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2024-02-26"},{"lineNumber":140,"author":{"gitId":"Jawad280"},"content":" requireNonNull(predicate);","lastModifiedDate":"2024-02-26"},{"lineNumber":141,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":142,"author":{"gitId":"Jawad280"},"content":" for (Person p : filteredPersons) {","lastModifiedDate":"2024-02-26"},{"lineNumber":143,"author":{"gitId":"Jawad280"},"content":" if (predicate.test(p)) {","lastModifiedDate":"2024-02-26"},{"lineNumber":144,"author":{"gitId":"Jawad280"},"content":" return p;","lastModifiedDate":"2024-02-26"},{"lineNumber":145,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":146,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":147,"author":{"gitId":"Jawad280"},"content":" return null;","lastModifiedDate":"2024-02-26"},{"lineNumber":148,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":150,"author":{"gitId":"chenyixin0"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":151,"author":{"gitId":"chenyixin0"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":152,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-31"},{"lineNumber":153,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13"},{"lineNumber":154,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":155,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31"},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":158,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31"},{"lineNumber":159,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":160,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-31"},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":163,"author":{"gitId":"-"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":164,"author":{"gitId":"-"},"content":" return addressBook.equals(otherModelManager.addressBook)","lastModifiedDate":"2023-07-13"},{"lineNumber":165,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13"},{"lineNumber":166,"author":{"gitId":"-"},"content":" \u0026\u0026 filteredPersons.equals(otherModelManager.filteredPersons);","lastModifiedDate":"2023-07-13"},{"lineNumber":167,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":168,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"chenyixin0":9,"Jawad280":11,"-":148}},{"path":"src/main/java/seedu/address/model/person/Address.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2016-08-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-02-26"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * Represents a Person\u0027s address in the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class Address {","lastModifiedDate":"2016-09-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Addresses can take any values, and it should not be blank\";","lastModifiedDate":"2024-02-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2024-02-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2024-02-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2024-02-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-02-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d \"[^\\\\s].*\";","lastModifiedDate":"2024-02-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public final String value;","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Constructs an {@code Address}.","lastModifiedDate":"2017-05-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * @param address A valid address.","lastModifiedDate":"2017-05-30"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public Address(String address) {","lastModifiedDate":"2017-05-30"},{"lineNumber":26,"author":{"gitId":"ashleygoh1"},"content":" if (address.isEmpty()) {","lastModifiedDate":"2024-02-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":" value \u003d address;","lastModifiedDate":"2018-08-14"},{"lineNumber":28,"author":{"gitId":"ashleygoh1"},"content":" } else {","lastModifiedDate":"2024-02-26"},{"lineNumber":29,"author":{"gitId":"ashleygoh1"},"content":" checkArgument(isValidAddress(address), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-26"},{"lineNumber":30,"author":{"gitId":"ashleygoh1"},"content":" value \u003d address;","lastModifiedDate":"2024-02-26"},{"lineNumber":31,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-02-26"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid email.","lastModifiedDate":"2024-02-26"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-02-26"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static boolean isValidAddress(String test) {","lastModifiedDate":"2024-02-26"},{"lineNumber":38,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-02-26"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" return value;","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" if (!(other instanceof Address)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" Address otherAddress \u003d (Address) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return value.equals(otherAddress.value);","lastModifiedDate":"2023-07-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return value.hashCode();","lastModifiedDate":"2016-08-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"ashleygoh1":5,"-":61}},{"path":"src/main/java/seedu/address/model/person/InternDuration.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ashleygoh1"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-02-25"},{"lineNumber":2,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":3,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-02-25"},{"lineNumber":4,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":5,"author":{"gitId":"ashleygoh1"},"content":"/**","lastModifiedDate":"2024-02-25"},{"lineNumber":6,"author":{"gitId":"ashleygoh1"},"content":" * Represents a Person\u0027s Intern Duration in the address book.","lastModifiedDate":"2024-02-25"},{"lineNumber":7,"author":{"gitId":"ashleygoh1"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidInternDuration(String)}","lastModifiedDate":"2024-02-25"},{"lineNumber":8,"author":{"gitId":"ashleygoh1"},"content":" */","lastModifiedDate":"2024-02-25"},{"lineNumber":9,"author":{"gitId":"ashleygoh1"},"content":"public class InternDuration {","lastModifiedDate":"2024-02-25"},{"lineNumber":10,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":11,"author":{"gitId":"ashleygoh1"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Intern Duration can take any values, and it should not be blank\";","lastModifiedDate":"2024-02-25"},{"lineNumber":12,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":13,"author":{"gitId":"ashleygoh1"},"content":" /*","lastModifiedDate":"2024-02-25"},{"lineNumber":14,"author":{"gitId":"ashleygoh1"},"content":" * The first character of the intern duration must not be a whitespace,","lastModifiedDate":"2024-02-25"},{"lineNumber":15,"author":{"gitId":"ashleygoh1"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2024-02-25"},{"lineNumber":16,"author":{"gitId":"ashleygoh1"},"content":" */","lastModifiedDate":"2024-02-25"},{"lineNumber":17,"author":{"gitId":"ashleygoh1"},"content":" public static final String VALIDATION_REGEX \u003d \"[^\\\\s].*\";","lastModifiedDate":"2024-02-25"},{"lineNumber":18,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":19,"author":{"gitId":"ashleygoh1"},"content":" public final String value;","lastModifiedDate":"2024-02-25"},{"lineNumber":20,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":21,"author":{"gitId":"ashleygoh1"},"content":" /**","lastModifiedDate":"2024-02-25"},{"lineNumber":22,"author":{"gitId":"ashleygoh1"},"content":" * Constructs an {@code internDuration}.","lastModifiedDate":"2024-02-25"},{"lineNumber":23,"author":{"gitId":"ashleygoh1"},"content":" *","lastModifiedDate":"2024-02-25"},{"lineNumber":24,"author":{"gitId":"ashleygoh1"},"content":" * @param internDuration A valid intern duration.","lastModifiedDate":"2024-02-25"},{"lineNumber":25,"author":{"gitId":"ashleygoh1"},"content":" */","lastModifiedDate":"2024-02-25"},{"lineNumber":26,"author":{"gitId":"ashleygoh1"},"content":" public InternDuration(String internDuration) {","lastModifiedDate":"2024-02-25"},{"lineNumber":27,"author":{"gitId":"ashleygoh1"},"content":" checkArgument(isValidInternDuration(internDuration), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-25"},{"lineNumber":28,"author":{"gitId":"ashleygoh1"},"content":" value \u003d internDuration;","lastModifiedDate":"2024-02-25"},{"lineNumber":29,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":30,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":31,"author":{"gitId":"ashleygoh1"},"content":" /**","lastModifiedDate":"2024-02-25"},{"lineNumber":32,"author":{"gitId":"ashleygoh1"},"content":" * Returns true if a given string is a valid intern duration.","lastModifiedDate":"2024-02-25"},{"lineNumber":33,"author":{"gitId":"ashleygoh1"},"content":" */","lastModifiedDate":"2024-02-25"},{"lineNumber":34,"author":{"gitId":"ashleygoh1"},"content":" public static boolean isValidInternDuration(String test) {","lastModifiedDate":"2024-02-25"},{"lineNumber":35,"author":{"gitId":"ashleygoh1"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-02-25"},{"lineNumber":36,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":37,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":38,"author":{"gitId":"ashleygoh1"},"content":" @Override","lastModifiedDate":"2024-02-25"},{"lineNumber":39,"author":{"gitId":"ashleygoh1"},"content":" public String toString() {","lastModifiedDate":"2024-02-25"},{"lineNumber":40,"author":{"gitId":"ashleygoh1"},"content":" return value;","lastModifiedDate":"2024-02-25"},{"lineNumber":41,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":42,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":43,"author":{"gitId":"ashleygoh1"},"content":" @Override","lastModifiedDate":"2024-02-25"},{"lineNumber":44,"author":{"gitId":"ashleygoh1"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-02-25"},{"lineNumber":45,"author":{"gitId":"ashleygoh1"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-02-25"},{"lineNumber":46,"author":{"gitId":"ashleygoh1"},"content":" return true;","lastModifiedDate":"2024-02-25"},{"lineNumber":47,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":48,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":49,"author":{"gitId":"ashleygoh1"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-02-25"},{"lineNumber":50,"author":{"gitId":"ashleygoh1"},"content":" if (!(other instanceof InternDuration)) {","lastModifiedDate":"2024-02-25"},{"lineNumber":51,"author":{"gitId":"ashleygoh1"},"content":" return false;","lastModifiedDate":"2024-02-25"},{"lineNumber":52,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":53,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":54,"author":{"gitId":"ashleygoh1"},"content":" InternDuration otherInternDuration \u003d (InternDuration) other;","lastModifiedDate":"2024-02-25"},{"lineNumber":55,"author":{"gitId":"ashleygoh1"},"content":" return value.equals(otherInternDuration.value);","lastModifiedDate":"2024-02-25"},{"lineNumber":56,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":57,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":58,"author":{"gitId":"ashleygoh1"},"content":" @Override","lastModifiedDate":"2024-02-25"},{"lineNumber":59,"author":{"gitId":"ashleygoh1"},"content":" public int hashCode() {","lastModifiedDate":"2024-02-25"},{"lineNumber":60,"author":{"gitId":"ashleygoh1"},"content":" return value.hashCode();","lastModifiedDate":"2024-02-25"},{"lineNumber":61,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":62,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":63,"author":{"gitId":"ashleygoh1"},"content":"}","lastModifiedDate":"2024-02-25"}],"authorContributionMap":{"ashleygoh1":63}},{"path":"src/main/java/seedu/address/model/person/InterviewDate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ashleygoh1"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-02-25"},{"lineNumber":2,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":3,"author":{"gitId":"ashleygoh1"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-02-25"},{"lineNumber":4,"author":{"gitId":"ashleygoh1"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-25"},{"lineNumber":5,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":6,"author":{"gitId":"ashleygoh1"},"content":"/**","lastModifiedDate":"2024-02-25"},{"lineNumber":7,"author":{"gitId":"ashleygoh1"},"content":" * Represents a Person\u0027s interview date in the address book.","lastModifiedDate":"2024-02-26"},{"lineNumber":8,"author":{"gitId":"ashleygoh1"},"content":" */","lastModifiedDate":"2024-02-25"},{"lineNumber":9,"author":{"gitId":"ashleygoh1"},"content":"public class InterviewDate {","lastModifiedDate":"2024-02-25"},{"lineNumber":10,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":11,"author":{"gitId":"ashleygoh1"},"content":" public final LocalDateTime value;","lastModifiedDate":"2024-02-25"},{"lineNumber":12,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":13,"author":{"gitId":"ashleygoh1"},"content":" private DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"dd-MM-yyyy HHmm\");","lastModifiedDate":"2024-02-25"},{"lineNumber":14,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":15,"author":{"gitId":"ashleygoh1"},"content":" /**","lastModifiedDate":"2024-02-25"},{"lineNumber":16,"author":{"gitId":"ashleygoh1"},"content":" * Constructs an {@code interview date}.","lastModifiedDate":"2024-02-25"},{"lineNumber":17,"author":{"gitId":"ashleygoh1"},"content":" *","lastModifiedDate":"2024-02-25"},{"lineNumber":18,"author":{"gitId":"ashleygoh1"},"content":" * @param interviewDate A valid interview date.","lastModifiedDate":"2024-02-25"},{"lineNumber":19,"author":{"gitId":"ashleygoh1"},"content":" */","lastModifiedDate":"2024-02-25"},{"lineNumber":20,"author":{"gitId":"ashleygoh1"},"content":" public InterviewDate(String interviewDate) {","lastModifiedDate":"2024-02-25"},{"lineNumber":21,"author":{"gitId":"ashleygoh1"},"content":" if (interviewDate \u003d\u003d null) {","lastModifiedDate":"2024-02-26"},{"lineNumber":22,"author":{"gitId":"ashleygoh1"},"content":" value \u003d null;","lastModifiedDate":"2024-02-26"},{"lineNumber":23,"author":{"gitId":"ashleygoh1"},"content":" } else {","lastModifiedDate":"2024-02-26"},{"lineNumber":24,"author":{"gitId":"ashleygoh1"},"content":" value \u003d LocalDateTime.parse(interviewDate, formatter);","lastModifiedDate":"2024-02-25"},{"lineNumber":25,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":26,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":27,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":28,"author":{"gitId":"ashleygoh1"},"content":" @Override","lastModifiedDate":"2024-02-25"},{"lineNumber":29,"author":{"gitId":"ashleygoh1"},"content":" public String toString() {","lastModifiedDate":"2024-02-25"},{"lineNumber":30,"author":{"gitId":"ashleygoh1"},"content":" String str \u003d \"\";","lastModifiedDate":"2024-02-26"},{"lineNumber":31,"author":{"gitId":"ashleygoh1"},"content":" if (value !\u003d null) {","lastModifiedDate":"2024-02-26"},{"lineNumber":32,"author":{"gitId":"ashleygoh1"},"content":" str \u003d value.format(DateTimeFormatter.ofPattern(\"dd-MM-yyyy HHmm\"));","lastModifiedDate":"2024-02-26"},{"lineNumber":33,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":34,"author":{"gitId":"ashleygoh1"},"content":" return str;","lastModifiedDate":"2024-02-26"},{"lineNumber":35,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":36,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":37,"author":{"gitId":"ashleygoh1"},"content":" @Override","lastModifiedDate":"2024-02-25"},{"lineNumber":38,"author":{"gitId":"ashleygoh1"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-02-25"},{"lineNumber":39,"author":{"gitId":"ashleygoh1"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-02-25"},{"lineNumber":40,"author":{"gitId":"ashleygoh1"},"content":" return true;","lastModifiedDate":"2024-02-25"},{"lineNumber":41,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":42,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":43,"author":{"gitId":"ashleygoh1"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-02-25"},{"lineNumber":44,"author":{"gitId":"ashleygoh1"},"content":" // if (!(other instanceof InterviewDate)) {","lastModifiedDate":"2024-02-26"},{"lineNumber":45,"author":{"gitId":"ashleygoh1"},"content":" // return false;","lastModifiedDate":"2024-02-26"},{"lineNumber":46,"author":{"gitId":"ashleygoh1"},"content":" // }","lastModifiedDate":"2024-02-26"},{"lineNumber":47,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":48,"author":{"gitId":"ashleygoh1"},"content":" if (other \u003d\u003d null || getClass() !\u003d other.getClass()) {","lastModifiedDate":"2024-02-26"},{"lineNumber":49,"author":{"gitId":"ashleygoh1"},"content":" return false;","lastModifiedDate":"2024-02-26"},{"lineNumber":50,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":51,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":52,"author":{"gitId":"ashleygoh1"},"content":" InterviewDate otherInterviewDate \u003d (InterviewDate) other;","lastModifiedDate":"2024-02-25"},{"lineNumber":53,"author":{"gitId":"ashleygoh1"},"content":" if (value \u003d\u003d null) {","lastModifiedDate":"2024-02-26"},{"lineNumber":54,"author":{"gitId":"ashleygoh1"},"content":" return otherInterviewDate.value \u003d\u003d null;","lastModifiedDate":"2024-02-26"},{"lineNumber":55,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":56,"author":{"gitId":"ashleygoh1"},"content":" return value.equals(otherInterviewDate.value);","lastModifiedDate":"2024-02-25"},{"lineNumber":57,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":58,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":59,"author":{"gitId":"ashleygoh1"},"content":" @Override","lastModifiedDate":"2024-02-25"},{"lineNumber":60,"author":{"gitId":"ashleygoh1"},"content":" public int hashCode() {","lastModifiedDate":"2024-02-25"},{"lineNumber":61,"author":{"gitId":"ashleygoh1"},"content":" return value.hashCode();","lastModifiedDate":"2024-02-25"},{"lineNumber":62,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":63,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":64,"author":{"gitId":"ashleygoh1"},"content":"}","lastModifiedDate":"2024-02-25"}],"authorContributionMap":{"ashleygoh1":64}},{"path":"src/main/java/seedu/address/model/person/JobDescription.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ashleygoh1"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-02-25"},{"lineNumber":2,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":3,"author":{"gitId":"ashleygoh1"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-02-25"},{"lineNumber":4,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-02-25"},{"lineNumber":5,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":6,"author":{"gitId":"ashleygoh1"},"content":"/**","lastModifiedDate":"2024-02-25"},{"lineNumber":7,"author":{"gitId":"ashleygoh1"},"content":" * Represents a Person\u0027s job description in the address book.","lastModifiedDate":"2024-02-25"},{"lineNumber":8,"author":{"gitId":"ashleygoh1"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidJobDescription(String)}","lastModifiedDate":"2024-02-25"},{"lineNumber":9,"author":{"gitId":"ashleygoh1"},"content":" */","lastModifiedDate":"2024-02-25"},{"lineNumber":10,"author":{"gitId":"ashleygoh1"},"content":"public class JobDescription {","lastModifiedDate":"2024-02-25"},{"lineNumber":11,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":12,"author":{"gitId":"ashleygoh1"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Job Description can take any values, and it should not be blank\";","lastModifiedDate":"2024-02-25"},{"lineNumber":13,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":14,"author":{"gitId":"ashleygoh1"},"content":" /*","lastModifiedDate":"2024-02-25"},{"lineNumber":15,"author":{"gitId":"ashleygoh1"},"content":" * The first character of the job description must not be a whitespace,","lastModifiedDate":"2024-02-25"},{"lineNumber":16,"author":{"gitId":"ashleygoh1"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2024-02-25"},{"lineNumber":17,"author":{"gitId":"ashleygoh1"},"content":" */","lastModifiedDate":"2024-02-25"},{"lineNumber":18,"author":{"gitId":"ashleygoh1"},"content":" public static final String VALIDATION_REGEX \u003d \"\\\\S.*\";","lastModifiedDate":"2024-02-25"},{"lineNumber":19,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":20,"author":{"gitId":"ashleygoh1"},"content":" public final String value;","lastModifiedDate":"2024-02-25"},{"lineNumber":21,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":22,"author":{"gitId":"ashleygoh1"},"content":" /**","lastModifiedDate":"2024-02-25"},{"lineNumber":23,"author":{"gitId":"ashleygoh1"},"content":" * Constructs an {@code Job Description}.","lastModifiedDate":"2024-02-25"},{"lineNumber":24,"author":{"gitId":"ashleygoh1"},"content":" *","lastModifiedDate":"2024-02-25"},{"lineNumber":25,"author":{"gitId":"ashleygoh1"},"content":" * @param jobDescription A valid Job Description.","lastModifiedDate":"2024-02-25"},{"lineNumber":26,"author":{"gitId":"ashleygoh1"},"content":" */","lastModifiedDate":"2024-02-25"},{"lineNumber":27,"author":{"gitId":"ashleygoh1"},"content":" public JobDescription(String jobDescription) {","lastModifiedDate":"2024-02-25"},{"lineNumber":28,"author":{"gitId":"ashleygoh1"},"content":" requireNonNull(jobDescription);","lastModifiedDate":"2024-02-25"},{"lineNumber":29,"author":{"gitId":"ashleygoh1"},"content":" checkArgument(isValidJobDescription(jobDescription), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-25"},{"lineNumber":30,"author":{"gitId":"ashleygoh1"},"content":" value \u003d jobDescription;","lastModifiedDate":"2024-02-25"},{"lineNumber":31,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":32,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":33,"author":{"gitId":"ashleygoh1"},"content":" /**","lastModifiedDate":"2024-02-25"},{"lineNumber":34,"author":{"gitId":"ashleygoh1"},"content":" * Returns true if a given string is a valid job description.","lastModifiedDate":"2024-02-25"},{"lineNumber":35,"author":{"gitId":"ashleygoh1"},"content":" */","lastModifiedDate":"2024-02-25"},{"lineNumber":36,"author":{"gitId":"ashleygoh1"},"content":" public static boolean isValidJobDescription(String test) {","lastModifiedDate":"2024-02-25"},{"lineNumber":37,"author":{"gitId":"ashleygoh1"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-02-25"},{"lineNumber":38,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":39,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":40,"author":{"gitId":"ashleygoh1"},"content":" @Override","lastModifiedDate":"2024-02-25"},{"lineNumber":41,"author":{"gitId":"ashleygoh1"},"content":" public String toString() {","lastModifiedDate":"2024-02-25"},{"lineNumber":42,"author":{"gitId":"ashleygoh1"},"content":" return value;","lastModifiedDate":"2024-02-25"},{"lineNumber":43,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":44,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":45,"author":{"gitId":"ashleygoh1"},"content":" @Override","lastModifiedDate":"2024-02-25"},{"lineNumber":46,"author":{"gitId":"ashleygoh1"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-02-25"},{"lineNumber":47,"author":{"gitId":"ashleygoh1"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-02-25"},{"lineNumber":48,"author":{"gitId":"ashleygoh1"},"content":" return true;","lastModifiedDate":"2024-02-25"},{"lineNumber":49,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":50,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":51,"author":{"gitId":"ashleygoh1"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-02-25"},{"lineNumber":52,"author":{"gitId":"ashleygoh1"},"content":" if (!(other instanceof JobDescription)) {","lastModifiedDate":"2024-02-25"},{"lineNumber":53,"author":{"gitId":"ashleygoh1"},"content":" return false;","lastModifiedDate":"2024-02-25"},{"lineNumber":54,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":55,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":56,"author":{"gitId":"ashleygoh1"},"content":" JobDescription otherJobDescription \u003d (JobDescription) other;","lastModifiedDate":"2024-02-25"},{"lineNumber":57,"author":{"gitId":"ashleygoh1"},"content":" return value.equals(otherJobDescription.value);","lastModifiedDate":"2024-02-25"},{"lineNumber":58,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":59,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":60,"author":{"gitId":"ashleygoh1"},"content":" @Override","lastModifiedDate":"2024-02-25"},{"lineNumber":61,"author":{"gitId":"ashleygoh1"},"content":" public int hashCode() {","lastModifiedDate":"2024-02-25"},{"lineNumber":62,"author":{"gitId":"ashleygoh1"},"content":" return value.hashCode();","lastModifiedDate":"2024-02-25"},{"lineNumber":63,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":64,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":65,"author":{"gitId":"ashleygoh1"},"content":"}","lastModifiedDate":"2024-02-25"}],"authorContributionMap":{"ashleygoh1":65}},{"path":"src/main/java/seedu/address/model/person/NameContainsKeywordsPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2017-06-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-06-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * Tests that a {@code Person}\u0027s {@code Name} matches any of the keywords given.","lastModifiedDate":"2018-01-10"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class NameContainsKeywordsPredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2018-01-10"},{"lineNumber":13,"author":{"gitId":"-"},"content":" private final List\u003cString\u003e keywords;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public NameContainsKeywordsPredicate(List\u003cString\u003e keywords) {","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":" this.keywords \u003d keywords;","lastModifiedDate":"2017-06-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public boolean test(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":21,"author":{"gitId":"-"},"content":" return keywords.stream()","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"ashleygoh1"},"content":" .anyMatch(keyword -\u003e StringUtil.containsWordIgnoreCase(person.getCompanyName().fullName, keyword));","lastModifiedDate":"2024-02-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" if (!(other instanceof NameContainsKeywordsPredicate)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate otherNameContainsKeywordsPredicate \u003d (NameContainsKeywordsPredicate) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" return keywords.equals(otherNameContainsKeywordsPredicate.keywords);","lastModifiedDate":"2023-07-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this).add(\"keywords\", keywords).toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"ashleygoh1":1,"-":43}},{"path":"src/main/java/seedu/address/model/person/Person.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2016-08-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Represents a Person in the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2017-12-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"Jawad280"},"content":"public class Person implements Comparable\u003cPerson\u003e {","lastModifiedDate":"2024-02-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19"},{"lineNumber":17,"author":{"gitId":"ashleygoh1"},"content":" private final Name companyName;","lastModifiedDate":"2024-02-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private final Phone phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private final Email email;","lastModifiedDate":"2017-12-20"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final Address address;","lastModifiedDate":"2018-04-19"},{"lineNumber":23,"author":{"gitId":"ashleygoh1"},"content":" private final Tag tag;","lastModifiedDate":"2024-02-25"},{"lineNumber":24,"author":{"gitId":"ashleygoh1"},"content":" private final JobDescription jobDescription;","lastModifiedDate":"2024-02-25"},{"lineNumber":25,"author":{"gitId":"ashleygoh1"},"content":" private final InterviewDate interviewDate;","lastModifiedDate":"2024-02-25"},{"lineNumber":26,"author":{"gitId":"ashleygoh1"},"content":" private final InternDuration internDuration;","lastModifiedDate":"2024-02-25"},{"lineNumber":27,"author":{"gitId":"ashleygoh1"},"content":" private final Salary salary;","lastModifiedDate":"2024-02-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"ashleygoh1"},"content":" public Person(Name companyName, Phone phone, Email email, Address address, Tag tag,","lastModifiedDate":"2024-02-25"},{"lineNumber":33,"author":{"gitId":"ashleygoh1"},"content":" JobDescription jobDescription, InterviewDate interviewDate,","lastModifiedDate":"2024-02-25"},{"lineNumber":34,"author":{"gitId":"ashleygoh1"},"content":" InternDuration internDuration, Salary salary) {","lastModifiedDate":"2024-02-25"},{"lineNumber":35,"author":{"gitId":"ashleygoh1"},"content":" requireAllNonNull(companyName, phone, email, tag, jobDescription);","lastModifiedDate":"2024-02-26"},{"lineNumber":36,"author":{"gitId":"ashleygoh1"},"content":" this.companyName \u003d companyName;","lastModifiedDate":"2024-02-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":38,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20"},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-12-20"},{"lineNumber":40,"author":{"gitId":"ashleygoh1"},"content":" this.tag \u003d tag;","lastModifiedDate":"2024-02-25"},{"lineNumber":41,"author":{"gitId":"ashleygoh1"},"content":" this.jobDescription \u003d jobDescription;","lastModifiedDate":"2024-02-25"},{"lineNumber":42,"author":{"gitId":"ashleygoh1"},"content":" this.interviewDate \u003d interviewDate;","lastModifiedDate":"2024-02-25"},{"lineNumber":43,"author":{"gitId":"ashleygoh1"},"content":" this.internDuration \u003d internDuration;","lastModifiedDate":"2024-02-25"},{"lineNumber":44,"author":{"gitId":"ashleygoh1"},"content":" this.salary \u003d salary;","lastModifiedDate":"2024-02-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"ashleygoh1"},"content":" public Name getCompanyName() {","lastModifiedDate":"2024-02-25"},{"lineNumber":48,"author":{"gitId":"ashleygoh1"},"content":" return companyName;","lastModifiedDate":"2024-02-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2017-07-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":" return phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2017-12-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public Address getAddress() {","lastModifiedDate":"2017-07-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return address;","lastModifiedDate":"2017-12-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":63,"author":{"gitId":"ashleygoh1"},"content":" public Tag getTag() {","lastModifiedDate":"2024-02-25"},{"lineNumber":64,"author":{"gitId":"ashleygoh1"},"content":" return tag;","lastModifiedDate":"2024-02-25"},{"lineNumber":65,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":66,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":67,"author":{"gitId":"ashleygoh1"},"content":" public JobDescription getJobDescription() {","lastModifiedDate":"2024-02-25"},{"lineNumber":68,"author":{"gitId":"ashleygoh1"},"content":" return jobDescription;","lastModifiedDate":"2024-02-25"},{"lineNumber":69,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":70,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":71,"author":{"gitId":"ashleygoh1"},"content":" public InterviewDate getInterviewDate() {","lastModifiedDate":"2024-02-25"},{"lineNumber":72,"author":{"gitId":"ashleygoh1"},"content":" return interviewDate;","lastModifiedDate":"2024-02-25"},{"lineNumber":73,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":74,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":75,"author":{"gitId":"ashleygoh1"},"content":" public InternDuration getInternDuration() {","lastModifiedDate":"2024-02-25"},{"lineNumber":76,"author":{"gitId":"ashleygoh1"},"content":" return internDuration;","lastModifiedDate":"2024-02-25"},{"lineNumber":77,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":78,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":79,"author":{"gitId":"ashleygoh1"},"content":" public Salary getSalary() {","lastModifiedDate":"2024-02-25"},{"lineNumber":80,"author":{"gitId":"ashleygoh1"},"content":" return salary;","lastModifiedDate":"2024-02-25"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":83,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":84,"author":{"gitId":"ashleygoh1"},"content":" * Returns true if both inputs have the same company name and job description.","lastModifiedDate":"2024-02-25"},{"lineNumber":85,"author":{"gitId":"ashleygoh1"},"content":" * This defines a weaker notion of equality between two inputs.","lastModifiedDate":"2024-02-25"},{"lineNumber":86,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19"},{"lineNumber":88,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19"},{"lineNumber":89,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19"},{"lineNumber":93,"author":{"gitId":"ashleygoh1"},"content":" \u0026\u0026 otherPerson.getCompanyName().equals(getCompanyName())","lastModifiedDate":"2024-02-25"},{"lineNumber":94,"author":{"gitId":"ashleygoh1"},"content":" \u0026\u0026 otherPerson.getJobDescription().equals(getJobDescription());","lastModifiedDate":"2024-02-25"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":98,"author":{"gitId":"ashleygoh1"},"content":" * Returns true if both inputs have the same identity and data fields.","lastModifiedDate":"2024-02-25"},{"lineNumber":99,"author":{"gitId":"ashleygoh1"},"content":" * This defines a stronger notion of equality between two inputs.","lastModifiedDate":"2024-02-25"},{"lineNumber":100,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":102,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":103,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10"},{"lineNumber":104,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":107,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10"},{"lineNumber":109,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":112,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10"},{"lineNumber":113,"author":{"gitId":"ashleygoh1"},"content":" return companyName.equals(otherPerson.companyName)","lastModifiedDate":"2024-02-25"},{"lineNumber":114,"author":{"gitId":"-"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":" \u0026\u0026 address.equals(otherPerson.address)","lastModifiedDate":"2023-07-13"},{"lineNumber":117,"author":{"gitId":"ashleygoh1"},"content":" \u0026\u0026 tag.equals(otherPerson.tag)","lastModifiedDate":"2024-02-25"},{"lineNumber":118,"author":{"gitId":"ashleygoh1"},"content":" \u0026\u0026 jobDescription.equals(otherPerson.jobDescription)","lastModifiedDate":"2024-02-25"},{"lineNumber":119,"author":{"gitId":"ashleygoh1"},"content":" \u0026\u0026 interviewDate.equals(otherPerson.interviewDate)","lastModifiedDate":"2024-02-25"},{"lineNumber":120,"author":{"gitId":"ashleygoh1"},"content":" \u0026\u0026 internDuration.equals(otherPerson.internDuration)","lastModifiedDate":"2024-02-25"},{"lineNumber":121,"author":{"gitId":"ashleygoh1"},"content":" \u0026\u0026 salary.equals(otherPerson.salary);","lastModifiedDate":"2024-02-25"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":124,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":125,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":126,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24"},{"lineNumber":127,"author":{"gitId":"ashleygoh1"},"content":" return Objects.hash(companyName, phone, email, address, tag,","lastModifiedDate":"2024-02-25"},{"lineNumber":128,"author":{"gitId":"ashleygoh1"},"content":" jobDescription, interviewDate, internDuration, salary);","lastModifiedDate":"2024-02-25"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":131,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":132,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":133,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":134,"author":{"gitId":"ashleygoh1"},"content":" .add(\"name\", companyName)","lastModifiedDate":"2024-02-25"},{"lineNumber":135,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":138,"author":{"gitId":"ashleygoh1"},"content":" .add(\"tag\", tag)","lastModifiedDate":"2024-02-25"},{"lineNumber":139,"author":{"gitId":"ashleygoh1"},"content":" .add(\"job description\", jobDescription)","lastModifiedDate":"2024-02-25"},{"lineNumber":140,"author":{"gitId":"ashleygoh1"},"content":" .add(\"interview date\", interviewDate)","lastModifiedDate":"2024-02-25"},{"lineNumber":141,"author":{"gitId":"ashleygoh1"},"content":" .add(\"intern duration\", internDuration)","lastModifiedDate":"2024-02-25"},{"lineNumber":142,"author":{"gitId":"ashleygoh1"},"content":" .add(\"salary\", salary)","lastModifiedDate":"2024-02-25"},{"lineNumber":143,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":145,"author":{"gitId":"Jawad280"},"content":" @Override","lastModifiedDate":"2024-02-26"},{"lineNumber":146,"author":{"gitId":"Jawad280"},"content":" public int compareTo(Person otherPerson) {","lastModifiedDate":"2024-02-26"},{"lineNumber":147,"author":{"gitId":"Jawad280"},"content":" if (this.interviewDate.value !\u003d null \u0026\u0026 otherPerson.getInterviewDate().value !\u003d null) {","lastModifiedDate":"2024-02-26"},{"lineNumber":148,"author":{"gitId":"Jawad280"},"content":" return this.interviewDate.value.compareTo(otherPerson.getInterviewDate().value);","lastModifiedDate":"2024-02-26"},{"lineNumber":149,"author":{"gitId":"Jawad280"},"content":" } else if (this.interviewDate.value !\u003d null) {","lastModifiedDate":"2024-02-26"},{"lineNumber":150,"author":{"gitId":"Jawad280"},"content":" return -1;","lastModifiedDate":"2024-02-26"},{"lineNumber":151,"author":{"gitId":"Jawad280"},"content":" } else if (otherPerson.getInterviewDate().value !\u003d null) {","lastModifiedDate":"2024-02-26"},{"lineNumber":152,"author":{"gitId":"Jawad280"},"content":" return 1;","lastModifiedDate":"2024-02-26"},{"lineNumber":153,"author":{"gitId":"Jawad280"},"content":" } else {","lastModifiedDate":"2024-02-26"},{"lineNumber":154,"author":{"gitId":"Jawad280"},"content":" return 0;","lastModifiedDate":"2024-02-26"},{"lineNumber":155,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":156,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":158,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"Jawad280":13,"ashleygoh1":56,"-":89}},{"path":"src/main/java/seedu/address/model/person/Salary.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ashleygoh1"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-02-25"},{"lineNumber":2,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":3,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-02-25"},{"lineNumber":4,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":5,"author":{"gitId":"ashleygoh1"},"content":"/**","lastModifiedDate":"2024-02-25"},{"lineNumber":6,"author":{"gitId":"ashleygoh1"},"content":" * Represents a Person\u0027s salary in the address book.","lastModifiedDate":"2024-02-25"},{"lineNumber":7,"author":{"gitId":"ashleygoh1"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidSalary(String)}","lastModifiedDate":"2024-02-25"},{"lineNumber":8,"author":{"gitId":"ashleygoh1"},"content":" */","lastModifiedDate":"2024-02-25"},{"lineNumber":9,"author":{"gitId":"ashleygoh1"},"content":"public class Salary {","lastModifiedDate":"2024-02-25"},{"lineNumber":10,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":11,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":12,"author":{"gitId":"ashleygoh1"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Salary should only contain numbers\";","lastModifiedDate":"2024-02-26"},{"lineNumber":13,"author":{"gitId":"ashleygoh1"},"content":" public static final String VALIDATION_REGEX \u003d \"[1-9]\\\\d*\";","lastModifiedDate":"2024-02-26"},{"lineNumber":14,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":15,"author":{"gitId":"ashleygoh1"},"content":" public final String value;","lastModifiedDate":"2024-02-25"},{"lineNumber":16,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":17,"author":{"gitId":"ashleygoh1"},"content":" /**","lastModifiedDate":"2024-02-25"},{"lineNumber":18,"author":{"gitId":"ashleygoh1"},"content":" * Constructs a {@code Salary}.","lastModifiedDate":"2024-02-25"},{"lineNumber":19,"author":{"gitId":"ashleygoh1"},"content":" *","lastModifiedDate":"2024-02-25"},{"lineNumber":20,"author":{"gitId":"ashleygoh1"},"content":" * @param salary A valid salary.","lastModifiedDate":"2024-02-25"},{"lineNumber":21,"author":{"gitId":"ashleygoh1"},"content":" */","lastModifiedDate":"2024-02-25"},{"lineNumber":22,"author":{"gitId":"ashleygoh1"},"content":" public Salary(String salary) {","lastModifiedDate":"2024-02-25"},{"lineNumber":23,"author":{"gitId":"ashleygoh1"},"content":" checkArgument(isValidSalary(salary), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-25"},{"lineNumber":24,"author":{"gitId":"ashleygoh1"},"content":" value \u003d salary;","lastModifiedDate":"2024-02-25"},{"lineNumber":25,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":26,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":27,"author":{"gitId":"ashleygoh1"},"content":" /**","lastModifiedDate":"2024-02-25"},{"lineNumber":28,"author":{"gitId":"ashleygoh1"},"content":" * Returns true if a given string is a valid phone number.","lastModifiedDate":"2024-02-25"},{"lineNumber":29,"author":{"gitId":"ashleygoh1"},"content":" */","lastModifiedDate":"2024-02-25"},{"lineNumber":30,"author":{"gitId":"ashleygoh1"},"content":" public static boolean isValidSalary(String test) {","lastModifiedDate":"2024-02-25"},{"lineNumber":31,"author":{"gitId":"ashleygoh1"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-02-25"},{"lineNumber":32,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":33,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":34,"author":{"gitId":"ashleygoh1"},"content":" @Override","lastModifiedDate":"2024-02-25"},{"lineNumber":35,"author":{"gitId":"ashleygoh1"},"content":" public String toString() {","lastModifiedDate":"2024-02-25"},{"lineNumber":36,"author":{"gitId":"ashleygoh1"},"content":" return value;","lastModifiedDate":"2024-02-25"},{"lineNumber":37,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":38,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":39,"author":{"gitId":"ashleygoh1"},"content":" @Override","lastModifiedDate":"2024-02-25"},{"lineNumber":40,"author":{"gitId":"ashleygoh1"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-02-25"},{"lineNumber":41,"author":{"gitId":"ashleygoh1"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-02-25"},{"lineNumber":42,"author":{"gitId":"ashleygoh1"},"content":" return true;","lastModifiedDate":"2024-02-25"},{"lineNumber":43,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":44,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":45,"author":{"gitId":"ashleygoh1"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-02-25"},{"lineNumber":46,"author":{"gitId":"ashleygoh1"},"content":" if (!(other instanceof Salary)) {","lastModifiedDate":"2024-02-25"},{"lineNumber":47,"author":{"gitId":"ashleygoh1"},"content":" return false;","lastModifiedDate":"2024-02-25"},{"lineNumber":48,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":49,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":50,"author":{"gitId":"ashleygoh1"},"content":" Salary otherSalary \u003d (Salary) other;","lastModifiedDate":"2024-02-25"},{"lineNumber":51,"author":{"gitId":"ashleygoh1"},"content":" return value.equals(otherSalary.value);","lastModifiedDate":"2024-02-25"},{"lineNumber":52,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":53,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":54,"author":{"gitId":"ashleygoh1"},"content":" @Override","lastModifiedDate":"2024-02-25"},{"lineNumber":55,"author":{"gitId":"ashleygoh1"},"content":" public int hashCode() {","lastModifiedDate":"2024-02-25"},{"lineNumber":56,"author":{"gitId":"ashleygoh1"},"content":" return value.hashCode();","lastModifiedDate":"2024-02-25"},{"lineNumber":57,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":58,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":59,"author":{"gitId":"ashleygoh1"},"content":"}","lastModifiedDate":"2024-02-25"}],"authorContributionMap":{"ashleygoh1":59}},{"path":"src/main/java/seedu/address/model/util/SampleDataUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.util;","lastModifiedDate":"2016-12-20"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-12-20"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-12-20"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-02-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-02-25"},{"lineNumber":11,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.InternDuration;","lastModifiedDate":"2024-02-25"},{"lineNumber":12,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.InterviewDate;","lastModifiedDate":"2024-02-25"},{"lineNumber":13,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.JobDescription;","lastModifiedDate":"2024-02-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-02-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-02-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-02-25"},{"lineNumber":17,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.Salary;","lastModifiedDate":"2024-02-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-14"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16"},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static Person[] getSamplePersons() {","lastModifiedDate":"2016-12-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":" return new Person[] {","lastModifiedDate":"2016-12-20"},{"lineNumber":26,"author":{"gitId":"ashleygoh1"},"content":" new Person(new Name(\"FoodPanda\"), new Phone(\"12345678\"), new Email(\"panda@food.com\"),","lastModifiedDate":"2024-02-25"},{"lineNumber":27,"author":{"gitId":"ashleygoh1"},"content":" new Address(\"CBD\"), new Tag(\"F\"), new JobDescription(\"Front End Intern\"),","lastModifiedDate":"2024-02-25"},{"lineNumber":28,"author":{"gitId":"ashleygoh1"},"content":" new InterviewDate(\"15-04-2024 0900\"), new InternDuration(\"6 months\"), new Salary(\"500\"))","lastModifiedDate":"2024-02-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20"},{"lineNumber":33,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07"},{"lineNumber":34,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20"},{"lineNumber":35,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":37,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2017-05-30"},{"lineNumber":44,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2018-01-21"},{"lineNumber":46,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20"}],"authorContributionMap":{"ashleygoh1":7,"-":42}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedPerson.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-02-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-02-25"},{"lineNumber":9,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.InternDuration;","lastModifiedDate":"2024-02-25"},{"lineNumber":10,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.InterviewDate;","lastModifiedDate":"2024-02-25"},{"lineNumber":11,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.JobDescription;","lastModifiedDate":"2024-02-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-02-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-02-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-02-25"},{"lineNumber":15,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.Salary;","lastModifiedDate":"2024-02-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Jackson-friendly version of {@link Person}.","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"class JsonAdaptedPerson {","lastModifiedDate":"2018-12-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"ashleygoh1"},"content":" private final String companyName;","lastModifiedDate":"2024-02-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final String phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final String address;","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"ashleygoh1"},"content":" private final String tag;","lastModifiedDate":"2024-02-25"},{"lineNumber":30,"author":{"gitId":"ashleygoh1"},"content":" private final String jobDescription;","lastModifiedDate":"2024-02-25"},{"lineNumber":31,"author":{"gitId":"ashleygoh1"},"content":" private final String interviewDate;","lastModifiedDate":"2024-02-25"},{"lineNumber":32,"author":{"gitId":"ashleygoh1"},"content":" private final String internDuration;","lastModifiedDate":"2024-02-25"},{"lineNumber":33,"author":{"gitId":"ashleygoh1"},"content":" private final String salary;","lastModifiedDate":"2024-02-25"},{"lineNumber":34,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given person details.","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"ashleygoh1"},"content":" public JsonAdaptedPerson(@JsonProperty(\"companyName\") String name, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2024-02-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @JsonProperty(\"email\") String email, @JsonProperty(\"address\") String address,","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"ashleygoh1"},"content":" @JsonProperty(\"tag\") String tag, @JsonProperty(\"jobDescription\") String jobDescription,","lastModifiedDate":"2024-02-25"},{"lineNumber":43,"author":{"gitId":"ashleygoh1"},"content":" @JsonProperty(\"interviewDate\") String interviewDate,","lastModifiedDate":"2024-02-25"},{"lineNumber":44,"author":{"gitId":"ashleygoh1"},"content":" @JsonProperty(\"internDuration\") String internDuration,","lastModifiedDate":"2024-02-25"},{"lineNumber":45,"author":{"gitId":"ashleygoh1"},"content":" @JsonProperty(\"salary\") String salary) {","lastModifiedDate":"2024-02-25"},{"lineNumber":46,"author":{"gitId":"ashleygoh1"},"content":" this.companyName \u003d name;","lastModifiedDate":"2024-02-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"ashleygoh1"},"content":" this.tag \u003d tag;","lastModifiedDate":"2024-02-25"},{"lineNumber":51,"author":{"gitId":"ashleygoh1"},"content":" this.jobDescription \u003d jobDescription;","lastModifiedDate":"2024-02-25"},{"lineNumber":52,"author":{"gitId":"ashleygoh1"},"content":" this.interviewDate \u003d interviewDate;","lastModifiedDate":"2024-02-25"},{"lineNumber":53,"author":{"gitId":"ashleygoh1"},"content":" this.internDuration \u003d internDuration;","lastModifiedDate":"2024-02-25"},{"lineNumber":54,"author":{"gitId":"ashleygoh1"},"content":" this.salary \u003d salary;","lastModifiedDate":"2024-02-25"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2018-08-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13"},{"lineNumber":61,"author":{"gitId":"ashleygoh1"},"content":" companyName \u003d source.getCompanyName().fullName;","lastModifiedDate":"2024-02-25"},{"lineNumber":62,"author":{"gitId":"-"},"content":" phone \u003d source.getPhone().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" address \u003d source.getAddress().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"ashleygoh1"},"content":" tag \u003d source.getTag().tagName;","lastModifiedDate":"2024-02-25"},{"lineNumber":66,"author":{"gitId":"ashleygoh1"},"content":" jobDescription \u003d source.getJobDescription().value;","lastModifiedDate":"2024-02-25"},{"lineNumber":67,"author":{"gitId":"ashleygoh1"},"content":" interviewDate \u003d source.getInterviewDate().toString();","lastModifiedDate":"2024-02-25"},{"lineNumber":68,"author":{"gitId":"ashleygoh1"},"content":" internDuration \u003d source.getInternDuration().value;","lastModifiedDate":"2024-02-25"},{"lineNumber":69,"author":{"gitId":"ashleygoh1"},"content":" salary \u003d source.getSalary().value;","lastModifiedDate":"2024-02-25"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":79,"author":{"gitId":"ashleygoh1"},"content":" if (companyName \u003d\u003d null) {","lastModifiedDate":"2024-02-25"},{"lineNumber":80,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":82,"author":{"gitId":"ashleygoh1"},"content":" if (!Name.isValidName(companyName)) {","lastModifiedDate":"2024-02-25"},{"lineNumber":83,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"ashleygoh1"},"content":" final Name modelCompanyName \u003d new Name(companyName);","lastModifiedDate":"2024-02-25"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":" if (address \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":" final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2018-08-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":108,"author":{"gitId":"ashleygoh1"},"content":" if (tag \u003d\u003d null) {","lastModifiedDate":"2024-02-25"},{"lineNumber":109,"author":{"gitId":"ashleygoh1"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Tag.class.getSimpleName()));","lastModifiedDate":"2024-02-25"},{"lineNumber":110,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":111,"author":{"gitId":"ashleygoh1"},"content":" if (!Tag.isValidTagName(tag)) {","lastModifiedDate":"2024-02-25"},{"lineNumber":112,"author":{"gitId":"ashleygoh1"},"content":" throw new IllegalValueException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-26"},{"lineNumber":113,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":114,"author":{"gitId":"ashleygoh1"},"content":" final Tag modelTag \u003d new Tag(tag);","lastModifiedDate":"2024-02-25"},{"lineNumber":115,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":116,"author":{"gitId":"ashleygoh1"},"content":" if (jobDescription \u003d\u003d null) {","lastModifiedDate":"2024-02-25"},{"lineNumber":117,"author":{"gitId":"ashleygoh1"},"content":" throw new IllegalValueException(","lastModifiedDate":"2024-02-25"},{"lineNumber":118,"author":{"gitId":"ashleygoh1"},"content":" String.format(MISSING_FIELD_MESSAGE_FORMAT, JobDescription.class.getSimpleName()));","lastModifiedDate":"2024-02-25"},{"lineNumber":119,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":120,"author":{"gitId":"ashleygoh1"},"content":" if (!JobDescription.isValidJobDescription(jobDescription)) {","lastModifiedDate":"2024-02-25"},{"lineNumber":121,"author":{"gitId":"ashleygoh1"},"content":" throw new IllegalValueException(JobDescription.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-25"},{"lineNumber":122,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":123,"author":{"gitId":"ashleygoh1"},"content":" final JobDescription modelJobDescription \u003d new JobDescription(jobDescription);","lastModifiedDate":"2024-02-25"},{"lineNumber":124,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":125,"author":{"gitId":"ashleygoh1"},"content":" final InterviewDate modelInterviewDate;","lastModifiedDate":"2024-02-26"},{"lineNumber":126,"author":{"gitId":"ashleygoh1"},"content":" if (interviewDate.isEmpty()) {","lastModifiedDate":"2024-02-26"},{"lineNumber":127,"author":{"gitId":"ashleygoh1"},"content":" modelInterviewDate \u003d new InterviewDate(null);","lastModifiedDate":"2024-02-26"},{"lineNumber":128,"author":{"gitId":"ashleygoh1"},"content":" } else {","lastModifiedDate":"2024-02-26"},{"lineNumber":129,"author":{"gitId":"ashleygoh1"},"content":" modelInterviewDate \u003d new InterviewDate(interviewDate);","lastModifiedDate":"2024-02-26"},{"lineNumber":130,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":131,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":132,"author":{"gitId":"ashleygoh1"},"content":" if (internDuration \u003d\u003d null) {","lastModifiedDate":"2024-02-25"},{"lineNumber":133,"author":{"gitId":"ashleygoh1"},"content":" throw new IllegalValueException(","lastModifiedDate":"2024-02-25"},{"lineNumber":134,"author":{"gitId":"ashleygoh1"},"content":" String.format(MISSING_FIELD_MESSAGE_FORMAT, InternDuration.class.getSimpleName()));","lastModifiedDate":"2024-02-25"},{"lineNumber":135,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":136,"author":{"gitId":"ashleygoh1"},"content":" if (!InternDuration.isValidInternDuration(internDuration)) {","lastModifiedDate":"2024-02-26"},{"lineNumber":137,"author":{"gitId":"ashleygoh1"},"content":" throw new IllegalValueException(InternDuration.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-25"},{"lineNumber":138,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":139,"author":{"gitId":"ashleygoh1"},"content":" final InternDuration modelInternDuration \u003d new InternDuration(internDuration);","lastModifiedDate":"2024-02-25"},{"lineNumber":140,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":141,"author":{"gitId":"ashleygoh1"},"content":" if (salary \u003d\u003d null) {","lastModifiedDate":"2024-02-25"},{"lineNumber":142,"author":{"gitId":"ashleygoh1"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Salary.class.getSimpleName()));","lastModifiedDate":"2024-02-25"},{"lineNumber":143,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":144,"author":{"gitId":"ashleygoh1"},"content":" if (!Salary.isValidSalary(salary)) {","lastModifiedDate":"2024-02-25"},{"lineNumber":145,"author":{"gitId":"ashleygoh1"},"content":" throw new IllegalValueException(Salary.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-26"},{"lineNumber":146,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":147,"author":{"gitId":"ashleygoh1"},"content":" final Salary modelSalary \u003d new Salary(salary);","lastModifiedDate":"2024-02-25"},{"lineNumber":148,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":149,"author":{"gitId":"ashleygoh1"},"content":" return new Person(modelCompanyName, modelPhone, modelEmail, modelAddress, modelTag,","lastModifiedDate":"2024-02-25"},{"lineNumber":150,"author":{"gitId":"ashleygoh1"},"content":" modelJobDescription, modelInterviewDate, modelInternDuration, modelSalary);","lastModifiedDate":"2024-02-25"},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":153,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"ashleygoh1":74,"-":79}},{"path":"src/main/java/seedu/address/ui/MainWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-06-16"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.event.ActionEvent;","lastModifiedDate":"2016-12-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-08-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.MenuItem;","lastModifiedDate":"2016-08-26"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.control.TextInputControl;","lastModifiedDate":"2016-12-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyCombination;","lastModifiedDate":"2016-08-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyEvent;","lastModifiedDate":"2016-12-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.scene.layout.StackPane;","lastModifiedDate":"2017-05-09"},{"lineNumber":12,"author":{"gitId":"Jawad280"},"content":"import javafx.scene.layout.VBox;","lastModifiedDate":"2024-02-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2016-09-28"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2017-06-16"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.Logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"Jawad280"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-02-26"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * The Main Window. Provides the basic application layout containing","lastModifiedDate":"2016-08-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * a menu bar and space where other JavaFX elements can be placed.","lastModifiedDate":"2016-08-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class MainWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-11-29"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"MainWindow.fxml\";","lastModifiedDate":"2016-08-18"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(getClass());","lastModifiedDate":"2018-08-14"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Stage primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // Independent Ui parts residing in this Ui container","lastModifiedDate":"2016-08-18"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private PersonListPanel personListPanel;","lastModifiedDate":"2016-08-18"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private ResultDisplay resultDisplay;","lastModifiedDate":"2018-12-09"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private HelpWindow helpWindow;","lastModifiedDate":"2018-03-15"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" private StackPane commandBoxPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":44,"author":{"gitId":"-"},"content":" private MenuItem helpMenuItem;","lastModifiedDate":"2016-08-18"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" private StackPane personListPanelPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":50,"author":{"gitId":"-"},"content":" private StackPane resultDisplayPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":" private StackPane statusbarPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":55,"author":{"gitId":"Jawad280"},"content":" @FXML","lastModifiedDate":"2024-02-26"},{"lineNumber":56,"author":{"gitId":"Jawad280"},"content":" private VBox viewPanelPlaceholder;","lastModifiedDate":"2024-03-11"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * Creates a {@code MainWindow} with the given {@code Stage} and {@code Logic}.","lastModifiedDate":"2020-05-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public MainWindow(Stage primaryStage, Logic logic) {","lastModifiedDate":"2018-12-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" super(FXML, primaryStage);","lastModifiedDate":"2017-11-29"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":" // Set dependencies","lastModifiedDate":"2016-09-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":" this.primaryStage \u003d primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":66,"author":{"gitId":"-"},"content":" this.logic \u003d logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":68,"author":{"gitId":"-"},"content":" // Configure the UI","lastModifiedDate":"2016-09-21"},{"lineNumber":69,"author":{"gitId":"-"},"content":" setWindowDefaultSize(logic.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":71,"author":{"gitId":"-"},"content":" setAccelerators();","lastModifiedDate":"2016-09-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":73,"author":{"gitId":"-"},"content":" helpWindow \u003d new HelpWindow();","lastModifiedDate":"2018-03-15"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public Stage getPrimaryStage() {","lastModifiedDate":"2016-12-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return primaryStage;","lastModifiedDate":"2016-12-24"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":" private void setAccelerators() {","lastModifiedDate":"2016-09-21"},{"lineNumber":81,"author":{"gitId":"-"},"content":" setAccelerator(helpMenuItem, KeyCombination.valueOf(\"F1\"));","lastModifiedDate":"2016-12-18"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":84,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * Sets the accelerator of a MenuItem.","lastModifiedDate":"2016-12-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * @param keyCombination the KeyCombination value of the accelerator","lastModifiedDate":"2016-12-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":88,"author":{"gitId":"-"},"content":" private void setAccelerator(MenuItem menuItem, KeyCombination keyCombination) {","lastModifiedDate":"2016-12-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":" menuItem.setAccelerator(keyCombination);","lastModifiedDate":"2016-12-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":91,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-12-18"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * TODO: the code below can be removed once the bug reported here","lastModifiedDate":"2016-12-18"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * https://bugs.openjdk.java.net/browse/JDK-8131666","lastModifiedDate":"2016-12-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * is fixed in later version of SDK.","lastModifiedDate":"2016-12-18"},{"lineNumber":95,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * According to the bug report, TextInputControl (TextField, TextArea) will","lastModifiedDate":"2016-12-18"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * consume function-key events. Because CommandBox contains a TextField, and","lastModifiedDate":"2016-12-18"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * ResultDisplay contains a TextArea, thus some accelerators (e.g F1) will","lastModifiedDate":"2016-12-18"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * not work when the focus is in them because the key event is consumed by","lastModifiedDate":"2016-12-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * the TextInputControl(s).","lastModifiedDate":"2016-12-18"},{"lineNumber":101,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * For now, we add following event filter to capture such key events and open","lastModifiedDate":"2016-12-18"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * help window purposely so to support accelerators even when focus is","lastModifiedDate":"2016-12-18"},{"lineNumber":104,"author":{"gitId":"-"},"content":" * in CommandBox or ResultDisplay.","lastModifiedDate":"2016-12-18"},{"lineNumber":105,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":106,"author":{"gitId":"-"},"content":" getRoot().addEventFilter(KeyEvent.KEY_PRESSED, event -\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":107,"author":{"gitId":"-"},"content":" if (event.getTarget() instanceof TextInputControl \u0026\u0026 keyCombination.match(event)) {","lastModifiedDate":"2016-12-18"},{"lineNumber":108,"author":{"gitId":"-"},"content":" menuItem.getOnAction().handle(new ActionEvent());","lastModifiedDate":"2016-12-18"},{"lineNumber":109,"author":{"gitId":"-"},"content":" event.consume();","lastModifiedDate":"2016-12-18"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":111,"author":{"gitId":"-"},"content":" });","lastModifiedDate":"2016-12-18"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":114,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":115,"author":{"gitId":"-"},"content":" * Fills up all the placeholders of this window.","lastModifiedDate":"2017-08-16"},{"lineNumber":116,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":117,"author":{"gitId":"-"},"content":" void fillInnerParts() {","lastModifiedDate":"2016-09-21"},{"lineNumber":118,"author":{"gitId":"-"},"content":" personListPanel \u003d new PersonListPanel(logic.getFilteredPersonList());","lastModifiedDate":"2019-01-25"},{"lineNumber":119,"author":{"gitId":"-"},"content":" personListPanelPlaceholder.getChildren().add(personListPanel.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":" resultDisplay \u003d new ResultDisplay();","lastModifiedDate":"2018-12-09"},{"lineNumber":122,"author":{"gitId":"-"},"content":" resultDisplayPlaceholder.getChildren().add(resultDisplay.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":" StatusBarFooter statusBarFooter \u003d new StatusBarFooter(logic.getAddressBookFilePath());","lastModifiedDate":"2019-01-25"},{"lineNumber":125,"author":{"gitId":"-"},"content":" statusbarPlaceholder.getChildren().add(statusBarFooter.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":127,"author":{"gitId":"-"},"content":" CommandBox commandBox \u003d new CommandBox(this::executeCommand);","lastModifiedDate":"2019-01-25"},{"lineNumber":128,"author":{"gitId":"-"},"content":" commandBoxPlaceholder.getChildren().add(commandBox.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":131,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":132,"author":{"gitId":"-"},"content":" * Sets the default size based on {@code guiSettings}.","lastModifiedDate":"2018-11-27"},{"lineNumber":133,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":134,"author":{"gitId":"-"},"content":" private void setWindowDefaultSize(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":135,"author":{"gitId":"-"},"content":" primaryStage.setHeight(guiSettings.getWindowHeight());","lastModifiedDate":"2018-11-27"},{"lineNumber":136,"author":{"gitId":"-"},"content":" primaryStage.setWidth(guiSettings.getWindowWidth());","lastModifiedDate":"2018-11-27"},{"lineNumber":137,"author":{"gitId":"-"},"content":" if (guiSettings.getWindowCoordinates() !\u003d null) {","lastModifiedDate":"2018-11-27"},{"lineNumber":138,"author":{"gitId":"-"},"content":" primaryStage.setX(guiSettings.getWindowCoordinates().getX());","lastModifiedDate":"2018-11-27"},{"lineNumber":139,"author":{"gitId":"-"},"content":" primaryStage.setY(guiSettings.getWindowCoordinates().getY());","lastModifiedDate":"2018-11-27"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":143,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":144,"author":{"gitId":"-"},"content":" * Opens the help window or focuses on it if it\u0027s already opened.","lastModifiedDate":"2018-03-15"},{"lineNumber":145,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":146,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":147,"author":{"gitId":"-"},"content":" public void handleHelp() {","lastModifiedDate":"2016-08-31"},{"lineNumber":148,"author":{"gitId":"-"},"content":" if (!helpWindow.isShowing()) {","lastModifiedDate":"2018-03-15"},{"lineNumber":149,"author":{"gitId":"-"},"content":" helpWindow.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":150,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-15"},{"lineNumber":151,"author":{"gitId":"-"},"content":" helpWindow.focus();","lastModifiedDate":"2018-03-15"},{"lineNumber":152,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":155,"author":{"gitId":"-"},"content":" void show() {","lastModifiedDate":"2016-10-15"},{"lineNumber":156,"author":{"gitId":"-"},"content":" primaryStage.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":159,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":160,"author":{"gitId":"-"},"content":" * Closes the application.","lastModifiedDate":"2016-08-18"},{"lineNumber":161,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":162,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":163,"author":{"gitId":"-"},"content":" private void handleExit() {","lastModifiedDate":"2016-08-18"},{"lineNumber":164,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(primaryStage.getWidth(), primaryStage.getHeight(),","lastModifiedDate":"2018-12-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":" (int) primaryStage.getX(), (int) primaryStage.getY());","lastModifiedDate":"2018-12-08"},{"lineNumber":166,"author":{"gitId":"-"},"content":" logic.setGuiSettings(guiSettings);","lastModifiedDate":"2018-12-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":" helpWindow.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":168,"author":{"gitId":"-"},"content":" primaryStage.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":170,"author":{"gitId":"Jawad280"},"content":" /**","lastModifiedDate":"2024-02-26"},{"lineNumber":171,"author":{"gitId":"Jawad280"},"content":" * Views the person on the View Panel.","lastModifiedDate":"2024-02-26"},{"lineNumber":172,"author":{"gitId":"Jawad280"},"content":" */","lastModifiedDate":"2024-02-26"},{"lineNumber":173,"author":{"gitId":"Jawad280"},"content":" @FXML","lastModifiedDate":"2024-02-26"},{"lineNumber":174,"author":{"gitId":"chenyixin0"},"content":" // private void handleView(Person p, int displayIndex) {","lastModifiedDate":"2024-02-29"},{"lineNumber":175,"author":{"gitId":"chenyixin0"},"content":" // PersonCard viewPanel \u003d new PersonCard(p, displayIndex);","lastModifiedDate":"2024-02-29"},{"lineNumber":176,"author":{"gitId":"chenyixin0"},"content":" // //ViewPanel viewPanel \u003d new ViewPanel(p);","lastModifiedDate":"2024-02-29"},{"lineNumber":177,"author":{"gitId":"chenyixin0"},"content":" // //viewPanelPlaceHolder.getChildren().clear();","lastModifiedDate":"2024-02-29"},{"lineNumber":178,"author":{"gitId":"chenyixin0"},"content":" // viewPanelPlaceHolder.getChildren().add(viewPanel.getRoot());","lastModifiedDate":"2024-02-29"},{"lineNumber":179,"author":{"gitId":"chenyixin0"},"content":" // }","lastModifiedDate":"2024-02-29"},{"lineNumber":180,"author":{"gitId":"chenyixin0"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":181,"author":{"gitId":"Jawad280"},"content":" // private void handleView(Person p) {","lastModifiedDate":"2024-03-11"},{"lineNumber":182,"author":{"gitId":"Jawad280"},"content":" // ViewPanel viewPanel \u003d new ViewPanel(p);","lastModifiedDate":"2024-03-11"},{"lineNumber":183,"author":{"gitId":"Jawad280"},"content":" // //viewPanelPlaceHolder.getChildren().clear();","lastModifiedDate":"2024-03-11"},{"lineNumber":184,"author":{"gitId":"Jawad280"},"content":" // VBox holder \u003d viewPanelPlaceHolder.getContent() \u003d\u003d null ? new VBox()","lastModifiedDate":"2024-03-11"},{"lineNumber":185,"author":{"gitId":"Jawad280"},"content":" // : (VBox) viewPanelPlaceHolder.getContent();","lastModifiedDate":"2024-03-11"},{"lineNumber":186,"author":{"gitId":"Jawad280"},"content":" // holder.getChildren().add(viewPanel.getRoot());","lastModifiedDate":"2024-03-11"},{"lineNumber":187,"author":{"gitId":"Jawad280"},"content":" // viewPanelPlaceHolder.setContent(holder);","lastModifiedDate":"2024-03-11"},{"lineNumber":188,"author":{"gitId":"Jawad280"},"content":" // }","lastModifiedDate":"2024-03-11"},{"lineNumber":189,"author":{"gitId":"chenyixin0"},"content":" private void handleView(Person p) {","lastModifiedDate":"2024-02-29"},{"lineNumber":190,"author":{"gitId":"chenyixin0"},"content":" ViewPanel viewPanel \u003d new ViewPanel(p);","lastModifiedDate":"2024-02-29"},{"lineNumber":191,"author":{"gitId":"Jawad280"},"content":" viewPanelPlaceholder.getChildren().add(viewPanel.getRoot());","lastModifiedDate":"2024-03-11"},{"lineNumber":192,"author":{"gitId":"chenyixin0"},"content":" }","lastModifiedDate":"2024-02-29"},{"lineNumber":193,"author":{"gitId":"chenyixin0"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":195,"author":{"gitId":"-"},"content":" public PersonListPanel getPersonListPanel() {","lastModifiedDate":"2016-08-25"},{"lineNumber":196,"author":{"gitId":"-"},"content":" return personListPanel;","lastModifiedDate":"2018-08-14"},{"lineNumber":197,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-25"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":199,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":200,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2018-12-09"},{"lineNumber":201,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09"},{"lineNumber":202,"author":{"gitId":"-"},"content":" * @see seedu.address.logic.Logic#execute(String)","lastModifiedDate":"2018-12-09"},{"lineNumber":203,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":204,"author":{"gitId":"-"},"content":" private CommandResult executeCommand(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2018-12-09"},{"lineNumber":205,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":206,"author":{"gitId":"Jawad280"},"content":" // viewPanelPlaceHolder.setContent(null);","lastModifiedDate":"2024-03-11"},{"lineNumber":207,"author":{"gitId":"Jawad280"},"content":" viewPanelPlaceholder.getChildren().clear();","lastModifiedDate":"2024-03-11"},{"lineNumber":208,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d logic.execute(commandText);","lastModifiedDate":"2018-12-09"},{"lineNumber":209,"author":{"gitId":"-"},"content":" logger.info(\"Result: \" + commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":210,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":212,"author":{"gitId":"-"},"content":" if (commandResult.isShowHelp()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":213,"author":{"gitId":"-"},"content":" handleHelp();","lastModifiedDate":"2018-12-09"},{"lineNumber":214,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":215,"author":{"gitId":"Jawad280"},"content":" if (commandResult.getViewPerson() !\u003d null) {","lastModifiedDate":"2024-02-26"},{"lineNumber":216,"author":{"gitId":"Jawad280"},"content":" Person p \u003d commandResult.getViewPerson();","lastModifiedDate":"2024-02-26"},{"lineNumber":217,"author":{"gitId":"chenyixin0"},"content":" handleView(p);","lastModifiedDate":"2024-02-29"},{"lineNumber":218,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":219,"author":{"gitId":"Jawad280"},"content":" if (commandResult.getViewList() !\u003d null) {","lastModifiedDate":"2024-03-11"},{"lineNumber":220,"author":{"gitId":"chenyixin0"},"content":" for (Person p : commandResult.getViewList()) {","lastModifiedDate":"2024-02-29"},{"lineNumber":221,"author":{"gitId":"chenyixin0"},"content":" handleView(p);","lastModifiedDate":"2024-02-29"},{"lineNumber":222,"author":{"gitId":"chenyixin0"},"content":" }","lastModifiedDate":"2024-02-29"},{"lineNumber":223,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":225,"author":{"gitId":"-"},"content":" if (commandResult.isExit()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":226,"author":{"gitId":"-"},"content":" handleExit();","lastModifiedDate":"2018-12-09"},{"lineNumber":227,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":229,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":230,"author":{"gitId":"-"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2018-12-09"},{"lineNumber":231,"author":{"gitId":"-"},"content":" logger.info(\"An error occurred while executing command: \" + commandText);","lastModifiedDate":"2023-06-13"},{"lineNumber":232,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(e.getMessage());","lastModifiedDate":"2018-12-09"},{"lineNumber":233,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2018-12-09"},{"lineNumber":234,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":235,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":236,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"chenyixin0":15,"Jawad280":24,"-":197}},{"path":"src/main/java/seedu/address/ui/PersonCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-09-21"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2016-09-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2016-09-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * An UI component that displays information of a {@code Person}.","lastModifiedDate":"2017-08-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class PersonCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":14,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"PersonListCard.fxml\";","lastModifiedDate":"2016-09-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2017-03-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2017-03-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2017-03-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * @see \u003ca href\u003d\"https://github.com/se-edu/addressbook-level4/issues/336\"\u003eThe issue on AddressBook level 4\u003c/a\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public final Person person;","lastModifiedDate":"2018-01-10"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private HBox cardPane;","lastModifiedDate":"2016-09-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private Label name;","lastModifiedDate":"2016-09-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Label id;","lastModifiedDate":"2016-09-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private Label phone;","lastModifiedDate":"2016-09-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private Label address;","lastModifiedDate":"2016-09-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private Label email;","lastModifiedDate":"2016-09-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":39,"author":{"gitId":"ashleygoh1"},"content":" private Label tags;","lastModifiedDate":"2024-02-25"},{"lineNumber":40,"author":{"gitId":"ashleygoh1"},"content":" @FXML","lastModifiedDate":"2024-02-25"},{"lineNumber":41,"author":{"gitId":"ashleygoh1"},"content":" private Label jobDescription;","lastModifiedDate":"2024-02-25"},{"lineNumber":42,"author":{"gitId":"ashleygoh1"},"content":" @FXML","lastModifiedDate":"2024-02-25"},{"lineNumber":43,"author":{"gitId":"ashleygoh1"},"content":" private Label interviewDate;","lastModifiedDate":"2024-02-25"},{"lineNumber":44,"author":{"gitId":"ashleygoh1"},"content":" @FXML","lastModifiedDate":"2024-02-25"},{"lineNumber":45,"author":{"gitId":"ashleygoh1"},"content":" private Label internDuration;","lastModifiedDate":"2024-02-25"},{"lineNumber":46,"author":{"gitId":"ashleygoh1"},"content":" @FXML","lastModifiedDate":"2024-02-25"},{"lineNumber":47,"author":{"gitId":"ashleygoh1"},"content":" private Label salary;","lastModifiedDate":"2024-02-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2020-05-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2018-01-10"},{"lineNumber":53,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2017-07-12"},{"lineNumber":55,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21"},{"lineNumber":56,"author":{"gitId":"ashleygoh1"},"content":" name.setText(person.getCompanyName().fullName);","lastModifiedDate":"2024-02-25"},{"lineNumber":57,"author":{"gitId":"-"},"content":" phone.setText(person.getPhone().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" address.setText(person.getAddress().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":" email.setText(person.getEmail().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":60,"author":{"gitId":"ashleygoh1"},"content":" tags.setText(person.getTag().tagName);","lastModifiedDate":"2024-02-25"},{"lineNumber":61,"author":{"gitId":"ashleygoh1"},"content":" jobDescription.setText(person.getJobDescription().value);","lastModifiedDate":"2024-02-25"},{"lineNumber":62,"author":{"gitId":"ashleygoh1"},"content":" interviewDate.setText(person.getInterviewDate().toString());","lastModifiedDate":"2024-02-25"},{"lineNumber":63,"author":{"gitId":"ashleygoh1"},"content":" internDuration.setText(person.getInternDuration().value);","lastModifiedDate":"2024-02-25"},{"lineNumber":64,"author":{"gitId":"ashleygoh1"},"content":" salary.setText(person.getSalary().value);","lastModifiedDate":"2024-02-25"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"ashleygoh1":15,"-":51}},{"path":"src/main/java/seedu/address/ui/ViewPanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Jawad280"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-02-26"},{"lineNumber":2,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":3,"author":{"gitId":"Jawad280"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-02-26"},{"lineNumber":4,"author":{"gitId":"Jawad280"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2024-02-26"},{"lineNumber":5,"author":{"gitId":"Jawad280"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-02-26"},{"lineNumber":6,"author":{"gitId":"Jawad280"},"content":"import javafx.scene.layout.VBox;","lastModifiedDate":"2024-02-26"},{"lineNumber":7,"author":{"gitId":"Jawad280"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-02-26"},{"lineNumber":8,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":9,"author":{"gitId":"Jawad280"},"content":"/**","lastModifiedDate":"2024-02-26"},{"lineNumber":10,"author":{"gitId":"Jawad280"},"content":" * A UI component that displays information of a {@code Person}.","lastModifiedDate":"2024-02-26"},{"lineNumber":11,"author":{"gitId":"Jawad280"},"content":" */","lastModifiedDate":"2024-02-26"},{"lineNumber":12,"author":{"gitId":"Jawad280"},"content":"public class ViewPanel extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-02-26"},{"lineNumber":13,"author":{"gitId":"Jawad280"},"content":" private static final String FXML \u003d \"ViewPanel.fxml\";","lastModifiedDate":"2024-02-26"},{"lineNumber":14,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":15,"author":{"gitId":"Jawad280"},"content":" public final Person person;","lastModifiedDate":"2024-02-26"},{"lineNumber":16,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":17,"author":{"gitId":"Jawad280"},"content":" @FXML","lastModifiedDate":"2024-02-26"},{"lineNumber":18,"author":{"gitId":"Jawad280"},"content":" private VBox viewPanel;","lastModifiedDate":"2024-02-26"},{"lineNumber":19,"author":{"gitId":"Jawad280"},"content":" @FXML","lastModifiedDate":"2024-02-26"},{"lineNumber":20,"author":{"gitId":"Jawad280"},"content":" private Label companyName;","lastModifiedDate":"2024-02-26"},{"lineNumber":21,"author":{"gitId":"Jawad280"},"content":" @FXML","lastModifiedDate":"2024-02-26"},{"lineNumber":22,"author":{"gitId":"Jawad280"},"content":" private Label jobDescription;","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"Jawad280"},"content":" @FXML","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"Jawad280"},"content":" private Label phone;","lastModifiedDate":"2024-02-26"},{"lineNumber":25,"author":{"gitId":"Jawad280"},"content":" @FXML","lastModifiedDate":"2024-02-26"},{"lineNumber":26,"author":{"gitId":"Jawad280"},"content":" private Label address;","lastModifiedDate":"2024-02-26"},{"lineNumber":27,"author":{"gitId":"Jawad280"},"content":" @FXML","lastModifiedDate":"2024-02-26"},{"lineNumber":28,"author":{"gitId":"Jawad280"},"content":" private Label email;","lastModifiedDate":"2024-02-26"},{"lineNumber":29,"author":{"gitId":"Jawad280"},"content":" @FXML","lastModifiedDate":"2024-02-26"},{"lineNumber":30,"author":{"gitId":"Jawad280"},"content":" private Label tag;","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"Jawad280"},"content":" @FXML","lastModifiedDate":"2024-02-26"},{"lineNumber":32,"author":{"gitId":"Jawad280"},"content":" private Label interviewDate;","lastModifiedDate":"2024-02-26"},{"lineNumber":33,"author":{"gitId":"Jawad280"},"content":" @FXML","lastModifiedDate":"2024-02-26"},{"lineNumber":34,"author":{"gitId":"Jawad280"},"content":" private Label internDuration;","lastModifiedDate":"2024-02-26"},{"lineNumber":35,"author":{"gitId":"Jawad280"},"content":" @FXML","lastModifiedDate":"2024-02-26"},{"lineNumber":36,"author":{"gitId":"Jawad280"},"content":" private Label salary;","lastModifiedDate":"2024-02-26"},{"lineNumber":37,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":38,"author":{"gitId":"Jawad280"},"content":" /**","lastModifiedDate":"2024-02-26"},{"lineNumber":39,"author":{"gitId":"Jawad280"},"content":" * Creates a {@code PersonCode} with the given {@code Person} to display.","lastModifiedDate":"2024-02-26"},{"lineNumber":40,"author":{"gitId":"Jawad280"},"content":" */","lastModifiedDate":"2024-02-26"},{"lineNumber":41,"author":{"gitId":"Jawad280"},"content":" public ViewPanel(Person person) {","lastModifiedDate":"2024-02-26"},{"lineNumber":42,"author":{"gitId":"Jawad280"},"content":" super(FXML);","lastModifiedDate":"2024-02-26"},{"lineNumber":43,"author":{"gitId":"Jawad280"},"content":" this.person \u003d person;","lastModifiedDate":"2024-02-26"},{"lineNumber":44,"author":{"gitId":"Jawad280"},"content":" companyName.setText(person.getCompanyName().fullName);","lastModifiedDate":"2024-02-26"},{"lineNumber":45,"author":{"gitId":"Jawad280"},"content":" jobDescription.setText(person.getJobDescription().value);","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"Jawad280"},"content":" phone.setText(person.getPhone().value);","lastModifiedDate":"2024-02-26"},{"lineNumber":47,"author":{"gitId":"Jawad280"},"content":" address.setText(person.getAddress().value);","lastModifiedDate":"2024-02-26"},{"lineNumber":48,"author":{"gitId":"Jawad280"},"content":" email.setText(person.getEmail().value);","lastModifiedDate":"2024-02-26"},{"lineNumber":49,"author":{"gitId":"Jawad280"},"content":" interviewDate.setText(\"Interview : \" + person.getInterviewDate().toString());","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"Jawad280"},"content":" tag.setText(person.getTag().tagName);","lastModifiedDate":"2024-03-11"},{"lineNumber":51,"author":{"gitId":"Jawad280"},"content":" internDuration.setText(person.getInternDuration().value);","lastModifiedDate":"2024-02-26"},{"lineNumber":52,"author":{"gitId":"Jawad280"},"content":" salary.setText(\"$\" + person.getSalary().value);","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":54,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-02-26"}],"authorContributionMap":{"Jawad280":54}},{"path":"src/main/resources/view/DarkTheme.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":".background {","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":" background-color: #383838; /* Used in the default.html file */","lastModifiedDate":"2017-03-02"},{"lineNumber":4,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":".label {","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":" -fx-text-fill: #555555;","lastModifiedDate":"2016-08-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":".label-bright {","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":".label-header {","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" -fx-font-size: 32pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":".text-field {","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" -fx-font-size: 12pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":".tab-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":".tab-pane .tab-header-area {","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" -fx-min-height: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" -fx-max-height: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":".table-view {","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" -fx-base: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" -fx-control-inner-background: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" -fx-table-cell-border-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" -fx-table-header-border-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" -fx-padding: 5;","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":".table-view .column-header-background {","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":".table-view .column-header, .table-view .filler {","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" -fx-size: 35;","lastModifiedDate":"2016-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" -fx-border-width: 0 0 1 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" -fx-border-color:","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" derive(-fx-base, 80%)","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" -fx-border-insets: 0 10 1 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":".table-view .column-header .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" -fx-font-size: 20pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" -fx-alignment: center-left;","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":".table-view:focused .table-row-cell:filled:focused:selected {","lastModifiedDate":"2016-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":".split-pane:horizontal .split-pane-divider {","lastModifiedDate":"2016-08-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02"},{"lineNumber":81,"author":{"gitId":"-"},"content":" -fx-border-color: transparent transparent transparent #4d4d4d;","lastModifiedDate":"2017-03-02"},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":84,"author":{"gitId":"-"},"content":".split-pane {","lastModifiedDate":"2016-08-15"},{"lineNumber":85,"author":{"gitId":"-"},"content":" -fx-border-radius: 1;","lastModifiedDate":"2016-08-15"},{"lineNumber":86,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2016-08-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":".list-view {","lastModifiedDate":"2017-03-02"},{"lineNumber":91,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":92,"author":{"gitId":"-"},"content":" -fx-padding: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":93,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2018-01-10"},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":96,"author":{"gitId":"-"},"content":".list-cell {","lastModifiedDate":"2016-08-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":" -fx-label-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":" -fx-graphic-text-gap : 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":".list-cell:filled:even {","lastModifiedDate":"2017-03-02"},{"lineNumber":103,"author":{"gitId":"-"},"content":" -fx-background-color: #3c3e3f;","lastModifiedDate":"2017-03-02"},{"lineNumber":104,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":106,"author":{"gitId":"-"},"content":".list-cell:filled:odd {","lastModifiedDate":"2017-03-02"},{"lineNumber":107,"author":{"gitId":"-"},"content":" -fx-background-color: #515658;","lastModifiedDate":"2017-03-02"},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":110,"author":{"gitId":"-"},"content":".list-cell:filled:selected {","lastModifiedDate":"2017-03-02"},{"lineNumber":111,"author":{"gitId":"-"},"content":" -fx-background-color: #424d5f;","lastModifiedDate":"2017-03-02"},{"lineNumber":112,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":114,"author":{"gitId":"-"},"content":".list-cell:filled:selected #cardPane {","lastModifiedDate":"2017-03-02"},{"lineNumber":115,"author":{"gitId":"-"},"content":" -fx-border-color: #3e7b91;","lastModifiedDate":"2017-03-02"},{"lineNumber":116,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02"},{"lineNumber":117,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":119,"author":{"gitId":"-"},"content":".list-cell .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":121,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":".cell_big_label {","lastModifiedDate":"2016-08-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":" -fx-font-size: 16px;","lastModifiedDate":"2016-08-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":".cell_small_label {","lastModifiedDate":"2016-08-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\";","lastModifiedDate":"2022-01-13"},{"lineNumber":131,"author":{"gitId":"-"},"content":" -fx-font-size: 13px;","lastModifiedDate":"2017-03-02"},{"lineNumber":132,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":".stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":136,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":137,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":".pane-with-border {","lastModifiedDate":"2017-05-15"},{"lineNumber":140,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-05-09"},{"lineNumber":141,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 10%);","lastModifiedDate":"2017-05-09"},{"lineNumber":142,"author":{"gitId":"-"},"content":" -fx-border-top-width: 1px;","lastModifiedDate":"2017-05-09"},{"lineNumber":143,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-09"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":145,"author":{"gitId":"-"},"content":".status-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":146,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2018-12-08"},{"lineNumber":147,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":149,"author":{"gitId":"-"},"content":".result-display {","lastModifiedDate":"2016-09-14"},{"lineNumber":150,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2017-03-02"},{"lineNumber":151,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":152,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02"},{"lineNumber":153,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":154,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":156,"author":{"gitId":"-"},"content":".result-display .label {","lastModifiedDate":"2016-09-14"},{"lineNumber":157,"author":{"gitId":"-"},"content":" -fx-text-fill: black !important;","lastModifiedDate":"2016-09-14"},{"lineNumber":158,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":160,"author":{"gitId":"-"},"content":".status-bar .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":162,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":163,"author":{"gitId":"-"},"content":" -fx-padding: 4px;","lastModifiedDate":"2018-12-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":" -fx-pref-height: 30px;","lastModifiedDate":"2018-12-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":".status-bar-with-border {","lastModifiedDate":"2016-08-08"},{"lineNumber":168,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":169,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15"},{"lineNumber":170,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08"},{"lineNumber":171,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":173,"author":{"gitId":"-"},"content":".status-bar-with-border .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":174,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":175,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":177,"author":{"gitId":"-"},"content":".grid-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":178,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":179,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":180,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08"},{"lineNumber":181,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":183,"author":{"gitId":"-"},"content":".grid-pane .stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":184,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":185,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":187,"author":{"gitId":"-"},"content":".context-menu {","lastModifiedDate":"2016-08-08"},{"lineNumber":188,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15"},{"lineNumber":189,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":191,"author":{"gitId":"-"},"content":".context-menu .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":192,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":193,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":195,"author":{"gitId":"-"},"content":".menu-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":196,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":197,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":199,"author":{"gitId":"-"},"content":".menu-bar .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":200,"author":{"gitId":"-"},"content":" -fx-font-size: 14pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":201,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":202,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":203,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08"},{"lineNumber":204,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":206,"author":{"gitId":"-"},"content":".menu .left-container {","lastModifiedDate":"2016-08-08"},{"lineNumber":207,"author":{"gitId":"-"},"content":" -fx-background-color: black;","lastModifiedDate":"2016-08-08"},{"lineNumber":208,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":210,"author":{"gitId":"-"},"content":"/*","lastModifiedDate":"2016-08-08"},{"lineNumber":211,"author":{"gitId":"-"},"content":" * Metro style Push Button","lastModifiedDate":"2016-08-08"},{"lineNumber":212,"author":{"gitId":"-"},"content":" * Author: Pedro Duque Vieira","lastModifiedDate":"2016-08-08"},{"lineNumber":213,"author":{"gitId":"-"},"content":" * http://pixelduke.wordpress.com/2012/10/23/jmetro-windows-8-controls-on-java/","lastModifiedDate":"2016-08-08"},{"lineNumber":214,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":215,"author":{"gitId":"-"},"content":".button {","lastModifiedDate":"2016-08-08"},{"lineNumber":216,"author":{"gitId":"-"},"content":" -fx-padding: 5 22 5 22;","lastModifiedDate":"2016-08-08"},{"lineNumber":217,"author":{"gitId":"-"},"content":" -fx-border-color: #e2e2e2;","lastModifiedDate":"2016-08-08"},{"lineNumber":218,"author":{"gitId":"-"},"content":" -fx-border-width: 2;","lastModifiedDate":"2016-08-08"},{"lineNumber":219,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":220,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":221,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\", Helvetica, Arial, sans-serif;","lastModifiedDate":"2022-01-13"},{"lineNumber":222,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":223,"author":{"gitId":"-"},"content":" -fx-text-fill: #d8d8d8;","lastModifiedDate":"2016-08-08"},{"lineNumber":224,"author":{"gitId":"-"},"content":" -fx-background-insets: 0 0 0 0, 0, 1, 2;","lastModifiedDate":"2016-08-08"},{"lineNumber":225,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":227,"author":{"gitId":"-"},"content":".button:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":228,"author":{"gitId":"-"},"content":" -fx-background-color: #3a3a3a;","lastModifiedDate":"2016-08-08"},{"lineNumber":229,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":231,"author":{"gitId":"-"},"content":".button:pressed, .button:default:hover:pressed {","lastModifiedDate":"2016-08-08"},{"lineNumber":232,"author":{"gitId":"-"},"content":" -fx-background-color: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":233,"author":{"gitId":"-"},"content":" -fx-text-fill: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":234,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":236,"author":{"gitId":"-"},"content":".button:focused {","lastModifiedDate":"2016-08-08"},{"lineNumber":237,"author":{"gitId":"-"},"content":" -fx-border-color: white, white;","lastModifiedDate":"2016-08-08"},{"lineNumber":238,"author":{"gitId":"-"},"content":" -fx-border-width: 1, 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":239,"author":{"gitId":"-"},"content":" -fx-border-style: solid, segments(1, 1);","lastModifiedDate":"2016-08-08"},{"lineNumber":240,"author":{"gitId":"-"},"content":" -fx-border-radius: 0, 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":241,"author":{"gitId":"-"},"content":" -fx-border-insets: 1 1 1 1, 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":242,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":244,"author":{"gitId":"-"},"content":".button:disabled, .button:default:disabled {","lastModifiedDate":"2016-08-08"},{"lineNumber":245,"author":{"gitId":"-"},"content":" -fx-opacity: 0.4;","lastModifiedDate":"2016-08-08"},{"lineNumber":246,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":247,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":248,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":250,"author":{"gitId":"-"},"content":".button:default {","lastModifiedDate":"2016-08-08"},{"lineNumber":251,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08"},{"lineNumber":252,"author":{"gitId":"-"},"content":" -fx-text-fill: #ffffff;","lastModifiedDate":"2016-08-08"},{"lineNumber":253,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":255,"author":{"gitId":"-"},"content":".button:default:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":256,"author":{"gitId":"-"},"content":" -fx-background-color: derive(-fx-focus-color, 30%);","lastModifiedDate":"2016-08-08"},{"lineNumber":257,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":259,"author":{"gitId":"-"},"content":".dialog-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":260,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":261,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":263,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.button-bar \u003e *.container {","lastModifiedDate":"2016-08-08"},{"lineNumber":264,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":265,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":266,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":267,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.label.content {","lastModifiedDate":"2016-08-08"},{"lineNumber":268,"author":{"gitId":"-"},"content":" -fx-font-size: 14px;","lastModifiedDate":"2016-08-08"},{"lineNumber":269,"author":{"gitId":"-"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2016-08-08"},{"lineNumber":270,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":271,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":273,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel {","lastModifiedDate":"2016-08-08"},{"lineNumber":274,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15"},{"lineNumber":275,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":277,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel *.label {","lastModifiedDate":"2016-08-08"},{"lineNumber":278,"author":{"gitId":"-"},"content":" -fx-font-size: 18px;","lastModifiedDate":"2016-08-08"},{"lineNumber":279,"author":{"gitId":"-"},"content":" -fx-font-style: italic;","lastModifiedDate":"2016-08-08"},{"lineNumber":280,"author":{"gitId":"-"},"content":" -fx-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":281,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":282,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":284,"author":{"gitId":"-"},"content":".scroll-bar {","lastModifiedDate":"2017-03-02"},{"lineNumber":285,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02"},{"lineNumber":286,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":288,"author":{"gitId":"-"},"content":".scroll-bar .thumb {","lastModifiedDate":"2016-08-15"},{"lineNumber":289,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15"},{"lineNumber":290,"author":{"gitId":"-"},"content":" -fx-background-insets: 3;","lastModifiedDate":"2016-08-15"},{"lineNumber":291,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":293,"author":{"gitId":"-"},"content":".scroll-bar .increment-button, .scroll-bar .decrement-button {","lastModifiedDate":"2016-08-15"},{"lineNumber":294,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-15"},{"lineNumber":295,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-15"},{"lineNumber":296,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":298,"author":{"gitId":"-"},"content":".scroll-bar .increment-arrow, .scroll-bar .decrement-arrow {","lastModifiedDate":"2016-08-15"},{"lineNumber":299,"author":{"gitId":"-"},"content":" -fx-shape: \" \";","lastModifiedDate":"2016-08-15"},{"lineNumber":300,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":301,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":302,"author":{"gitId":"-"},"content":".scroll-bar:vertical .increment-arrow, .scroll-bar:vertical .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":303,"author":{"gitId":"-"},"content":" -fx-padding: 1 8 1 8;","lastModifiedDate":"2016-08-15"},{"lineNumber":304,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":306,"author":{"gitId":"-"},"content":".scroll-bar:horizontal .increment-arrow, .scroll-bar:horizontal .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":307,"author":{"gitId":"-"},"content":" -fx-padding: 8 1 8 1;","lastModifiedDate":"2016-08-18"},{"lineNumber":308,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":309,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":310,"author":{"gitId":"-"},"content":"#cardPane {","lastModifiedDate":"2016-08-08"},{"lineNumber":311,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":312,"author":{"gitId":"-"},"content":" -fx-border-width: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":313,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":314,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":315,"author":{"gitId":"-"},"content":"#commandTypeLabel {","lastModifiedDate":"2016-08-08"},{"lineNumber":316,"author":{"gitId":"-"},"content":" -fx-font-size: 11px;","lastModifiedDate":"2016-08-08"},{"lineNumber":317,"author":{"gitId":"-"},"content":" -fx-text-fill: #F70D1A;","lastModifiedDate":"2016-08-08"},{"lineNumber":318,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":319,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":320,"author":{"gitId":"-"},"content":"#commandTextField {","lastModifiedDate":"2017-03-02"},{"lineNumber":321,"author":{"gitId":"-"},"content":" -fx-background-color: transparent #383838 transparent #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":322,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":323,"author":{"gitId":"-"},"content":" -fx-border-color: #383838 #383838 #ffffff #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":324,"author":{"gitId":"-"},"content":" -fx-border-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":325,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02"},{"lineNumber":326,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":327,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02"},{"lineNumber":328,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":329,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":330,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":331,"author":{"gitId":"-"},"content":"#filterField, #personListPanel, #personWebpage {","lastModifiedDate":"2016-08-15"},{"lineNumber":332,"author":{"gitId":"-"},"content":" -fx-effect: innershadow(gaussian, black, 10, 0, 0, 0);","lastModifiedDate":"2016-08-15"},{"lineNumber":333,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":334,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":335,"author":{"gitId":"-"},"content":"#resultDisplay .content {","lastModifiedDate":"2017-03-02"},{"lineNumber":336,"author":{"gitId":"-"},"content":" -fx-background-color: transparent, #383838, transparent, #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":337,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":338,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":339,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":340,"author":{"gitId":"-"},"content":"#tags {","lastModifiedDate":"2016-12-18"},{"lineNumber":341,"author":{"gitId":"-"},"content":" -fx-hgap: 7;","lastModifiedDate":"2016-12-18"},{"lineNumber":342,"author":{"gitId":"-"},"content":" -fx-vgap: 3;","lastModifiedDate":"2016-12-18"},{"lineNumber":343,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"},{"lineNumber":344,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":345,"author":{"gitId":"-"},"content":"#tags .label {","lastModifiedDate":"2016-12-18"},{"lineNumber":346,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-12-18"},{"lineNumber":347,"author":{"gitId":"-"},"content":" -fx-background-color: #3e7b91;","lastModifiedDate":"2017-03-02"},{"lineNumber":348,"author":{"gitId":"-"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2016-12-18"},{"lineNumber":349,"author":{"gitId":"-"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2016-12-18"},{"lineNumber":350,"author":{"gitId":"-"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2016-12-18"},{"lineNumber":351,"author":{"gitId":"-"},"content":" -fx-font-size: 11;","lastModifiedDate":"2016-12-18"},{"lineNumber":352,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"},{"lineNumber":353,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":354,"author":{"gitId":"Jawad280"},"content":"/*","lastModifiedDate":"2024-03-11"},{"lineNumber":355,"author":{"gitId":"Jawad280"},"content":"Custom Styles","lastModifiedDate":"2024-03-11"},{"lineNumber":356,"author":{"gitId":"Jawad280"},"content":"*/","lastModifiedDate":"2024-03-11"},{"lineNumber":357,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":358,"author":{"gitId":"Jawad280"},"content":".cell-header {","lastModifiedDate":"2024-03-11"},{"lineNumber":359,"author":{"gitId":"Jawad280"},"content":" -fx-font-family: Arial;","lastModifiedDate":"2024-03-11"},{"lineNumber":360,"author":{"gitId":"Jawad280"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2024-03-11"},{"lineNumber":361,"author":{"gitId":"Jawad280"},"content":" -fx-font-size: 32px;","lastModifiedDate":"2024-03-11"},{"lineNumber":362,"author":{"gitId":"Jawad280"},"content":" -fx-text-fill: black;","lastModifiedDate":"2024-03-11"},{"lineNumber":363,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-03-11"},{"lineNumber":364,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":365,"author":{"gitId":"Jawad280"},"content":".cell-subHeader {","lastModifiedDate":"2024-03-11"},{"lineNumber":366,"author":{"gitId":"Jawad280"},"content":" -fx-font-family: Arial;","lastModifiedDate":"2024-03-11"},{"lineNumber":367,"author":{"gitId":"Jawad280"},"content":" -fx-font-weight: 700;","lastModifiedDate":"2024-03-11"},{"lineNumber":368,"author":{"gitId":"Jawad280"},"content":" -fx-font-size: 24px;","lastModifiedDate":"2024-03-11"},{"lineNumber":369,"author":{"gitId":"Jawad280"},"content":" -fx-text-fill: #0065d6;","lastModifiedDate":"2024-03-11"},{"lineNumber":370,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-03-11"},{"lineNumber":371,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":372,"author":{"gitId":"Jawad280"},"content":".cell-content {","lastModifiedDate":"2024-03-11"},{"lineNumber":373,"author":{"gitId":"Jawad280"},"content":" -fx-font-family: Arial;","lastModifiedDate":"2024-03-11"},{"lineNumber":374,"author":{"gitId":"Jawad280"},"content":" -fx-font-size: 20px;","lastModifiedDate":"2024-03-11"},{"lineNumber":375,"author":{"gitId":"Jawad280"},"content":" -fx-text-fill: #2a3166;","lastModifiedDate":"2024-03-11"},{"lineNumber":376,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-03-11"},{"lineNumber":377,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":378,"author":{"gitId":"Jawad280"},"content":".cell-content-header {","lastModifiedDate":"2024-03-11"},{"lineNumber":379,"author":{"gitId":"Jawad280"},"content":" -fx-font-family: Arial;","lastModifiedDate":"2024-03-11"},{"lineNumber":380,"author":{"gitId":"Jawad280"},"content":" -fx-font-weight: 700;","lastModifiedDate":"2024-03-11"},{"lineNumber":381,"author":{"gitId":"Jawad280"},"content":" -fx-font-size: 20px;","lastModifiedDate":"2024-03-11"},{"lineNumber":382,"author":{"gitId":"Jawad280"},"content":" -fx-text-fill: black;","lastModifiedDate":"2024-03-11"},{"lineNumber":383,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-03-11"},{"lineNumber":384,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":385,"author":{"gitId":"Jawad280"},"content":".cell-date {","lastModifiedDate":"2024-03-11"},{"lineNumber":386,"author":{"gitId":"Jawad280"},"content":" -fx-font-family: Arial;","lastModifiedDate":"2024-03-11"},{"lineNumber":387,"author":{"gitId":"Jawad280"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2024-03-11"},{"lineNumber":388,"author":{"gitId":"Jawad280"},"content":" -fx-font-size: 24px;","lastModifiedDate":"2024-03-11"},{"lineNumber":389,"author":{"gitId":"Jawad280"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-11"},{"lineNumber":390,"author":{"gitId":"Jawad280"},"content":" -fx-padding: 15;","lastModifiedDate":"2024-03-11"},{"lineNumber":391,"author":{"gitId":"Jawad280"},"content":" -fx-background-color: #Ce1313;","lastModifiedDate":"2024-03-11"},{"lineNumber":392,"author":{"gitId":"Jawad280"},"content":" -fx-background-radius: 10;","lastModifiedDate":"2024-03-11"},{"lineNumber":393,"author":{"gitId":"Jawad280"},"content":" -fx-alignment: CENTER;","lastModifiedDate":"2024-03-11"},{"lineNumber":394,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-03-11"},{"lineNumber":395,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":396,"author":{"gitId":"Jawad280"},"content":".cell-tag {","lastModifiedDate":"2024-03-11"},{"lineNumber":397,"author":{"gitId":"Jawad280"},"content":" -fx-font-family: Arial;","lastModifiedDate":"2024-03-11"},{"lineNumber":398,"author":{"gitId":"Jawad280"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2024-03-11"},{"lineNumber":399,"author":{"gitId":"Jawad280"},"content":" -fx-font-size: 18px;","lastModifiedDate":"2024-03-11"},{"lineNumber":400,"author":{"gitId":"Jawad280"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-11"},{"lineNumber":401,"author":{"gitId":"Jawad280"},"content":" -fx-background-color: #0065d6;","lastModifiedDate":"2024-03-11"},{"lineNumber":402,"author":{"gitId":"Jawad280"},"content":" -fx-padding: 8;","lastModifiedDate":"2024-03-11"},{"lineNumber":403,"author":{"gitId":"Jawad280"},"content":" -fx-background-radius: 3;","lastModifiedDate":"2024-03-11"},{"lineNumber":404,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-03-11"},{"lineNumber":405,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":406,"author":{"gitId":"Jawad280"},"content":".view-panel-cell {","lastModifiedDate":"2024-03-11"},{"lineNumber":407,"author":{"gitId":"Jawad280"},"content":" -fx-background-color: white;","lastModifiedDate":"2024-03-11"},{"lineNumber":408,"author":{"gitId":"Jawad280"},"content":" -fx-background-radius: 10;","lastModifiedDate":"2024-03-11"},{"lineNumber":409,"author":{"gitId":"Jawad280"},"content":" -width: 450;","lastModifiedDate":"2024-03-11"},{"lineNumber":410,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"Jawad280":58,"-":352}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2016-08-26"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Menu?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuBar?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuItem?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.SplitPane?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":14,"author":{"gitId":"Jawad280"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-02-26"},{"lineNumber":15,"author":{"gitId":"chenyixin0"},"content":"\u003c?import javafx.scene.control.ScrollPane?\u003e","lastModifiedDate":"2024-02-29"},{"lineNumber":16,"author":{"gitId":"Jawad280"},"content":"\u003c?import javafx.scene.layout.Pane?\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"\u003cfx:root type\u003d\"javafx.stage.Stage\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"","lastModifiedDate":"2023-07-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":" title\u003d\"Address App\" minWidth\u003d\"450\" minHeight\u003d\"600\" onCloseRequest\u003d\"#handleExit\"\u003e","lastModifiedDate":"2018-12-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cicons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cImage url\u003d\"@/images/address_book_32.png\" /\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003c/icons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cscene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cScene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@DarkTheme.css\" /\u003e","lastModifiedDate":"2016-08-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@Extensions.css\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003cVBox\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003cMenuBar fx:id\u003d\"menuBar\" VBox.vgrow\u003d\"NEVER\"\u003e","lastModifiedDate":"2017-06-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"File\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cMenuItem mnemonicParsing\u003d\"false\" onAction\u003d\"#handleExit\" text\u003d\"Exit\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"Help\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003cMenuItem fx:id\u003d\"helpMenuItem\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleHelp\" text\u003d\"Help\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003c/MenuBar\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"commandBoxPlaceholder\" styleClass\u003d\"pane-with-border\"\u003e","lastModifiedDate":"2017-05-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":41,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":43,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"resultDisplayPlaceholder\" styleClass\u003d\"pane-with-border\"","lastModifiedDate":"2017-05-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" minHeight\u003d\"100\" prefHeight\u003d\"100\" maxHeight\u003d\"100\"\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":52,"author":{"gitId":"Jawad280"},"content":" \u003cSplitPane VBox.vgrow\u003d\"ALWAYS\" HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-02-26"},{"lineNumber":53,"author":{"gitId":"Jawad280"},"content":" \u003cVBox fx:id\u003d\"personList\" styleClass\u003d\"pane-with-border\" minWidth\u003d\"300\" prefWidth\u003d\"400\" VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-02-26"},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"10\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"personListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\"/\u003e","lastModifiedDate":"2017-06-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":60,"author":{"gitId":"Jawad280"},"content":" \u003cScrollPane fitToHeight\u003d\"true\" fitToWidth\u003d\"true\" hbarPolicy\u003d\"NEVER\" minWidth\u003d\"475\" maxWidth\u003d\"475\"\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"chenyixin0"},"content":" \u003ccontent\u003e","lastModifiedDate":"2024-02-29"},{"lineNumber":62,"author":{"gitId":"Jawad280"},"content":" \u003cVBox styleClass\u003d\"pane-with-border\" VBox.vgrow\u003d\"ALWAYS\" prefWidth\u003d\"475\" \u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":63,"author":{"gitId":"Jawad280"},"content":" \u003cVBox VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"viewPanelPlaceholder\" spacing\u003d\"20\"\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":64,"author":{"gitId":"Jawad280"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-02-26"},{"lineNumber":65,"author":{"gitId":"Jawad280"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"10\" left\u003d\"10\" /\u003e","lastModifiedDate":"2024-02-26"},{"lineNumber":66,"author":{"gitId":"Jawad280"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-02-26"},{"lineNumber":67,"author":{"gitId":"Jawad280"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-02-26"},{"lineNumber":68,"author":{"gitId":"Jawad280"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":69,"author":{"gitId":"chenyixin0"},"content":" \u003c/content\u003e","lastModifiedDate":"2024-02-29"},{"lineNumber":70,"author":{"gitId":"chenyixin0"},"content":" \u003c/ScrollPane\u003e","lastModifiedDate":"2024-02-29"},{"lineNumber":71,"author":{"gitId":"chenyixin0"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":72,"author":{"gitId":"Jawad280"},"content":" \u003c/SplitPane\u003e","lastModifiedDate":"2024-02-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":74,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"statusbarPlaceholder\" VBox.vgrow\u003d\"NEVER\" /\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":75,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":77,"author":{"gitId":"-"},"content":" \u003c/scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":78,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-11-29"}],"authorContributionMap":{"chenyixin0":5,"Jawad280":13,"-":60}},{"path":"src/main/resources/view/PersonListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003cHBox id\u003d\"cardPane\" fx:id\u003d\"cardPane\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-07-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2017-03-28"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2017-03-28"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003c/Label\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"name\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2016-09-03"},{"lineNumber":30,"author":{"gitId":"ashleygoh1"},"content":" \u003cLabel fx:id\u003d\"tags\" /\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"ashleygoh1"},"content":" \u003cLabel fx:id\u003d\"jobDescription\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$job description\" /\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":35,"author":{"gitId":"ashleygoh1"},"content":" \u003cLabel fx:id\u003d\"interviewDate\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$interview date\" /\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":36,"author":{"gitId":"ashleygoh1"},"content":" \u003cLabel fx:id\u003d\"internDuration\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$intern duration\" /\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":37,"author":{"gitId":"ashleygoh1"},"content":" \u003cLabel fx:id\u003d\"salary\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$salary\" /\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"ashleygoh1":5,"-":35}},{"path":"src/main/resources/view/ViewPanel.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Jawad280"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-02-26"},{"lineNumber":2,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":3,"author":{"gitId":"Jawad280"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-02-26"},{"lineNumber":4,"author":{"gitId":"Jawad280"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-02-26"},{"lineNumber":5,"author":{"gitId":"Jawad280"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2024-02-26"},{"lineNumber":6,"author":{"gitId":"Jawad280"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-02-26"},{"lineNumber":7,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":8,"author":{"gitId":"Jawad280"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"Jawad280"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"Jawad280"},"content":"\u003cVBox id\u003d\"viewPanel\" fx:id\u003d\"ViewPanel\" xmlns\u003d\"http://javafx.com/javafx/21\" xmlns:fx\u003d\"http://javafx.com/fxml/1\" alignment\u003d\"CENTER\" GridPane.columnIndex\u003d\"0\" styleClass\u003d\"view-panel-cell\" prefWidth\u003d\"450\" spacing\u003d\"15\"\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"Jawad280"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-02-26"},{"lineNumber":12,"author":{"gitId":"Jawad280"},"content":" \u003cInsets bottom\u003d\"20.0\" left\u003d\"20.0\" right\u003d\"20.0\" top\u003d\"20.0\" /\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"Jawad280"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-02-26"},{"lineNumber":14,"author":{"gitId":"Jawad280"},"content":" \u003cHBox\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"Jawad280"},"content":" \u003cLabel fx:id\u003d\"companyName\" text\u003d\"\\$first\" styleClass\u003d\"cell-header\" /\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"Jawad280"},"content":" \u003cRegion HBox.hgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"Jawad280"},"content":" \u003cLabel fx:id\u003d\"tag\" text\u003d\"\\$tag\" styleClass\u003d\"cell-tag\" /\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"Jawad280"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"Jawad280"},"content":" \u003cVBox spacing\u003d\"15\"\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"Jawad280"},"content":" \u003cLabel fx:id\u003d\"jobDescription\" text\u003d\"\\$jobDescription\" styleClass\u003d\"cell-subHeader\" /\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"Jawad280"},"content":" \u003cHBox\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"Jawad280"},"content":" \u003cLabel text\u003d\"Phone: \" styleClass\u003d\"cell-content-header\"/\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"Jawad280"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell-content\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"Jawad280"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"Jawad280"},"content":" \u003cHBox\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"Jawad280"},"content":" \u003cLabel text\u003d\"Address: \" styleClass\u003d\"cell-content-header\"/\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":29,"author":{"gitId":"Jawad280"},"content":" \u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell-content\" text\u003d\"\\$address\" /\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"Jawad280"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"Jawad280"},"content":" \u003cHBox\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"Jawad280"},"content":" \u003cLabel text\u003d\"Email: \" styleClass\u003d\"cell-content-header\"/\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"Jawad280"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell-content\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"Jawad280"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"Jawad280"},"content":" \u003cHBox\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"Jawad280"},"content":" \u003cLabel text\u003d\"Duration: \" styleClass\u003d\"cell-content-header\"/\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"Jawad280"},"content":" \u003cLabel fx:id\u003d\"internDuration\" styleClass\u003d\"cell-content\" text\u003d\"\\$internDuration\" /\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"Jawad280"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"Jawad280"},"content":" \u003cHBox\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"Jawad280"},"content":" \u003cLabel text\u003d\"Salary: \" styleClass\u003d\"cell-content-header\"/\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"Jawad280"},"content":" \u003cLabel fx:id\u003d\"salary\" styleClass\u003d\"cell-content\" text\u003d\"\\$salary\" /\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"Jawad280"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"Jawad280"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-02-26"},{"lineNumber":48,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"Jawad280"},"content":" \u003cHBox alignment\u003d\"CENTER\"\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"Jawad280"},"content":" \u003cLabel fx:id\u003d\"interviewDate\" styleClass\u003d\"cell-date\" text\u003d\"\\$interviewDate\" prefWidth\u003d\"450\" HBox.hgrow\u003d\"ALWAYS\"/\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":51,"author":{"gitId":"Jawad280"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":52,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"Jawad280"},"content":"\u003c/VBox\u003e","lastModifiedDate":"2024-02-26"}],"authorContributionMap":{"Jawad280":53}},{"path":"src/test/java/seedu/address/logic/LogicManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"ashleygoh1"},"content":"//import static seedu.address.logic.Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2024-02-26"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":9,"author":{"gitId":"chenyixin0"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INTERN_DURATION_DESC_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"chenyixin0"},"content":"import static seedu.address.logic.commands.CommandTestUtil.JOB_DESCRIPTION_DESC_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":13,"author":{"gitId":"chenyixin0"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SALARY_DESC_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_NO_REPLY;","lastModifiedDate":"2024-02-26"},{"lineNumber":15,"author":{"gitId":"chenyixin0"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_NO_REPLY;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2018-12-09"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2017-01-18"},{"lineNumber":29,"author":{"gitId":"ashleygoh1"},"content":"//import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2024-02-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2016-09-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-12-09"},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-12-09"},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2018-12-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2018-12-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-12-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":43,"author":{"gitId":"-"},"content":"public class LogicManagerTest {","lastModifiedDate":"2016-09-22"},{"lineNumber":44,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_IO_EXCEPTION \u003d new IOException(\"dummy IO exception\");","lastModifiedDate":"2023-06-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_AD_EXCEPTION \u003d new AccessDeniedException(\"dummy access denied exception\");","lastModifiedDate":"2023-06-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public Path temporaryFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-20"},{"lineNumber":51,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2018-12-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2019-04-25"},{"lineNumber":55,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d","lastModifiedDate":"2019-04-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(temporaryFolder.resolve(\"addressBook.json\"));","lastModifiedDate":"2019-04-25"},{"lineNumber":57,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2019-04-25"},{"lineNumber":58,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2018-12-09"},{"lineNumber":59,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-20"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void execute_invalidCommandFormat_throwsParseException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":64,"author":{"gitId":"-"},"content":" String invalidCommand \u003d \"uicfhmowqewca\";","lastModifiedDate":"2017-06-20"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertParseException(invalidCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-06-20"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void execute_commandExecutionError_throwsCommandException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"-"},"content":" String deleteCommand \u003d \"delete 9\";","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertCommandException(deleteCommand, MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void execute_validCommand_success() throws Exception {","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"-"},"content":" String listCommand \u003d ListCommand.COMMAND_WORD;","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertCommandSuccess(listCommand, ListCommand.MESSAGE_SUCCESS, model);","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2024-03-17"},{"lineNumber":83,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2024-03-17"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2024-03-17"},{"lineNumber":89,"author":{"gitId":"chenyixin0"},"content":" // the original test compares expected model and actual model and that one keeps failing so i js","lastModifiedDate":"2024-03-17"},{"lineNumber":90,"author":{"gitId":"chenyixin0"},"content":" // commented that line out first cuz idk whats going on lol","lastModifiedDate":"2024-03-17"},{"lineNumber":91,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2024-03-17"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":95,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":99,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":104,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":105,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":106,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14"},{"lineNumber":107,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14"},{"lineNumber":108,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14"},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14"},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":113,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":114,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a ParseException is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":115,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":116,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":117,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11"},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":121,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a CommandException is thrown and that the result message is correct.","lastModifiedDate":"2017-06-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14"},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":129,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":130,"author":{"gitId":"-"},"content":" * Executes the command, confirms that the exception is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":131,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":132,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":133,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":134,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14"},{"lineNumber":135,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-05-31"},{"lineNumber":136,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":139,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":140,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":141,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":142,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":143,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":144,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":145,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":146,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":147,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31"},{"lineNumber":148,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14"},{"lineNumber":149,"author":{"gitId":"chenyixin0"},"content":" //assertEquals(expectedModel, model);","lastModifiedDate":"2024-03-17"},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19"},{"lineNumber":152,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":153,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13"},{"lineNumber":154,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13"},{"lineNumber":155,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13"},{"lineNumber":156,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13"},{"lineNumber":157,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":158,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13"},{"lineNumber":159,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":161,"author":{"gitId":"-"},"content":" // Inject LogicManager with an AddressBookStorage that throws the IOException e when saving","lastModifiedDate":"2023-06-13"},{"lineNumber":162,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(prefPath) {","lastModifiedDate":"2023-06-13"},{"lineNumber":163,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":164,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath)","lastModifiedDate":"2023-06-13"},{"lineNumber":165,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13"},{"lineNumber":166,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13"},{"lineNumber":167,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":168,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":170,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":171,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13"},{"lineNumber":172,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2023-06-13"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":174,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":176,"author":{"gitId":"-"},"content":" // Triggers the saveAddressBook method by executing an add command","lastModifiedDate":"2023-06-13"},{"lineNumber":177,"author":{"gitId":"-"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2023-06-13"},{"lineNumber":178,"author":{"gitId":"chenyixin0"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + TAG_DESC_NO_REPLY + JOB_DESCRIPTION_DESC_AMY","lastModifiedDate":"2024-03-17"},{"lineNumber":179,"author":{"gitId":"chenyixin0"},"content":" + INTERN_DURATION_DESC_AMY + SALARY_DESC_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":180,"author":{"gitId":"chenyixin0"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags(VALID_TAG_NO_REPLY).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":181,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13"},{"lineNumber":182,"author":{"gitId":"-"},"content":" expectedModel.addPerson(expectedPerson);","lastModifiedDate":"2023-06-13"},{"lineNumber":183,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13"},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":185,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"chenyixin0":10,"ashleygoh1":3,"-":172}},{"path":"src/test/java/seedu/address/logic/commands/AddCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-01-10"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-05-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":18,"author":{"gitId":"Jawad280"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2024-03-01"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-05-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2017-05-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class AddCommandTest {","lastModifiedDate":"2017-05-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddCommand(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void execute_personAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2017-05-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":" ModelStubAcceptingPersonAdded modelStub \u003d new ModelStubAcceptingPersonAdded();","lastModifiedDate":"2017-05-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new AddCommand(validPerson).execute(modelStub);","lastModifiedDate":"2019-01-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertEquals(String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validPerson)),","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(validPerson), modelStub.personsAdded);","lastModifiedDate":"2017-05-12"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12"},{"lineNumber":51,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(validPerson);","lastModifiedDate":"2018-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" ModelStub modelStub \u003d new ModelStubWithPerson(validPerson);","lastModifiedDate":"2018-08-07"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, AddCommand.MESSAGE_DUPLICATE_PERSON, () -\u003e addCommand.execute(modelStub));","lastModifiedDate":"2019-05-03"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-22"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":59,"author":{"gitId":"-"},"content":" Person alice \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2017-06-22"},{"lineNumber":60,"author":{"gitId":"-"},"content":" Person bob \u003d new PersonBuilder().withName(\"Bob\").build();","lastModifiedDate":"2017-06-22"},{"lineNumber":61,"author":{"gitId":"-"},"content":" AddCommand addAliceCommand \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22"},{"lineNumber":62,"author":{"gitId":"-"},"content":" AddCommand addBobCommand \u003d new AddCommand(bob);","lastModifiedDate":"2017-06-22"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":64,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommand));","lastModifiedDate":"2017-06-22"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":67,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":" AddCommand addAliceCommandCopy \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommandCopy));","lastModifiedDate":"2017-06-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(1));","lastModifiedDate":"2017-06-22"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":74,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(null));","lastModifiedDate":"2017-06-22"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":77,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(addBobCommand));","lastModifiedDate":"2017-06-22"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(ALICE);","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" String expected \u003d AddCommand.class.getCanonicalName() + \"{toAdd\u003d\" + ALICE + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertEquals(expected, addCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2017-05-12"},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":91,"author":{"gitId":"-"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2017-05-12"},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":94,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":104,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":109,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":113,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":114,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":118,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27"},{"lineNumber":119,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":123,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":124,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":128,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2018-11-27"},{"lineNumber":129,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":133,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-12"},{"lineNumber":134,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":137,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":138,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06"},{"lineNumber":139,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":142,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":143,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-08"},{"lineNumber":144,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":147,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":148,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":149,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":152,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":153,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":154,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":157,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":158,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10"},{"lineNumber":159,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":161,"author":{"gitId":"Jawad280"},"content":" @Override","lastModifiedDate":"2024-02-29"},{"lineNumber":162,"author":{"gitId":"Jawad280"},"content":" public Person choosePersonToView(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2024-02-29"},{"lineNumber":163,"author":{"gitId":"Jawad280"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-02-29"},{"lineNumber":164,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-02-29"},{"lineNumber":165,"author":{"gitId":"Jawad280"},"content":" @Override","lastModifiedDate":"2024-03-01"},{"lineNumber":166,"author":{"gitId":"Jawad280"},"content":" public FilteredList\u003cPerson\u003e generateNewFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2024-03-01"},{"lineNumber":167,"author":{"gitId":"Jawad280"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-01"},{"lineNumber":168,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":171,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":172,"author":{"gitId":"-"},"content":" * A Model stub that contains a single person.","lastModifiedDate":"2018-08-07"},{"lineNumber":173,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":174,"author":{"gitId":"-"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2018-08-07"},{"lineNumber":175,"author":{"gitId":"-"},"content":" private final Person person;","lastModifiedDate":"2018-08-07"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":177,"author":{"gitId":"-"},"content":" ModelStubWithPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":178,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":179,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2018-08-07"},{"lineNumber":180,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":182,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":183,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":184,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":185,"author":{"gitId":"-"},"content":" return this.person.isSamePerson(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":186,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":189,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":190,"author":{"gitId":"-"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2017-05-12"},{"lineNumber":191,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":192,"author":{"gitId":"-"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2017-05-12"},{"lineNumber":193,"author":{"gitId":"-"},"content":" final ArrayList\u003cPerson\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2017-05-12"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":195,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07"},{"lineNumber":196,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":197,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":198,"author":{"gitId":"-"},"content":" return personsAdded.stream().anyMatch(person::isSamePerson);","lastModifiedDate":"2018-08-07"},{"lineNumber":199,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":201,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":202,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-08"},{"lineNumber":203,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":204,"author":{"gitId":"-"},"content":" personsAdded.add(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":205,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":207,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":208,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04"},{"lineNumber":209,"author":{"gitId":"-"},"content":" return new AddressBook();","lastModifiedDate":"2017-05-04"},{"lineNumber":210,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":211,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":213,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12"}],"authorContributionMap":{"Jawad280":9,"-":204}},{"path":"src/test/java/seedu/address/logic/commands/CommandResultTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2018-12-09"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":7,"author":{"gitId":"chenyixin0"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"chenyixin0"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"chenyixin0"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"chenyixin0"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"chenyixin0"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"chenyixin0"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"chenyixin0"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class CommandResultTest {","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"chenyixin0"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-12-09"},{"lineNumber":22,"author":{"gitId":"chenyixin0"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"chenyixin0"},"content":" // constructor 1: CommandResult(String feedback)","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new CommandResult(\"feedback\");","lastModifiedDate":"2018-12-09"},{"lineNumber":25,"author":{"gitId":"chenyixin0"},"content":" // constructor 2: CommandResult(String feedback, Person viewPerson)","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"chenyixin0"},"content":" CommandResult commandResultViewPerson \u003d new CommandResult(\"feedback\", ALICE);","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"chenyixin0"},"content":" // constructor 3: CommandResult(String feedback, FilteredList\u003cPerson\u003e viewList)","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"chenyixin0"},"content":" CommandResult commandResultViewList \u003d new CommandResult(\"feedback\",","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"chenyixin0"},"content":" new FilteredList\u003c\u003e(model.getFilteredPersonList(), PREDICATE_SHOW_ALL_PERSONS));","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-12-09"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertTrue(commandResult.equals(new CommandResult(\"feedback\")));","lastModifiedDate":"2018-12-09"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertTrue(commandResult.equals(new CommandResult(\"feedback\", false, false)));","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":35,"author":{"gitId":"chenyixin0"},"content":" assertTrue(commandResultViewPerson.equals(new CommandResult(\"feedback\", ALICE)));","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"chenyixin0"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"chenyixin0"},"content":" assertTrue(commandResultViewList.equals(new CommandResult(\"feedback\",","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"chenyixin0"},"content":" new FilteredList\u003c\u003e(model.getFilteredPersonList(), PREDICATE_SHOW_ALL_PERSONS))));","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"chenyixin0"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-12-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertTrue(commandResult.equals(commandResult));","lastModifiedDate":"2018-12-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":43,"author":{"gitId":"chenyixin0"},"content":" assertTrue(commandResultViewPerson.equals(commandResultViewPerson));","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"chenyixin0"},"content":" assertTrue(commandResultViewPerson.getViewPerson().equals(ALICE));","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"chenyixin0"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"chenyixin0"},"content":" assertTrue(commandResultViewList.equals(commandResultViewList));","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"chenyixin0"},"content":" assertTrue(commandResultViewList.getViewList().equals(","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"chenyixin0"},"content":" new FilteredList\u003c\u003e(model.getFilteredPersonList(), PREDICATE_SHOW_ALL_PERSONS)));","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"chenyixin0"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(null));","lastModifiedDate":"2018-12-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(0.5f));","lastModifiedDate":"2018-12-09"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // different feedbackToUser value -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(new CommandResult(\"different\")));","lastModifiedDate":"2018-12-09"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // different showHelp value -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(new CommandResult(\"feedback\", true, false)));","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":62,"author":{"gitId":"-"},"content":" // different exit value -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(new CommandResult(\"feedback\", false, true)));","lastModifiedDate":"2024-03-11"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void hashcode() {","lastModifiedDate":"2018-12-09"},{"lineNumber":68,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new CommandResult(\"feedback\");","lastModifiedDate":"2018-12-09"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":70,"author":{"gitId":"-"},"content":" // same values -\u003e returns same hashcode","lastModifiedDate":"2018-12-09"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertEquals(commandResult.hashCode(), new CommandResult(\"feedback\").hashCode());","lastModifiedDate":"2018-12-09"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":73,"author":{"gitId":"-"},"content":" // different feedbackToUser value -\u003e returns different hashcode","lastModifiedDate":"2018-12-09"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertNotEquals(commandResult.hashCode(), new CommandResult(\"different\").hashCode());","lastModifiedDate":"2018-12-09"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":76,"author":{"gitId":"-"},"content":" // different showHelp value -\u003e returns different hashcode","lastModifiedDate":"2018-12-09"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertNotEquals(commandResult.hashCode(), new CommandResult(\"feedback\", true, false).hashCode());","lastModifiedDate":"2024-03-11"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":79,"author":{"gitId":"-"},"content":" // different exit value -\u003e returns different hashcode","lastModifiedDate":"2018-12-09"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertNotEquals(commandResult.hashCode(), new CommandResult(\"feedback\", false, true).hashCode());","lastModifiedDate":"2024-03-11"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new CommandResult(\"feedback\");","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" String expected \u003d CommandResult.class.getCanonicalName() + \"{feedbackToUser\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" + commandResult.getFeedbackToUser() + \", showHelp\u003d\" + commandResult.isShowHelp()","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" + \", exit\u003d\" + commandResult.isExit() + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertEquals(expected, commandResult.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-12-09"},{"lineNumber":92,"author":{"gitId":"chenyixin0"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":93,"author":{"gitId":"chenyixin0"},"content":"","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"chenyixin0":29,"-":64}},{"path":"src/test/java/seedu/address/logic/commands/CommandTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-07-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_INTERN_DURATION;","lastModifiedDate":"2024-02-26"},{"lineNumber":8,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_INTERVIEW_DATE;","lastModifiedDate":"2024-02-26"},{"lineNumber":9,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_JOB_DESCRIPTION;","lastModifiedDate":"2024-02-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SALARY;","lastModifiedDate":"2024-02-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-07-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-06-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-07-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2024-03-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_AMY \u003d \"11111111\";","lastModifiedDate":"2017-07-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_BOB \u003d \"22222222\";","lastModifiedDate":"2017-07-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_AMY \u003d \"Block 312, Amy Street 1\";","lastModifiedDate":"2017-07-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_BOB \u003d \"Block 123, Bobby Street 3\";","lastModifiedDate":"2017-07-05"},{"lineNumber":41,"author":{"gitId":"ashleygoh1"},"content":" public static final String VALID_TAG_NO_REPLY \u003d \"NR\";","lastModifiedDate":"2024-02-26"},{"lineNumber":42,"author":{"gitId":"ashleygoh1"},"content":" public static final String VALID_TAG_INTERVIEW \u003d \"I\";","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"ashleygoh1"},"content":" public static final String VALID_JOB_DESCRIPTION_AMY \u003d \"Data Science intern\";","lastModifiedDate":"2024-02-26"},{"lineNumber":44,"author":{"gitId":"ashleygoh1"},"content":" public static final String VALID_JOB_DESCRIPTION_BOB \u003d \"Front end developer intern\";","lastModifiedDate":"2024-02-26"},{"lineNumber":45,"author":{"gitId":"ashleygoh1"},"content":" public static final String VALID_INTERVIEW_DATE_AMY \u003d \"15-04-2024 0900\";","lastModifiedDate":"2024-02-26"},{"lineNumber":46,"author":{"gitId":"ashleygoh1"},"content":" public static final String VALID_INTERVIEW_DATE_BOB \u003d \"15-04-2024 1200\";","lastModifiedDate":"2024-02-26"},{"lineNumber":47,"author":{"gitId":"ashleygoh1"},"content":" public static final String VALID_INTERN_DURATION_AMY \u003d \"6 months\";","lastModifiedDate":"2024-02-26"},{"lineNumber":48,"author":{"gitId":"ashleygoh1"},"content":" public static final String VALID_INTERN_DURATION_BOB \u003d \"3 months\";","lastModifiedDate":"2024-02-26"},{"lineNumber":49,"author":{"gitId":"ashleygoh1"},"content":" public static final String VALID_SALARY_AMY \u003d \"500\";","lastModifiedDate":"2024-02-26"},{"lineNumber":50,"author":{"gitId":"ashleygoh1"},"content":" public static final String VALID_SALARY_BOB \u003d \"1000\";","lastModifiedDate":"2024-02-26"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":60,"author":{"gitId":"ashleygoh1"},"content":" public static final String TAG_DESC_NO_REPLY \u003d \" \" + PREFIX_TAG + VALID_TAG_NO_REPLY;","lastModifiedDate":"2024-02-26"},{"lineNumber":61,"author":{"gitId":"ashleygoh1"},"content":" public static final String TAG_DESC_INTERVIEW \u003d \" \" + PREFIX_TAG + VALID_TAG_INTERVIEW;","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"ashleygoh1"},"content":" public static final String JOB_DESCRIPTION_DESC_AMY \u003d \" \" + PREFIX_JOB_DESCRIPTION + VALID_JOB_DESCRIPTION_AMY;","lastModifiedDate":"2024-02-26"},{"lineNumber":63,"author":{"gitId":"ashleygoh1"},"content":" public static final String JOB_DESCRIPTION_DESC_BOB \u003d \" \" + PREFIX_JOB_DESCRIPTION + VALID_JOB_DESCRIPTION_BOB;","lastModifiedDate":"2024-02-26"},{"lineNumber":64,"author":{"gitId":"ashleygoh1"},"content":" public static final String INTERVIEW_DATE_DESC_AMY \u003d \" \" + PREFIX_INTERVIEW_DATE + VALID_INTERVIEW_DATE_AMY;","lastModifiedDate":"2024-02-26"},{"lineNumber":65,"author":{"gitId":"ashleygoh1"},"content":" public static final String INTERVIEW_DATE_DESC_BOB \u003d \" \" + PREFIX_INTERVIEW_DATE + VALID_INTERVIEW_DATE_BOB;","lastModifiedDate":"2024-02-26"},{"lineNumber":66,"author":{"gitId":"ashleygoh1"},"content":" public static final String INTERN_DURATION_DESC_AMY \u003d \" \" + PREFIX_INTERN_DURATION + VALID_INTERN_DURATION_AMY;","lastModifiedDate":"2024-02-26"},{"lineNumber":67,"author":{"gitId":"ashleygoh1"},"content":" public static final String INTERN_DURATION_DESC_BOB \u003d \" \" + PREFIX_INTERN_DURATION + VALID_INTERN_DURATION_BOB;","lastModifiedDate":"2024-02-26"},{"lineNumber":68,"author":{"gitId":"ashleygoh1"},"content":" public static final String SALARY_DESC_AMY \u003d \" \" + PREFIX_SALARY + VALID_SALARY_AMY;","lastModifiedDate":"2024-02-26"},{"lineNumber":69,"author":{"gitId":"ashleygoh1"},"content":" public static final String SALARY_DESC_BOB \u003d \" \" + PREFIX_SALARY + VALID_SALARY_BOB;","lastModifiedDate":"2024-02-26"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public static final String INVALID_NAME_DESC \u003d \" \" + PREFIX_NAME + \"James\u0026\"; // \u0027\u0026\u0027 not allowed in names","lastModifiedDate":"2017-07-05"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public static final String INVALID_PHONE_DESC \u003d \" \" + PREFIX_PHONE + \"911a\"; // \u0027a\u0027 not allowed in phones","lastModifiedDate":"2017-07-05"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public static final String INVALID_ADDRESS_DESC \u003d \" \" + PREFIX_ADDRESS; // empty string not allowed for addresses","lastModifiedDate":"2017-07-05"},{"lineNumber":75,"author":{"gitId":"ashleygoh1"},"content":" public static final String INVALID_TAG_DESC \u003d \" \" + PREFIX_TAG + \"*\"; // \u0027*\u0027 not allowed in tags","lastModifiedDate":"2024-02-26"},{"lineNumber":76,"author":{"gitId":"ashleygoh1"},"content":" public static final String INVALID_JOB_DESCRIPTION_DESC \u003d \" \" + PREFIX_JOB_DESCRIPTION;","lastModifiedDate":"2024-02-26"},{"lineNumber":77,"author":{"gitId":"ashleygoh1"},"content":" // empty string not allowed for job description","lastModifiedDate":"2024-02-26"},{"lineNumber":78,"author":{"gitId":"ashleygoh1"},"content":" public static final String INVALID_INTERN_DURATION_DESC \u003d \" \" + PREFIX_INTERN_DURATION;","lastModifiedDate":"2024-02-26"},{"lineNumber":79,"author":{"gitId":"ashleygoh1"},"content":" // empty string not allowed for intern duration","lastModifiedDate":"2024-02-26"},{"lineNumber":80,"author":{"gitId":"ashleygoh1"},"content":" public static final String INVALID_SALARY_DESC \u003d \" \" + PREFIX_SALARY + \"0\";","lastModifiedDate":"2024-02-26"},{"lineNumber":81,"author":{"gitId":"ashleygoh1"},"content":" // salary need to be above 0 dollar","lastModifiedDate":"2024-02-26"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2024-03-04"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2024-03-04"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":88,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2024-03-04"},{"lineNumber":89,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2024-03-04"},{"lineNumber":90,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2024-03-04"},{"lineNumber":91,"author":{"gitId":"Jawad280"},"content":" .withTags(VALID_TAG_NO_REPLY).withJobDescription(VALID_JOB_DESCRIPTION_AMY)","lastModifiedDate":"2024-03-11"},{"lineNumber":92,"author":{"gitId":"Jawad280"},"content":" .withInterviewDate(VALID_INTERVIEW_DATE_AMY).withInternDuration(VALID_INTERN_DURATION_AMY)","lastModifiedDate":"2024-03-11"},{"lineNumber":93,"author":{"gitId":"Jawad280"},"content":" .withSalary(VALID_SALARY_AMY).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":94,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2024-03-04"},{"lineNumber":95,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2024-03-04"},{"lineNumber":96,"author":{"gitId":"Jawad280"},"content":" .withTags(VALID_TAG_NO_REPLY).withJobDescription(VALID_JOB_DESCRIPTION_BOB)","lastModifiedDate":"2024-03-11"},{"lineNumber":97,"author":{"gitId":"Jawad280"},"content":" .withInterviewDate(VALID_INTERVIEW_DATE_BOB).withInternDuration(VALID_INTERN_DURATION_BOB)","lastModifiedDate":"2024-03-11"},{"lineNumber":98,"author":{"gitId":"Jawad280"},"content":" .withSalary(VALID_SALARY_BOB).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":101,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":102,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":104,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25"},{"lineNumber":106,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25"},{"lineNumber":108,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":109,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":110,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09"},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":113,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15"},{"lineNumber":114,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":118,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":119,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25"},{"lineNumber":120,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09"},{"lineNumber":121,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":122,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25"},{"lineNumber":123,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":124,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09"},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":128,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":129,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":130,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":131,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":132,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25"},{"lineNumber":133,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":134,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25"},{"lineNumber":135,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05"},{"lineNumber":136,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05"},{"lineNumber":137,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":138,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03"},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":142,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":144,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20"},{"lineNumber":145,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show only the person at the given {@code targetIndex} in the","lastModifiedDate":"2018-01-31"},{"lineNumber":146,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31"},{"lineNumber":147,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20"},{"lineNumber":148,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31"},{"lineNumber":149,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31"},{"lineNumber":151,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31"},{"lineNumber":152,"author":{"gitId":"ashleygoh1"},"content":" final String[] splitName \u003d person.getCompanyName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2024-02-25"},{"lineNumber":153,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":155,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08"},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":158,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"eunrcn":1,"Jawad280":6,"ashleygoh1":32,"-":119}},{"path":"src/test/java/seedu/address/logic/commands/EditCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-04"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-04"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-04"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-04"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"chenyixin0"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"chenyixin0"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"chenyixin0"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_INTERN_DURATION_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"chenyixin0"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_INTERVIEW_DATE_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"chenyixin0"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_JOB_DESCRIPTION_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"chenyixin0"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SALARY_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_INTERVIEW;","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-04"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2024-03-04"},{"lineNumber":22,"author":{"gitId":"Jawad280"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-04"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-04"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-04"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-04"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2024-03-04"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-03-04"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-04"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-04"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-04"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-04"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2024-03-04"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-03-04"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":38,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2024-03-04"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for EditCommand.","lastModifiedDate":"2024-03-04"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-04"},{"lineNumber":41,"author":{"gitId":"-"},"content":"public class EditCommandTest {","lastModifiedDate":"2024-03-04"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":43,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-04"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-04"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2024-03-04"},{"lineNumber":47,"author":{"gitId":"Jawad280"},"content":" Person editedPerson \u003d ALICE;","lastModifiedDate":"2024-03-11"},{"lineNumber":48,"author":{"gitId":"Jawad280"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(editedPerson).withTags(\"NR\").build();","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, descriptor);","lastModifiedDate":"2024-03-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":51,"author":{"gitId":"Jawad280"},"content":" String expectedMessage \u003d String.format(","lastModifiedDate":"2024-03-11"},{"lineNumber":52,"author":{"gitId":"Jawad280"},"content":" EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson)","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"Jawad280"},"content":" );","lastModifiedDate":"2024-03-11"},{"lineNumber":54,"author":{"gitId":"Jawad280"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2024-03-11"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":56,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-03-04"},{"lineNumber":57,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2024-03-04"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":59,"author":{"gitId":"Jawad280"},"content":" assertCommandSuccess(editCommand, model, expectedCommandResult, expectedModel);","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-04"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2024-03-04"},{"lineNumber":64,"author":{"gitId":"-"},"content":" Index indexLastPerson \u003d Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2024-03-04"},{"lineNumber":65,"author":{"gitId":"-"},"content":" Person lastPerson \u003d model.getFilteredPersonList().get(indexLastPerson.getZeroBased());","lastModifiedDate":"2024-03-04"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":67,"author":{"gitId":"-"},"content":" PersonBuilder personInList \u003d new PersonBuilder(lastPerson);","lastModifiedDate":"2024-03-04"},{"lineNumber":68,"author":{"gitId":"-"},"content":" Person editedPerson \u003d personInList.withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-03-04"},{"lineNumber":69,"author":{"gitId":"ashleygoh1"},"content":" .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_INTERVIEW)","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"eunrcn"},"content":" .withJobDescription(VALID_JOB_DESCRIPTION_BOB).withInterviewDate(VALID_INTERVIEW_DATE_BOB)","lastModifiedDate":"2024-03-04"},{"lineNumber":71,"author":{"gitId":"eunrcn"},"content":" .withInternDuration(VALID_INTERN_DURATION_BOB).withSalary(VALID_SALARY_BOB).build();","lastModifiedDate":"2024-03-04"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":73,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2024-03-12"},{"lineNumber":74,"author":{"gitId":"chenyixin0"},"content":" .withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-03-12"},{"lineNumber":75,"author":{"gitId":"ashleygoh1"},"content":" .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_INTERVIEW)","lastModifiedDate":"2024-03-13"},{"lineNumber":76,"author":{"gitId":"eunrcn"},"content":" .withJobDescription(VALID_JOB_DESCRIPTION_BOB).withInterviewDate(VALID_INTERVIEW_DATE_BOB)","lastModifiedDate":"2024-03-04"},{"lineNumber":77,"author":{"gitId":"eunrcn"},"content":" .withInternDuration(VALID_INTERN_DURATION_BOB).withSalary(VALID_SALARY_BOB).build();","lastModifiedDate":"2024-03-04"},{"lineNumber":78,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(indexLastPerson, descriptor);","lastModifiedDate":"2024-03-04"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":81,"author":{"gitId":"eunrcn"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS,","lastModifiedDate":"2024-03-04"},{"lineNumber":82,"author":{"gitId":"eunrcn"},"content":" Messages.format(editedPerson));","lastModifiedDate":"2024-03-04"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":84,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-03-04"},{"lineNumber":85,"author":{"gitId":"-"},"content":" expectedModel.setPerson(lastPerson, editedPerson);","lastModifiedDate":"2024-03-04"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":87,"author":{"gitId":"eunrcn"},"content":" // Print actual values for debugging","lastModifiedDate":"2024-03-04"},{"lineNumber":88,"author":{"gitId":"eunrcn"},"content":" System.out.println(\"Actual Message: \" + expectedMessage);","lastModifiedDate":"2024-03-04"},{"lineNumber":89,"author":{"gitId":"eunrcn"},"content":" System.out.println(\"Actual Model: \" + expectedModel);","lastModifiedDate":"2024-03-04"},{"lineNumber":90,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-04"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-04"},{"lineNumber":95,"author":{"gitId":"-"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2024-03-04"},{"lineNumber":96,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, new EditPersonDescriptor());","lastModifiedDate":"2024-03-04"},{"lineNumber":97,"author":{"gitId":"-"},"content":" Person editedPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-03-04"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":99,"author":{"gitId":"eunrcn"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS,","lastModifiedDate":"2024-03-04"},{"lineNumber":100,"author":{"gitId":"eunrcn"},"content":" Messages.format(editedPerson));","lastModifiedDate":"2024-03-04"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":102,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-03-04"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-04"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-04"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2024-03-04"},{"lineNumber":109,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2024-03-04"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":111,"author":{"gitId":"-"},"content":" Person personInFilteredList \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-03-04"},{"lineNumber":112,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder(personInFilteredList).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-04"},{"lineNumber":113,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2024-03-04"},{"lineNumber":114,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2024-03-04"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":116,"author":{"gitId":"eunrcn"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS,","lastModifiedDate":"2024-03-04"},{"lineNumber":117,"author":{"gitId":"eunrcn"},"content":" Messages.format(editedPerson));","lastModifiedDate":"2024-03-04"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":119,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-03-04"},{"lineNumber":120,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2024-03-04"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-04"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":125,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-04"},{"lineNumber":126,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonUnfilteredList_failure() {","lastModifiedDate":"2024-03-04"},{"lineNumber":127,"author":{"gitId":"-"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-03-04"},{"lineNumber":128,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(firstPerson).build();","lastModifiedDate":"2024-03-04"},{"lineNumber":129,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_SECOND_PERSON, descriptor);","lastModifiedDate":"2024-03-04"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":131,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2024-03-04"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":134,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-04"},{"lineNumber":135,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonFilteredList_failure() {","lastModifiedDate":"2024-03-04"},{"lineNumber":136,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2024-03-04"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":138,"author":{"gitId":"-"},"content":" // edit person in filtered list into a duplicate in address book","lastModifiedDate":"2024-03-04"},{"lineNumber":139,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(INDEX_SECOND_PERSON.getZeroBased());","lastModifiedDate":"2024-03-04"},{"lineNumber":140,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2024-03-04"},{"lineNumber":141,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder(personInList).build());","lastModifiedDate":"2024-03-04"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":143,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2024-03-04"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":146,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-04"},{"lineNumber":147,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2024-03-04"},{"lineNumber":148,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2024-03-04"},{"lineNumber":149,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-04"},{"lineNumber":150,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2024-03-04"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":152,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-04"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":155,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-04"},{"lineNumber":156,"author":{"gitId":"-"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2024-03-04"},{"lineNumber":157,"author":{"gitId":"-"},"content":" * but smaller than size of address book","lastModifiedDate":"2024-03-04"},{"lineNumber":158,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-04"},{"lineNumber":159,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-04"},{"lineNumber":160,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2024-03-04"},{"lineNumber":161,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2024-03-04"},{"lineNumber":162,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2024-03-04"},{"lineNumber":163,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2024-03-04"},{"lineNumber":164,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2024-03-04"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":166,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex,","lastModifiedDate":"2024-03-04"},{"lineNumber":167,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2024-03-04"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":169,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-04"},{"lineNumber":170,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":172,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-04"},{"lineNumber":173,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2024-03-04"},{"lineNumber":174,"author":{"gitId":"-"},"content":" final EditCommand standardCommand \u003d new EditCommand(INDEX_FIRST_PERSON, DESC_AMY);","lastModifiedDate":"2024-03-04"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":176,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-04"},{"lineNumber":177,"author":{"gitId":"-"},"content":" EditPersonDescriptor copyDescriptor \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2024-03-04"},{"lineNumber":178,"author":{"gitId":"-"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(INDEX_FIRST_PERSON, copyDescriptor);","lastModifiedDate":"2024-03-04"},{"lineNumber":179,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2024-03-04"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":181,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-04"},{"lineNumber":182,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2024-03-04"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":184,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-04"},{"lineNumber":185,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2024-03-04"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":187,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-04"},{"lineNumber":188,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2024-03-04"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":190,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2024-03-04"},{"lineNumber":191,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_SECOND_PERSON, DESC_AMY)));","lastModifiedDate":"2024-03-04"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":193,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2024-03-04"},{"lineNumber":194,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_FIRST_PERSON, DESC_BOB)));","lastModifiedDate":"2024-03-04"},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":197,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-04"},{"lineNumber":198,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-04"},{"lineNumber":199,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-03-04"},{"lineNumber":200,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2024-03-04"},{"lineNumber":201,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2024-03-04"},{"lineNumber":202,"author":{"gitId":"-"},"content":" String expected \u003d EditCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", editPersonDescriptor\u003d\"","lastModifiedDate":"2024-03-04"},{"lineNumber":203,"author":{"gitId":"-"},"content":" + editPersonDescriptor + \"}\";","lastModifiedDate":"2024-03-04"},{"lineNumber":204,"author":{"gitId":"-"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2024-03-04"},{"lineNumber":205,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":207,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-03-04"}],"authorContributionMap":{"eunrcn":15,"chenyixin0":7,"Jawad280":8,"ashleygoh1":3,"-":174}},{"path":"src/test/java/seedu/address/logic/commands/EditPersonDescriptorTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-04"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-04"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-04"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"Jawad280"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"Jawad280"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"Jawad280"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_INTERN_DURATION_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"Jawad280"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_INTERVIEW_DATE_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"Jawad280"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_JOB_DESCRIPTION_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"Jawad280"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"Jawad280"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"Jawad280"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SALARY_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_INTERVIEW;","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"Jawad280"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_NO_REPLY;","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-04"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2024-03-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2024-03-04"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorTest {","lastModifiedDate":"2024-03-04"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-04"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2024-03-04"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-04"},{"lineNumber":32,"author":{"gitId":"Jawad280"},"content":" EditPersonDescriptor descriptorWithSameValues \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"Jawad280"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"Jawad280"},"content":" .withTags(VALID_TAG_NO_REPLY).withJobDescription(VALID_JOB_DESCRIPTION_AMY)","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"Jawad280"},"content":" .withInterviewDate(VALID_INTERVIEW_DATE_AMY).withInternDuration(VALID_INTERN_DURATION_AMY)","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"Jawad280"},"content":" .withSalary(VALID_SALARY_AMY).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(descriptorWithSameValues));","lastModifiedDate":"2024-03-04"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":39,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-04"},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(DESC_AMY));","lastModifiedDate":"2024-03-04"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":42,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-04"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(null));","lastModifiedDate":"2024-03-04"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-04"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(5));","lastModifiedDate":"2024-03-04"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-04"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(DESC_BOB));","lastModifiedDate":"2024-03-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2024-03-04"},{"lineNumber":52,"author":{"gitId":"-"},"content":" EditPersonDescriptor editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-04"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2024-03-04"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2024-03-04"},{"lineNumber":56,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2024-03-04"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2024-03-04"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2024-03-04"},{"lineNumber":60,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2024-03-04"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2024-03-04"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":63,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2024-03-04"},{"lineNumber":64,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2024-03-04"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2024-03-04"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":67,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2024-03-04"},{"lineNumber":68,"author":{"gitId":"ashleygoh1"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withTags(VALID_TAG_INTERVIEW).build();","lastModifiedDate":"2024-03-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2024-03-04"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-04"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-04"},{"lineNumber":74,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2024-03-04"},{"lineNumber":75,"author":{"gitId":"eunrcn"},"content":" String expected \u003d EditPersonDescriptor.class.getCanonicalName() + \"{Edited Person:\"","lastModifiedDate":"2024-03-04"},{"lineNumber":76,"author":{"gitId":"eunrcn"},"content":" + editPersonDescriptor.getName().orElse(null) + \"; Phone: \"","lastModifiedDate":"2024-03-04"},{"lineNumber":77,"author":{"gitId":"eunrcn"},"content":" + editPersonDescriptor.getPhone().orElse(null) + \"; Email: \"","lastModifiedDate":"2024-03-04"},{"lineNumber":78,"author":{"gitId":"eunrcn"},"content":" + editPersonDescriptor.getEmail().orElse(null) + \"; Address: \"","lastModifiedDate":"2024-03-04"},{"lineNumber":79,"author":{"gitId":"eunrcn"},"content":" + editPersonDescriptor.getAddress().orElse(null) + \"; Tags: \"","lastModifiedDate":"2024-03-04"},{"lineNumber":80,"author":{"gitId":"eunrcn"},"content":" + editPersonDescriptor.getTag().orElse(null) + \"; Job Description: \"","lastModifiedDate":"2024-03-04"},{"lineNumber":81,"author":{"gitId":"eunrcn"},"content":" + editPersonDescriptor.getJobDescription().orElse(null) + \"; Interview Date: \"","lastModifiedDate":"2024-03-04"},{"lineNumber":82,"author":{"gitId":"eunrcn"},"content":" + editPersonDescriptor.getInterviewDate().orElse(null) + \"; Internship Duration: \"","lastModifiedDate":"2024-03-04"},{"lineNumber":83,"author":{"gitId":"eunrcn"},"content":" + editPersonDescriptor.getInternDuration().orElse(null) + \"; Salary: \"","lastModifiedDate":"2024-03-04"},{"lineNumber":84,"author":{"gitId":"eunrcn"},"content":" + editPersonDescriptor.getSalary().orElse(null) + \"}\";","lastModifiedDate":"2024-03-04"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":86,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-03-04"}],"authorContributionMap":{"eunrcn":10,"Jawad280":14,"ashleygoh1":2,"-":60}},{"path":"src/test/java/seedu/address/logic/commands/FindCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.CARL;","lastModifiedDate":"2017-07-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ELLE;","lastModifiedDate":"2017-07-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.FIONA;","lastModifiedDate":"2017-07-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code FindCommand}.","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class FindCommandTest {","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2018-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicate \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"first\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate secondPredicate \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"second\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":" FindCommand findFirstCommand \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" FindCommand findSecondCommand \u003d new FindCommand(secondPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" FindCommand findFirstCommandCopy \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommandCopy));","lastModifiedDate":"2017-06-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(1));","lastModifiedDate":"2017-06-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(null));","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(findSecondCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void execute_zeroKeywords_noPersonFound() {","lastModifiedDate":"2017-08-15"},{"lineNumber":57,"author":{"gitId":"chenyixin0"},"content":" // String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\" \");","lastModifiedDate":"2018-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2024-03-15"},{"lineNumber":60,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":61,"author":{"gitId":"chenyixin0"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":62,"author":{"gitId":"chenyixin0"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":63,"author":{"gitId":"chenyixin0"},"content":" // this test will always fail because the way I implemented the find the list of found names will be","lastModifiedDate":"2024-03-08"},{"lineNumber":64,"author":{"gitId":"chenyixin0"},"content":" // returned as a separate list instead of modifying the existing list inside the model which is","lastModifiedDate":"2024-03-08"},{"lineNumber":65,"author":{"gitId":"chenyixin0"},"content":" // what assertCommandSuccess checks for.","lastModifiedDate":"2024-03-08"},{"lineNumber":66,"author":{"gitId":"chenyixin0"},"content":" // with the current implementation this test is also kind of irrelevant since the find command will not","lastModifiedDate":"2024-03-08"},{"lineNumber":67,"author":{"gitId":"chenyixin0"},"content":" // actually modify the model itself.","lastModifiedDate":"2024-03-08"},{"lineNumber":68,"author":{"gitId":"chenyixin0"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":69,"author":{"gitId":"chenyixin0"},"content":" //assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-08"},{"lineNumber":70,"author":{"gitId":"chenyixin0"},"content":" assertEquals(Collections.emptyList(), model.generateNewFilteredPersonList(predicate));","lastModifiedDate":"2024-03-08"},{"lineNumber":71,"author":{"gitId":"chenyixin0"},"content":" assertEquals(Collections.emptyList(), command.execute(model).getViewList());","lastModifiedDate":"2024-03-15"},{"lineNumber":72,"author":{"gitId":"chenyixin0"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":73,"author":{"gitId":"chenyixin0"},"content":" assertEquals(0, model.generateNewFilteredPersonList(predicate).size());","lastModifiedDate":"2024-03-15"},{"lineNumber":74,"author":{"gitId":"chenyixin0"},"content":" // theres no view size i hope that\u0027s not a problem","lastModifiedDate":"2024-03-15"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void execute_multipleKeywords_multiplePersonsFound() {","lastModifiedDate":"2017-08-15"},{"lineNumber":79,"author":{"gitId":"chenyixin0"},"content":" // String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 3);","lastModifiedDate":"2024-03-15"},{"lineNumber":80,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\"Kurz Elle Kunz\");","lastModifiedDate":"2018-08-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2024-03-15"},{"lineNumber":82,"author":{"gitId":"chenyixin0"},"content":" // expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-03-15"},{"lineNumber":83,"author":{"gitId":"chenyixin0"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":84,"author":{"gitId":"chenyixin0"},"content":" //following line will always fail; see above","lastModifiedDate":"2024-03-08"},{"lineNumber":85,"author":{"gitId":"chenyixin0"},"content":" //assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-08"},{"lineNumber":86,"author":{"gitId":"chenyixin0"},"content":" assertEquals(Arrays.asList(CARL, ELLE, FIONA), model.generateNewFilteredPersonList(predicate));","lastModifiedDate":"2024-03-08"},{"lineNumber":87,"author":{"gitId":"chenyixin0"},"content":" assertEquals(Arrays.asList(CARL, ELLE, FIONA), command.execute(model).getViewList());","lastModifiedDate":"2024-03-15"},{"lineNumber":88,"author":{"gitId":"chenyixin0"},"content":" assertEquals(3, model.generateNewFilteredPersonList(predicate).size());","lastModifiedDate":"2024-03-15"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"keyword\"));","lastModifiedDate":"2019-02-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":" FindCommand findCommand \u003d new FindCommand(predicate);","lastModifiedDate":"2019-02-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":" String expected \u003d FindCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertEquals(expected, findCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-12"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * Parses {@code userInput} into a {@code NameContainsKeywordsPredicate}.","lastModifiedDate":"2018-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":102,"author":{"gitId":"-"},"content":" private NameContainsKeywordsPredicate preparePredicate(String userInput) {","lastModifiedDate":"2018-08-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":" return new NameContainsKeywordsPredicate(Arrays.asList(userInput.split(\"\\\\s+\")));","lastModifiedDate":"2018-08-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":105,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"chenyixin0":23,"-":82}},{"path":"src/test/java/seedu/address/logic/commands/ViewCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"eunrcn"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"eunrcn"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"eunrcn"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"eunrcn"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"eunrcn"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"eunrcn"},"content":"import java.util.List;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"eunrcn"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"eunrcn"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"eunrcn"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"eunrcn"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"eunrcn"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"eunrcn"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"eunrcn"},"content":"class ViewCommandTest {","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"eunrcn"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"eunrcn"},"content":" void execute_validIndex_success() throws CommandException {","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"eunrcn"},"content":" Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"eunrcn"},"content":" List\u003cPerson\u003e personList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"eunrcn"},"content":" Person personToView \u003d personList.get(0);","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"eunrcn"},"content":" ViewCommand viewCommand \u003d new ViewCommand(Index.fromZeroBased(0));","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"eunrcn"},"content":" CommandResult commandResult \u003d viewCommand.execute(model);","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"eunrcn"},"content":" assertEquals(","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"eunrcn"},"content":" String.format(","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"ashleygoh1"},"content":" \"Viewing Person: %s; Phone: %s; Email: %s; Address: %s; Tags: %s; \"","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"ashleygoh1"},"content":" + \"Job Description: %s; Interview Date: %s; Internship Duration: %s; Salary: %s\",","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"eunrcn"},"content":" personToView.getCompanyName(),","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"eunrcn"},"content":" personToView.getPhone(),","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"eunrcn"},"content":" personToView.getEmail(),","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"eunrcn"},"content":" personToView.getAddress(),","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"eunrcn"},"content":" personToView.getTag(),","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"eunrcn"},"content":" personToView.getJobDescription(),","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"eunrcn"},"content":" personToView.getInterviewDate(),","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"eunrcn"},"content":" personToView.getInternDuration(),","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"eunrcn"},"content":" personToView.getSalary()","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"eunrcn"},"content":" ),","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"eunrcn"},"content":" commandResult.getFeedbackToUser()","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"eunrcn"},"content":" );","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"eunrcn"},"content":" assertEquals(personToView, commandResult.getViewPerson());","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"eunrcn"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"eunrcn"},"content":" void execute_invalidIndex_throwsCommandException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"eunrcn"},"content":" Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"eunrcn"},"content":" ViewCommand viewCommand \u003d new ViewCommand(Index.fromZeroBased(10)); // Assuming there are fewer than 10 persons","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"eunrcn"},"content":" assertThrows(CommandException.class, () -\u003e viewCommand.execute(model));","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"eunrcn"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"eunrcn"},"content":" void equals_sameObject_true() {","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"eunrcn"},"content":" ViewCommand viewCommand \u003d new ViewCommand(Index.fromZeroBased(0));","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"eunrcn"},"content":" assertEquals(viewCommand, viewCommand);","lastModifiedDate":"2024-03-14"},{"lineNumber":63,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"eunrcn"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":66,"author":{"gitId":"eunrcn"},"content":" void equals_differentObject_false() {","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"eunrcn"},"content":" ViewCommand viewCommand1 \u003d new ViewCommand(Index.fromZeroBased(0));","lastModifiedDate":"2024-03-12"},{"lineNumber":68,"author":{"gitId":"eunrcn"},"content":" ViewCommand viewCommand2 \u003d new ViewCommand(Index.fromZeroBased(1));","lastModifiedDate":"2024-03-12"},{"lineNumber":69,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"eunrcn"},"content":" assertNotEquals(viewCommand1, viewCommand2);","lastModifiedDate":"2024-03-14"},{"lineNumber":71,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":72,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":73,"author":{"gitId":"eunrcn"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":74,"author":{"gitId":"eunrcn"},"content":" void equals_differentClass_false() {","lastModifiedDate":"2024-03-12"},{"lineNumber":75,"author":{"gitId":"eunrcn"},"content":" ViewCommand viewCommand \u003d new ViewCommand(Index.fromZeroBased(0));","lastModifiedDate":"2024-03-12"},{"lineNumber":76,"author":{"gitId":"eunrcn"},"content":" Object otherObject \u003d new Object();","lastModifiedDate":"2024-03-12"},{"lineNumber":77,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":78,"author":{"gitId":"eunrcn"},"content":" assertNotEquals(viewCommand, otherObject);","lastModifiedDate":"2024-03-14"},{"lineNumber":79,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":80,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":81,"author":{"gitId":"eunrcn"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":82,"author":{"gitId":"eunrcn"},"content":" public void toString_validIndex_success() {","lastModifiedDate":"2024-03-14"},{"lineNumber":83,"author":{"gitId":"eunrcn"},"content":" // Create an Index object","lastModifiedDate":"2024-03-14"},{"lineNumber":84,"author":{"gitId":"eunrcn"},"content":" Index index \u003d Index.fromZeroBased(3);","lastModifiedDate":"2024-03-14"},{"lineNumber":85,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":86,"author":{"gitId":"eunrcn"},"content":" // Create a ViewCommand object using the Index","lastModifiedDate":"2024-03-14"},{"lineNumber":87,"author":{"gitId":"eunrcn"},"content":" ViewCommand viewCommand \u003d new ViewCommand(index);","lastModifiedDate":"2024-03-14"},{"lineNumber":88,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":89,"author":{"gitId":"eunrcn"},"content":" // Create the expected string representation using variables","lastModifiedDate":"2024-03-14"},{"lineNumber":90,"author":{"gitId":"eunrcn"},"content":" String expectedToString \u003d String.format(\"seedu.address.logic.commands.ViewCommand{targetIndex\u003d%s}\", index);","lastModifiedDate":"2024-03-14"},{"lineNumber":91,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":92,"author":{"gitId":"eunrcn"},"content":" // Perform the assertion","lastModifiedDate":"2024-03-14"},{"lineNumber":93,"author":{"gitId":"eunrcn"},"content":" assertEquals(expectedToString, viewCommand.toString());","lastModifiedDate":"2024-03-14"},{"lineNumber":94,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":95,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":96,"author":{"gitId":"eunrcn"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"eunrcn":93,"ashleygoh1":3}},{"path":"src/test/java/seedu/address/logic/parser/AddCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-15"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INTERN_DURATION_DESC_AMY;","lastModifiedDate":"2024-02-26"},{"lineNumber":9,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INTERN_DURATION_DESC_BOB;","lastModifiedDate":"2024-02-26"},{"lineNumber":10,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INTERVIEW_DATE_DESC_AMY;","lastModifiedDate":"2024-02-26"},{"lineNumber":11,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INTERVIEW_DATE_DESC_BOB;","lastModifiedDate":"2024-02-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":14,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_INTERN_DURATION_DESC;","lastModifiedDate":"2024-02-26"},{"lineNumber":15,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_JOB_DESCRIPTION_DESC;","lastModifiedDate":"2024-02-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":18,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_SALARY_DESC;","lastModifiedDate":"2024-02-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":20,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.JOB_DESCRIPTION_DESC_AMY;","lastModifiedDate":"2024-02-26"},{"lineNumber":21,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.JOB_DESCRIPTION_DESC_BOB;","lastModifiedDate":"2024-02-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2017-12-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2017-12-23"},{"lineNumber":28,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SALARY_DESC_AMY;","lastModifiedDate":"2024-02-26"},{"lineNumber":29,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SALARY_DESC_BOB;","lastModifiedDate":"2024-02-26"},{"lineNumber":30,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_INTERVIEW;","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_NO_REPLY;","lastModifiedDate":"2024-02-26"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":34,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_INTERN_DURATION_BOB;","lastModifiedDate":"2024-02-26"},{"lineNumber":35,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_INTERVIEW_DATE_BOB;","lastModifiedDate":"2024-02-26"},{"lineNumber":36,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_JOB_DESCRIPTION_BOB;","lastModifiedDate":"2024-02-26"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14"},{"lineNumber":40,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14"},{"lineNumber":41,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_INTERN_DURATION;","lastModifiedDate":"2024-02-26"},{"lineNumber":42,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_INTERVIEW_DATE;","lastModifiedDate":"2024-02-26"},{"lineNumber":43,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_JOB_DESCRIPTION;","lastModifiedDate":"2024-02-26"},{"lineNumber":44,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-07-14"},{"lineNumber":45,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14"},{"lineNumber":46,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SALARY;","lastModifiedDate":"2024-02-26"},{"lineNumber":47,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-02-26"},{"lineNumber":48,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":49,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":50,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-07-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":52,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":54,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":55,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-06-15"},{"lineNumber":57,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.InternDuration;","lastModifiedDate":"2024-02-26"},{"lineNumber":58,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.JobDescription;","lastModifiedDate":"2024-02-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-06-15"},{"lineNumber":60,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15"},{"lineNumber":61,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-06-15"},{"lineNumber":62,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.Salary;","lastModifiedDate":"2024-02-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-06-15"},{"lineNumber":64,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":66,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":67,"author":{"gitId":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2017-06-15"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":71,"author":{"gitId":"ashleygoh1"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB).build();","lastModifiedDate":"2024-02-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":73,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":75,"author":{"gitId":"ashleygoh1"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_INTERVIEW","lastModifiedDate":"2024-03-12"},{"lineNumber":76,"author":{"gitId":"ashleygoh1"},"content":" + JOB_DESCRIPTION_DESC_BOB + INTERVIEW_DATE_DESC_BOB","lastModifiedDate":"2024-02-26"},{"lineNumber":77,"author":{"gitId":"ashleygoh1"},"content":" + INTERN_DURATION_DESC_BOB + SALARY_DESC_BOB, new AddCommand(expectedPerson));","lastModifiedDate":"2024-02-26"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":83,"author":{"gitId":"-"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-07-14"},{"lineNumber":84,"author":{"gitId":"ashleygoh1"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_INTERVIEW","lastModifiedDate":"2024-03-12"},{"lineNumber":85,"author":{"gitId":"ashleygoh1"},"content":" + JOB_DESCRIPTION_DESC_BOB + INTERVIEW_DATE_DESC_BOB","lastModifiedDate":"2024-02-26"},{"lineNumber":86,"author":{"gitId":"ashleygoh1"},"content":" + INTERN_DURATION_DESC_BOB + SALARY_DESC_BOB;","lastModifiedDate":"2024-02-26"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":88,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":90,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":92,"author":{"gitId":"-"},"content":" // multiple phones","lastModifiedDate":"2023-07-14"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":94,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":96,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14"},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":98,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":100,"author":{"gitId":"-"},"content":" // multiple addresses","lastModifiedDate":"2023-07-14"},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertParseFailure(parser, ADDRESS_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":104,"author":{"gitId":"ashleygoh1"},"content":" // multiple job description","lastModifiedDate":"2024-02-26"},{"lineNumber":105,"author":{"gitId":"ashleygoh1"},"content":" assertParseFailure(parser, JOB_DESCRIPTION_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-02-26"},{"lineNumber":106,"author":{"gitId":"ashleygoh1"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_JOB_DESCRIPTION));","lastModifiedDate":"2024-02-26"},{"lineNumber":107,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":108,"author":{"gitId":"ashleygoh1"},"content":" // multiple interview date","lastModifiedDate":"2024-02-26"},{"lineNumber":109,"author":{"gitId":"ashleygoh1"},"content":" assertParseFailure(parser, INTERVIEW_DATE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-02-26"},{"lineNumber":110,"author":{"gitId":"ashleygoh1"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_INTERVIEW_DATE));","lastModifiedDate":"2024-02-26"},{"lineNumber":111,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":112,"author":{"gitId":"ashleygoh1"},"content":" // multiple intern duration","lastModifiedDate":"2024-02-26"},{"lineNumber":113,"author":{"gitId":"ashleygoh1"},"content":" assertParseFailure(parser, INTERN_DURATION_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-02-26"},{"lineNumber":114,"author":{"gitId":"ashleygoh1"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_INTERN_DURATION));","lastModifiedDate":"2024-02-26"},{"lineNumber":115,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":116,"author":{"gitId":"ashleygoh1"},"content":" // multiple salary","lastModifiedDate":"2024-02-26"},{"lineNumber":117,"author":{"gitId":"ashleygoh1"},"content":" assertParseFailure(parser, SALARY_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-02-26"},{"lineNumber":118,"author":{"gitId":"ashleygoh1"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_SALARY));","lastModifiedDate":"2024-02-26"},{"lineNumber":119,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":120,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":" validExpectedPersonString + PHONE_DESC_AMY + EMAIL_DESC_AMY + NAME_DESC_AMY + ADDRESS_DESC_AMY","lastModifiedDate":"2023-07-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":" + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":124,"author":{"gitId":"ashleygoh1"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_ADDRESS, PREFIX_EMAIL, PREFIX_PHONE,","lastModifiedDate":"2024-02-26"},{"lineNumber":125,"author":{"gitId":"ashleygoh1"},"content":" PREFIX_TAG, PREFIX_JOB_DESCRIPTION, PREFIX_INTERVIEW_DATE, PREFIX_INTERN_DURATION,","lastModifiedDate":"2024-02-26"},{"lineNumber":126,"author":{"gitId":"ashleygoh1"},"content":" PREFIX_SALARY));","lastModifiedDate":"2024-02-26"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":128,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":130,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":131,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":132,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":134,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":135,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":136,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":138,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":139,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_PHONE_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":140,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":142,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":143,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_ADDRESS_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":144,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":146,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":148,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":149,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":150,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":152,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":153,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":154,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":156,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":157,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_PHONE_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":158,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":160,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":161,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_ADDRESS_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":162,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":165,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":166,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":167,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":169,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":170,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":173,"author":{"gitId":"-"},"content":" // missing phone prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":174,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_PHONE_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":177,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":178,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":181,"author":{"gitId":"-"},"content":" // missing address prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":182,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":185,"author":{"gitId":"ashleygoh1"},"content":" // missing tag prefix","lastModifiedDate":"2024-02-26"},{"lineNumber":186,"author":{"gitId":"ashleygoh1"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2024-02-26"},{"lineNumber":187,"author":{"gitId":"ashleygoh1"},"content":" expectedMessage);","lastModifiedDate":"2024-02-26"},{"lineNumber":188,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":189,"author":{"gitId":"ashleygoh1"},"content":" // missing job description prefix","lastModifiedDate":"2024-02-26"},{"lineNumber":190,"author":{"gitId":"ashleygoh1"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + VALID_ADDRESS_BOB","lastModifiedDate":"2024-02-26"},{"lineNumber":191,"author":{"gitId":"ashleygoh1"},"content":" + VALID_JOB_DESCRIPTION_BOB,","lastModifiedDate":"2024-02-26"},{"lineNumber":192,"author":{"gitId":"ashleygoh1"},"content":" expectedMessage);","lastModifiedDate":"2024-02-26"},{"lineNumber":193,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":194,"author":{"gitId":"ashleygoh1"},"content":" // missing interview date prefix","lastModifiedDate":"2024-02-26"},{"lineNumber":195,"author":{"gitId":"ashleygoh1"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + VALID_ADDRESS_BOB","lastModifiedDate":"2024-02-26"},{"lineNumber":196,"author":{"gitId":"ashleygoh1"},"content":" + VALID_INTERVIEW_DATE_BOB,","lastModifiedDate":"2024-02-26"},{"lineNumber":197,"author":{"gitId":"ashleygoh1"},"content":" expectedMessage);","lastModifiedDate":"2024-02-26"},{"lineNumber":198,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":199,"author":{"gitId":"ashleygoh1"},"content":" // missing intern duration prefix","lastModifiedDate":"2024-02-26"},{"lineNumber":200,"author":{"gitId":"ashleygoh1"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + VALID_ADDRESS_BOB","lastModifiedDate":"2024-02-26"},{"lineNumber":201,"author":{"gitId":"ashleygoh1"},"content":" + VALID_INTERN_DURATION_BOB,","lastModifiedDate":"2024-02-26"},{"lineNumber":202,"author":{"gitId":"ashleygoh1"},"content":" expectedMessage);","lastModifiedDate":"2024-02-26"},{"lineNumber":203,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":204,"author":{"gitId":"ashleygoh1"},"content":" // missing salary prefix","lastModifiedDate":"2024-02-26"},{"lineNumber":205,"author":{"gitId":"ashleygoh1"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2024-02-26"},{"lineNumber":206,"author":{"gitId":"ashleygoh1"},"content":" expectedMessage);","lastModifiedDate":"2024-02-26"},{"lineNumber":207,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":208,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15"},{"lineNumber":209,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_PHONE_BOB + VALID_EMAIL_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":210,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":213,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":214,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":215,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15"},{"lineNumber":216,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":217,"author":{"gitId":"ashleygoh1"},"content":" + TAG_DESC_INTERVIEW + JOB_DESCRIPTION_DESC_BOB + INTERVIEW_DATE_DESC_BOB","lastModifiedDate":"2024-03-12"},{"lineNumber":218,"author":{"gitId":"ashleygoh1"},"content":" + INTERN_DURATION_DESC_BOB + SALARY_DESC_BOB, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-26"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":220,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15"},{"lineNumber":221,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_PHONE_DESC + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":222,"author":{"gitId":"ashleygoh1"},"content":" + TAG_DESC_INTERVIEW + JOB_DESCRIPTION_DESC_BOB + INTERVIEW_DATE_DESC_BOB","lastModifiedDate":"2024-03-12"},{"lineNumber":223,"author":{"gitId":"ashleygoh1"},"content":" + INTERN_DURATION_DESC_BOB + SALARY_DESC_BOB, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-26"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":225,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15"},{"lineNumber":226,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":227,"author":{"gitId":"ashleygoh1"},"content":" + TAG_DESC_INTERVIEW + JOB_DESCRIPTION_DESC_BOB + INTERVIEW_DATE_DESC_BOB","lastModifiedDate":"2024-03-12"},{"lineNumber":228,"author":{"gitId":"ashleygoh1"},"content":" + INTERN_DURATION_DESC_BOB + SALARY_DESC_BOB, Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-26"},{"lineNumber":229,"author":{"gitId":"-"},"content":" // invalid tag","lastModifiedDate":"2017-06-15"},{"lineNumber":230,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":231,"author":{"gitId":"ashleygoh1"},"content":" + INVALID_TAG_DESC + JOB_DESCRIPTION_DESC_BOB + INTERVIEW_DATE_DESC_BOB","lastModifiedDate":"2024-02-26"},{"lineNumber":232,"author":{"gitId":"ashleygoh1"},"content":" + INTERN_DURATION_DESC_BOB + SALARY_DESC_BOB, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-26"},{"lineNumber":233,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":234,"author":{"gitId":"ashleygoh1"},"content":" // invalid job description","lastModifiedDate":"2024-02-26"},{"lineNumber":235,"author":{"gitId":"ashleygoh1"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-02-26"},{"lineNumber":236,"author":{"gitId":"ashleygoh1"},"content":" + TAG_DESC_INTERVIEW + INVALID_JOB_DESCRIPTION_DESC + INTERVIEW_DATE_DESC_BOB","lastModifiedDate":"2024-03-12"},{"lineNumber":237,"author":{"gitId":"ashleygoh1"},"content":" + INTERN_DURATION_DESC_BOB + SALARY_DESC_BOB, JobDescription.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-26"},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":239,"author":{"gitId":"ashleygoh1"},"content":" // invalid intern duration","lastModifiedDate":"2024-02-26"},{"lineNumber":240,"author":{"gitId":"ashleygoh1"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-02-26"},{"lineNumber":241,"author":{"gitId":"ashleygoh1"},"content":" + TAG_DESC_INTERVIEW + JOB_DESCRIPTION_DESC_BOB + INTERVIEW_DATE_DESC_BOB","lastModifiedDate":"2024-03-12"},{"lineNumber":242,"author":{"gitId":"ashleygoh1"},"content":" + INVALID_INTERN_DURATION_DESC + SALARY_DESC_BOB, InternDuration.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-26"},{"lineNumber":243,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":244,"author":{"gitId":"ashleygoh1"},"content":" // invalid salary","lastModifiedDate":"2024-02-26"},{"lineNumber":245,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-02-26"},{"lineNumber":246,"author":{"gitId":"ashleygoh1"},"content":" + TAG_DESC_INTERVIEW + JOB_DESCRIPTION_DESC_BOB + INTERVIEW_DATE_DESC_BOB","lastModifiedDate":"2024-03-12"},{"lineNumber":247,"author":{"gitId":"ashleygoh1"},"content":" + INTERN_DURATION_DESC_BOB + INVALID_SALARY_DESC, Salary.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-26"},{"lineNumber":248,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":249,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15"},{"lineNumber":250,"author":{"gitId":"ashleygoh1"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2024-02-26"},{"lineNumber":251,"author":{"gitId":"ashleygoh1"},"content":" + TAG_DESC_INTERVIEW + JOB_DESCRIPTION_DESC_BOB + INTERVIEW_DATE_DESC_BOB","lastModifiedDate":"2024-03-12"},{"lineNumber":252,"author":{"gitId":"ashleygoh1"},"content":" + INTERN_DURATION_DESC_BOB + INVALID_SALARY_DESC,","lastModifiedDate":"2024-02-26"},{"lineNumber":253,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":257,"author":{"gitId":"ashleygoh1"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_INTERVIEW + TAG_DESC_NO_REPLY,","lastModifiedDate":"2024-03-12"},{"lineNumber":258,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-12-23"},{"lineNumber":259,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":260,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"ashleygoh1":97,"-":163}},{"path":"src/test/java/seedu/address/logic/parser/AddressBookParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":15,"author":{"gitId":"eunrcn"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.logic.commands.ViewCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonUtil;","lastModifiedDate":"2017-06-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":32,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(PersonUtil.getAddCommand(person));","lastModifiedDate":"2017-06-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertEquals(new AddCommand(person), command);","lastModifiedDate":"2017-06-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":44,"author":{"gitId":"eunrcn"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"eunrcn"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"eunrcn"},"content":" Index index \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"eunrcn"},"content":" EditCommand.EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(\"Betty\").build();","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"eunrcn"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"eunrcn"},"content":" String.format(\"%s %d %s\", EditCommand.COMMAND_WORD, index.getOneBased(), \"c/\" + \"Betty\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"eunrcn"},"content":" assertEquals(new EditCommand(index, descriptor), command);","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2024-03-12"},{"lineNumber":63,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"-"},"content":" DeleteCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertEquals(new DeleteCommand(INDEX_FIRST_PERSON), command);","lastModifiedDate":"2024-03-12"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2024-03-12"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2024-03-12"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2024-03-12"},{"lineNumber":76,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2024-03-12"},{"lineNumber":77,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2024-03-12"},{"lineNumber":78,"author":{"gitId":"eunrcn"},"content":" FindCommand.COMMAND_WORD + \" \" + String.join(\" \", keywords));","lastModifiedDate":"2024-03-14"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertEquals(new FindCommand(new NameContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2024-03-12"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2024-03-12"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2024-03-12"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2024-03-12"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2024-03-12"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD) instanceof ListCommand);","lastModifiedDate":"2024-03-12"},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" 3\") instanceof ListCommand);","lastModifiedDate":"2024-03-12"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":94,"author":{"gitId":"eunrcn"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":95,"author":{"gitId":"eunrcn"},"content":" public void parseCommand_view() throws Exception {","lastModifiedDate":"2024-03-12"},{"lineNumber":96,"author":{"gitId":"eunrcn"},"content":" Index index \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-12"},{"lineNumber":97,"author":{"gitId":"eunrcn"},"content":" ViewCommand command \u003d (ViewCommand) parser.parseCommand(","lastModifiedDate":"2024-03-12"},{"lineNumber":98,"author":{"gitId":"eunrcn"},"content":" ViewCommand.COMMAND_WORD + \" \" + (index).getOneBased());","lastModifiedDate":"2024-03-14"},{"lineNumber":99,"author":{"gitId":"eunrcn"},"content":" assertEquals(new ViewCommand(index), command);","lastModifiedDate":"2024-03-12"},{"lineNumber":100,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":109,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":112,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"eunrcn":21,"ashleygoh1":1,"-":90}},{"path":"src/test/java/seedu/address/logic/parser/EditCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-04"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-04"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"chenyixin0"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INTERN_DURATION_DESC_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"chenyixin0"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INTERVIEW_DATE_DESC_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"chenyixin0"},"content":"import static seedu.address.logic.commands.CommandTestUtil.JOB_DESCRIPTION_DESC_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"chenyixin0"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SALARY_DESC_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_INTERVIEW;","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"chenyixin0"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_NO_REPLY;","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"chenyixin0"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_INTERN_DURATION_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"chenyixin0"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_INTERVIEW_DATE_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"chenyixin0"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_JOB_DESCRIPTION_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"chenyixin0"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SALARY_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_INTERVIEW;","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"Jawad280"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_NO_REPLY;","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-04"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-04"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-04"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-04"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-04"},{"lineNumber":38,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-04"},{"lineNumber":39,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-04"},{"lineNumber":40,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2024-03-04"},{"lineNumber":41,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_PERSON;","lastModifiedDate":"2024-03-04"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":43,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-04"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-04"},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-04"},{"lineNumber":47,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2024-03-04"},{"lineNumber":48,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2024-03-04"},{"lineNumber":49,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-04"},{"lineNumber":51,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-04"},{"lineNumber":52,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-04"},{"lineNumber":53,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2024-03-04"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":55,"author":{"gitId":"-"},"content":"public class EditCommandParserTest {","lastModifiedDate":"2024-03-04"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":57,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2024-03-04"},{"lineNumber":58,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-03-04"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":60,"author":{"gitId":"Jawad280"},"content":" private final EditCommandParser parser \u003d new EditCommandParser();","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-04"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2024-03-04"},{"lineNumber":64,"author":{"gitId":"-"},"content":" // no index specified","lastModifiedDate":"2024-03-04"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-04"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":67,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2024-03-04"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\", EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2024-03-04"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":70,"author":{"gitId":"-"},"content":" // no index and no field specified","lastModifiedDate":"2024-03-04"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-04"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-04"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2024-03-04"},{"lineNumber":76,"author":{"gitId":"-"},"content":" // negative index","lastModifiedDate":"2024-03-04"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"-5\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-04"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":79,"author":{"gitId":"-"},"content":" // zero index","lastModifiedDate":"2024-03-04"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"0\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-04"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":82,"author":{"gitId":"-"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2024-03-04"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-04"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":85,"author":{"gitId":"-"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2024-03-04"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 i/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-04"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-04"},{"lineNumber":90,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2024-03-04"},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2024-03-04"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC, Phone.MESSAGE_CONSTRAINTS); // invalid phone","lastModifiedDate":"2024-03-04"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_EMAIL_DESC, Email.MESSAGE_CONSTRAINTS); // invalid email","lastModifiedDate":"2024-03-04"},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_TAG_DESC, Tag.MESSAGE_CONSTRAINTS); // invalid tag","lastModifiedDate":"2024-03-04"},{"lineNumber":95,"author":{"gitId":"Jawad280"},"content":" // Since address is optional, the following testcase is not relevant","lastModifiedDate":"2024-03-11"},{"lineNumber":96,"author":{"gitId":"Jawad280"},"content":" // assertParseFailure(parser, \"1\" + INVALID_ADDRESS_DESC, Address.MESSAGE_CONSTRAINTS); // invalid address","lastModifiedDate":"2024-03-11"},{"lineNumber":97,"author":{"gitId":"-"},"content":" // invalid phone followed by valid email","lastModifiedDate":"2024-03-04"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC + EMAIL_DESC_AMY, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-04"},{"lineNumber":99,"author":{"gitId":"-"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2024-03-04"},{"lineNumber":100,"author":{"gitId":"Jawad280"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC + INVALID_EMAIL_DESC + VALID_ADDRESS_AMY","lastModifiedDate":"2024-03-11"},{"lineNumber":101,"author":{"gitId":"Jawad280"},"content":" + VALID_PHONE_AMY, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-11"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-04"},{"lineNumber":105,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2024-03-04"},{"lineNumber":106,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2024-03-04"},{"lineNumber":107,"author":{"gitId":"eunrcn"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + TAG_DESC_NO_REPLY","lastModifiedDate":"2024-03-04"},{"lineNumber":108,"author":{"gitId":"eunrcn"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + NAME_DESC_AMY + JOB_DESCRIPTION_DESC_AMY + INTERVIEW_DATE_DESC_AMY","lastModifiedDate":"2024-03-04"},{"lineNumber":109,"author":{"gitId":"eunrcn"},"content":" + INTERN_DURATION_DESC_AMY + SALARY_DESC_AMY;","lastModifiedDate":"2024-03-04"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":111,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2024-03-04"},{"lineNumber":112,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2024-03-04"},{"lineNumber":113,"author":{"gitId":"Jawad280"},"content":" .withTags(VALID_TAG_NO_REPLY).withJobDescription(VALID_JOB_DESCRIPTION_AMY)","lastModifiedDate":"2024-03-11"},{"lineNumber":114,"author":{"gitId":"eunrcn"},"content":" .withInterviewDate(VALID_INTERVIEW_DATE_AMY).withInternDuration(VALID_INTERN_DURATION_AMY)","lastModifiedDate":"2024-03-04"},{"lineNumber":115,"author":{"gitId":"eunrcn"},"content":" .withSalary(VALID_SALARY_AMY).build();","lastModifiedDate":"2024-03-04"},{"lineNumber":116,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-04"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-04"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-04"},{"lineNumber":122,"author":{"gitId":"-"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2024-03-04"},{"lineNumber":123,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-04"},{"lineNumber":124,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + EMAIL_DESC_AMY;","lastModifiedDate":"2024-03-04"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":126,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-03-04"},{"lineNumber":127,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2024-03-04"},{"lineNumber":128,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-04"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-04"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":133,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-04"},{"lineNumber":134,"author":{"gitId":"-"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2024-03-04"},{"lineNumber":135,"author":{"gitId":"-"},"content":" // name","lastModifiedDate":"2024-03-04"},{"lineNumber":136,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2024-03-04"},{"lineNumber":137,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + NAME_DESC_AMY;","lastModifiedDate":"2024-03-04"},{"lineNumber":138,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY).build();","lastModifiedDate":"2024-03-04"},{"lineNumber":139,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-04"},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-04"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":142,"author":{"gitId":"-"},"content":" // phone","lastModifiedDate":"2024-03-04"},{"lineNumber":143,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY;","lastModifiedDate":"2024-03-04"},{"lineNumber":144,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_AMY).build();","lastModifiedDate":"2024-03-04"},{"lineNumber":145,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-04"},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-04"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":148,"author":{"gitId":"-"},"content":" // email","lastModifiedDate":"2024-03-04"},{"lineNumber":149,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + EMAIL_DESC_AMY;","lastModifiedDate":"2024-03-04"},{"lineNumber":150,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2024-03-04"},{"lineNumber":151,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-04"},{"lineNumber":152,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-04"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":154,"author":{"gitId":"-"},"content":" // address","lastModifiedDate":"2024-03-04"},{"lineNumber":155,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + ADDRESS_DESC_AMY;","lastModifiedDate":"2024-03-04"},{"lineNumber":156,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withAddress(VALID_ADDRESS_AMY).build();","lastModifiedDate":"2024-03-04"},{"lineNumber":157,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-04"},{"lineNumber":158,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-04"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":160,"author":{"gitId":"Jawad280"},"content":" // tag","lastModifiedDate":"2024-03-11"},{"lineNumber":161,"author":{"gitId":"ashleygoh1"},"content":" userInput \u003d targetIndex.getOneBased() + TAG_DESC_INTERVIEW;","lastModifiedDate":"2024-03-13"},{"lineNumber":162,"author":{"gitId":"ashleygoh1"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withTags(VALID_TAG_INTERVIEW).build();","lastModifiedDate":"2024-03-13"},{"lineNumber":163,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":164,"author":{"gitId":"eunrcn"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-04"},{"lineNumber":165,"author":{"gitId":"eunrcn"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-04"},{"lineNumber":166,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":167,"author":{"gitId":"eunrcn"},"content":" // job description","lastModifiedDate":"2024-03-04"},{"lineNumber":168,"author":{"gitId":"Jawad280"},"content":" userInput \u003d targetIndex.getOneBased() + JOB_DESCRIPTION_DESC_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":169,"author":{"gitId":"eunrcn"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withJobDescription(VALID_JOB_DESCRIPTION_AMY).build();","lastModifiedDate":"2024-03-04"},{"lineNumber":170,"author":{"gitId":"eunrcn"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-04"},{"lineNumber":171,"author":{"gitId":"eunrcn"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-04"},{"lineNumber":172,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":173,"author":{"gitId":"eunrcn"},"content":" // interview date","lastModifiedDate":"2024-03-04"},{"lineNumber":174,"author":{"gitId":"Jawad280"},"content":" userInput \u003d targetIndex.getOneBased() + INTERVIEW_DATE_DESC_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":175,"author":{"gitId":"eunrcn"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withInterviewDate(VALID_INTERVIEW_DATE_AMY).build();","lastModifiedDate":"2024-03-04"},{"lineNumber":176,"author":{"gitId":"eunrcn"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-04"},{"lineNumber":177,"author":{"gitId":"eunrcn"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-04"},{"lineNumber":178,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":179,"author":{"gitId":"eunrcn"},"content":" // intern duration","lastModifiedDate":"2024-03-04"},{"lineNumber":180,"author":{"gitId":"Jawad280"},"content":" userInput \u003d targetIndex.getOneBased() + INTERN_DURATION_DESC_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":181,"author":{"gitId":"eunrcn"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withInternDuration(VALID_INTERN_DURATION_AMY).build();","lastModifiedDate":"2024-03-04"},{"lineNumber":182,"author":{"gitId":"eunrcn"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-04"},{"lineNumber":183,"author":{"gitId":"eunrcn"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-04"},{"lineNumber":184,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":185,"author":{"gitId":"eunrcn"},"content":" // salary","lastModifiedDate":"2024-03-04"},{"lineNumber":186,"author":{"gitId":"Jawad280"},"content":" userInput \u003d targetIndex.getOneBased() + SALARY_DESC_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":187,"author":{"gitId":"eunrcn"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withSalary(VALID_SALARY_AMY).build();","lastModifiedDate":"2024-03-04"},{"lineNumber":188,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-04"},{"lineNumber":189,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-04"},{"lineNumber":190,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":192,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-04"},{"lineNumber":193,"author":{"gitId":"-"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2024-03-04"},{"lineNumber":194,"author":{"gitId":"-"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2024-03-04"},{"lineNumber":195,"author":{"gitId":"-"},"content":" // AddCommandParserTest#parse_repeatedNonTagValue_failure()","lastModifiedDate":"2024-03-04"},{"lineNumber":196,"author":{"gitId":"-"},"content":" // valid followed by invalid","lastModifiedDate":"2024-03-04"},{"lineNumber":197,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-04"},{"lineNumber":198,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + PHONE_DESC_BOB;","lastModifiedDate":"2024-03-04"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":200,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2024-03-04"},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":202,"author":{"gitId":"-"},"content":" // invalid followed by valid","lastModifiedDate":"2024-03-04"},{"lineNumber":203,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + INVALID_PHONE_DESC;","lastModifiedDate":"2024-03-04"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":205,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2024-03-04"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":207,"author":{"gitId":"eunrcn"},"content":" // multiple valid fields repeated","lastModifiedDate":"2024-03-04"},{"lineNumber":208,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2024-03-04"},{"lineNumber":209,"author":{"gitId":"ashleygoh1"},"content":" + TAG_DESC_INTERVIEW + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2024-03-13"},{"lineNumber":210,"author":{"gitId":"ashleygoh1"},"content":" + TAG_DESC_INTERVIEW + PHONE_DESC_BOB + ADDRESS_DESC_BOB + EMAIL_DESC_BOB + TAG_DESC_NO_REPLY;","lastModifiedDate":"2024-03-13"},{"lineNumber":211,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":212,"author":{"gitId":"Jawad280"},"content":" assertParseFailure(","lastModifiedDate":"2024-03-11"},{"lineNumber":213,"author":{"gitId":"Jawad280"},"content":" parser,","lastModifiedDate":"2024-03-11"},{"lineNumber":214,"author":{"gitId":"Jawad280"},"content":" userInput,","lastModifiedDate":"2024-03-11"},{"lineNumber":215,"author":{"gitId":"Jawad280"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_TAG, PREFIX_ADDRESS)","lastModifiedDate":"2024-03-11"},{"lineNumber":216,"author":{"gitId":"Jawad280"},"content":" );","lastModifiedDate":"2024-03-11"},{"lineNumber":217,"author":{"gitId":"-"},"content":" // multiple invalid values","lastModifiedDate":"2024-03-04"},{"lineNumber":218,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2024-03-04"},{"lineNumber":219,"author":{"gitId":"-"},"content":" + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC;","lastModifiedDate":"2024-03-04"},{"lineNumber":220,"author":{"gitId":"Jawad280"},"content":" assertParseFailure(","lastModifiedDate":"2024-03-11"},{"lineNumber":221,"author":{"gitId":"Jawad280"},"content":" parser,","lastModifiedDate":"2024-03-11"},{"lineNumber":222,"author":{"gitId":"Jawad280"},"content":" userInput,","lastModifiedDate":"2024-03-11"},{"lineNumber":223,"author":{"gitId":"Jawad280"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS)","lastModifiedDate":"2024-03-11"},{"lineNumber":224,"author":{"gitId":"Jawad280"},"content":" );","lastModifiedDate":"2024-03-11"},{"lineNumber":225,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":226,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-03-04"}],"authorContributionMap":{"eunrcn":27,"chenyixin0":9,"Jawad280":23,"ashleygoh1":6,"-":161}},{"path":"src/test/java/seedu/address/logic/parser/ParserUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.ParserUtil.MESSAGE_INVALID_INDEX;","lastModifiedDate":"2017-06-02"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-05-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class ParserUtilTest {","lastModifiedDate":"2017-05-22"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2017-05-22"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2017-05-22"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2017-05-22"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2017-05-22"},{"lineNumber":22,"author":{"gitId":"ashleygoh1"},"content":" private static final String INVALID_TAG \u003d \"#NR\";","lastModifiedDate":"2024-02-26"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d \"Rachel Walker\";","lastModifiedDate":"2017-05-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d \"123456\";","lastModifiedDate":"2017-05-22"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d \"123 Main Street #0505\";","lastModifiedDate":"2017-05-22"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d \"rachel@example.com\";","lastModifiedDate":"2017-05-22"},{"lineNumber":28,"author":{"gitId":"ashleygoh1"},"content":" private static final String VALID_TAG \u003d \"NR\";","lastModifiedDate":"2024-02-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String WHITESPACE \u003d \" \\t\\r\\n\";","lastModifiedDate":"2017-05-29"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public void parseIndex_invalidInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseIndex(\"10 a\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void parseIndex_outOfRangeInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_INVALID_INDEX, ()","lastModifiedDate":"2019-03-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" -\u003e ParserUtil.parseIndex(Long.toString(Integer.MAX_VALUE + 1)));","lastModifiedDate":"2019-03-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void parseIndex_validInput_success() throws Exception {","lastModifiedDate":"2017-05-26"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // No whitespaces","lastModifiedDate":"2017-05-26"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\"1\"));","lastModifiedDate":"2017-05-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // Leading and trailing whitespaces","lastModifiedDate":"2017-05-26"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\" 1 \"));","lastModifiedDate":"2017-05-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void parseName_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseName((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void parseName_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseName(INVALID_NAME));","lastModifiedDate":"2019-03-14"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void parseName_validValueWithoutWhitespace_returnsName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":64,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(VALID_NAME));","lastModifiedDate":"2017-05-29"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-29"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void parseName_validValueWithWhitespace_returnsTrimmedName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":70,"author":{"gitId":"-"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_NAME + WHITESPACE;","lastModifiedDate":"2017-05-29"},{"lineNumber":71,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-29"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(nameWithWhitespace));","lastModifiedDate":"2017-05-29"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void parsePhone_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parsePhone((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void parsePhone_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parsePhone(INVALID_PHONE));","lastModifiedDate":"2019-03-14"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithoutWhitespace_returnsPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":87,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-22"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(VALID_PHONE));","lastModifiedDate":"2017-05-30"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithWhitespace_returnsTrimmedPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":93,"author":{"gitId":"-"},"content":" String phoneWithWhitespace \u003d WHITESPACE + VALID_PHONE + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":94,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-30"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(phoneWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":99,"author":{"gitId":"-"},"content":" public void parseAddress_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseAddress((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":103,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithoutWhitespace_returnsAddress() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":105,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-22"},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(VALID_ADDRESS));","lastModifiedDate":"2017-05-30"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":110,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithWhitespace_returnsTrimmedAddress() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":111,"author":{"gitId":"-"},"content":" String addressWithWhitespace \u003d WHITESPACE + VALID_ADDRESS + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":112,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-30"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(addressWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":117,"author":{"gitId":"-"},"content":" public void parseEmail_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseEmail((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":122,"author":{"gitId":"-"},"content":" public void parseEmail_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseEmail(INVALID_EMAIL));","lastModifiedDate":"2019-03-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":127,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithoutWhitespace_returnsEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":128,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-22"},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(VALID_EMAIL));","lastModifiedDate":"2017-05-30"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":133,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithWhitespace_returnsTrimmedEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":134,"author":{"gitId":"-"},"content":" String emailWithWhitespace \u003d WHITESPACE + VALID_EMAIL + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":135,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-30"},{"lineNumber":136,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(emailWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":139,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":140,"author":{"gitId":"-"},"content":" public void parseTag_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTag(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":144,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":145,"author":{"gitId":"-"},"content":" public void parseTag_invalidValue_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTag(INVALID_TAG));","lastModifiedDate":"2019-03-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":149,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":150,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithoutWhitespace_returnsTag() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":151,"author":{"gitId":"ashleygoh1"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG);","lastModifiedDate":"2024-02-26"},{"lineNumber":152,"author":{"gitId":"ashleygoh1"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(VALID_TAG));","lastModifiedDate":"2024-02-26"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":155,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":156,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithWhitespace_returnsTrimmedTag() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":157,"author":{"gitId":"ashleygoh1"},"content":" String tagWithWhitespace \u003d WHITESPACE + VALID_TAG + WHITESPACE;","lastModifiedDate":"2024-02-26"},{"lineNumber":158,"author":{"gitId":"ashleygoh1"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG);","lastModifiedDate":"2024-02-26"},{"lineNumber":159,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(tagWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":162,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":163,"author":{"gitId":"-"},"content":" public void parseTags_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":164,"author":{"gitId":"ashleygoh1"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTag(null));","lastModifiedDate":"2024-02-26"},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":167,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-22"}],"authorContributionMap":{"ashleygoh1":7,"-":160}},{"path":"src/test/java/seedu/address/logic/parser/ViewCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"eunrcn"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"eunrcn"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"eunrcn"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"eunrcn"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"eunrcn"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"eunrcn"},"content":"import seedu.address.logic.commands.ViewCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"eunrcn"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"eunrcn"},"content":"class ViewCommandParserTest {","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"eunrcn"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"eunrcn"},"content":" void parse_validArgs_returnsViewCommand() throws ParseException {","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"eunrcn"},"content":" ViewCommandParser parser \u003d new ViewCommandParser();","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"ashleygoh1"},"content":" ViewCommand expectedCommand \u003d new ViewCommand(Index.fromZeroBased(0));","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"eunrcn"},"content":" assertEquals(expectedCommand, parser.parse(\"1\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"eunrcn"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"eunrcn"},"content":" void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"eunrcn"},"content":" ViewCommandParser parser \u003d new ViewCommandParser();","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"eunrcn"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\"abc\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"eunrcn"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\"\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"eunrcn"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"eunrcn"},"content":" void parse_invalidIndex_throwsParseException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"eunrcn"},"content":" ViewCommandParser parser \u003d new ViewCommandParser();","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"eunrcn"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\"0\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"eunrcn"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\"-1\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"eunrcn"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"eunrcn"},"content":" void parse_withWhitespaceAndValidArgs_returnsViewCommand() throws ParseException {","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"eunrcn"},"content":" ViewCommandParser parser \u003d new ViewCommandParser();","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"ashleygoh1"},"content":" ViewCommand expectedCommand \u003d new ViewCommand(Index.fromZeroBased(1));","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"eunrcn"},"content":" assertEquals(expectedCommand, parser.parse(\" 2 \"));","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"eunrcn"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"eunrcn"},"content":" void parse_withWhitespaceAndInvalidArgs_throwsParseException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"eunrcn"},"content":" ViewCommandParser parser \u003d new ViewCommandParser();","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"eunrcn"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\" abc \"));","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"eunrcn"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\" \"));","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"eunrcn"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"eunrcn":50,"ashleygoh1":3}},{"path":"src/test/java/seedu/address/model/AddressBookTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-12-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":7,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_INTERVIEW;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2017-07-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2016-12-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2016-12-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2016-12-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2016-12-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-12-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2018-08-07"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-04-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class AddressBookTest {","lastModifiedDate":"2016-12-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2016-12-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2016-12-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), addressBook.getPersonList());","lastModifiedDate":"2016-12-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public void resetData_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.resetData(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void resetData_withValidReadOnlyAddressBook_replacesData() {","lastModifiedDate":"2016-12-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" AddressBook newData \u003d getTypicalAddressBook();","lastModifiedDate":"2017-07-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":" addressBook.resetData(newData);","lastModifiedDate":"2016-12-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertEquals(newData, addressBook);","lastModifiedDate":"2016-12-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public void resetData_withDuplicatePersons_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-07"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // Two persons with the same identity fields","lastModifiedDate":"2018-04-19"},{"lineNumber":49,"author":{"gitId":"ashleygoh1"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_INTERVIEW)","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-04-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e newPersons \u003d Arrays.asList(ALICE, editedAlice);","lastModifiedDate":"2018-04-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" AddressBookStub newData \u003d new AddressBookStub(newPersons);","lastModifiedDate":"2018-03-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e addressBook.resetData(newData));","lastModifiedDate":"2019-03-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void hasPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-06"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.hasPerson(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void hasPerson_personNotInAddressBook_returnsFalse() {","lastModifiedDate":"2018-08-06"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertFalse(addressBook.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void hasPerson_personInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07"},{"lineNumber":69,"author":{"gitId":"-"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2018-08-06"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertTrue(addressBook.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void hasPerson_personWithSameIdentityFieldsInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07"},{"lineNumber":75,"author":{"gitId":"-"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2018-08-06"},{"lineNumber":76,"author":{"gitId":"ashleygoh1"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_INTERVIEW)","lastModifiedDate":"2024-03-12"},{"lineNumber":77,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-06"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertTrue(addressBook.hasPerson(editedAlice));","lastModifiedDate":"2018-08-06"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void getPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e addressBook.getPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" String expected \u003d AddressBook.class.getCanonicalName() + \"{persons\u003d\" + addressBook.getPersonList() + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertEquals(expected, addressBook.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-24"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * A stub ReadOnlyAddressBook whose persons list can violate interface constraints.","lastModifiedDate":"2018-03-29"},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-24"},{"lineNumber":95,"author":{"gitId":"-"},"content":" private static class AddressBookStub implements ReadOnlyAddressBook {","lastModifiedDate":"2016-12-24"},{"lineNumber":96,"author":{"gitId":"-"},"content":" private final ObservableList\u003cPerson\u003e persons \u003d FXCollections.observableArrayList();","lastModifiedDate":"2018-01-10"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":98,"author":{"gitId":"-"},"content":" AddressBookStub(Collection\u003cPerson\u003e persons) {","lastModifiedDate":"2018-03-29"},{"lineNumber":99,"author":{"gitId":"-"},"content":" this.persons.setAll(persons);","lastModifiedDate":"2016-12-24"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-24"},{"lineNumber":103,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":104,"author":{"gitId":"-"},"content":" return persons;","lastModifiedDate":"2016-12-24"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-24"}],"authorContributionMap":{"ashleygoh1":3,"-":105}},{"path":"src/test/java/seedu/address/model/ModelManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2017-05-31"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2017-07-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2017-07-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-31"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.testutil.AddressBookBuilder;","lastModifiedDate":"2017-05-31"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class ModelManagerTest {","lastModifiedDate":"2017-05-31"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private ModelManager modelManager \u003d new ModelManager();","lastModifiedDate":"2018-08-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2018-11-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertEquals(new UserPrefs(), modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertEquals(new GuiSettings(), modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertEquals(new AddressBook(), new AddressBook(modelManager.getAddressBook()));","lastModifiedDate":"2018-11-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public void setUserPrefs_nullUserPrefs_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setUserPrefs(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void setUserPrefs_validUserPrefs_copiesUserPrefs() {","lastModifiedDate":"2018-12-06"},{"lineNumber":39,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"address/book/file/path\"));","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(new GuiSettings(1, 2, 3, 4));","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" modelManager.setUserPrefs(userPrefs);","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertEquals(userPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // Modifying userPrefs should not modify modelManager\u0027s userPrefs","lastModifiedDate":"2018-12-06"},{"lineNumber":46,"author":{"gitId":"-"},"content":" UserPrefs oldUserPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":47,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"new/address/book/file/path\"));","lastModifiedDate":"2018-12-06"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertEquals(oldUserPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-12-06"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void setGuiSettings_nullGuiSettings_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setGuiSettings(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void setGuiSettings_validGuiSettings_setsGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(1, 2, 3, 4);","lastModifiedDate":"2018-11-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" modelManager.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertEquals(guiSettings, modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setAddressBookFilePath(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_validPath_setsAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" Path path \u003d Paths.get(\"address/book/file/path\");","lastModifiedDate":"2018-11-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" modelManager.setAddressBookFilePath(path);","lastModifiedDate":"2018-11-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertEquals(path, modelManager.getAddressBookFilePath());","lastModifiedDate":"2018-11-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void hasPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-06"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasPerson(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void hasPerson_personNotInAddressBook_returnsFalse() {","lastModifiedDate":"2018-08-06"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertFalse(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void hasPerson_personInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07"},{"lineNumber":87,"author":{"gitId":"-"},"content":" modelManager.addPerson(ALICE);","lastModifiedDate":"2018-08-06"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertTrue(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e modelManager.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-31"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":98,"author":{"gitId":"-"},"content":" AddressBook addressBook \u003d new AddressBookBuilder().withPerson(ALICE).withPerson(BENSON).build();","lastModifiedDate":"2017-07-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" AddressBook differentAddressBook \u003d new AddressBook();","lastModifiedDate":"2017-05-31"},{"lineNumber":100,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":102,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":103,"author":{"gitId":"-"},"content":" modelManager \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2018-08-06"},{"lineNumber":104,"author":{"gitId":"-"},"content":" ModelManager modelManagerCopy \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2017-05-31"},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManagerCopy));","lastModifiedDate":"2017-05-31"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":107,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManager));","lastModifiedDate":"2017-05-31"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":110,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(null));","lastModifiedDate":"2017-05-31"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":113,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(5));","lastModifiedDate":"2017-05-31"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":116,"author":{"gitId":"-"},"content":" // different addressBook -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(differentAddressBook, userPrefs)));","lastModifiedDate":"2017-05-31"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":119,"author":{"gitId":"-"},"content":" // different filteredList -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":120,"author":{"gitId":"ashleygoh1"},"content":" String[] keywords \u003d ALICE.getCompanyName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2024-02-25"},{"lineNumber":121,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(keywords)));","lastModifiedDate":"2017-06-12"},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, userPrefs)));","lastModifiedDate":"2017-05-31"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":124,"author":{"gitId":"-"},"content":" // resets modelManager to initial state for upcoming tests","lastModifiedDate":"2017-08-05"},{"lineNumber":125,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":127,"author":{"gitId":"-"},"content":" // different userPrefs -\u003e returns false","lastModifiedDate":"2018-11-27"},{"lineNumber":128,"author":{"gitId":"-"},"content":" UserPrefs differentUserPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":129,"author":{"gitId":"-"},"content":" differentUserPrefs.setAddressBookFilePath(Paths.get(\"differentFilePath\"));","lastModifiedDate":"2018-08-09"},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, differentUserPrefs)));","lastModifiedDate":"2018-11-27"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":132,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-31"}],"authorContributionMap":{"ashleygoh1":1,"-":131}},{"path":"src/test/java/seedu/address/model/person/InternDurationTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ashleygoh1"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"ashleygoh1"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"ashleygoh1"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"ashleygoh1"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"ashleygoh1"},"content":"public class InternDurationTest {","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"ashleygoh1"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"ashleygoh1"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"ashleygoh1"},"content":" assertThrows(NullPointerException.class, () -\u003e new InternDuration(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"ashleygoh1"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"ashleygoh1"},"content":" public void isValidInternDuration() {","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"ashleygoh1"},"content":" // null address","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"ashleygoh1"},"content":" assertThrows(NullPointerException.class, () -\u003e InternDuration.isValidInternDuration(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"ashleygoh1"},"content":" // invalid addresses","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"ashleygoh1"},"content":" assertFalse(InternDuration.isValidInternDuration(\"\")); // empty string","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"ashleygoh1"},"content":" assertFalse(InternDuration.isValidInternDuration(\" \")); // spaces only","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"ashleygoh1"},"content":" // valid addresses","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"ashleygoh1"},"content":" assertTrue(InternDuration.isValidInternDuration(\"6 months\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"ashleygoh1"},"content":" assertTrue(InternDuration.isValidInternDuration(\"-\")); // one character","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"ashleygoh1"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"ashleygoh1"},"content":" public void equals() {","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"ashleygoh1"},"content":" InternDuration internDuration \u003d new InternDuration(\"Valid InternDuration\");","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"ashleygoh1"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"ashleygoh1"},"content":" assertTrue(internDuration.equals(new InternDuration(\"Valid InternDuration\")));","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"ashleygoh1"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"ashleygoh1"},"content":" assertTrue(internDuration.equals(internDuration));","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"ashleygoh1"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"ashleygoh1"},"content":" assertFalse(internDuration.equals(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"ashleygoh1"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"ashleygoh1"},"content":" assertFalse(internDuration.equals(5.0f));","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"ashleygoh1"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"ashleygoh1"},"content":" assertFalse(internDuration.equals(new Address(\"Other Valid InternDuration\")));","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"ashleygoh1"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"ashleygoh1":48}},{"path":"src/test/java/seedu/address/model/person/JobDescriptionTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ashleygoh1"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"ashleygoh1"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"ashleygoh1"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"ashleygoh1"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"ashleygoh1"},"content":"public class JobDescriptionTest {","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"ashleygoh1"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"ashleygoh1"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"ashleygoh1"},"content":" assertThrows(NullPointerException.class, () -\u003e new InternDuration(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"ashleygoh1"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"ashleygoh1"},"content":" public void isValidInternDuration() {","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"ashleygoh1"},"content":" // null address","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"ashleygoh1"},"content":" assertThrows(NullPointerException.class, () -\u003e InternDuration.isValidInternDuration(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"ashleygoh1"},"content":" // invalid addresses","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"ashleygoh1"},"content":" assertFalse(InternDuration.isValidInternDuration(\"\")); // empty string","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"ashleygoh1"},"content":" assertFalse(InternDuration.isValidInternDuration(\" \")); // spaces only","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"ashleygoh1"},"content":" // valid addresses","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"ashleygoh1"},"content":" assertTrue(InternDuration.isValidInternDuration(\"6 months\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"ashleygoh1"},"content":" assertTrue(InternDuration.isValidInternDuration(\"-\")); // one character","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"ashleygoh1"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"ashleygoh1"},"content":" public void equals() {","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"ashleygoh1"},"content":" InternDuration internDuration \u003d new InternDuration(\"Valid InternDuration\");","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"ashleygoh1"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"ashleygoh1"},"content":" assertTrue(internDuration.equals(new InternDuration(\"Valid InternDuration\")));","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"ashleygoh1"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"ashleygoh1"},"content":" assertTrue(internDuration.equals(internDuration));","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"ashleygoh1"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"ashleygoh1"},"content":" assertFalse(internDuration.equals(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"ashleygoh1"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"ashleygoh1"},"content":" assertFalse(internDuration.equals(5.0f));","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"ashleygoh1"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"ashleygoh1"},"content":" assertFalse(internDuration.equals(new Address(\"Other Valid InternDuration\")));","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"ashleygoh1"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"ashleygoh1":49}},{"path":"src/test/java/seedu/address/model/person/PersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2018-03-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":10,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_INTERVIEW;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-04-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-03-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class PersonTest {","lastModifiedDate":"2018-03-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public void isSamePerson() {","lastModifiedDate":"2018-04-19"},{"lineNumber":22,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(ALICE));","lastModifiedDate":"2018-04-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(null));","lastModifiedDate":"2018-04-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" // same name, all other attributes different -\u003e returns true","lastModifiedDate":"2020-12-18"},{"lineNumber":29,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2020-12-18"},{"lineNumber":30,"author":{"gitId":"ashleygoh1"},"content":" .withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_INTERVIEW).build();","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2020-12-18"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // different name, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":34,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":" // name differs in case, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":38,"author":{"gitId":"-"},"content":" Person editedBob \u003d new PersonBuilder(BOB).withName(VALID_NAME_BOB.toLowerCase()).build();","lastModifiedDate":"2020-12-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":" // name has trailing spaces, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":42,"author":{"gitId":"-"},"content":" String nameWithTrailingSpaces \u003d VALID_NAME_BOB + \" \";","lastModifiedDate":"2020-12-18"},{"lineNumber":43,"author":{"gitId":"-"},"content":" editedBob \u003d new PersonBuilder(BOB).withName(nameWithTrailingSpaces).build();","lastModifiedDate":"2020-12-18"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":" Person aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2018-04-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2018-04-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(null));","lastModifiedDate":"2018-04-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2018-04-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2018-04-19"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":65,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":77,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-18"},{"lineNumber":81,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2018-04-18"},{"lineNumber":82,"author":{"gitId":"ashleygoh1"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_INTERVIEW).build();","lastModifiedDate":"2024-03-12"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-18"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"ashleygoh1"},"content":" String expected \u003d Person.class.getCanonicalName() + \"{name\u003d\" + ALICE.getCompanyName()","lastModifiedDate":"2024-02-26"},{"lineNumber":89,"author":{"gitId":"ashleygoh1"},"content":" + \", phone\u003d\" + ALICE.getPhone() + \", email\u003d\" + ALICE.getEmail()","lastModifiedDate":"2024-02-26"},{"lineNumber":90,"author":{"gitId":"ashleygoh1"},"content":" + \", address\u003d\" + ALICE.getAddress() + \", tag\u003d\" + ALICE.getTag()","lastModifiedDate":"2024-02-26"},{"lineNumber":91,"author":{"gitId":"ashleygoh1"},"content":" + \", job description\u003d\" + ALICE.getJobDescription()","lastModifiedDate":"2024-02-26"},{"lineNumber":92,"author":{"gitId":"ashleygoh1"},"content":" + \", interview date\u003d\" + ALICE.getInterviewDate()","lastModifiedDate":"2024-02-26"},{"lineNumber":93,"author":{"gitId":"ashleygoh1"},"content":" + \", intern duration\u003d\" + ALICE.getInternDuration()","lastModifiedDate":"2024-02-26"},{"lineNumber":94,"author":{"gitId":"ashleygoh1"},"content":" + \", salary\u003d\" + ALICE.getSalary() + \"}\";","lastModifiedDate":"2024-02-26"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"ashleygoh1":10,"-":87}},{"path":"src/test/java/seedu/address/model/person/SalaryTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ashleygoh1"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"ashleygoh1"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"ashleygoh1"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"ashleygoh1"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"ashleygoh1"},"content":"public class SalaryTest {","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"ashleygoh1"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"ashleygoh1"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"ashleygoh1"},"content":" assertThrows(NullPointerException.class, () -\u003e new Salary(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"ashleygoh1"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"ashleygoh1"},"content":" public void constructor_invalidSalary_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"ashleygoh1"},"content":" String invalidSalary \u003d \"\";","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"ashleygoh1"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Salary(invalidSalary));","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"ashleygoh1"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"ashleygoh1"},"content":" public void isValidSalary() {","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"ashleygoh1"},"content":" // null salary","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"ashleygoh1"},"content":" assertThrows(NullPointerException.class, () -\u003e Salary.isValidSalary(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"ashleygoh1"},"content":" // invalid Salary","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"ashleygoh1"},"content":" assertFalse(Salary.isValidSalary(\"\")); // empty string","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"ashleygoh1"},"content":" assertFalse(Salary.isValidSalary(\" \")); // spaces only","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"ashleygoh1"},"content":" assertFalse(Salary.isValidSalary(\"salary\")); // non-numeric","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"ashleygoh1"},"content":" assertFalse(Salary.isValidSalary(\"9011p041\")); // alphabets within digits","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"ashleygoh1"},"content":" assertFalse(Salary.isValidSalary(\"9312 1534\")); // spaces within digits","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"ashleygoh1"},"content":" // valid salary","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"ashleygoh1"},"content":" assertTrue(Salary.isValidSalary(\"1\")); // exactly 1 numbers","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"ashleygoh1"},"content":" assertTrue(Salary.isValidSalary(\"1000\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"ashleygoh1"},"content":" assertTrue(Salary.isValidSalary(\"124293842033123\")); // long salary","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"ashleygoh1"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"ashleygoh1"},"content":" public void equals() {","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"ashleygoh1"},"content":" Salary salary \u003d new Salary(\"1000\");","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"ashleygoh1"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"ashleygoh1"},"content":" assertTrue(salary.equals(new Salary(\"1000\")));","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"ashleygoh1"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"ashleygoh1"},"content":" assertTrue(salary.equals(salary));","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"ashleygoh1"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"ashleygoh1"},"content":" assertFalse(salary.equals(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"ashleygoh1"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"ashleygoh1"},"content":" assertFalse(salary.equals(5.0f));","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"ashleygoh1"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"ashleygoh1"},"content":" assertFalse(salary.equals(new Salary(\"995\")));","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"ashleygoh1"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"ashleygoh1":59}},{"path":"src/test/java/seedu/address/model/person/UniquePersonListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2018-08-09"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-08-08"},{"lineNumber":7,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_INTERVIEW;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2018-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.PersonNotFoundException;","lastModifiedDate":"2018-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class UniquePersonListTest {","lastModifiedDate":"2017-09-01"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final UniquePersonList uniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void contains_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.contains(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void contains_personNotInList_returnsFalse() {","lastModifiedDate":"2018-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(uniquePersonList.contains(ALICE));","lastModifiedDate":"2018-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void contains_personInList_returnsTrue() {","lastModifiedDate":"2018-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertTrue(uniquePersonList.contains(ALICE));","lastModifiedDate":"2018-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void contains_personWithSameIdentityFieldsInList_returnsTrue() {","lastModifiedDate":"2018-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":45,"author":{"gitId":"ashleygoh1"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_INTERVIEW)","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertTrue(uniquePersonList.contains(editedAlice));","lastModifiedDate":"2018-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void add_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.add(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void add_duplicatePerson_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.add(ALICE));","lastModifiedDate":"2019-03-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void setPerson_nullTargetPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPerson(null, ALICE));","lastModifiedDate":"2019-03-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void setPerson_nullEditedPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPerson(ALICE, null));","lastModifiedDate":"2019-03-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void setPerson_targetPersonNotInList_throwsPersonNotFoundException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertThrows(PersonNotFoundException.class, () -\u003e uniquePersonList.setPerson(ALICE, ALICE));","lastModifiedDate":"2019-03-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonIsSamePerson_success() {","lastModifiedDate":"2018-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasSameIdentity_success() {","lastModifiedDate":"2018-08-08"},{"lineNumber":87,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":88,"author":{"gitId":"ashleygoh1"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_INTERVIEW)","lastModifiedDate":"2024-03-12"},{"lineNumber":89,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, editedAlice);","lastModifiedDate":"2018-08-08"},{"lineNumber":91,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":92,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(editedAlice);","lastModifiedDate":"2018-08-08"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasDifferentIdentity_success() {","lastModifiedDate":"2018-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasNonUniqueIdentity_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":108,"author":{"gitId":"-"},"content":" uniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.setPerson(ALICE, BOB));","lastModifiedDate":"2019-03-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":113,"author":{"gitId":"-"},"content":" public void remove_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.remove(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":" public void remove_personDoesNotExist_throwsPersonNotFoundException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertThrows(PersonNotFoundException.class, () -\u003e uniquePersonList.remove(ALICE));","lastModifiedDate":"2019-03-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":" public void remove_existingPerson_removesPerson() {","lastModifiedDate":"2018-08-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":125,"author":{"gitId":"-"},"content":" uniquePersonList.remove(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":131,"author":{"gitId":"-"},"content":" public void setPersons_nullUniquePersonList_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":132,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPersons((UniquePersonList) null));","lastModifiedDate":"2019-03-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":136,"author":{"gitId":"-"},"content":" public void setPersons_uniquePersonList_replacesOwnListWithProvidedUniquePersonList() {","lastModifiedDate":"2018-08-08"},{"lineNumber":137,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":138,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":140,"author":{"gitId":"-"},"content":" uniquePersonList.setPersons(expectedUniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":144,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":145,"author":{"gitId":"-"},"content":" public void setPersons_nullList_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPersons((List\u003cPerson\u003e) null));","lastModifiedDate":"2019-03-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":149,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":150,"author":{"gitId":"-"},"content":" public void setPersons_list_replacesOwnListWithProvidedList() {","lastModifiedDate":"2018-08-08"},{"lineNumber":151,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":152,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e personList \u003d Collections.singletonList(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":153,"author":{"gitId":"-"},"content":" uniquePersonList.setPersons(personList);","lastModifiedDate":"2018-08-08"},{"lineNumber":154,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":155,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":156,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":159,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":160,"author":{"gitId":"-"},"content":" public void setPersons_listWithDuplicatePersons_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e listWithDuplicatePersons \u003d Arrays.asList(ALICE, ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":162,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.setPersons(listWithDuplicatePersons));","lastModifiedDate":"2019-03-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":166,"author":{"gitId":"-"},"content":" public void asUnmodifiableObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2018-04-05"},{"lineNumber":167,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, ()","lastModifiedDate":"2019-03-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":" -\u003e uniquePersonList.asUnmodifiableObservableList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-24"},{"lineNumber":171,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-24"},{"lineNumber":172,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-24"},{"lineNumber":173,"author":{"gitId":"-"},"content":" assertEquals(uniquePersonList.asUnmodifiableObservableList().toString(), uniquePersonList.toString());","lastModifiedDate":"2019-02-24"},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-24"},{"lineNumber":175,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"ashleygoh1":3,"-":172}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedPersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.storage.JsonAdaptedPerson.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13"},{"lineNumber":13,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.InternDuration;","lastModifiedDate":"2024-02-26"},{"lineNumber":14,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.InterviewDate;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.JobDescription;","lastModifiedDate":"2024-02-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.Salary;","lastModifiedDate":"2024-02-26"},{"lineNumber":20,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class JsonAdaptedPersonTest {","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"ashleygoh1"},"content":" private static final String INVALID_JOB_DESCRIPTION \u003d \" \";","lastModifiedDate":"2024-02-26"},{"lineNumber":29,"author":{"gitId":"ashleygoh1"},"content":" private static final String INVALID_INTERVIEW_DATE \u003d \"\";","lastModifiedDate":"2024-02-26"},{"lineNumber":30,"author":{"gitId":"ashleygoh1"},"content":" private static final String INVALID_INTERN_DURATION \u003d \" \";","lastModifiedDate":"2024-02-26"},{"lineNumber":31,"author":{"gitId":"ashleygoh1"},"content":" private static final String INVALID_SALARY \u003d \"0\";","lastModifiedDate":"2024-02-26"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"ashleygoh1"},"content":" private static final String VALID_NAME \u003d BENSON.getCompanyName().toString();","lastModifiedDate":"2024-02-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d BENSON.getPhone().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d BENSON.getAddress().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"ashleygoh1"},"content":" private static final String VALID_TAGS \u003d BENSON.getTag().tagName;","lastModifiedDate":"2024-02-26"},{"lineNumber":38,"author":{"gitId":"ashleygoh1"},"content":" private static final String VALID_JOB_DESCRIPTION \u003d BENSON.getJobDescription().toString();","lastModifiedDate":"2024-02-26"},{"lineNumber":39,"author":{"gitId":"ashleygoh1"},"content":" private static final String VALID_INTERVIEW_DATE \u003d BENSON.getInterviewDate().toString();","lastModifiedDate":"2024-02-26"},{"lineNumber":40,"author":{"gitId":"ashleygoh1"},"content":" private static final String VALID_INTERN_DURATION \u003d BENSON.getInternDuration().toString();","lastModifiedDate":"2024-02-26"},{"lineNumber":41,"author":{"gitId":"ashleygoh1"},"content":" private static final String VALID_SALARY \u003d BENSON.getSalary().toString();","lastModifiedDate":"2024-02-26"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void toModelType_validPersonDetails_returnsPerson() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(BENSON);","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertEquals(BENSON, person.toModelType());","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"ashleygoh1"},"content":" new JsonAdaptedPerson(INVALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_TAGS,","lastModifiedDate":"2024-02-26"},{"lineNumber":53,"author":{"gitId":"ashleygoh1"},"content":" VALID_JOB_DESCRIPTION, VALID_INTERVIEW_DATE, VALID_INTERN_DURATION, VALID_SALARY);","lastModifiedDate":"2024-02-26"},{"lineNumber":54,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"ashleygoh1"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(null, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_TAGS,","lastModifiedDate":"2024-02-26"},{"lineNumber":61,"author":{"gitId":"ashleygoh1"},"content":" VALID_JOB_DESCRIPTION, VALID_INTERVIEW_DATE, VALID_INTERN_DURATION, VALID_SALARY);","lastModifiedDate":"2024-02-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void toModelType_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":69,"author":{"gitId":"ashleygoh1"},"content":" new JsonAdaptedPerson(VALID_NAME, INVALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_TAGS,","lastModifiedDate":"2024-02-26"},{"lineNumber":70,"author":{"gitId":"ashleygoh1"},"content":" VALID_JOB_DESCRIPTION, VALID_INTERVIEW_DATE, VALID_INTERN_DURATION, VALID_SALARY);","lastModifiedDate":"2024-02-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Phone.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void toModelType_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"ashleygoh1"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, null, VALID_EMAIL, VALID_ADDRESS, VALID_TAGS,","lastModifiedDate":"2024-02-26"},{"lineNumber":78,"author":{"gitId":"ashleygoh1"},"content":" VALID_JOB_DESCRIPTION, VALID_INTERVIEW_DATE, VALID_INTERN_DURATION, VALID_SALARY);","lastModifiedDate":"2024-02-26"},{"lineNumber":79,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"ashleygoh1"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, INVALID_EMAIL, VALID_ADDRESS, VALID_TAGS,","lastModifiedDate":"2024-02-26"},{"lineNumber":87,"author":{"gitId":"ashleygoh1"},"content":" VALID_JOB_DESCRIPTION, VALID_INTERVIEW_DATE, VALID_INTERN_DURATION, VALID_SALARY);","lastModifiedDate":"2024-02-26"},{"lineNumber":88,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":94,"author":{"gitId":"ashleygoh1"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, null, VALID_ADDRESS, VALID_TAGS,","lastModifiedDate":"2024-02-26"},{"lineNumber":95,"author":{"gitId":"ashleygoh1"},"content":" VALID_JOB_DESCRIPTION, VALID_INTERVIEW_DATE, VALID_INTERN_DURATION, VALID_SALARY);","lastModifiedDate":"2024-02-26"},{"lineNumber":96,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":" public void toModelType_nullAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":102,"author":{"gitId":"ashleygoh1"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, null, VALID_TAGS,","lastModifiedDate":"2024-02-26"},{"lineNumber":103,"author":{"gitId":"ashleygoh1"},"content":" VALID_JOB_DESCRIPTION, VALID_INTERVIEW_DATE, VALID_INTERN_DURATION, VALID_SALARY);","lastModifiedDate":"2024-02-26"},{"lineNumber":104,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":109,"author":{"gitId":"ashleygoh1"},"content":" public void toModelType_nullTag_throwsIllegalValueException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":110,"author":{"gitId":"ashleygoh1"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, null,","lastModifiedDate":"2024-03-12"},{"lineNumber":111,"author":{"gitId":"ashleygoh1"},"content":" VALID_JOB_DESCRIPTION, VALID_INTERVIEW_DATE, VALID_INTERN_DURATION, VALID_SALARY);","lastModifiedDate":"2024-03-12"},{"lineNumber":112,"author":{"gitId":"ashleygoh1"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Tag.class.getSimpleName());","lastModifiedDate":"2024-03-12"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-12"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":" public void toModelType_invalidTags_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":119,"author":{"gitId":"ashleygoh1"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, INVALID_TAG,","lastModifiedDate":"2024-02-26"},{"lineNumber":120,"author":{"gitId":"ashleygoh1"},"content":" VALID_JOB_DESCRIPTION, VALID_INTERVIEW_DATE, VALID_INTERN_DURATION, VALID_SALARY);","lastModifiedDate":"2024-02-26"},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":124,"author":{"gitId":"ashleygoh1"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":125,"author":{"gitId":"ashleygoh1"},"content":" public void toModelType_nullJobDescription_throwsIllegalValueException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":126,"author":{"gitId":"ashleygoh1"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-03-12"},{"lineNumber":127,"author":{"gitId":"ashleygoh1"},"content":" VALID_ADDRESS, VALID_TAGS, null, VALID_INTERVIEW_DATE, VALID_INTERN_DURATION, VALID_SALARY);","lastModifiedDate":"2024-03-12"},{"lineNumber":128,"author":{"gitId":"ashleygoh1"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, JobDescription.class.getSimpleName());","lastModifiedDate":"2024-03-12"},{"lineNumber":129,"author":{"gitId":"ashleygoh1"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-12"},{"lineNumber":130,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":131,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":132,"author":{"gitId":"ashleygoh1"},"content":" @Test","lastModifiedDate":"2024-02-26"},{"lineNumber":133,"author":{"gitId":"ashleygoh1"},"content":" public void toModelType_invalidJobDescription_throwsIllegalValueException() {","lastModifiedDate":"2024-02-26"},{"lineNumber":134,"author":{"gitId":"ashleygoh1"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-02-26"},{"lineNumber":135,"author":{"gitId":"ashleygoh1"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_TAGS,","lastModifiedDate":"2024-02-26"},{"lineNumber":136,"author":{"gitId":"ashleygoh1"},"content":" INVALID_JOB_DESCRIPTION, VALID_INTERVIEW_DATE, VALID_INTERN_DURATION, VALID_SALARY);","lastModifiedDate":"2024-02-26"},{"lineNumber":137,"author":{"gitId":"ashleygoh1"},"content":" String expectedMessage \u003d JobDescription.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-02-26"},{"lineNumber":138,"author":{"gitId":"ashleygoh1"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-02-26"},{"lineNumber":139,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":140,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":141,"author":{"gitId":"ashleygoh1"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":142,"author":{"gitId":"ashleygoh1"},"content":" public void toModelType_nullInterviewDate_returnPerson() throws Exception {","lastModifiedDate":"2024-03-12"},{"lineNumber":143,"author":{"gitId":"ashleygoh1"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-03-12"},{"lineNumber":144,"author":{"gitId":"ashleygoh1"},"content":" VALID_ADDRESS, VALID_TAGS, VALID_JOB_DESCRIPTION, INVALID_INTERVIEW_DATE,","lastModifiedDate":"2024-03-12"},{"lineNumber":145,"author":{"gitId":"ashleygoh1"},"content":" VALID_INTERN_DURATION, VALID_SALARY);","lastModifiedDate":"2024-03-12"},{"lineNumber":146,"author":{"gitId":"ashleygoh1"},"content":" Person person1 \u003d new Person(BENSON.getCompanyName(), BENSON.getPhone(), BENSON.getEmail(), BENSON.getAddress(),","lastModifiedDate":"2024-03-12"},{"lineNumber":147,"author":{"gitId":"ashleygoh1"},"content":" BENSON.getTag(), BENSON.getJobDescription(), new InterviewDate(null),","lastModifiedDate":"2024-03-12"},{"lineNumber":148,"author":{"gitId":"ashleygoh1"},"content":" BENSON.getInternDuration(), BENSON.getSalary());","lastModifiedDate":"2024-03-12"},{"lineNumber":149,"author":{"gitId":"ashleygoh1"},"content":" assertEquals(person1, person.toModelType());","lastModifiedDate":"2024-03-12"},{"lineNumber":150,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":151,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":152,"author":{"gitId":"ashleygoh1"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":153,"author":{"gitId":"ashleygoh1"},"content":" public void toModelType_validPersonDetails_returnsPe() throws Exception {","lastModifiedDate":"2024-03-12"},{"lineNumber":154,"author":{"gitId":"ashleygoh1"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(BENSON);","lastModifiedDate":"2024-03-12"},{"lineNumber":155,"author":{"gitId":"ashleygoh1"},"content":" assertEquals(BENSON, person.toModelType());","lastModifiedDate":"2024-03-12"},{"lineNumber":156,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":157,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":158,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":159,"author":{"gitId":"ashleygoh1"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":160,"author":{"gitId":"ashleygoh1"},"content":" public void toModelType_nullInternDuration_throwsIllegalValueException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":161,"author":{"gitId":"ashleygoh1"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-12"},{"lineNumber":162,"author":{"gitId":"ashleygoh1"},"content":" VALID_TAGS, VALID_JOB_DESCRIPTION, VALID_INTERVIEW_DATE, null, VALID_SALARY);","lastModifiedDate":"2024-03-12"},{"lineNumber":163,"author":{"gitId":"ashleygoh1"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, InternDuration.class.getSimpleName());","lastModifiedDate":"2024-03-12"},{"lineNumber":164,"author":{"gitId":"ashleygoh1"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-12"},{"lineNumber":165,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":166,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":167,"author":{"gitId":"ashleygoh1"},"content":" @Test","lastModifiedDate":"2024-02-26"},{"lineNumber":168,"author":{"gitId":"ashleygoh1"},"content":" public void toModelType_invalidInternDuration_throwsIllegalValueException() {","lastModifiedDate":"2024-02-26"},{"lineNumber":169,"author":{"gitId":"ashleygoh1"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-02-26"},{"lineNumber":170,"author":{"gitId":"ashleygoh1"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_TAGS,","lastModifiedDate":"2024-02-26"},{"lineNumber":171,"author":{"gitId":"ashleygoh1"},"content":" VALID_JOB_DESCRIPTION, VALID_INTERVIEW_DATE, INVALID_INTERN_DURATION, VALID_SALARY);","lastModifiedDate":"2024-02-26"},{"lineNumber":172,"author":{"gitId":"ashleygoh1"},"content":" String expectedMessage \u003d InternDuration.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-02-26"},{"lineNumber":173,"author":{"gitId":"ashleygoh1"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-02-26"},{"lineNumber":174,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":175,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":176,"author":{"gitId":"ashleygoh1"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":177,"author":{"gitId":"ashleygoh1"},"content":" public void toModelType_nullSalary_throwsIllegalValueException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":178,"author":{"gitId":"ashleygoh1"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-03-12"},{"lineNumber":179,"author":{"gitId":"ashleygoh1"},"content":" VALID_ADDRESS, VALID_TAGS, VALID_JOB_DESCRIPTION, VALID_INTERVIEW_DATE, VALID_INTERN_DURATION, null);","lastModifiedDate":"2024-03-12"},{"lineNumber":180,"author":{"gitId":"ashleygoh1"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Salary.class.getSimpleName());","lastModifiedDate":"2024-03-12"},{"lineNumber":181,"author":{"gitId":"ashleygoh1"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-12"},{"lineNumber":182,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":183,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":184,"author":{"gitId":"ashleygoh1"},"content":" @Test","lastModifiedDate":"2024-02-26"},{"lineNumber":185,"author":{"gitId":"ashleygoh1"},"content":" public void toModelType_invalidSalary_throwsIllegalValueException() {","lastModifiedDate":"2024-02-26"},{"lineNumber":186,"author":{"gitId":"ashleygoh1"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-02-26"},{"lineNumber":187,"author":{"gitId":"ashleygoh1"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_TAGS,","lastModifiedDate":"2024-02-26"},{"lineNumber":188,"author":{"gitId":"ashleygoh1"},"content":" VALID_JOB_DESCRIPTION, VALID_INTERVIEW_DATE, VALID_INTERN_DURATION, INVALID_SALARY);","lastModifiedDate":"2024-02-26"},{"lineNumber":189,"author":{"gitId":"ashleygoh1"},"content":" String expectedMessage \u003d Salary.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-02-26"},{"lineNumber":190,"author":{"gitId":"ashleygoh1"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-02-26"},{"lineNumber":191,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":192,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":193,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"ashleygoh1":105,"-":88}},{"path":"src/test/java/seedu/address/testutil/EditPersonDescriptorBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-03-04"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2024-03-04"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"Jawad280"},"content":"import seedu.address.model.person.InternDuration;","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"Jawad280"},"content":"import seedu.address.model.person.InterviewDate;","lastModifiedDate":"2024-03-11"},{"lineNumber":8,"author":{"gitId":"Jawad280"},"content":"import seedu.address.model.person.JobDescription;","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"Jawad280"},"content":"import seedu.address.model.person.Salary;","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-04"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2024-03-04"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * A utility class to help with building EditPersonDescriptor objects.","lastModifiedDate":"2024-03-04"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-04"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorBuilder {","lastModifiedDate":"2024-03-04"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private EditPersonDescriptor descriptor;","lastModifiedDate":"2024-03-04"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder() {","lastModifiedDate":"2024-03-04"},{"lineNumber":23,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2024-03-04"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(EditPersonDescriptor descriptor) {","lastModifiedDate":"2024-03-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":" this.descriptor \u003d new EditPersonDescriptor(descriptor);","lastModifiedDate":"2024-03-04"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-04"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Returns an {@code EditPersonDescriptor} with fields containing {@code person}\u0027s details","lastModifiedDate":"2024-03-04"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-04"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(Person person) {","lastModifiedDate":"2024-03-04"},{"lineNumber":34,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2024-03-04"},{"lineNumber":35,"author":{"gitId":"eunrcn"},"content":" descriptor.setName(person.getCompanyName());","lastModifiedDate":"2024-03-04"},{"lineNumber":36,"author":{"gitId":"-"},"content":" descriptor.setPhone(person.getPhone());","lastModifiedDate":"2024-03-04"},{"lineNumber":37,"author":{"gitId":"-"},"content":" descriptor.setEmail(person.getEmail());","lastModifiedDate":"2024-03-04"},{"lineNumber":38,"author":{"gitId":"-"},"content":" descriptor.setAddress(person.getAddress());","lastModifiedDate":"2024-03-04"},{"lineNumber":39,"author":{"gitId":"eunrcn"},"content":" descriptor.setTag(person.getTag());","lastModifiedDate":"2024-03-04"},{"lineNumber":40,"author":{"gitId":"eunrcn"},"content":" descriptor.setJobDescription(person.getJobDescription());","lastModifiedDate":"2024-03-04"},{"lineNumber":41,"author":{"gitId":"eunrcn"},"content":" descriptor.setInterviewDate(person.getInterviewDate());","lastModifiedDate":"2024-03-04"},{"lineNumber":42,"author":{"gitId":"eunrcn"},"content":" descriptor.setInternDuration(person.getInternDuration());","lastModifiedDate":"2024-03-04"},{"lineNumber":43,"author":{"gitId":"eunrcn"},"content":" descriptor.setSalary(person.getSalary());","lastModifiedDate":"2024-03-04"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-04"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-03-04"},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-04"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withName(String name) {","lastModifiedDate":"2024-03-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":" descriptor.setName(new Name(name));","lastModifiedDate":"2024-03-04"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2024-03-04"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-04"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-03-04"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-04"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withPhone(String phone) {","lastModifiedDate":"2024-03-04"},{"lineNumber":58,"author":{"gitId":"-"},"content":" descriptor.setPhone(new Phone(phone));","lastModifiedDate":"2024-03-04"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2024-03-04"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-04"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-03-04"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-04"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withEmail(String email) {","lastModifiedDate":"2024-03-04"},{"lineNumber":66,"author":{"gitId":"-"},"content":" descriptor.setEmail(new Email(email));","lastModifiedDate":"2024-03-04"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2024-03-04"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-04"},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-03-04"},{"lineNumber":72,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-04"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withAddress(String address) {","lastModifiedDate":"2024-03-04"},{"lineNumber":74,"author":{"gitId":"-"},"content":" descriptor.setAddress(new Address(address));","lastModifiedDate":"2024-03-04"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2024-03-04"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-04"},{"lineNumber":79,"author":{"gitId":"eunrcn"},"content":" * Sets the {@code Tag} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-03-04"},{"lineNumber":80,"author":{"gitId":"eunrcn"},"content":" */","lastModifiedDate":"2024-03-04"},{"lineNumber":81,"author":{"gitId":"Jawad280"},"content":" public EditPersonDescriptorBuilder withTags(String tag) {","lastModifiedDate":"2024-03-11"},{"lineNumber":82,"author":{"gitId":"Jawad280"},"content":" descriptor.setTag(new Tag(tag));","lastModifiedDate":"2024-03-11"},{"lineNumber":83,"author":{"gitId":"eunrcn"},"content":" return this;","lastModifiedDate":"2024-03-04"},{"lineNumber":84,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":85,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":86,"author":{"gitId":"eunrcn"},"content":" /**","lastModifiedDate":"2024-03-04"},{"lineNumber":87,"author":{"gitId":"eunrcn"},"content":" * Sets the {@code JobDescription} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-03-04"},{"lineNumber":88,"author":{"gitId":"eunrcn"},"content":" */","lastModifiedDate":"2024-03-04"},{"lineNumber":89,"author":{"gitId":"eunrcn"},"content":" public EditPersonDescriptorBuilder withJobDescription(String jobDescription) {","lastModifiedDate":"2024-03-04"},{"lineNumber":90,"author":{"gitId":"eunrcn"},"content":" descriptor.setJobDescription(new JobDescription(jobDescription));","lastModifiedDate":"2024-03-04"},{"lineNumber":91,"author":{"gitId":"eunrcn"},"content":" return this;","lastModifiedDate":"2024-03-04"},{"lineNumber":92,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":93,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":94,"author":{"gitId":"eunrcn"},"content":" /**","lastModifiedDate":"2024-03-04"},{"lineNumber":95,"author":{"gitId":"eunrcn"},"content":" * Sets the {@code InterviewDate} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-03-04"},{"lineNumber":96,"author":{"gitId":"eunrcn"},"content":" */","lastModifiedDate":"2024-03-04"},{"lineNumber":97,"author":{"gitId":"eunrcn"},"content":" public EditPersonDescriptorBuilder withInterviewDate(String interviewDate) {","lastModifiedDate":"2024-03-04"},{"lineNumber":98,"author":{"gitId":"eunrcn"},"content":" descriptor.setInterviewDate(new InterviewDate(interviewDate));","lastModifiedDate":"2024-03-04"},{"lineNumber":99,"author":{"gitId":"eunrcn"},"content":" return this;","lastModifiedDate":"2024-03-04"},{"lineNumber":100,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":101,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":102,"author":{"gitId":"eunrcn"},"content":" /**","lastModifiedDate":"2024-03-04"},{"lineNumber":103,"author":{"gitId":"eunrcn"},"content":" * Sets the {@code InternDuration} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-03-04"},{"lineNumber":104,"author":{"gitId":"eunrcn"},"content":" */","lastModifiedDate":"2024-03-04"},{"lineNumber":105,"author":{"gitId":"eunrcn"},"content":" public EditPersonDescriptorBuilder withInternDuration(String internDuration) {","lastModifiedDate":"2024-03-04"},{"lineNumber":106,"author":{"gitId":"eunrcn"},"content":" descriptor.setInternDuration(new InternDuration(internDuration));","lastModifiedDate":"2024-03-04"},{"lineNumber":107,"author":{"gitId":"eunrcn"},"content":" return this;","lastModifiedDate":"2024-03-04"},{"lineNumber":108,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":109,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":110,"author":{"gitId":"eunrcn"},"content":" /**","lastModifiedDate":"2024-03-04"},{"lineNumber":111,"author":{"gitId":"eunrcn"},"content":" * Sets the {@code Salary} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-03-04"},{"lineNumber":112,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-04"},{"lineNumber":113,"author":{"gitId":"eunrcn"},"content":" public EditPersonDescriptorBuilder withSalary(String salary) {","lastModifiedDate":"2024-03-04"},{"lineNumber":114,"author":{"gitId":"eunrcn"},"content":" descriptor.setSalary(new Salary(salary));","lastModifiedDate":"2024-03-04"},{"lineNumber":115,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2024-03-04"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":118,"author":{"gitId":"-"},"content":" public EditPersonDescriptor build() {","lastModifiedDate":"2024-03-04"},{"lineNumber":119,"author":{"gitId":"-"},"content":" return descriptor;","lastModifiedDate":"2024-03-04"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":121,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-03-04"}],"authorContributionMap":{"eunrcn":39,"Jawad280":6,"-":76}},{"path":"src/test/java/seedu/address/testutil/PersonBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-01-18"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-01-18"},{"lineNumber":5,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.InternDuration;","lastModifiedDate":"2024-02-26"},{"lineNumber":6,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.InterviewDate;","lastModifiedDate":"2024-02-26"},{"lineNumber":7,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.JobDescription;","lastModifiedDate":"2024-02-26"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-01-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-04-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-01-18"},{"lineNumber":11,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.Salary;","lastModifiedDate":"2024-02-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-04-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * A utility class to help with building Person objects.","lastModifiedDate":"2017-04-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class PersonBuilder {","lastModifiedDate":"2016-09-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2020-12-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2017-04-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2020-12-18"},{"lineNumber":22,"author":{"gitId":"ashleygoh1"},"content":" public static final String DEFAULT_ADDRESS \u003d \"\";","lastModifiedDate":"2024-02-26"},{"lineNumber":23,"author":{"gitId":"ashleygoh1"},"content":" public static final String DEFAULT_TAG \u003d \"I\";","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"ashleygoh1"},"content":" public static final String DEFAULT_JOB_DESCRIPTION \u003d \"Software Developer Intern\";","lastModifiedDate":"2024-02-26"},{"lineNumber":25,"author":{"gitId":"ashleygoh1"},"content":" public static final String DEFAULT_INTERVIEW_DATE \u003d null;","lastModifiedDate":"2024-02-26"},{"lineNumber":26,"author":{"gitId":"ashleygoh1"},"content":" public static final String DEFAULT_INTERN_DURATION \u003d \"6 months\";","lastModifiedDate":"2024-02-26"},{"lineNumber":27,"author":{"gitId":"ashleygoh1"},"content":" public static final String DEFAULT_SALARY \u003d \"500\";","lastModifiedDate":"2024-02-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-12-20"},{"lineNumber":33,"author":{"gitId":"ashleygoh1"},"content":" private Tag tag;","lastModifiedDate":"2024-02-26"},{"lineNumber":34,"author":{"gitId":"ashleygoh1"},"content":" private JobDescription jobDescription;","lastModifiedDate":"2024-02-26"},{"lineNumber":35,"author":{"gitId":"ashleygoh1"},"content":" private InterviewDate interviewDate;","lastModifiedDate":"2024-02-26"},{"lineNumber":36,"author":{"gitId":"ashleygoh1"},"content":" private InternDuration internDuration;","lastModifiedDate":"2024-02-26"},{"lineNumber":37,"author":{"gitId":"ashleygoh1"},"content":" private Salary salary;","lastModifiedDate":"2024-02-26"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2020-05-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public PersonBuilder() {","lastModifiedDate":"2017-08-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20"},{"lineNumber":44,"author":{"gitId":"-"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2017-12-20"},{"lineNumber":45,"author":{"gitId":"-"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2017-12-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2017-12-20"},{"lineNumber":47,"author":{"gitId":"ashleygoh1"},"content":" tag \u003d new Tag(DEFAULT_TAG);","lastModifiedDate":"2024-02-26"},{"lineNumber":48,"author":{"gitId":"ashleygoh1"},"content":" jobDescription \u003d new JobDescription(DEFAULT_JOB_DESCRIPTION);","lastModifiedDate":"2024-02-26"},{"lineNumber":49,"author":{"gitId":"ashleygoh1"},"content":" interviewDate \u003d new InterviewDate(DEFAULT_INTERVIEW_DATE);;","lastModifiedDate":"2024-02-26"},{"lineNumber":50,"author":{"gitId":"ashleygoh1"},"content":" internDuration \u003d new InternDuration(DEFAULT_INTERN_DURATION);;","lastModifiedDate":"2024-02-26"},{"lineNumber":51,"author":{"gitId":"ashleygoh1"},"content":" salary \u003d new Salary(DEFAULT_SALARY);;","lastModifiedDate":"2024-02-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * Initializes the PersonBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2016-12-11"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public PersonBuilder(Person personToCopy) {","lastModifiedDate":"2018-01-10"},{"lineNumber":58,"author":{"gitId":"ashleygoh1"},"content":" name \u003d personToCopy.getCompanyName();","lastModifiedDate":"2024-02-25"},{"lineNumber":59,"author":{"gitId":"-"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2017-12-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2017-12-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":" address \u003d personToCopy.getAddress();","lastModifiedDate":"2017-12-20"},{"lineNumber":62,"author":{"gitId":"ashleygoh1"},"content":" tag \u003d personToCopy.getTag();","lastModifiedDate":"2024-02-26"},{"lineNumber":63,"author":{"gitId":"ashleygoh1"},"content":" jobDescription \u003d personToCopy.getJobDescription();","lastModifiedDate":"2024-02-26"},{"lineNumber":64,"author":{"gitId":"ashleygoh1"},"content":" interviewDate \u003d personToCopy.getInterviewDate();","lastModifiedDate":"2024-02-26"},{"lineNumber":65,"author":{"gitId":"ashleygoh1"},"content":" internDuration \u003d personToCopy.getInternDuration();","lastModifiedDate":"2024-02-26"},{"lineNumber":66,"author":{"gitId":"ashleygoh1"},"content":" salary \u003d personToCopy.getSalary();","lastModifiedDate":"2024-02-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11"},{"lineNumber":69,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public PersonBuilder withName(String name) {","lastModifiedDate":"2017-08-15"},{"lineNumber":73,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20"},{"lineNumber":74,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":79,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":80,"author":{"gitId":"ashleygoh1"},"content":" public PersonBuilder withTags(String tag) {","lastModifiedDate":"2024-02-26"},{"lineNumber":81,"author":{"gitId":"ashleygoh1"},"content":" this.tag \u003d new Tag(tag);","lastModifiedDate":"2024-02-26"},{"lineNumber":82,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public PersonBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15"},{"lineNumber":89,"author":{"gitId":"-"},"content":" this.address \u003d new Address(address);","lastModifiedDate":"2017-12-20"},{"lineNumber":90,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":93,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":95,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":96,"author":{"gitId":"-"},"content":" public PersonBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15"},{"lineNumber":97,"author":{"gitId":"-"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2017-12-20"},{"lineNumber":98,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":101,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":103,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15"},{"lineNumber":105,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2017-12-20"},{"lineNumber":106,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":109,"author":{"gitId":"ashleygoh1"},"content":" /**","lastModifiedDate":"2024-02-26"},{"lineNumber":110,"author":{"gitId":"ashleygoh1"},"content":" * Sets the {@code jobDescription} of the {@code Person} that we are building.","lastModifiedDate":"2024-02-26"},{"lineNumber":111,"author":{"gitId":"ashleygoh1"},"content":" */","lastModifiedDate":"2024-02-26"},{"lineNumber":112,"author":{"gitId":"ashleygoh1"},"content":" public PersonBuilder withJobDescription(String jobDescription) {","lastModifiedDate":"2024-02-26"},{"lineNumber":113,"author":{"gitId":"ashleygoh1"},"content":" this.jobDescription \u003d new JobDescription(jobDescription);","lastModifiedDate":"2024-02-26"},{"lineNumber":114,"author":{"gitId":"ashleygoh1"},"content":" return this;","lastModifiedDate":"2024-02-26"},{"lineNumber":115,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":116,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":117,"author":{"gitId":"ashleygoh1"},"content":" /**","lastModifiedDate":"2024-02-26"},{"lineNumber":118,"author":{"gitId":"ashleygoh1"},"content":" * Sets the {@code interviewDate} of the {@code Person} that we are building.","lastModifiedDate":"2024-02-26"},{"lineNumber":119,"author":{"gitId":"ashleygoh1"},"content":" */","lastModifiedDate":"2024-02-26"},{"lineNumber":120,"author":{"gitId":"ashleygoh1"},"content":" public PersonBuilder withInterviewDate(String interviewDate) {","lastModifiedDate":"2024-02-26"},{"lineNumber":121,"author":{"gitId":"ashleygoh1"},"content":" this.interviewDate \u003d new InterviewDate(interviewDate);","lastModifiedDate":"2024-02-26"},{"lineNumber":122,"author":{"gitId":"ashleygoh1"},"content":" return this;","lastModifiedDate":"2024-02-26"},{"lineNumber":123,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":124,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":125,"author":{"gitId":"ashleygoh1"},"content":" /**","lastModifiedDate":"2024-02-26"},{"lineNumber":126,"author":{"gitId":"ashleygoh1"},"content":" * Sets the {@code internDuration} of the {@code Person} that we are building.","lastModifiedDate":"2024-02-26"},{"lineNumber":127,"author":{"gitId":"ashleygoh1"},"content":" */","lastModifiedDate":"2024-02-26"},{"lineNumber":128,"author":{"gitId":"ashleygoh1"},"content":" public PersonBuilder withInternDuration(String internDuration) {","lastModifiedDate":"2024-02-26"},{"lineNumber":129,"author":{"gitId":"ashleygoh1"},"content":" this.internDuration \u003d new InternDuration(internDuration);","lastModifiedDate":"2024-02-26"},{"lineNumber":130,"author":{"gitId":"ashleygoh1"},"content":" return this;","lastModifiedDate":"2024-02-26"},{"lineNumber":131,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":132,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":133,"author":{"gitId":"ashleygoh1"},"content":" /**","lastModifiedDate":"2024-02-26"},{"lineNumber":134,"author":{"gitId":"ashleygoh1"},"content":" * Sets the {@code salary} of the {@code Person} that we are building.","lastModifiedDate":"2024-02-26"},{"lineNumber":135,"author":{"gitId":"ashleygoh1"},"content":" */","lastModifiedDate":"2024-02-26"},{"lineNumber":136,"author":{"gitId":"ashleygoh1"},"content":" public PersonBuilder withSalary(String salary) {","lastModifiedDate":"2024-02-26"},{"lineNumber":137,"author":{"gitId":"ashleygoh1"},"content":" this.salary \u003d new Salary(salary);","lastModifiedDate":"2024-02-26"},{"lineNumber":138,"author":{"gitId":"ashleygoh1"},"content":" return this;","lastModifiedDate":"2024-02-26"},{"lineNumber":139,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":140,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":141,"author":{"gitId":"ashleygoh1"},"content":" /**","lastModifiedDate":"2024-02-26"},{"lineNumber":142,"author":{"gitId":"ashleygoh1"},"content":" * Build the person","lastModifiedDate":"2024-02-26"},{"lineNumber":143,"author":{"gitId":"ashleygoh1"},"content":" */","lastModifiedDate":"2024-02-26"},{"lineNumber":144,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05"},{"lineNumber":145,"author":{"gitId":"ashleygoh1"},"content":" return new Person(name, phone, email, address, tag,","lastModifiedDate":"2024-02-26"},{"lineNumber":146,"author":{"gitId":"ashleygoh1"},"content":" jobDescription, interviewDate, internDuration, salary);","lastModifiedDate":"2024-02-26"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":149,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03"}],"authorContributionMap":{"ashleygoh1":65,"-":84}},{"path":"src/test/java/seedu/address/testutil/PersonUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09"},{"lineNumber":5,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_INTERN_DURATION;","lastModifiedDate":"2024-02-26"},{"lineNumber":6,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_INTERVIEW_DATE;","lastModifiedDate":"2024-02-26"},{"lineNumber":7,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_JOB_DESCRIPTION;","lastModifiedDate":"2024-02-26"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09"},{"lineNumber":10,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SALARY;","lastModifiedDate":"2024-02-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-03-29"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * A utility class for Person.","lastModifiedDate":"2017-04-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class PersonUtil {","lastModifiedDate":"2017-04-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Returns an add command string for adding the {@code person}.","lastModifiedDate":"2017-04-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static String getAddCommand(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":25,"author":{"gitId":"-"},"content":" return AddCommand.COMMAND_WORD + \" \" + getPersonDetails(person);","lastModifiedDate":"2017-03-29"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code person}\u0027s details.","lastModifiedDate":"2017-04-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static String getPersonDetails(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":32,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05"},{"lineNumber":33,"author":{"gitId":"ashleygoh1"},"content":" sb.append(PREFIX_NAME + person.getCompanyName().fullName + \" \");","lastModifiedDate":"2024-02-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" sb.append(PREFIX_PHONE + person.getPhone().value + \" \");","lastModifiedDate":"2017-05-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":" sb.append(PREFIX_EMAIL + person.getEmail().value + \" \");","lastModifiedDate":"2017-05-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":" sb.append(PREFIX_ADDRESS + person.getAddress().value + \" \");","lastModifiedDate":"2017-05-09"},{"lineNumber":37,"author":{"gitId":"ashleygoh1"},"content":" sb.append(PREFIX_TAG + person.getTag().tagName + \" \");","lastModifiedDate":"2024-02-26"},{"lineNumber":38,"author":{"gitId":"ashleygoh1"},"content":" sb.append(PREFIX_JOB_DESCRIPTION + person.getJobDescription().value + \" \");","lastModifiedDate":"2024-02-26"},{"lineNumber":39,"author":{"gitId":"ashleygoh1"},"content":" sb.append(PREFIX_INTERVIEW_DATE + person.getInterviewDate().toString() + \" \");","lastModifiedDate":"2024-02-26"},{"lineNumber":40,"author":{"gitId":"ashleygoh1"},"content":" sb.append(PREFIX_INTERN_DURATION + person.getInternDuration().value + \" \");","lastModifiedDate":"2024-02-26"},{"lineNumber":41,"author":{"gitId":"ashleygoh1"},"content":" sb.append(PREFIX_SALARY + person.getSalary().value);","lastModifiedDate":"2024-02-26"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":44,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05"}],"authorContributionMap":{"ashleygoh1":10,"-":34}},{"path":"src/test/java/seedu/address/testutil/TypicalPersons.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":7,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_INTERN_DURATION_AMY;","lastModifiedDate":"2024-02-26"},{"lineNumber":8,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_INTERN_DURATION_BOB;","lastModifiedDate":"2024-02-26"},{"lineNumber":9,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_INTERVIEW_DATE_AMY;","lastModifiedDate":"2024-02-26"},{"lineNumber":10,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_INTERVIEW_DATE_BOB;","lastModifiedDate":"2024-02-26"},{"lineNumber":11,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_JOB_DESCRIPTION_AMY;","lastModifiedDate":"2024-02-26"},{"lineNumber":12,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_JOB_DESCRIPTION_BOB;","lastModifiedDate":"2024-02-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":17,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SALARY_AMY;","lastModifiedDate":"2024-02-26"},{"lineNumber":18,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SALARY_BOB;","lastModifiedDate":"2024-02-26"},{"lineNumber":19,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_INTERVIEW;","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_NO_REPLY;","lastModifiedDate":"2024-02-26"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-07"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Person} objects to be used in tests.","lastModifiedDate":"2017-08-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":"public class TypicalPersons {","lastModifiedDate":"2017-04-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final Person ALICE \u003d new PersonBuilder().withName(\"Alice Pauline\")","lastModifiedDate":"2018-01-10"},{"lineNumber":35,"author":{"gitId":"-"},"content":" .withPhone(\"94351253\")","lastModifiedDate":"2018-04-19"},{"lineNumber":36,"author":{"gitId":"ashleygoh1"},"content":" .withEmail(\"alice@example.com\")","lastModifiedDate":"2024-02-26"},{"lineNumber":37,"author":{"gitId":"ashleygoh1"},"content":" .withAddress(\"123, Jurong West Ave 6, #08-111\")","lastModifiedDate":"2024-02-26"},{"lineNumber":38,"author":{"gitId":"ashleygoh1"},"content":" .withTags(\"NR\")","lastModifiedDate":"2024-02-26"},{"lineNumber":39,"author":{"gitId":"ashleygoh1"},"content":" .withJobDescription(\"Software engineer developer\")","lastModifiedDate":"2024-02-26"},{"lineNumber":40,"author":{"gitId":"ashleygoh1"},"content":" .withInterviewDate(\"03-01-2024 1000\")","lastModifiedDate":"2024-02-26"},{"lineNumber":41,"author":{"gitId":"ashleygoh1"},"content":" .withInternDuration(\"3 months\")","lastModifiedDate":"2024-02-26"},{"lineNumber":42,"author":{"gitId":"ashleygoh1"},"content":" .withSalary(\"1000\").build();","lastModifiedDate":"2024-02-26"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final Person BENSON \u003d new PersonBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2018-01-10"},{"lineNumber":44,"author":{"gitId":"-"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2017-09-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":" .withEmail(\"johnd@example.com\").withPhone(\"98765432\")","lastModifiedDate":"2017-04-05"},{"lineNumber":46,"author":{"gitId":"ashleygoh1"},"content":" .withTags(\"I\")","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"ashleygoh1"},"content":" .withJobDescription(\"Software engineer developer intern\")","lastModifiedDate":"2024-02-26"},{"lineNumber":48,"author":{"gitId":"Jawad280"},"content":" .withInterviewDate(\"03-02-2024 1000\")","lastModifiedDate":"2024-02-29"},{"lineNumber":49,"author":{"gitId":"ashleygoh1"},"content":" .withInternDuration(\"3 months\")","lastModifiedDate":"2024-02-26"},{"lineNumber":50,"author":{"gitId":"ashleygoh1"},"content":" .withSalary(\"1000\").build();","lastModifiedDate":"2024-02-26"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static final Person CARL \u003d new PersonBuilder().withName(\"Carl Kurz\").withPhone(\"95352563\")","lastModifiedDate":"2018-01-10"},{"lineNumber":52,"author":{"gitId":"ashleygoh1"},"content":" .withEmail(\"heinz@example.com\").withAddress(\"wall street\")","lastModifiedDate":"2024-02-26"},{"lineNumber":53,"author":{"gitId":"ashleygoh1"},"content":" .withTags(\"NR\")","lastModifiedDate":"2024-02-26"},{"lineNumber":54,"author":{"gitId":"ashleygoh1"},"content":" .withJobDescription(\"Software engineer developer intern\")","lastModifiedDate":"2024-02-26"},{"lineNumber":55,"author":{"gitId":"Jawad280"},"content":" .withInterviewDate(\"03-03-2024 1000\")","lastModifiedDate":"2024-02-29"},{"lineNumber":56,"author":{"gitId":"ashleygoh1"},"content":" .withInternDuration(\"3 months\")","lastModifiedDate":"2024-02-26"},{"lineNumber":57,"author":{"gitId":"ashleygoh1"},"content":" .withSalary(\"1000\").build();","lastModifiedDate":"2024-02-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final Person DANIEL \u003d new PersonBuilder().withName(\"Daniel Meier\").withPhone(\"87652533\")","lastModifiedDate":"2018-01-10"},{"lineNumber":59,"author":{"gitId":"ashleygoh1"},"content":" .withEmail(\"cornelia@example.com\").withAddress(\"10th street\")","lastModifiedDate":"2024-02-26"},{"lineNumber":60,"author":{"gitId":"ashleygoh1"},"content":" .withTags(\"NR\")","lastModifiedDate":"2024-02-26"},{"lineNumber":61,"author":{"gitId":"ashleygoh1"},"content":" .withJobDescription(\"Front End intern\")","lastModifiedDate":"2024-02-26"},{"lineNumber":62,"author":{"gitId":"Jawad280"},"content":" .withInterviewDate(\"03-04-2024 1000\")","lastModifiedDate":"2024-02-29"},{"lineNumber":63,"author":{"gitId":"ashleygoh1"},"content":" .withInternDuration(\"3 months\")","lastModifiedDate":"2024-02-26"},{"lineNumber":64,"author":{"gitId":"ashleygoh1"},"content":" .withSalary(\"1200\").build();","lastModifiedDate":"2024-02-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public static final Person ELLE \u003d new PersonBuilder().withName(\"Elle Meyer\").withPhone(\"9482224\")","lastModifiedDate":"2018-01-10"},{"lineNumber":66,"author":{"gitId":"ashleygoh1"},"content":" .withEmail(\"werner@example.com\")","lastModifiedDate":"2024-02-26"},{"lineNumber":67,"author":{"gitId":"ashleygoh1"},"content":" .withTags(\"NR\")","lastModifiedDate":"2024-02-26"},{"lineNumber":68,"author":{"gitId":"ashleygoh1"},"content":" .withJobDescription(\"Software engineer developer intern\")","lastModifiedDate":"2024-02-26"},{"lineNumber":69,"author":{"gitId":"Jawad280"},"content":" .withInterviewDate(\"03-05-2024 1000\")","lastModifiedDate":"2024-02-29"},{"lineNumber":70,"author":{"gitId":"ashleygoh1"},"content":" .withInternDuration(\"3 months\")","lastModifiedDate":"2024-02-26"},{"lineNumber":71,"author":{"gitId":"ashleygoh1"},"content":" .withSalary(\"1000\").build();","lastModifiedDate":"2024-02-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public static final Person FIONA \u003d new PersonBuilder().withName(\"Fiona Kunz\").withPhone(\"9482427\")","lastModifiedDate":"2018-01-10"},{"lineNumber":73,"author":{"gitId":"ashleygoh1"},"content":" .withEmail(\"lydia@example.com\")","lastModifiedDate":"2024-02-26"},{"lineNumber":74,"author":{"gitId":"ashleygoh1"},"content":" .withTags(\"NR\")","lastModifiedDate":"2024-02-26"},{"lineNumber":75,"author":{"gitId":"ashleygoh1"},"content":" .withJobDescription(\"Data science intern\")","lastModifiedDate":"2024-02-26"},{"lineNumber":76,"author":{"gitId":"Jawad280"},"content":" .withInterviewDate(\"03-06-2024 1000\")","lastModifiedDate":"2024-02-29"},{"lineNumber":77,"author":{"gitId":"ashleygoh1"},"content":" .withInternDuration(\"3 months\")","lastModifiedDate":"2024-02-26"},{"lineNumber":78,"author":{"gitId":"ashleygoh1"},"content":" .withSalary(\"1000\").build();","lastModifiedDate":"2024-02-26"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public static final Person GEORGE \u003d new PersonBuilder().withName(\"George Best\").withPhone(\"9482442\")","lastModifiedDate":"2018-01-10"},{"lineNumber":80,"author":{"gitId":"ashleygoh1"},"content":" .withEmail(\"anna@example.com\").withAddress(\"4th street\")","lastModifiedDate":"2024-02-26"},{"lineNumber":81,"author":{"gitId":"ashleygoh1"},"content":" .withTags(\"I\")","lastModifiedDate":"2024-03-12"},{"lineNumber":82,"author":{"gitId":"ashleygoh1"},"content":" .withJobDescription(\"Software engineer developer intern\")","lastModifiedDate":"2024-02-26"},{"lineNumber":83,"author":{"gitId":"Jawad280"},"content":" .withInterviewDate(\"03-07-2024 1000\")","lastModifiedDate":"2024-02-29"},{"lineNumber":84,"author":{"gitId":"ashleygoh1"},"content":" .withInternDuration(\"3 months\")","lastModifiedDate":"2024-02-26"},{"lineNumber":85,"author":{"gitId":"ashleygoh1"},"content":" .withSalary(\"1000\").build();","lastModifiedDate":"2024-02-26"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public static final Person HOON \u003d new PersonBuilder().withName(\"Hoon Meier\").withPhone(\"8482424\")","lastModifiedDate":"2018-01-10"},{"lineNumber":89,"author":{"gitId":"ashleygoh1"},"content":" .withEmail(\"stefan@example.com\").withAddress(\"little india\")","lastModifiedDate":"2024-02-26"},{"lineNumber":90,"author":{"gitId":"ashleygoh1"},"content":" .withTags(\"I\")","lastModifiedDate":"2024-03-12"},{"lineNumber":91,"author":{"gitId":"ashleygoh1"},"content":" .withJobDescription(\"Software engineer developer intern\")","lastModifiedDate":"2024-02-26"},{"lineNumber":92,"author":{"gitId":"Jawad280"},"content":" .withInterviewDate(\"03-08-2024 1700\")","lastModifiedDate":"2024-02-29"},{"lineNumber":93,"author":{"gitId":"ashleygoh1"},"content":" .withInternDuration(\"3 months\")","lastModifiedDate":"2024-02-26"},{"lineNumber":94,"author":{"gitId":"ashleygoh1"},"content":" .withSalary(\"1000\").build();","lastModifiedDate":"2024-02-26"},{"lineNumber":95,"author":{"gitId":"-"},"content":" public static final Person IDA \u003d new PersonBuilder().withName(\"Ida Mueller\").withPhone(\"8482131\")","lastModifiedDate":"2018-01-10"},{"lineNumber":96,"author":{"gitId":"ashleygoh1"},"content":" .withEmail(\"hans@example.com\")","lastModifiedDate":"2024-02-26"},{"lineNumber":97,"author":{"gitId":"ashleygoh1"},"content":" .withTags(\"NR\")","lastModifiedDate":"2024-02-26"},{"lineNumber":98,"author":{"gitId":"ashleygoh1"},"content":" .withJobDescription(\"Full Stack intern\")","lastModifiedDate":"2024-02-26"},{"lineNumber":99,"author":{"gitId":"Jawad280"},"content":" .withInterviewDate(\"03-09-2024 1000\")","lastModifiedDate":"2024-02-29"},{"lineNumber":100,"author":{"gitId":"ashleygoh1"},"content":" .withInternDuration(\"3 months\")","lastModifiedDate":"2024-02-26"},{"lineNumber":101,"author":{"gitId":"ashleygoh1"},"content":" .withSalary(\"1000\").build();","lastModifiedDate":"2024-02-26"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":103,"author":{"gitId":"-"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2017-08-22"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public static final Person AMY \u003d new PersonBuilder().withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2018-01-10"},{"lineNumber":105,"author":{"gitId":"ashleygoh1"},"content":" .withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY).withTags(VALID_TAG_NO_REPLY)","lastModifiedDate":"2024-02-26"},{"lineNumber":106,"author":{"gitId":"ashleygoh1"},"content":" .withJobDescription(VALID_JOB_DESCRIPTION_AMY).withInterviewDate(VALID_INTERVIEW_DATE_AMY)","lastModifiedDate":"2024-02-26"},{"lineNumber":107,"author":{"gitId":"ashleygoh1"},"content":" .withInternDuration(VALID_INTERN_DURATION_AMY).withSalary(VALID_SALARY_AMY).build();","lastModifiedDate":"2024-02-26"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public static final Person BOB \u003d new PersonBuilder().withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2018-01-10"},{"lineNumber":109,"author":{"gitId":"ashleygoh1"},"content":" .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_INTERVIEW)","lastModifiedDate":"2024-03-12"},{"lineNumber":110,"author":{"gitId":"ashleygoh1"},"content":" .withJobDescription(VALID_JOB_DESCRIPTION_BOB).withInterviewDate(VALID_INTERVIEW_DATE_BOB)","lastModifiedDate":"2024-02-26"},{"lineNumber":111,"author":{"gitId":"ashleygoh1"},"content":" .withInternDuration(VALID_INTERN_DURATION_BOB).withSalary(VALID_SALARY_BOB).build();","lastModifiedDate":"2024-02-26"},{"lineNumber":112,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":" private TypicalPersons() {} // prevents instantiation","lastModifiedDate":"2017-07-20"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":116,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":117,"author":{"gitId":"-"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2017-08-05"},{"lineNumber":118,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":119,"author":{"gitId":"-"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2017-08-05"},{"lineNumber":120,"author":{"gitId":"-"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2017-08-05"},{"lineNumber":121,"author":{"gitId":"-"},"content":" for (Person person : getTypicalPersons()) {","lastModifiedDate":"2018-01-10"},{"lineNumber":122,"author":{"gitId":"-"},"content":" ab.addPerson(person);","lastModifiedDate":"2017-08-05"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13"},{"lineNumber":124,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04"},{"lineNumber":127,"author":{"gitId":"-"},"content":" public static List\u003cPerson\u003e getTypicalPersons() {","lastModifiedDate":"2018-01-10"},{"lineNumber":128,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2017-08-07"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04"},{"lineNumber":130,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13"}],"authorContributionMap":{"Jawad280":8,"ashleygoh1":62,"-":60}}] diff --git a/AY2324S2-CS2103T-F14-1_tp_master/commits.json b/AY2324S2-CS2103T-F14-1_tp_master/commits.json index 6e040227..c9c7fb97 100644 --- a/AY2324S2-CS2103T-F14-1_tp_master/commits.json +++ b/AY2324S2-CS2103T-F14-1_tp_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"eunrcn":[{"date":"2024-02-25","commitResults":[{"hash":"0cd3bdc989755c7ed43a8523cc9d8592ed363c5d","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":40,"deletions":10}}},{"hash":"c7e914ce20a66490ee2c6c968b9adfc187767466","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"b3975f7769ca075ee0cd10cd246aa26bbd31253f","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":4}}},{"hash":"b3412e8d21e2cca2ae14585b99a3ee63ec447d27","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027upstream/master\u0027","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-02-28","commitResults":[{"hash":"9087634673272c4b9aacdfd3a4981e26df04e166","isMergeCommit":false,"messageTitle":"before i go crazy","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":342,"deletions":327},"docs":{"insertions":1,"deletions":1}}},{"hash":"4d48a0558a1cbb536656ae2ba00ead0240359df3","isMergeCommit":false,"messageTitle":"i need to restart the ide","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":171}}},{"hash":"3372f5a12a5623167ba02deee90937332255aef0","isMergeCommit":false,"messageTitle":"i need to restart the ide","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":281,"deletions":22},"docs":{"insertions":4,"deletions":4},"test-code":{"insertions":1,"deletions":1}}},{"hash":"e90d8c8db6708686cccd3d271f9fe57636b4a653","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}},{"hash":"aedeef19613f887efdc9b579e95c25fd0e2466b0","isMergeCommit":false,"messageTitle":"before i go crazy","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":342,"deletions":327},"docs":{"insertions":1,"deletions":1}}},{"hash":"d7df7f89c530dbc3ef386559b6d51c7074f1d0fb","isMergeCommit":false,"messageTitle":"i need to restart the ide","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":171}}},{"hash":"d8e6ae17fbfd38ff7a7df109f3d530aba1d6fb13","isMergeCommit":false,"messageTitle":"Implement EditCommandParser, EditCommand, README.md","messageBody":"Create EditCommandParser to parse user input for editing a person\u0027s details in the address book. The parser handles the input arguments, validates them, and constructs an EditCommand object for execution. It uses CliSyntax prefixes and follows a similar structure as the AddCommandParser. The parsing logic for each attribute (name, phone, email, address, tags, jobDescription, interviewDate, internDuration, salary) is provided, and the EditPersonDescriptor is updated accordingly.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":281,"deletions":22},"docs":{"insertions":4,"deletions":4},"test-code":{"insertions":1,"deletions":1}}},{"hash":"84fb48af30266ef49e59def139d0152ae70b8df0","isMergeCommit":true,"messageTitle":"Merge pull request #19 from eunrcn/edit-user-command","messageBody":"Edit user command","fileTypesAndContributionMap":{}},{"hash":"dee005733138e04614d1fd8e7a8d24d9ddff9d95","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into list-sort-feature","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ff077d86cc6c6b13b43cb40856299ff43bb877a5","isMergeCommit":true,"messageTitle":"Merge pull request #11 from Jawad280/list-sort-feature","messageBody":"List sort feature","fileTypesAndContributionMap":{}},{"hash":"70757311f0d1c7009d98281de8d45534f5c02b6f","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into ui-change-v2","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"2bf68d378518de9cf0e8aaa29b430e2e09d766f5","isMergeCommit":true,"messageTitle":"Merge pull request #10 from Jawad280/ui-change-v2","messageBody":"UI change v2","fileTypesAndContributionMap":{}},{"hash":"1a3591b38a2804685c5a1bca534e29b53a32526b","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into about-us","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"bb15b96192da118c460c8dce2fedd4bcdae4b1f8","isMergeCommit":true,"messageTitle":"Merge pull request #12 from Jawad280/about-us","messageBody":"About us","fileTypesAndContributionMap":{}},{"hash":"466970275c7eca80fa4821cdb9d2906299c11996","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"180f24f7cde7a2b6cb01146757d4fb8d96ef2e7a","isMergeCommit":true,"messageTitle":"Merge pull request #20 from eunrcn/master","messageBody":"Implement EditCommandParser, EditCommand, README.md","fileTypesAndContributionMap":{}},{"hash":"b10868a6cfaf9af636253fd399a624e52c8997af","isMergeCommit":false,"messageTitle":"Remove duplicate method","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":3}}},{"hash":"4c41d2d12227744858662ff3d3c21b4953f564dc","isMergeCommit":true,"messageTitle":"Merge pull request #22 from eunrcn/master","messageBody":"Remove duplicate method","fileTypesAndContributionMap":{}}]},{"date":"2024-02-29","commitResults":[{"hash":"e906563e27c635c19e9572e77ca6bb8ed2164147","isMergeCommit":true,"messageTitle":"Merge pull request #23 from Jawad280/edit-v2","messageBody":"Edit command tweaks","fileTypesAndContributionMap":{}}]},{"date":"2024-03-01","commitResults":[{"hash":"0e86ea8d3bf59f05a541ad0e54c5bfeff227f5fa","isMergeCommit":false,"messageTitle":"Rename my github username","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"32a484d3af811f8d282f7fd303e4d63b784e7469","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-F14-1:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"7e44cf99bfaafbfc9e8b5cddadb675f22b52b907","isMergeCommit":true,"messageTitle":"Merge pull request #26 from eunrcn/master","messageBody":"Github Username","fileTypesAndContributionMap":{}},{"hash":"e2ac9386c6386c8f9ece3b98b8c273725952c91b","isMergeCommit":false,"messageTitle":"Developer Guide User Stories","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":8}}}]},{"date":"2024-03-04","commitResults":[{"hash":"6e4d97e9d7e85b0ebe22ea9e449fd87ce51fa67a","isMergeCommit":false,"messageTitle":"Debugging Edit Command and Edit Command Parser Test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":613,"deletions":554}}}]},{"date":"2024-03-11","commitResults":[{"hash":"a36debcf1af88254054314c420c3ea576406e395","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-F14-1:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"e4643d8d2642e470c1811ae2cdab1fbac2b85ea9","isMergeCommit":true,"messageTitle":"Merge pull request #34 from eunrcn/master","messageBody":"Debugging Edit Command and Edit Command Parser Test","fileTypesAndContributionMap":{}}]},{"date":"2024-03-12","commitResults":[{"hash":"998da3fa9c038c1d95c23da0cd38f9c0506f69c8","isMergeCommit":false,"messageTitle":"commit to git pull","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0}}},{"hash":"69c43722024f2d7846440032515c1dfa3e49cbb7","isMergeCommit":false,"messageTitle":"Implement test cases for ViewCommand and ViewCommandTest, and AddressBookParserTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":209,"deletions":41}}},{"hash":"d64ded923fb2cb4cdbfe982e2b77f62a7a823b0e","isMergeCommit":true,"messageTitle":"Merge pull request #45 from eunrcn/master","messageBody":"Implement test cases for ViewCommand and ViewCommandTest, and AddressBookParserTest","fileTypesAndContributionMap":{}}]},{"date":"2024-03-13","commitResults":[{"hash":"07430928129e037c759eaf2f3bd9b339b5e7f4fc","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into edit-test","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b650b7c87e494add4e9092c58420de0abd2c03ae","isMergeCommit":true,"messageTitle":"Merge pull request #43 from Jawad280/edit-test","messageBody":"EditCommandTest and EditCommandParserTest updated","fileTypesAndContributionMap":{}}]},{"date":"2024-03-14","commitResults":[{"hash":"b55261a37f2376d4695d9dc4e3a4291899127035","isMergeCommit":false,"messageTitle":"Implement test cases for ViewCommand and ViewCommandTest, and AddressBookParserTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":12,"deletions":15}}},{"hash":"6cf1349a7a57e4278c0e12a288744878ed798d27","isMergeCommit":false,"messageTitle":"Implement test cases for ViewCommand and ViewCommandTest, and AddressBookParserTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":1}}},{"hash":"624a7f632fc185abea3b9ab15ed3049d9be7e5f7","isMergeCommit":false,"messageTitle":"Implement test cases for ViewCommand and ViewCommandTest, and AddressBookParserTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":18,"deletions":14}}},{"hash":"798c2eb6c49cf7fbd6773ca0a82e6606cb2ccdc2","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into ViewCommandTest","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b921d4bcfda39d13ad86c19698e48caedcce0b03","isMergeCommit":true,"messageTitle":"Merge pull request #50 from eunrcn/ViewCommandTest","messageBody":"View Command, View Command Parser, Address Book test cases","fileTypesAndContributionMap":{}},{"hash":"e792cd9488997336ed8af40992ad5986202cbc47","isMergeCommit":false,"messageTitle":"Remove unnessary function in ParserUtil.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":20}}},{"hash":"40b84916e9c94a01217983266bf7da25711a865b","isMergeCommit":false,"messageTitle":"Remove unnessary function in ParserUtil.java and EditCommandParser.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":22},"test-code":{"insertions":0,"deletions":3}}},{"hash":"da7872972c9584e06fd61841b4f55015816f1584","isMergeCommit":false,"messageTitle":"Remove unnessary function in ParserUtil.java and EditCommandParser.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":4}}},{"hash":"c8df4eeef0fbe10c84f62515b0e373ea5a3fefd1","isMergeCommit":false,"messageTitle":"Remove unnessary function in ParserUtil.java and EditCommandParser.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":7}}},{"hash":"b213bc4fdfe00420e8e9545e1f3fddf12c5f1f26","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"e149832ea5faae468f79275682a7daedb4b6d437","isMergeCommit":false,"messageTitle":"Remove unnessary function in ParserUtil.java and EditCommandParser.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"35e001e6cfd9a4095b9c4f8604f1e606fff1fb9f","isMergeCommit":false,"messageTitle":"Remove unnessary function in ParserUtil.java and EditCommandParser.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":9,"deletions":1}}},{"hash":"501e5ae4b9f7446fb8c8204f9d8e83ee1b544b4c","isMergeCommit":true,"messageTitle":"Merge pull request #51 from eunrcn/master","messageBody":"Remove unnessary function in ParserUtil.java, EditCommandParser.java","fileTypesAndContributionMap":{}}]},{"date":"2024-03-18","commitResults":[{"hash":"05c0a194ee015aee971c07580a6b68a71beaac54","isMergeCommit":false,"messageTitle":"Edit ModelClassDiagram.puml to update the changes to Person","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":3}}},{"hash":"0feb65635b7366cb1a4f04ca36d7d2075072c270","isMergeCommit":true,"messageTitle":"Merge pull request #56 from eunrcn/master","messageBody":"Edit ModelClassDiagram.puml to update the changes to Person","fileTypesAndContributionMap":{}},{"hash":"d8f98901df63bf95b66ac74966f4460bbbbf1b48","isMergeCommit":false,"messageTitle":"Edit ModelClassDiagram.puml to update the changes to Person, Edit BetterModelCLassDiagram to update changes to Tag and Person","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":7}}},{"hash":"8bed3facffeb2a7eb20598b01645dfe43476f556","isMergeCommit":true,"messageTitle":"Merge pull request #57 from eunrcn/master","messageBody":"Edit ModelClassDiagram.puml to update the changes to Person, Edit Bet…","fileTypesAndContributionMap":{}}]},{"date":"2024-03-19","commitResults":[{"hash":"2161c914fab431324f2cb5ad562bab1735cac31b","isMergeCommit":true,"messageTitle":"Merge pull request #55 from chenyixin0/master","messageBody":"Update find and exception command test","tags":["v1.2"],"fileTypesAndContributionMap":{}}]}],"chenyixin0":[{"date":"2024-02-25","commitResults":[{"hash":"982cfaee95655364aedaeb31d37dd2404d126cf0","isMergeCommit":true,"messageTitle":"Merge pull request #2 from eunrcn/master","messageBody":"Update README.md","fileTypesAndContributionMap":{}}]},{"date":"2024-02-29","commitResults":[{"hash":"bfb35deb0850f85af37824fc722aa0944321c2a7","isMergeCommit":false,"messageTitle":"Add find command halfway","messageBody":"Ui is still bugged\n","fileTypesAndContributionMap":{"functional-code":{"insertions":54,"deletions":9}}},{"hash":"9d94238ad9b7188dbbe813415012bfc2d88e1cd4","isMergeCommit":false,"messageTitle":"Add Find command correctly","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":38,"deletions":27},"docs":{"insertions":5,"deletions":5}}}]},{"date":"2024-03-01","commitResults":[{"hash":"c7214479a83a1e4a8719287d3f75fbf77db504b4","isMergeCommit":true,"messageTitle":"Merge pull request #24 from chenyixin0/master","messageBody":"AboutUs, Find command","fileTypesAndContributionMap":{}}]},{"date":"2024-03-07","commitResults":[{"hash":"ac06240c7ee50cf36290a36777429e7bbc54810e","isMergeCommit":false,"messageTitle":"Improve Find and View UI","messageBody":"Side view panel no longer displays white box on default.\n\nStill displays a really weird white border havent figure out why yet.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":20,"deletions":20}}},{"hash":"3aa4b47a013833a38f8390f1fb7d126cff89525d","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/chenyixin0/tp","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-08","commitResults":[{"hash":"270dbf04fc2fa1fc8b507564ee5196322b030d6c","isMergeCommit":false,"messageTitle":"Finish side panel UI update","messageBody":"Side panel UI now exhibits correct display behaviour\n","fileTypesAndContributionMap":{"functional-code":{"insertions":31,"deletions":10}}},{"hash":"837629d3d17da598399aaeac98926d9bb05221e6","isMergeCommit":false,"messageTitle":"Update for checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":3}}},{"hash":"71ed1a0848aa572e77930de27a3b7de7801b7daa","isMergeCommit":false,"messageTitle":"Update test files to reflect new CommandResult constructor","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":7,"deletions":7}}},{"hash":"cd500ea6f684f3155a6b211c392ff81ca1dbfde7","isMergeCommit":false,"messageTitle":"Update find command test cases","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":14,"deletions":4}}},{"hash":"eef2ec33ff42c621426e9aea2a447889ae4c6b76","isMergeCommit":false,"messageTitle":"Update for checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":10,"deletions":10}}},{"hash":"654db56598f6bd319ab2cb4c0f99603fd48f81e8","isMergeCommit":false,"messageTitle":"i swear to god if i fail checkstyle one more time","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":1}}},{"hash":"13e038b330de05b66c6ece6a49aa09c864719562","isMergeCommit":false,"messageTitle":"Update UI logic to be more concise","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":14}}}]},{"date":"2024-03-11","commitResults":[{"hash":"c8d5072c6c82a3e311ef65f121ee4fdbb1b6dda3","isMergeCommit":true,"messageTitle":"Merge pull request #36 from chenyixin0/master","messageBody":"Improvements to find/view UI","fileTypesAndContributionMap":{}}]},{"date":"2024-03-12","commitResults":[{"hash":"5048741be375927c2f9199f42822751ab65f3395","isMergeCommit":false,"messageTitle":"Update testcases for CommandResult","messageBody":"Add more tests to CommandResultTest file to test overloaded constructors for CommandResult object.\n","fileTypesAndContributionMap":{"test-code":{"insertions":32,"deletions":2}}},{"hash":"dd1bc6a497efd0649501b333070f449c89957e36","isMergeCommit":false,"messageTitle":"eunice ur files kena my checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":4}}},{"hash":"edb04dd90f3a40be70ff46cc261427f886a3254f","isMergeCommit":false,"messageTitle":"Edit for checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":71,"deletions":15}}}]},{"date":"2024-03-15","commitResults":[{"hash":"61966fe1e48ea34c1915dad9f97b941483563b8b","isMergeCommit":true,"messageTitle":"Resolve merge conflict","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"54fc2808fa9eea5546130fcdcba4f5f33c55d44b","isMergeCommit":true,"messageTitle":"Merge pull request #53 from chenyixin0/conflict-branch","messageBody":"Resolving Conflict branch","fileTypesAndContributionMap":{}},{"hash":"64ddf3caea70cc8139ac48a4adcfb968d7c4c51a","isMergeCommit":true,"messageTitle":"Merge pull request #54 from AY2324S2-CS2103T-F14-1/command-result-test","messageBody":"Command result test","fileTypesAndContributionMap":{}},{"hash":"3cd38b959736e825f26817819b42fe0e350c86fd","isMergeCommit":false,"messageTitle":"Update find command test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":3}}},{"hash":"5046bde110ddeaa7f16ef88c6e927b15ef45f06a","isMergeCommit":false,"messageTitle":"Add more find tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":8,"deletions":4}}}]},{"date":"2024-03-17","commitResults":[{"hash":"ec0321ced2a5db7fe083192604305ed198fc0e38","isMergeCommit":false,"messageTitle":"Update Exception tests","messageBody":"Had to comment out one line from one of the test methods that compares if the generated model with\nan expected model but i havent figured out why that one keeps failing yet\n","fileTypesAndContributionMap":{"test-code":{"insertions":35,"deletions":26}}}]}],"minghowC":[{"date":"2024-03-01","commitResults":[{"hash":"4ca3dea543c95143e2a4d16638916ecf309f2a02","isMergeCommit":false,"messageTitle":"Add my AboutUS.md details","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"24e282da380f51c1bdbb9602341f0d106a877e3c","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027upstream/master\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"fbe28239026c115f3c9f2a189e0cd0c9c6a5f8d4","isMergeCommit":false,"messageTitle":"Add delete feature","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":0}}},{"hash":"3cfc9010be6d990cb335dd0021ff33aeb814e020","isMergeCommit":true,"messageTitle":"Merge pull request #28 from minghowC/master","messageBody":"Add delete feature","fileTypesAndContributionMap":{}}]},{"date":"2024-03-08","commitResults":[{"hash":"5e85ff2e6d7146293b90be23256eaf47f5326948","isMergeCommit":false,"messageTitle":"Update Minghow profile","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"0b37fb5faa010ba6c3ec621eba28b812ca693e74","isMergeCommit":true,"messageTitle":"Merge pull request #37 from minghowC/add-minghowC-info","messageBody":"Update Minghow profile","fileTypesAndContributionMap":{}}]}],"Jawad280":[{"date":"2024-02-25","commitResults":[{"hash":"a7783867c92a5a46814382d06ac2889ad9ef58d5","isMergeCommit":false,"messageTitle":"Remark tutorial","messageBody":"The tutorial for adding a command, remark in the AB.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":180,"deletions":16}}},{"hash":"f497f581a26aded9b0aba848fd1f6f077419982a","isMergeCommit":false,"messageTitle":"Restore to tp master","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":176}}},{"hash":"44dcd8a249a1c6937d1cab34f48cc42e1c0a11d3","isMergeCommit":false,"messageTitle":"Restore to tp master including JavaFX","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":4}}}]},{"date":"2024-02-26","commitResults":[{"hash":"72b6fe1d1feaff7fdd17593858b00050831a17ef","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-F14-1:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"4aebef91a564c0a38b6264577a2b40f6d858be33","isMergeCommit":false,"messageTitle":"List function implemented with auto sort by interview date","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":20,"deletions":4}}},{"hash":"ad2e6e6e6a1279989051a6a86af43b832194580c","isMergeCommit":false,"messageTitle":"Ui is updated together with a simple view feature","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":250,"deletions":12}}}]},{"date":"2024-02-27","commitResults":[{"hash":"af8d4de6e6ed2407cd3199b9b3098a2b77380af6","isMergeCommit":false,"messageTitle":"AboutUs page updated \u0026 included picture","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}}]},{"date":"2024-02-29","commitResults":[{"hash":"a98c3853d486f940b161f73b2a536e80d20fcb69","isMergeCommit":false,"messageTitle":"Edit command tweaks","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":50,"deletions":30}}},{"hash":"b47cf87fadc45499cf2a1e02965cadbc81aba8e9","isMergeCommit":false,"messageTitle":"Reformatted classes to fit checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":15},"test-code":{"insertions":1,"deletions":1}}},{"hash":"adca670b121b567c6103b05a133a1952e604b1fd","isMergeCommit":false,"messageTitle":"Edited test classes to reflect changes in our main classes","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":12,"deletions":3}}}]},{"date":"2024-03-01","commitResults":[{"hash":"c9656627807a5a25559c51df77f64b69af34608f","isMergeCommit":true,"messageTitle":"Merge pull request #25 from minghowC/master","messageBody":"Update AboutUs.md for everyone","fileTypesAndContributionMap":{}},{"hash":"1f9824cca54b5ee7cd9917f8440992221726fecd","isMergeCommit":false,"messageTitle":"Developer Guide updated with use cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":22,"deletions":16},"docs":{"insertions":119,"deletions":20}}},{"hash":"edd259a66efe637953f9370b1cd5d03c3f632e9c","isMergeCommit":true,"messageTitle":"Merge branch \u0027DG\u0027 into DG-v2","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"40e2be88e2a1d621b4fc29698ac76917c05bb749","isMergeCommit":true,"messageTitle":"Merge pull request #27 from eunrcn/master","messageBody":"Developer Guide User Stories","fileTypesAndContributionMap":{}},{"hash":"65f56fa2ecb089e8f35aa13b2e268852c354eff2","isMergeCommit":false,"messageTitle":"Developer Guide edited to include Use Case","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"651c53401fd3cd17b415a7e54dc5e778f92c61c8","isMergeCommit":false,"messageTitle":"Update DG","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":0}}},{"hash":"49001518677cd99d41d76f2a118d92ed2a961020","isMergeCommit":true,"messageTitle":"Merge pull request #30 from Jawad280/DG-v2","messageBody":"Developer Guide edited to include Use Cases","fileTypesAndContributionMap":{}},{"hash":"c4eb64ca81ebba0163703ba0d9dbd5e8f0bf8899","isMergeCommit":false,"messageTitle":"UG updated \u0026 DG finalised","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":75,"deletions":68}}},{"hash":"2dd836dd6a3fb60422f14ce3d26a585d042c18ef","isMergeCommit":false,"messageTitle":"Updated FindCommand and FindCommandTest to pass test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"0ad563ef3e6ff78790bcd25a1b468106619a5985","isMergeCommit":true,"messageTitle":"Merge pull request #31 from Jawad280/UG","messageBody":"* UG updated \u0026 DG finalised\r\n* FindCommand \u0026 FindCommandTest has been updated to pass test cases","fileTypesAndContributionMap":{}}]},{"date":"2024-03-02","commitResults":[{"hash":"7e0ab9d1a79ab01d4756f7cc54c1c6b459922034","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":6}}},{"hash":"6f21796aa0f276bdd5b50f4ef3580d642c5662d3","isMergeCommit":false,"messageTitle":"Update AboutUs.md","messageBody":"src\u003d\"images/minghowc\" changed to src\u003d\"images/minghowC\"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"10890b9de2c8244da3c35ea2e657532427eb23f8","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"Updated Actions build badge to our CI","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"e652643f1bd82fc981347e914f5cf8757a42d80e","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"Update link of GitHub Actions build status to reflect out CI","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"17f42bbd0898b2834e896f6aeb1f523499656a3b","isMergeCommit":false,"messageTitle":"Update UserGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":12,"deletions":0}}},{"hash":"849a4015008919834a3d02d24ff79a3ee8bab43d","isMergeCommit":true,"messageTitle":"Merge pull request #33 from ashleygoh1/v1.2-readme-dg","messageBody":"Edit AboutUs.md making sure CI banners pointing to own project","fileTypesAndContributionMap":{}}]},{"date":"2024-03-03","commitResults":[{"hash":"1dc44135b25b17969c3eac957fa5e1d9a2d9d988","isMergeCommit":false,"messageTitle":"Update AboutUs.md","messageBody":"Change from .jpg to .png","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-11","commitResults":[{"hash":"ed46bcc240e84198230d5d8aebe57b19e89ff0ae","isMergeCommit":false,"messageTitle":"CommandResult and company card ui updated","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":144,"deletions":70},"test-code":{"insertions":7,"deletions":7}}},{"hash":"0fc8792b07ef9efffaf69b76b855d9917041cd5b","isMergeCommit":false,"messageTitle":"CommandResult and company card ui updated","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4}}},{"hash":"97cc9a3633f1db958e75e58a3f1d03c18aca3ef9","isMergeCommit":true,"messageTitle":"Merge pull request #42 from Jawad280/company-card-ui","messageBody":"CommandResult and company card ui updated","fileTypesAndContributionMap":{}},{"hash":"0e820f53c4810d609b24e1c1e0d0e1aed10ad102","isMergeCommit":false,"messageTitle":"EditCommandTest and EditCommandParserTest updated","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":110,"deletions":59}}},{"hash":"5ed175913145bef845fc1d693ded2b76c1be1f2f","isMergeCommit":false,"messageTitle":"EditCommandTest and EditCommandParserTest updated","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":16,"deletions":6}}},{"hash":"1479fbb5101a4dc6ce6dd08175e60af7667673d9","isMergeCommit":false,"messageTitle":"EditCommandTest and EditCommandParserTest Updated","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":13,"deletions":15}}}]},{"date":"2024-03-13","commitResults":[{"hash":"f53924a2eac08a180be7e35e40776e772c26ec5c","isMergeCommit":true,"messageTitle":"Merge pull request #48 from ashleygoh1/v1.2-edit-test-cases","messageBody":"Update edit test cases","fileTypesAndContributionMap":{}}]}],"ashleygoh1":[{"date":"2024-02-23","commitResults":[{"hash":"c37653119c039b3b06a0f1c97a54bf50bab58e13","isMergeCommit":true,"messageTitle":"Merge pull request #1 from nus-cs2103-AY2324S2/switch-docs-to-markbind","messageBody":"Switch docs to markbind","fileTypesAndContributionMap":{}},{"hash":"02b788dfe07da9cd8cdbf59e8a88d7b173519b99","isMergeCommit":false,"messageTitle":"Update default.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-02-25","commitResults":[{"hash":"91310b8007505d028bf03ebb7328628123aac855","isMergeCommit":false,"messageTitle":"Edit add person command","messageBody":"Allow user to input additional information such as job description, interview date, intern duration, and salary\n\nCreate new java files for the new parameters (job description, interview date, intern duration, and salary)\n\nUpdate the message shown to user when inputs are successfully added to the address book\n","fileTypesAndContributionMap":{"functional-code":{"insertions":820,"deletions":452},"test-code":{"insertions":7,"deletions":7}}},{"hash":"ac8ff5ede9e0140593cce2738807dc140cfe0a4b","isMergeCommit":false,"messageTitle":"Edit the code to adhere to checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":72,"deletions":52}}}]},{"date":"2024-02-26","commitResults":[{"hash":"40a8dc2db17be26f847e2e62578d0ec85daf5d0c","isMergeCommit":false,"messageTitle":"Edit the code to adhere to checkstyle","messageBody":"Update add command making address and interview date optional\n","fileTypesAndContributionMap":{"functional-code":{"insertions":60,"deletions":67},"test-code":{"insertions":725,"deletions":674}}},{"hash":"48b2b75118695a2e36e2b48fa421555c9c79da9e","isMergeCommit":false,"messageTitle":"Edit the code to adhere to checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":5}}},{"hash":"1555b79e2fb6a6cbc1c5fa2df744fdb9b5442024","isMergeCommit":false,"messageTitle":"Edit the code to adhere to checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":22,"deletions":1},"test-code":{"insertions":50,"deletions":84}}},{"hash":"6c916d78717a24e63ace889976d7f9ad6a775c9f","isMergeCommit":false,"messageTitle":"Edit the code to adhere to checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":6,"deletions":3}}},{"hash":"a803a78f42529db23dbcfe4eadb3f4d4dba645dc","isMergeCommit":false,"messageTitle":"Edit the code to adhere to checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":1}}},{"hash":"2b6bcf8fd067cc7e80bc13859d4d00495d051c45","isMergeCommit":false,"messageTitle":"Edit the code to pass test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":19,"deletions":15},"test-code":{"insertions":159,"deletions":34}}},{"hash":"53c3484501afe1c222de9e19e3a0265280e371a8","isMergeCommit":false,"messageTitle":"Edit the code to pass test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":4}}},{"hash":"c681a5e1e216e5b28d8ae7a1a38b3c4bef1c6464","isMergeCommit":false,"messageTitle":"Comment out unuse test cases","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":74,"deletions":75}}},{"hash":"0a725fae3815ac4eacc7358b4914f5d105c0a158","isMergeCommit":true,"messageTitle":"Merge pull request #6 from ashleygoh1/v1.2-add-user-command","messageBody":"Edit add person command","fileTypesAndContributionMap":{}},{"hash":"ee45f5fafbc62b4861e26d071bf3bf0d4720ec40","isMergeCommit":true,"messageTitle":"Merge pull request #9 from AY2324S2-CS2103T-F14-1/add-user-command","messageBody":"Add user command","fileTypesAndContributionMap":{}}]},{"date":"2024-02-27","commitResults":[{"hash":"a5a33c8068e449766a7fcb1e2e1d8c05236d5e95","isMergeCommit":false,"messageTitle":"Edit UserGuide.md and AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":0},"docs":{"insertions":210,"deletions":42}}},{"hash":"085f8e3a69ef3ef61c9f29c1f52f2ac4cf225bdc","isMergeCommit":false,"messageTitle":"Edit the code to adhere to checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"f099d488e6f666a9e4118ac987d9547dc00cba64","isMergeCommit":true,"messageTitle":"Merge pull request #15 from ashleygoh1/v1.2-update-ug","messageBody":"Edit UserGuide.md and AboutUs.md","fileTypesAndContributionMap":{}},{"hash":"120a711cc7f58c49bc269f566b3d92db4ae13cd0","isMergeCommit":true,"messageTitle":"Merge pull request #16 from AY2324S2-CS2103T-F14-1/update-ug","messageBody":"Update ug","fileTypesAndContributionMap":{}}]},{"date":"2024-03-02","commitResults":[{"hash":"ada3fc193734a4f821e290355418b26a1d5157b0","isMergeCommit":false,"messageTitle":"Edit AboutUs.md making sure CI banners pointing to own project","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":12}}},{"hash":"3396036cac84e2f12b7a53bc72867b2d5e6ddee3","isMergeCommit":false,"messageTitle":"Edit the code to adhere to checkstyle","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":6}}}]},{"date":"2024-03-12","commitResults":[{"hash":"0ddf9064d02a4c599c4a4043bf314440da00538d","isMergeCommit":false,"messageTitle":"change tag from \"F\" to \"I\" \"F\" stand for first interview \"I\" stand for interview we generalise the this giving the user more flexibility","messageBody":"update and create test cases for\nJsonAdaptedPersonTest.java, InternDurationTest.java,\nSalaryTest.java, JobDescriptionTest.java\n","fileTypesAndContributionMap":{"test-code":{"insertions":332,"deletions":64}}}]},{"date":"2024-03-13","commitResults":[{"hash":"8fe1027705d740cbd336746a8e26f97a663c872c","isMergeCommit":true,"messageTitle":"Merge pull request #46 from ashleygoh1/v1.2-add-test-cases","messageBody":"update and create test cases","fileTypesAndContributionMap":{}},{"hash":"2b178d3c5553b7f17f587e158f131b9b901f28ec","isMergeCommit":false,"messageTitle":"change \"TAG_DESC_FIRST_INTERVIEW\" to \"TAG_DESC_INTERVIEW;\" and \"VALID_TAG_FIRST_INTERVIEW\" to \"VALID_TAG_INTERVIEW\" we change it to make the tag more general, giving the user more flexibility when inputing the intern status","messageBody":"Update the ViewCommandPaserTest.java to pass the test cases\n","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":12,"deletions":12}}}]}]},"authorFileTypeContributionMap":{"eunrcn":{"docs":57,"functional-code":88,"test-code":256},"chenyixin0":{"docs":4,"functional-code":53,"test-code":78},"minghowC":{"docs":1,"functional-code":3,"test-code":0},"Jawad280":{"docs":166,"functional-code":398,"test-code":74},"ashleygoh1":{"docs":74,"functional-code":553,"test-code":572}},"authorContributionVariance":{"eunrcn":239466.53,"chenyixin0":1717.5815,"minghowC":1.443786,"Jawad280":17997.99,"ashleygoh1":226775.03},"authorDisplayNameMap":{"eunrcn":"CS2103T-F14-1 EUNI..NING","chenyixin0":"CS2103T-F14-1 CHEN..IXIN","minghowC":"CS2103T-F14-1 CHAI.. HOW","Jawad280":"CS2103T-F14-1 JAWA..THAB","ashleygoh1":"CS2103T-F14-1 ASHL..TING"}} +{"authorDailyContributionsMap":{"eunrcn":[{"date":"2024-02-25","commitResults":[{"hash":"0cd3bdc989755c7ed43a8523cc9d8592ed363c5d","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":40,"deletions":10}}},{"hash":"c7e914ce20a66490ee2c6c968b9adfc187767466","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"b3975f7769ca075ee0cd10cd246aa26bbd31253f","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":4}}},{"hash":"b3412e8d21e2cca2ae14585b99a3ee63ec447d27","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027upstream/master\u0027","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-02-28","commitResults":[{"hash":"9087634673272c4b9aacdfd3a4981e26df04e166","isMergeCommit":false,"messageTitle":"before i go crazy","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":342,"deletions":327},"docs":{"insertions":1,"deletions":1}}},{"hash":"4d48a0558a1cbb536656ae2ba00ead0240359df3","isMergeCommit":false,"messageTitle":"i need to restart the ide","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":171}}},{"hash":"3372f5a12a5623167ba02deee90937332255aef0","isMergeCommit":false,"messageTitle":"i need to restart the ide","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":281,"deletions":22},"docs":{"insertions":4,"deletions":4},"test-code":{"insertions":1,"deletions":1}}},{"hash":"e90d8c8db6708686cccd3d271f9fe57636b4a653","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}},{"hash":"aedeef19613f887efdc9b579e95c25fd0e2466b0","isMergeCommit":false,"messageTitle":"before i go crazy","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":342,"deletions":327},"docs":{"insertions":1,"deletions":1}}},{"hash":"d7df7f89c530dbc3ef386559b6d51c7074f1d0fb","isMergeCommit":false,"messageTitle":"i need to restart the ide","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":171}}},{"hash":"d8e6ae17fbfd38ff7a7df109f3d530aba1d6fb13","isMergeCommit":false,"messageTitle":"Implement EditCommandParser, EditCommand, README.md","messageBody":"Create EditCommandParser to parse user input for editing a person\u0027s details in the address book. The parser handles the input arguments, validates them, and constructs an EditCommand object for execution. It uses CliSyntax prefixes and follows a similar structure as the AddCommandParser. The parsing logic for each attribute (name, phone, email, address, tags, jobDescription, interviewDate, internDuration, salary) is provided, and the EditPersonDescriptor is updated accordingly.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":281,"deletions":22},"docs":{"insertions":4,"deletions":4},"test-code":{"insertions":1,"deletions":1}}},{"hash":"84fb48af30266ef49e59def139d0152ae70b8df0","isMergeCommit":true,"messageTitle":"Merge pull request #19 from eunrcn/edit-user-command","messageBody":"Edit user command","fileTypesAndContributionMap":{}},{"hash":"dee005733138e04614d1fd8e7a8d24d9ddff9d95","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into list-sort-feature","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ff077d86cc6c6b13b43cb40856299ff43bb877a5","isMergeCommit":true,"messageTitle":"Merge pull request #11 from Jawad280/list-sort-feature","messageBody":"List sort feature","fileTypesAndContributionMap":{}},{"hash":"70757311f0d1c7009d98281de8d45534f5c02b6f","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into ui-change-v2","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"2bf68d378518de9cf0e8aaa29b430e2e09d766f5","isMergeCommit":true,"messageTitle":"Merge pull request #10 from Jawad280/ui-change-v2","messageBody":"UI change v2","fileTypesAndContributionMap":{}},{"hash":"1a3591b38a2804685c5a1bca534e29b53a32526b","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into about-us","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"bb15b96192da118c460c8dce2fedd4bcdae4b1f8","isMergeCommit":true,"messageTitle":"Merge pull request #12 from Jawad280/about-us","messageBody":"About us","fileTypesAndContributionMap":{}},{"hash":"466970275c7eca80fa4821cdb9d2906299c11996","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"180f24f7cde7a2b6cb01146757d4fb8d96ef2e7a","isMergeCommit":true,"messageTitle":"Merge pull request #20 from eunrcn/master","messageBody":"Implement EditCommandParser, EditCommand, README.md","fileTypesAndContributionMap":{}},{"hash":"b10868a6cfaf9af636253fd399a624e52c8997af","isMergeCommit":false,"messageTitle":"Remove duplicate method","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":3}}},{"hash":"4c41d2d12227744858662ff3d3c21b4953f564dc","isMergeCommit":true,"messageTitle":"Merge pull request #22 from eunrcn/master","messageBody":"Remove duplicate method","fileTypesAndContributionMap":{}}]},{"date":"2024-02-29","commitResults":[{"hash":"e906563e27c635c19e9572e77ca6bb8ed2164147","isMergeCommit":true,"messageTitle":"Merge pull request #23 from Jawad280/edit-v2","messageBody":"Edit command tweaks","fileTypesAndContributionMap":{}}]},{"date":"2024-03-01","commitResults":[{"hash":"0e86ea8d3bf59f05a541ad0e54c5bfeff227f5fa","isMergeCommit":false,"messageTitle":"Rename my github username","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"32a484d3af811f8d282f7fd303e4d63b784e7469","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-F14-1:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"7e44cf99bfaafbfc9e8b5cddadb675f22b52b907","isMergeCommit":true,"messageTitle":"Merge pull request #26 from eunrcn/master","messageBody":"Github Username","fileTypesAndContributionMap":{}},{"hash":"e2ac9386c6386c8f9ece3b98b8c273725952c91b","isMergeCommit":false,"messageTitle":"Developer Guide User Stories","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":8}}}]},{"date":"2024-03-04","commitResults":[{"hash":"6e4d97e9d7e85b0ebe22ea9e449fd87ce51fa67a","isMergeCommit":false,"messageTitle":"Debugging Edit Command and Edit Command Parser Test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":613,"deletions":554}}}]},{"date":"2024-03-11","commitResults":[{"hash":"a36debcf1af88254054314c420c3ea576406e395","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-F14-1:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"e4643d8d2642e470c1811ae2cdab1fbac2b85ea9","isMergeCommit":true,"messageTitle":"Merge pull request #34 from eunrcn/master","messageBody":"Debugging Edit Command and Edit Command Parser Test","fileTypesAndContributionMap":{}}]},{"date":"2024-03-12","commitResults":[{"hash":"998da3fa9c038c1d95c23da0cd38f9c0506f69c8","isMergeCommit":false,"messageTitle":"commit to git pull","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0}}},{"hash":"69c43722024f2d7846440032515c1dfa3e49cbb7","isMergeCommit":false,"messageTitle":"Implement test cases for ViewCommand and ViewCommandTest, and AddressBookParserTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":209,"deletions":41}}},{"hash":"d64ded923fb2cb4cdbfe982e2b77f62a7a823b0e","isMergeCommit":true,"messageTitle":"Merge pull request #45 from eunrcn/master","messageBody":"Implement test cases for ViewCommand and ViewCommandTest, and AddressBookParserTest","fileTypesAndContributionMap":{}}]},{"date":"2024-03-13","commitResults":[{"hash":"07430928129e037c759eaf2f3bd9b339b5e7f4fc","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into edit-test","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b650b7c87e494add4e9092c58420de0abd2c03ae","isMergeCommit":true,"messageTitle":"Merge pull request #43 from Jawad280/edit-test","messageBody":"EditCommandTest and EditCommandParserTest updated","fileTypesAndContributionMap":{}}]},{"date":"2024-03-14","commitResults":[{"hash":"b55261a37f2376d4695d9dc4e3a4291899127035","isMergeCommit":false,"messageTitle":"Implement test cases for ViewCommand and ViewCommandTest, and AddressBookParserTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":12,"deletions":15}}},{"hash":"6cf1349a7a57e4278c0e12a288744878ed798d27","isMergeCommit":false,"messageTitle":"Implement test cases for ViewCommand and ViewCommandTest, and AddressBookParserTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":1}}},{"hash":"624a7f632fc185abea3b9ab15ed3049d9be7e5f7","isMergeCommit":false,"messageTitle":"Implement test cases for ViewCommand and ViewCommandTest, and AddressBookParserTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":18,"deletions":14}}},{"hash":"798c2eb6c49cf7fbd6773ca0a82e6606cb2ccdc2","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into ViewCommandTest","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b921d4bcfda39d13ad86c19698e48caedcce0b03","isMergeCommit":true,"messageTitle":"Merge pull request #50 from eunrcn/ViewCommandTest","messageBody":"View Command, View Command Parser, Address Book test cases","fileTypesAndContributionMap":{}},{"hash":"e792cd9488997336ed8af40992ad5986202cbc47","isMergeCommit":false,"messageTitle":"Remove unnessary function in ParserUtil.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":20}}},{"hash":"40b84916e9c94a01217983266bf7da25711a865b","isMergeCommit":false,"messageTitle":"Remove unnessary function in ParserUtil.java and EditCommandParser.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":22},"test-code":{"insertions":0,"deletions":3}}},{"hash":"da7872972c9584e06fd61841b4f55015816f1584","isMergeCommit":false,"messageTitle":"Remove unnessary function in ParserUtil.java and EditCommandParser.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":4}}},{"hash":"c8df4eeef0fbe10c84f62515b0e373ea5a3fefd1","isMergeCommit":false,"messageTitle":"Remove unnessary function in ParserUtil.java and EditCommandParser.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":7}}},{"hash":"b213bc4fdfe00420e8e9545e1f3fddf12c5f1f26","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"e149832ea5faae468f79275682a7daedb4b6d437","isMergeCommit":false,"messageTitle":"Remove unnessary function in ParserUtil.java and EditCommandParser.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"35e001e6cfd9a4095b9c4f8604f1e606fff1fb9f","isMergeCommit":false,"messageTitle":"Remove unnessary function in ParserUtil.java and EditCommandParser.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":9,"deletions":1}}},{"hash":"501e5ae4b9f7446fb8c8204f9d8e83ee1b544b4c","isMergeCommit":true,"messageTitle":"Merge pull request #51 from eunrcn/master","messageBody":"Remove unnessary function in ParserUtil.java, EditCommandParser.java","fileTypesAndContributionMap":{}}]},{"date":"2024-03-18","commitResults":[{"hash":"05c0a194ee015aee971c07580a6b68a71beaac54","isMergeCommit":false,"messageTitle":"Edit ModelClassDiagram.puml to update the changes to Person","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":3}}},{"hash":"0feb65635b7366cb1a4f04ca36d7d2075072c270","isMergeCommit":true,"messageTitle":"Merge pull request #56 from eunrcn/master","messageBody":"Edit ModelClassDiagram.puml to update the changes to Person","fileTypesAndContributionMap":{}},{"hash":"d8f98901df63bf95b66ac74966f4460bbbbf1b48","isMergeCommit":false,"messageTitle":"Edit ModelClassDiagram.puml to update the changes to Person, Edit BetterModelCLassDiagram to update changes to Tag and Person","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":7}}},{"hash":"8bed3facffeb2a7eb20598b01645dfe43476f556","isMergeCommit":true,"messageTitle":"Merge pull request #57 from eunrcn/master","messageBody":"Edit ModelClassDiagram.puml to update the changes to Person, Edit Bet…","fileTypesAndContributionMap":{}}]},{"date":"2024-03-19","commitResults":[{"hash":"2161c914fab431324f2cb5ad562bab1735cac31b","isMergeCommit":true,"messageTitle":"Merge pull request #55 from chenyixin0/master","messageBody":"Update find and exception command test","tags":["v1.2"],"fileTypesAndContributionMap":{}}]}],"chenyixin0":[{"date":"2024-02-25","commitResults":[{"hash":"982cfaee95655364aedaeb31d37dd2404d126cf0","isMergeCommit":true,"messageTitle":"Merge pull request #2 from eunrcn/master","messageBody":"Update README.md","fileTypesAndContributionMap":{}}]},{"date":"2024-02-29","commitResults":[{"hash":"bfb35deb0850f85af37824fc722aa0944321c2a7","isMergeCommit":false,"messageTitle":"Add find command halfway","messageBody":"Ui is still bugged\n","fileTypesAndContributionMap":{"functional-code":{"insertions":54,"deletions":9}}},{"hash":"9d94238ad9b7188dbbe813415012bfc2d88e1cd4","isMergeCommit":false,"messageTitle":"Add Find command correctly","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":38,"deletions":27},"docs":{"insertions":5,"deletions":5}}}]},{"date":"2024-03-01","commitResults":[{"hash":"c7214479a83a1e4a8719287d3f75fbf77db504b4","isMergeCommit":true,"messageTitle":"Merge pull request #24 from chenyixin0/master","messageBody":"AboutUs, Find command","fileTypesAndContributionMap":{}}]},{"date":"2024-03-07","commitResults":[{"hash":"ac06240c7ee50cf36290a36777429e7bbc54810e","isMergeCommit":false,"messageTitle":"Improve Find and View UI","messageBody":"Side view panel no longer displays white box on default.\n\nStill displays a really weird white border havent figure out why yet.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":20,"deletions":20}}},{"hash":"3aa4b47a013833a38f8390f1fb7d126cff89525d","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/chenyixin0/tp","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-08","commitResults":[{"hash":"270dbf04fc2fa1fc8b507564ee5196322b030d6c","isMergeCommit":false,"messageTitle":"Finish side panel UI update","messageBody":"Side panel UI now exhibits correct display behaviour\n","fileTypesAndContributionMap":{"functional-code":{"insertions":31,"deletions":10}}},{"hash":"837629d3d17da598399aaeac98926d9bb05221e6","isMergeCommit":false,"messageTitle":"Update for checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":3}}},{"hash":"71ed1a0848aa572e77930de27a3b7de7801b7daa","isMergeCommit":false,"messageTitle":"Update test files to reflect new CommandResult constructor","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":7,"deletions":7}}},{"hash":"cd500ea6f684f3155a6b211c392ff81ca1dbfde7","isMergeCommit":false,"messageTitle":"Update find command test cases","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":14,"deletions":4}}},{"hash":"eef2ec33ff42c621426e9aea2a447889ae4c6b76","isMergeCommit":false,"messageTitle":"Update for checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":10,"deletions":10}}},{"hash":"654db56598f6bd319ab2cb4c0f99603fd48f81e8","isMergeCommit":false,"messageTitle":"i swear to god if i fail checkstyle one more time","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":1}}},{"hash":"13e038b330de05b66c6ece6a49aa09c864719562","isMergeCommit":false,"messageTitle":"Update UI logic to be more concise","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":14}}}]},{"date":"2024-03-11","commitResults":[{"hash":"c8d5072c6c82a3e311ef65f121ee4fdbb1b6dda3","isMergeCommit":true,"messageTitle":"Merge pull request #36 from chenyixin0/master","messageBody":"Improvements to find/view UI","fileTypesAndContributionMap":{}}]},{"date":"2024-03-12","commitResults":[{"hash":"5048741be375927c2f9199f42822751ab65f3395","isMergeCommit":false,"messageTitle":"Update testcases for CommandResult","messageBody":"Add more tests to CommandResultTest file to test overloaded constructors for CommandResult object.\n","fileTypesAndContributionMap":{"test-code":{"insertions":32,"deletions":2}}},{"hash":"dd1bc6a497efd0649501b333070f449c89957e36","isMergeCommit":false,"messageTitle":"eunice ur files kena my checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":4}}},{"hash":"edb04dd90f3a40be70ff46cc261427f886a3254f","isMergeCommit":false,"messageTitle":"Edit for checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":71,"deletions":15}}}]},{"date":"2024-03-15","commitResults":[{"hash":"61966fe1e48ea34c1915dad9f97b941483563b8b","isMergeCommit":true,"messageTitle":"Resolve merge conflict","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"54fc2808fa9eea5546130fcdcba4f5f33c55d44b","isMergeCommit":true,"messageTitle":"Merge pull request #53 from chenyixin0/conflict-branch","messageBody":"Resolving Conflict branch","fileTypesAndContributionMap":{}},{"hash":"64ddf3caea70cc8139ac48a4adcfb968d7c4c51a","isMergeCommit":true,"messageTitle":"Merge pull request #54 from AY2324S2-CS2103T-F14-1/command-result-test","messageBody":"Command result test","fileTypesAndContributionMap":{}},{"hash":"3cd38b959736e825f26817819b42fe0e350c86fd","isMergeCommit":false,"messageTitle":"Update find command test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":3}}},{"hash":"5046bde110ddeaa7f16ef88c6e927b15ef45f06a","isMergeCommit":false,"messageTitle":"Add more find tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":8,"deletions":4}}}]},{"date":"2024-03-17","commitResults":[{"hash":"ec0321ced2a5db7fe083192604305ed198fc0e38","isMergeCommit":false,"messageTitle":"Update Exception tests","messageBody":"Had to comment out one line from one of the test methods that compares if the generated model with\nan expected model but i havent figured out why that one keeps failing yet\n","fileTypesAndContributionMap":{"test-code":{"insertions":35,"deletions":26}}}]}],"minghowC":[{"date":"2024-03-01","commitResults":[{"hash":"4ca3dea543c95143e2a4d16638916ecf309f2a02","isMergeCommit":false,"messageTitle":"Add my AboutUS.md details","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"24e282da380f51c1bdbb9602341f0d106a877e3c","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027upstream/master\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"fbe28239026c115f3c9f2a189e0cd0c9c6a5f8d4","isMergeCommit":false,"messageTitle":"Add delete feature","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":0}}},{"hash":"3cfc9010be6d990cb335dd0021ff33aeb814e020","isMergeCommit":true,"messageTitle":"Merge pull request #28 from minghowC/master","messageBody":"Add delete feature","fileTypesAndContributionMap":{}}]},{"date":"2024-03-08","commitResults":[{"hash":"5e85ff2e6d7146293b90be23256eaf47f5326948","isMergeCommit":false,"messageTitle":"Update Minghow profile","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"0b37fb5faa010ba6c3ec621eba28b812ca693e74","isMergeCommit":true,"messageTitle":"Merge pull request #37 from minghowC/add-minghowC-info","messageBody":"Update Minghow profile","fileTypesAndContributionMap":{}}]}],"Jawad280":[{"date":"2024-02-25","commitResults":[{"hash":"a7783867c92a5a46814382d06ac2889ad9ef58d5","isMergeCommit":false,"messageTitle":"Remark tutorial","messageBody":"The tutorial for adding a command, remark in the AB.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":180,"deletions":16}}},{"hash":"f497f581a26aded9b0aba848fd1f6f077419982a","isMergeCommit":false,"messageTitle":"Restore to tp master","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":176}}},{"hash":"44dcd8a249a1c6937d1cab34f48cc42e1c0a11d3","isMergeCommit":false,"messageTitle":"Restore to tp master including JavaFX","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":4}}}]},{"date":"2024-02-26","commitResults":[{"hash":"72b6fe1d1feaff7fdd17593858b00050831a17ef","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-F14-1:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"4aebef91a564c0a38b6264577a2b40f6d858be33","isMergeCommit":false,"messageTitle":"List function implemented with auto sort by interview date","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":20,"deletions":4}}},{"hash":"ad2e6e6e6a1279989051a6a86af43b832194580c","isMergeCommit":false,"messageTitle":"Ui is updated together with a simple view feature","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":250,"deletions":12}}}]},{"date":"2024-02-27","commitResults":[{"hash":"af8d4de6e6ed2407cd3199b9b3098a2b77380af6","isMergeCommit":false,"messageTitle":"AboutUs page updated \u0026 included picture","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}}]},{"date":"2024-02-29","commitResults":[{"hash":"a98c3853d486f940b161f73b2a536e80d20fcb69","isMergeCommit":false,"messageTitle":"Edit command tweaks","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":50,"deletions":30}}},{"hash":"b47cf87fadc45499cf2a1e02965cadbc81aba8e9","isMergeCommit":false,"messageTitle":"Reformatted classes to fit checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":15},"test-code":{"insertions":1,"deletions":1}}},{"hash":"adca670b121b567c6103b05a133a1952e604b1fd","isMergeCommit":false,"messageTitle":"Edited test classes to reflect changes in our main classes","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":12,"deletions":3}}}]},{"date":"2024-03-01","commitResults":[{"hash":"c9656627807a5a25559c51df77f64b69af34608f","isMergeCommit":true,"messageTitle":"Merge pull request #25 from minghowC/master","messageBody":"Update AboutUs.md for everyone","fileTypesAndContributionMap":{}},{"hash":"1f9824cca54b5ee7cd9917f8440992221726fecd","isMergeCommit":false,"messageTitle":"Developer Guide updated with use cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":22,"deletions":16},"docs":{"insertions":119,"deletions":20}}},{"hash":"edd259a66efe637953f9370b1cd5d03c3f632e9c","isMergeCommit":true,"messageTitle":"Merge branch \u0027DG\u0027 into DG-v2","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"40e2be88e2a1d621b4fc29698ac76917c05bb749","isMergeCommit":true,"messageTitle":"Merge pull request #27 from eunrcn/master","messageBody":"Developer Guide User Stories","fileTypesAndContributionMap":{}},{"hash":"65f56fa2ecb089e8f35aa13b2e268852c354eff2","isMergeCommit":false,"messageTitle":"Developer Guide edited to include Use Case","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"651c53401fd3cd17b415a7e54dc5e778f92c61c8","isMergeCommit":false,"messageTitle":"Update DG","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":0}}},{"hash":"49001518677cd99d41d76f2a118d92ed2a961020","isMergeCommit":true,"messageTitle":"Merge pull request #30 from Jawad280/DG-v2","messageBody":"Developer Guide edited to include Use Cases","fileTypesAndContributionMap":{}},{"hash":"c4eb64ca81ebba0163703ba0d9dbd5e8f0bf8899","isMergeCommit":false,"messageTitle":"UG updated \u0026 DG finalised","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":75,"deletions":68}}},{"hash":"2dd836dd6a3fb60422f14ce3d26a585d042c18ef","isMergeCommit":false,"messageTitle":"Updated FindCommand and FindCommandTest to pass test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"0ad563ef3e6ff78790bcd25a1b468106619a5985","isMergeCommit":true,"messageTitle":"Merge pull request #31 from Jawad280/UG","messageBody":"* UG updated \u0026 DG finalised\r\n* FindCommand \u0026 FindCommandTest has been updated to pass test cases","fileTypesAndContributionMap":{}}]},{"date":"2024-03-02","commitResults":[{"hash":"7e0ab9d1a79ab01d4756f7cc54c1c6b459922034","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":6}}},{"hash":"6f21796aa0f276bdd5b50f4ef3580d642c5662d3","isMergeCommit":false,"messageTitle":"Update AboutUs.md","messageBody":"src\u003d\"images/minghowc\" changed to src\u003d\"images/minghowC\"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"10890b9de2c8244da3c35ea2e657532427eb23f8","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"Updated Actions build badge to our CI","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"e652643f1bd82fc981347e914f5cf8757a42d80e","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"Update link of GitHub Actions build status to reflect out CI","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"17f42bbd0898b2834e896f6aeb1f523499656a3b","isMergeCommit":false,"messageTitle":"Update UserGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":12,"deletions":0}}},{"hash":"849a4015008919834a3d02d24ff79a3ee8bab43d","isMergeCommit":true,"messageTitle":"Merge pull request #33 from ashleygoh1/v1.2-readme-dg","messageBody":"Edit AboutUs.md making sure CI banners pointing to own project","fileTypesAndContributionMap":{}}]},{"date":"2024-03-03","commitResults":[{"hash":"1dc44135b25b17969c3eac957fa5e1d9a2d9d988","isMergeCommit":false,"messageTitle":"Update AboutUs.md","messageBody":"Change from .jpg to .png","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-11","commitResults":[{"hash":"ed46bcc240e84198230d5d8aebe57b19e89ff0ae","isMergeCommit":false,"messageTitle":"CommandResult and company card ui updated","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":144,"deletions":70},"test-code":{"insertions":7,"deletions":7}}},{"hash":"0fc8792b07ef9efffaf69b76b855d9917041cd5b","isMergeCommit":false,"messageTitle":"CommandResult and company card ui updated","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4}}},{"hash":"97cc9a3633f1db958e75e58a3f1d03c18aca3ef9","isMergeCommit":true,"messageTitle":"Merge pull request #42 from Jawad280/company-card-ui","messageBody":"CommandResult and company card ui updated","fileTypesAndContributionMap":{}},{"hash":"0e820f53c4810d609b24e1c1e0d0e1aed10ad102","isMergeCommit":false,"messageTitle":"EditCommandTest and EditCommandParserTest updated","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":110,"deletions":59}}},{"hash":"5ed175913145bef845fc1d693ded2b76c1be1f2f","isMergeCommit":false,"messageTitle":"EditCommandTest and EditCommandParserTest updated","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":16,"deletions":6}}},{"hash":"1479fbb5101a4dc6ce6dd08175e60af7667673d9","isMergeCommit":false,"messageTitle":"EditCommandTest and EditCommandParserTest Updated","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":13,"deletions":15}}}]},{"date":"2024-03-13","commitResults":[{"hash":"f53924a2eac08a180be7e35e40776e772c26ec5c","isMergeCommit":true,"messageTitle":"Merge pull request #48 from ashleygoh1/v1.2-edit-test-cases","messageBody":"Update edit test cases","fileTypesAndContributionMap":{}}]},{"date":"2024-03-22","commitResults":[{"hash":"8883adefbecfde0dec5fad135f302ee1d6564789","isMergeCommit":false,"messageTitle":"Update UiClassDiagram.puml","messageBody":"UI uml updated","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":0}}}]}],"ashleygoh1":[{"date":"2024-02-23","commitResults":[{"hash":"c37653119c039b3b06a0f1c97a54bf50bab58e13","isMergeCommit":true,"messageTitle":"Merge pull request #1 from nus-cs2103-AY2324S2/switch-docs-to-markbind","messageBody":"Switch docs to markbind","fileTypesAndContributionMap":{}},{"hash":"02b788dfe07da9cd8cdbf59e8a88d7b173519b99","isMergeCommit":false,"messageTitle":"Update default.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-02-25","commitResults":[{"hash":"91310b8007505d028bf03ebb7328628123aac855","isMergeCommit":false,"messageTitle":"Edit add person command","messageBody":"Allow user to input additional information such as job description, interview date, intern duration, and salary\n\nCreate new java files for the new parameters (job description, interview date, intern duration, and salary)\n\nUpdate the message shown to user when inputs are successfully added to the address book\n","fileTypesAndContributionMap":{"functional-code":{"insertions":820,"deletions":452},"test-code":{"insertions":7,"deletions":7}}},{"hash":"ac8ff5ede9e0140593cce2738807dc140cfe0a4b","isMergeCommit":false,"messageTitle":"Edit the code to adhere to checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":72,"deletions":52}}}]},{"date":"2024-02-26","commitResults":[{"hash":"40a8dc2db17be26f847e2e62578d0ec85daf5d0c","isMergeCommit":false,"messageTitle":"Edit the code to adhere to checkstyle","messageBody":"Update add command making address and interview date optional\n","fileTypesAndContributionMap":{"functional-code":{"insertions":60,"deletions":67},"test-code":{"insertions":725,"deletions":674}}},{"hash":"48b2b75118695a2e36e2b48fa421555c9c79da9e","isMergeCommit":false,"messageTitle":"Edit the code to adhere to checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":5}}},{"hash":"1555b79e2fb6a6cbc1c5fa2df744fdb9b5442024","isMergeCommit":false,"messageTitle":"Edit the code to adhere to checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":22,"deletions":1},"test-code":{"insertions":50,"deletions":84}}},{"hash":"6c916d78717a24e63ace889976d7f9ad6a775c9f","isMergeCommit":false,"messageTitle":"Edit the code to adhere to checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":6,"deletions":3}}},{"hash":"a803a78f42529db23dbcfe4eadb3f4d4dba645dc","isMergeCommit":false,"messageTitle":"Edit the code to adhere to checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":1}}},{"hash":"2b6bcf8fd067cc7e80bc13859d4d00495d051c45","isMergeCommit":false,"messageTitle":"Edit the code to pass test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":19,"deletions":15},"test-code":{"insertions":159,"deletions":34}}},{"hash":"53c3484501afe1c222de9e19e3a0265280e371a8","isMergeCommit":false,"messageTitle":"Edit the code to pass test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":4}}},{"hash":"c681a5e1e216e5b28d8ae7a1a38b3c4bef1c6464","isMergeCommit":false,"messageTitle":"Comment out unuse test cases","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":74,"deletions":75}}},{"hash":"0a725fae3815ac4eacc7358b4914f5d105c0a158","isMergeCommit":true,"messageTitle":"Merge pull request #6 from ashleygoh1/v1.2-add-user-command","messageBody":"Edit add person command","fileTypesAndContributionMap":{}},{"hash":"ee45f5fafbc62b4861e26d071bf3bf0d4720ec40","isMergeCommit":true,"messageTitle":"Merge pull request #9 from AY2324S2-CS2103T-F14-1/add-user-command","messageBody":"Add user command","fileTypesAndContributionMap":{}}]},{"date":"2024-02-27","commitResults":[{"hash":"a5a33c8068e449766a7fcb1e2e1d8c05236d5e95","isMergeCommit":false,"messageTitle":"Edit UserGuide.md and AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":0},"docs":{"insertions":210,"deletions":42}}},{"hash":"085f8e3a69ef3ef61c9f29c1f52f2ac4cf225bdc","isMergeCommit":false,"messageTitle":"Edit the code to adhere to checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"f099d488e6f666a9e4118ac987d9547dc00cba64","isMergeCommit":true,"messageTitle":"Merge pull request #15 from ashleygoh1/v1.2-update-ug","messageBody":"Edit UserGuide.md and AboutUs.md","fileTypesAndContributionMap":{}},{"hash":"120a711cc7f58c49bc269f566b3d92db4ae13cd0","isMergeCommit":true,"messageTitle":"Merge pull request #16 from AY2324S2-CS2103T-F14-1/update-ug","messageBody":"Update ug","fileTypesAndContributionMap":{}}]},{"date":"2024-03-02","commitResults":[{"hash":"ada3fc193734a4f821e290355418b26a1d5157b0","isMergeCommit":false,"messageTitle":"Edit AboutUs.md making sure CI banners pointing to own project","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":12}}},{"hash":"3396036cac84e2f12b7a53bc72867b2d5e6ddee3","isMergeCommit":false,"messageTitle":"Edit the code to adhere to checkstyle","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":6}}}]},{"date":"2024-03-12","commitResults":[{"hash":"0ddf9064d02a4c599c4a4043bf314440da00538d","isMergeCommit":false,"messageTitle":"change tag from \"F\" to \"I\" \"F\" stand for first interview \"I\" stand for interview we generalise the this giving the user more flexibility","messageBody":"update and create test cases for\nJsonAdaptedPersonTest.java, InternDurationTest.java,\nSalaryTest.java, JobDescriptionTest.java\n","fileTypesAndContributionMap":{"test-code":{"insertions":332,"deletions":64}}}]},{"date":"2024-03-13","commitResults":[{"hash":"8fe1027705d740cbd336746a8e26f97a663c872c","isMergeCommit":true,"messageTitle":"Merge pull request #46 from ashleygoh1/v1.2-add-test-cases","messageBody":"update and create test cases","fileTypesAndContributionMap":{}},{"hash":"2b178d3c5553b7f17f587e158f131b9b901f28ec","isMergeCommit":false,"messageTitle":"change \"TAG_DESC_FIRST_INTERVIEW\" to \"TAG_DESC_INTERVIEW;\" and \"VALID_TAG_FIRST_INTERVIEW\" to \"VALID_TAG_INTERVIEW\" we change it to make the tag more general, giving the user more flexibility when inputing the intern status","messageBody":"Update the ViewCommandPaserTest.java to pass the test cases\n","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":12,"deletions":12}}}]}]},"authorFileTypeContributionMap":{"eunrcn":{"docs":57,"functional-code":88,"test-code":256},"chenyixin0":{"docs":4,"functional-code":53,"test-code":78},"minghowC":{"docs":1,"functional-code":3,"test-code":0},"Jawad280":{"docs":170,"functional-code":398,"test-code":74},"ashleygoh1":{"docs":74,"functional-code":553,"test-code":572}},"authorContributionVariance":{"eunrcn":216863.14,"chenyixin0":1574.3381,"minghowC":1.3032101,"Jawad280":16481.764,"ashleygoh1":205765.66},"authorDisplayNameMap":{"eunrcn":"CS2103T-F14-1 EUNI..NING","chenyixin0":"CS2103T-F14-1 CHEN..IXIN","minghowC":"CS2103T-F14-1 CHAI.. HOW","Jawad280":"CS2103T-F14-1 JAWA..THAB","ashleygoh1":"CS2103T-F14-1 ASHL..TING"}} diff --git a/AY2324S2-CS2103T-F14-2_tp_master/authorship.json b/AY2324S2-CS2103T-F14-2_tp_master/authorship.json index a2e5960d..7594d41f 100644 --- a/AY2324S2-CS2103T-F14-2_tp_master/authorship.json +++ b/AY2324S2-CS2103T-F14-2_tp_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"tengcharmaine"},"content":"[![CI Status](https://github.com/AY2324S2-CS2103T-F14-2/tp/actions/workflows/gradle.yml/badge.svg)](https://github.com/AY2324S2-CS2103T-F14-2/tp/actions/workflows/gradle.yml)","lastModifiedDate":"2024-03-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"[![codecov](https://codecov.io/gh/AY2324S2-CS2103T-F14-2/tp/graph/badge.svg?token\u003dT5H5FY1BYS)](https://codecov.io/gh/AY2324S2-CS2103T-F14-2/tp)","lastModifiedDate":"2024-02-20"},{"lineNumber":3,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"tengcharmaine"},"content":"The project simulates an ongoing software project for a desktop application (called _Clinic Mate_) used for managing contact details.","lastModifiedDate":"2024-03-03"},{"lineNumber":7,"author":{"gitId":"tengcharmaine"},"content":"* It is **written in OOP fashion**. It provides a **reasonably well-written** code base.","lastModifiedDate":"2024-03-03"},{"lineNumber":8,"author":{"gitId":"-"},"content":"* It comes with a **reasonable level of user and developer documentation**.","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":10,"author":{"gitId":"tengcharmaine"},"content":"Clinic Mate is an **address book for managing user\u0027s contacts, optimised for use via a Command Line Interface** (CLI) while","lastModifiedDate":"2024-03-03"},{"lineNumber":11,"author":{"gitId":"tengcharmaine"},"content":"still having the benefits of a Graphical User Interface (GUI).","lastModifiedDate":"2024-03-03"},{"lineNumber":12,"author":{"gitId":"tengcharmaine"},"content":"If you can type fast, Clinic Mate can manage your contacts faster than traditional GUI apps.","lastModifiedDate":"2024-03-03"},{"lineNumber":13,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":14,"author":{"gitId":"tengcharmaine"},"content":"Clinic Mate aims to make it easy for **General Practitioners** (GPs) in private family clinics to view patient contacts at","lastModifiedDate":"2024-03-03"},{"lineNumber":15,"author":{"gitId":"tengcharmaine"},"content":"a glance including:","lastModifiedDate":"2024-03-03"},{"lineNumber":16,"author":{"gitId":"tengcharmaine"},"content":"* Medical history","lastModifiedDate":"2024-03-03"},{"lineNumber":17,"author":{"gitId":"tengcharmaine"},"content":"* Past diagnosis","lastModifiedDate":"2024-03-03"},{"lineNumber":18,"author":{"gitId":"tengcharmaine"},"content":"* Prescriptions","lastModifiedDate":"2024-03-03"},{"lineNumber":19,"author":{"gitId":"tengcharmaine"},"content":"* Future appointments","lastModifiedDate":"2024-03-03"},{"lineNumber":20,"author":{"gitId":"tengcharmaine"},"content":"* Many more","lastModifiedDate":"2024-03-03"},{"lineNumber":21,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":22,"author":{"gitId":"tengcharmaine"},"content":"For the detailed documentation of this project (e.g. User or Developer Guide), see the **[Clinic Mate Website](https://ay2324s2-cs2103t-f14-2.github.io/tp/)**.","lastModifiedDate":"2024-03-03"},{"lineNumber":23,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":24,"author":{"gitId":"drustanyjt"},"content":"To join our mailing list fill in this [form](https://docs.google.com/forms/d/e/1FAIpQLSdhsv0afLOwhto8Ov6CW9FqKSQyEJ-oprHHLmLS-d5ylGShmg/viewform?usp\u003dsharing).","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"tengcharmaine"},"content":"This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-03-03"}],"authorContributionMap":{"drustanyjt":2,"tengcharmaine":19,"-":5}},{"path":"build.gradle","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2016-08-29"},{"lineNumber":2,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2017-12-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2017-12-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2022-06-17"},{"lineNumber":5,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2016-12-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":" id \u0027jacoco\u0027","lastModifiedDate":"2020-08-07"},{"lineNumber":7,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-29"},{"lineNumber":9,"author":{"gitId":"-"},"content":"mainClassName \u003d \u0027seedu.address.Main\u0027","lastModifiedDate":"2019-02-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"sourceCompatibility \u003d JavaVersion.VERSION_11","lastModifiedDate":"2019-02-20"},{"lineNumber":12,"author":{"gitId":"-"},"content":"targetCompatibility \u003d JavaVersion.VERSION_11","lastModifiedDate":"2019-02-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" maven { url \u0027https://oss.sonatype.org/content/repositories/snapshots/\u0027 }","lastModifiedDate":"2018-04-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"checkstyle {","lastModifiedDate":"2016-10-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2022-04-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-10-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2018-03-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2018-03-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":" finalizedBy jacocoTestReport","lastModifiedDate":"2020-08-07"},{"lineNumber":26,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-08-07"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-08-07"},{"lineNumber":28,"author":{"gitId":"-"},"content":"task coverage(type: JacocoReport) {","lastModifiedDate":"2020-08-07"},{"lineNumber":29,"author":{"gitId":"-"},"content":" sourceDirectories.from files(sourceSets.main.allSource.srcDirs)","lastModifiedDate":"2020-08-07"},{"lineNumber":30,"author":{"gitId":"-"},"content":" classDirectories.from files(sourceSets.main.output)","lastModifiedDate":"2020-08-07"},{"lineNumber":31,"author":{"gitId":"-"},"content":" executionData.from files(jacocoTestReport.executionData)","lastModifiedDate":"2020-08-07"},{"lineNumber":32,"author":{"gitId":"-"},"content":" afterEvaluate {","lastModifiedDate":"2020-08-07"},{"lineNumber":33,"author":{"gitId":"-"},"content":" classDirectories.from files(classDirectories.files.collect {","lastModifiedDate":"2020-08-07"},{"lineNumber":34,"author":{"gitId":"-"},"content":" fileTree(dir: it, exclude: [\u0027**/*.jar\u0027])","lastModifiedDate":"2020-08-07"},{"lineNumber":35,"author":{"gitId":"-"},"content":" })","lastModifiedDate":"2020-08-07"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07"},{"lineNumber":37,"author":{"gitId":"-"},"content":" reports {","lastModifiedDate":"2020-08-07"},{"lineNumber":38,"author":{"gitId":"-"},"content":" html.required \u003d true","lastModifiedDate":"2022-06-17"},{"lineNumber":39,"author":{"gitId":"-"},"content":" xml.required \u003d true","lastModifiedDate":"2022-06-17"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07"},{"lineNumber":41,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-03-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" String jUnitVersion \u003d \u00275.4.0\u0027","lastModifiedDate":"2019-02-10"},{"lineNumber":45,"author":{"gitId":"-"},"content":" String javaFxVersion \u003d \u002717.0.7\u0027","lastModifiedDate":"2023-07-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":48,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":" implementation group: \u0027com.fasterxml.jackson.core\u0027, name: \u0027jackson-databind\u0027, version: \u00272.7.0\u0027","lastModifiedDate":"2018-03-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":" implementation group: \u0027com.fasterxml.jackson.datatype\u0027, name: \u0027jackson-datatype-jsr310\u0027, version: \u00272.7.4\u0027","lastModifiedDate":"2018-03-29"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-29"},{"lineNumber":68,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2016-08-29"},{"lineNumber":69,"author":{"gitId":"drustanyjt"},"content":" archiveFileName \u003d \u0027clinicmate.jar\u0027","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":"defaultTasks \u0027clean\u0027, \u0027test\u0027","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"drustanyjt":1,"-":71}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"About Us\"","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"# About Us","lastModifiedDate":"2023-09-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"We are a team based in the [School of Computing, National University of Singapore](http://www.comp.nus.edu.sg).","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"jiahui0309"},"content":"You can reach us at the email `e0970466@comp.nus.edu.sg`","lastModifiedDate":"2024-03-03"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"jiahui0309"},"content":"### Yeo Jun Teng Drustan","lastModifiedDate":"2024-03-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"jiahui0309"},"content":"\u003cimg src\u003d\"images/drustanyjt.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"jiahui0309"},"content":"[[github](https://github.com/drustanyjt)]","lastModifiedDate":"2024-03-03"},{"lineNumber":19,"author":{"gitId":"jiahui0309"},"content":"[[linkedin](https://www.linkedin.com/in/drustan/)]","lastModifiedDate":"2024-03-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"* Role: Team Lead","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"jiahui0309"},"content":"### Chen Jiaying Jayne","lastModifiedDate":"2024-03-03"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"jiahui0309"},"content":"\u003cimg src\u003d\"images/jayne1010.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"jiahui0309"},"content":"[[github](http://github.com/Jayne1010)]","lastModifiedDate":"2024-03-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"jiahui0309"},"content":"* Responsibilities: Documentation","lastModifiedDate":"2024-03-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"jiahui0309"},"content":"### Song Jia Hui","lastModifiedDate":"2024-03-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"jiahui0309"},"content":"\u003cimg src\u003d\"images/jiahui0309.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-03"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"jiahui0309"},"content":"[[github](http://github.com/jiahui0309)]","lastModifiedDate":"2024-03-03"},{"lineNumber":37,"author":{"gitId":"jiahui0309"},"content":"[[linkedin](https://www.linkedin.com/in/song-jia-hui/)]","lastModifiedDate":"2024-03-03"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"jiahui0309"},"content":"* Responsibilities: Integration","lastModifiedDate":"2024-03-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"jiahui0309"},"content":"### Teng Shi Rou Charmaine","lastModifiedDate":"2024-03-03"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"jiahui0309"},"content":"\u003cimg src\u003d\"images/tengcharmaine.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-03"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"jiahui0309"},"content":"[[github](http://github.com/tengcharmaine)]","lastModifiedDate":"2024-03-03"},{"lineNumber":47,"author":{"gitId":"jiahui0309"},"content":"[[linkedin](https://www.linkedin.com/in/charmaine-teng/)]","lastModifiedDate":"2024-03-03"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"jiahui0309"},"content":"* Responsibilities: Scheduling and tracking","lastModifiedDate":"2024-03-03"}],"authorContributionMap":{"-":32,"jiahui0309":19}},{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"Developer Guide\"","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":7,"author":{"gitId":"drustanyjt"},"content":"# ClinicMate Developer Guide","lastModifiedDate":"2024-03-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":14,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":16,"author":{"gitId":"-"},"content":"_{ list here sources of all reused/adapted ideas, code, documentation, and third-party libraries -- include links to the original source as well }_","lastModifiedDate":"2023-09-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureDiagram.puml\" width\u003d\"280\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":"The ***Architecture Diagram*** given above explains the high-level design of the App.","lastModifiedDate":"2021-07-31"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":"Given below is a quick overview of main components and how they interact with each other.","lastModifiedDate":"2021-07-31"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"**`Main`** (consisting of classes [`Main`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/Main.java) and [`MainApp`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/MainApp.java)) is in charge of the app launch and shut down.","lastModifiedDate":"2023-09-03"},{"lineNumber":39,"author":{"gitId":"-"},"content":"* At app launch, it initializes the other components in the correct sequence, and connects them up with each other.","lastModifiedDate":"2023-09-03"},{"lineNumber":40,"author":{"gitId":"-"},"content":"* At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2023-09-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"* [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"* [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"* [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"The *Sequence Diagram* below shows how the components interact with each other for the scenario where the user issues the command `delete 1`.","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureSequenceDiagram.puml\" width\u003d\"574\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":59,"author":{"gitId":"-"},"content":"* defines its *API* in an `interface` with the same name as the Component.","lastModifiedDate":"2021-07-31"},{"lineNumber":60,"author":{"gitId":"-"},"content":"* implements its functionality using a concrete `{Component Name}Manager` class (which follows the corresponding API `interface` mentioned in the previous point.","lastModifiedDate":"2021-07-31"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":62,"author":{"gitId":"-"},"content":"For example, the `Logic` component defines its API in the `Logic.java` interface and implements its functionality using the `LogicManager.java` class which follows the `Logic` interface. Other components interact with a given component through its interface rather than the concrete class (reason: to prevent outside component\u0027s being coupled to the implementation of a component), as illustrated in the (partial) class diagram below.","lastModifiedDate":"2021-07-31"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":64,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ComponentManagers.puml\" width\u003d\"300\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":66,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"The **API** of this component is specified in [`Ui.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/Ui.java)","lastModifiedDate":"2021-07-31"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UiClassDiagram.puml\" alt\u003d\"Structure of the UI Component\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"The UI consists of a `MainWindow` that is made up of parts e.g.`CommandBox`, `ResultDisplay`, `PersonListPanel`, `StatusBarFooter` etc. All these, including the `MainWindow`, inherit from the abstract `UiPart` class which captures the commonalities between classes that represent parts of the visible GUI.","lastModifiedDate":"2021-07-31"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"The `UI` component uses the JavaFx UI framework. The layout of these UI parts are defined in matching `.fxml` files that are in the `src/main/resources/view` folder. For example, the layout of the [`MainWindow`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/MainWindow.java) is specified in [`MainWindow.fxml`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/resources/view/MainWindow.fxml)","lastModifiedDate":"2021-07-31"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"* executes user commands using the `Logic` component.","lastModifiedDate":"2021-07-31"},{"lineNumber":81,"author":{"gitId":"-"},"content":"* listens for changes to `Model` data so that the UI can be updated with the modified data.","lastModifiedDate":"2021-07-31"},{"lineNumber":82,"author":{"gitId":"-"},"content":"* keeps a reference to the `Logic` component, because the `UI` relies on the `Logic` to execute commands.","lastModifiedDate":"2021-07-31"},{"lineNumber":83,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component, as it displays `Person` object residing in the `Model`.","lastModifiedDate":"2021-07-31"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"**API** : [`Logic.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/logic/Logic.java)","lastModifiedDate":"2021-07-31"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/LogicClassDiagram.puml\" width\u003d\"550\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"The sequence diagram below illustrates the interactions within the `Logic` component, taking `execute(\"delete 1\")` API call as an example.","lastModifiedDate":"2023-09-03"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/DeleteSequenceDiagram.puml\" alt\u003d\"Interactions Inside the Logic Component for the `delete 1` Command\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":97,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"**Note:** The lifeline for `DeleteCommandParser` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline continues till the end of diagram.","lastModifiedDate":"2023-09-12"},{"lineNumber":100,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":104,"author":{"gitId":"-"},"content":"1. When `Logic` is called upon to execute a command, it is passed to an `AddressBookParser` object which in turn creates a parser that matches the command (e.g., `DeleteCommandParser`) and uses it to parse the command.","lastModifiedDate":"2023-09-03"},{"lineNumber":105,"author":{"gitId":"-"},"content":"1. This results in a `Command` object (more precisely, an object of one of its subclasses e.g., `DeleteCommand`) which is executed by the `LogicManager`.","lastModifiedDate":"2023-09-03"},{"lineNumber":106,"author":{"gitId":"-"},"content":"1. The command can communicate with the `Model` when it is executed (e.g. to delete a person).\u003cbr\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":107,"author":{"gitId":"-"},"content":" Note that although this is shown as a single step in the diagram above (for simplicity), in the code it can take several interactions (between the command object and the `Model`) to achieve.","lastModifiedDate":"2024-02-09"},{"lineNumber":108,"author":{"gitId":"-"},"content":"1. The result of the command execution is encapsulated as a `CommandResult` object which is returned back from `Logic`.","lastModifiedDate":"2023-09-03"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":110,"author":{"gitId":"-"},"content":"Here are the other classes in `Logic` (omitted from the class diagram above) that are used for parsing a user command:","lastModifiedDate":"2021-07-31"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":112,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ParserClasses.puml\" width\u003d\"600\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31"},{"lineNumber":115,"author":{"gitId":"-"},"content":"* When called upon to parse a user command, the `AddressBookParser` class creates an `XYZCommandParser` (`XYZ` is a placeholder for the specific command name e.g., `AddCommandParser`) which uses the other classes shown above to parse the user command and create a `XYZCommand` object (e.g., `AddCommand`) which the `AddressBookParser` returns back as a `Command` object.","lastModifiedDate":"2021-07-31"},{"lineNumber":116,"author":{"gitId":"-"},"content":"* All `XYZCommandParser` classes (e.g., `AddCommandParser`, `DeleteCommandParser`, ...) inherit from the `Parser` interface so that they can be treated similarly where possible e.g, during testing.","lastModifiedDate":"2021-07-31"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31"},{"lineNumber":119,"author":{"gitId":"-"},"content":"**API** : [`Model.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/model/Model.java)","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":"* stores the address book data i.e., all `Person` objects (which are contained in a `UniquePersonList` object).","lastModifiedDate":"2021-07-31"},{"lineNumber":127,"author":{"gitId":"-"},"content":"* stores the currently \u0027selected\u0027 `Person` objects (e.g., results of a search query) as a separate _filtered_ list which is exposed to outsiders as an unmodifiable `ObservableList\u003cPerson\u003e` that can be \u0027observed\u0027 e.g. the UI can be bound to this list so that the UI automatically updates when the data in the list change.","lastModifiedDate":"2021-07-31"},{"lineNumber":128,"author":{"gitId":"-"},"content":"* stores a `UserPref` object that represents the user’s preferences. This is exposed to the outside as a `ReadOnlyUserPref` objects.","lastModifiedDate":"2021-07-31"},{"lineNumber":129,"author":{"gitId":"-"},"content":"* does not depend on any of the other three components (as the `Model` represents data entities of the domain, they should make sense on their own without depending on other components)","lastModifiedDate":"2021-07-31"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":131,"author":{"gitId":"drustanyjt"},"content":"[//]: # (\u003cbox type\u003d\"info\" seamless\u003e)","lastModifiedDate":"2024-03-20"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":133,"author":{"gitId":"drustanyjt"},"content":"[//]: # ()","lastModifiedDate":"2024-03-20"},{"lineNumber":134,"author":{"gitId":"drustanyjt"},"content":"[//]: # (**Note:** An alternative \u0026#40;arguably, a more OOP\u0026#41; model is given below. It has a `Tag` list in the `AddressBook`, which `Person` references. This allows `AddressBook` to only require one `Tag` object per unique tag, instead of each `Person` needing their own `Tag` objects.\u003cbr\u003e)","lastModifiedDate":"2024-03-20"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":136,"author":{"gitId":"drustanyjt"},"content":"[//]: # ()","lastModifiedDate":"2024-03-20"},{"lineNumber":137,"author":{"gitId":"drustanyjt"},"content":"[//]: # (\u003cpuml src\u003d\"diagrams/BetterModelClassDiagram.puml\" width\u003d\"450\" /\u003e)","lastModifiedDate":"2024-03-20"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"drustanyjt"},"content":"[//]: # ()","lastModifiedDate":"2024-03-20"},{"lineNumber":140,"author":{"gitId":"drustanyjt"},"content":"[//]: # (\u003c/box\u003e)","lastModifiedDate":"2024-03-20"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":"**API** : [`Storage.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/storage/Storage.java)","lastModifiedDate":"2020-05-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/StorageClassDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":149,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":"* can save both address book data and user preference data in JSON format, and read them back into corresponding objects.","lastModifiedDate":"2023-09-03"},{"lineNumber":151,"author":{"gitId":"-"},"content":"* inherits from both `AddressBookStorage` and `UserPrefStorage`, which means it can be treated as either one (if only the functionality of only one is needed).","lastModifiedDate":"2021-07-31"},{"lineNumber":152,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component (because the `Storage` component\u0027s job is to save/retrieve objects that belong to the `Model`)","lastModifiedDate":"2021-07-21"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.addressbook.commons` package.","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":"The proposed undo/redo mechanism is facilitated by `VersionedAddressBook`. It extends `AddressBook` with an undo/redo history, stored internally as an `addressBookStateList` and `currentStatePointer`. Additionally, it implements the following operations:","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":"These operations are exposed in the `Model` interface as `Model#commitAddressBook()`, `Model#undoAddressBook()` and `Model#redoAddressBook()` respectively.","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":"Given below is an example usage scenario and how the undo/redo mechanism behaves at each step.","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":"Step 1. The user launches the application for the first time. The `VersionedAddressBook` will be initialized with the initial address book state, and the `currentStatePointer` pointing to that single address book state.","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState0.puml\" alt\u003d\"UndoRedoState0\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":182,"author":{"gitId":"Jayne1010"},"content":"Step 2. The user executes `delete T0123456A` command to delete the person in the address book with the unique identification number `T0123456A`. The `delete` command calls `Model#commitAddressBook()`, causing the modified state of the address book after the `delete T0123456A` command executes to be saved in the `addressBookStateList`, and the `currentStatePointer` is shifted to the newly inserted address book state.","lastModifiedDate":"2024-03-19"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState1.puml\" alt\u003d\"UndoRedoState1\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":"Step 3. The user executes `add n/David …​` to add a new person. The `add` command also calls `Model#commitAddressBook()`, causing another modified address book state to be saved into the `addressBookStateList`.","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState2.puml\" alt\u003d\"UndoRedoState2\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":190,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":192,"author":{"gitId":"-"},"content":"**Note:** If a command fails its execution, it will not call `Model#commitAddressBook()`, so the address book state will not be saved into the `addressBookStateList`.","lastModifiedDate":"2023-09-12"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":194,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":"Step 4. The user now decides that adding the person was a mistake, and decides to undo that action by executing the `undo` command. The `undo` command will call `Model#undoAddressBook()`, which will shift the `currentStatePointer` once to the left, pointing it to the previous address book state, and restores the address book to that state.","lastModifiedDate":"2020-05-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":198,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState3.puml\" alt\u003d\"UndoRedoState3\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":201,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":"**Note:** If the `currentStatePointer` is at index 0, pointing to the initial AddressBook state, then there are no previous AddressBook states to restore. The `undo` command uses `Model#canUndoAddressBook()` to check if this is the case. If so, it will return an error to the user rather","lastModifiedDate":"2023-09-12"},{"lineNumber":204,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":206,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":208,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":210,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Logic.puml\" alt\u003d\"UndoSequenceDiagram-Logic\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":212,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":214,"author":{"gitId":"-"},"content":"**Note:** The lifeline for `UndoCommand` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.","lastModifiedDate":"2023-09-12"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":216,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":218,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":220,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Model.puml\" alt\u003d\"UndoSequenceDiagram-Model\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":222,"author":{"gitId":"-"},"content":"The `redo` command does the opposite — it calls `Model#redoAddressBook()`, which shifts the `currentStatePointer` once to the right, pointing to the previously undone state, and restores the address book to that state.","lastModifiedDate":"2020-05-23"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":224,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":226,"author":{"gitId":"-"},"content":"**Note:** If the `currentStatePointer` is at index `addressBookStateList.size() - 1`, pointing to the latest address book state, then there are no undone AddressBook states to restore. The `redo` command uses `Model#canRedoAddressBook()` to check if this is the case. If so, it will return an error to the user rather than attempting to perform the redo.","lastModifiedDate":"2023-09-12"},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":228,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":230,"author":{"gitId":"-"},"content":"Step 5. The user then decides to execute the command `list`. Commands that do not modify the address book, such as `list`, will usually not call `Model#commitAddressBook()`, `Model#undoAddressBook()` or `Model#redoAddressBook()`. Thus, the `addressBookStateList` remains unchanged.","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState4.puml\" alt\u003d\"UndoRedoState4\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":233,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":234,"author":{"gitId":"-"},"content":"Step 6. The user executes `clear`, which calls `Model#commitAddressBook()`. Since the `currentStatePointer` is not pointing at the end of the `addressBookStateList`, all address book states after the `currentStatePointer` will be purged. Reason: It no longer makes sense to redo the `add n/David …​` command. This is the behavior that most modern desktop applications follow.","lastModifiedDate":"2020-05-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState5.puml\" alt\u003d\"UndoRedoState5\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":237,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/CommitActivityDiagram.puml\" width\u003d\"250\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31"},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31"},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":247,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23"},{"lineNumber":248,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":250,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23"},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":257,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23"},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":259,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":262,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":264,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07"},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":266,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":267,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":268,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":269,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":270,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":271,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":272,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":274,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23"},{"lineNumber":275,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":276,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23"},{"lineNumber":277,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":278,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23"},{"lineNumber":279,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":280,"author":{"gitId":"drustanyjt"},"content":"* General Practitioners working in their own private GP Clinics","lastModifiedDate":"2024-03-06"},{"lineNumber":281,"author":{"gitId":"drustanyjt"},"content":"* short staffed with minimal assistants for administrative tasks","lastModifiedDate":"2024-03-06"},{"lineNumber":282,"author":{"gitId":"drustanyjt"},"content":"* annoyed by relying on pen and paper to track patient contacts","lastModifiedDate":"2024-03-06"},{"lineNumber":283,"author":{"gitId":"-"},"content":"* can type fast","lastModifiedDate":"2020-05-23"},{"lineNumber":284,"author":{"gitId":"drustanyjt"},"content":"* prefer desktop apps over other types","lastModifiedDate":"2024-03-06"},{"lineNumber":285,"author":{"gitId":"-"},"content":"* prefers typing to mouse interactions","lastModifiedDate":"2020-05-26"},{"lineNumber":286,"author":{"gitId":"-"},"content":"* is reasonably comfortable using CLI apps","lastModifiedDate":"2020-05-23"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":288,"author":{"gitId":"drustanyjt"},"content":"**Value proposition**: Quick and easy management of patient contacts, including important patient information.","lastModifiedDate":"2024-03-06"},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":290,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":291,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07"},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":293,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23"},{"lineNumber":294,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":295,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23"},{"lineNumber":296,"author":{"gitId":"-"},"content":"|----------|--------------------------------------------|------------------------------|------------------------------------------------------------------------|","lastModifiedDate":"2023-09-12"},{"lineNumber":297,"author":{"gitId":"-"},"content":"| `* * *` | new user | see usage instructions | refer to instructions when I forget how to use the App |","lastModifiedDate":"2020-05-23"},{"lineNumber":298,"author":{"gitId":"-"},"content":"| `* * *` | user | add a new person | |","lastModifiedDate":"2020-05-23"},{"lineNumber":299,"author":{"gitId":"-"},"content":"| `* * *` | user | delete a person | remove entries that I no longer need |","lastModifiedDate":"2020-05-23"},{"lineNumber":300,"author":{"gitId":"-"},"content":"| `* * *` | user | find a person by name | locate details of persons without having to go through the entire list |","lastModifiedDate":"2020-05-23"},{"lineNumber":301,"author":{"gitId":"-"},"content":"| `* *` | user | hide private contact details | minimize chance of someone else seeing them by accident |","lastModifiedDate":"2020-05-23"},{"lineNumber":302,"author":{"gitId":"-"},"content":"| `*` | user with many persons in the address book | sort persons by name | locate a person easily |","lastModifiedDate":"2020-05-23"},{"lineNumber":303,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":304,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":306,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07"},{"lineNumber":307,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":308,"author":{"gitId":"jiahui0309"},"content":"(For all use cases below, the **System** is the `ClinicMate` and the **Actor** is the `user`, unless specified otherwise)","lastModifiedDate":"2024-03-05"},{"lineNumber":309,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":310,"author":{"gitId":"jiahui0309"},"content":"**Use case: Add a person**","lastModifiedDate":"2024-03-04"},{"lineNumber":311,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":312,"author":{"gitId":"jiahui0309"},"content":"**MSS**","lastModifiedDate":"2024-03-04"},{"lineNumber":313,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":314,"author":{"gitId":"jiahui0309"},"content":"1. User requests to list persons","lastModifiedDate":"2024-03-04"},{"lineNumber":315,"author":{"gitId":"jiahui0309"},"content":"2. ClinicMate shows a list of persons","lastModifiedDate":"2024-03-05"},{"lineNumber":316,"author":{"gitId":"jiahui0309"},"content":"3. User requests to add a specific person in the list","lastModifiedDate":"2024-03-04"},{"lineNumber":317,"author":{"gitId":"jiahui0309"},"content":"4. ClinicMate adds the person","lastModifiedDate":"2024-03-05"},{"lineNumber":318,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":319,"author":{"gitId":"jiahui0309"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":320,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":321,"author":{"gitId":"jiahui0309"},"content":"**Extensions**","lastModifiedDate":"2024-03-04"},{"lineNumber":322,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":323,"author":{"gitId":"jiahui0309"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-03-04"},{"lineNumber":324,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":325,"author":{"gitId":"jiahui0309"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":326,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":327,"author":{"gitId":"jiahui0309"},"content":"* 3a. The given command format is wrong.","lastModifiedDate":"2024-03-04"},{"lineNumber":328,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":329,"author":{"gitId":"jiahui0309"},"content":" * 3a1. ClinicMate shows an error message.","lastModifiedDate":"2024-03-05"},{"lineNumber":330,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":331,"author":{"gitId":"jiahui0309"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-04"},{"lineNumber":332,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":333,"author":{"gitId":"jiahui0309"},"content":"* 4a. There is an existing user in the database.","lastModifiedDate":"2024-03-04"},{"lineNumber":334,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":335,"author":{"gitId":"jiahui0309"},"content":" * 4a1. ClinicMate shows an error message.","lastModifiedDate":"2024-03-05"},{"lineNumber":336,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":337,"author":{"gitId":"jiahui0309"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-04"},{"lineNumber":338,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":339,"author":{"gitId":"jiahui0309"},"content":"**Use case: Add notes for a person**","lastModifiedDate":"2024-03-04"},{"lineNumber":340,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":341,"author":{"gitId":"jiahui0309"},"content":"**MSS**","lastModifiedDate":"2024-03-04"},{"lineNumber":342,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":343,"author":{"gitId":"jiahui0309"},"content":"1. User requests to list persons","lastModifiedDate":"2024-03-04"},{"lineNumber":344,"author":{"gitId":"jiahui0309"},"content":"2. ClinicMate shows a list of persons","lastModifiedDate":"2024-03-05"},{"lineNumber":345,"author":{"gitId":"jiahui0309"},"content":"3. User requests to add notes for a specific person in the list","lastModifiedDate":"2024-03-04"},{"lineNumber":346,"author":{"gitId":"jiahui0309"},"content":"4. ClinicMate adds notes for the person","lastModifiedDate":"2024-03-05"},{"lineNumber":347,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":348,"author":{"gitId":"jiahui0309"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":349,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":350,"author":{"gitId":"jiahui0309"},"content":"**Extensions**","lastModifiedDate":"2024-03-04"},{"lineNumber":351,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":352,"author":{"gitId":"jiahui0309"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-03-04"},{"lineNumber":353,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":354,"author":{"gitId":"jiahui0309"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":355,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":356,"author":{"gitId":"jiahui0309"},"content":"* 3a. The given command format is wrong.","lastModifiedDate":"2024-03-04"},{"lineNumber":357,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":358,"author":{"gitId":"jiahui0309"},"content":" * 3a1. ClinicMate shows an error message.","lastModifiedDate":"2024-03-05"},{"lineNumber":359,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":360,"author":{"gitId":"jiahui0309"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-04"},{"lineNumber":361,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":362,"author":{"gitId":"jiahui0309"},"content":"* 4a. The given IC number is invalid.","lastModifiedDate":"2024-03-05"},{"lineNumber":363,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":364,"author":{"gitId":"jiahui0309"},"content":" * 4a1. ClinicMate shows an error message.","lastModifiedDate":"2024-03-05"},{"lineNumber":365,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":366,"author":{"gitId":"jiahui0309"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-04"},{"lineNumber":367,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":368,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":369,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":370,"author":{"gitId":"-"},"content":"**Use case: Delete a person**","lastModifiedDate":"2020-05-23"},{"lineNumber":371,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":372,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23"},{"lineNumber":373,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":374,"author":{"gitId":"-"},"content":"1. User requests to list persons","lastModifiedDate":"2020-05-23"},{"lineNumber":375,"author":{"gitId":"jiahui0309"},"content":"2. ClinicMate shows a list of persons","lastModifiedDate":"2024-03-05"},{"lineNumber":376,"author":{"gitId":"-"},"content":"3. User requests to delete a specific person in the list","lastModifiedDate":"2020-05-23"},{"lineNumber":377,"author":{"gitId":"jiahui0309"},"content":"4. ClinicMate deletes the person","lastModifiedDate":"2024-03-05"},{"lineNumber":378,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":379,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":380,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":381,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23"},{"lineNumber":382,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":383,"author":{"gitId":"-"},"content":"* 2a. The list is empty.","lastModifiedDate":"2020-05-23"},{"lineNumber":384,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":385,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":386,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":387,"author":{"gitId":"jiahui0309"},"content":"* 3a. The given IC number is invalid.","lastModifiedDate":"2024-03-05"},{"lineNumber":388,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":389,"author":{"gitId":"jiahui0309"},"content":" * 3a1. ClinicMate shows an error message.","lastModifiedDate":"2024-03-05"},{"lineNumber":390,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":391,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2020-05-23"},{"lineNumber":392,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":393,"author":{"gitId":"jiahui0309"},"content":"* 4a. The given command format is wrong.","lastModifiedDate":"2024-03-04"},{"lineNumber":394,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":395,"author":{"gitId":"jiahui0309"},"content":" * 4a1. ClinicMate shows an error message.","lastModifiedDate":"2024-03-05"},{"lineNumber":396,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":397,"author":{"gitId":"jiahui0309"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-04"},{"lineNumber":398,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":399,"author":{"gitId":"jiahui0309"},"content":"**Use case: Find a person**","lastModifiedDate":"2024-03-04"},{"lineNumber":400,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":401,"author":{"gitId":"jiahui0309"},"content":"**MSS**","lastModifiedDate":"2024-03-04"},{"lineNumber":402,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":403,"author":{"gitId":"jiahui0309"},"content":"1. User requests to list persons","lastModifiedDate":"2024-03-04"},{"lineNumber":404,"author":{"gitId":"jiahui0309"},"content":"2. ClinicMate shows a list of persons","lastModifiedDate":"2024-03-05"},{"lineNumber":405,"author":{"gitId":"jiahui0309"},"content":"3. User requests to find a specific person in the list","lastModifiedDate":"2024-03-04"},{"lineNumber":406,"author":{"gitId":"jiahui0309"},"content":"4. ClinicMate finds the person","lastModifiedDate":"2024-03-05"},{"lineNumber":407,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":408,"author":{"gitId":"jiahui0309"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":409,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":410,"author":{"gitId":"jiahui0309"},"content":"**Extensions**","lastModifiedDate":"2024-03-04"},{"lineNumber":411,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":412,"author":{"gitId":"jiahui0309"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-03-04"},{"lineNumber":413,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":414,"author":{"gitId":"jiahui0309"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":415,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":416,"author":{"gitId":"jiahui0309"},"content":"* 3a. The given IC number is invalid.","lastModifiedDate":"2024-03-05"},{"lineNumber":417,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":418,"author":{"gitId":"jiahui0309"},"content":" * 3a1. ClinicMate shows an error message.","lastModifiedDate":"2024-03-05"},{"lineNumber":419,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":420,"author":{"gitId":"jiahui0309"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-04"},{"lineNumber":421,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":422,"author":{"gitId":"jiahui0309"},"content":"* 4a. The given command format is wrong.","lastModifiedDate":"2024-03-04"},{"lineNumber":423,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":424,"author":{"gitId":"jiahui0309"},"content":" * 4a1. ClinicMate shows an error message.","lastModifiedDate":"2024-03-05"},{"lineNumber":425,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":426,"author":{"gitId":"jiahui0309"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-04"},{"lineNumber":427,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":428,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":429,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":430,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23"},{"lineNumber":431,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":432,"author":{"gitId":"-"},"content":"1. Should work on any _mainstream OS_ as long as it has Java `11` or above installed.","lastModifiedDate":"2020-05-23"},{"lineNumber":433,"author":{"gitId":"tengcharmaine"},"content":"2. A user with above average typing speed for regular English text (i.e. not code, not system admin commands) should be able to accomplish most of the tasks faster using commands than using the mouse.","lastModifiedDate":"2024-03-03"},{"lineNumber":434,"author":{"gitId":"tengcharmaine"},"content":"3. Should be able to hold up to 1000 persons without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2024-03-03"},{"lineNumber":435,"author":{"gitId":"tengcharmaine"},"content":"4. Should respond to user actions within 5 seconds under normal load conditions.","lastModifiedDate":"2024-03-03"},{"lineNumber":436,"author":{"gitId":"tengcharmaine"},"content":"5. Should be designed to use system resources (e.g. CPU) efficiently to minimise its impact on the host environment.","lastModifiedDate":"2024-03-03"},{"lineNumber":437,"author":{"gitId":"tengcharmaine"},"content":"6. User interface should be intuitive and easy for users with varying levels of technical expertise.","lastModifiedDate":"2024-03-03"},{"lineNumber":438,"author":{"gitId":"tengcharmaine"},"content":"7. Codebase should be well-documented and follow best practices to facilitate future maintenance and enhancements.","lastModifiedDate":"2024-03-03"},{"lineNumber":439,"author":{"gitId":"tengcharmaine"},"content":"8. Should be easy for developers to add new features or make changes to existing ones without causing unintended side effects.","lastModifiedDate":"2024-03-03"},{"lineNumber":440,"author":{"gitId":"tengcharmaine"},"content":"9. Should comply with relevant data privacy regulations (e.g. PDPA) and ensure user data is stored and processed securely.","lastModifiedDate":"2024-03-03"},{"lineNumber":441,"author":{"gitId":"tengcharmaine"},"content":"10. Should be able to be used alongside other systems and services commonly used in healthcare settings, such as electronic health record (EHR) systems.","lastModifiedDate":"2024-03-03"},{"lineNumber":442,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":443,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23"},{"lineNumber":444,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":445,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09"},{"lineNumber":446,"author":{"gitId":"drustanyjt"},"content":"* **GP**: General Practitioner, a general physician who provides primary care (usually in a clinic)","lastModifiedDate":"2024-03-04"},{"lineNumber":447,"author":{"gitId":"drustanyjt"},"content":"* **Taking History**: A medical term for recording a patient\u0027s symptoms, medical history, and other relevant information","lastModifiedDate":"2024-03-04"},{"lineNumber":448,"author":{"gitId":"drustanyjt"},"content":"* **Differential Diagnosis**: A medical term for a possible alternative diagnosis for a patient\u0027s symptoms","lastModifiedDate":"2024-03-04"},{"lineNumber":449,"author":{"gitId":"drustanyjt"},"content":"* **IC Number**: Short for NRIC (National Registration Identity Card) Number, a unique identifier for Singapore citizens and permanent residents","lastModifiedDate":"2024-03-05"},{"lineNumber":450,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":451,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":452,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":453,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23"},{"lineNumber":454,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":455,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":456,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":457,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":458,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":459,"author":{"gitId":"-"},"content":"**Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2023-09-12"},{"lineNumber":460,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":461,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":462,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":463,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":464,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":465,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":466,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":467,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":468,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23"},{"lineNumber":469,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":470,"author":{"gitId":"-"},"content":" 1. Double-click the jar file Expected: Shows the GUI with a set of sample contacts. The window size may not be optimum.","lastModifiedDate":"2020-05-23"},{"lineNumber":471,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":472,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23"},{"lineNumber":473,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":474,"author":{"gitId":"-"},"content":" 1. Resize the window to an optimum size. Move the window to a different location. Close the window.","lastModifiedDate":"2020-05-23"},{"lineNumber":475,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":476,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":477,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23"},{"lineNumber":478,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":479,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":480,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":481,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23"},{"lineNumber":482,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":483,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23"},{"lineNumber":484,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":485,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23"},{"lineNumber":486,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":487,"author":{"gitId":"Jayne1010"},"content":" 1. Test case: `delete T0123456A`\u003cbr\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":488,"author":{"gitId":"Jayne1010"},"content":" Expected: The contact with the unique identification number `T0123456A` is deleted from the list. Details of the deleted contact shown in the status message. Timestamp in the status bar is updated.","lastModifiedDate":"2024-03-19"},{"lineNumber":489,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":490,"author":{"gitId":"Jayne1010"},"content":" 1. Test case: `delete T0123A`\u003cbr\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":491,"author":{"gitId":"-"},"content":" Expected: No person is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2020-05-23"},{"lineNumber":492,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":493,"author":{"gitId":"Jayne1010"},"content":" 1. Other incorrect delete commands to try: `delete`, `delete x`, `...` (where x is the identification number which does not exist in the list)\u003cbr\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":494,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":495,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":496,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":497,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":498,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":499,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":500,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":501,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":502,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23"},{"lineNumber":503,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":504,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"drustanyjt":17,"Jayne1010":5,"tengcharmaine":9,"-":376,"jiahui0309":97}},{"path":"docs/UserGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"User Guide\"","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"Jayne1010"},"content":"# Clinic Mate User Guide","lastModifiedDate":"2024-03-03"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"Jayne1010"},"content":"Clinic Mate is a **desktop** app for managing contacts in a clinic, optimized for use via a **Command Line Interface** (CLI) while still having the benefits of a Graphical User Interface (GUI). If you can type fast, Clinic Mate can manage your patients\u0027 contact faster than traditional GUI apps.","lastModifiedDate":"2024-03-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"## Quick start","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"1. Ensure you have Java `11` or above installed in your Computer.","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"drustanyjt"},"content":"1. Download the latest `.jar` file from [here](https://github.com/AY2324S2-CS2103T-F14-2/tp/releases/latest)","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"1. Copy the file to the folder you want to use as the _home folder_ for your AddressBook.","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"tengcharmaine"},"content":"1. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar clinicmate.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":" A GUI similar to the below should appear in a few seconds. Note how the app contains some sample data.\u003cbr\u003e","lastModifiedDate":"2023-01-01"},{"lineNumber":26,"author":{"gitId":"-"},"content":" ![Ui](images/Ui.png)","lastModifiedDate":"2024-03-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":"1. Type the command in the command box and press Enter to execute it. e.g. typing **`help`** and pressing Enter will open the help window.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":" Some example commands you can try:","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * `list` : Lists all contacts.","lastModifiedDate":"2023-01-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"Jayne1010"},"content":" * `add n/John Doe p/88888888 e/johndoe@mail.com i/T0123456A ag/12 s/Male a/John street, block 123, #01-01` : Adds a contact named `John Doe` to the Address Book.","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"Jayne1010"},"content":" * `delete T0123456A` : Deletes the contact with the IC \u0027T0123456A\u0027 shown in the current list.","lastModifiedDate":"2024-03-03"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"Jayne1010"},"content":" * `find T0123456A` : Find the contact with the IC \u0027T0123456A\u0027 shown in the current list.","lastModifiedDate":"2024-03-03"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"Jayne1010"},"content":" * `addnote i/T0123456A n/Patient has diabetes` : Add a note: \u0027Patient has diabetes\u0027 for the contact with the IC \u0027T0123456A\u0027 as shown in current list.","lastModifiedDate":"2024-03-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"1. Refer to the [Features](#features) below for details of each command.","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"**Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"* Words in `UPPER_CASE` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" e.g. in `add n/NAME`, `NAME` is a parameter which can be used as `add n/John Doe`.","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"* Parameters can be in any order.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"Jayne1010"},"content":" e.g. if the command specifies `n/NAME i/IC_NUMBER`, `i/IC_NUMBER n/NAME` is also acceptable.","lastModifiedDate":"2024-03-03"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"* Extraneous parameters for commands that do not take in parameters (such as `help`, `list`, `exit` and `clear`) will be ignored.\u003cbr\u003e","lastModifiedDate":"2021-02-03"},{"lineNumber":58,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2021-02-03"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03"},{"lineNumber":60,"author":{"gitId":"-"},"content":"* If you are using a PDF version of this document, be careful when copying and pasting commands that span multiple lines as space characters surrounding line-breaks may be omitted when copied over to the application.","lastModifiedDate":"2023-06-26"},{"lineNumber":61,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":"### Viewing help : `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"author":{"gitId":"Jayne1010"},"content":"Shows a message explaining how to access the help page.","lastModifiedDate":"2024-03-03"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"Format: `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"### Adding a person: `add`","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"Adds a person to the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"Jayne1010"},"content":"Format: `add n/NAME p/PHONE e/EMAIL i/IC_NUMBER ag/AGE s/SEX a/ADDRESS`","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"Jayne1010"},"content":"* A person will be uniquely identified by his/her personal identification number.","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"Jayne1010"},"content":"* Clinic mate does not allow the same identification number to be twice.","lastModifiedDate":"2024-03-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":82,"author":{"gitId":"Jayne1010"},"content":"**Tip:** A person can have a note included.","lastModifiedDate":"2024-03-03"},{"lineNumber":83,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"Jayne1010"},"content":"* `add n/John Doe p/88888888 e/johndoe@mail.com i/T0123456A ag/12 s/Male a/John street, block 123, #01-01`","lastModifiedDate":"2024-03-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"Jayne1010"},"content":"### Adding a note : `addnote`","lastModifiedDate":"2024-03-03"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"Jayne1010"},"content":"Add a note to an existing person in the address book","lastModifiedDate":"2024-03-03"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"Jayne1010"},"content":"Format: `addnote i/IC_NUMBER n/NOTE`","lastModifiedDate":"2024-03-03"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"Jayne1010"},"content":"* Adds a note to the person with the specified `IC_NUMBER`. The IC number refers to the IC number shown in the displayed person list. The IC_NUMBER **must be the FULL IC NUMBER**.","lastModifiedDate":"2024-03-03"},{"lineNumber":95,"author":{"gitId":"-"},"content":"* Existing values will be updated to the input values.","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"Jayne1010"},"content":"* When adding notes, the new note added will be appended to the current note of the person. i.e. current note is preserved","lastModifiedDate":"2024-03-05"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"Jayne1010"},"content":"* `addnote i/T0123456A n/Patient has diabetes` Adds a note `Patient has diabetes` to the person with the IC number `T0123456A` in the address book.","lastModifiedDate":"2024-03-03"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"Jayne1010"},"content":"### Locating persons by ic number: `find`","lastModifiedDate":"2024-03-03"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":103,"author":{"gitId":"Jayne1010"},"content":"Find an existing person in the address book using their IC_NUMBER.","lastModifiedDate":"2024-03-03"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":105,"author":{"gitId":"Jayne1010"},"content":"Format: `find IC_NUMBER`","lastModifiedDate":"2024-03-03"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":107,"author":{"gitId":"Jayne1010"},"content":"* The search is case-insensitive. e.g `t0123456a` will match `T0123456A`.","lastModifiedDate":"2024-03-03"},{"lineNumber":108,"author":{"gitId":"Jayne1010"},"content":"* Only the IC number is searched.","lastModifiedDate":"2024-03-03"},{"lineNumber":109,"author":{"gitId":"Jayne1010"},"content":"* Only full IC number will be matched e.g. `T0123456A` will not match `T0123A`.","lastModifiedDate":"2024-03-03"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"Jayne1010"},"content":"* `find T0123456A` returns `John Doe`.","lastModifiedDate":"2024-03-03"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":"### Deleting a person : `delete`","lastModifiedDate":"2020-05-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"Jayne1010"},"content":"Deletes the specified person from the address book using their IC_NUMBER.","lastModifiedDate":"2024-03-03"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"Jayne1010"},"content":"Format: `delete IC_NUMBER`","lastModifiedDate":"2024-03-03"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"Jayne1010"},"content":"* Deletes the person with the specified `IC_NUMBER`.","lastModifiedDate":"2024-03-03"},{"lineNumber":121,"author":{"gitId":"Jayne1010"},"content":"* The IC_NUMBER refers to the IC number shown in the displayed person list.","lastModifiedDate":"2024-03-03"},{"lineNumber":122,"author":{"gitId":"Jayne1010"},"content":"* The IC_NUMBER **must be the FULL IC NUMBER**.","lastModifiedDate":"2024-03-03"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"Jayne1010"},"content":"* `delete T0123456A` deletes `John Doe` from the address book.","lastModifiedDate":"2024-03-03"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":"### Clearing all entries : `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":"Clears all entries from the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":"Format: `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":"AddressBook data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":145,"author":{"gitId":"drustanyjt"},"content":"AddressBook data are saved automatically as a JSON file `[JAR file location]/data/clinicmate.json`. Advanced users are welcome to update data directly by editing that data file.","lastModifiedDate":"2024-03-18"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":147,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"warning\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":149,"author":{"gitId":"-"},"content":"**Caution:**","lastModifiedDate":"2023-09-12"},{"lineNumber":150,"author":{"gitId":"-"},"content":"If your changes to the data file makes its format invalid, AddressBook will discard all data and start with an empty data file at the next run. Hence, it is recommended to take a backup of the file before editing it.\u003cbr\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":151,"author":{"gitId":"-"},"content":"Furthermore, certain edits can cause the AddressBook to behave in unexpected ways (e.g., if a value entered is outside the acceptable range). Therefore, edit the data file only if you are confident that you can update it correctly.","lastModifiedDate":"2023-09-12"},{"lineNumber":152,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":154,"author":{"gitId":"-"},"content":"### Archiving data files `[coming in v2.0]`","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"_Details coming soon ..._","lastModifiedDate":"2021-02-04"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":"**A**: Install the app in the other computer and overwrite the empty data file it creates with the file that contains the data of your previous AddressBook home folder.","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"## Known issues","lastModifiedDate":"2023-09-08"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":169,"author":{"gitId":"-"},"content":"1. **When using multiple screens**, if you move the application to a secondary screen, and later switch to using only the primary screen, the GUI will open off-screen. The remedy is to delete the `preferences.json` file created by the application before running the application again.","lastModifiedDate":"2023-09-08"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":171,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":173,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":"Action | Format, Examples","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":"-----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-12"},{"lineNumber":177,"author":{"gitId":"Jayne1010"},"content":"**Add** | `add n/NAME p/PHONE e/EMAIL i/IC_NUMBER ag/AGE s/SEX a/ADDRESS` \u003cbr\u003e e.g., `add n/John Doe p/88888888 e/johndoe@mail.com i/T0123456A ag/12 s/Male a/John street, block 123, #01-01`","lastModifiedDate":"2024-03-19"},{"lineNumber":178,"author":{"gitId":"-"},"content":"**Clear** | `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"Jayne1010"},"content":"**Delete** | `delete IC_NUMBER`\u003cbr\u003e e.g., `delete T0123456A`","lastModifiedDate":"2024-03-03"},{"lineNumber":180,"author":{"gitId":"Jayne1010"},"content":"**AddNote** | `addnote i/IC_NUMBER n/NOTE`\u003cbr\u003e e.g., `addnote i/T0123456A n/Patient has diabetes`","lastModifiedDate":"2024-03-03"},{"lineNumber":181,"author":{"gitId":"Jayne1010"},"content":"**Find** | `find IC_NUMBER`\u003cbr\u003e e.g., `find T0123456A`","lastModifiedDate":"2024-03-03"},{"lineNumber":182,"author":{"gitId":"-"},"content":"**Help** | `help`","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"Jayne1010":37,"drustanyjt":2,"tengcharmaine":1,"-":142}},{"path":"docs/diagrams/AddCommandDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"Jayne1010"},"content":"@startuml","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"Jayne1010"},"content":"!include style.puml","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"Jayne1010"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"Jayne1010"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"Jayne1010"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"Jayne1010"},"content":"participant \":AddressBookParser\" as AddressBookParser LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"Jayne1010"},"content":"participant \":AddCommandParser\" as AddCommandParser LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"Jayne1010"},"content":"participant \"d:AddCommand\" as AddCommand LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"Jayne1010"},"content":"participant \"r:CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"Jayne1010"},"content":"end box","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"Jayne1010"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"Jayne1010"},"content":"participant \"m:Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"Jayne1010"},"content":"end box","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"Jayne1010"},"content":"[-\u003e LogicManager : execute(\"add n/John Doe p/12345678 e/john@mail.com i/T0123456A ag/12 s/Male a/John street, block 123, #01-01\")","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"Jayne1010"},"content":"activate LogicManager","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"Jayne1010"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(\"add n/John Doe p/12345678 e/john@mail.com i/T0123456A ag/12 s/Male a/John street, block 123, #01-01\")","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"Jayne1010"},"content":"activate AddressBookParser","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"Jayne1010"},"content":"create AddCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"Jayne1010"},"content":"AddressBookParser -\u003e AddCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"Jayne1010"},"content":"activate AddCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"Jayne1010"},"content":"AddCommandParser --\u003e AddressBookParser","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"Jayne1010"},"content":"deactivate AddCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"Jayne1010"},"content":"AddressBookParser -\u003e AddCommandParser : parse(\"n/John Doe p/12345678 e/john@mail.com i/T0123456A ag/12 s/Male a/John street, block 123, #01-01\")","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"Jayne1010"},"content":"activate AddCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"Jayne1010"},"content":"create AddCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"Jayne1010"},"content":"AddCommandParser -\u003e AddCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"Jayne1010"},"content":"activate AddCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"Jayne1010"},"content":"AddCommand --\u003e AddCommandParser :","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"Jayne1010"},"content":"deactivate AddCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"Jayne1010"},"content":"AddCommandParser --\u003e AddressBookParser : a","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"Jayne1010"},"content":"deactivate AddCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"Jayne1010"},"content":"\u0027Hidden arrow to position the destroy marker below the end of the activation bar.","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"Jayne1010"},"content":"AddCommandParser -[hidden]-\u003e AddressBookParser","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"Jayne1010"},"content":"destroy AddCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"Jayne1010"},"content":"AddressBookParser --\u003e LogicManager : a","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"Jayne1010"},"content":"deactivate AddressBookParser","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"Jayne1010"},"content":"LogicManager -\u003e AddCommand : execute(m)","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"Jayne1010"},"content":"activate AddCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"Jayne1010"},"content":"AddCommand -\u003e Model : setPerson(T0123456A, \\n new Person(John Doe, 12345678, ...))","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"Jayne1010"},"content":"activate Model","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"Jayne1010"},"content":"Model --\u003e AddCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"Jayne1010"},"content":"deactivate Model","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"Jayne1010"},"content":"create CommandResult","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"Jayne1010"},"content":"AddCommand -\u003e CommandResult","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"Jayne1010"},"content":"activate CommandResult","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"Jayne1010"},"content":"CommandResult --\u003e AddCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"Jayne1010"},"content":"deactivate CommandResult","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"Jayne1010"},"content":"AddCommand --\u003e LogicManager : r","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"Jayne1010"},"content":"deactivate AddCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"Jayne1010"},"content":"[\u003c--LogicManager","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"Jayne1010"},"content":"deactivate LogicManager","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"Jayne1010"},"content":"@enduml","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"Jayne1010":70}},{"path":"docs/diagrams/AddNoteSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"tengcharmaine"},"content":"@startuml","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"tengcharmaine"},"content":"!include style.puml","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"tengcharmaine"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"tengcharmaine"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"tengcharmaine"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"tengcharmaine"},"content":"participant \":AddressBookParser\" as AddressBookParser LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"tengcharmaine"},"content":"participant \":AddNoteCommandParser\" as AddNoteCommandParser LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"tengcharmaine"},"content":"participant \"n:AddNoteCommand\" as AddNoteCommand LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"tengcharmaine"},"content":"participant \"r:CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"tengcharmaine"},"content":"end box","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"tengcharmaine"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"tengcharmaine"},"content":"participant \"m:Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"tengcharmaine"},"content":"end box","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"tengcharmaine"},"content":"[-\u003e LogicManager : execute(\"addnote \\n i/T0123456A n/Covid\")","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"tengcharmaine"},"content":"activate LogicManager","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"tengcharmaine"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(\"addnote \\n i/T0123456A n/Covid\")","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"tengcharmaine"},"content":"activate AddressBookParser","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"tengcharmaine"},"content":"create AddNoteCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"tengcharmaine"},"content":"AddressBookParser -\u003e AddNoteCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"tengcharmaine"},"content":"activate AddNoteCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"tengcharmaine"},"content":"AddNoteCommandParser --\u003e AddressBookParser","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"tengcharmaine"},"content":"deactivate AddNoteCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"tengcharmaine"},"content":"AddressBookParser -\u003e AddNoteCommandParser : parse(\"i/T0123456A n/Covid\")","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"tengcharmaine"},"content":"activate AddNoteCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"tengcharmaine"},"content":"create AddNoteCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"tengcharmaine"},"content":"AddNoteCommandParser -\u003e AddNoteCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"tengcharmaine"},"content":"activate AddNoteCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"tengcharmaine"},"content":"AddNoteCommand --\u003e AddNoteCommandParser :","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"tengcharmaine"},"content":"deactivate AddNoteCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"tengcharmaine"},"content":"AddNoteCommandParser --\u003e AddressBookParser : n","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"tengcharmaine"},"content":"deactivate AddNoteCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"tengcharmaine"},"content":"\u0027Hidden arrow to position the destroy marker below the end of the activation bar.","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"tengcharmaine"},"content":"AddNoteCommandParser -[hidden]-\u003e AddressBookParser","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"tengcharmaine"},"content":"destroy AddNoteCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"tengcharmaine"},"content":"AddressBookParser --\u003e LogicManager : n","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"tengcharmaine"},"content":"deactivate AddressBookParser","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"tengcharmaine"},"content":"LogicManager -\u003e AddNoteCommand : execute(m)","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"tengcharmaine"},"content":"activate AddNoteCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"tengcharmaine"},"content":"AddNoteCommand -\u003e Model : setPerson(T0123456A, \\n new Person(..., Covid, ...))","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"tengcharmaine"},"content":"activate Model","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"tengcharmaine"},"content":"Model --\u003e AddNoteCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"tengcharmaine"},"content":"deactivate Model","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"tengcharmaine"},"content":"create CommandResult","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"tengcharmaine"},"content":"AddNoteCommand -\u003e CommandResult","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"tengcharmaine"},"content":"activate CommandResult","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"tengcharmaine"},"content":"CommandResult --\u003e AddNoteCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"tengcharmaine"},"content":"deactivate CommandResult","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"tengcharmaine"},"content":"AddNoteCommand --\u003e LogicManager : r","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"tengcharmaine"},"content":"deactivate AddNoteCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"tengcharmaine"},"content":"[\u003c--LogicManager","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"tengcharmaine"},"content":"deactivate LogicManager","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"tengcharmaine"},"content":"@enduml","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"tengcharmaine":70}},{"path":"docs/diagrams/DeleteSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2023-07-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"participant \":AddressBookParser\" as AddressBookParser LOGIC_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":8,"author":{"gitId":"-"},"content":"participant \":DeleteCommandParser\" as DeleteCommandParser LOGIC_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"participant \"d:DeleteCommand\" as DeleteCommand LOGIC_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"-"},"content":"participant \"r:CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-02-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"end box","lastModifiedDate":"2019-07-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"participant \"m:Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-02-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":"end box","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"jiahui0309"},"content":"[-\u003e LogicManager : execute(\"delete S0123456A\")","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":"activate LogicManager","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"jiahui0309"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(\"delete S0123456A\")","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":"activate AddressBookParser","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"create DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":24,"author":{"gitId":"-"},"content":"AddressBookParser -\u003e DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":25,"author":{"gitId":"-"},"content":"activate DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":"DeleteCommandParser --\u003e AddressBookParser","lastModifiedDate":"2019-07-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"deactivate DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"jiahui0309"},"content":"AddressBookParser -\u003e DeleteCommandParser : parse(\"S0123456A\")","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"-"},"content":"activate DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":"create DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":"DeleteCommandParser -\u003e DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":35,"author":{"gitId":"-"},"content":"activate DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":37,"author":{"gitId":"-"},"content":"DeleteCommand --\u003e DeleteCommandParser :","lastModifiedDate":"2024-02-09"},{"lineNumber":38,"author":{"gitId":"-"},"content":"deactivate DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":40,"author":{"gitId":"-"},"content":"DeleteCommandParser --\u003e AddressBookParser : d","lastModifiedDate":"2019-07-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":"deactivate DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":42,"author":{"gitId":"-"},"content":"\u0027Hidden arrow to position the destroy marker below the end of the activation bar.","lastModifiedDate":"2019-07-03"},{"lineNumber":43,"author":{"gitId":"-"},"content":"DeleteCommandParser -[hidden]-\u003e AddressBookParser","lastModifiedDate":"2019-07-03"},{"lineNumber":44,"author":{"gitId":"-"},"content":"destroy DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":46,"author":{"gitId":"-"},"content":"AddressBookParser --\u003e LogicManager : d","lastModifiedDate":"2019-07-03"},{"lineNumber":47,"author":{"gitId":"-"},"content":"deactivate AddressBookParser","lastModifiedDate":"2019-07-03"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":49,"author":{"gitId":"-"},"content":"LogicManager -\u003e DeleteCommand : execute(m)","lastModifiedDate":"2024-02-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":"activate DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":52,"author":{"gitId":"jiahui0309"},"content":"DeleteCommand -\u003e Model : deletePerson(S0123456A)","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"-"},"content":"activate Model","lastModifiedDate":"2019-07-03"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":55,"author":{"gitId":"-"},"content":"Model --\u003e DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":56,"author":{"gitId":"-"},"content":"deactivate Model","lastModifiedDate":"2019-07-03"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":58,"author":{"gitId":"-"},"content":"create CommandResult","lastModifiedDate":"2019-07-03"},{"lineNumber":59,"author":{"gitId":"-"},"content":"DeleteCommand -\u003e CommandResult","lastModifiedDate":"2019-07-03"},{"lineNumber":60,"author":{"gitId":"-"},"content":"activate CommandResult","lastModifiedDate":"2019-07-03"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":62,"author":{"gitId":"-"},"content":"CommandResult --\u003e DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":63,"author":{"gitId":"-"},"content":"deactivate CommandResult","lastModifiedDate":"2019-07-03"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":65,"author":{"gitId":"-"},"content":"DeleteCommand --\u003e LogicManager : r","lastModifiedDate":"2024-02-09"},{"lineNumber":66,"author":{"gitId":"-"},"content":"deactivate DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":68,"author":{"gitId":"-"},"content":"[\u003c--LogicManager","lastModifiedDate":"2019-07-03"},{"lineNumber":69,"author":{"gitId":"-"},"content":"deactivate LogicManager","lastModifiedDate":"2019-07-03"},{"lineNumber":70,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"-":66,"jiahui0309":4}},{"path":"docs/diagrams/EditCommandDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"Jayne1010"},"content":"@startuml","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"Jayne1010"},"content":"!include style.puml","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"Jayne1010"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"Jayne1010"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"Jayne1010"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"Jayne1010"},"content":"participant \":AddressBookParser\" as AddressBookParser LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"Jayne1010"},"content":"participant \":EditCommandParser\" as EditCommandParser LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"Jayne1010"},"content":"participant \"d:EditCommand\" as EditCommand LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"Jayne1010"},"content":"participant \"r:CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"Jayne1010"},"content":"end box","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"Jayne1010"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"Jayne1010"},"content":"participant \"m:Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"Jayne1010"},"content":"end box","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"Jayne1010"},"content":"[-\u003e LogicManager : execute(\"edit T0123456A p/23456789\")","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"Jayne1010"},"content":"activate LogicManager","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"Jayne1010"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(\"edit T0123456A p/23456789\")","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"Jayne1010"},"content":"activate AddressBookParser","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"Jayne1010"},"content":"create EditCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"Jayne1010"},"content":"AddressBookParser -\u003e EditCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"Jayne1010"},"content":"activate EditCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"Jayne1010"},"content":"EditCommandParser --\u003e AddressBookParser","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"Jayne1010"},"content":"deactivate EditCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"Jayne1010"},"content":"AddressBookParser -\u003e EditCommandParser : parse(\"p/23456789\")","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"Jayne1010"},"content":"activate EditCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"Jayne1010"},"content":"create EditCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"Jayne1010"},"content":"EditCommandParser -\u003e EditCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"Jayne1010"},"content":"activate EditCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"Jayne1010"},"content":"EditCommand --\u003e EditCommandParser :","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"Jayne1010"},"content":"deactivate EditCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"Jayne1010"},"content":"EditCommandParser --\u003e AddressBookParser : e","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"Jayne1010"},"content":"deactivate EditCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"Jayne1010"},"content":"\u0027Hidden arrow to position the destroy marker below the end of the activation bar.","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"Jayne1010"},"content":"EditCommandParser -[hidden]-\u003e AddressBookParser","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"Jayne1010"},"content":"destroy EditCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"Jayne1010"},"content":"AddressBookParser --\u003e LogicManager : e","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"Jayne1010"},"content":"deactivate AddressBookParser","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"Jayne1010"},"content":"LogicManager -\u003e EditCommand : execute(m)","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"Jayne1010"},"content":"activate EditCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"Jayne1010"},"content":"EditCommand -\u003e Model : setPerson(T0123456A, \\n new Person(John Doe, 23456789, ...))","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"Jayne1010"},"content":"activate Model","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"Jayne1010"},"content":"Model --\u003e EditCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"Jayne1010"},"content":"deactivate Model","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"Jayne1010"},"content":"create CommandResult","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"Jayne1010"},"content":"EditCommand -\u003e CommandResult","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"Jayne1010"},"content":"activate CommandResult","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"Jayne1010"},"content":"CommandResult --\u003e EditCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"Jayne1010"},"content":"deactivate CommandResult","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"Jayne1010"},"content":"EditCommand --\u003e LogicManager : r","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"Jayne1010"},"content":"deactivate EditCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"Jayne1010"},"content":"[\u003c--LogicManager","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"Jayne1010"},"content":"deactivate LogicManager","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"Jayne1010"},"content":"@enduml","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"Jayne1010":70}},{"path":"docs/diagrams/FindSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"jiahui0309"},"content":"@startuml","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"jiahui0309"},"content":"!include style.puml","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"jiahui0309"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"jiahui0309"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"jiahui0309"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"jiahui0309"},"content":"participant \":AddressBookParser\" as AddressBookParser LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"jiahui0309"},"content":"participant \":FindCommandParser\" as FindCommandParser LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"jiahui0309"},"content":"participant \"f:FindCommand\" as FindCommand LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"jiahui0309"},"content":"participant \"r:CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"jiahui0309"},"content":"end box","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"jiahui0309"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"jiahui0309"},"content":"participant \"m:Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"jiahui0309"},"content":"end box","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"jiahui0309"},"content":"[-\u003e LogicManager : execute(\"find S0123456A\")","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"jiahui0309"},"content":"activate LogicManager","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"jiahui0309"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(\"find S0123456A\")","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"jiahui0309"},"content":"activate AddressBookParser","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"jiahui0309"},"content":"create FindCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"jiahui0309"},"content":"AddressBookParser -\u003e FindCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"jiahui0309"},"content":"activate FindCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"jiahui0309"},"content":"FindCommandParser --\u003e AddressBookParser","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"jiahui0309"},"content":"deactivate FindCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"jiahui0309"},"content":"AddressBookParser -\u003e FindCommandParser : parse(\"S0123456A\")","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"jiahui0309"},"content":"activate FindCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"jiahui0309"},"content":"create FindCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"jiahui0309"},"content":"FindCommandParser -\u003e FindCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"jiahui0309"},"content":"activate FindCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"jiahui0309"},"content":"FindCommand --\u003e FindCommandParser :","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"jiahui0309"},"content":"deactivate FindCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"jiahui0309"},"content":"FindCommandParser --\u003e AddressBookParser : f","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"jiahui0309"},"content":"deactivate FindCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"jiahui0309"},"content":"\u0027Hidden arrow to position the destroy marker below the end of the activation bar.","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"jiahui0309"},"content":"FindCommandParser -[hidden]-\u003e AddressBookParser","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"jiahui0309"},"content":"destroy FindCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"jiahui0309"},"content":"AddressBookParser --\u003e LogicManager : f","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"jiahui0309"},"content":"deactivate AddressBookParser","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"jiahui0309"},"content":"LogicManager -\u003e FindCommand : execute(m)","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"jiahui0309"},"content":"activate FindCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"jiahui0309"},"content":"FindCommand -\u003e Model : updateFilteredPersonList(S0123456A)","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"jiahui0309"},"content":"activate Model","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"jiahui0309"},"content":"Model --\u003e FindCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"jiahui0309"},"content":"deactivate Model","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"jiahui0309"},"content":"create CommandResult","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"jiahui0309"},"content":"FindCommand -\u003e CommandResult","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"jiahui0309"},"content":"activate CommandResult","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"jiahui0309"},"content":"CommandResult --\u003e FindCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"jiahui0309"},"content":"deactivate CommandResult","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"jiahui0309"},"content":"FindCommand --\u003e LogicManager : r","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"jiahui0309"},"content":"deactivate FindCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"jiahui0309"},"content":"[\u003c--LogicManager","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"jiahui0309"},"content":"deactivate LogicManager","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"jiahui0309"},"content":"@enduml","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"jiahui0309":70}},{"path":"docs/diagrams/ModelClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam arrowColor MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam classBackgroundColor MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Package Model as ModelPackage \u003c\u003cRectangle\u003e\u003e{","lastModifiedDate":"2023-07-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nReadOnlyAddressBook\" as ReadOnlyAddressBook","lastModifiedDate":"2022-01-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nReadOnlyUserPrefs\" as ReadOnlyUserPrefs","lastModifiedDate":"2022-01-03"},{"lineNumber":10,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nModel\" as Model","lastModifiedDate":"2022-01-03"},{"lineNumber":11,"author":{"gitId":"-"},"content":"Class AddressBook","lastModifiedDate":"2019-07-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"Class ModelManager","lastModifiedDate":"2019-07-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"Class UserPrefs","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":15,"author":{"gitId":"-"},"content":"Class UniquePersonList","lastModifiedDate":"2021-07-31"},{"lineNumber":16,"author":{"gitId":"-"},"content":"Class Person","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"Class Name","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"Class Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"drustanyjt"},"content":"Class Email","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"drustanyjt"},"content":"Class IdentityCardNumber","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"drustanyjt"},"content":"Class Age","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"drustanyjt"},"content":"Class Sex","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"drustanyjt"},"content":"Class Address","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"drustanyjt"},"content":"Class Note","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"drustanyjt"},"content":"\u0027Class Tag","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":27,"author":{"gitId":"-"},"content":"Class I #FFFFFF","lastModifiedDate":"2023-07-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":"AddressBook .up.|\u003e ReadOnlyAddressBook","lastModifiedDate":"2019-07-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":35,"author":{"gitId":"-"},"content":"ModelManager .up.|\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":36,"author":{"gitId":"-"},"content":"Model .right.\u003e ReadOnlyUserPrefs","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"Model .left.\u003e ReadOnlyAddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":38,"author":{"gitId":"-"},"content":"ModelManager -left-\u003e \"1\" AddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":39,"author":{"gitId":"-"},"content":"ModelManager -right-\u003e \"1\" UserPrefs","lastModifiedDate":"2021-07-31"},{"lineNumber":40,"author":{"gitId":"-"},"content":"UserPrefs .up.|\u003e ReadOnlyUserPrefs","lastModifiedDate":"2019-07-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":42,"author":{"gitId":"-"},"content":"AddressBook *--\u003e \"1\" UniquePersonList","lastModifiedDate":"2019-07-30"},{"lineNumber":43,"author":{"gitId":"-"},"content":"UniquePersonList --\u003e \"~* all\" Person","lastModifiedDate":"2021-07-31"},{"lineNumber":44,"author":{"gitId":"-"},"content":"Person *--\u003e Name","lastModifiedDate":"2019-07-03"},{"lineNumber":45,"author":{"gitId":"-"},"content":"Person *--\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":46,"author":{"gitId":"-"},"content":"Person *--\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":47,"author":{"gitId":"drustanyjt"},"content":"Person *--\u003e IdentityCardNumber","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"drustanyjt"},"content":"Person *--\u003e Age","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"drustanyjt"},"content":"Person *--\u003e Sex","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"-"},"content":"Person *--\u003e Address","lastModifiedDate":"2019-07-03"},{"lineNumber":51,"author":{"gitId":"drustanyjt"},"content":"Person *--\u003e Note","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"drustanyjt"},"content":"\u0027Person *--\u003e \"*\" Tag","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":54,"author":{"gitId":"-"},"content":"Person -[hidden]up--\u003e I","lastModifiedDate":"2023-07-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":"UniquePersonList -[hidden]right-\u003e I","lastModifiedDate":"2023-07-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":"Name -[hidden]right-\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":58,"author":{"gitId":"-"},"content":"Phone -[hidden]right-\u003e Address","lastModifiedDate":"2019-07-03"},{"lineNumber":59,"author":{"gitId":"-"},"content":"Address -[hidden]right-\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":61,"author":{"gitId":"-"},"content":"ModelManager --\u003e \"~* filtered\" Person","lastModifiedDate":"2021-07-31"},{"lineNumber":62,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"drustanyjt":12,"-":50}},{"path":"docs/index.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"\"","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"jiahui0309"},"content":"# ClinicMate Level-3","lastModifiedDate":"2024-03-06"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"[![CI Status](https://github.com/se-edu/addressbook-level3/workflows/Java%20CI/badge.svg)](https://github.com/se-edu/addressbook-level3/actions)","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"[![codecov](https://codecov.io/gh/se-edu/addressbook-level3/branch/master/graph/badge.svg)](https://codecov.io/gh/se-edu/addressbook-level3)","lastModifiedDate":"2020-08-07"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"tengcharmaine"},"content":"![Ui](images/OldUi.png)","lastModifiedDate":"2024-03-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"jiahui0309"},"content":"**ClinicMate is a desktop application for managing your contact details.** While it has a GUI, most of the user interactions happen using a CLI (Command Line Interface).","lastModifiedDate":"2024-03-06"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"jiahui0309"},"content":"* If you are interested in using ClinicMate, head over to the [_Quick Start_ section of the **User Guide**](UserGuide.html#quick-start).","lastModifiedDate":"2024-03-06"},{"lineNumber":16,"author":{"gitId":"jiahui0309"},"content":"* If you are interested about developing ClinicMate, the [**Developer Guide**](DeveloperGuide.html) is a good place to start.","lastModifiedDate":"2024-03-06"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"**Acknowledgements**","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"* Libraries used: [JavaFX](https://openjfx.io/), [Jackson](https://github.com/FasterXML/jackson), [JUnit5](https://github.com/junit-team/junit5)","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"drustanyjt"},"content":"* Logo: [Red Cross icons by Freepik - Flaticon](https://www.flaticon.com/free-icons/red-cross)","lastModifiedDate":"2024-03-03"},{"lineNumber":23,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-03"}],"authorContributionMap":{"drustanyjt":2,"tengcharmaine":1,"-":16,"jiahui0309":4}},{"path":"docs/tutorials/AddRemark.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-07-29"},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"Tutorial: Adding a command\"","lastModifiedDate":"2020-07-29"},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-07-29"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":7,"author":{"gitId":"-"},"content":"# Tutorial: Adding a command","lastModifiedDate":"2023-09-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"Let\u0027s walk you through the implementation of a new command — `remark`.","lastModifiedDate":"2020-07-29"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"This command allows users of the AddressBook application to add optional remarks to people in their address book and edit it if required. The command should have the following format:","lastModifiedDate":"2020-07-29"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":13,"author":{"gitId":"-"},"content":"`remark INDEX r/REMARK` (e.g., `remark 2 r/Likes baseball`)","lastModifiedDate":"2020-07-29"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":"We’ll assume that you have already set up the development environment as outlined in the Developer’s Guide.","lastModifiedDate":"2020-07-29"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":18,"author":{"gitId":"-"},"content":"## Create a new `remark` command","lastModifiedDate":"2020-07-29"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Looking in the `logic.command` package, you will notice that each existing command have their own class. All the commands inherit from the abstract class `Command` which means that they must override `execute()`. Each `Command` returns an instance of `CommandResult` upon success and `CommandResult#feedbackToUser` is printed to the `ResultDisplay`.","lastModifiedDate":"2020-07-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":22,"author":{"gitId":"-"},"content":"Let’s start by creating a new `RemarkCommand` class in the `src/main/java/seedu/address/logic/command` directory.","lastModifiedDate":"2020-07-29"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":24,"author":{"gitId":"-"},"content":"For now, let’s keep `RemarkCommand` as simple as possible and print some output. We accomplish that by returning a `CommandResult` with an accompanying message.","lastModifiedDate":"2020-07-29"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":26,"author":{"gitId":"-"},"content":"**`RemarkCommand.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":28,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":29,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2020-07-29"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2020-07-29"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":33,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-07-29"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Changes the remark of an existing person in the address book.","lastModifiedDate":"2020-07-29"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":36,"author":{"gitId":"-"},"content":"public class RemarkCommand extends Command {","lastModifiedDate":"2020-07-29"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"remark\";","lastModifiedDate":"2020-07-29"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2020-07-29"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return new CommandResult(\"Hello from remark\");","lastModifiedDate":"2020-07-29"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":44,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":45,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":47,"author":{"gitId":"-"},"content":"### Hook `RemarkCommand` into the application","lastModifiedDate":"2020-07-29"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":49,"author":{"gitId":"-"},"content":"Now that we have our `RemarkCommand` ready to be executed, we need to update `AddressBookParser#parseCommand()` to recognize the `remark` keyword. Add the new command to the `switch` block by creating a new `case` that returns a new instance of `RemarkCommand`.","lastModifiedDate":"2020-07-29"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":51,"author":{"gitId":"-"},"content":"You can refer to the changes in this [diff](https://github.com/se-edu/addressbook-level3/commit/35eb7286f18a029d39cb7a29df8f172a001e4fd8#diff-399c284cb892c20b7c04a69116fcff6ccc0666c5230a1db8e4a9145def8fa4ee).","lastModifiedDate":"2022-01-02"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":"### Run the application","lastModifiedDate":"2020-07-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":55,"author":{"gitId":"-"},"content":"Run `Main#main` and try out your new `RemarkCommand`. If everything went well, you should see something like this:","lastModifiedDate":"2020-07-29"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":"![Output displayed](../images/add-remark/RemarkHello.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":59,"author":{"gitId":"-"},"content":"## Change `RemarkCommand` to throw an exception","lastModifiedDate":"2020-07-29"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":"While we have successfully printed a message to `ResultDisplay`, the command does not do what it is supposed to do. Let’s change the command to throw a `CommandException` to accurately reflect that our command is still a work in progress.","lastModifiedDate":"2020-12-12"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":63,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"../diagrams/add-remark/RemarkClass.puml\" alt\u003d\"The relationship between RemarkCommand and Command\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":65,"author":{"gitId":"-"},"content":"Following the convention in other commands, we add relevant messages as constants and use them.","lastModifiedDate":"2020-07-29"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":67,"author":{"gitId":"-"},"content":"**`RemarkCommand.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":69,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2021-08-01"},{"lineNumber":71,"author":{"gitId":"-"},"content":" + \": Edits the remark of the person identified \"","lastModifiedDate":"2021-08-01"},{"lineNumber":72,"author":{"gitId":"-"},"content":" + \"by the index number used in the last person listing. \"","lastModifiedDate":"2020-07-29"},{"lineNumber":73,"author":{"gitId":"-"},"content":" + \"Existing remark will be overwritten by the input.\\n\"","lastModifiedDate":"2020-07-29"},{"lineNumber":74,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2020-07-29"},{"lineNumber":75,"author":{"gitId":"-"},"content":" + \"r/ [REMARK]\\n\"","lastModifiedDate":"2020-07-29"},{"lineNumber":76,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2020-07-29"},{"lineNumber":77,"author":{"gitId":"-"},"content":" + \"r/ Likes to swim.\";","lastModifiedDate":"2020-07-29"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_IMPLEMENTED_YET \u003d","lastModifiedDate":"2021-08-01"},{"lineNumber":80,"author":{"gitId":"-"},"content":" \"Remark command not implemented yet\";","lastModifiedDate":"2021-08-01"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2020-07-29"},{"lineNumber":84,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_NOT_IMPLEMENTED_YET);","lastModifiedDate":"2020-07-29"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":86,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":88,"author":{"gitId":"-"},"content":"## Enhancing `RemarkCommand`","lastModifiedDate":"2020-07-29"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":90,"author":{"gitId":"-"},"content":"Let’s change `RemarkCommand` to parse input from the user.","lastModifiedDate":"2020-07-29"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":92,"author":{"gitId":"-"},"content":"### Make the command accept parameters","lastModifiedDate":"2020-07-29"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":94,"author":{"gitId":"-"},"content":"We start by modifying the constructor of `RemarkCommand` to accept an `Index` and a `String`. While we are at it, let’s change the error message to echo the values. While this is not a replacement for tests, it is an obvious way to tell if our code is functioning as intended.","lastModifiedDate":"2020-07-29"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":96,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":97,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2020-07-29"},{"lineNumber":98,"author":{"gitId":"-"},"content":"//...","lastModifiedDate":"2020-07-29"},{"lineNumber":99,"author":{"gitId":"-"},"content":"public class RemarkCommand extends Command {","lastModifiedDate":"2020-07-29"},{"lineNumber":100,"author":{"gitId":"-"},"content":" //...","lastModifiedDate":"2020-07-29"},{"lineNumber":101,"author":{"gitId":"-"},"content":" public static final String MESSAGE_ARGUMENTS \u003d \"Index: %1$d, Remark: %2$s\";","lastModifiedDate":"2020-07-29"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":103,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2020-07-29"},{"lineNumber":104,"author":{"gitId":"-"},"content":" private final String remark;","lastModifiedDate":"2020-07-29"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":106,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-07-29"},{"lineNumber":107,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit the remark","lastModifiedDate":"2020-07-29"},{"lineNumber":108,"author":{"gitId":"-"},"content":" * @param remark of the person to be updated to","lastModifiedDate":"2020-07-29"},{"lineNumber":109,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":110,"author":{"gitId":"-"},"content":" public RemarkCommand(Index index, String remark) {","lastModifiedDate":"2020-07-29"},{"lineNumber":111,"author":{"gitId":"-"},"content":" requireAllNonNull(index, remark);","lastModifiedDate":"2020-07-29"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":113,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2020-07-29"},{"lineNumber":114,"author":{"gitId":"-"},"content":" this.remark \u003d remark;","lastModifiedDate":"2020-07-29"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":117,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2020-07-29"},{"lineNumber":118,"author":{"gitId":"-"},"content":" throw new CommandException(","lastModifiedDate":"2021-08-01"},{"lineNumber":119,"author":{"gitId":"-"},"content":" String.format(MESSAGE_ARGUMENTS, index.getOneBased(), remark));","lastModifiedDate":"2021-08-01"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":123,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2020-07-29"},{"lineNumber":124,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2020-07-29"},{"lineNumber":125,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2020-07-29"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":128,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2020-07-29"},{"lineNumber":129,"author":{"gitId":"-"},"content":" if (!(other instanceof RemarkCommand)) {","lastModifiedDate":"2020-07-29"},{"lineNumber":130,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2020-07-29"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":133,"author":{"gitId":"-"},"content":" RemarkCommand e \u003d (RemarkCommand) other;","lastModifiedDate":"2020-07-29"},{"lineNumber":134,"author":{"gitId":"-"},"content":" return index.equals(e.index)","lastModifiedDate":"2020-07-29"},{"lineNumber":135,"author":{"gitId":"-"},"content":" \u0026\u0026 remark.equals(e.remark);","lastModifiedDate":"2020-07-29"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":137,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":138,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":140,"author":{"gitId":"-"},"content":"Your code should look something like [this](https://github.com/se-edu/addressbook-level3/commit/dc6d5139d08f6403da0ec624ea32bd79a2ae0cbf#diff-a8e35af8f9c251525063fae36c9852922a7e7195763018eacec60f3a4d87c594) after you are done.","lastModifiedDate":"2022-01-02"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":142,"author":{"gitId":"-"},"content":"### Parse user input","lastModifiedDate":"2020-07-29"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":144,"author":{"gitId":"-"},"content":"Now let’s move on to writing a parser that will extract the index and remark from the input provided by the user.","lastModifiedDate":"2020-07-29"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":146,"author":{"gitId":"-"},"content":"Create a `RemarkCommandParser` class in the `seedu.address.logic.parser` package. The class must extend the `Parser` interface.","lastModifiedDate":"2020-07-29"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":148,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"../diagrams/add-remark/ParserClass.puml\" alt\u003d\"The relationship between Parser and RemarkCommandParser\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":150,"author":{"gitId":"-"},"content":"Thankfully, `ArgumentTokenizer#tokenize()` makes it trivial to parse user input. Let’s take a look at the JavaDoc provided for the function to understand what it does.","lastModifiedDate":"2020-07-29"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":152,"author":{"gitId":"-"},"content":"**`ArgumentTokenizer.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":154,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":155,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-07-29"},{"lineNumber":156,"author":{"gitId":"-"},"content":" * Tokenizes an arguments string and returns an {@code ArgumentMultimap}","lastModifiedDate":"2020-07-29"},{"lineNumber":157,"author":{"gitId":"-"},"content":" * object that maps prefixes to their respective argument values. Only the","lastModifiedDate":"2020-07-29"},{"lineNumber":158,"author":{"gitId":"-"},"content":" * given prefixes will be recognized in the arguments string.","lastModifiedDate":"2020-07-29"},{"lineNumber":159,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2020-07-29"},{"lineNumber":160,"author":{"gitId":"-"},"content":" * @param argsString Arguments string of the form:","lastModifiedDate":"2020-07-29"},{"lineNumber":161,"author":{"gitId":"-"},"content":" * {@code preamble \u003cprefix\u003evalue \u003cprefix\u003evalue ...}","lastModifiedDate":"2020-07-29"},{"lineNumber":162,"author":{"gitId":"-"},"content":" * @param prefixes Prefixes to tokenize the arguments string with","lastModifiedDate":"2020-07-29"},{"lineNumber":163,"author":{"gitId":"-"},"content":" * @return ArgumentMultimap object that maps prefixes to their","lastModifiedDate":"2020-07-29"},{"lineNumber":164,"author":{"gitId":"-"},"content":" * arguments","lastModifiedDate":"2020-07-29"},{"lineNumber":165,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":166,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":168,"author":{"gitId":"-"},"content":"We can tell `ArgumentTokenizer#tokenize()` to look out for our new prefix `r/` and it will return us an instance of `ArgumentMultimap`. Now let’s find out what we need to do in order to obtain the Index and String that we need. Let’s look through `ArgumentMultimap` :","lastModifiedDate":"2020-07-29"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":170,"author":{"gitId":"-"},"content":"**`ArgumentMultimap.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":172,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":173,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-07-29"},{"lineNumber":174,"author":{"gitId":"-"},"content":" * Returns the last value of {@code prefix}.","lastModifiedDate":"2020-07-29"},{"lineNumber":175,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":176,"author":{"gitId":"-"},"content":"public Optional\u003cString\u003e getValue(Prefix prefix) {","lastModifiedDate":"2020-07-29"},{"lineNumber":177,"author":{"gitId":"-"},"content":" List\u003cString\u003e values \u003d getAllValues(prefix);","lastModifiedDate":"2020-07-29"},{"lineNumber":178,"author":{"gitId":"-"},"content":" return values.isEmpty() ? Optional.empty() :","lastModifiedDate":"2020-07-29"},{"lineNumber":179,"author":{"gitId":"-"},"content":" Optional.of(values.get(values.size() - 1));","lastModifiedDate":"2020-07-29"},{"lineNumber":180,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":181,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":183,"author":{"gitId":"-"},"content":"This appears to be what we need to get a String of the remark. But what about the Index? Let\u0027s take a quick peek at existing `Command` that uses an index to see how it is done.","lastModifiedDate":"2020-07-29"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":185,"author":{"gitId":"-"},"content":"**`DeleteCommandParser.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":187,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":188,"author":{"gitId":"-"},"content":"Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2020-07-29"},{"lineNumber":189,"author":{"gitId":"-"},"content":"return new DeleteCommand(index);","lastModifiedDate":"2020-07-29"},{"lineNumber":190,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":192,"author":{"gitId":"-"},"content":"There appears to be another utility class that obtains an `Index` from the input provided by the user.","lastModifiedDate":"2020-07-29"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":194,"author":{"gitId":"-"},"content":"Now that we have the know-how to extract the data that we need from the user’s input, we can parse the user command and create a new instance of `RemarkCommand`, as given below.","lastModifiedDate":"2020-07-29"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":196,"author":{"gitId":"-"},"content":"**`RemarkCommandParser.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":198,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":199,"author":{"gitId":"-"},"content":"public RemarkCommand parse(String args) throws ParseException {","lastModifiedDate":"2020-07-29"},{"lineNumber":200,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2020-07-29"},{"lineNumber":201,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args,","lastModifiedDate":"2020-07-29"},{"lineNumber":202,"author":{"gitId":"-"},"content":" PREFIX_REMARK);","lastModifiedDate":"2020-07-29"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":204,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2020-07-29"},{"lineNumber":205,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2020-07-29"},{"lineNumber":206,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2020-07-29"},{"lineNumber":207,"author":{"gitId":"-"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2020-07-29"},{"lineNumber":208,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2020-07-29"},{"lineNumber":209,"author":{"gitId":"-"},"content":" RemarkCommand.MESSAGE_USAGE), ive);","lastModifiedDate":"2020-07-29"},{"lineNumber":210,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":212,"author":{"gitId":"-"},"content":" String remark \u003d argMultimap.getValue(PREFIX_REMARK).orElse(\"\");","lastModifiedDate":"2020-07-29"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":214,"author":{"gitId":"-"},"content":" return new RemarkCommand(index, remark);","lastModifiedDate":"2020-07-29"},{"lineNumber":215,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":216,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":218,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":220,"author":{"gitId":"-"},"content":"Don’t forget to update `AddressBookParser` to use our new `RemarkCommandParser`!","lastModifiedDate":"2023-09-12"},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":222,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":224,"author":{"gitId":"-"},"content":"If you are stuck, check out the sample","lastModifiedDate":"2020-07-29"},{"lineNumber":225,"author":{"gitId":"-"},"content":"[here](https://github.com/se-edu/addressbook-level3/commit/dc6d5139d08f6403da0ec624ea32bd79a2ae0cbf#diff-8bf239e8e9529369b577701303ddd96af93178b4ed6735f91c2d8488b20c6b4a).","lastModifiedDate":"2022-01-02"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":227,"author":{"gitId":"-"},"content":"## Add `Remark` to the model","lastModifiedDate":"2020-07-29"},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":229,"author":{"gitId":"-"},"content":"Now that we have all the information that we need, let’s lay the groundwork for propagating the remarks added into the in-memory storage of person data. We achieve that by working with the `Person` model. Each field in a Person is implemented as a separate class (e.g. a `Name` object represents the person’s name). That means we should add a `Remark` class so that we can use a `Remark` object to represent a remark given to a person.","lastModifiedDate":"2020-07-29"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":231,"author":{"gitId":"-"},"content":"### Add a new `Remark` class","lastModifiedDate":"2020-07-29"},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":233,"author":{"gitId":"-"},"content":"Create a new `Remark` in `seedu.address.model.person`. Since a `Remark` is a field that is similar to `Address`, we can reuse a significant bit of code.","lastModifiedDate":"2020-07-29"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":235,"author":{"gitId":"-"},"content":"A copy-paste and search-replace later, you should have something like [this](https://github.com/se-edu/addressbook-level3/commit/4516e099699baa9e2d51801bd26f016d812dedcc#diff-41bb13c581e280c686198251ad6cc337cd5e27032772f06ed9bf7f1440995ece). Note how `Remark` has no constrains and thus does not require input","lastModifiedDate":"2022-01-02"},{"lineNumber":236,"author":{"gitId":"-"},"content":"validation.","lastModifiedDate":"2020-07-29"},{"lineNumber":237,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":238,"author":{"gitId":"-"},"content":"### Make use of `Remark`","lastModifiedDate":"2020-07-29"},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":240,"author":{"gitId":"-"},"content":"Let’s change `RemarkCommand` and `RemarkCommandParser` to use the new `Remark` class instead of plain `String`. These should be relatively simple changes.","lastModifiedDate":"2020-07-29"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":242,"author":{"gitId":"-"},"content":"## Add a placeholder element for remark to the UI","lastModifiedDate":"2020-07-29"},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":244,"author":{"gitId":"-"},"content":"Without getting too deep into `fxml`, let’s go on a 5 minute adventure to get some placeholder text to show up for each person.","lastModifiedDate":"2020-07-29"},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":246,"author":{"gitId":"-"},"content":"Simply add the following to [`seedu.address.ui.PersonCard`](https://github.com/se-edu/addressbook-level3/commit/850b78879582f38accb05dd20c245963c65ea599#diff-639834f1e05afe2276a86372adf0fe5f69314642c2d93cfa543d614ce5a76688).","lastModifiedDate":"2022-01-02"},{"lineNumber":247,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":248,"author":{"gitId":"-"},"content":"**`PersonCard.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":250,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":251,"author":{"gitId":"-"},"content":"@FXML","lastModifiedDate":"2020-07-29"},{"lineNumber":252,"author":{"gitId":"-"},"content":"private Label remark;","lastModifiedDate":"2020-07-29"},{"lineNumber":253,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":256,"author":{"gitId":"-"},"content":"`@FXML` is an annotation that marks a private or protected field and makes it accessible to FXML. It might sound like Greek to you right now, don’t worry — we will get back to it later.","lastModifiedDate":"2020-07-29"},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":258,"author":{"gitId":"-"},"content":"Then insert the following into [`main/resources/view/PersonListCard.fxml`](https://github.com/se-edu/addressbook-level3/commit/850b78879582f38accb05dd20c245963c65ea599#diff-d44c4f51c24f6253c277a2bb9bc440b8064d9c15ad7cb7ceda280bca032efce9).","lastModifiedDate":"2022-01-02"},{"lineNumber":259,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":260,"author":{"gitId":"-"},"content":"**`PersonListCard.fxml`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":261,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":262,"author":{"gitId":"-"},"content":"``` xml","lastModifiedDate":"2020-07-29"},{"lineNumber":263,"author":{"gitId":"-"},"content":"\u003cLabel fx:id\u003d\"remark\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$remark\" /\u003e","lastModifiedDate":"2020-07-29"},{"lineNumber":264,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":266,"author":{"gitId":"-"},"content":"That’s it! Fire up the application again and you should see something like this:","lastModifiedDate":"2020-07-29"},{"lineNumber":267,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":268,"author":{"gitId":"-"},"content":"![$remark shows up in each entry](../images/add-remark/$Remark.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":269,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":270,"author":{"gitId":"-"},"content":"## Modify `Person` to support a `Remark` field","lastModifiedDate":"2020-07-29"},{"lineNumber":271,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":272,"author":{"gitId":"-"},"content":"Since `PersonCard` displays data from a `Person`, we need to update `Person` to get our `Remark` displayed!","lastModifiedDate":"2020-07-29"},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":274,"author":{"gitId":"-"},"content":"### Modify `Person`","lastModifiedDate":"2020-07-29"},{"lineNumber":275,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":276,"author":{"gitId":"-"},"content":"We change the constructor of `Person` to take a `Remark`. We will also need to define new fields and accessors accordingly to store our new addition.","lastModifiedDate":"2020-07-29"},{"lineNumber":277,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":278,"author":{"gitId":"-"},"content":"### Update other usages of `Person`","lastModifiedDate":"2020-07-29"},{"lineNumber":279,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":280,"author":{"gitId":"-"},"content":"Unfortunately, a change to `Person` will cause other commands to break, you will have to modify these commands to use the updated `Person`!","lastModifiedDate":"2020-07-29"},{"lineNumber":281,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":282,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":284,"author":{"gitId":"-"},"content":"Use the `Find Usages` feature in IntelliJ IDEA on the `Person` class to find these commands.","lastModifiedDate":"2023-09-12"},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":286,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":288,"author":{"gitId":"-"},"content":"Refer to [this commit](https://github.com/se-edu/addressbook-level3/commit/ce998c37e65b92d35c91d28c7822cd139c2c0a5c) and check that you have got everything in order!","lastModifiedDate":"2020-07-29"},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":290,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":291,"author":{"gitId":"-"},"content":"## Updating Storage","lastModifiedDate":"2020-07-29"},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":293,"author":{"gitId":"-"},"content":"AddressBook stores data by serializing `JsonAdaptedPerson` into `json` with the help of an external library — Jackson. Let’s update `JsonAdaptedPerson` to work with our new `Person`!","lastModifiedDate":"2020-07-29"},{"lineNumber":294,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":295,"author":{"gitId":"-"},"content":"While the changes to code may be minimal, the test data will have to be updated as well.","lastModifiedDate":"2020-07-29"},{"lineNumber":296,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":297,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"warning\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":298,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":299,"author":{"gitId":"drustanyjt"},"content":"You must delete AddressBook’s storage file located at `/data/clinicmate.json` before running it! Not doing so will cause AddressBook to default to an empty address book!","lastModifiedDate":"2024-03-18"},{"lineNumber":300,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":301,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":302,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":303,"author":{"gitId":"-"},"content":"Check out [this commit](https://github.com/se-edu/addressbook-level3/commit/556cbd0e03ff224d7a68afba171ad2eb0ce56bbf)","lastModifiedDate":"2020-07-29"},{"lineNumber":304,"author":{"gitId":"-"},"content":"to see what the changes entail.","lastModifiedDate":"2020-07-29"},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":306,"author":{"gitId":"-"},"content":"## Finalizing the UI","lastModifiedDate":"2020-07-29"},{"lineNumber":307,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":308,"author":{"gitId":"-"},"content":"Now that we have finalized the `Person` class and its dependencies, we can now bind the `Remark` field to the UI.","lastModifiedDate":"2020-07-29"},{"lineNumber":309,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":310,"author":{"gitId":"-"},"content":"Just add [this one line of code!](https://github.com/se-edu/addressbook-level3/commit/5b98fee11b6b3f5749b6b943c4f3bd3aa049b692)","lastModifiedDate":"2020-07-29"},{"lineNumber":311,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":312,"author":{"gitId":"-"},"content":"**`PersonCard.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":313,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":314,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":315,"author":{"gitId":"-"},"content":"public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2020-07-29"},{"lineNumber":316,"author":{"gitId":"-"},"content":" //...","lastModifiedDate":"2020-07-29"},{"lineNumber":317,"author":{"gitId":"-"},"content":" remark.setText(person.getRemark().value);","lastModifiedDate":"2020-07-29"},{"lineNumber":318,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":319,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":320,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":321,"author":{"gitId":"-"},"content":"![The remark label is bound properly!](../images/add-remark/RemarkBound.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":322,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":323,"author":{"gitId":"-"},"content":"## Putting everything together","lastModifiedDate":"2020-07-29"},{"lineNumber":324,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":325,"author":{"gitId":"-"},"content":"After the previous step, we notice a peculiar regression — we went from displaying something to nothing at all. However, this is expected behavior as we are yet to update the `RemarkCommand` to make use of the code we\u0027ve been adding in the last few steps.","lastModifiedDate":"2020-07-29"},{"lineNumber":326,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":327,"author":{"gitId":"-"},"content":"### Update `RemarkCommand` and `RemarkCommandParser`","lastModifiedDate":"2020-07-29"},{"lineNumber":328,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":329,"author":{"gitId":"-"},"content":"In this last step, we modify `RemarkCommand#execute()` to change the `Remark` of a `Person`. Since all fields in a `Person` are immutable, we create a new instance of a `Person` with the values that we want and","lastModifiedDate":"2020-07-29"},{"lineNumber":330,"author":{"gitId":"-"},"content":"save it with `Model#setPerson()`.","lastModifiedDate":"2020-07-29"},{"lineNumber":331,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":332,"author":{"gitId":"-"},"content":"**`RemarkCommand.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":333,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":334,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":335,"author":{"gitId":"-"},"content":"//...","lastModifiedDate":"2020-07-29"},{"lineNumber":336,"author":{"gitId":"-"},"content":" public static final String MESSAGE_ADD_REMARK_SUCCESS \u003d \"Added remark to Person: %1$s\";","lastModifiedDate":"2020-07-29"},{"lineNumber":337,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DELETE_REMARK_SUCCESS \u003d \"Removed remark from Person: %1$s\";","lastModifiedDate":"2020-07-29"},{"lineNumber":338,"author":{"gitId":"-"},"content":"//...","lastModifiedDate":"2020-07-29"},{"lineNumber":339,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":340,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2020-07-29"},{"lineNumber":341,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2020-07-29"},{"lineNumber":342,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":343,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2020-07-29"},{"lineNumber":344,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2020-07-29"},{"lineNumber":345,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":346,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":347,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2020-07-29"},{"lineNumber":348,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new Person(","lastModifiedDate":"2021-08-01"},{"lineNumber":349,"author":{"gitId":"-"},"content":" personToEdit.getName(), personToEdit.getPhone(), personToEdit.getEmail(),","lastModifiedDate":"2021-08-01"},{"lineNumber":350,"author":{"gitId":"-"},"content":" personToEdit.getAddress(), remark, personToEdit.getTags());","lastModifiedDate":"2020-07-29"},{"lineNumber":351,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":352,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2020-07-29"},{"lineNumber":353,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2020-07-29"},{"lineNumber":354,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":355,"author":{"gitId":"-"},"content":" return new CommandResult(generateSuccessMessage(editedPerson));","lastModifiedDate":"2020-07-29"},{"lineNumber":356,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":357,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":358,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-07-29"},{"lineNumber":359,"author":{"gitId":"-"},"content":" * Generates a command execution success message based on whether","lastModifiedDate":"2021-08-01"},{"lineNumber":360,"author":{"gitId":"-"},"content":" * the remark is added to or removed from","lastModifiedDate":"2021-08-01"},{"lineNumber":361,"author":{"gitId":"-"},"content":" * {@code personToEdit}.","lastModifiedDate":"2020-07-29"},{"lineNumber":362,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":363,"author":{"gitId":"-"},"content":" private String generateSuccessMessage(Person personToEdit) {","lastModifiedDate":"2020-07-29"},{"lineNumber":364,"author":{"gitId":"-"},"content":" String message \u003d !remark.value.isEmpty() ? MESSAGE_ADD_REMARK_SUCCESS : MESSAGE_DELETE_REMARK_SUCCESS;","lastModifiedDate":"2020-07-29"},{"lineNumber":365,"author":{"gitId":"-"},"content":" return String.format(message, personToEdit);","lastModifiedDate":"2020-07-29"},{"lineNumber":366,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":367,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":368,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":369,"author":{"gitId":"-"},"content":"![Congratulations!](../images/add-remark/RemarkComplete.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":370,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":371,"author":{"gitId":"-"},"content":"## Writing tests","lastModifiedDate":"2020-07-29"},{"lineNumber":372,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":373,"author":{"gitId":"-"},"content":"Tests are crucial to ensuring that bugs don’t slip into the codebase unnoticed. This is especially true for large code bases where a change might lead to unintended behavior.","lastModifiedDate":"2020-07-29"},{"lineNumber":374,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":375,"author":{"gitId":"-"},"content":"Let’s verify the correctness of our code by writing some tests!","lastModifiedDate":"2020-07-29"},{"lineNumber":376,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":377,"author":{"gitId":"-"},"content":"Of course you can simply add the test cases manually, like you\u0027ve been doing all along this tutorial. The result would be like the test cases in [here](https://github.com/se-edu/addressbook-level3/commit/fac8f3fd855d55831ca0cc73313b5943d49d4d6e#diff-ff58f7c10338b34f76645df49b71ecb2bafaf7611b20e7ff59ebc98475538a01). Alternatively, you can get the help of IntelliJ to generate the skeletons of the test cases, as explained in the next section.","lastModifiedDate":"2022-01-02"},{"lineNumber":378,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-08-01"},{"lineNumber":379,"author":{"gitId":"-"},"content":"### Automatically generating tests","lastModifiedDate":"2020-07-29"},{"lineNumber":380,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":381,"author":{"gitId":"-"},"content":"The goal is to write effective and efficient tests to ensure that `RemarkCommand#execute()` behaves as expected.","lastModifiedDate":"2020-07-29"},{"lineNumber":382,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":383,"author":{"gitId":"-"},"content":"The convention for test names is `methodName_testScenario_expectedResult`. An example would be","lastModifiedDate":"2020-07-29"},{"lineNumber":384,"author":{"gitId":"-"},"content":"`execute_filteredList_success`.","lastModifiedDate":"2020-07-29"},{"lineNumber":385,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":386,"author":{"gitId":"-"},"content":"Let’s create a test for `RemarkCommand#execute()` to test that adding a remark works. On `IntelliJ IDEA` you can bring up the context menu and choose to `Go To` \\\u003e `Test` or use the appropriate keyboard shortcut.","lastModifiedDate":"2020-07-29"},{"lineNumber":387,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":388,"author":{"gitId":"-"},"content":"![Using the context menu to jump to tests](../images/add-remark/ContextMenu.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":389,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":390,"author":{"gitId":"-"},"content":"Then, create a test for the `execute` method.","lastModifiedDate":"2020-07-29"},{"lineNumber":391,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":392,"author":{"gitId":"-"},"content":"![Creating a test for `execute`.](../images/add-remark/CreateTest.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":393,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":394,"author":{"gitId":"-"},"content":"Following convention, let’s change the name of the generated method to `execute_addRemarkUnfilteredList_success`.","lastModifiedDate":"2020-07-29"},{"lineNumber":395,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":396,"author":{"gitId":"-"},"content":"Let’s use the utility functions provided in `CommandTestUtil`. The functions ensure that commands produce the expected `CommandResult` and output the correct message. In this case, `CommandTestUtil#assertCommandSuccess` is the best fit as we are testing that a `RemarkCommand` will successfully add a `Remark`.","lastModifiedDate":"2020-07-29"},{"lineNumber":397,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":398,"author":{"gitId":"-"},"content":"You should end up with a test that looks something like [this](https://github.com/se-edu/addressbook-level3/commit/fac8f3fd855d55831ca0cc73313b5943d49d4d6e#diff-ff58f7c10338b34f76645df49b71ecb2bafaf7611b20e7ff59ebc98475538a01R36-R49).","lastModifiedDate":"2022-01-02"},{"lineNumber":399,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":400,"author":{"gitId":"-"},"content":"## Conclusion","lastModifiedDate":"2020-07-29"},{"lineNumber":401,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":402,"author":{"gitId":"-"},"content":"This concludes the tutorial for adding a new `Command` to AddressBook.","lastModifiedDate":"2020-07-29"}],"authorContributionMap":{"drustanyjt":1,"-":401}},{"path":"src/main/java/seedu/address/logic/Messages.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2023-07-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-07-14"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-07-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2023-07-14"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Container for user visible messages.","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class Messages {","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2016-09-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_PERSON_DISPLAYED_INDEX \u003d \"The person index provided is invalid\";","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"tengcharmaine"},"content":" public static final String MESSAGE_INVALID_PERSON \u003d \"The ic number provided is invalid\";","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String MESSAGE_PERSONS_LISTED_OVERVIEW \u003d \"%1$d persons listed!\";","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2023-07-14"},{"lineNumber":22,"author":{"gitId":"jiahui0309"},"content":" public static final String MESSAGE_NO_MATCHING_IC \u003d \"There is nobody with the IC you specified.\";","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-07-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2023-07-14"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2023-07-14"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":31,"author":{"gitId":"-"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-07-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Formats the {@code person} for display to the user.","lastModifiedDate":"2019-02-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static String format(Person person) {","lastModifiedDate":"2019-02-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" builder.append(person.getName())","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" .append(\"; Phone: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" .append(person.getPhone())","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" .append(\"; Address: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" .append(person.getAddress())","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"drustanyjt"},"content":" .append(\"; Email: \")","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"drustanyjt"},"content":" .append(person.getEmail())","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"drustanyjt"},"content":" .append(\"; Identity Card Number: \")","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"drustanyjt"},"content":" .append(person.getIdentityCardNumber())","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"drustanyjt"},"content":" .append(\"; Age: \")","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"drustanyjt"},"content":" .append(person.getAge())","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"drustanyjt"},"content":" .append(\"; Sex: \")","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"drustanyjt"},"content":" .append(person.getSex())","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"drustanyjt"},"content":" .append(\"; Note: \")","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"drustanyjt"},"content":" .append(person.getNote())","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"-"},"content":" .append(\"; Tags: \");","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" person.getTags().forEach(builder::append);","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"drustanyjt":10,"tengcharmaine":1,"-":49,"jiahui0309":1}},{"path":"src/main/java/seedu/address/logic/commands/AddCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_AGE;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_IC_NUMBER;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SEX;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-01-18"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"add\";","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a person to the address book. \"","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2017-06-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2017-06-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2017-05-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2017-05-09"},{"lineNumber":31,"author":{"gitId":"Jayne1010"},"content":" + PREFIX_IC_NUMBER + \"IC_NUMBER \"","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"Jayne1010"},"content":" + PREFIX_AGE + \"AGE \"","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"Jayne1010"},"content":" + PREFIX_SEX + \"SEX \"","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"Jayne1010"},"content":" + PREFIX_ADDRESS + \" \"","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06"},{"lineNumber":37,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2017-06-06"},{"lineNumber":38,"author":{"gitId":"Jayne1010"},"content":" + PREFIX_PHONE + \"12345678 \"","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"Jayne1010"},"content":" + PREFIX_EMAIL + \"JohnDoe@mail.com \"","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"Jayne1010"},"content":" + PREFIX_IC_NUMBER + \"T0123456A \"","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"Jayne1010"},"content":" + PREFIX_AGE + \"12 \"","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"Jayne1010"},"content":" + PREFIX_SEX + \"M \"","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"Jayne1010"},"content":" + PREFIX_ADDRESS + \"311, Clementi Ave 2, #02-25 \";","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New person added: %1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book\";","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" private final Person toAdd;","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2018-01-10"},{"lineNumber":52,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public AddCommand(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":54,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":55,"author":{"gitId":"-"},"content":" toAdd \u003d person;","lastModifiedDate":"2018-01-10"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":60,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":62,"author":{"gitId":"-"},"content":" if (model.hasPerson(toAdd)) {","lastModifiedDate":"2018-08-07"},{"lineNumber":63,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":66,"author":{"gitId":"-"},"content":" model.addPerson(toAdd);","lastModifiedDate":"2016-09-25"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2019-02-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-22"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22"},{"lineNumber":72,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" if (!(other instanceof AddCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" AddCommand otherAddCommand \u003d (AddCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2023-07-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"Jayne1010":13,"-":78}},{"path":"src/main/java/seedu/address/logic/commands/AddNoteCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"tengcharmaine"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"tengcharmaine"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"tengcharmaine"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_IC;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"tengcharmaine"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NOTE;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"tengcharmaine"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"tengcharmaine"},"content":"import java.util.List;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.model.person.IdentityCardNumberMatchesPredicate;","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.model.person.Note;","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"tengcharmaine"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"tengcharmaine"},"content":" * Changes the note of an existing person in the address book.","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"tengcharmaine"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"tengcharmaine"},"content":"public class AddNoteCommand extends Command {","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"tengcharmaine"},"content":" public static final String COMMAND_WORD \u003d \"addnote\";","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"tengcharmaine"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the note of the person whose profile matches \"","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"tengcharmaine"},"content":" + \"the specified IC (case-insensitive). \"","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"tengcharmaine"},"content":" + \"Existing remark will be appended by default. \"","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"tengcharmaine"},"content":" + \"To replace the original note, add -replace at the end of your command. \"","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"tengcharmaine"},"content":" + \"E.g. addnote i/S0123456Q n/Diabetes -replace\\n\"","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"tengcharmaine"},"content":" + \"Parameters: \"","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"tengcharmaine"},"content":" + PREFIX_IC + \"IC \"","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"tengcharmaine"},"content":" + PREFIX_NOTE + \"NOTE \\n\"","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"tengcharmaine"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"tengcharmaine"},"content":" + PREFIX_IC + \"S0123456Q \"","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"tengcharmaine"},"content":" + PREFIX_NOTE + \"Diabetes\";","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"tengcharmaine"},"content":" public static final String MESSAGE_MODIFY_NOTE_SUCCESS \u003d \"Note for %1$s (ic: %2$s) modified successfully!\";","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"tengcharmaine"},"content":" private final IdentityCardNumberMatchesPredicate icPredicate;","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"tengcharmaine"},"content":" private final Note note;","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"tengcharmaine"},"content":" private final boolean isReplace;","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"tengcharmaine"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"tengcharmaine"},"content":" * @param icPredicate of the person in the filtered person list to edit the note","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"tengcharmaine"},"content":" * @param note of the person to be updated to","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"tengcharmaine"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"tengcharmaine"},"content":" public AddNoteCommand(IdentityCardNumberMatchesPredicate icPredicate, Note note, boolean isReplace) {","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"tengcharmaine"},"content":" requireAllNonNull(icPredicate, note);","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"tengcharmaine"},"content":" this.icPredicate \u003d icPredicate;","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"tengcharmaine"},"content":" this.note \u003d note;","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"tengcharmaine"},"content":" this.isReplace \u003d isReplace;","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"tengcharmaine"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"tengcharmaine"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"tengcharmaine"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"tengcharmaine"},"content":" model.updateFilteredPersonList(icPredicate);","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"tengcharmaine"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"tengcharmaine"},"content":" if (lastShownList.isEmpty()) {","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"tengcharmaine"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON);","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"tengcharmaine"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"tengcharmaine"},"content":" Person personToEdit \u003d lastShownList.get(0);","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"tengcharmaine"},"content":" Person editedPerson;","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"tengcharmaine"},"content":" if (isReplace || personToEdit.getNote().equals(Note.DEFAULT)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"tengcharmaine"},"content":" editedPerson \u003d new Person(personToEdit.getName(), personToEdit.getPhone(), personToEdit.getEmail(),","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"tengcharmaine"},"content":" personToEdit.getIdentityCardNumber(), personToEdit.getAge(), personToEdit.getSex(),","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"tengcharmaine"},"content":" personToEdit.getAddress(), note, personToEdit.getTags());","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"tengcharmaine"},"content":" } else {","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"tengcharmaine"},"content":" Note updatedNote \u003d personToEdit.getNote().append(\"\\n\" + note.toString());","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"tengcharmaine"},"content":" editedPerson \u003d new Person(personToEdit.getName(), personToEdit.getPhone(), personToEdit.getEmail(),","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"tengcharmaine"},"content":" personToEdit.getIdentityCardNumber(), personToEdit.getAge(), personToEdit.getSex(),","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"tengcharmaine"},"content":" personToEdit.getAddress(), updatedNote, personToEdit.getTags());","lastModifiedDate":"2024-03-16"},{"lineNumber":75,"author":{"gitId":"tengcharmaine"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"tengcharmaine"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2024-03-16"},{"lineNumber":77,"author":{"gitId":"tengcharmaine"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-16"},{"lineNumber":78,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":79,"author":{"gitId":"tengcharmaine"},"content":" return new CommandResult(generateSuccessMessage(editedPerson));","lastModifiedDate":"2024-03-16"},{"lineNumber":80,"author":{"gitId":"tengcharmaine"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":81,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":82,"author":{"gitId":"tengcharmaine"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":83,"author":{"gitId":"tengcharmaine"},"content":" * Generates a command execution success message based on whether the remark is added to or removed from","lastModifiedDate":"2024-03-16"},{"lineNumber":84,"author":{"gitId":"tengcharmaine"},"content":" * {@code personToEdit}.","lastModifiedDate":"2024-03-16"},{"lineNumber":85,"author":{"gitId":"tengcharmaine"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":86,"author":{"gitId":"tengcharmaine"},"content":" public String generateSuccessMessage(Person personToEdit) {","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"tengcharmaine"},"content":" return String.format(MESSAGE_MODIFY_NOTE_SUCCESS, personToEdit.getName(),","lastModifiedDate":"2024-03-18"},{"lineNumber":88,"author":{"gitId":"tengcharmaine"},"content":" personToEdit.getIdentityCardNumber());","lastModifiedDate":"2024-03-18"},{"lineNumber":89,"author":{"gitId":"tengcharmaine"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":90,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":91,"author":{"gitId":"tengcharmaine"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":92,"author":{"gitId":"tengcharmaine"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-16"},{"lineNumber":93,"author":{"gitId":"tengcharmaine"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-16"},{"lineNumber":94,"author":{"gitId":"tengcharmaine"},"content":" return true;","lastModifiedDate":"2024-03-16"},{"lineNumber":95,"author":{"gitId":"tengcharmaine"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":96,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":97,"author":{"gitId":"tengcharmaine"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-16"},{"lineNumber":98,"author":{"gitId":"tengcharmaine"},"content":" if (!(other instanceof AddNoteCommand)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":99,"author":{"gitId":"tengcharmaine"},"content":" return false;","lastModifiedDate":"2024-03-16"},{"lineNumber":100,"author":{"gitId":"tengcharmaine"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":101,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":102,"author":{"gitId":"tengcharmaine"},"content":" AddNoteCommand e \u003d (AddNoteCommand) other;","lastModifiedDate":"2024-03-16"},{"lineNumber":103,"author":{"gitId":"tengcharmaine"},"content":" return icPredicate.equals(e.icPredicate)","lastModifiedDate":"2024-03-17"},{"lineNumber":104,"author":{"gitId":"tengcharmaine"},"content":" \u0026\u0026 note.equals(e.note)","lastModifiedDate":"2024-03-17"},{"lineNumber":105,"author":{"gitId":"tengcharmaine"},"content":" \u0026\u0026 isReplace \u003d\u003d e.isReplace;","lastModifiedDate":"2024-03-17"},{"lineNumber":106,"author":{"gitId":"tengcharmaine"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":107,"author":{"gitId":"tengcharmaine"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"tengcharmaine":107}},{"path":"src/main/java/seedu/address/logic/commands/DeleteCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-09-01"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":11,"author":{"gitId":"jiahui0309"},"content":"import seedu.address.model.person.IdentityCardNumberMatchesPredicate;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"jiahui0309"},"content":" * Deletes a person identified using it\u0027s displayed identity card number from the address book.","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"delete\";","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"jiahui0309"},"content":" + \": Deletes the person identified by the identity card number used in the displayed person list.\\n\"","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"jiahui0309"},"content":" + \"Parameters: IC (must be a valid identity card number)\\n\"","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"jiahui0309"},"content":" + \"Example: \" + COMMAND_WORD + \" S1234567A\";","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DELETE_PERSON_SUCCESS \u003d \"Deleted Person: %1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"jiahui0309"},"content":" private final IdentityCardNumberMatchesPredicate predicate;","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"jiahui0309"},"content":" public DeleteCommand(IdentityCardNumberMatchesPredicate predicate) {","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"jiahui0309"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":37,"author":{"gitId":"jiahui0309"},"content":" List\u003cPerson\u003e allPatients \u003d model.getAddressBook().getPersonList();","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":39,"author":{"gitId":"jiahui0309"},"content":" Person personToDelete \u003d allPatients.stream()","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"jiahui0309"},"content":" .filter(predicate::test)","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"jiahui0309"},"content":" .findFirst()","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"jiahui0309"},"content":" .orElseThrow(() -\u003e new CommandException(Messages.MESSAGE_NO_MATCHING_IC));","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":44,"author":{"gitId":"-"},"content":" model.deletePerson(personToDelete);","lastModifiedDate":"2016-09-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_PERSON_SUCCESS, Messages.format(personToDelete)));","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" if (!(other instanceof DeleteCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" DeleteCommand otherDeleteCommand \u003d (DeleteCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":60,"author":{"gitId":"jiahui0309"},"content":" return predicate.equals(otherDeleteCommand.predicate);","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":66,"author":{"gitId":"jiahui0309"},"content":" .add(\"predicate\", predicate)","lastModifiedDate":"2024-03-16"},{"lineNumber":67,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"-":54,"jiahui0309":15}},{"path":"src/main/java/seedu/address/logic/commands/EditCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-12-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09"},{"lineNumber":5,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_AGE;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09"},{"lineNumber":7,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_IC_NUMBER;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09"},{"lineNumber":10,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SEX;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-01-11"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-01-11"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2016-12-26"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"Jayne1010"},"content":"import seedu.address.model.person.Age;","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"Jayne1010"},"content":"import seedu.address.model.person.IdentityCardNumber;","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"Jayne1010"},"content":"import seedu.address.model.person.IdentityCardNumberMatchesPredicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"Jayne1010"},"content":"import seedu.address.model.person.Sex;","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":36,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Edits the details of an existing person in the address book.","lastModifiedDate":"2016-12-26"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":39,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2016-12-26"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the person identified \"","lastModifiedDate":"2016-12-26"},{"lineNumber":44,"author":{"gitId":"-"},"content":" + \"by the index number used in the displayed person list. \"","lastModifiedDate":"2018-04-01"},{"lineNumber":45,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26"},{"lineNumber":46,"author":{"gitId":"Jayne1010"},"content":" + \"Parameters: IC (National Registration Identity Card) \"","lastModifiedDate":"2024-03-22"},{"lineNumber":47,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06"},{"lineNumber":48,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":50,"author":{"gitId":"Jayne1010"},"content":" + \"[\" + PREFIX_IC_NUMBER + \"IC] \"","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"Jayne1010"},"content":" + \"[\" + PREFIX_AGE + \"AGE] \"","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"Jayne1010"},"content":" + \"[\" + PREFIX_SEX + \"SEX] \"","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":54,"author":{"gitId":"Jayne1010"},"content":" + \"Example: \" + COMMAND_WORD + \" T0123456A \"","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"91234567 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":56,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2017-05-09"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Person: %1$s\";","lastModifiedDate":"2016-12-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2016-12-26"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book.\";","lastModifiedDate":"2016-12-26"},{"lineNumber":61,"author":{"gitId":"-"},"content":" private final EditPersonDescriptor editPersonDescriptor;","lastModifiedDate":"2016-12-26"},{"lineNumber":62,"author":{"gitId":"Jayne1010"},"content":" private final IdentityCardNumberMatchesPredicate predicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":65,"author":{"gitId":"Jayne1010"},"content":" * @param predicate of the person in the filtered person list to edit","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":" * @param editPersonDescriptor details to edit the person with","lastModifiedDate":"2016-12-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":68,"author":{"gitId":"Jayne1010"},"content":" public EditCommand(IdentityCardNumberMatchesPredicate predicate, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"Jayne1010"},"content":" requireNonNull(predicate);","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2017-05-15"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":72,"author":{"gitId":"Jayne1010"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"-"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2016-12-26"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":78,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":79,"author":{"gitId":"Jayne1010"},"content":" List\u003cPerson\u003e allPatients \u003d model.getAddressBook().getPersonList();","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":81,"author":{"gitId":"Jayne1010"},"content":" Person personToEdit \u003d allPatients.stream()","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"Jayne1010"},"content":" .filter(predicate::test)","lastModifiedDate":"2024-03-21"},{"lineNumber":83,"author":{"gitId":"Jayne1010"},"content":" .findFirst()","lastModifiedDate":"2024-03-21"},{"lineNumber":84,"author":{"gitId":"Jayne1010"},"content":" .orElseThrow(() -\u003e new CommandException(Messages.MESSAGE_NO_MATCHING_IC));","lastModifiedDate":"2024-03-21"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2018-04-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":88,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2018-08-07"},{"lineNumber":89,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":92,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":93,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":94,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson)));","lastModifiedDate":"2019-02-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":97,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2016-12-26"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2016-12-26"},{"lineNumber":100,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":101,"author":{"gitId":"-"},"content":" private static Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2018-01-10"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2016-12-26"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":104,"author":{"gitId":"-"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(personToEdit.getName());","lastModifiedDate":"2017-06-21"},{"lineNumber":105,"author":{"gitId":"-"},"content":" Phone updatedPhone \u003d editPersonDescriptor.getPhone().orElse(personToEdit.getPhone());","lastModifiedDate":"2017-06-21"},{"lineNumber":106,"author":{"gitId":"-"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2017-06-21"},{"lineNumber":107,"author":{"gitId":"Jayne1010"},"content":" IdentityCardNumber updatedIC \u003d editPersonDescriptor.getIC().orElse(personToEdit.getIdentityCardNumber());","lastModifiedDate":"2024-03-21"},{"lineNumber":108,"author":{"gitId":"Jayne1010"},"content":" Age updatedAge \u003d editPersonDescriptor.getAge().orElse(personToEdit.getAge());","lastModifiedDate":"2024-03-21"},{"lineNumber":109,"author":{"gitId":"Jayne1010"},"content":" Sex updatedSex \u003d editPersonDescriptor.getSex().orElse(personToEdit.getSex());","lastModifiedDate":"2024-03-21"},{"lineNumber":110,"author":{"gitId":"-"},"content":" Address updatedAddress \u003d editPersonDescriptor.getAddress().orElse(personToEdit.getAddress());","lastModifiedDate":"2017-06-21"},{"lineNumber":111,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e updatedTags \u003d editPersonDescriptor.getTags().orElse(personToEdit.getTags());","lastModifiedDate":"2017-06-21"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":113,"author":{"gitId":"drustanyjt"},"content":" // Use the same person for existing fields, but copies the object for every thing else","lastModifiedDate":"2024-03-16"},{"lineNumber":114,"author":{"gitId":"drustanyjt"},"content":" // TODO: change this when the command is updated","lastModifiedDate":"2024-03-16"},{"lineNumber":115,"author":{"gitId":"Jayne1010"},"content":" return new Person(updatedName, updatedPhone, updatedEmail, updatedIC,","lastModifiedDate":"2024-03-21"},{"lineNumber":116,"author":{"gitId":"Jayne1010"},"content":" updatedAge, updatedSex, updatedAddress, personToEdit.getNote(), updatedTags);","lastModifiedDate":"2024-03-21"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":119,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08"},{"lineNumber":121,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":125,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":131,"author":{"gitId":"Jayne1010"},"content":" return predicate.equals(otherEditCommand.predicate)","lastModifiedDate":"2024-03-21"},{"lineNumber":132,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":138,"author":{"gitId":"Jayne1010"},"content":" .add(\"predicate\", predicate)","lastModifiedDate":"2024-03-21"},{"lineNumber":139,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":144,"author":{"gitId":"-"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2016-12-26"},{"lineNumber":145,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26"},{"lineNumber":146,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":147,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26"},{"lineNumber":148,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21"},{"lineNumber":149,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":150,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21"},{"lineNumber":151,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-06-21"},{"lineNumber":152,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21"},{"lineNumber":153,"author":{"gitId":"Jayne1010"},"content":" private IdentityCardNumber ic;","lastModifiedDate":"2024-03-21"},{"lineNumber":154,"author":{"gitId":"Jayne1010"},"content":" private Age age;","lastModifiedDate":"2024-03-21"},{"lineNumber":155,"author":{"gitId":"Jayne1010"},"content":" private Sex sex;","lastModifiedDate":"2024-03-21"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":157,"author":{"gitId":"-"},"content":" public EditPersonDescriptor() {}","lastModifiedDate":"2016-12-26"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":159,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":160,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11"},{"lineNumber":161,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":162,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26"},{"lineNumber":163,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15"},{"lineNumber":164,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15"},{"lineNumber":165,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15"},{"lineNumber":166,"author":{"gitId":"Jayne1010"},"content":" setIC(toCopy.ic);","lastModifiedDate":"2024-03-21"},{"lineNumber":167,"author":{"gitId":"Jayne1010"},"content":" setAge(toCopy.age);","lastModifiedDate":"2024-03-21"},{"lineNumber":168,"author":{"gitId":"Jayne1010"},"content":" setSex(toCopy.sex);","lastModifiedDate":"2024-03-21"},{"lineNumber":169,"author":{"gitId":"-"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2018-01-15"},{"lineNumber":170,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11"},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":173,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":174,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26"},{"lineNumber":175,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":176,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26"},{"lineNumber":177,"author":{"gitId":"Jayne1010"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, ic, sex, age, address, tags);","lastModifiedDate":"2024-03-21"},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":180,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21"},{"lineNumber":181,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21"},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":184,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26"},{"lineNumber":185,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21"},{"lineNumber":186,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":188,"author":{"gitId":"-"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2017-06-21"},{"lineNumber":189,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":190,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":192,"author":{"gitId":"-"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26"},{"lineNumber":193,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2017-06-21"},{"lineNumber":194,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":196,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2017-06-21"},{"lineNumber":197,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-06-21"},{"lineNumber":198,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":200,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26"},{"lineNumber":201,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21"},{"lineNumber":202,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":204,"author":{"gitId":"-"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2017-06-21"},{"lineNumber":205,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-06-21"},{"lineNumber":206,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":208,"author":{"gitId":"-"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2016-12-26"},{"lineNumber":209,"author":{"gitId":"-"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2017-06-21"},{"lineNumber":210,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":211,"author":{"gitId":"Jayne1010"},"content":" public void setIC(IdentityCardNumber ic) {","lastModifiedDate":"2024-03-21"},{"lineNumber":212,"author":{"gitId":"Jayne1010"},"content":" this.ic \u003d ic;","lastModifiedDate":"2024-03-21"},{"lineNumber":213,"author":{"gitId":"Jayne1010"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":214,"author":{"gitId":"Jayne1010"},"content":" public Optional\u003cIdentityCardNumber\u003e getIC() {","lastModifiedDate":"2024-03-21"},{"lineNumber":215,"author":{"gitId":"Jayne1010"},"content":" return Optional.ofNullable(ic);","lastModifiedDate":"2024-03-21"},{"lineNumber":216,"author":{"gitId":"Jayne1010"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":217,"author":{"gitId":"Jayne1010"},"content":" public void setAge(Age age) {","lastModifiedDate":"2024-03-21"},{"lineNumber":218,"author":{"gitId":"Jayne1010"},"content":" this.age \u003d age;","lastModifiedDate":"2024-03-21"},{"lineNumber":219,"author":{"gitId":"Jayne1010"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":220,"author":{"gitId":"Jayne1010"},"content":" public Optional\u003cAge\u003e getAge() {","lastModifiedDate":"2024-03-21"},{"lineNumber":221,"author":{"gitId":"Jayne1010"},"content":" return Optional.ofNullable(age);","lastModifiedDate":"2024-03-21"},{"lineNumber":222,"author":{"gitId":"Jayne1010"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":223,"author":{"gitId":"Jayne1010"},"content":" public void setSex(Sex sex) {","lastModifiedDate":"2024-03-21"},{"lineNumber":224,"author":{"gitId":"Jayne1010"},"content":" this.sex \u003d sex;","lastModifiedDate":"2024-03-21"},{"lineNumber":225,"author":{"gitId":"Jayne1010"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":226,"author":{"gitId":"Jayne1010"},"content":" public Optional\u003cSex\u003e getSex() {","lastModifiedDate":"2024-03-21"},{"lineNumber":227,"author":{"gitId":"Jayne1010"},"content":" return Optional.ofNullable(sex);","lastModifiedDate":"2024-03-21"},{"lineNumber":228,"author":{"gitId":"Jayne1010"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":230,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":231,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2018-01-11"},{"lineNumber":232,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":233,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":234,"author":{"gitId":"-"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-06-21"},{"lineNumber":235,"author":{"gitId":"-"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2018-01-11"},{"lineNumber":236,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":237,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":238,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":239,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11"},{"lineNumber":240,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11"},{"lineNumber":241,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11"},{"lineNumber":242,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":243,"author":{"gitId":"-"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":244,"author":{"gitId":"-"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2018-01-11"},{"lineNumber":245,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":247,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05"},{"lineNumber":248,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05"},{"lineNumber":249,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05"},{"lineNumber":250,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05"},{"lineNumber":251,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":252,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":253,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05"},{"lineNumber":254,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05"},{"lineNumber":255,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05"},{"lineNumber":256,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":258,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":259,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":260,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":261,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":262,"author":{"gitId":"Jayne1010"},"content":" \u0026\u0026 Objects.equals(ic, otherEditPersonDescriptor.ic)","lastModifiedDate":"2024-03-21"},{"lineNumber":263,"author":{"gitId":"Jayne1010"},"content":" \u0026\u0026 Objects.equals(age, otherEditPersonDescriptor.age)","lastModifiedDate":"2024-03-21"},{"lineNumber":264,"author":{"gitId":"Jayne1010"},"content":" \u0026\u0026 Objects.equals(sex, otherEditPersonDescriptor.sex)","lastModifiedDate":"2024-03-21"},{"lineNumber":265,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(address, otherEditPersonDescriptor.address)","lastModifiedDate":"2023-07-13"},{"lineNumber":266,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(tags, otherEditPersonDescriptor.tags);","lastModifiedDate":"2023-07-13"},{"lineNumber":267,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":268,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":269,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":270,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":271,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":272,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":273,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":274,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":275,"author":{"gitId":"Jayne1010"},"content":" .add(\"ic\", ic)","lastModifiedDate":"2024-03-21"},{"lineNumber":276,"author":{"gitId":"Jayne1010"},"content":" .add(\"age\", age)","lastModifiedDate":"2024-03-21"},{"lineNumber":277,"author":{"gitId":"Jayne1010"},"content":" .add(\"sex\", sex)","lastModifiedDate":"2024-03-21"},{"lineNumber":278,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":279,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":280,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":281,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":282,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":283,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26"}],"authorContributionMap":{"Jayne1010":60,"drustanyjt":2,"-":221}},{"path":"src/main/java/seedu/address/logic/commands/FindCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":8,"author":{"gitId":"jiahui0309"},"content":"import seedu.address.model.person.IdentityCardNumberMatchesPredicate;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-22"},{"lineNumber":11,"author":{"gitId":"jiahui0309"},"content":" * Finds and lists all persons in address book whose IC matches the argument IC.","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"jiahui0309"},"content":" * Keyword matching is case-insensitive.","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class FindCommand extends Command {","lastModifiedDate":"2016-09-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"find\";","lastModifiedDate":"2016-09-22"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":18,"author":{"gitId":"jiahui0309"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Finds all persons whose profile matches \"","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"jiahui0309"},"content":" + \"the specified IC (case-insensitive) and displays them.\\n\"","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"jiahui0309"},"content":" + \"Parameters: IC\\n\"","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"jiahui0309"},"content":" + \"Example: \" + COMMAND_WORD + \" t1234567A\";","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":23,"author":{"gitId":"jiahui0309"},"content":" private final IdentityCardNumberMatchesPredicate predicate;","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":25,"author":{"gitId":"jiahui0309"},"content":" public FindCommand(IdentityCardNumberMatchesPredicate predicate) {","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"-"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-22"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(predicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return new CommandResult(","lastModifiedDate":"2018-04-01"},{"lineNumber":34,"author":{"gitId":"-"},"content":" String.format(Messages.MESSAGE_PERSONS_LISTED_OVERVIEW, model.getFilteredPersonList().size()));","lastModifiedDate":"2018-04-01"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" if (!(other instanceof FindCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" FindCommand otherFindCommand \u003d (FindCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" return predicate.equals(otherFindCommand.predicate);","lastModifiedDate":"2023-07-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" .add(\"predicate\", predicate)","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22"}],"authorContributionMap":{"-":49,"jiahui0309":9}},{"path":"src/main/java/seedu/address/logic/parser/AddCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_AGE;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_IC_NUMBER;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SEX;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-17"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-02-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"Jayne1010"},"content":"import seedu.address.model.person.Age;","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"Jayne1010"},"content":"import seedu.address.model.person.IdentityCardNumber;","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"Jayne1010"},"content":"import seedu.address.model.person.Note;","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"Jayne1010"},"content":"import seedu.address.model.person.Sex;","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-17"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":40,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":41,"author":{"gitId":"Jayne1010"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL,","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"Jayne1010"},"content":" PREFIX_IC_NUMBER, PREFIX_AGE, PREFIX_SEX, PREFIX_ADDRESS);","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":44,"author":{"gitId":"Jayne1010"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL,","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"Jayne1010"},"content":" PREFIX_IC_NUMBER, PREFIX_AGE, PREFIX_SEX, PREFIX_ADDRESS)","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":50,"author":{"gitId":"Jayne1010"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL,","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"Jayne1010"},"content":" PREFIX_IC_NUMBER, PREFIX_AGE, PREFIX_SEX, PREFIX_ADDRESS);","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":53,"author":{"gitId":"-"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":54,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":55,"author":{"gitId":"Jayne1010"},"content":" IdentityCardNumber ic \u003d ParserUtil.parseIC(argMultimap.getValue(PREFIX_IC_NUMBER).get());","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"Jayne1010"},"content":" Sex sex \u003d ParserUtil.parseSex(argMultimap.getValue(PREFIX_SEX).get());","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"-"},"content":" Address address \u003d ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":58,"author":{"gitId":"Jayne1010"},"content":" Age age \u003d ParserUtil.parseAge(argMultimap.getValue(PREFIX_AGE).get());","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":61,"author":{"gitId":"drustanyjt"},"content":" // Use the same add person, but create a DEFAULT object for every thing else","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"drustanyjt"},"content":" // TODO: change this when the command is updated","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"Jayne1010"},"content":" Person person \u003d new Person(name, phone, email, ic, age, sex,","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"drustanyjt"},"content":" address, Note.DEFAULT, tagList);","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return new AddCommand(person);","lastModifiedDate":"2017-03-17"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":69,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17"},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17"},{"lineNumber":71,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17"},{"lineNumber":72,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17"},{"lineNumber":73,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17"},{"lineNumber":74,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":77,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05"}],"authorContributionMap":{"Jayne1010":17,"drustanyjt":3,"-":57}},{"path":"src/main/java/seedu/address/logic/parser/AddNoteCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"tengcharmaine"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"tengcharmaine"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"tengcharmaine"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"tengcharmaine"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FLAG;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"tengcharmaine"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_IC;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"tengcharmaine"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NOTE;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"tengcharmaine"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.logic.commands.AddNoteCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.model.person.IdentityCardNumber;","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.model.person.IdentityCardNumberMatchesPredicate;","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.model.person.Note;","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"tengcharmaine"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"tengcharmaine"},"content":" * Parses input arguments and creates a new {@code AddNoteCommand} object","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"tengcharmaine"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"tengcharmaine"},"content":"public class AddNoteCommandParser implements Parser\u003cAddNoteCommand\u003e {","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"tengcharmaine"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"tengcharmaine"},"content":" * Parses the given {@code String} of arguments in the context of the {@code AddNoteCommand}","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"tengcharmaine"},"content":" * and returns a {@code AddNoteCommand} object for execution.","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"tengcharmaine"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"tengcharmaine"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"tengcharmaine"},"content":" public AddNoteCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"tengcharmaine"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"tengcharmaine"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_IC, PREFIX_NOTE, PREFIX_FLAG);","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"tengcharmaine"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_IC, PREFIX_NOTE)","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"tengcharmaine"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"tengcharmaine"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddNoteCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"tengcharmaine"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"tengcharmaine"},"content":" IdentityCardNumber ic;","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"tengcharmaine"},"content":" try {","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"tengcharmaine"},"content":" String note \u003d \"\";","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"tengcharmaine"},"content":" boolean isReplace \u003d false;","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"tengcharmaine"},"content":" if (argMultimap.getValue(PREFIX_FLAG).isPresent()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"tengcharmaine"},"content":" int startIndex \u003d args.indexOf(PREFIX_NOTE.getPrefix()) + PREFIX_NOTE.getPrefix().length();","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"tengcharmaine"},"content":" int endIndex \u003d args.indexOf(PREFIX_FLAG.getPrefix());","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"tengcharmaine"},"content":" note \u003d args.substring(startIndex, endIndex).trim();","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"tengcharmaine"},"content":" isReplace \u003d true;","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"tengcharmaine"},"content":" } else {","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"tengcharmaine"},"content":" note \u003d argMultimap.getValue(PREFIX_NOTE).orElse(\"\");","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"tengcharmaine"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"tengcharmaine"},"content":" ic \u003d ParserUtil.parseIC(argMultimap.getValue(PREFIX_IC).get());","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"tengcharmaine"},"content":" return new AddNoteCommand(new IdentityCardNumberMatchesPredicate(ic), new Note(note), isReplace);","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"tengcharmaine"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"tengcharmaine"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddNoteCommand.MESSAGE_USAGE), ive);","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"tengcharmaine"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"tengcharmaine"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"tengcharmaine"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"tengcharmaine"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"tengcharmaine"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"tengcharmaine"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"tengcharmaine"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"tengcharmaine"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"tengcharmaine"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"tengcharmaine"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"tengcharmaine":64}},{"path":"src/main/java/seedu/address/logic/parser/AddressBookParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-07-29"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-07-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.logic.commands.AddNoteCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":42,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":50,"author":{"gitId":"-"},"content":" // Note to developers: Change the log level in config.json to enable lower level (i.e., FINE, FINER and lower)","lastModifiedDate":"2023-07-29"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":55,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":72,"author":{"gitId":"tengcharmaine"},"content":" case AddNoteCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"tengcharmaine"},"content":" return new AddNoteCommandParser().parse(arguments);","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":75,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return new ListCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":78,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26"},{"lineNumber":82,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":84,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26"},{"lineNumber":85,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29"},{"lineNumber":86,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":90,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"tengcharmaine":4,"-":86}},{"path":"src/main/java/seedu/address/logic/parser/CliSyntax.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11"},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":" /* Prefix definitions */","lastModifiedDate":"2017-02-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"n/\");","lastModifiedDate":"2017-06-06"},{"lineNumber":10,"author":{"gitId":"Jayne1010"},"content":" public static final Prefix PREFIX_IC_NUMBER \u003d new Prefix(\"i/\");","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"Jayne1010"},"content":" public static final Prefix PREFIX_AGE \u003d new Prefix(\"ag/\");","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"Jayne1010"},"content":" public static final Prefix PREFIX_SEX \u003d new Prefix(\"s/\");","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_ADDRESS \u003d new Prefix(\"a/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":14,"author":{"gitId":"Jayne1010"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"e/\");","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"Jayne1010"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"p/\");","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"t/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":17,"author":{"gitId":"tengcharmaine"},"content":" public static final Prefix PREFIX_NOTE \u003d new Prefix(\"n/\");","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"tengcharmaine"},"content":" public static final Prefix PREFIX_IC \u003d new Prefix(\"i/\");","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"tengcharmaine"},"content":" public static final Prefix PREFIX_FLAG \u003d new Prefix(\"-replace\");","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"Jayne1010":5,"tengcharmaine":3,"-":12}},{"path":"src/main/java/seedu/address/logic/parser/DeleteCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-01-26"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":7,"author":{"gitId":"jiahui0309"},"content":"import seedu.address.model.person.IdentityCardNumber;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"jiahui0309"},"content":"import seedu.address.model.person.IdentityCardNumberMatchesPredicate;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new DeleteCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class DeleteCommandParser implements Parser\u003cDeleteCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the DeleteCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * and returns a DeleteCommand object for execution.","lastModifiedDate":"2019-05-11"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public DeleteCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":21,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15"},{"lineNumber":22,"author":{"gitId":"jiahui0309"},"content":" IdentityCardNumber ic \u003d ParserUtil.parseIC(args);","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"jiahui0309"},"content":" return new DeleteCommand(new IdentityCardNumberMatchesPredicate(ic));","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10"},{"lineNumber":25,"author":{"gitId":"-"},"content":" throw new ParseException(","lastModifiedDate":"2017-03-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2018-08-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"-":26,"jiahui0309":4}},{"path":"src/main/java/seedu/address/logic/parser/EditCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_AGE;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_IC_NUMBER;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SEX;","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-01-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-01-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-01-26"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":22,"author":{"gitId":"Jayne1010"},"content":"import seedu.address.model.person.IdentityCardNumber;","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"Jayne1010"},"content":"import seedu.address.model.person.IdentityCardNumberMatchesPredicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":26,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new EditCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class EditCommandParser implements Parser\u003cEditCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the EditCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * and returns an EditCommand object for execution.","lastModifiedDate":"2017-01-26"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public EditCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":37,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2017-05-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":39,"author":{"gitId":"Jayne1010"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_IC_NUMBER,","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"Jayne1010"},"content":" PREFIX_AGE, PREFIX_SEX, PREFIX_ADDRESS);","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"Jayne1010"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"Jayne1010"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"Jayne1010"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"Jayne1010"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":46,"author":{"gitId":"Jayne1010"},"content":" IdentityCardNumber ic \u003d ParserUtil.parseIC(argMultimap.getPreamble());","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":48,"author":{"gitId":"Jayne1010"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_IC_NUMBER,","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"Jayne1010"},"content":" PREFIX_AGE, PREFIX_SEX, PREFIX_ADDRESS);","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":51,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-01-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":53,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":54,"author":{"gitId":"-"},"content":" editPersonDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":56,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":57,"author":{"gitId":"-"},"content":" editPersonDescriptor.setPhone(ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":59,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":60,"author":{"gitId":"-"},"content":" editPersonDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":62,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_ADDRESS).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":63,"author":{"gitId":"-"},"content":" editPersonDescriptor.setAddress(ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":65,"author":{"gitId":"Jayne1010"},"content":" if (argMultimap.getValue(PREFIX_IC_NUMBER).isPresent()) {","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"Jayne1010"},"content":" editPersonDescriptor.setIC(ParserUtil.parseIC(argMultimap.getValue(PREFIX_IC_NUMBER).get()));","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"Jayne1010"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"Jayne1010"},"content":" if (argMultimap.getValue(PREFIX_SEX).isPresent()) {","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"Jayne1010"},"content":" editPersonDescriptor.setSex(ParserUtil.parseSex(argMultimap.getValue(PREFIX_SEX).get()));","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"Jayne1010"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"Jayne1010"},"content":" if (argMultimap.getValue(PREFIX_AGE).isPresent()) {","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"Jayne1010"},"content":" editPersonDescriptor.setAge(ParserUtil.parseAge(argMultimap.getValue(PREFIX_AGE).get()));","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"Jayne1010"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":" parseTagsForEdit(argMultimap.getAllValues(PREFIX_TAG)).ifPresent(editPersonDescriptor::setTags);","lastModifiedDate":"2017-06-21"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":76,"author":{"gitId":"-"},"content":" if (!editPersonDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2017-01-26"},{"lineNumber":77,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-03-11"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":79,"author":{"gitId":"Jayne1010"},"content":" try {","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"Jayne1010"},"content":" return new EditCommand(new IdentityCardNumberMatchesPredicate(ic), editPersonDescriptor);","lastModifiedDate":"2024-03-21"},{"lineNumber":81,"author":{"gitId":"Jayne1010"},"content":" } catch (IllegalArgumentException pe) {","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"Jayne1010"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-21"},{"lineNumber":83,"author":{"gitId":"Jayne1010"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-03-21"},{"lineNumber":84,"author":{"gitId":"Jayne1010"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":87,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e} if {@code tags} is non-empty.","lastModifiedDate":"2017-03-07"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * If {@code tags} contain only one element which is an empty string, it will be parsed into a","lastModifiedDate":"2017-01-26"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * {@code Set\u003cTag\u003e} containing zero tags.","lastModifiedDate":"2017-03-07"},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":92,"author":{"gitId":"-"},"content":" private Optional\u003cSet\u003cTag\u003e\u003e parseTagsForEdit(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assert tags !\u003d null;","lastModifiedDate":"2017-01-26"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":95,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2017-01-26"},{"lineNumber":96,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2017-01-26"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":98,"author":{"gitId":"-"},"content":" Collection\u003cString\u003e tagSet \u003d tags.size() \u003d\u003d 1 \u0026\u0026 tags.contains(\"\") ? Collections.emptySet() : tags;","lastModifiedDate":"2017-01-26"},{"lineNumber":99,"author":{"gitId":"-"},"content":" return Optional.of(ParserUtil.parseTags(tagSet));","lastModifiedDate":"2017-01-26"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":102,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"Jayne1010":29,"-":73}},{"path":"src/main/java/seedu/address/logic/parser/FindCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-26"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":7,"author":{"gitId":"jiahui0309"},"content":"import seedu.address.model.person.IdentityCardNumber;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"jiahui0309"},"content":"import seedu.address.model.person.IdentityCardNumberMatchesPredicate;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new FindCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class FindCommandParser implements Parser\u003cFindCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the FindCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * and returns a FindCommand object for execution.","lastModifiedDate":"2019-05-11"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public FindCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":21,"author":{"gitId":"-"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2017-02-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2017-02-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" throw new ParseException(","lastModifiedDate":"2017-03-11"},{"lineNumber":24,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-01-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":27,"author":{"gitId":"jiahui0309"},"content":" try {","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"jiahui0309"},"content":" IdentityCardNumber ic \u003d ParserUtil.parseIC(trimmedArgs);","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"jiahui0309"},"content":" return new FindCommand(new IdentityCardNumberMatchesPredicate(ic));","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"jiahui0309"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"jiahui0309"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"jiahui0309"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE), e);","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"jiahui0309"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":35,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"-":26,"jiahui0309":9}},{"path":"src/main/java/seedu/address/logic/parser/ParserUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-02-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-02-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-02-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-02-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"Jayne1010"},"content":"import seedu.address.model.person.Age;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"Jayne1010"},"content":"import seedu.address.model.person.IdentityCardNumber;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"Jayne1010"},"content":"import seedu.address.model.person.Sex;","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-02-11"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2017-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":34,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02"},{"lineNumber":36,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":38,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29"},{"lineNumber":44,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":48,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29"},{"lineNumber":49,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29"},{"lineNumber":50,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":51,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":59,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30"},{"lineNumber":64,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":65,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":71,"author":{"gitId":"jiahui0309"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"jiahui0309"},"content":" * Parses a {@code String identityCardNumber} into a {@code IdentityCardNumber}.","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"jiahui0309"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"jiahui0309"},"content":" *","lastModifiedDate":"2024-03-16"},{"lineNumber":75,"author":{"gitId":"jiahui0309"},"content":" * @throws ParseException if the given {@code identityCardNumber} is invalid.","lastModifiedDate":"2024-03-16"},{"lineNumber":76,"author":{"gitId":"jiahui0309"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":77,"author":{"gitId":"jiahui0309"},"content":" public static IdentityCardNumber parseIC(String identityCardNumber) throws ParseException {","lastModifiedDate":"2024-03-16"},{"lineNumber":78,"author":{"gitId":"jiahui0309"},"content":" requireNonNull(identityCardNumber);","lastModifiedDate":"2024-03-16"},{"lineNumber":79,"author":{"gitId":"jiahui0309"},"content":" String trimmedIdentityCardNumber \u003d identityCardNumber.trim();","lastModifiedDate":"2024-03-16"},{"lineNumber":80,"author":{"gitId":"jiahui0309"},"content":" if (!IdentityCardNumber.isValidIdentityCardNumber(trimmedIdentityCardNumber)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":81,"author":{"gitId":"jiahui0309"},"content":" throw new ParseException(IdentityCardNumber.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-16"},{"lineNumber":82,"author":{"gitId":"jiahui0309"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":83,"author":{"gitId":"jiahui0309"},"content":" return new IdentityCardNumber(trimmedIdentityCardNumber);","lastModifiedDate":"2024-03-16"},{"lineNumber":84,"author":{"gitId":"jiahui0309"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":85,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":86,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":89,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":93,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-30"},{"lineNumber":94,"author":{"gitId":"-"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":95,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(trimmedAddress)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":96,"author":{"gitId":"-"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":98,"author":{"gitId":"-"},"content":" return new Address(trimmedAddress);","lastModifiedDate":"2017-05-30"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":101,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":104,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":106,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":108,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30"},{"lineNumber":109,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":110,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":111,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":113,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","lastModifiedDate":"2017-05-30"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":116,"author":{"gitId":"Jayne1010"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":117,"author":{"gitId":"Jayne1010"},"content":" * Parses a {@code String sex} into an {@code Sex}.","lastModifiedDate":"2024-03-17"},{"lineNumber":118,"author":{"gitId":"Jayne1010"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-17"},{"lineNumber":119,"author":{"gitId":"Jayne1010"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":120,"author":{"gitId":"Jayne1010"},"content":" * @throws ParseException if the given {@code sex} is invalid.","lastModifiedDate":"2024-03-17"},{"lineNumber":121,"author":{"gitId":"Jayne1010"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":122,"author":{"gitId":"Jayne1010"},"content":" public static Sex parseSex(String sex) throws ParseException {","lastModifiedDate":"2024-03-17"},{"lineNumber":123,"author":{"gitId":"Jayne1010"},"content":" requireNonNull(sex);","lastModifiedDate":"2024-03-17"},{"lineNumber":124,"author":{"gitId":"Jayne1010"},"content":" String trimmedSex \u003d sex.trim();","lastModifiedDate":"2024-03-17"},{"lineNumber":125,"author":{"gitId":"Jayne1010"},"content":" if (!Sex.isValidSex(trimmedSex)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":126,"author":{"gitId":"Jayne1010"},"content":" throw new ParseException(Sex.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":127,"author":{"gitId":"Jayne1010"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":128,"author":{"gitId":"Jayne1010"},"content":" return new Sex(trimmedSex);","lastModifiedDate":"2024-03-17"},{"lineNumber":129,"author":{"gitId":"Jayne1010"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":130,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":131,"author":{"gitId":"Jayne1010"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":132,"author":{"gitId":"Jayne1010"},"content":" * Parses a {@code String age} into an {@code Age}.","lastModifiedDate":"2024-03-17"},{"lineNumber":133,"author":{"gitId":"Jayne1010"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-17"},{"lineNumber":134,"author":{"gitId":"Jayne1010"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":135,"author":{"gitId":"Jayne1010"},"content":" * @throws ParseException if the given {@code age} is invalid.","lastModifiedDate":"2024-03-17"},{"lineNumber":136,"author":{"gitId":"Jayne1010"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":137,"author":{"gitId":"Jayne1010"},"content":" public static Age parseAge(String age) throws ParseException {","lastModifiedDate":"2024-03-17"},{"lineNumber":138,"author":{"gitId":"Jayne1010"},"content":" requireNonNull(age);","lastModifiedDate":"2024-03-17"},{"lineNumber":139,"author":{"gitId":"Jayne1010"},"content":" String trimmedAge \u003d age.trim();","lastModifiedDate":"2024-03-17"},{"lineNumber":140,"author":{"gitId":"Jayne1010"},"content":" if (!Age.isValidAge(trimmedAge)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":141,"author":{"gitId":"Jayne1010"},"content":" throw new ParseException(Age.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":142,"author":{"gitId":"Jayne1010"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":143,"author":{"gitId":"Jayne1010"},"content":" return new Age(trimmedAge);","lastModifiedDate":"2024-03-17"},{"lineNumber":144,"author":{"gitId":"Jayne1010"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":145,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":146,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":147,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30"},{"lineNumber":148,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":149,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":150,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":151,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":152,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":153,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30"},{"lineNumber":154,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":155,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":156,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":158,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","lastModifiedDate":"2017-05-30"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":161,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":162,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2017-03-07"},{"lineNumber":163,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":164,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":165,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15"},{"lineNumber":166,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11"},{"lineNumber":167,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11"},{"lineNumber":168,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30"},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":170,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07"},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":172,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"Jayne1010":33,"-":124,"jiahui0309":15}},{"path":"src/main/java/seedu/address/model/UserPrefs.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2016-09-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Represents User\u0027s preferences.","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class UserPrefs implements ReadOnlyUserPrefs {","lastModifiedDate":"2018-11-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" private GuiSettings guiSettings \u003d new GuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":17,"author":{"gitId":"drustanyjt"},"content":" private Path addressBookFilePath \u003d Paths.get(\"data\" , \"clinicmate.json\");","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-06"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Creates a {@code UserPrefs} with default values.","lastModifiedDate":"2018-12-06"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-06"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public UserPrefs() {}","lastModifiedDate":"2018-12-06"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Creates a {@code UserPrefs} with the prefs in {@code userPrefs}.","lastModifiedDate":"2018-12-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public UserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":" this();","lastModifiedDate":"2018-12-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":" resetData(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Resets the existing data of this {@code UserPrefs} with {@code newUserPrefs}.","lastModifiedDate":"2018-12-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-06"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public void resetData(ReadOnlyUserPrefs newUserPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":36,"author":{"gitId":"-"},"content":" requireNonNull(newUserPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":37,"author":{"gitId":"-"},"content":" setGuiSettings(newUserPrefs.getGuiSettings());","lastModifiedDate":"2018-12-06"},{"lineNumber":38,"author":{"gitId":"-"},"content":" setAddressBookFilePath(newUserPrefs.getAddressBookFilePath());","lastModifiedDate":"2018-12-06"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-06"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return guiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" this.guiSettings \u003d guiSettings;","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-04-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return addressBookFilePath;","lastModifiedDate":"2017-02-25"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-04-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" this.addressBookFilePath \u003d addressBookFilePath;","lastModifiedDate":"2017-02-25"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-25"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2016-09-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2016-09-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" if (!(other instanceof UserPrefs)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2016-09-24"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":" UserPrefs otherUserPrefs \u003d (UserPrefs) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return guiSettings.equals(otherUserPrefs.guiSettings)","lastModifiedDate":"2023-07-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" \u0026\u0026 addressBookFilePath.equals(otherUserPrefs.addressBookFilePath);","lastModifiedDate":"2023-07-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return Objects.hash(guiSettings, addressBookFilePath);","lastModifiedDate":"2018-08-09"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-09-24"},{"lineNumber":82,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-02-25"},{"lineNumber":83,"author":{"gitId":"-"},"content":" sb.append(\"Gui Settings : \" + guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":" sb.append(\"\\nLocal data file location : \" + addressBookFilePath);","lastModifiedDate":"2017-02-25"},{"lineNumber":85,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-02-25"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"drustanyjt":1,"-":87}},{"path":"src/main/java/seedu/address/model/person/Age.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"drustanyjt"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-15"},{"lineNumber":2,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":3,"author":{"gitId":"drustanyjt"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-15"},{"lineNumber":4,"author":{"gitId":"drustanyjt"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-15"},{"lineNumber":5,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":6,"author":{"gitId":"drustanyjt"},"content":"/**","lastModifiedDate":"2024-03-15"},{"lineNumber":7,"author":{"gitId":"drustanyjt"},"content":" * Represents a Person\u0027s age in the address book.","lastModifiedDate":"2024-03-15"},{"lineNumber":8,"author":{"gitId":"drustanyjt"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidAge(String)}","lastModifiedDate":"2024-03-15"},{"lineNumber":9,"author":{"gitId":"drustanyjt"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":10,"author":{"gitId":"drustanyjt"},"content":"public class Age {","lastModifiedDate":"2024-03-15"},{"lineNumber":11,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":12,"author":{"gitId":"drustanyjt"},"content":" public static final Age DEFAULT \u003d new Age(0);","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"drustanyjt"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-15"},{"lineNumber":14,"author":{"gitId":"drustanyjt"},"content":" \"Age should only contain non-negative numbers, and it should not be blank\";","lastModifiedDate":"2024-03-15"},{"lineNumber":15,"author":{"gitId":"drustanyjt"},"content":" public static final String VALIDATION_REGEX \u003d \"[0-9]+\";","lastModifiedDate":"2024-03-15"},{"lineNumber":16,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":17,"author":{"gitId":"drustanyjt"},"content":" public final Integer value;","lastModifiedDate":"2024-03-15"},{"lineNumber":18,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":19,"author":{"gitId":"drustanyjt"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":20,"author":{"gitId":"drustanyjt"},"content":" * Constructs a {@code Age}.","lastModifiedDate":"2024-03-15"},{"lineNumber":21,"author":{"gitId":"drustanyjt"},"content":" *","lastModifiedDate":"2024-03-15"},{"lineNumber":22,"author":{"gitId":"drustanyjt"},"content":" * @param age A valid age.","lastModifiedDate":"2024-03-15"},{"lineNumber":23,"author":{"gitId":"drustanyjt"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":24,"author":{"gitId":"drustanyjt"},"content":" public Age(String age) {","lastModifiedDate":"2024-03-15"},{"lineNumber":25,"author":{"gitId":"drustanyjt"},"content":" requireNonNull(age);","lastModifiedDate":"2024-03-15"},{"lineNumber":26,"author":{"gitId":"drustanyjt"},"content":" checkArgument(isValidAge(age), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-15"},{"lineNumber":27,"author":{"gitId":"drustanyjt"},"content":" value \u003d Integer.parseInt(age);","lastModifiedDate":"2024-03-15"},{"lineNumber":28,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":29,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":30,"author":{"gitId":"drustanyjt"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"drustanyjt"},"content":" * Constructs a {@code Age}.","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"drustanyjt"},"content":" *","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"drustanyjt"},"content":" * @param age A valid age.","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"drustanyjt"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"drustanyjt"},"content":" public Age(int age) {","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"drustanyjt"},"content":" checkArgument(isValidAge(age), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"drustanyjt"},"content":" value \u003d age;","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"drustanyjt"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":41,"author":{"gitId":"drustanyjt"},"content":" * Returns true if a given string is a valid age.","lastModifiedDate":"2024-03-15"},{"lineNumber":42,"author":{"gitId":"drustanyjt"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":43,"author":{"gitId":"drustanyjt"},"content":" public static boolean isValidAge(String test) {","lastModifiedDate":"2024-03-15"},{"lineNumber":44,"author":{"gitId":"drustanyjt"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-15"},{"lineNumber":45,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":46,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":47,"author":{"gitId":"drustanyjt"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"drustanyjt"},"content":" * Returns true if a given integer is a valid age.","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"drustanyjt"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"drustanyjt"},"content":" public static boolean isValidAge(int test) {","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"drustanyjt"},"content":" return test \u003e\u003d 0;","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"drustanyjt"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":55,"author":{"gitId":"drustanyjt"},"content":" public String toString() {","lastModifiedDate":"2024-03-15"},{"lineNumber":56,"author":{"gitId":"drustanyjt"},"content":" return value.toString();","lastModifiedDate":"2024-03-15"},{"lineNumber":57,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":58,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":59,"author":{"gitId":"drustanyjt"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":60,"author":{"gitId":"drustanyjt"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-15"},{"lineNumber":61,"author":{"gitId":"drustanyjt"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-15"},{"lineNumber":62,"author":{"gitId":"drustanyjt"},"content":" return true;","lastModifiedDate":"2024-03-15"},{"lineNumber":63,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":64,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":65,"author":{"gitId":"drustanyjt"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-15"},{"lineNumber":66,"author":{"gitId":"drustanyjt"},"content":" if (!(other instanceof Age)) {","lastModifiedDate":"2024-03-15"},{"lineNumber":67,"author":{"gitId":"drustanyjt"},"content":" return false;","lastModifiedDate":"2024-03-15"},{"lineNumber":68,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":69,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":70,"author":{"gitId":"drustanyjt"},"content":" Age otherAge \u003d (Age) other;","lastModifiedDate":"2024-03-15"},{"lineNumber":71,"author":{"gitId":"drustanyjt"},"content":" return value.equals(otherAge.value);","lastModifiedDate":"2024-03-15"},{"lineNumber":72,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":73,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":74,"author":{"gitId":"drustanyjt"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":75,"author":{"gitId":"drustanyjt"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-15"},{"lineNumber":76,"author":{"gitId":"drustanyjt"},"content":" return value.hashCode();","lastModifiedDate":"2024-03-15"},{"lineNumber":77,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":78,"author":{"gitId":"drustanyjt"},"content":"}","lastModifiedDate":"2024-03-15"}],"authorContributionMap":{"drustanyjt":78}},{"path":"src/main/java/seedu/address/model/person/IdentityCardNumber.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"drustanyjt"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-15"},{"lineNumber":2,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":3,"author":{"gitId":"drustanyjt"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-15"},{"lineNumber":4,"author":{"gitId":"drustanyjt"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-15"},{"lineNumber":5,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":6,"author":{"gitId":"drustanyjt"},"content":"/**","lastModifiedDate":"2024-03-15"},{"lineNumber":7,"author":{"gitId":"drustanyjt"},"content":" * Represents a Person\u0027s identity card number in the address book.","lastModifiedDate":"2024-03-15"},{"lineNumber":8,"author":{"gitId":"drustanyjt"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidIdentityCardNumber(String)}","lastModifiedDate":"2024-03-15"},{"lineNumber":9,"author":{"gitId":"drustanyjt"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":10,"author":{"gitId":"drustanyjt"},"content":"public class IdentityCardNumber {","lastModifiedDate":"2024-03-15"},{"lineNumber":11,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":12,"author":{"gitId":"drustanyjt"},"content":" public static final IdentityCardNumber DEFAULT \u003d new IdentityCardNumber(\"S0000000A\");","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"drustanyjt"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-15"},{"lineNumber":14,"author":{"gitId":"drustanyjt"},"content":" \"IC number starts with one letter (S,T,F,G,M) followed by seven digits and one letter behind\"","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"drustanyjt"},"content":" + \" It is case insensitive. An example is S1234567A.\";","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"jiahui0309"},"content":" public static final String VALIDATION_REGEX \u003d \"[STFGMstfgm][0-9]{7}[A-Z,a-z]\";","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":19,"author":{"gitId":"drustanyjt"},"content":" public final String value;","lastModifiedDate":"2024-03-15"},{"lineNumber":20,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":21,"author":{"gitId":"drustanyjt"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":22,"author":{"gitId":"drustanyjt"},"content":" * Constructs a {@code IdentityCardNumber}.","lastModifiedDate":"2024-03-15"},{"lineNumber":23,"author":{"gitId":"drustanyjt"},"content":" *","lastModifiedDate":"2024-03-15"},{"lineNumber":24,"author":{"gitId":"drustanyjt"},"content":" * @param identityCardNumber A valid identity card number.","lastModifiedDate":"2024-03-15"},{"lineNumber":25,"author":{"gitId":"drustanyjt"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":26,"author":{"gitId":"drustanyjt"},"content":" public IdentityCardNumber(String identityCardNumber) {","lastModifiedDate":"2024-03-15"},{"lineNumber":27,"author":{"gitId":"drustanyjt"},"content":" requireNonNull(identityCardNumber);","lastModifiedDate":"2024-03-15"},{"lineNumber":28,"author":{"gitId":"drustanyjt"},"content":" checkArgument(isValidIdentityCardNumber(identityCardNumber), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-15"},{"lineNumber":29,"author":{"gitId":"jiahui0309"},"content":" value \u003d identityCardNumber.toUpperCase();","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":31,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":32,"author":{"gitId":"drustanyjt"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":33,"author":{"gitId":"drustanyjt"},"content":" * Returns true if a given string is a valid identity card number.","lastModifiedDate":"2024-03-15"},{"lineNumber":34,"author":{"gitId":"drustanyjt"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":35,"author":{"gitId":"drustanyjt"},"content":" public static boolean isValidIdentityCardNumber(String test) {","lastModifiedDate":"2024-03-15"},{"lineNumber":36,"author":{"gitId":"drustanyjt"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-15"},{"lineNumber":37,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":38,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":39,"author":{"gitId":"drustanyjt"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":40,"author":{"gitId":"drustanyjt"},"content":" public String toString() {","lastModifiedDate":"2024-03-15"},{"lineNumber":41,"author":{"gitId":"drustanyjt"},"content":" return value;","lastModifiedDate":"2024-03-15"},{"lineNumber":42,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":43,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":44,"author":{"gitId":"drustanyjt"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":45,"author":{"gitId":"drustanyjt"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-15"},{"lineNumber":46,"author":{"gitId":"drustanyjt"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-15"},{"lineNumber":47,"author":{"gitId":"drustanyjt"},"content":" return true;","lastModifiedDate":"2024-03-15"},{"lineNumber":48,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":49,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":50,"author":{"gitId":"drustanyjt"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-15"},{"lineNumber":51,"author":{"gitId":"drustanyjt"},"content":" if (!(other instanceof IdentityCardNumber)) {","lastModifiedDate":"2024-03-15"},{"lineNumber":52,"author":{"gitId":"drustanyjt"},"content":" return false;","lastModifiedDate":"2024-03-15"},{"lineNumber":53,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":54,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":55,"author":{"gitId":"drustanyjt"},"content":" IdentityCardNumber otherIdentityCardNumber \u003d (IdentityCardNumber) other;","lastModifiedDate":"2024-03-15"},{"lineNumber":56,"author":{"gitId":"drustanyjt"},"content":" return value.equals(otherIdentityCardNumber.value);","lastModifiedDate":"2024-03-15"},{"lineNumber":57,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":58,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":59,"author":{"gitId":"drustanyjt"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":60,"author":{"gitId":"drustanyjt"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-15"},{"lineNumber":61,"author":{"gitId":"drustanyjt"},"content":" return value.hashCode();","lastModifiedDate":"2024-03-15"},{"lineNumber":62,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":63,"author":{"gitId":"drustanyjt"},"content":"}","lastModifiedDate":"2024-03-15"}],"authorContributionMap":{"drustanyjt":61,"jiahui0309":2}},{"path":"src/main/java/seedu/address/model/person/IdentityCardNumberMatchesPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jiahui0309"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"jiahui0309"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"jiahui0309"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"jiahui0309"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"jiahui0309"},"content":" * Tests that a {@code Person}\u0027s {@code IdentityCardNumber} matches the given IC number.","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"jiahui0309"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"jiahui0309"},"content":"public class IdentityCardNumberMatchesPredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"jiahui0309"},"content":" private final IdentityCardNumber targetIcNumber;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"jiahui0309"},"content":" public IdentityCardNumberMatchesPredicate(IdentityCardNumber targetIcNumber) {","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"jiahui0309"},"content":" this.targetIcNumber \u003d targetIcNumber;","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"jiahui0309"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"jiahui0309"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"jiahui0309"},"content":" public boolean test(Person person) {","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"jiahui0309"},"content":" return person.getIdentityCardNumber().equals(targetIcNumber);","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"jiahui0309"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"jiahui0309"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"jiahui0309"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"jiahui0309"},"content":" if (this \u003d\u003d other) {","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"jiahui0309"},"content":" return true;","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"jiahui0309"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"jiahui0309"},"content":" if (!(other instanceof IdentityCardNumberMatchesPredicate)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"jiahui0309"},"content":" return false;","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"jiahui0309"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"jiahui0309"},"content":" IdentityCardNumberMatchesPredicate predicate \u003d (IdentityCardNumberMatchesPredicate) other;","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"jiahui0309"},"content":" return targetIcNumber.equals(predicate.targetIcNumber);","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"jiahui0309"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"jiahui0309"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"jiahui0309"},"content":" public String toString() {","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"jiahui0309"},"content":" return new ToStringBuilder(this).toString();","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"jiahui0309"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"jiahui0309":42}},{"path":"src/main/java/seedu/address/model/person/Note.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"drustanyjt"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-15"},{"lineNumber":2,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":3,"author":{"gitId":"drustanyjt"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-15"},{"lineNumber":4,"author":{"gitId":"drustanyjt"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-15"},{"lineNumber":5,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":6,"author":{"gitId":"drustanyjt"},"content":"/**","lastModifiedDate":"2024-03-15"},{"lineNumber":7,"author":{"gitId":"drustanyjt"},"content":" * Represents a Person\u0027s note in the address book.","lastModifiedDate":"2024-03-15"},{"lineNumber":8,"author":{"gitId":"drustanyjt"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidNote(String)}","lastModifiedDate":"2024-03-15"},{"lineNumber":9,"author":{"gitId":"drustanyjt"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":10,"author":{"gitId":"drustanyjt"},"content":"public class Note {","lastModifiedDate":"2024-03-15"},{"lineNumber":11,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":12,"author":{"gitId":"drustanyjt"},"content":" public static final Note DEFAULT \u003d new Note(\"\");","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"drustanyjt"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Notes can take any values, and it should not be blank\";","lastModifiedDate":"2024-03-15"},{"lineNumber":14,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":15,"author":{"gitId":"drustanyjt"},"content":" public final String value;","lastModifiedDate":"2024-03-15"},{"lineNumber":16,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":17,"author":{"gitId":"drustanyjt"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":18,"author":{"gitId":"drustanyjt"},"content":" * Constructs a {@code Note}.","lastModifiedDate":"2024-03-15"},{"lineNumber":19,"author":{"gitId":"drustanyjt"},"content":" *","lastModifiedDate":"2024-03-15"},{"lineNumber":20,"author":{"gitId":"drustanyjt"},"content":" * @param note A valid note.","lastModifiedDate":"2024-03-15"},{"lineNumber":21,"author":{"gitId":"drustanyjt"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":22,"author":{"gitId":"drustanyjt"},"content":" public Note(String note) {","lastModifiedDate":"2024-03-15"},{"lineNumber":23,"author":{"gitId":"drustanyjt"},"content":" requireNonNull(note);","lastModifiedDate":"2024-03-15"},{"lineNumber":24,"author":{"gitId":"drustanyjt"},"content":" checkArgument(isValidNote(note), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-15"},{"lineNumber":25,"author":{"gitId":"drustanyjt"},"content":" value \u003d note;","lastModifiedDate":"2024-03-15"},{"lineNumber":26,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":27,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":28,"author":{"gitId":"drustanyjt"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":29,"author":{"gitId":"drustanyjt"},"content":" * Returns true if a given string is a valid note.","lastModifiedDate":"2024-03-15"},{"lineNumber":30,"author":{"gitId":"drustanyjt"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":31,"author":{"gitId":"drustanyjt"},"content":" public static boolean isValidNote(String test) {","lastModifiedDate":"2024-03-15"},{"lineNumber":32,"author":{"gitId":"drustanyjt"},"content":" return true;","lastModifiedDate":"2024-03-15"},{"lineNumber":33,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":34,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":35,"author":{"gitId":"tengcharmaine"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"tengcharmaine"},"content":" * Appends text to the current note.","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"tengcharmaine"},"content":" *","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"tengcharmaine"},"content":" * @param text The text to append.","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"tengcharmaine"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"tengcharmaine"},"content":" public Note append(String text) {","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"tengcharmaine"},"content":" requireNonNull(text);","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"tengcharmaine"},"content":" return new Note(value + text);","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"tengcharmaine"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"drustanyjt"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":46,"author":{"gitId":"drustanyjt"},"content":" public String toString() {","lastModifiedDate":"2024-03-15"},{"lineNumber":47,"author":{"gitId":"drustanyjt"},"content":" return value;","lastModifiedDate":"2024-03-15"},{"lineNumber":48,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":49,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":50,"author":{"gitId":"drustanyjt"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":51,"author":{"gitId":"drustanyjt"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-15"},{"lineNumber":52,"author":{"gitId":"drustanyjt"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-15"},{"lineNumber":53,"author":{"gitId":"drustanyjt"},"content":" return true;","lastModifiedDate":"2024-03-15"},{"lineNumber":54,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":55,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":56,"author":{"gitId":"drustanyjt"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-15"},{"lineNumber":57,"author":{"gitId":"drustanyjt"},"content":" if (!(other instanceof Note)) {","lastModifiedDate":"2024-03-15"},{"lineNumber":58,"author":{"gitId":"drustanyjt"},"content":" return false;","lastModifiedDate":"2024-03-15"},{"lineNumber":59,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":60,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":61,"author":{"gitId":"drustanyjt"},"content":" Note otherNote \u003d (Note) other;","lastModifiedDate":"2024-03-15"},{"lineNumber":62,"author":{"gitId":"drustanyjt"},"content":" return value.equals(otherNote.value);","lastModifiedDate":"2024-03-15"},{"lineNumber":63,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":64,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":65,"author":{"gitId":"drustanyjt"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":66,"author":{"gitId":"drustanyjt"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-15"},{"lineNumber":67,"author":{"gitId":"drustanyjt"},"content":" return value.hashCode();","lastModifiedDate":"2024-03-15"},{"lineNumber":68,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":69,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":70,"author":{"gitId":"drustanyjt"},"content":"}","lastModifiedDate":"2024-03-15"}],"authorContributionMap":{"drustanyjt":60,"tengcharmaine":10}},{"path":"src/main/java/seedu/address/model/person/Person.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2016-08-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-03-07"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-03-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Represents a Person in the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2017-12-20"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class Person {","lastModifiedDate":"2018-01-10"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private final Phone phone;","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final Email email;","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"drustanyjt"},"content":" private final IdentityCardNumber identityCardNumber;","lastModifiedDate":"2024-03-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19"},{"lineNumber":26,"author":{"gitId":"drustanyjt"},"content":" private final Age age;","lastModifiedDate":"2024-03-15"},{"lineNumber":27,"author":{"gitId":"drustanyjt"},"content":" private final Sex sex;","lastModifiedDate":"2024-03-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final Address address;","lastModifiedDate":"2018-04-19"},{"lineNumber":29,"author":{"gitId":"drustanyjt"},"content":" private final Note note;","lastModifiedDate":"2024-03-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"Jayne1010"},"content":" public Person(Name name, Phone phone, Email email, IdentityCardNumber identityCardNumber,","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"Jayne1010"},"content":" Age age, Sex sex, Address address, Note note, Set\u003cTag\u003e tags) {","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"drustanyjt"},"content":" requireAllNonNull(name, phone, email, identityCardNumber, age, sex, address, note, tags);","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20"},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"drustanyjt"},"content":" this.identityCardNumber \u003d identityCardNumber;","lastModifiedDate":"2024-03-15"},{"lineNumber":42,"author":{"gitId":"drustanyjt"},"content":" this.age \u003d age;","lastModifiedDate":"2024-03-15"},{"lineNumber":43,"author":{"gitId":"drustanyjt"},"content":" this.sex \u003d sex;","lastModifiedDate":"2024-03-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-12-20"},{"lineNumber":45,"author":{"gitId":"drustanyjt"},"content":" this.note \u003d note;","lastModifiedDate":"2024-03-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"drustanyjt"},"content":" public IdentityCardNumber getIdentityCardNumber() {","lastModifiedDate":"2024-03-15"},{"lineNumber":62,"author":{"gitId":"drustanyjt"},"content":" return identityCardNumber;","lastModifiedDate":"2024-03-15"},{"lineNumber":63,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":64,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":65,"author":{"gitId":"drustanyjt"},"content":" public Age getAge() {","lastModifiedDate":"2024-03-15"},{"lineNumber":66,"author":{"gitId":"drustanyjt"},"content":" return age;","lastModifiedDate":"2024-03-15"},{"lineNumber":67,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":68,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":69,"author":{"gitId":"drustanyjt"},"content":" public Sex getSex() {","lastModifiedDate":"2024-03-15"},{"lineNumber":70,"author":{"gitId":"drustanyjt"},"content":" return sex;","lastModifiedDate":"2024-03-15"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public Address getAddress() {","lastModifiedDate":"2017-07-12"},{"lineNumber":74,"author":{"gitId":"-"},"content":" return address;","lastModifiedDate":"2017-12-20"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":77,"author":{"gitId":"drustanyjt"},"content":" public Note getNote() {","lastModifiedDate":"2024-03-15"},{"lineNumber":78,"author":{"gitId":"drustanyjt"},"content":" return note;","lastModifiedDate":"2024-03-15"},{"lineNumber":79,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":80,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":81,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07"},{"lineNumber":82,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07"},{"lineNumber":84,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":86,"author":{"gitId":"-"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":89,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":90,"author":{"gitId":"jiahui0309"},"content":" * Returns true if both persons have the same IC number.","lastModifiedDate":"2024-03-18"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19"},{"lineNumber":99,"author":{"gitId":"drustanyjt"},"content":" \u0026\u0026 otherPerson.getIdentityCardNumber().equals(getIdentityCardNumber());","lastModifiedDate":"2024-03-15"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":102,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":103,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":104,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":106,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":109,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10"},{"lineNumber":110,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":113,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10"},{"lineNumber":115,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":118,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10"},{"lineNumber":119,"author":{"gitId":"-"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":121,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2024-03-16"},{"lineNumber":122,"author":{"gitId":"drustanyjt"},"content":" \u0026\u0026 identityCardNumber.equals(otherPerson.identityCardNumber)","lastModifiedDate":"2024-03-15"},{"lineNumber":123,"author":{"gitId":"drustanyjt"},"content":" \u0026\u0026 age.equals(otherPerson.age)","lastModifiedDate":"2024-03-15"},{"lineNumber":124,"author":{"gitId":"drustanyjt"},"content":" \u0026\u0026 sex.equals(otherPerson.sex)","lastModifiedDate":"2024-03-15"},{"lineNumber":125,"author":{"gitId":"-"},"content":" \u0026\u0026 address.equals(otherPerson.address)","lastModifiedDate":"2023-07-13"},{"lineNumber":126,"author":{"gitId":"drustanyjt"},"content":" \u0026\u0026 note.equals(otherPerson.note)","lastModifiedDate":"2024-03-15"},{"lineNumber":127,"author":{"gitId":"-"},"content":" \u0026\u0026 tags.equals(otherPerson.tags);","lastModifiedDate":"2023-07-13"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":130,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":131,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":132,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24"},{"lineNumber":133,"author":{"gitId":"drustanyjt"},"content":" return Objects.hash(name, phone, email, identityCardNumber, age, sex, address, note, tags);","lastModifiedDate":"2024-03-16"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":136,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":137,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":138,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2024-03-16"},{"lineNumber":142,"author":{"gitId":"drustanyjt"},"content":" .add(\"identityCardNumber\", identityCardNumber)","lastModifiedDate":"2024-03-15"},{"lineNumber":143,"author":{"gitId":"drustanyjt"},"content":" .add(\"age\", age)","lastModifiedDate":"2024-03-15"},{"lineNumber":144,"author":{"gitId":"drustanyjt"},"content":" .add(\"sex\", sex)","lastModifiedDate":"2024-03-15"},{"lineNumber":145,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":146,"author":{"gitId":"drustanyjt"},"content":" .add(\"note\", note)","lastModifiedDate":"2024-03-15"},{"lineNumber":147,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":151,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"drustanyjt":34,"Jayne1010":2,"-":114,"jiahui0309":1}},{"path":"src/main/java/seedu/address/model/person/Sex.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"drustanyjt"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-15"},{"lineNumber":2,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":3,"author":{"gitId":"drustanyjt"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-15"},{"lineNumber":4,"author":{"gitId":"drustanyjt"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-15"},{"lineNumber":5,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":6,"author":{"gitId":"drustanyjt"},"content":"/**","lastModifiedDate":"2024-03-15"},{"lineNumber":7,"author":{"gitId":"drustanyjt"},"content":" * Represents a Person\u0027s sex in the address book.","lastModifiedDate":"2024-03-15"},{"lineNumber":8,"author":{"gitId":"drustanyjt"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidSex(String)}","lastModifiedDate":"2024-03-15"},{"lineNumber":9,"author":{"gitId":"drustanyjt"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":10,"author":{"gitId":"drustanyjt"},"content":"public class Sex {","lastModifiedDate":"2024-03-15"},{"lineNumber":11,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":12,"author":{"gitId":"drustanyjt"},"content":" public static final Sex DEFAULT \u003d new Sex(\"F\");","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"drustanyjt"},"content":" public static final String MALE \u003d \"M\";","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"drustanyjt"},"content":" public static final String FEMALE \u003d \"F\";","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":16,"author":{"gitId":"drustanyjt"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-15"},{"lineNumber":17,"author":{"gitId":"drustanyjt"},"content":" \"Sex should only contain either \u0027M\u0027 or \u0027F\u0027, and it should not be blank\";","lastModifiedDate":"2024-03-15"},{"lineNumber":18,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":19,"author":{"gitId":"drustanyjt"},"content":" /*","lastModifiedDate":"2024-03-15"},{"lineNumber":20,"author":{"gitId":"drustanyjt"},"content":" * The first character of the sex must not be a whitespace,","lastModifiedDate":"2024-03-15"},{"lineNumber":21,"author":{"gitId":"drustanyjt"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2024-03-15"},{"lineNumber":22,"author":{"gitId":"drustanyjt"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":23,"author":{"gitId":"tengcharmaine"},"content":" public static final String VALIDATION_REGEX \u003d \"[mfMF]\";","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":25,"author":{"gitId":"drustanyjt"},"content":" public final String value;","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":27,"author":{"gitId":"drustanyjt"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":28,"author":{"gitId":"drustanyjt"},"content":" * Constructs a {@code Sex}","lastModifiedDate":"2024-03-15"},{"lineNumber":29,"author":{"gitId":"drustanyjt"},"content":" *","lastModifiedDate":"2024-03-15"},{"lineNumber":30,"author":{"gitId":"drustanyjt"},"content":" * @param sex A valid sex.","lastModifiedDate":"2024-03-15"},{"lineNumber":31,"author":{"gitId":"drustanyjt"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":32,"author":{"gitId":"drustanyjt"},"content":" public Sex(String sex) {","lastModifiedDate":"2024-03-15"},{"lineNumber":33,"author":{"gitId":"drustanyjt"},"content":" requireNonNull(sex);","lastModifiedDate":"2024-03-15"},{"lineNumber":34,"author":{"gitId":"drustanyjt"},"content":" checkArgument(isValidSex(sex), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-15"},{"lineNumber":35,"author":{"gitId":"drustanyjt"},"content":" if (isFemaleString(sex)) {","lastModifiedDate":"2024-03-15"},{"lineNumber":36,"author":{"gitId":"drustanyjt"},"content":" value \u003d FEMALE;","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"drustanyjt"},"content":" } else if (isMaleString(sex)) {","lastModifiedDate":"2024-03-15"},{"lineNumber":38,"author":{"gitId":"drustanyjt"},"content":" value \u003d MALE;","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"drustanyjt"},"content":" } else {","lastModifiedDate":"2024-03-15"},{"lineNumber":40,"author":{"gitId":"drustanyjt"},"content":" // This should never happen","lastModifiedDate":"2024-03-15"},{"lineNumber":41,"author":{"gitId":"drustanyjt"},"content":" // Prevents linter from detecting fullSex as potentially unassigned","lastModifiedDate":"2024-03-15"},{"lineNumber":42,"author":{"gitId":"drustanyjt"},"content":" value \u003d \"\";","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":44,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":45,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":46,"author":{"gitId":"drustanyjt"},"content":" public boolean isMaleString(String sex) {","lastModifiedDate":"2024-03-15"},{"lineNumber":47,"author":{"gitId":"tengcharmaine"},"content":" return sex.equalsIgnoreCase(MALE);","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":49,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":50,"author":{"gitId":"drustanyjt"},"content":" public boolean isFemaleString(String sex) {","lastModifiedDate":"2024-03-15"},{"lineNumber":51,"author":{"gitId":"tengcharmaine"},"content":" return sex.equalsIgnoreCase(FEMALE);","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":53,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":54,"author":{"gitId":"drustanyjt"},"content":" public static boolean isValidSex(String test) {","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"drustanyjt"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-15"},{"lineNumber":56,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":57,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":58,"author":{"gitId":"drustanyjt"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":59,"author":{"gitId":"drustanyjt"},"content":" public String toString() {","lastModifiedDate":"2024-03-15"},{"lineNumber":60,"author":{"gitId":"drustanyjt"},"content":" return value;","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":62,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":63,"author":{"gitId":"drustanyjt"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":64,"author":{"gitId":"drustanyjt"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-15"},{"lineNumber":65,"author":{"gitId":"drustanyjt"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-15"},{"lineNumber":66,"author":{"gitId":"drustanyjt"},"content":" return true;","lastModifiedDate":"2024-03-15"},{"lineNumber":67,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":68,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":69,"author":{"gitId":"drustanyjt"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-15"},{"lineNumber":70,"author":{"gitId":"drustanyjt"},"content":" if (!(other instanceof Sex)) {","lastModifiedDate":"2024-03-15"},{"lineNumber":71,"author":{"gitId":"drustanyjt"},"content":" return false;","lastModifiedDate":"2024-03-15"},{"lineNumber":72,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":73,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":74,"author":{"gitId":"drustanyjt"},"content":" Sex otherSex \u003d (Sex) other;","lastModifiedDate":"2024-03-15"},{"lineNumber":75,"author":{"gitId":"drustanyjt"},"content":" return value.equals(otherSex.value);","lastModifiedDate":"2024-03-16"},{"lineNumber":76,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":77,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":78,"author":{"gitId":"drustanyjt"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":79,"author":{"gitId":"drustanyjt"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-15"},{"lineNumber":80,"author":{"gitId":"drustanyjt"},"content":" return value.hashCode();","lastModifiedDate":"2024-03-16"},{"lineNumber":81,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":82,"author":{"gitId":"drustanyjt"},"content":"}","lastModifiedDate":"2024-03-15"}],"authorContributionMap":{"drustanyjt":79,"tengcharmaine":3}},{"path":"src/main/java/seedu/address/model/util/SampleDataUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.util;","lastModifiedDate":"2016-12-20"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21"},{"lineNumber":4,"author":{"gitId":"drustanyjt"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-22"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-12-20"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-12-20"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-20"},{"lineNumber":11,"author":{"gitId":"drustanyjt"},"content":"import seedu.address.model.person.Age;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-20"},{"lineNumber":13,"author":{"gitId":"drustanyjt"},"content":"import seedu.address.model.person.IdentityCardNumber;","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-20"},{"lineNumber":15,"author":{"gitId":"drustanyjt"},"content":"import seedu.address.model.person.Note;","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"drustanyjt"},"content":"import seedu.address.model.person.Sex;","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-14"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static Person[] getSamplePersons() {","lastModifiedDate":"2016-12-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" return new Person[] {","lastModifiedDate":"2016-12-20"},{"lineNumber":27,"author":{"gitId":"Jayne1010"},"content":" new Person(new Name(\"Alex Yeoh\"), new Phone(\"87438807\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"Jayne1010"},"content":" new Email(\"alexyeoh@example.com\"), new IdentityCardNumber(\"S1234567A\"), new Age(\"30\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"Jayne1010"},"content":" new Sex(\"M\"), new Address(\"Blk 30 Geylang Street 29, #06-40\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"Jayne1010"},"content":" new Note(\"No medical conditions\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"drustanyjt"},"content":" getEmptyTagSet()),","lastModifiedDate":"2024-03-22"},{"lineNumber":32,"author":{"gitId":"Jayne1010"},"content":" new Person(new Name(\"Bernice Yu\"), new Phone(\"99272758\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"Jayne1010"},"content":" new Email(\"berniceyu@example.com\"), new IdentityCardNumber(\"S1234567B\"), new Age(31),","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"Jayne1010"},"content":" new Sex(\"F\"), new Address(\"Blk 30 Lorong 3 Serangoon Gardens, #07-18\"), new Note(\"Asthma\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"drustanyjt"},"content":" getEmptyTagSet()),","lastModifiedDate":"2024-03-22"},{"lineNumber":36,"author":{"gitId":"Jayne1010"},"content":" new Person(new Name(\"Charlotte Oliveiro\"), new Phone(\"93210283\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"Jayne1010"},"content":" new Email(\"charlotte@example.com\"), new IdentityCardNumber(\"S1234567C\"), new Age(\"32\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"Jayne1010"},"content":" new Sex(\"F\"), new Address(\"Blk 11 Ang Mo Kio Street 74, #11-04\"), new Note(\"Diabetes\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"drustanyjt"},"content":" getEmptyTagSet()),","lastModifiedDate":"2024-03-22"},{"lineNumber":40,"author":{"gitId":"Jayne1010"},"content":" new Person(new Name(\"David Li\"), new Phone(\"91031282\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"Jayne1010"},"content":" new Email(\"lidavid@example.com\"), new IdentityCardNumber(\"S1234567D\"), new Age(33), new Sex(\"M\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"drustanyjt"},"content":" new Address(\"Blk 436 Serangoon Gardens Street 26, #16-43\"), new Note(\"No medical conditions\"),","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"drustanyjt"},"content":" getEmptyTagSet()),","lastModifiedDate":"2024-03-22"},{"lineNumber":44,"author":{"gitId":"Jayne1010"},"content":" new Person(new Name(\"Irfan Ibrahim\"), new Phone(\"92492021\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"Jayne1010"},"content":" new Email(\"irfan@example.com\"), new IdentityCardNumber(\"S1234567E\"), new Age(\"34\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"Jayne1010"},"content":" new Sex(\"M\"), new Address(\"Blk 47 Tampines Street 20, #17-35\"), new Note(\"High blood pressure\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"drustanyjt"},"content":" getEmptyTagSet()),","lastModifiedDate":"2024-03-22"},{"lineNumber":48,"author":{"gitId":"Jayne1010"},"content":" new Person(new Name(\"Roy Balakrishnan\"), new Phone(\"92624417\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"Jayne1010"},"content":" new Email(\"royb@example.com\"), new IdentityCardNumber(\"S1234567F\"), new Age(35),","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"Jayne1010"},"content":" new Sex(\"M\"), new Address(\"Blk 45 Aljunied Street 85, #11-31\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"Jayne1010"},"content":" new Note(\"No medical conditions\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"drustanyjt"},"content":" getEmptyTagSet()),","lastModifiedDate":"2024-03-22"},{"lineNumber":53,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07"},{"lineNumber":58,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":64,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14"},{"lineNumber":65,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14"},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2017-05-30"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21"},{"lineNumber":69,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2018-01-21"},{"lineNumber":70,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":73,"author":{"gitId":"drustanyjt"},"content":" public static Set\u003cTag\u003e getEmptyTagSet() {","lastModifiedDate":"2024-03-22"},{"lineNumber":74,"author":{"gitId":"drustanyjt"},"content":" return new HashSet\u003cTag\u003e();","lastModifiedDate":"2024-03-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":77,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20"}],"authorContributionMap":{"drustanyjt":14,"Jayne1010":19,"-":44}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedPerson.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"drustanyjt"},"content":"import seedu.address.model.person.Age;","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"drustanyjt"},"content":"import seedu.address.model.person.IdentityCardNumber;","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"drustanyjt"},"content":"import seedu.address.model.person.Note;","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"drustanyjt"},"content":"import seedu.address.model.person.Sex;","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Jackson-friendly version of {@link Person}.","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":"class JsonAdaptedPerson {","lastModifiedDate":"2018-12-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final String name;","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final String phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"drustanyjt"},"content":" private final String identityCardNumber;","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"drustanyjt"},"content":" private final Integer age;","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"drustanyjt"},"content":" private final String sex;","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private final String address;","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"drustanyjt"},"content":" private final String note;","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedTag\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-01-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given person details.","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(@JsonProperty(\"name\") String name, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"drustanyjt"},"content":" @JsonProperty(\"email\") String email,","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"drustanyjt"},"content":" @JsonProperty(\"identityCardNumber\") String identityCardNumber,","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"drustanyjt"},"content":" @JsonProperty(\"age\") Integer age,","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"drustanyjt"},"content":" @JsonProperty(\"sex\") String sex,","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"drustanyjt"},"content":" @JsonProperty(\"address\") String address,","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"drustanyjt"},"content":" @JsonProperty(\"note\") String note,","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags) {","lastModifiedDate":"2023-05-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13"},{"lineNumber":56,"author":{"gitId":"drustanyjt"},"content":" this.identityCardNumber \u003d identityCardNumber;","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"drustanyjt"},"content":" this.age \u003d age;","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"drustanyjt"},"content":" this.sex \u003d sex;","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"drustanyjt"},"content":" this.note \u003d note;","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"-"},"content":" if (tags !\u003d null) {","lastModifiedDate":"2023-01-09"},{"lineNumber":62,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2023-01-09"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2018-08-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" phone \u003d source.getPhone().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"drustanyjt"},"content":" identityCardNumber \u003d source.getIdentityCardNumber().value;","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"drustanyjt"},"content":" age \u003d source.getAge().value;","lastModifiedDate":"2024-03-16"},{"lineNumber":75,"author":{"gitId":"drustanyjt"},"content":" sex \u003d source.getSex().value;","lastModifiedDate":"2024-03-16"},{"lineNumber":76,"author":{"gitId":"-"},"content":" address \u003d source.getAddress().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"drustanyjt"},"content":" note \u003d source.getNote().value;","lastModifiedDate":"2024-03-16"},{"lineNumber":78,"author":{"gitId":"-"},"content":" tags.addAll(source.getTags().stream()","lastModifiedDate":"2023-01-09"},{"lineNumber":79,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2018-08-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" final List\u003cTag\u003e personTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":" for (JsonAdaptedTag tag : tags) {","lastModifiedDate":"2023-01-09"},{"lineNumber":91,"author":{"gitId":"-"},"content":" personTags.add(tag.toModelType());","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":103,"author":{"gitId":"Jayne1010"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-03-17"},{"lineNumber":104,"author":{"gitId":"Jayne1010"},"content":" Phone.class.getSimpleName()));","lastModifiedDate":"2024-03-17"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":107,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2024-03-17"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":119,"author":{"gitId":"drustanyjt"},"content":" if (identityCardNumber \u003d\u003d null) {","lastModifiedDate":"2024-03-16"},{"lineNumber":120,"author":{"gitId":"drustanyjt"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-03-16"},{"lineNumber":121,"author":{"gitId":"drustanyjt"},"content":" IdentityCardNumber.class.getSimpleName()));","lastModifiedDate":"2024-03-16"},{"lineNumber":122,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":123,"author":{"gitId":"drustanyjt"},"content":" if (!IdentityCardNumber.isValidIdentityCardNumber(identityCardNumber)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":124,"author":{"gitId":"drustanyjt"},"content":" throw new IllegalValueException(IdentityCardNumber.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-16"},{"lineNumber":125,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":126,"author":{"gitId":"drustanyjt"},"content":" final IdentityCardNumber modelIdentityCardNumber \u003d new IdentityCardNumber(identityCardNumber);","lastModifiedDate":"2024-03-16"},{"lineNumber":127,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":128,"author":{"gitId":"drustanyjt"},"content":" if (age \u003d\u003d null) {","lastModifiedDate":"2024-03-16"},{"lineNumber":129,"author":{"gitId":"drustanyjt"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Age.class.getSimpleName()));","lastModifiedDate":"2024-03-16"},{"lineNumber":130,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":131,"author":{"gitId":"drustanyjt"},"content":" if (!Age.isValidAge(age)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":132,"author":{"gitId":"drustanyjt"},"content":" throw new IllegalValueException(Age.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-16"},{"lineNumber":133,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":134,"author":{"gitId":"drustanyjt"},"content":" final Age modelAge \u003d new Age(age);","lastModifiedDate":"2024-03-16"},{"lineNumber":135,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":136,"author":{"gitId":"drustanyjt"},"content":" if (sex \u003d\u003d null) {","lastModifiedDate":"2024-03-16"},{"lineNumber":137,"author":{"gitId":"drustanyjt"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Sex.class.getSimpleName()));","lastModifiedDate":"2024-03-16"},{"lineNumber":138,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":139,"author":{"gitId":"drustanyjt"},"content":" if (!Sex.isValidSex(sex)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":140,"author":{"gitId":"drustanyjt"},"content":" throw new IllegalValueException(Sex.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-16"},{"lineNumber":141,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":142,"author":{"gitId":"drustanyjt"},"content":" final Sex modelSex \u003d new Sex(sex);","lastModifiedDate":"2024-03-16"},{"lineNumber":143,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":144,"author":{"gitId":"-"},"content":" if (address \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":145,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":147,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(address)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":148,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":150,"author":{"gitId":"-"},"content":" final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2018-08-13"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":152,"author":{"gitId":"drustanyjt"},"content":" if (note \u003d\u003d null) {","lastModifiedDate":"2024-03-16"},{"lineNumber":153,"author":{"gitId":"drustanyjt"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Note.class.getSimpleName()));","lastModifiedDate":"2024-03-16"},{"lineNumber":154,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":155,"author":{"gitId":"drustanyjt"},"content":" if (!Note.isValidNote(note)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":156,"author":{"gitId":"drustanyjt"},"content":" throw new IllegalValueException(Note.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-16"},{"lineNumber":157,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":158,"author":{"gitId":"drustanyjt"},"content":" final Note modelNote \u003d new Note(note);","lastModifiedDate":"2024-03-16"},{"lineNumber":159,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":160,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(personTags);","lastModifiedDate":"2018-08-13"},{"lineNumber":161,"author":{"gitId":"drustanyjt"},"content":" return new Person(modelName, modelPhone, modelEmail, modelIdentityCardNumber, modelAge, modelSex, modelAddress,","lastModifiedDate":"2024-03-16"},{"lineNumber":162,"author":{"gitId":"drustanyjt"},"content":" modelNote, modelTags);","lastModifiedDate":"2024-03-16"},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":165,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"drustanyjt":57,"Jayne1010":2,"-":106}},{"path":"src/main/java/seedu/address/ui/HelpWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-12-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2019-08-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2019-08-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.input.Clipboard;","lastModifiedDate":"2019-08-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.input.ClipboardContent;","lastModifiedDate":"2019-08-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Controller for a help page","lastModifiedDate":"2016-08-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class HelpWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-12-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":18,"author":{"gitId":"tengcharmaine"},"content":" public static final String USERGUIDE_URL \u003d \"https://ay2324s2-cs2103t-f14-2.github.io/tp/UserGuide.html\";","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String HELP_MESSAGE \u003d \"Refer to the user guide: \" + USERGUIDE_URL;","lastModifiedDate":"2019-08-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(HelpWindow.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"HelpWindow.fxml\";","lastModifiedDate":"2016-09-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-12-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private Button copyButton;","lastModifiedDate":"2019-08-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-08-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2019-08-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Label helpMessage;","lastModifiedDate":"2019-08-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-12-01"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-12-01"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * @param root Stage to use as the root of the HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-12-01"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public HelpWindow(Stage root) {","lastModifiedDate":"2017-12-01"},{"lineNumber":36,"author":{"gitId":"-"},"content":" super(FXML, root);","lastModifiedDate":"2017-12-01"},{"lineNumber":37,"author":{"gitId":"-"},"content":" helpMessage.setText(HELP_MESSAGE);","lastModifiedDate":"2019-08-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-12-01"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-12-01"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public HelpWindow() {","lastModifiedDate":"2017-12-01"},{"lineNumber":44,"author":{"gitId":"-"},"content":" this(new Stage());","lastModifiedDate":"2017-12-01"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-01"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-01"},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Shows the help window.","lastModifiedDate":"2017-08-16"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * @throws IllegalStateException","lastModifiedDate":"2017-08-16"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * \u003cul\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * if this method is called on a thread other than the JavaFX Application Thread.","lastModifiedDate":"2017-08-16"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * if this method is called during animation or layout processing.","lastModifiedDate":"2017-08-16"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * if this method is called on the primary stage.","lastModifiedDate":"2017-08-16"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * if {@code dialogStage} is already showing.","lastModifiedDate":"2017-08-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * \u003c/ul\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void show() {","lastModifiedDate":"2016-08-18"},{"lineNumber":66,"author":{"gitId":"-"},"content":" logger.fine(\"Showing help page about the application.\");","lastModifiedDate":"2016-12-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":" getRoot().show();","lastModifiedDate":"2018-02-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" getRoot().centerOnScreen();","lastModifiedDate":"2019-08-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-15"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * Returns true if the help window is currently being shown.","lastModifiedDate":"2018-03-15"},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-15"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public boolean isShowing() {","lastModifiedDate":"2018-03-15"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return getRoot().isShowing();","lastModifiedDate":"2018-03-15"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Hides the help window.","lastModifiedDate":"2018-12-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void hide() {","lastModifiedDate":"2018-12-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":" getRoot().hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-15"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Focuses on the help window.","lastModifiedDate":"2018-03-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void focus() {","lastModifiedDate":"2018-03-15"},{"lineNumber":89,"author":{"gitId":"-"},"content":" getRoot().requestFocus();","lastModifiedDate":"2018-03-15"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-08-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-08-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Copies the URL to the user guide to the clipboard.","lastModifiedDate":"2019-08-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-08-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2019-08-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":" private void copyUrl() {","lastModifiedDate":"2019-08-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":" final Clipboard clipboard \u003d Clipboard.getSystemClipboard();","lastModifiedDate":"2019-08-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" final ClipboardContent url \u003d new ClipboardContent();","lastModifiedDate":"2019-08-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" url.putString(USERGUIDE_URL);","lastModifiedDate":"2019-08-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":" clipboard.setContent(url);","lastModifiedDate":"2019-08-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-08-19"},{"lineNumber":102,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"tengcharmaine":1,"-":101}},{"path":"src/main/java/seedu/address/ui/PersonCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Comparator;","lastModifiedDate":"2019-01-02"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-01-02"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-09-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2016-09-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2016-12-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2016-09-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * An UI component that displays information of a {@code Person}.","lastModifiedDate":"2017-08-16"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class PersonCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"PersonListCard.fxml\";","lastModifiedDate":"2016-09-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2017-03-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2017-03-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2017-03-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @see \u003ca href\u003d\"https://github.com/se-edu/addressbook-level4/issues/336\"\u003eThe issue on AddressBook level 4\u003c/a\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public final Person person;","lastModifiedDate":"2018-01-10"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private HBox cardPane;","lastModifiedDate":"2016-09-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Label name;","lastModifiedDate":"2016-09-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Label id;","lastModifiedDate":"2016-09-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private Label phone;","lastModifiedDate":"2016-09-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private Label address;","lastModifiedDate":"2016-09-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private Label email;","lastModifiedDate":"2016-09-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":42,"author":{"gitId":"tengcharmaine"},"content":" private Label note;","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"tengcharmaine"},"content":" @FXML","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"Jayne1010"},"content":" private Label age;","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"Jayne1010"},"content":" @FXML","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"Jayne1010"},"content":" private Label sex;","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"Jayne1010"},"content":" @FXML","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"Jayne1010"},"content":" private Label ic;","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"Jayne1010"},"content":" @FXML","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"-"},"content":" private FlowPane tags;","lastModifiedDate":"2016-12-18"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":52,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2020-05-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2018-01-10"},{"lineNumber":56,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2017-07-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21"},{"lineNumber":59,"author":{"gitId":"-"},"content":" name.setText(person.getName().fullName);","lastModifiedDate":"2017-12-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":" phone.setText(person.getPhone().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":" email.setText(person.getEmail().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":62,"author":{"gitId":"tengcharmaine"},"content":" note.setText(person.getNote().value);","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"Jayne1010"},"content":" ic.setText(person.getIdentityCardNumber().value);","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"Jayne1010"},"content":" age.setText(String.valueOf(person.getAge().value));","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"Jayne1010"},"content":" sex.setText(person.getSex().value);","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"Jayne1010"},"content":" address.setText(person.getAddress().value);","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"-"},"content":" person.getTags().stream()","lastModifiedDate":"2019-01-02"},{"lineNumber":68,"author":{"gitId":"-"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.tagName))","lastModifiedDate":"2019-01-02"},{"lineNumber":69,"author":{"gitId":"-"},"content":" .forEach(tag -\u003e tags.getChildren().add(new Label(tag.tagName)));","lastModifiedDate":"2019-01-02"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":71,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"Jayne1010":10,"tengcharmaine":3,"-":58}},{"path":"src/main/java/seedu/address/ui/UiManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.application.Platform;","lastModifiedDate":"2016-08-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Alert;","lastModifiedDate":"2016-08-18"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.Alert.AlertType;","lastModifiedDate":"2016-08-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2016-08-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.MainApp;","lastModifiedDate":"2016-08-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2016-09-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.Logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * The manager of the UI component.","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class UiManager implements Ui {","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String ALERT_DIALOG_PANE_FIELD_ID \u003d \"alertDialogPane\";","lastModifiedDate":"2017-04-01"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(UiManager.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":23,"author":{"gitId":"drustanyjt"},"content":" private static final String ICON_APPLICATION \u003d \"/images/clinic_mate_logo2_32.png\";","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private MainWindow mainWindow;","lastModifiedDate":"2016-08-18"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Creates a {@code UiManager} with the given {@code Logic}.","lastModifiedDate":"2020-05-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public UiManager(Logic logic) {","lastModifiedDate":"2018-12-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" this.logic \u003d logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public void start(Stage primaryStage) {","lastModifiedDate":"2016-09-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" logger.info(\"Starting UI...\");","lastModifiedDate":"2016-09-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":" //Set the application icon.","lastModifiedDate":"2016-08-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":" primaryStage.getIcons().add(getImage(ICON_APPLICATION));","lastModifiedDate":"2016-08-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":42,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-08-18"},{"lineNumber":43,"author":{"gitId":"-"},"content":" mainWindow \u003d new MainWindow(primaryStage, logic);","lastModifiedDate":"2018-12-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" mainWindow.show(); //This should be called before creating other UI parts","lastModifiedDate":"2016-08-18"},{"lineNumber":45,"author":{"gitId":"-"},"content":" mainWindow.fillInnerParts();","lastModifiedDate":"2016-08-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" } catch (Throwable e) {","lastModifiedDate":"2016-08-18"},{"lineNumber":48,"author":{"gitId":"-"},"content":" logger.severe(StringUtil.getDetails(e));","lastModifiedDate":"2016-09-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":" showFatalErrorDialogAndShutdown(\"Fatal error during initializing\", e);","lastModifiedDate":"2016-08-18"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":53,"author":{"gitId":"-"},"content":" private Image getImage(String imagePath) {","lastModifiedDate":"2016-08-18"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return new Image(MainApp.class.getResourceAsStream(imagePath));","lastModifiedDate":"2016-08-18"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":57,"author":{"gitId":"-"},"content":" void showAlertDialogAndWait(Alert.AlertType type, String title, String headerText, String contentText) {","lastModifiedDate":"2016-09-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" showAlertDialogAndWait(mainWindow.getPrimaryStage(), type, title, headerText, contentText);","lastModifiedDate":"2016-08-18"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Shows an alert dialog on {@code owner} with the given parameters.","lastModifiedDate":"2017-08-16"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * This method only returns after the user has closed the alert dialog.","lastModifiedDate":"2017-08-16"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":" private static void showAlertDialogAndWait(Stage owner, AlertType type, String title, String headerText,","lastModifiedDate":"2016-09-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":" String contentText) {","lastModifiedDate":"2016-08-18"},{"lineNumber":67,"author":{"gitId":"-"},"content":" final Alert alert \u003d new Alert(type);","lastModifiedDate":"2016-08-18"},{"lineNumber":68,"author":{"gitId":"-"},"content":" alert.getDialogPane().getStylesheets().add(\"view/DarkTheme.css\");","lastModifiedDate":"2016-08-20"},{"lineNumber":69,"author":{"gitId":"-"},"content":" alert.initOwner(owner);","lastModifiedDate":"2016-08-18"},{"lineNumber":70,"author":{"gitId":"-"},"content":" alert.setTitle(title);","lastModifiedDate":"2016-08-18"},{"lineNumber":71,"author":{"gitId":"-"},"content":" alert.setHeaderText(headerText);","lastModifiedDate":"2016-08-18"},{"lineNumber":72,"author":{"gitId":"-"},"content":" alert.setContentText(contentText);","lastModifiedDate":"2016-08-18"},{"lineNumber":73,"author":{"gitId":"-"},"content":" alert.getDialogPane().setId(ALERT_DIALOG_PANE_FIELD_ID);","lastModifiedDate":"2016-10-12"},{"lineNumber":74,"author":{"gitId":"-"},"content":" alert.showAndWait();","lastModifiedDate":"2016-08-18"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * Shows an error alert dialog with {@code title} and error message, {@code e},","lastModifiedDate":"2017-08-16"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * and exits the application after the user has closed the alert dialog.","lastModifiedDate":"2017-08-16"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":81,"author":{"gitId":"-"},"content":" private void showFatalErrorDialogAndShutdown(String title, Throwable e) {","lastModifiedDate":"2016-09-21"},{"lineNumber":82,"author":{"gitId":"-"},"content":" logger.severe(title + \" \" + e.getMessage() + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-21"},{"lineNumber":83,"author":{"gitId":"-"},"content":" showAlertDialogAndWait(Alert.AlertType.ERROR, title, e.getMessage(), e.toString());","lastModifiedDate":"2016-08-18"},{"lineNumber":84,"author":{"gitId":"-"},"content":" Platform.exit();","lastModifiedDate":"2016-08-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":" System.exit(1);","lastModifiedDate":"2016-08-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-25"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"drustanyjt":1,"-":87}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2016-08-26"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Menu?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuBar?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuItem?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.SplitPane?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"\u003cfx:root type\u003d\"javafx.stage.Stage\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"","lastModifiedDate":"2023-07-27"},{"lineNumber":15,"author":{"gitId":"drustanyjt"},"content":" title\u003d\"ClinicMate\" minWidth\u003d\"450\" minHeight\u003d\"600\" onCloseRequest\u003d\"#handleExit\"\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cicons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":17,"author":{"gitId":"drustanyjt"},"content":" \u003cImage url\u003d\"@/images/clinic_mate_logo2_32.png\" /\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/icons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cscene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cScene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@DarkTheme.css\" /\u003e","lastModifiedDate":"2016-08-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@Extensions.css\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003cVBox\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cMenuBar fx:id\u003d\"menuBar\" VBox.vgrow\u003d\"NEVER\"\u003e","lastModifiedDate":"2017-06-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"File\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003cMenuItem mnemonicParsing\u003d\"false\" onAction\u003d\"#handleExit\" text\u003d\"Exit\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"Help\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cMenuItem fx:id\u003d\"helpMenuItem\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleHelp\" text\u003d\"Help\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003c/MenuBar\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"commandBoxPlaceholder\" styleClass\u003d\"pane-with-border\"\u003e","lastModifiedDate":"2017-05-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"resultDisplayPlaceholder\" styleClass\u003d\"pane-with-border\"","lastModifiedDate":"2017-05-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":" minHeight\u003d\"100\" prefHeight\u003d\"100\" maxHeight\u003d\"100\"\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":45,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":47,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003cVBox fx:id\u003d\"personList\" styleClass\u003d\"pane-with-border\" minWidth\u003d\"340\" prefWidth\u003d\"340\" VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2019-01-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"10\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"personListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\"/\u003e","lastModifiedDate":"2017-06-21"},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"statusbarPlaceholder\" VBox.vgrow\u003d\"NEVER\" /\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003c/scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":60,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-11-29"}],"authorContributionMap":{"drustanyjt":2,"-":58}},{"path":"src/main/resources/view/PersonListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003cHBox id\u003d\"cardPane\" fx:id\u003d\"cardPane\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-07-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2017-03-28"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2017-03-28"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003c/Label\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"name\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2016-09-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003cFlowPane fx:id\u003d\"tags\" /\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":31,"author":{"gitId":"Jayne1010"},"content":" \u003cLabel fx:id\u003d\"ic\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$ic\" /\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"Jayne1010"},"content":" \u003cLabel fx:id\u003d\"age\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$age\" /\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"Jayne1010"},"content":" \u003cLabel fx:id\u003d\"sex\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$sex\" /\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"tengcharmaine"},"content":" \u003cLabel fx:id\u003d\"note\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$note\" /\u003e","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"Jayne1010":3,"tengcharmaine":1,"-":36}},{"path":"src/test/java/seedu/address/commons/util/AppUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.commons.util;","lastModifiedDate":"2016-09-30"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertNotNull;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class AppUtilTest {","lastModifiedDate":"2016-09-30"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":10,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-30"},{"lineNumber":11,"author":{"gitId":"-"},"content":" public void getImage_exitingImage() {","lastModifiedDate":"2016-09-30"},{"lineNumber":12,"author":{"gitId":"drustanyjt"},"content":" assertNotNull(AppUtil.getImage(\"/images/clinic_mate_logo2_32.png\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-30"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":15,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-30"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public void getImage_nullGiven_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":17,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e AppUtil.getImage(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-15"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public void checkArgument_true_nothingHappens() {","lastModifiedDate":"2017-05-15"},{"lineNumber":22,"author":{"gitId":"-"},"content":" AppUtil.checkArgument(true);","lastModifiedDate":"2017-05-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":" AppUtil.checkArgument(true, \"\");","lastModifiedDate":"2017-05-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-15"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void checkArgument_falseWithoutErrorMessage_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e AppUtil.checkArgument(false));","lastModifiedDate":"2019-03-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void checkArgument_falseWithErrorMessage_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":" String errorMessage \u003d \"error message\";","lastModifiedDate":"2017-05-15"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, errorMessage, () -\u003e AppUtil.checkArgument(false, errorMessage));","lastModifiedDate":"2019-03-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-30"}],"authorContributionMap":{"drustanyjt":1,"-":35}},{"path":"src/test/java/seedu/address/logic/LogicManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"jiahui0309"},"content":"import static seedu.address.logic.Messages.MESSAGE_NO_MATCHING_IC;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25"},{"lineNumber":18,"author":{"gitId":"drustanyjt"},"content":"import org.junit.jupiter.api.Disabled;","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2018-12-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2017-01-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2016-09-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-31"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-12-09"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-12-09"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2018-12-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2018-12-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-12-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":"public class LogicManagerTest {","lastModifiedDate":"2016-09-22"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_IO_EXCEPTION \u003d new IOException(\"dummy IO exception\");","lastModifiedDate":"2023-06-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_AD_EXCEPTION \u003d new AccessDeniedException(\"dummy access denied exception\");","lastModifiedDate":"2023-06-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public Path temporaryFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":44,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-20"},{"lineNumber":45,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2018-12-09"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2019-04-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d","lastModifiedDate":"2019-04-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(temporaryFolder.resolve(\"addressBook.json\"));","lastModifiedDate":"2019-04-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2019-04-25"},{"lineNumber":52,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2018-12-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void execute_invalidCommandFormat_throwsParseException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":58,"author":{"gitId":"-"},"content":" String invalidCommand \u003d \"uicfhmowqewca\";","lastModifiedDate":"2017-06-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertParseException(invalidCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-06-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-14"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void execute_commandExecutionError_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":64,"author":{"gitId":"jiahui0309"},"content":" String deleteCommand \u003d \"delete s1234567a\";","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"jiahui0309"},"content":" assertCommandException(deleteCommand, MESSAGE_NO_MATCHING_IC);","lastModifiedDate":"2024-03-16"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void execute_validCommand_success() throws Exception {","lastModifiedDate":"2019-03-14"},{"lineNumber":70,"author":{"gitId":"-"},"content":" String listCommand \u003d ListCommand.COMMAND_WORD;","lastModifiedDate":"2017-06-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertCommandSuccess(listCommand, ListCommand.MESSAGE_SUCCESS, model);","lastModifiedDate":"2017-06-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20"},{"lineNumber":74,"author":{"gitId":"drustanyjt"},"content":" @Disabled (\"Requires add command to be working properly\")","lastModifiedDate":"2024-03-16"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2019-04-25"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-06-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":81,"author":{"gitId":"drustanyjt"},"content":" @Disabled (\"Requires add command to be working properly\")","lastModifiedDate":"2024-03-16"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-06-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2023-06-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":93,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":99,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":100,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14"},{"lineNumber":101,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14"},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14"},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":107,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":108,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a ParseException is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":109,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":110,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":111,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11"},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":115,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14"},{"lineNumber":116,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a CommandException is thrown and that the result message is correct.","lastModifiedDate":"2017-06-14"},{"lineNumber":117,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":118,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":124,"author":{"gitId":"-"},"content":" * Executes the command, confirms that the exception is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":125,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":126,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":127,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":128,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14"},{"lineNumber":129,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-05-31"},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":133,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":134,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":135,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":136,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":137,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":138,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":139,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":140,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":141,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31"},{"lineNumber":142,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14"},{"lineNumber":143,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19"},{"lineNumber":146,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":147,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13"},{"lineNumber":148,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13"},{"lineNumber":149,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13"},{"lineNumber":150,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13"},{"lineNumber":151,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":152,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13"},{"lineNumber":153,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":155,"author":{"gitId":"-"},"content":" // Inject LogicManager with an AddressBookStorage that throws the IOException e when saving","lastModifiedDate":"2023-06-13"},{"lineNumber":156,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(prefPath) {","lastModifiedDate":"2023-06-13"},{"lineNumber":157,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":158,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath)","lastModifiedDate":"2023-06-13"},{"lineNumber":159,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13"},{"lineNumber":160,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13"},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":162,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":164,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":165,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13"},{"lineNumber":166,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2023-06-13"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":168,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":170,"author":{"gitId":"-"},"content":" // Triggers the saveAddressBook method by executing an add command","lastModifiedDate":"2023-06-13"},{"lineNumber":171,"author":{"gitId":"-"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2023-06-13"},{"lineNumber":172,"author":{"gitId":"-"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY;","lastModifiedDate":"2023-06-13"},{"lineNumber":173,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2023-06-13"},{"lineNumber":174,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13"},{"lineNumber":175,"author":{"gitId":"-"},"content":" expectedModel.addPerson(expectedPerson);","lastModifiedDate":"2023-06-13"},{"lineNumber":176,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13"},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":178,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"drustanyjt":3,"-":172,"jiahui0309":3}},{"path":"src/test/java/seedu/address/logic/commands/AddNoteCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"tengcharmaine"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"tengcharmaine"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"tengcharmaine"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"tengcharmaine"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"tengcharmaine"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NOTE_AMY;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"tengcharmaine"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NOTE_BOB;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"tengcharmaine"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"tengcharmaine"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.model.person.IdentityCardNumber;","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.model.person.IdentityCardNumberMatchesPredicate;","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.model.person.Note;","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"tengcharmaine"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"tengcharmaine"},"content":" * Contains integration tests (interaction with the Model) and unit tests for AddNoteCommand.","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"tengcharmaine"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"tengcharmaine"},"content":"public class AddNoteCommandTest {","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"tengcharmaine"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"tengcharmaine"},"content":" public void testReplaceNote() throws CommandException {","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"tengcharmaine"},"content":" // Setup","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"tengcharmaine"},"content":" Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"tengcharmaine"},"content":" Person person \u003d model.getFilteredPersonList().get(0);","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"tengcharmaine"},"content":" Note originalNote \u003d person.getNote();","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"tengcharmaine"},"content":" AddNoteCommand command \u003d new AddNoteCommand(","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"tengcharmaine"},"content":" new IdentityCardNumberMatchesPredicate(person.getIdentityCardNumber()),","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"tengcharmaine"},"content":" new Note(\"new note\"), true);","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"tengcharmaine"},"content":" // Action","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"tengcharmaine"},"content":" command.execute(model);","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"tengcharmaine"},"content":" // Verify","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"tengcharmaine"},"content":" assertEquals(originalNote.toString(), person.getNote().toString());","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"tengcharmaine"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"tengcharmaine"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"tengcharmaine"},"content":" public void generateSuccessMessage_noteAdded_successMessage() {","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"tengcharmaine"},"content":" Person personToEdit \u003d new PersonBuilder().withName(\"Alice\").withIdentityCardNumber(\"S1234567A\").build();","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"tengcharmaine"},"content":" String expectedMessage \u003d String.format(AddNoteCommand.MESSAGE_MODIFY_NOTE_SUCCESS,","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"tengcharmaine"},"content":" personToEdit.getName(), personToEdit.getIdentityCardNumber());","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"tengcharmaine"},"content":" assertEquals(expectedMessage, new AddNoteCommand(","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"tengcharmaine"},"content":" new IdentityCardNumberMatchesPredicate(personToEdit.getIdentityCardNumber()),","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"tengcharmaine"},"content":" new Note(\"new note\"), false).generateSuccessMessage(personToEdit));","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"tengcharmaine"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"tengcharmaine"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"tengcharmaine"},"content":" public void equals() {","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"tengcharmaine"},"content":" IdentityCardNumberMatchesPredicate firstPredicate \u003d","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"tengcharmaine"},"content":" new IdentityCardNumberMatchesPredicate(new IdentityCardNumber(\"S1234567A\"));","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"tengcharmaine"},"content":" IdentityCardNumberMatchesPredicate secondPredicate \u003d","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"tengcharmaine"},"content":" new IdentityCardNumberMatchesPredicate(new IdentityCardNumber(\"S9876543B\"));","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"tengcharmaine"},"content":" final AddNoteCommand standardCommand \u003d new AddNoteCommand(firstPredicate,","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"tengcharmaine"},"content":" new Note(VALID_NOTE_AMY), false);","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"tengcharmaine"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"tengcharmaine"},"content":" AddNoteCommand commandWithSameValues \u003d new AddNoteCommand(firstPredicate,","lastModifiedDate":"2024-03-16"},{"lineNumber":66,"author":{"gitId":"tengcharmaine"},"content":" new Note(VALID_NOTE_AMY), false);","lastModifiedDate":"2024-03-16"},{"lineNumber":67,"author":{"gitId":"tengcharmaine"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2024-03-16"},{"lineNumber":68,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"tengcharmaine"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"tengcharmaine"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"tengcharmaine"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"tengcharmaine"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":75,"author":{"gitId":"tengcharmaine"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":76,"author":{"gitId":"tengcharmaine"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2024-03-16"},{"lineNumber":77,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":78,"author":{"gitId":"tengcharmaine"},"content":" // different index -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":79,"author":{"gitId":"tengcharmaine"},"content":" assertFalse(standardCommand.equals(new AddNoteCommand(secondPredicate,","lastModifiedDate":"2024-03-16"},{"lineNumber":80,"author":{"gitId":"tengcharmaine"},"content":" new Note(VALID_NOTE_AMY), false)));","lastModifiedDate":"2024-03-16"},{"lineNumber":81,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":82,"author":{"gitId":"tengcharmaine"},"content":" // different remark -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":83,"author":{"gitId":"tengcharmaine"},"content":" assertFalse(standardCommand.equals(new AddNoteCommand(firstPredicate,","lastModifiedDate":"2024-03-16"},{"lineNumber":84,"author":{"gitId":"tengcharmaine"},"content":" new Note(VALID_NOTE_BOB), false)));","lastModifiedDate":"2024-03-16"},{"lineNumber":85,"author":{"gitId":"tengcharmaine"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":86,"author":{"gitId":"tengcharmaine"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"tengcharmaine":86}},{"path":"src/test/java/seedu/address/logic/commands/CommandTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"Jayne1010"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_AGE;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_IC_NUMBER;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SEX;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-06-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05"},{"lineNumber":24,"author":{"gitId":"Jayne1010"},"content":"import seedu.address.model.person.IdentityCardNumber;","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"Jayne1010"},"content":"import seedu.address.model.person.IdentityCardNumberMatchesPredicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-07-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-07-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_AMY \u003d \"11111111\";","lastModifiedDate":"2017-07-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_BOB \u003d \"22222222\";","lastModifiedDate":"2017-07-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":41,"author":{"gitId":"drustanyjt"},"content":" public static final String VALID_IDENTITY_CARD_NUMBER_AMY \u003d \"S1234567A\";","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"drustanyjt"},"content":" public static final String VALID_IDENTITY_CARD_NUMBER_BOB \u003d \"S1234567B\";","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"drustanyjt"},"content":" public static final Integer VALID_AGE_AMY \u003d 13;","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"drustanyjt"},"content":" public static final Integer VALID_AGE_BOB \u003d 54;","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"drustanyjt"},"content":" public static final String VALID_SEX_AMY \u003d \"F\";","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"drustanyjt"},"content":" public static final String VALID_SEX_BOB \u003d \"M\";","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_AMY \u003d \"Block 312, Amy Street 1\";","lastModifiedDate":"2017-07-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_BOB \u003d \"Block 123, Bobby Street 3\";","lastModifiedDate":"2017-07-05"},{"lineNumber":49,"author":{"gitId":"drustanyjt"},"content":" public static final String VALID_NOTE_AMY \u003d \"Hypertensive Crisis with last reading of 156/60\";","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"drustanyjt"},"content":" public static final String VALID_NOTE_BOB \u003d \"Prone to cardiac arrest, 3 times in the past 2 months\";","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_HUSBAND \u003d \"husband\";","lastModifiedDate":"2017-07-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_FRIEND \u003d \"friend\";","lastModifiedDate":"2017-07-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + PREFIX_TAG + VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + PREFIX_TAG + VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":64,"author":{"gitId":"Jayne1010"},"content":" public static final String IC_DESC_AMY \u003d \" \" + PREFIX_IC_NUMBER + VALID_IDENTITY_CARD_NUMBER_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"Jayne1010"},"content":" public static final String IC_DESC_BOB \u003d \" \" + PREFIX_IC_NUMBER + VALID_IDENTITY_CARD_NUMBER_BOB;","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"Jayne1010"},"content":" public static final String AGE_DESC_AMY \u003d \" \" + PREFIX_AGE + VALID_AGE_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"Jayne1010"},"content":" public static final String AGE_DESC_BOB \u003d \" \" + PREFIX_AGE + VALID_AGE_BOB;","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"Jayne1010"},"content":" public static final String SEX_DESC_AMY \u003d \" \" + PREFIX_SEX + VALID_SEX_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"Jayne1010"},"content":" public static final String SEX_DESC_BOB \u003d \" \" + PREFIX_SEX + VALID_AGE_BOB;","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public static final String INVALID_NAME_DESC \u003d \" \" + PREFIX_NAME + \"James\u0026\"; // \u0027\u0026\u0027 not allowed in names","lastModifiedDate":"2017-07-05"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public static final String INVALID_PHONE_DESC \u003d \" \" + PREFIX_PHONE + \"911a\"; // \u0027a\u0027 not allowed in phones","lastModifiedDate":"2017-07-05"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public static final String INVALID_ADDRESS_DESC \u003d \" \" + PREFIX_ADDRESS; // empty string not allowed for addresses","lastModifiedDate":"2017-07-05"},{"lineNumber":74,"author":{"gitId":"Jayne1010"},"content":" public static final String INVALID_SEX \u003d \" \" + PREFIX_SEX + \"Z\"; // Only \u0027M\u0027 and \u0027F\u0027 allowed in sex","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"Jayne1010"},"content":" public static final String INVALID_AGE \u003d \" \" + PREFIX_AGE + \"-15\"; // Negative age not allowed in age","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"Jayne1010"},"content":" public static final String INVALID_IC \u003d \" \" + PREFIX_IC_NUMBER + \"P379@\"; // @ not allowed in identification number","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public static final String INVALID_TAG_DESC \u003d \" \" + PREFIX_TAG + \"hubby*\"; // \u0027*\u0027 not allowed in tags","lastModifiedDate":"2017-07-05"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":85,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05"},{"lineNumber":86,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05"},{"lineNumber":87,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-07-05"},{"lineNumber":88,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05"},{"lineNumber":89,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05"},{"lineNumber":90,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2017-07-05"},{"lineNumber":91,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":94,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25"},{"lineNumber":98,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":99,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25"},{"lineNumber":100,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":101,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":102,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09"},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":105,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15"},{"lineNumber":106,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":110,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":111,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25"},{"lineNumber":112,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09"},{"lineNumber":113,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":114,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25"},{"lineNumber":115,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":116,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":120,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":121,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":122,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":123,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":124,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25"},{"lineNumber":125,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":126,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25"},{"lineNumber":127,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05"},{"lineNumber":128,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05"},{"lineNumber":129,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":130,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":132,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03"},{"lineNumber":133,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":134,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":136,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20"},{"lineNumber":137,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show only the person at the given {@code targetIndex} in the","lastModifiedDate":"2018-01-31"},{"lineNumber":138,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31"},{"lineNumber":139,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20"},{"lineNumber":140,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31"},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31"},{"lineNumber":143,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31"},{"lineNumber":144,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20"},{"lineNumber":145,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":147,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08"},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":150,"author":{"gitId":"Jayne1010"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":151,"author":{"gitId":"Jayne1010"},"content":" * Updates {@code model}\u0027s filtered list to show only the person with the given {@code icNumber} in the","lastModifiedDate":"2024-03-21"},{"lineNumber":152,"author":{"gitId":"Jayne1010"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2024-03-21"},{"lineNumber":153,"author":{"gitId":"Jayne1010"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":154,"author":{"gitId":"Jayne1010"},"content":" public static void showPersonWithIC(Model model, IdentityCardNumber icNumber) {","lastModifiedDate":"2024-03-21"},{"lineNumber":155,"author":{"gitId":"Jayne1010"},"content":" model.updateFilteredPersonList(new IdentityCardNumberMatchesPredicate(icNumber));","lastModifiedDate":"2024-03-21"},{"lineNumber":156,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":157,"author":{"gitId":"Jayne1010"},"content":" // Ensure that at least one person matches the IC number","lastModifiedDate":"2024-03-21"},{"lineNumber":158,"author":{"gitId":"Jayne1010"},"content":" assertFalse(model.getFilteredPersonList().isEmpty());","lastModifiedDate":"2024-03-21"},{"lineNumber":159,"author":{"gitId":"Jayne1010"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":160,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":161,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"Jayne1010":26,"drustanyjt":8,"-":127}},{"path":"src/test/java/seedu/address/logic/commands/DeleteCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-05"},{"lineNumber":17,"author":{"gitId":"jiahui0309"},"content":"import seedu.address.model.person.IdentityCardNumber;","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"jiahui0309"},"content":"import seedu.address.model.person.IdentityCardNumberMatchesPredicate;","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2020-12-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * {@code DeleteCommand}.","lastModifiedDate":"2018-01-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class DeleteCommandTest {","lastModifiedDate":"2017-06-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void execute_validIndexUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":31,"author":{"gitId":"-"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":32,"author":{"gitId":"jiahui0309"},"content":" IdentityCardNumber icToDelete \u003d personToDelete.getIdentityCardNumber();","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"jiahui0309"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(new IdentityCardNumberMatchesPredicate(icToDelete));","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2019-02-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2019-02-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void execute_validIndexFilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":47,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":50,"author":{"gitId":"jiahui0309"},"content":" IdentityCardNumber icToDelete \u003d personToDelete.getIdentityCardNumber();","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"jiahui0309"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(new IdentityCardNumberMatchesPredicate(icToDelete));","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":" showNoPerson(expectedModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":66,"author":{"gitId":"jiahui0309"},"content":" IdentityCardNumberMatchesPredicate firstPredicate \u003d","lastModifiedDate":"2024-03-16"},{"lineNumber":67,"author":{"gitId":"jiahui0309"},"content":" new IdentityCardNumberMatchesPredicate(new IdentityCardNumber(\"S1234567A\"));","lastModifiedDate":"2024-03-16"},{"lineNumber":68,"author":{"gitId":"jiahui0309"},"content":" IdentityCardNumberMatchesPredicate secondPredicate \u003d","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"jiahui0309"},"content":" new IdentityCardNumberMatchesPredicate(new IdentityCardNumber(\"S9876543B\"));","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"jiahui0309"},"content":" DeleteCommand deleteFirstCommand \u003d new DeleteCommand(firstPredicate);","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"jiahui0309"},"content":" DeleteCommand deleteSecondCommand \u003d new DeleteCommand(secondPredicate);","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":78,"author":{"gitId":"jiahui0309"},"content":" DeleteCommand deleteFirstCommandCopy \u003d new DeleteCommand(firstPredicate);","lastModifiedDate":"2024-03-16"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2017-06-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2017-06-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2017-06-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":93,"author":{"gitId":"jiahui0309"},"content":" IdentityCardNumberMatchesPredicate predicate \u003d new IdentityCardNumberMatchesPredicate(","lastModifiedDate":"2024-03-16"},{"lineNumber":94,"author":{"gitId":"jiahui0309"},"content":" new IdentityCardNumber(\"S1234567A\"));","lastModifiedDate":"2024-03-16"},{"lineNumber":95,"author":{"gitId":"jiahui0309"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(predicate);","lastModifiedDate":"2024-03-16"},{"lineNumber":96,"author":{"gitId":"jiahui0309"},"content":" String expected \u003d DeleteCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2024-03-16"},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertEquals(expected, deleteCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show no one.","lastModifiedDate":"2017-06-05"},{"lineNumber":102,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":103,"author":{"gitId":"-"},"content":" private void showNoPerson(Model model) {","lastModifiedDate":"2017-06-05"},{"lineNumber":104,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(p -\u003e false);","lastModifiedDate":"2017-06-12"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertTrue(model.getFilteredPersonList().isEmpty());","lastModifiedDate":"2018-02-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"-":90,"jiahui0309":18}},{"path":"src/test/java/seedu/address/logic/commands/EditCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.IC_DESC_BOB;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_IDENTITY_CARD_NUMBER_BOB;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":15,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonWithIC;","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.testutil.TypicalIdentityPredicate.IC_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.testutil.TypicalIdentityPredicate.IC_BOB;","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":22,"author":{"gitId":"drustanyjt"},"content":"import org.junit.jupiter.api.Disabled;","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-04"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-05-04"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-04"},{"lineNumber":31,"author":{"gitId":"Jayne1010"},"content":"import seedu.address.model.person.IdentityCardNumber;","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-04"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-22"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-04"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-04"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for EditCommand.","lastModifiedDate":"2020-12-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-04"},{"lineNumber":39,"author":{"gitId":"drustanyjt"},"content":"@Disabled(\"Requires edit Command to be implemented\")","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"-"},"content":"public class EditCommandTest {","lastModifiedDate":"2017-05-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":46,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-26"},{"lineNumber":47,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(editedPerson).build();","lastModifiedDate":"2017-06-05"},{"lineNumber":48,"author":{"gitId":"Jayne1010"},"content":" EditCommand editCommand \u003d new EditCommand(IC_AMY, descriptor);","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":52,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":60,"author":{"gitId":"Jayne1010"},"content":" Person lastPerson \u003d model.getAddressBook().getPersonList()","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"Jayne1010"},"content":" .get(model.getAddressBook().getPersonList().size() - 1);","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":63,"author":{"gitId":"-"},"content":" PersonBuilder personInList \u003d new PersonBuilder(lastPerson);","lastModifiedDate":"2017-05-18"},{"lineNumber":64,"author":{"gitId":"-"},"content":" Person editedPerson \u003d personInList.withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-18"},{"lineNumber":65,"author":{"gitId":"Jayne1010"},"content":" .withIdentityCardNumber(VALID_IDENTITY_CARD_NUMBER_BOB)","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":68,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-05-18"},{"lineNumber":69,"author":{"gitId":"Jayne1010"},"content":" .withIC(VALID_IDENTITY_CARD_NUMBER_BOB)","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18"},{"lineNumber":71,"author":{"gitId":"Jayne1010"},"content":" EditCommand editCommand \u003d new EditCommand(IC_BOB, descriptor);","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":73,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":75,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":76,"author":{"gitId":"-"},"content":" expectedModel.setPerson(lastPerson, editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":83,"author":{"gitId":"Jayne1010"},"content":" EditCommand editCommand \u003d new EditCommand(IC_AMY, new EditPersonDescriptor());","lastModifiedDate":"2024-03-21"},{"lineNumber":84,"author":{"gitId":"Jayne1010"},"content":" Person editedPerson \u003d new PersonBuilder(AMY).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":88,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":95,"author":{"gitId":"Jayne1010"},"content":" showPersonWithIC(model, new IdentityCardNumber(\"S0123456B\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":97,"author":{"gitId":"Jayne1010"},"content":" Person editedPerson \u003d new PersonBuilder(BOB).withName(VALID_NAME_BOB)","lastModifiedDate":"2024-03-21"},{"lineNumber":98,"author":{"gitId":"Jayne1010"},"content":" .withIdentityCardNumber(VALID_IDENTITY_CARD_NUMBER_BOB).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":99,"author":{"gitId":"Jayne1010"},"content":" EditCommand editCommand \u003d new EditCommand(IC_BOB,","lastModifiedDate":"2024-03-21"},{"lineNumber":100,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":102,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":104,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":105,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":111,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonUnfilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":112,"author":{"gitId":"Jayne1010"},"content":" Person firstPerson \u003d new PersonBuilder(BOB).withName(VALID_NAME_BOB)","lastModifiedDate":"2024-03-21"},{"lineNumber":113,"author":{"gitId":"Jayne1010"},"content":" .withIdentityCardNumber(VALID_IDENTITY_CARD_NUMBER_BOB).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":114,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(firstPerson).build();","lastModifiedDate":"2017-06-05"},{"lineNumber":115,"author":{"gitId":"Jayne1010"},"content":" EditCommand editCommand \u003d new EditCommand(IC_BOB, descriptor);","lastModifiedDate":"2024-03-21"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":120,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":121,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonFilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":122,"author":{"gitId":"Jayne1010"},"content":" showPersonWithIC(model, new IdentityCardNumber(\"S0123456B\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":124,"author":{"gitId":"-"},"content":" // edit person in filtered list into a duplicate in address book","lastModifiedDate":"2017-05-18"},{"lineNumber":125,"author":{"gitId":"Jayne1010"},"content":" Person personInList \u003d new PersonBuilder(BOB).withName(VALID_NAME_BOB)","lastModifiedDate":"2024-03-21"},{"lineNumber":126,"author":{"gitId":"Jayne1010"},"content":" .withIdentityCardNumber(VALID_IDENTITY_CARD_NUMBER_BOB).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":127,"author":{"gitId":"Jayne1010"},"content":" EditCommand editCommand \u003d new EditCommand(IC_BOB,","lastModifiedDate":"2024-03-21"},{"lineNumber":128,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder(personInList).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":133,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":135,"author":{"gitId":"Jayne1010"},"content":" final EditCommand standardCommand \u003d new EditCommand(IC_AMY, DESC_AMY);","lastModifiedDate":"2024-03-21"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":137,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":138,"author":{"gitId":"-"},"content":" EditPersonDescriptor copyDescriptor \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-08"},{"lineNumber":139,"author":{"gitId":"Jayne1010"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(IC_AMY, copyDescriptor);","lastModifiedDate":"2024-03-21"},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":142,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":143,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":145,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":148,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":149,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2017-05-08"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":151,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":152,"author":{"gitId":"Jayne1010"},"content":" assertFalse(standardCommand.equals(new EditCommand(IC_BOB, DESC_AMY)));","lastModifiedDate":"2024-03-21"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":154,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":155,"author":{"gitId":"Jayne1010"},"content":" assertFalse(standardCommand.equals(new EditCommand(IC_BOB, DESC_BOB)));","lastModifiedDate":"2024-03-21"},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":158,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23"},{"lineNumber":161,"author":{"gitId":"Jayne1010"},"content":" EditCommand editCommand \u003d new EditCommand(IC_BOB, editPersonDescriptor);","lastModifiedDate":"2024-03-21"},{"lineNumber":162,"author":{"gitId":"Jayne1010"},"content":" String expected \u003d EditCommand.class.getCanonicalName() + \"{ic\u003d\" + IC_DESC_BOB + \", editPersonDescriptor\u003d\"","lastModifiedDate":"2024-03-21"},{"lineNumber":163,"author":{"gitId":"-"},"content":" + editPersonDescriptor + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08"}],"authorContributionMap":{"Jayne1010":33,"drustanyjt":2,"-":131}},{"path":"src/test/java/seedu/address/logic/commands/EditPersonDescriptorTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorTest {","lastModifiedDate":"2017-05-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptorWithSameValues \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(descriptorWithSameValues));","lastModifiedDate":"2017-05-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(DESC_AMY));","lastModifiedDate":"2017-05-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(null));","lastModifiedDate":"2017-05-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(5));","lastModifiedDate":"2017-05-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(DESC_BOB));","lastModifiedDate":"2017-05-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" EditPersonDescriptor editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":" String expected \u003d EditPersonDescriptor.class.getCanonicalName() + \"{name\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getName().orElse(null) + \", phone\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getPhone().orElse(null) + \", email\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":66,"author":{"gitId":"Jayne1010"},"content":" + editPersonDescriptor.getEmail().orElse(null) + \", ic\u003d\"","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"Jayne1010"},"content":" + editPersonDescriptor.getIC().orElse(null) + \", age\u003d\"","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"Jayne1010"},"content":" + editPersonDescriptor.getAge().orElse(null) + \", sex\u003d\"","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"Jayne1010"},"content":" + editPersonDescriptor.getSex().orElse(null) + \", address\u003d\"","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getAddress().orElse(null) + \", tags\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getTags().orElse(null) + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertEquals(expected, editPersonDescriptor.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"Jayne1010":4,"-":70}},{"path":"src/test/java/seedu/address/logic/commands/FindCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_PERSONS_LISTED_OVERVIEW;","lastModifiedDate":"2023-07-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2018-08-08"},{"lineNumber":8,"author":{"gitId":"jiahui0309"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"jiahui0309"},"content":"import seedu.address.model.person.IdentityCardNumber;","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"jiahui0309"},"content":"import seedu.address.model.person.IdentityCardNumberMatchesPredicate;","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code FindCommand}.","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class FindCommandTest {","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2018-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-27"},{"lineNumber":31,"author":{"gitId":"jiahui0309"},"content":" IdentityCardNumberMatchesPredicate firstPredicate \u003d","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"jiahui0309"},"content":" new IdentityCardNumberMatchesPredicate(new IdentityCardNumber(\"S1234567A\"));","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"jiahui0309"},"content":" IdentityCardNumberMatchesPredicate secondPredicate \u003d","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"jiahui0309"},"content":" new IdentityCardNumberMatchesPredicate(new IdentityCardNumber(\"S9876543B\"));","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":" FindCommand findFirstCommand \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" FindCommand findSecondCommand \u003d new FindCommand(secondPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" FindCommand findFirstCommandCopy \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommandCopy));","lastModifiedDate":"2017-06-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(1));","lastModifiedDate":"2017-06-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(null));","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(findSecondCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":57,"author":{"gitId":"jiahui0309"},"content":" public void execute_validIC_singlePersonFound() {","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"jiahui0309"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 1);","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"jiahui0309"},"content":" IdentityCardNumberMatchesPredicate predicate \u003d preparePredicate(\"S1234567A\");","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":63,"author":{"gitId":"jiahui0309"},"content":" assertEquals(Collections.singletonList(ALICE), model.getFilteredPersonList());","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":68,"author":{"gitId":"jiahui0309"},"content":" IdentityCardNumberMatchesPredicate predicate \u003d new IdentityCardNumberMatchesPredicate(","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"jiahui0309"},"content":" new IdentityCardNumber(\"S1234567A\"));","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"-"},"content":" FindCommand findCommand \u003d new FindCommand(predicate);","lastModifiedDate":"2019-02-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" String expected \u003d FindCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertEquals(expected, findCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-12"},{"lineNumber":76,"author":{"gitId":"-"},"content":" * Parses {@code userInput} into a {@code NameContainsKeywordsPredicate}.","lastModifiedDate":"2018-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":78,"author":{"gitId":"jiahui0309"},"content":" private IdentityCardNumberMatchesPredicate preparePredicate(String userInput) {","lastModifiedDate":"2024-03-16"},{"lineNumber":79,"author":{"gitId":"jiahui0309"},"content":" return new IdentityCardNumberMatchesPredicate(new IdentityCardNumber(userInput));","lastModifiedDate":"2024-03-16"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":81,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"},{"lineNumber":82,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"-":65,"jiahui0309":17}},{"path":"src/test/java/seedu/address/logic/parser/AddCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-15"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.AGE_DESC_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.AGE_DESC_BOB;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.IC_DESC_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.IC_DESC_BOB;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_AGE;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_IC;","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_SEX;","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SEX_DESC_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SEX_DESC_BOB;","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_AGE;","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_IC;","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SEX;","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":43,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":44,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-07-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-07-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":47,"author":{"gitId":"drustanyjt"},"content":"import org.junit.jupiter.api.Disabled;","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":51,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-15"},{"lineNumber":52,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-06-15"},{"lineNumber":53,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-06-15"},{"lineNumber":54,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-06-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-06-15"},{"lineNumber":57,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-06-15"},{"lineNumber":58,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":60,"author":{"gitId":"drustanyjt"},"content":"@Disabled(\"Requires add Command to be implemented\")","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":62,"author":{"gitId":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2017-06-15"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":66,"author":{"gitId":"Jayne1010"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":68,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":70,"author":{"gitId":"Jayne1010"},"content":" + IC_DESC_BOB + AGE_DESC_BOB + SEX_DESC_BOB + ADDRESS_DESC_BOB, new AddCommand(expectedPerson));","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":73,"author":{"gitId":"-"},"content":" // multiple tags - all accepted","lastModifiedDate":"2017-06-15"},{"lineNumber":74,"author":{"gitId":"Jayne1010"},"content":" Person expectedPersonMultipleTags \u003d new PersonBuilder(BOB)","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-07-25"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":77,"author":{"gitId":"Jayne1010"},"content":" NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + IC_DESC_BOB","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"Jayne1010"},"content":" + AGE_DESC_BOB + SEX_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"-"},"content":" new AddCommand(expectedPersonMultipleTags));","lastModifiedDate":"2023-07-14"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":84,"author":{"gitId":"-"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-07-14"},{"lineNumber":85,"author":{"gitId":"-"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_FRIEND;","lastModifiedDate":"2023-07-14"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":87,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":89,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":91,"author":{"gitId":"-"},"content":" // multiple phones","lastModifiedDate":"2023-07-14"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":93,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":95,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14"},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":97,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":99,"author":{"gitId":"Jayne1010"},"content":" // multiple ic","lastModifiedDate":"2024-03-20"},{"lineNumber":100,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, IC_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-03-20"},{"lineNumber":101,"author":{"gitId":"Jayne1010"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_IC));","lastModifiedDate":"2024-03-20"},{"lineNumber":102,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":103,"author":{"gitId":"Jayne1010"},"content":" // multiple age","lastModifiedDate":"2024-03-20"},{"lineNumber":104,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, AGE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-03-20"},{"lineNumber":105,"author":{"gitId":"Jayne1010"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_AGE));","lastModifiedDate":"2024-03-20"},{"lineNumber":106,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":107,"author":{"gitId":"Jayne1010"},"content":" // multiple sex","lastModifiedDate":"2024-03-20"},{"lineNumber":108,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, SEX_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-03-20"},{"lineNumber":109,"author":{"gitId":"Jayne1010"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_SEX));","lastModifiedDate":"2024-03-20"},{"lineNumber":110,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":111,"author":{"gitId":"-"},"content":" // multiple addresses","lastModifiedDate":"2023-07-14"},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertParseFailure(parser, ADDRESS_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":113,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":115,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":116,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":117,"author":{"gitId":"-"},"content":" validExpectedPersonString + PHONE_DESC_AMY + EMAIL_DESC_AMY + NAME_DESC_AMY + ADDRESS_DESC_AMY","lastModifiedDate":"2023-07-14"},{"lineNumber":118,"author":{"gitId":"-"},"content":" + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_ADDRESS, PREFIX_EMAIL, PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":127,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":129,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":131,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":132,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_PHONE_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":133,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":135,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":136,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_ADDRESS_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":137,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":139,"author":{"gitId":"Jayne1010"},"content":" // invalid sex","lastModifiedDate":"2024-03-20"},{"lineNumber":140,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, INVALID_SEX + validExpectedPersonString,","lastModifiedDate":"2024-03-20"},{"lineNumber":141,"author":{"gitId":"Jayne1010"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_SEX));","lastModifiedDate":"2024-03-20"},{"lineNumber":142,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":143,"author":{"gitId":"Jayne1010"},"content":" // invalid age","lastModifiedDate":"2024-03-20"},{"lineNumber":144,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, INVALID_AGE + validExpectedPersonString,","lastModifiedDate":"2024-03-20"},{"lineNumber":145,"author":{"gitId":"Jayne1010"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_AGE));","lastModifiedDate":"2024-03-20"},{"lineNumber":146,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":147,"author":{"gitId":"Jayne1010"},"content":" // invalid ic","lastModifiedDate":"2024-03-20"},{"lineNumber":148,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, INVALID_IC + validExpectedPersonString,","lastModifiedDate":"2024-03-20"},{"lineNumber":149,"author":{"gitId":"Jayne1010"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_IC));","lastModifiedDate":"2024-03-20"},{"lineNumber":150,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":151,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":153,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":154,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":155,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":157,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":158,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":159,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":161,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":162,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_PHONE_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":163,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":165,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":166,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_ADDRESS_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":167,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":168,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":169,"author":{"gitId":"Jayne1010"},"content":" // invalid age","lastModifiedDate":"2024-03-20"},{"lineNumber":170,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_AGE,","lastModifiedDate":"2024-03-20"},{"lineNumber":171,"author":{"gitId":"Jayne1010"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_AGE));","lastModifiedDate":"2024-03-20"},{"lineNumber":172,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":173,"author":{"gitId":"Jayne1010"},"content":" // invalid sex","lastModifiedDate":"2024-03-20"},{"lineNumber":174,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_SEX,","lastModifiedDate":"2024-03-20"},{"lineNumber":175,"author":{"gitId":"Jayne1010"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_SEX));","lastModifiedDate":"2024-03-20"},{"lineNumber":176,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":177,"author":{"gitId":"Jayne1010"},"content":" // invalid ic","lastModifiedDate":"2024-03-20"},{"lineNumber":178,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_IC,","lastModifiedDate":"2024-03-20"},{"lineNumber":179,"author":{"gitId":"Jayne1010"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_IC));","lastModifiedDate":"2024-03-20"},{"lineNumber":180,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":182,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":183,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":184,"author":{"gitId":"-"},"content":" // zero tags","lastModifiedDate":"2017-06-15"},{"lineNumber":185,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2018-07-25"},{"lineNumber":186,"author":{"gitId":"Jayne1010"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY + IC_DESC_AMY","lastModifiedDate":"2024-03-20"},{"lineNumber":187,"author":{"gitId":"Jayne1010"},"content":" + AGE_DESC_AMY + SEX_DESC_AMY + ADDRESS_DESC_AMY,","lastModifiedDate":"2024-03-20"},{"lineNumber":188,"author":{"gitId":"-"},"content":" new AddCommand(expectedPerson));","lastModifiedDate":"2017-12-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":191,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":192,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":193,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":195,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":196,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":199,"author":{"gitId":"-"},"content":" // missing phone prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":200,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_PHONE_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":201,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":203,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":204,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":207,"author":{"gitId":"Jayne1010"},"content":" // missing age prefix","lastModifiedDate":"2024-03-20"},{"lineNumber":208,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2024-03-20"},{"lineNumber":209,"author":{"gitId":"Jayne1010"},"content":" expectedMessage);","lastModifiedDate":"2024-03-20"},{"lineNumber":210,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":211,"author":{"gitId":"Jayne1010"},"content":" // missing sex prefix","lastModifiedDate":"2024-03-20"},{"lineNumber":212,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2024-03-20"},{"lineNumber":213,"author":{"gitId":"Jayne1010"},"content":" expectedMessage);","lastModifiedDate":"2024-03-20"},{"lineNumber":214,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":215,"author":{"gitId":"Jayne1010"},"content":" // missing ic prefix","lastModifiedDate":"2024-03-20"},{"lineNumber":216,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2024-03-20"},{"lineNumber":217,"author":{"gitId":"Jayne1010"},"content":" expectedMessage);","lastModifiedDate":"2024-03-20"},{"lineNumber":218,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":219,"author":{"gitId":"-"},"content":" // missing address prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":220,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":221,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":223,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15"},{"lineNumber":224,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_PHONE_BOB + VALID_EMAIL_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":226,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":228,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":229,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":230,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15"},{"lineNumber":231,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-20"},{"lineNumber":232,"author":{"gitId":"Jayne1010"},"content":" + IC_DESC_BOB + AGE_DESC_BOB + SEX_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-20"},{"lineNumber":233,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":235,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15"},{"lineNumber":236,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_PHONE_DESC + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-20"},{"lineNumber":237,"author":{"gitId":"Jayne1010"},"content":" + IC_DESC_BOB + AGE_DESC_BOB + SEX_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-20"},{"lineNumber":238,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":240,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15"},{"lineNumber":241,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC","lastModifiedDate":"2024-03-20"},{"lineNumber":242,"author":{"gitId":"Jayne1010"},"content":" + IC_DESC_BOB + AGE_DESC_BOB + SEX_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-20"},{"lineNumber":243,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":244,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":245,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2017-06-15"},{"lineNumber":246,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-20"},{"lineNumber":247,"author":{"gitId":"Jayne1010"},"content":" + IC_DESC_BOB + AGE_DESC_BOB + SEX_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2024-03-20"},{"lineNumber":248,"author":{"gitId":"Jayne1010"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-20"},{"lineNumber":249,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":250,"author":{"gitId":"Jayne1010"},"content":" // invalid age","lastModifiedDate":"2024-03-20"},{"lineNumber":251,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-20"},{"lineNumber":252,"author":{"gitId":"Jayne1010"},"content":" + IC_DESC_BOB + INVALID_AGE + SEX_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-20"},{"lineNumber":253,"author":{"gitId":"Jayne1010"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-20"},{"lineNumber":254,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":255,"author":{"gitId":"Jayne1010"},"content":" // invalid sex","lastModifiedDate":"2024-03-20"},{"lineNumber":256,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-20"},{"lineNumber":257,"author":{"gitId":"Jayne1010"},"content":" + IC_DESC_BOB + AGE_DESC_BOB + INVALID_SEX + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-20"},{"lineNumber":258,"author":{"gitId":"Jayne1010"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-20"},{"lineNumber":259,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":260,"author":{"gitId":"Jayne1010"},"content":" // invalid ic","lastModifiedDate":"2024-03-20"},{"lineNumber":261,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-20"},{"lineNumber":262,"author":{"gitId":"Jayne1010"},"content":" + INVALID_IC + AGE_DESC_BOB + SEX_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-20"},{"lineNumber":263,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":265,"author":{"gitId":"-"},"content":" // invalid tag","lastModifiedDate":"2017-06-15"},{"lineNumber":266,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":267,"author":{"gitId":"-"},"content":" + INVALID_TAG_DESC + VALID_TAG_FRIEND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":268,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":269,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15"},{"lineNumber":270,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC,","lastModifiedDate":"2017-12-23"},{"lineNumber":271,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":273,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":274,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":275,"author":{"gitId":"-"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2017-12-23"},{"lineNumber":276,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-12-23"},{"lineNumber":277,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":278,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"Jayne1010":90,"drustanyjt":2,"-":186}},{"path":"src/test/java/seedu/address/logic/parser/AddNoteCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"tengcharmaine"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"tengcharmaine"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"tengcharmaine"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"tengcharmaine"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.logic.commands.AddNoteCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"tengcharmaine"},"content":"public class AddNoteCommandParserTest {","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"tengcharmaine"},"content":" private AddNoteCommandParser parser \u003d new AddNoteCommandParser();","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"tengcharmaine"},"content":" private final String nonEmptyNote \u003d \"Some note.\";","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"tengcharmaine"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"tengcharmaine"},"content":" public void parse_missingCompulsoryField_failure() {","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"tengcharmaine"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddNoteCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"tengcharmaine"},"content":" // no parameters","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"tengcharmaine"},"content":" assertParseFailure(parser, AddNoteCommand.COMMAND_WORD, expectedMessage);","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"tengcharmaine"},"content":" // no index","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"tengcharmaine"},"content":" assertParseFailure(parser, AddNoteCommand.COMMAND_WORD + \" \" + nonEmptyNote, expectedMessage);","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"tengcharmaine"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"tengcharmaine"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"tengcharmaine":24}},{"path":"src/test/java/seedu/address/logic/parser/AddressBookParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":7,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.AGE_DESC_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.IC_DESC_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SEX_DESC_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_AGE_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_IDENTITY_CARD_NUMBER_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SEX_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"tengcharmaine"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FLAG;","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"tengcharmaine"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_IC;","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"tengcharmaine"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NOTE;","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":26,"author":{"gitId":"drustanyjt"},"content":"import org.junit.jupiter.api.Disabled;","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.logic.commands.AddNoteCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-06-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24"},{"lineNumber":40,"author":{"gitId":"jiahui0309"},"content":"import seedu.address.model.person.IdentityCardNumber;","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"jiahui0309"},"content":"import seedu.address.model.person.IdentityCardNumberMatchesPredicate;","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.model.person.Note;","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-06-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonUtil;","lastModifiedDate":"2017-06-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":52,"author":{"gitId":"drustanyjt"},"content":" @Disabled(\"Requires add Command to be implemented\")","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(PersonUtil.getAddCommand(person));","lastModifiedDate":"2017-06-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertEquals(new AddCommand(person), command);","lastModifiedDate":"2017-06-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":68,"author":{"gitId":"jiahui0309"},"content":" String args \u003d \"s1234567a\";","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":70,"author":{"gitId":"jiahui0309"},"content":" DeleteCommand.COMMAND_WORD + \" \" + args);","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"jiahui0309"},"content":" assertEquals(new DeleteCommand(new IdentityCardNumberMatchesPredicate(","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"jiahui0309"},"content":" new IdentityCardNumber(args))), command);","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":77,"author":{"gitId":"Jayne1010"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2024-03-21"},{"lineNumber":78,"author":{"gitId":"Jayne1010"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withIC(VALID_IDENTITY_CARD_NUMBER_AMY)","lastModifiedDate":"2024-03-21"},{"lineNumber":79,"author":{"gitId":"Jayne1010"},"content":" .withSex(VALID_SEX_AMY).withAge(VALID_AGE_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"Jayne1010"},"content":" .build();","lastModifiedDate":"2024-03-21"},{"lineNumber":81,"author":{"gitId":"Jayne1010"},"content":" String userInput \u003d EditCommand.COMMAND_WORD + \" \" + VALID_IDENTITY_CARD_NUMBER_AMY","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"Jayne1010"},"content":" + NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2024-03-21"},{"lineNumber":83,"author":{"gitId":"Jayne1010"},"content":" + EMAIL_DESC_AMY + IC_DESC_AMY + AGE_DESC_AMY + SEX_DESC_AMY + ADDRESS_DESC_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":84,"author":{"gitId":"Jayne1010"},"content":" EditCommand expectedCommand \u003d new EditCommand(new IdentityCardNumberMatchesPredicate(","lastModifiedDate":"2024-03-21"},{"lineNumber":85,"author":{"gitId":"Jayne1010"},"content":" new IdentityCardNumber(VALID_IDENTITY_CARD_NUMBER_AMY)), descriptor);","lastModifiedDate":"2024-03-21"},{"lineNumber":86,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":87,"author":{"gitId":"Jayne1010"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(userInput);","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":89,"author":{"gitId":"Jayne1010"},"content":" assertEquals(expectedCommand, command);","lastModifiedDate":"2024-03-21"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":100,"author":{"gitId":"jiahui0309"},"content":" String args \u003d \"s1234567a\";","lastModifiedDate":"2024-03-16"},{"lineNumber":101,"author":{"gitId":"jiahui0309"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(FindCommand.COMMAND_WORD + \" \" + args);","lastModifiedDate":"2024-03-16"},{"lineNumber":102,"author":{"gitId":"jiahui0309"},"content":" assertEquals(new FindCommand(new IdentityCardNumberMatchesPredicate(new IdentityCardNumber(args))), command);","lastModifiedDate":"2024-03-16"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":106,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":112,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD) instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" 3\") instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":117,"author":{"gitId":"tengcharmaine"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":118,"author":{"gitId":"tengcharmaine"},"content":" public void parseCommand_addNote_withReplaceFlag() throws Exception {","lastModifiedDate":"2024-03-17"},{"lineNumber":119,"author":{"gitId":"tengcharmaine"},"content":" final Note note \u003d new Note(\"Some note.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":120,"author":{"gitId":"tengcharmaine"},"content":" AddNoteCommand command \u003d (AddNoteCommand) parser.parseCommand(AddNoteCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2024-03-17"},{"lineNumber":121,"author":{"gitId":"tengcharmaine"},"content":" + PREFIX_IC + \"S0123456Q \" + PREFIX_NOTE + note.value + \" \" + PREFIX_FLAG);","lastModifiedDate":"2024-03-17"},{"lineNumber":122,"author":{"gitId":"tengcharmaine"},"content":" assertEquals(new AddNoteCommand(new IdentityCardNumberMatchesPredicate(new IdentityCardNumber(\"S0123456Q\")),","lastModifiedDate":"2024-03-17"},{"lineNumber":123,"author":{"gitId":"tengcharmaine"},"content":" note, true), command);","lastModifiedDate":"2024-03-17"},{"lineNumber":124,"author":{"gitId":"tengcharmaine"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":125,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":126,"author":{"gitId":"tengcharmaine"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":127,"author":{"gitId":"tengcharmaine"},"content":" public void parseCommand_addNote_withoutReplaceFlag() throws Exception {","lastModifiedDate":"2024-03-17"},{"lineNumber":128,"author":{"gitId":"tengcharmaine"},"content":" final Note note \u003d new Note(\"Some note.\");","lastModifiedDate":"2024-03-16"},{"lineNumber":129,"author":{"gitId":"tengcharmaine"},"content":" AddNoteCommand command \u003d (AddNoteCommand) parser.parseCommand(AddNoteCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2024-03-16"},{"lineNumber":130,"author":{"gitId":"tengcharmaine"},"content":" + PREFIX_IC + \"S0123456Q \" + PREFIX_NOTE + note.value);","lastModifiedDate":"2024-03-16"},{"lineNumber":131,"author":{"gitId":"tengcharmaine"},"content":" assertEquals(new AddNoteCommand(new IdentityCardNumberMatchesPredicate(new IdentityCardNumber(\"S0123456Q\")),","lastModifiedDate":"2024-03-16"},{"lineNumber":132,"author":{"gitId":"tengcharmaine"},"content":" note, false), command);","lastModifiedDate":"2024-03-16"},{"lineNumber":133,"author":{"gitId":"tengcharmaine"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":134,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":136,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":141,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":142,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":145,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"Jayne1010":27,"drustanyjt":2,"tengcharmaine":23,"-":84,"jiahui0309":9}},{"path":"src/test/java/seedu/address/logic/parser/DeleteCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-09"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-06-09"},{"lineNumber":10,"author":{"gitId":"jiahui0309"},"content":"import seedu.address.model.person.IdentityCardNumber;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"jiahui0309"},"content":"import seedu.address.model.person.IdentityCardNumberMatchesPredicate;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * As we are only doing white-box testing, our test cases do not cover path variations","lastModifiedDate":"2017-06-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * outside of the DeleteCommand code. For example, inputs \"1\" and \"1 abc\" take the","lastModifiedDate":"2017-06-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * same path through the DeleteCommand, and therefore we test only one of them.","lastModifiedDate":"2017-06-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * The path variation for those two cases occur inside the ParserUtil, and","lastModifiedDate":"2017-06-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * therefore should be covered by the ParserUtilTest.","lastModifiedDate":"2017-06-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class DeleteCommandParserTest {","lastModifiedDate":"2017-06-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private DeleteCommandParser parser \u003d new DeleteCommandParser();","lastModifiedDate":"2017-06-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void parse_validArgs_returnsDeleteCommand() {","lastModifiedDate":"2017-08-15"},{"lineNumber":26,"author":{"gitId":"jiahui0309"},"content":" DeleteCommand expectedDeleteCommand \u003d new DeleteCommand(new IdentityCardNumberMatchesPredicate(","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"jiahui0309"},"content":" new IdentityCardNumber(\"S1234567A\")));","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"jiahui0309"},"content":" assertParseSuccess(parser, \"S1234567A\", expectedDeleteCommand);","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":33,"author":{"gitId":"jiahui0309"},"content":" // IC with incorrect format","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"jiahui0309"},"content":" assertParseFailure(parser, \"S1234\", String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"jiahui0309"},"content":" // IC with incorrect format and additional arguments","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"jiahui0309"},"content":" assertParseFailure(parser, \"S1234 extra\", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"jiahui0309"},"content":" DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"jiahui0309"},"content":" // IC with correct format but contains non-alphanumeric characters","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"jiahui0309"},"content":" assertParseFailure(parser, \"S1234$%^\", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"jiahui0309"},"content":" DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09"},{"lineNumber":44,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-09"}],"authorContributionMap":{"-":29,"jiahui0309":15}},{"path":"src/test/java/seedu/address/logic/parser/EditCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-04"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":6,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.AGE_DESC_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.IC_DESC_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":17,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SEX_DESC_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":19,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_AGE_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":21,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_IDENTITY_CARD_NUMBER_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_IDENTITY_CARD_NUMBER_BOB;","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":25,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SEX_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":32,"author":{"gitId":"Jayne1010"},"content":"import org.junit.jupiter.api.Disabled;","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-05-04"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-04"},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-05-04"},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-04"},{"lineNumber":40,"author":{"gitId":"Jayne1010"},"content":"import seedu.address.model.person.IdentityCardNumber;","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"Jayne1010"},"content":"import seedu.address.model.person.IdentityCardNumberMatchesPredicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-04"},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-04"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":46,"author":{"gitId":"Jayne1010"},"content":"@Disabled(\"Boo\")","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":"public class EditCommandParserTest {","lastModifiedDate":"2017-05-04"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":49,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2017-05-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-05-04"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":52,"author":{"gitId":"Jayne1010"},"content":" private static final String IC_INVALID \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"Jayne1010"},"content":" String.format(IdentityCardNumber.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" private EditCommandParser parser \u003d new EditCommandParser();","lastModifiedDate":"2017-05-04"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":60,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":61,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, \"S0123456A\", EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":63,"author":{"gitId":"-"},"content":" // no index and no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2017-06-06"},{"lineNumber":69,"author":{"gitId":"Jayne1010"},"content":" // too short string","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, \"S09\" + NAME_DESC_AMY, IC_INVALID);","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":72,"author":{"gitId":"Jayne1010"},"content":" // Wrong format","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, \"P0123456A\" + NAME_DESC_AMY, IC_INVALID);","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06"},{"lineNumber":75,"author":{"gitId":"-"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2017-06-06"},{"lineNumber":76,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, \"some random string\", IC_INVALID);","lastModifiedDate":"2024-03-21"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06"},{"lineNumber":78,"author":{"gitId":"-"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2017-06-06"},{"lineNumber":79,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, \"1 i/ string\", IC_INVALID);","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":84,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, \"S0123456A\" + INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2024-03-21"},{"lineNumber":85,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, \"S0123456A\" + INVALID_PHONE_DESC,","lastModifiedDate":"2024-03-21"},{"lineNumber":86,"author":{"gitId":"Jayne1010"},"content":" Phone.MESSAGE_CONSTRAINTS); // invalid phone","lastModifiedDate":"2024-03-17"},{"lineNumber":87,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, \"S0123456A\" + INVALID_EMAIL_DESC, Email.MESSAGE_CONSTRAINTS); // invalid email","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, \"S0123456A\" + INVALID_ADDRESS_DESC, Address.MESSAGE_CONSTRAINTS); // invalid address","lastModifiedDate":"2024-03-21"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":90,"author":{"gitId":"-"},"content":" // invalid phone followed by valid email","lastModifiedDate":"2017-05-04"},{"lineNumber":91,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, \"S0123456A\" + INVALID_PHONE_DESC + EMAIL_DESC_AMY,","lastModifiedDate":"2024-03-21"},{"lineNumber":92,"author":{"gitId":"Jayne1010"},"content":" Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":94,"author":{"gitId":"-"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2017-05-04"},{"lineNumber":95,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, \"S0123456A\" + INVALID_NAME_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2024-03-21"},{"lineNumber":96,"author":{"gitId":"Jayne1010"},"content":" + VALID_ADDRESS_AMY + VALID_PHONE_AMY,","lastModifiedDate":"2024-03-21"},{"lineNumber":97,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":100,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":101,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":102,"author":{"gitId":"Jayne1010"},"content":" String userInput \u003d VALID_IDENTITY_CARD_NUMBER_AMY + NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2024-03-21"},{"lineNumber":103,"author":{"gitId":"Jayne1010"},"content":" + EMAIL_DESC_AMY + IC_DESC_AMY + AGE_DESC_AMY + SEX_DESC_AMY + ADDRESS_DESC_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":104,"author":{"gitId":"Jayne1010"},"content":" IdentityCardNumberMatchesPredicate ic \u003d new IdentityCardNumberMatchesPredicate(","lastModifiedDate":"2024-03-21"},{"lineNumber":105,"author":{"gitId":"Jayne1010"},"content":" new IdentityCardNumber(VALID_IDENTITY_CARD_NUMBER_AMY));","lastModifiedDate":"2024-03-21"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":107,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-05-04"},{"lineNumber":108,"author":{"gitId":"Jayne1010"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withIC(VALID_IDENTITY_CARD_NUMBER_AMY)","lastModifiedDate":"2024-03-21"},{"lineNumber":109,"author":{"gitId":"Jayne1010"},"content":" .withSex(VALID_SEX_AMY).withAge(VALID_AGE_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2024-03-21"},{"lineNumber":110,"author":{"gitId":"Jayne1010"},"content":" .build();","lastModifiedDate":"2024-03-21"},{"lineNumber":111,"author":{"gitId":"Jayne1010"},"content":" EditCommand expectedCommand \u003d new EditCommand(ic, descriptor);","lastModifiedDate":"2024-03-21"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":117,"author":{"gitId":"-"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":118,"author":{"gitId":"Jayne1010"},"content":" String userInput \u003d VALID_IDENTITY_CARD_NUMBER_AMY + NAME_DESC_AMY + PHONE_DESC_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":119,"author":{"gitId":"Jayne1010"},"content":" IdentityCardNumberMatchesPredicate ic \u003d new IdentityCardNumberMatchesPredicate(","lastModifiedDate":"2024-03-21"},{"lineNumber":120,"author":{"gitId":"Jayne1010"},"content":" new IdentityCardNumber(VALID_IDENTITY_CARD_NUMBER_AMY));","lastModifiedDate":"2024-03-21"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":122,"author":{"gitId":"Jayne1010"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2024-03-21"},{"lineNumber":123,"author":{"gitId":"Jayne1010"},"content":" .withPhone(VALID_PHONE_AMY).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":124,"author":{"gitId":"Jayne1010"},"content":" EditCommand expectedCommand \u003d new EditCommand(ic, descriptor);","lastModifiedDate":"2024-03-21"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":129,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":130,"author":{"gitId":"-"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":131,"author":{"gitId":"Jayne1010"},"content":" IdentityCardNumberMatchesPredicate ic \u003d new IdentityCardNumberMatchesPredicate(","lastModifiedDate":"2024-03-21"},{"lineNumber":132,"author":{"gitId":"Jayne1010"},"content":" new IdentityCardNumber(VALID_IDENTITY_CARD_NUMBER_AMY));","lastModifiedDate":"2024-03-21"},{"lineNumber":133,"author":{"gitId":"-"},"content":" // name","lastModifiedDate":"2017-05-04"},{"lineNumber":134,"author":{"gitId":"Jayne1010"},"content":" String userInput \u003d VALID_IDENTITY_CARD_NUMBER_AMY + NAME_DESC_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":135,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":136,"author":{"gitId":"Jayne1010"},"content":" EditCommand expectedCommand \u003d new EditCommand(ic, descriptor);","lastModifiedDate":"2024-03-21"},{"lineNumber":137,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":139,"author":{"gitId":"-"},"content":" // phone","lastModifiedDate":"2017-05-04"},{"lineNumber":140,"author":{"gitId":"Jayne1010"},"content":" userInput \u003d VALID_IDENTITY_CARD_NUMBER_AMY + PHONE_DESC_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":141,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":142,"author":{"gitId":"Jayne1010"},"content":" expectedCommand \u003d new EditCommand(ic, descriptor);","lastModifiedDate":"2024-03-21"},{"lineNumber":143,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":145,"author":{"gitId":"-"},"content":" // email","lastModifiedDate":"2017-05-04"},{"lineNumber":146,"author":{"gitId":"Jayne1010"},"content":" userInput \u003d VALID_IDENTITY_CARD_NUMBER_AMY + EMAIL_DESC_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":147,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":148,"author":{"gitId":"Jayne1010"},"content":" expectedCommand \u003d new EditCommand(ic, descriptor);","lastModifiedDate":"2024-03-21"},{"lineNumber":149,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":151,"author":{"gitId":"Jayne1010"},"content":" // sex","lastModifiedDate":"2024-03-21"},{"lineNumber":152,"author":{"gitId":"Jayne1010"},"content":" userInput \u003d VALID_IDENTITY_CARD_NUMBER_AMY + SEX_DESC_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":153,"author":{"gitId":"Jayne1010"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withSex(VALID_SEX_AMY).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":154,"author":{"gitId":"Jayne1010"},"content":" expectedCommand \u003d new EditCommand(ic, descriptor);","lastModifiedDate":"2024-03-21"},{"lineNumber":155,"author":{"gitId":"Jayne1010"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-21"},{"lineNumber":156,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":157,"author":{"gitId":"Jayne1010"},"content":" // age","lastModifiedDate":"2024-03-21"},{"lineNumber":158,"author":{"gitId":"Jayne1010"},"content":" userInput \u003d VALID_IDENTITY_CARD_NUMBER_AMY + AGE_DESC_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":159,"author":{"gitId":"Jayne1010"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withAge(VALID_AGE_AMY).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":160,"author":{"gitId":"Jayne1010"},"content":" expectedCommand \u003d new EditCommand(ic, descriptor);","lastModifiedDate":"2024-03-21"},{"lineNumber":161,"author":{"gitId":"Jayne1010"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-21"},{"lineNumber":162,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":163,"author":{"gitId":"Jayne1010"},"content":" // IC number","lastModifiedDate":"2024-03-21"},{"lineNumber":164,"author":{"gitId":"Jayne1010"},"content":" userInput \u003d VALID_IDENTITY_CARD_NUMBER_AMY + IC_DESC_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":165,"author":{"gitId":"Jayne1010"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withIC(VALID_IDENTITY_CARD_NUMBER_AMY).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":166,"author":{"gitId":"Jayne1010"},"content":" expectedCommand \u003d new EditCommand(ic, descriptor);","lastModifiedDate":"2024-03-21"},{"lineNumber":167,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":169,"author":{"gitId":"Jayne1010"},"content":" // address","lastModifiedDate":"2024-03-21"},{"lineNumber":170,"author":{"gitId":"Jayne1010"},"content":" userInput \u003d VALID_IDENTITY_CARD_NUMBER_AMY + ADDRESS_DESC_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":171,"author":{"gitId":"Jayne1010"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withAddress(VALID_ADDRESS_AMY).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":172,"author":{"gitId":"Jayne1010"},"content":" expectedCommand \u003d new EditCommand(ic, descriptor);","lastModifiedDate":"2024-03-21"},{"lineNumber":173,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":176,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":177,"author":{"gitId":"-"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":178,"author":{"gitId":"-"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2023-07-14"},{"lineNumber":179,"author":{"gitId":"-"},"content":" // AddCommandParserTest#parse_repeatedNonTagValue_failure()","lastModifiedDate":"2023-07-14"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":181,"author":{"gitId":"-"},"content":" // valid followed by invalid","lastModifiedDate":"2023-07-14"},{"lineNumber":182,"author":{"gitId":"Jayne1010"},"content":" String userInput \u003d VALID_IDENTITY_CARD_NUMBER_BOB + PHONE_DESC_BOB + INVALID_PHONE_DESC;","lastModifiedDate":"2024-03-21"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":184,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":186,"author":{"gitId":"-"},"content":" // invalid followed by valid","lastModifiedDate":"2023-07-14"},{"lineNumber":187,"author":{"gitId":"Jayne1010"},"content":" userInput \u003d VALID_IDENTITY_CARD_NUMBER_AMY + INVALID_PHONE_DESC + PHONE_DESC_BOB;","lastModifiedDate":"2024-03-21"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":189,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":191,"author":{"gitId":"Jayne1010"},"content":" // multiple valid fields repeated","lastModifiedDate":"2024-03-21"},{"lineNumber":192,"author":{"gitId":"Jayne1010"},"content":" userInput \u003d VALID_IDENTITY_CARD_NUMBER_BOB + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2024-03-21"},{"lineNumber":193,"author":{"gitId":"Jayne1010"},"content":" + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2024-03-21"},{"lineNumber":194,"author":{"gitId":"Jayne1010"},"content":" + PHONE_DESC_BOB + ADDRESS_DESC_BOB + EMAIL_DESC_BOB;","lastModifiedDate":"2024-03-21"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":196,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":197,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":199,"author":{"gitId":"-"},"content":" // multiple invalid values","lastModifiedDate":"2023-07-14"},{"lineNumber":200,"author":{"gitId":"Jayne1010"},"content":" userInput \u003d VALID_IDENTITY_CARD_NUMBER_BOB + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2024-03-21"},{"lineNumber":201,"author":{"gitId":"-"},"content":" + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC;","lastModifiedDate":"2023-07-14"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":203,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":204,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":205,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":206,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-04"}],"authorContributionMap":{"Jayne1010":79,"-":127}},{"path":"src/test/java/seedu/address/logic/parser/FindCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-27"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":6,"author":{"gitId":"jiahui0309"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":11,"author":{"gitId":"jiahui0309"},"content":"import seedu.address.model.person.IdentityCardNumber;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"jiahui0309"},"content":"import seedu.address.model.person.IdentityCardNumberMatchesPredicate;","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class FindCommandParserTest {","lastModifiedDate":"2017-06-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":" private FindCommandParser parser \u003d new FindCommandParser();","lastModifiedDate":"2017-06-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public void parse_emptyArg_throwsParseException() {","lastModifiedDate":"2017-06-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \" \", String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-07-06"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void parse_validArgs_returnsFindCommand() {","lastModifiedDate":"2017-08-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" FindCommand expectedFindCommand \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"jiahui0309"},"content":" new FindCommand(new IdentityCardNumberMatchesPredicate(new IdentityCardNumber(\"S1234567A\")));","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"jiahui0309"},"content":" assertParseSuccess(parser, \"S1234567A\", expectedFindCommand);","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" // multiple whitespaces between keywords","lastModifiedDate":"2017-06-27"},{"lineNumber":30,"author":{"gitId":"jiahui0309"},"content":" assertParseSuccess(parser, \" \\n\"","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"jiahui0309"},"content":" + \" S1234567A \\n\"","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"jiahui0309"},"content":" + \" \\t \\t\", expectedFindCommand);","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"jiahui0309"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"jiahui0309"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"jiahui0309"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"jiahui0309"},"content":" // IC with incorrect format","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"jiahui0309"},"content":" assertParseFailure(parser, \"S1234\", IdentityCardNumber.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"jiahui0309"},"content":" // IC with incorrect format and additional arguments","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"jiahui0309"},"content":" assertParseFailure(parser, \"S1234 extra\", IdentityCardNumber.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"jiahui0309"},"content":" // IC with correct format but contains non-alphanumeric characters","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"jiahui0309"},"content":" assertParseFailure(parser, \"S1234$%^\", IdentityCardNumber.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"jiahui0309"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"jiahui0309"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"jiahui0309"},"content":" public void parse_nullArgs_throwsNullPointerException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"jiahui0309"},"content":" assertThrows(NullPointerException.class, () -\u003e parser.parse(null));","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-27"}],"authorContributionMap":{"-":27,"jiahui0309":25}},{"path":"src/test/java/seedu/address/logic/parser/ParserUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.ParserUtil.MESSAGE_INVALID_INDEX;","lastModifiedDate":"2017-06-02"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-05-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-05-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-05-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-05-22"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-22"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-22"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-22"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-22"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class ParserUtilTest {","lastModifiedDate":"2017-05-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2017-05-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2017-05-22"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2017-05-22"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2017-05-22"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2017-05-22"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d \"Rachel Walker\";","lastModifiedDate":"2017-05-22"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d \"123456\";","lastModifiedDate":"2017-05-22"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d \"123 Main Street #0505\";","lastModifiedDate":"2017-05-22"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d \"rachel@example.com\";","lastModifiedDate":"2017-05-22"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_1 \u003d \"friend\";","lastModifiedDate":"2017-05-22"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_2 \u003d \"neighbour\";","lastModifiedDate":"2017-05-22"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final String WHITESPACE \u003d \" \\t\\r\\n\";","lastModifiedDate":"2017-05-29"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void parseIndex_invalidInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseIndex(\"10 a\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void parseIndex_outOfRangeInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_INVALID_INDEX, ()","lastModifiedDate":"2019-03-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" -\u003e ParserUtil.parseIndex(Long.toString(Integer.MAX_VALUE + 1)));","lastModifiedDate":"2019-03-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void parseIndex_validInput_success() throws Exception {","lastModifiedDate":"2017-05-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // No whitespaces","lastModifiedDate":"2017-05-26"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\"1\"));","lastModifiedDate":"2017-05-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // Leading and trailing whitespaces","lastModifiedDate":"2017-05-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\" 1 \"));","lastModifiedDate":"2017-05-25"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void parseName_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseName((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void parseName_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseName(INVALID_NAME));","lastModifiedDate":"2019-03-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void parseName_validValueWithoutWhitespace_returnsName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":71,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-22"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(VALID_NAME));","lastModifiedDate":"2017-05-29"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-29"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void parseName_validValueWithWhitespace_returnsTrimmedName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":77,"author":{"gitId":"-"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_NAME + WHITESPACE;","lastModifiedDate":"2017-05-29"},{"lineNumber":78,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-29"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(nameWithWhitespace));","lastModifiedDate":"2017-05-29"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void parsePhone_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parsePhone((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void parsePhone_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parsePhone(INVALID_PHONE));","lastModifiedDate":"2019-03-14"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithoutWhitespace_returnsPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":94,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-22"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(VALID_PHONE));","lastModifiedDate":"2017-05-30"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":99,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithWhitespace_returnsTrimmedPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":100,"author":{"gitId":"-"},"content":" String phoneWithWhitespace \u003d WHITESPACE + VALID_PHONE + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":101,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-30"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(phoneWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":106,"author":{"gitId":"-"},"content":" public void parseAddress_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseAddress((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":111,"author":{"gitId":"-"},"content":" public void parseAddress_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseAddress(INVALID_ADDRESS));","lastModifiedDate":"2019-03-14"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":116,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithoutWhitespace_returnsAddress() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":117,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-22"},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(VALID_ADDRESS));","lastModifiedDate":"2017-05-30"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":122,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithWhitespace_returnsTrimmedAddress() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":123,"author":{"gitId":"-"},"content":" String addressWithWhitespace \u003d WHITESPACE + VALID_ADDRESS + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":124,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-30"},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(addressWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":129,"author":{"gitId":"-"},"content":" public void parseEmail_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseEmail((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":133,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":134,"author":{"gitId":"-"},"content":" public void parseEmail_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":135,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseEmail(INVALID_EMAIL));","lastModifiedDate":"2019-03-14"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":138,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":139,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithoutWhitespace_returnsEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":140,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-22"},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(VALID_EMAIL));","lastModifiedDate":"2017-05-30"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":144,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":145,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithWhitespace_returnsTrimmedEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":146,"author":{"gitId":"-"},"content":" String emailWithWhitespace \u003d WHITESPACE + VALID_EMAIL + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":147,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-30"},{"lineNumber":148,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(emailWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":151,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":152,"author":{"gitId":"-"},"content":" public void parseTag_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTag(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":156,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":157,"author":{"gitId":"-"},"content":" public void parseTag_invalidValue_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTag(INVALID_TAG));","lastModifiedDate":"2019-03-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":161,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":162,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithoutWhitespace_returnsTag() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":163,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30"},{"lineNumber":164,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(VALID_TAG_1));","lastModifiedDate":"2017-05-30"},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":167,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":168,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithWhitespace_returnsTrimmedTag() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":169,"author":{"gitId":"-"},"content":" String tagWithWhitespace \u003d WHITESPACE + VALID_TAG_1 + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":170,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30"},{"lineNumber":171,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(tagWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":174,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":175,"author":{"gitId":"-"},"content":" public void parseTags_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTags(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":179,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":180,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithInvalidTags_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, INVALID_TAG)));","lastModifiedDate":"2019-03-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":184,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":185,"author":{"gitId":"-"},"content":" public void parseTags_emptyCollection_returnsEmptySet() throws Exception {","lastModifiedDate":"2017-05-22"},{"lineNumber":186,"author":{"gitId":"-"},"content":" assertTrue(ParserUtil.parseTags(Collections.emptyList()).isEmpty());","lastModifiedDate":"2017-05-22"},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":189,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":190,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithValidTags_returnsTagSet() throws Exception {","lastModifiedDate":"2017-05-22"},{"lineNumber":191,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e actualTagSet \u003d ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, VALID_TAG_2));","lastModifiedDate":"2017-05-22"},{"lineNumber":192,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e expectedTagSet \u003d new HashSet\u003cTag\u003e(Arrays.asList(new Tag(VALID_TAG_1), new Tag(VALID_TAG_2)));","lastModifiedDate":"2017-05-22"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":194,"author":{"gitId":"-"},"content":" assertEquals(expectedTagSet, actualTagSet);","lastModifiedDate":"2017-05-22"},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":196,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-22"},{"lineNumber":197,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"Jayne1010":1,"-":196}},{"path":"src/test/java/seedu/address/model/person/AgeTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"drustanyjt"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"drustanyjt"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"drustanyjt"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"drustanyjt"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"drustanyjt"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"drustanyjt"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"drustanyjt"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"drustanyjt"},"content":"public class AgeTest {","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"drustanyjt"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"drustanyjt"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"drustanyjt"},"content":" assertThrows(NullPointerException.class, () -\u003e new Age(null));","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"drustanyjt"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"drustanyjt"},"content":" public void constructor_invalidAge_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"drustanyjt"},"content":" String invalidAge \u003d \"\";","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"drustanyjt"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Age(invalidAge));","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"drustanyjt"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"drustanyjt"},"content":" public void isValidAge() {","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"drustanyjt"},"content":" // null age","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"drustanyjt"},"content":" assertThrows(NullPointerException.class, () -\u003e Age.isValidAge(null));","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"drustanyjt"},"content":" // invalid age","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"drustanyjt"},"content":" assertFalse(Age.isValidAge(\"\")); // empty string","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"drustanyjt"},"content":" assertFalse(Age.isValidAge(\" \")); // spaces only","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"drustanyjt"},"content":" assertFalse(Age.isValidAge(\"age\")); // non-numeric","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"drustanyjt"},"content":" assertFalse(Age.isValidAge(\"-1\")); // negative number","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"drustanyjt"},"content":" // valid age","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"drustanyjt"},"content":" assertTrue(Age.isValidAge(\"1\")); // one number","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"drustanyjt"},"content":" assertTrue(Age.isValidAge(\"12\")); // two numbers","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"drustanyjt"},"content":" assertTrue(Age.isValidAge(\"123\")); // three numbers","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"drustanyjt"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"drustanyjt"},"content":" public void equals() {","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"drustanyjt"},"content":" Age age \u003d new Age(\"123\");","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"drustanyjt"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"drustanyjt"},"content":" assertTrue(age.equals(new Age(\"123\")));","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"drustanyjt"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"drustanyjt"},"content":" assertTrue(age.equals(age));","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"drustanyjt"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"drustanyjt"},"content":" assertFalse(age.equals(null));","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"drustanyjt"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"drustanyjt"},"content":" assertFalse(age.equals(5.0f));","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"drustanyjt"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"drustanyjt"},"content":" assertFalse(age.equals(new Age(\"321\")));","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"drustanyjt"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"drustanyjt"},"content":" public void hash() {","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"drustanyjt"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"drustanyjt"},"content":" Age ageCopy \u003d new Age(\"123\");","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"drustanyjt"},"content":" assertEquals(ageCopy.hashCode(), ageCopy.hashCode());","lastModifiedDate":"2024-03-16"},{"lineNumber":66,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":67,"author":{"gitId":"drustanyjt"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":68,"author":{"gitId":"drustanyjt"},"content":" Age age \u003d new Age(\"123\");","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"drustanyjt"},"content":" assertEquals(age.hashCode(), age.hashCode());","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"drustanyjt"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"drustanyjt"},"content":" Age differentAge \u003d new Age(\"321\");","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"drustanyjt"},"content":" assertNotEquals(age.hashCode(), differentAge.hashCode());","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":75,"author":{"gitId":"drustanyjt"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"drustanyjt":75}},{"path":"src/test/java/seedu/address/model/person/IdentityCardNumberTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"drustanyjt"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"drustanyjt"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"drustanyjt"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"drustanyjt"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"drustanyjt"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"drustanyjt"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"drustanyjt"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"drustanyjt"},"content":"public class IdentityCardNumberTest {","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"drustanyjt"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"drustanyjt"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"drustanyjt"},"content":" assertThrows(NullPointerException.class, () -\u003e new IdentityCardNumber(null));","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"drustanyjt"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"drustanyjt"},"content":" public void constructor_invalidIdentityCardNumber_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"drustanyjt"},"content":" String invalidIdentityCardNumber \u003d \"\";","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"drustanyjt"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new IdentityCardNumber(invalidIdentityCardNumber));","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"drustanyjt"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"drustanyjt"},"content":" public void isValidIdentityCardNumber() {","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"drustanyjt"},"content":" // null identity card number","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"drustanyjt"},"content":" assertThrows(NullPointerException.class, () -\u003e IdentityCardNumber.isValidIdentityCardNumber(null));","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"drustanyjt"},"content":" // invalid identity card number","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"drustanyjt"},"content":" assertFalse(IdentityCardNumber.isValidIdentityCardNumber(\"\")); // empty string","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"drustanyjt"},"content":" assertFalse(IdentityCardNumber.isValidIdentityCardNumber(\" \")); // spaces only","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"drustanyjt"},"content":" assertFalse(IdentityCardNumber.isValidIdentityCardNumber(\"1234abc\")); // alphanumeric","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"drustanyjt"},"content":" assertFalse(IdentityCardNumber.isValidIdentityCardNumber(\"1234 5678\")); // spaces within digits","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"drustanyjt"},"content":" // valid identity card number","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"drustanyjt"},"content":" assertTrue(IdentityCardNumber.isValidIdentityCardNumber(\"S1234567A\")); // starts with S","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"drustanyjt"},"content":" assertTrue(IdentityCardNumber.isValidIdentityCardNumber(\"T1234567A\")); // starts with T","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"drustanyjt"},"content":" assertTrue(IdentityCardNumber.isValidIdentityCardNumber(\"F1234567A\")); // starts with F","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"drustanyjt"},"content":" assertTrue(IdentityCardNumber.isValidIdentityCardNumber(\"G1234567A\")); // starts with G","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"drustanyjt"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"drustanyjt"},"content":" public void equals() {","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"drustanyjt"},"content":" // remember the format is [STFG][0-9]{7}[A-Z]","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"drustanyjt"},"content":" IdentityCardNumber identityCardNumber \u003d new IdentityCardNumber(\"S1234567A\");","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"drustanyjt"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"drustanyjt"},"content":" IdentityCardNumber identityCardNumberCopy \u003d new IdentityCardNumber(\"S1234567A\");","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"drustanyjt"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"drustanyjt"},"content":" assertTrue(identityCardNumber.equals(identityCardNumber));","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"drustanyjt"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"drustanyjt"},"content":" assertFalse(identityCardNumber.equals(null));","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"drustanyjt"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"drustanyjt"},"content":" assertFalse(identityCardNumber.equals(5.0f));","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"drustanyjt"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"drustanyjt"},"content":" assertFalse(identityCardNumber.equals(new IdentityCardNumber(\"T1234567A\")));","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"drustanyjt"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"drustanyjt"},"content":" public void hash() {","lastModifiedDate":"2024-03-16"},{"lineNumber":66,"author":{"gitId":"drustanyjt"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":67,"author":{"gitId":"drustanyjt"},"content":" IdentityCardNumber identityCardNumber \u003d new IdentityCardNumber(\"S1234567A\");","lastModifiedDate":"2024-03-16"},{"lineNumber":68,"author":{"gitId":"drustanyjt"},"content":" assertEquals(identityCardNumber.hashCode(), identityCardNumber.hashCode());","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"drustanyjt"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"drustanyjt"},"content":" IdentityCardNumber identityCardNumberCopy \u003d new IdentityCardNumber(\"S1234567A\");","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"drustanyjt"},"content":" assertEquals(identityCardNumber.hashCode(), identityCardNumberCopy.hashCode());","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"drustanyjt"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":75,"author":{"gitId":"drustanyjt"},"content":" assertNotEquals(identityCardNumber.hashCode(), new IdentityCardNumber(\"T1234567A\").hashCode());","lastModifiedDate":"2024-03-16"},{"lineNumber":76,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":77,"author":{"gitId":"drustanyjt"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"drustanyjt":77}},{"path":"src/test/java/seedu/address/model/person/NoteTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"tengcharmaine"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"tengcharmaine"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"tengcharmaine"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"tengcharmaine"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"tengcharmaine"},"content":"public class NoteTest {","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"tengcharmaine"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"tengcharmaine"},"content":" public void equals() {","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"tengcharmaine"},"content":" Note remark \u003d new Note(\"Hello\");","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"tengcharmaine"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"tengcharmaine"},"content":" assertTrue(remark.equals(remark));","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"tengcharmaine"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"tengcharmaine"},"content":" Note remarkCopy \u003d new Note(remark.value);","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"tengcharmaine"},"content":" assertTrue(remark.equals(remarkCopy));","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"tengcharmaine"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"tengcharmaine"},"content":" assertFalse(remark.equals(1));","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"tengcharmaine"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"tengcharmaine"},"content":" assertFalse(remark.equals(null));","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"tengcharmaine"},"content":" // different remark -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"tengcharmaine"},"content":" Note differentRemark \u003d new Note(\"Bye\");","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"tengcharmaine"},"content":" assertFalse(remark.equals(differentRemark));","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"tengcharmaine"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"tengcharmaine"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"tengcharmaine":31}},{"path":"src/test/java/seedu/address/model/person/PersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2018-03-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"drustanyjt"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-04-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-04-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-03-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class PersonTest {","lastModifiedDate":"2018-03-26"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void asObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":24,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2018-03-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e person.getTags().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void isSamePerson() {","lastModifiedDate":"2018-04-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(ALICE));","lastModifiedDate":"2018-04-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(null));","lastModifiedDate":"2018-04-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":" // same name, all other attributes different -\u003e returns true","lastModifiedDate":"2020-12-18"},{"lineNumber":37,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2020-12-18"},{"lineNumber":38,"author":{"gitId":"-"},"content":" .withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2020-12-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2020-12-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":41,"author":{"gitId":"jiahui0309"},"content":" // different name, all other attributes same -\u003e returns true","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":43,"author":{"gitId":"jiahui0309"},"content":" assertTrue(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":45,"author":{"gitId":"jiahui0309"},"content":" // name differs in case, all other attributes same -\u003e returns true","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":" Person editedBob \u003d new PersonBuilder(BOB).withName(VALID_NAME_BOB.toLowerCase()).build();","lastModifiedDate":"2020-12-18"},{"lineNumber":47,"author":{"gitId":"jiahui0309"},"content":" assertTrue(BOB.isSamePerson(editedBob));","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":49,"author":{"gitId":"jiahui0309"},"content":" // name has trailing spaces, all other attributes same -\u003e returns true","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"-"},"content":" String nameWithTrailingSpaces \u003d VALID_NAME_BOB + \" \";","lastModifiedDate":"2020-12-18"},{"lineNumber":51,"author":{"gitId":"-"},"content":" editedBob \u003d new PersonBuilder(BOB).withName(nameWithTrailingSpaces).build();","lastModifiedDate":"2020-12-18"},{"lineNumber":52,"author":{"gitId":"jiahui0309"},"content":" assertTrue(BOB.isSamePerson(editedBob));","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" Person aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2018-04-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2018-04-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":64,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(null));","lastModifiedDate":"2018-04-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":67,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2018-04-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2018-04-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":77,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":81,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":85,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2018-04-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2018-04-18"},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-18"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":94,"author":{"gitId":"drustanyjt"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":95,"author":{"gitId":"drustanyjt"},"content":" public void hash() {","lastModifiedDate":"2024-03-16"},{"lineNumber":96,"author":{"gitId":"drustanyjt"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":97,"author":{"gitId":"drustanyjt"},"content":" Person aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":98,"author":{"gitId":"drustanyjt"},"content":" assertEquals(ALICE.hashCode(), aliceCopy.hashCode());","lastModifiedDate":"2024-03-16"},{"lineNumber":99,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":100,"author":{"gitId":"drustanyjt"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":101,"author":{"gitId":"drustanyjt"},"content":" Person bobCopy \u003d new PersonBuilder(BOB).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":102,"author":{"gitId":"drustanyjt"},"content":" assertEquals(BOB.hashCode(), bobCopy.hashCode());","lastModifiedDate":"2024-03-16"},{"lineNumber":103,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":104,"author":{"gitId":"drustanyjt"},"content":" // different name -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":105,"author":{"gitId":"drustanyjt"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":106,"author":{"gitId":"drustanyjt"},"content":" assertNotEquals(ALICE.hashCode(), editedAlice.hashCode());","lastModifiedDate":"2024-03-16"},{"lineNumber":107,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":108,"author":{"gitId":"drustanyjt"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":109,"author":{"gitId":"drustanyjt"},"content":" Person editedAlice2 \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":110,"author":{"gitId":"drustanyjt"},"content":" assertNotEquals(ALICE.hashCode(), editedAlice2.hashCode());","lastModifiedDate":"2024-03-16"},{"lineNumber":111,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":112,"author":{"gitId":"drustanyjt"},"content":" // different email -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":113,"author":{"gitId":"drustanyjt"},"content":" Person editedAlice3 \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":114,"author":{"gitId":"drustanyjt"},"content":" assertNotEquals(ALICE.hashCode(), editedAlice3.hashCode());","lastModifiedDate":"2024-03-16"},{"lineNumber":115,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":116,"author":{"gitId":"drustanyjt"},"content":" // different address -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":117,"author":{"gitId":"drustanyjt"},"content":" Person editedAlice4 \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":118,"author":{"gitId":"drustanyjt"},"content":" assertNotEquals(ALICE.hashCode(), editedAlice4.hashCode());","lastModifiedDate":"2024-03-16"},{"lineNumber":119,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":120,"author":{"gitId":"drustanyjt"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":121,"author":{"gitId":"drustanyjt"},"content":" Person editedAlice5 \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":122,"author":{"gitId":"drustanyjt"},"content":" assertNotEquals(ALICE.hashCode(), editedAlice5.hashCode());","lastModifiedDate":"2024-03-16"},{"lineNumber":123,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":124,"author":{"gitId":"drustanyjt"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":125,"author":{"gitId":"drustanyjt"},"content":" assertNotEquals(ALICE.hashCode(), BOB.hashCode());","lastModifiedDate":"2024-03-16"},{"lineNumber":126,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":127,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":" String expected \u003d Person.class.getCanonicalName() + \"{name\u003d\" + ALICE.getName() + \", phone\u003d\" + ALICE.getPhone()","lastModifiedDate":"2019-02-23"},{"lineNumber":131,"author":{"gitId":"drustanyjt"},"content":" + \", email\u003d\" + ALICE.getEmail() + \", identityCardNumber\u003d\" + ALICE.getIdentityCardNumber()","lastModifiedDate":"2024-03-16"},{"lineNumber":132,"author":{"gitId":"drustanyjt"},"content":" + \", age\u003d\" + ALICE.getAge() + \", sex\u003d\" + ALICE.getSex() + \", address\u003d\" + ALICE.getAddress()","lastModifiedDate":"2024-03-16"},{"lineNumber":133,"author":{"gitId":"drustanyjt"},"content":" + \", note\u003d\" + ALICE.getNote() + \", tags\u003d\" + ALICE.getTags() + \"}\";","lastModifiedDate":"2024-03-16"},{"lineNumber":134,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"drustanyjt":38,"-":92,"jiahui0309":6}},{"path":"src/test/java/seedu/address/model/person/SexTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"drustanyjt"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"drustanyjt"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"drustanyjt"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"drustanyjt"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"drustanyjt"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"drustanyjt"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"drustanyjt"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"drustanyjt"},"content":"public class SexTest {","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"drustanyjt"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"drustanyjt"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"drustanyjt"},"content":" assertThrows(NullPointerException.class, () -\u003e new Sex(null));","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"drustanyjt"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"drustanyjt"},"content":" public void constructor_invalidSex_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"drustanyjt"},"content":" String invalidSex \u003d \"\";","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"drustanyjt"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Sex(invalidSex));","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"drustanyjt"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"drustanyjt"},"content":" public void isValidSex() {","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"drustanyjt"},"content":" // null sex","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"drustanyjt"},"content":" assertThrows(NullPointerException.class, () -\u003e Sex.isValidSex(null));","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"drustanyjt"},"content":" // invalid sex","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"drustanyjt"},"content":" assertFalse(Sex.isValidSex(\"\")); // empty string","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"drustanyjt"},"content":" assertFalse(Sex.isValidSex(\" \")); // spaces only","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"drustanyjt"},"content":" assertFalse(Sex.isValidSex(\"^\")); // only non-alphanumeric characters","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"drustanyjt"},"content":" assertFalse(Sex.isValidSex(\"peter*\")); // contains non-alphanumeric characters","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"drustanyjt"},"content":" // valid sex","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"drustanyjt"},"content":" assertTrue(Sex.isValidSex(\"M\")); // one character","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"drustanyjt"},"content":" assertTrue(Sex.isValidSex(\"F\")); // one character","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"drustanyjt"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"drustanyjt"},"content":" public void equals() {","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"drustanyjt"},"content":" Sex sex \u003d new Sex(\"M\");","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"drustanyjt"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"drustanyjt"},"content":" assertEquals(sex, new Sex(\"M\"));","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"drustanyjt"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"drustanyjt"},"content":" assertEquals(sex, sex);","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"drustanyjt"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"drustanyjt"},"content":" assertNotEquals(null, sex);","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"drustanyjt"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"drustanyjt"},"content":" assertFalse(sex.equals(5.0f));","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"drustanyjt"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"drustanyjt"},"content":" assertFalse(sex.equals(new Sex(\"F\")));","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"drustanyjt"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"drustanyjt"},"content":" public void hash() {","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"drustanyjt"},"content":" Sex sexMale \u003d new Sex(\"M\");","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"drustanyjt"},"content":" Sex sexMaleCopy \u003d new Sex(\"M\");","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"drustanyjt"},"content":" Sex sexFemale \u003d new Sex(\"F\");","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":66,"author":{"gitId":"drustanyjt"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":67,"author":{"gitId":"drustanyjt"},"content":" assertEquals(sexMale.hashCode(), sexMaleCopy.hashCode());","lastModifiedDate":"2024-03-16"},{"lineNumber":68,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"drustanyjt"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"drustanyjt"},"content":" assertNotEquals(sexMale.hashCode(), sexFemale.hashCode());","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"drustanyjt"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"drustanyjt":72}},{"path":"src/test/java/seedu/address/model/util/SampleDataUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"drustanyjt"},"content":"package seedu.address.model.util;","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":3,"author":{"gitId":"drustanyjt"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-22"},{"lineNumber":4,"author":{"gitId":"drustanyjt"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-22"},{"lineNumber":5,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":6,"author":{"gitId":"drustanyjt"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-22"},{"lineNumber":7,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":8,"author":{"gitId":"drustanyjt"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-22"},{"lineNumber":9,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"drustanyjt"},"content":"public class SampleDataUtilTest {","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"drustanyjt"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"drustanyjt"},"content":" public void getSamplePersonsTest() {","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"drustanyjt"},"content":" Person[] samplePersons \u003d SampleDataUtil.getSamplePersons();","lastModifiedDate":"2024-03-22"},{"lineNumber":15,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"drustanyjt"},"content":" // Test the number of sample persons","lastModifiedDate":"2024-03-22"},{"lineNumber":17,"author":{"gitId":"drustanyjt"},"content":" assertTrue(samplePersons.length \u003e 0);","lastModifiedDate":"2024-03-22"},{"lineNumber":18,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":20,"author":{"gitId":"drustanyjt"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":21,"author":{"gitId":"drustanyjt"},"content":" public void getSampleAddressBookTest() {","lastModifiedDate":"2024-03-22"},{"lineNumber":22,"author":{"gitId":"drustanyjt"},"content":" assertEquals(SampleDataUtil.getSampleAddressBook().getPersonList().size(), 6);","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":24,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"drustanyjt"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":26,"author":{"gitId":"drustanyjt"},"content":" public void getEmptyTagSetTest() {","lastModifiedDate":"2024-03-22"},{"lineNumber":27,"author":{"gitId":"drustanyjt"},"content":" assertEquals(SampleDataUtil.getEmptyTagSet().size(), 0);","lastModifiedDate":"2024-03-22"},{"lineNumber":28,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":29,"author":{"gitId":"drustanyjt"},"content":"}","lastModifiedDate":"2024-03-22"}],"authorContributionMap":{"drustanyjt":29}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedPersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.storage.JsonAdaptedPerson.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"drustanyjt"},"content":"import seedu.address.model.person.Age;","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"drustanyjt"},"content":"import seedu.address.model.person.IdentityCardNumber;","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"drustanyjt"},"content":"import seedu.address.model.person.Note;","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"drustanyjt"},"content":"import seedu.address.model.person.Sex;","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class JsonAdaptedPersonTest {","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"drustanyjt"},"content":" private static final String INVALID_IDENTITY_CARD_NUMBER \u003d \"Q1234567A\";","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"drustanyjt"},"content":" private static final Integer INVALID_AGE \u003d -12;","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"drustanyjt"},"content":" private static final String INVALID_SEX \u003d \"G\";","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"drustanyjt"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d BENSON.getPhone().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"drustanyjt"},"content":" private static final String VALID_IDENTITY_CARD_NUMBER \u003d BENSON.getIdentityCardNumber().toString();","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"drustanyjt"},"content":" private static final Integer VALID_AGE \u003d BENSON.getAge().value;","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"drustanyjt"},"content":" private static final String VALID_SEX \u003d BENSON.getSex().value;","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d BENSON.getAddress().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"drustanyjt"},"content":" private static final String VALID_NOTE \u003d BENSON.getNote().toString();","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"-"},"content":" private static final List\u003cJsonAdaptedTag\u003e VALID_TAGS \u003d BENSON.getTags().stream()","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public void toModelType_validPersonDetails_returnsPerson() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(BENSON);","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertEquals(BENSON, person.toModelType());","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"drustanyjt"},"content":" new JsonAdaptedPerson(INVALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_IDENTITY_CARD_NUMBER, VALID_AGE,","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"drustanyjt"},"content":" VALID_SEX, VALID_ADDRESS, VALID_NOTE, VALID_TAGS);","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"drustanyjt"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(null, VALID_PHONE, VALID_EMAIL, VALID_IDENTITY_CARD_NUMBER,","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"drustanyjt"},"content":" VALID_AGE, VALID_SEX, VALID_ADDRESS, VALID_NOTE, VALID_TAGS);","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void toModelType_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"drustanyjt"},"content":" new JsonAdaptedPerson(VALID_NAME, INVALID_PHONE, VALID_EMAIL, VALID_IDENTITY_CARD_NUMBER, VALID_AGE,","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"drustanyjt"},"content":" VALID_SEX, VALID_ADDRESS, VALID_NOTE, VALID_TAGS);","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Phone.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public void toModelType_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":80,"author":{"gitId":"drustanyjt"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, null, VALID_EMAIL, VALID_IDENTITY_CARD_NUMBER,","lastModifiedDate":"2024-03-16"},{"lineNumber":81,"author":{"gitId":"drustanyjt"},"content":" VALID_AGE, VALID_SEX, VALID_ADDRESS, VALID_NOTE, VALID_TAGS);","lastModifiedDate":"2024-03-16"},{"lineNumber":82,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"drustanyjt"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, INVALID_EMAIL, VALID_IDENTITY_CARD_NUMBER, VALID_AGE,","lastModifiedDate":"2024-03-16"},{"lineNumber":90,"author":{"gitId":"drustanyjt"},"content":" VALID_SEX, VALID_ADDRESS, VALID_NOTE, VALID_TAGS);","lastModifiedDate":"2024-03-16"},{"lineNumber":91,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"drustanyjt"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, null,","lastModifiedDate":"2024-03-16"},{"lineNumber":98,"author":{"gitId":"drustanyjt"},"content":" VALID_IDENTITY_CARD_NUMBER, VALID_AGE, VALID_SEX, VALID_ADDRESS, VALID_NOTE, VALID_TAGS);","lastModifiedDate":"2024-03-16"},{"lineNumber":99,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":103,"author":{"gitId":"drustanyjt"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":104,"author":{"gitId":"drustanyjt"},"content":" public void toModelType_invalidIdentityCardNumber_throwsIllegalValueException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":105,"author":{"gitId":"drustanyjt"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-03-16"},{"lineNumber":106,"author":{"gitId":"drustanyjt"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, INVALID_IDENTITY_CARD_NUMBER, VALID_AGE,","lastModifiedDate":"2024-03-16"},{"lineNumber":107,"author":{"gitId":"drustanyjt"},"content":" VALID_SEX, VALID_ADDRESS, VALID_NOTE, VALID_TAGS);","lastModifiedDate":"2024-03-16"},{"lineNumber":108,"author":{"gitId":"drustanyjt"},"content":" String expectedMessage \u003d IdentityCardNumber.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-16"},{"lineNumber":109,"author":{"gitId":"drustanyjt"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-16"},{"lineNumber":110,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":111,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":112,"author":{"gitId":"drustanyjt"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":113,"author":{"gitId":"drustanyjt"},"content":" public void toModelType_nullIdentityCardNumber_throwsIllegalValueException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":114,"author":{"gitId":"drustanyjt"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, null,","lastModifiedDate":"2024-03-16"},{"lineNumber":115,"author":{"gitId":"drustanyjt"},"content":" VALID_AGE, VALID_SEX, VALID_ADDRESS, VALID_NOTE, VALID_TAGS);","lastModifiedDate":"2024-03-16"},{"lineNumber":116,"author":{"gitId":"drustanyjt"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, IdentityCardNumber.class.getSimpleName());","lastModifiedDate":"2024-03-16"},{"lineNumber":117,"author":{"gitId":"drustanyjt"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-16"},{"lineNumber":118,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":119,"author":{"gitId":"drustanyjt"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":120,"author":{"gitId":"drustanyjt"},"content":" public void toModelType_invalidAge_throwsIllegalValueException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":121,"author":{"gitId":"drustanyjt"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-03-16"},{"lineNumber":122,"author":{"gitId":"drustanyjt"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_IDENTITY_CARD_NUMBER, INVALID_AGE,","lastModifiedDate":"2024-03-16"},{"lineNumber":123,"author":{"gitId":"drustanyjt"},"content":" VALID_SEX, VALID_ADDRESS, VALID_NOTE, VALID_TAGS);","lastModifiedDate":"2024-03-16"},{"lineNumber":124,"author":{"gitId":"drustanyjt"},"content":" String expectedMessage \u003d Age.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-16"},{"lineNumber":125,"author":{"gitId":"drustanyjt"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-16"},{"lineNumber":126,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":127,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":128,"author":{"gitId":"drustanyjt"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":129,"author":{"gitId":"drustanyjt"},"content":" public void toModelType_nullAge_throwsIllegalValueException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":130,"author":{"gitId":"drustanyjt"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-03-16"},{"lineNumber":131,"author":{"gitId":"drustanyjt"},"content":" VALID_IDENTITY_CARD_NUMBER, null, VALID_SEX, VALID_ADDRESS, VALID_NOTE, VALID_TAGS);","lastModifiedDate":"2024-03-16"},{"lineNumber":132,"author":{"gitId":"drustanyjt"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Age.class.getSimpleName());","lastModifiedDate":"2024-03-16"},{"lineNumber":133,"author":{"gitId":"drustanyjt"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-16"},{"lineNumber":134,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":135,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":136,"author":{"gitId":"drustanyjt"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":137,"author":{"gitId":"drustanyjt"},"content":" public void toModelType_invalidSex_throwsIllegalValueException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":138,"author":{"gitId":"drustanyjt"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-03-16"},{"lineNumber":139,"author":{"gitId":"drustanyjt"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_IDENTITY_CARD_NUMBER, VALID_AGE,","lastModifiedDate":"2024-03-16"},{"lineNumber":140,"author":{"gitId":"drustanyjt"},"content":" INVALID_SEX, VALID_ADDRESS, VALID_NOTE, VALID_TAGS);","lastModifiedDate":"2024-03-16"},{"lineNumber":141,"author":{"gitId":"drustanyjt"},"content":" String expectedMessage \u003d Sex.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-16"},{"lineNumber":142,"author":{"gitId":"drustanyjt"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-16"},{"lineNumber":143,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":144,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":145,"author":{"gitId":"drustanyjt"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":146,"author":{"gitId":"drustanyjt"},"content":" public void toModelType_nullSex_throwsIllegalValueException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":147,"author":{"gitId":"drustanyjt"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-03-16"},{"lineNumber":148,"author":{"gitId":"drustanyjt"},"content":" VALID_IDENTITY_CARD_NUMBER, VALID_AGE, null, VALID_ADDRESS, VALID_NOTE, VALID_TAGS);","lastModifiedDate":"2024-03-16"},{"lineNumber":149,"author":{"gitId":"drustanyjt"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Sex.class.getSimpleName());","lastModifiedDate":"2024-03-16"},{"lineNumber":150,"author":{"gitId":"drustanyjt"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-16"},{"lineNumber":151,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":152,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":153,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":154,"author":{"gitId":"-"},"content":" public void toModelType_invalidAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":155,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":156,"author":{"gitId":"drustanyjt"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_IDENTITY_CARD_NUMBER, VALID_AGE,","lastModifiedDate":"2024-03-16"},{"lineNumber":157,"author":{"gitId":"drustanyjt"},"content":" VALID_SEX, INVALID_ADDRESS, VALID_NOTE, VALID_TAGS);","lastModifiedDate":"2024-03-16"},{"lineNumber":158,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Address.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":159,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":162,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":163,"author":{"gitId":"-"},"content":" public void toModelType_nullAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":164,"author":{"gitId":"drustanyjt"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-03-16"},{"lineNumber":165,"author":{"gitId":"drustanyjt"},"content":" VALID_IDENTITY_CARD_NUMBER, VALID_AGE, VALID_SEX, null, VALID_NOTE, VALID_TAGS);","lastModifiedDate":"2024-03-16"},{"lineNumber":166,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":167,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":170,"author":{"gitId":"drustanyjt"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":171,"author":{"gitId":"drustanyjt"},"content":" public void toModelType_nullNote_throwsIllegalValueException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":172,"author":{"gitId":"drustanyjt"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-03-16"},{"lineNumber":173,"author":{"gitId":"drustanyjt"},"content":" VALID_IDENTITY_CARD_NUMBER, VALID_AGE, VALID_SEX, VALID_ADDRESS, null, VALID_TAGS);","lastModifiedDate":"2024-03-16"},{"lineNumber":174,"author":{"gitId":"drustanyjt"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Note.class.getSimpleName());","lastModifiedDate":"2024-03-16"},{"lineNumber":175,"author":{"gitId":"drustanyjt"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-16"},{"lineNumber":176,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":177,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":178,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":179,"author":{"gitId":"-"},"content":" public void toModelType_invalidTags_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":180,"author":{"gitId":"-"},"content":" List\u003cJsonAdaptedTag\u003e invalidTags \u003d new ArrayList\u003c\u003e(VALID_TAGS);","lastModifiedDate":"2018-08-13"},{"lineNumber":181,"author":{"gitId":"-"},"content":" invalidTags.add(new JsonAdaptedTag(INVALID_TAG));","lastModifiedDate":"2018-08-13"},{"lineNumber":182,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":183,"author":{"gitId":"drustanyjt"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_IDENTITY_CARD_NUMBER, VALID_AGE,","lastModifiedDate":"2024-03-16"},{"lineNumber":184,"author":{"gitId":"drustanyjt"},"content":" VALID_SEX, VALID_ADDRESS, VALID_NOTE, invalidTags);","lastModifiedDate":"2024-03-16"},{"lineNumber":185,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":186,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":188,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"drustanyjt":88,"-":100}},{"path":"src/test/java/seedu/address/storage/JsonUserPrefsStorageTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2016-09-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2016-09-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class JsonUserPrefsStorageTest {","lastModifiedDate":"2016-10-01"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonUserPrefsStorageTest\");","lastModifiedDate":"2018-04-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public Path testFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void readUserPrefs_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e readUserPrefs(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Optional\u003cUserPrefs\u003e readUserPrefs(String userPrefsFileInTestDataFolder) throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":" Path prefsFilePath \u003d addToTestDataPathIfNotNull(userPrefsFileInTestDataFolder);","lastModifiedDate":"2018-04-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return new JsonUserPrefsStorage(prefsFilePath).readUserPrefs(prefsFilePath);","lastModifiedDate":"2016-10-01"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void readUserPrefs_missingFile_emptyResult() throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertFalse(readUserPrefs(\"NonExistentFile.json\").isPresent());","lastModifiedDate":"2016-09-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void readUserPrefs_notJsonFormat_exceptionThrown() {","lastModifiedDate":"2019-03-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertThrows(DataLoadingException.class, () -\u003e readUserPrefs(\"NotJsonFormatUserPrefs.json\"));","lastModifiedDate":"2023-06-14"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" private Path addToTestDataPathIfNotNull(String userPrefsFileInTestDataFolder) {","lastModifiedDate":"2018-04-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" return userPrefsFileInTestDataFolder !\u003d null","lastModifiedDate":"2016-09-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" ? TEST_DATA_FOLDER.resolve(userPrefsFileInTestDataFolder)","lastModifiedDate":"2018-04-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":" : null;","lastModifiedDate":"2016-09-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void readUserPrefs_fileInOrder_successfullyRead() throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":54,"author":{"gitId":"-"},"content":" UserPrefs expected \u003d getTypicalUserPrefs();","lastModifiedDate":"2017-02-25"},{"lineNumber":55,"author":{"gitId":"-"},"content":" UserPrefs actual \u003d readUserPrefs(\"TypicalUserPref.json\").get();","lastModifiedDate":"2016-09-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertEquals(expected, actual);","lastModifiedDate":"2016-09-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void readUserPrefs_valuesMissingFromFile_defaultValuesUsed() throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":61,"author":{"gitId":"-"},"content":" UserPrefs actual \u003d readUserPrefs(\"EmptyUserPrefs.json\").get();","lastModifiedDate":"2016-09-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertEquals(new UserPrefs(), actual);","lastModifiedDate":"2016-09-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void readUserPrefs_extraValuesInFile_extraValuesIgnored() throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":" UserPrefs expected \u003d getTypicalUserPrefs();","lastModifiedDate":"2017-02-25"},{"lineNumber":68,"author":{"gitId":"-"},"content":" UserPrefs actual \u003d readUserPrefs(\"ExtraValuesUserPref.json\").get();","lastModifiedDate":"2016-09-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertEquals(expected, actual);","lastModifiedDate":"2016-09-24"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":" private UserPrefs getTypicalUserPrefs() {","lastModifiedDate":"2017-02-25"},{"lineNumber":74,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-02-25"},{"lineNumber":75,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(new GuiSettings(1000, 500, 300, 100));","lastModifiedDate":"2018-11-27"},{"lineNumber":76,"author":{"gitId":"drustanyjt"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"clinicmate.json\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return userPrefs;","lastModifiedDate":"2017-02-25"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-25"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void savePrefs_nullPrefs_throwsNullPointerException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e saveUserPrefs(null, \"SomeFile.json\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void saveUserPrefs_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e saveUserPrefs(new UserPrefs(), null));","lastModifiedDate":"2019-03-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":90,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-15"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * Saves {@code userPrefs} at the specified {@code prefsFileInTestDataFolder} filepath.","lastModifiedDate":"2017-08-15"},{"lineNumber":92,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-15"},{"lineNumber":93,"author":{"gitId":"-"},"content":" private void saveUserPrefs(UserPrefs userPrefs, String prefsFileInTestDataFolder) {","lastModifiedDate":"2017-08-15"},{"lineNumber":94,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":95,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(addToTestDataPathIfNotNull(prefsFileInTestDataFolder))","lastModifiedDate":"2016-10-12"},{"lineNumber":96,"author":{"gitId":"-"},"content":" .saveUserPrefs(userPrefs);","lastModifiedDate":"2016-10-12"},{"lineNumber":97,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2017-08-15"},{"lineNumber":98,"author":{"gitId":"-"},"content":" throw new AssertionError(\"There should not be an error writing to the file\", ioe);","lastModifiedDate":"2017-08-15"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":103,"author":{"gitId":"-"},"content":" public void saveUserPrefs_allInOrder_success() throws DataLoadingException, IOException {","lastModifiedDate":"2023-06-14"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":105,"author":{"gitId":"-"},"content":" UserPrefs original \u003d new UserPrefs();","lastModifiedDate":"2016-09-24"},{"lineNumber":106,"author":{"gitId":"-"},"content":" original.setGuiSettings(new GuiSettings(1200, 200, 0, 2));","lastModifiedDate":"2018-11-27"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":108,"author":{"gitId":"-"},"content":" Path pefsFilePath \u003d testFolder.resolve(\"TempPrefs.json\");","lastModifiedDate":"2019-04-25"},{"lineNumber":109,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage jsonUserPrefsStorage \u003d new JsonUserPrefsStorage(pefsFilePath);","lastModifiedDate":"2016-10-01"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":111,"author":{"gitId":"-"},"content":" //Try writing when the file doesn\u0027t exist","lastModifiedDate":"2016-09-24"},{"lineNumber":112,"author":{"gitId":"-"},"content":" jsonUserPrefsStorage.saveUserPrefs(original);","lastModifiedDate":"2016-10-01"},{"lineNumber":113,"author":{"gitId":"-"},"content":" UserPrefs readBack \u003d jsonUserPrefsStorage.readUserPrefs().get();","lastModifiedDate":"2016-10-01"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertEquals(original, readBack);","lastModifiedDate":"2016-09-24"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":116,"author":{"gitId":"-"},"content":" //Try saving when the file exists","lastModifiedDate":"2016-09-24"},{"lineNumber":117,"author":{"gitId":"-"},"content":" original.setGuiSettings(new GuiSettings(5, 5, 5, 5));","lastModifiedDate":"2018-11-27"},{"lineNumber":118,"author":{"gitId":"-"},"content":" jsonUserPrefsStorage.saveUserPrefs(original);","lastModifiedDate":"2016-10-01"},{"lineNumber":119,"author":{"gitId":"-"},"content":" readBack \u003d jsonUserPrefsStorage.readUserPrefs().get();","lastModifiedDate":"2016-10-01"},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertEquals(original, readBack);","lastModifiedDate":"2016-09-24"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":123,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-24"}],"authorContributionMap":{"drustanyjt":1,"-":122}},{"path":"src/test/java/seedu/address/testutil/EditPersonDescriptorBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-05-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-12-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-12-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-12-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-12-23"},{"lineNumber":9,"author":{"gitId":"Jayne1010"},"content":"import seedu.address.model.person.Age;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-12-23"},{"lineNumber":11,"author":{"gitId":"Jayne1010"},"content":"import seedu.address.model.person.IdentityCardNumber;","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-12-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-12-23"},{"lineNumber":15,"author":{"gitId":"Jayne1010"},"content":"import seedu.address.model.person.Sex;","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-12-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * A utility class to help with building EditPersonDescriptor objects.","lastModifiedDate":"2017-05-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorBuilder {","lastModifiedDate":"2017-05-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private EditPersonDescriptor descriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder() {","lastModifiedDate":"2017-05-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-05-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(EditPersonDescriptor descriptor) {","lastModifiedDate":"2017-05-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" this.descriptor \u003d new EditPersonDescriptor(descriptor);","lastModifiedDate":"2017-05-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Returns an {@code EditPersonDescriptor} with fields containing {@code person}\u0027s details","lastModifiedDate":"2017-06-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":37,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-06-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" descriptor.setName(person.getName());","lastModifiedDate":"2017-06-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" descriptor.setPhone(person.getPhone());","lastModifiedDate":"2017-06-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" descriptor.setEmail(person.getEmail());","lastModifiedDate":"2017-06-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" descriptor.setAddress(person.getAddress());","lastModifiedDate":"2017-06-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" descriptor.setTags(person.getTags());","lastModifiedDate":"2017-06-21"},{"lineNumber":43,"author":{"gitId":"Jayne1010"},"content":" descriptor.setSex(person.getSex());","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"Jayne1010"},"content":" descriptor.setAge(person.getAge());","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"Jayne1010"},"content":" descriptor.setIC(person.getIdentityCardNumber());","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withName(String name) {","lastModifiedDate":"2017-08-15"},{"lineNumber":52,"author":{"gitId":"-"},"content":" descriptor.setName(new Name(name));","lastModifiedDate":"2017-12-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15"},{"lineNumber":60,"author":{"gitId":"-"},"content":" descriptor.setPhone(new Phone(phone));","lastModifiedDate":"2017-12-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":64,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15"},{"lineNumber":68,"author":{"gitId":"-"},"content":" descriptor.setEmail(new Email(email));","lastModifiedDate":"2017-12-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15"},{"lineNumber":76,"author":{"gitId":"-"},"content":" descriptor.setAddress(new Address(address));","lastModifiedDate":"2017-12-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":80,"author":{"gitId":"Jayne1010"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":81,"author":{"gitId":"Jayne1010"},"content":" * Sets the {@code Age} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"Jayne1010"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":83,"author":{"gitId":"Jayne1010"},"content":" public EditPersonDescriptorBuilder withAge(int age) {","lastModifiedDate":"2024-03-21"},{"lineNumber":84,"author":{"gitId":"Jayne1010"},"content":" descriptor.setAge(new Age(age));","lastModifiedDate":"2024-03-21"},{"lineNumber":85,"author":{"gitId":"Jayne1010"},"content":" return this;","lastModifiedDate":"2024-03-21"},{"lineNumber":86,"author":{"gitId":"Jayne1010"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":87,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"Jayne1010"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":89,"author":{"gitId":"Jayne1010"},"content":" * Sets the {@code IdentityCardNumber} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-03-21"},{"lineNumber":90,"author":{"gitId":"Jayne1010"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":91,"author":{"gitId":"Jayne1010"},"content":" public EditPersonDescriptorBuilder withIC(String ic) {","lastModifiedDate":"2024-03-21"},{"lineNumber":92,"author":{"gitId":"Jayne1010"},"content":" descriptor.setIC(new IdentityCardNumber(ic));","lastModifiedDate":"2024-03-21"},{"lineNumber":93,"author":{"gitId":"Jayne1010"},"content":" return this;","lastModifiedDate":"2024-03-21"},{"lineNumber":94,"author":{"gitId":"Jayne1010"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":95,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":96,"author":{"gitId":"Jayne1010"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":97,"author":{"gitId":"Jayne1010"},"content":" * Sets the {@code Sex} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-03-21"},{"lineNumber":98,"author":{"gitId":"Jayne1010"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":99,"author":{"gitId":"Jayne1010"},"content":" public EditPersonDescriptorBuilder withSex(String sex) {","lastModifiedDate":"2024-03-21"},{"lineNumber":100,"author":{"gitId":"Jayne1010"},"content":" descriptor.setSex(new Sex(sex));","lastModifiedDate":"2024-03-21"},{"lineNumber":101,"author":{"gitId":"Jayne1010"},"content":" return this;","lastModifiedDate":"2024-03-21"},{"lineNumber":102,"author":{"gitId":"Jayne1010"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":103,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":104,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code EditPersonDescriptor}","lastModifiedDate":"2017-07-26"},{"lineNumber":106,"author":{"gitId":"-"},"content":" * that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":107,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withTags(String... tags) {","lastModifiedDate":"2017-08-15"},{"lineNumber":109,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagSet \u003d Stream.of(tags).map(Tag::new).collect(Collectors.toSet());","lastModifiedDate":"2017-12-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":" descriptor.setTags(tagSet);","lastModifiedDate":"2017-12-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":114,"author":{"gitId":"-"},"content":" public EditPersonDescriptor build() {","lastModifiedDate":"2017-05-05"},{"lineNumber":115,"author":{"gitId":"-"},"content":" return descriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":117,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"},{"lineNumber":118,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"Jayne1010":31,"-":87}},{"path":"src/test/java/seedu/address/testutil/PersonBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-12-20"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-04-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-01-18"},{"lineNumber":7,"author":{"gitId":"drustanyjt"},"content":"import seedu.address.model.person.Age;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-01-18"},{"lineNumber":9,"author":{"gitId":"drustanyjt"},"content":"import seedu.address.model.person.IdentityCardNumber;","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-01-18"},{"lineNumber":11,"author":{"gitId":"drustanyjt"},"content":"import seedu.address.model.person.Note;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-04-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-01-18"},{"lineNumber":14,"author":{"gitId":"drustanyjt"},"content":"import seedu.address.model.person.Sex;","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-04-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2017-04-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * A utility class to help with building Person objects.","lastModifiedDate":"2017-04-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class PersonBuilder {","lastModifiedDate":"2016-09-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2020-12-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2017-04-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2020-12-18"},{"lineNumber":26,"author":{"gitId":"drustanyjt"},"content":" public static final String DEFAULT_IDENTITY_CARD_NUMBER \u003d \"S1234567A\";","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"drustanyjt"},"content":" public static final Integer DEFAULT_AGE \u003d 20;","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"drustanyjt"},"content":" public static final String DEFAULT_SEX \u003d \"F\";","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2017-04-05"},{"lineNumber":30,"author":{"gitId":"drustanyjt"},"content":" public static final String DEFAULT_NOTE \u003d \"Hypertensive Crisis with last reading of 203/114\";","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20"},{"lineNumber":35,"author":{"gitId":"drustanyjt"},"content":" private IdentityCardNumber identityCardNumber;","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"drustanyjt"},"content":" private Age age;","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"drustanyjt"},"content":" private Sex sex;","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-12-20"},{"lineNumber":39,"author":{"gitId":"drustanyjt"},"content":" private Note note;","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-12-20"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2020-05-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public PersonBuilder() {","lastModifiedDate":"2017-08-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20"},{"lineNumber":47,"author":{"gitId":"-"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2017-12-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2017-12-20"},{"lineNumber":49,"author":{"gitId":"drustanyjt"},"content":" identityCardNumber \u003d new IdentityCardNumber(DEFAULT_IDENTITY_CARD_NUMBER);","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"drustanyjt"},"content":" age \u003d new Age(DEFAULT_AGE);","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"drustanyjt"},"content":" sex \u003d new Sex(DEFAULT_SEX);","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"-"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2017-12-20"},{"lineNumber":53,"author":{"gitId":"drustanyjt"},"content":" note \u003d new Note(DEFAULT_NOTE);","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":57,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * Initializes the PersonBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2016-12-11"},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public PersonBuilder(Person personToCopy) {","lastModifiedDate":"2018-01-10"},{"lineNumber":61,"author":{"gitId":"-"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2017-12-20"},{"lineNumber":62,"author":{"gitId":"-"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2017-12-20"},{"lineNumber":63,"author":{"gitId":"-"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2017-12-20"},{"lineNumber":64,"author":{"gitId":"drustanyjt"},"content":" identityCardNumber \u003d personToCopy.getIdentityCardNumber();","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"drustanyjt"},"content":" age \u003d personToCopy.getAge();","lastModifiedDate":"2024-03-16"},{"lineNumber":66,"author":{"gitId":"drustanyjt"},"content":" sex \u003d personToCopy.getSex();","lastModifiedDate":"2024-03-16"},{"lineNumber":67,"author":{"gitId":"-"},"content":" address \u003d personToCopy.getAddress();","lastModifiedDate":"2017-12-20"},{"lineNumber":68,"author":{"gitId":"drustanyjt"},"content":" note \u003d personToCopy.getNote();","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e(personToCopy.getTags());","lastModifiedDate":"2017-12-20"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11"},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public PersonBuilder withName(String name) {","lastModifiedDate":"2017-08-15"},{"lineNumber":76,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":80,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":81,"author":{"gitId":"drustanyjt"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-16"},{"lineNumber":82,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":83,"author":{"gitId":"drustanyjt"},"content":" public PersonBuilder withPhone(String phone) {","lastModifiedDate":"2024-03-16"},{"lineNumber":84,"author":{"gitId":"drustanyjt"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2024-03-16"},{"lineNumber":85,"author":{"gitId":"drustanyjt"},"content":" return this;","lastModifiedDate":"2024-03-16"},{"lineNumber":86,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":87,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":88,"author":{"gitId":"drustanyjt"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":89,"author":{"gitId":"drustanyjt"},"content":" * Sets the {@code Email} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-16"},{"lineNumber":90,"author":{"gitId":"drustanyjt"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":91,"author":{"gitId":"drustanyjt"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2024-03-16"},{"lineNumber":92,"author":{"gitId":"drustanyjt"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2024-03-16"},{"lineNumber":93,"author":{"gitId":"drustanyjt"},"content":" return this;","lastModifiedDate":"2024-03-16"},{"lineNumber":94,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":95,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":96,"author":{"gitId":"drustanyjt"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":97,"author":{"gitId":"drustanyjt"},"content":" * Sets the {@code IdentityCardNumber} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-16"},{"lineNumber":98,"author":{"gitId":"drustanyjt"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":99,"author":{"gitId":"drustanyjt"},"content":" public PersonBuilder withIdentityCardNumber(String identityCardNumber) {","lastModifiedDate":"2024-03-16"},{"lineNumber":100,"author":{"gitId":"drustanyjt"},"content":" this.identityCardNumber \u003d new IdentityCardNumber(identityCardNumber);","lastModifiedDate":"2024-03-16"},{"lineNumber":101,"author":{"gitId":"drustanyjt"},"content":" return this;","lastModifiedDate":"2024-03-16"},{"lineNumber":102,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":103,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":104,"author":{"gitId":"drustanyjt"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":105,"author":{"gitId":"drustanyjt"},"content":" * Sets the {@code Age} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-16"},{"lineNumber":106,"author":{"gitId":"drustanyjt"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":107,"author":{"gitId":"drustanyjt"},"content":" public PersonBuilder withAge(int age) {","lastModifiedDate":"2024-03-16"},{"lineNumber":108,"author":{"gitId":"drustanyjt"},"content":" this.age \u003d new Age(age);","lastModifiedDate":"2024-03-16"},{"lineNumber":109,"author":{"gitId":"drustanyjt"},"content":" return this;","lastModifiedDate":"2024-03-16"},{"lineNumber":110,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":111,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":112,"author":{"gitId":"drustanyjt"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":113,"author":{"gitId":"drustanyjt"},"content":" * Sets the {@code Age} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-16"},{"lineNumber":114,"author":{"gitId":"drustanyjt"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":115,"author":{"gitId":"drustanyjt"},"content":" public PersonBuilder withAge(String age) {","lastModifiedDate":"2024-03-16"},{"lineNumber":116,"author":{"gitId":"drustanyjt"},"content":" this.age \u003d new Age(age);","lastModifiedDate":"2024-03-16"},{"lineNumber":117,"author":{"gitId":"drustanyjt"},"content":" return this;","lastModifiedDate":"2024-03-16"},{"lineNumber":118,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":119,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":120,"author":{"gitId":"drustanyjt"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":121,"author":{"gitId":"drustanyjt"},"content":" * Sets the {@code Sex} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-16"},{"lineNumber":122,"author":{"gitId":"drustanyjt"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":123,"author":{"gitId":"drustanyjt"},"content":" public PersonBuilder withSex(String sex) {","lastModifiedDate":"2024-03-16"},{"lineNumber":124,"author":{"gitId":"drustanyjt"},"content":" this.sex \u003d new Sex(sex);","lastModifiedDate":"2024-03-16"},{"lineNumber":125,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":128,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":129,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":130,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":131,"author":{"gitId":"-"},"content":" public PersonBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15"},{"lineNumber":132,"author":{"gitId":"-"},"content":" this.address \u003d new Address(address);","lastModifiedDate":"2017-12-20"},{"lineNumber":133,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":136,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":137,"author":{"gitId":"drustanyjt"},"content":" * Sets the {@code Note} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-16"},{"lineNumber":138,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":139,"author":{"gitId":"drustanyjt"},"content":" public PersonBuilder withNote(String note) {","lastModifiedDate":"2024-03-16"},{"lineNumber":140,"author":{"gitId":"drustanyjt"},"content":" this.note \u003d new Note(note);","lastModifiedDate":"2024-03-16"},{"lineNumber":141,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":144,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":145,"author":{"gitId":"drustanyjt"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code Person} that we are building.","lastModifiedDate":"2024-03-16"},{"lineNumber":146,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":147,"author":{"gitId":"drustanyjt"},"content":" public PersonBuilder withTags(String ... tags) {","lastModifiedDate":"2024-03-16"},{"lineNumber":148,"author":{"gitId":"drustanyjt"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2024-03-16"},{"lineNumber":149,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":152,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":153,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05"},{"lineNumber":154,"author":{"gitId":"drustanyjt"},"content":" return new Person(name, phone, email, identityCardNumber, age, sex, address, note, tags);","lastModifiedDate":"2024-03-16"},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":157,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03"}],"authorContributionMap":{"drustanyjt":71,"-":86}},{"path":"src/test/java/seedu/address/testutil/TypicalIdentityPredicate.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Jayne1010"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"Jayne1010"},"content":"import seedu.address.model.person.IdentityCardNumber;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"Jayne1010"},"content":"import seedu.address.model.person.IdentityCardNumberMatchesPredicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"Jayne1010"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"Jayne1010"},"content":" * A utility class containing a list of {@code IdentityCardNumberMatchesPredicate} objects to be used in tests.","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"Jayne1010"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"Jayne1010"},"content":"public class TypicalIdentityPredicate {","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"Jayne1010"},"content":" public static final IdentityCardNumberMatchesPredicate IC_AMY \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"Jayne1010"},"content":" new IdentityCardNumberMatchesPredicate(new IdentityCardNumber(\"S1234567A\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"Jayne1010"},"content":" public static final IdentityCardNumberMatchesPredicate IC_BOB \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"Jayne1010"},"content":" new IdentityCardNumberMatchesPredicate(new IdentityCardNumber(\"S1234567B\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"Jayne1010"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"Jayne1010":14}},{"path":"src/test/java/seedu/address/testutil/TypicalPersons.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-08-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-08-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-07"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Person} objects to be used in tests.","lastModifiedDate":"2017-08-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class TypicalPersons {","lastModifiedDate":"2017-04-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final Person ALICE \u003d new PersonBuilder().withName(\"Alice Pauline\")","lastModifiedDate":"2018-01-10"},{"lineNumber":26,"author":{"gitId":"-"},"content":" .withAddress(\"123, Jurong West Ave 6, #08-111\").withEmail(\"alice@example.com\")","lastModifiedDate":"2017-04-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" .withPhone(\"94351253\")","lastModifiedDate":"2018-04-19"},{"lineNumber":28,"author":{"gitId":"drustanyjt"},"content":" .withIdentityCardNumber(\"S1234567A\").withAge(\"30\").withSex(\"F\")","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"drustanyjt"},"content":" .withNote(\"No medical conditions\")","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":" .withTags(\"friends\").build();","lastModifiedDate":"2016-09-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static final Person BENSON \u003d new PersonBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2018-01-10"},{"lineNumber":32,"author":{"gitId":"-"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2017-09-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" .withEmail(\"johnd@example.com\").withPhone(\"98765432\")","lastModifiedDate":"2017-04-05"},{"lineNumber":34,"author":{"gitId":"drustanyjt"},"content":" .withIdentityCardNumber(\"S1234567B\").withAge(31).withSex(\"M\")","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"drustanyjt"},"content":" .withNote(\"Asthma\")","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" .withTags(\"owesMoney\", \"friends\").build();","lastModifiedDate":"2016-09-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final Person CARL \u003d new PersonBuilder().withName(\"Carl Kurz\").withPhone(\"95352563\")","lastModifiedDate":"2018-01-10"},{"lineNumber":38,"author":{"gitId":"drustanyjt"},"content":" .withEmail(\"heinz@example.com\").withAddress(\"wall street\")","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"drustanyjt"},"content":" .withIdentityCardNumber(\"S1234567C\").withAge(\"32\").withSex(\"M\")","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"drustanyjt"},"content":" .withNote(\"Diabetes\")","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"drustanyjt"},"content":" .build();","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static final Person DANIEL \u003d new PersonBuilder().withName(\"Daniel Meier\").withPhone(\"87652533\")","lastModifiedDate":"2018-01-10"},{"lineNumber":43,"author":{"gitId":"drustanyjt"},"content":" .withEmail(\"cornelia@example.com\").withAddress(\"10th street\")","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"drustanyjt"},"content":" .withIdentityCardNumber(\"S1234567D\").withAge(33).withSex(\"M\")","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"drustanyjt"},"content":" .withNote(\"No medical conditions\")","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"drustanyjt"},"content":" .withTags(\"friends\").build();","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static final Person ELLE \u003d new PersonBuilder().withName(\"Elle Meyer\").withPhone(\"9482224\")","lastModifiedDate":"2018-01-10"},{"lineNumber":48,"author":{"gitId":"drustanyjt"},"content":" .withEmail(\"werner@example.com\").withAddress(\"michegan ave\")","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"drustanyjt"},"content":" .withIdentityCardNumber(\"S1234567E\").withAge(\"34\").withSex(\"F\")","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"drustanyjt"},"content":" .withNote(\"High blood pressure\")","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"drustanyjt"},"content":" .build();","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final Person FIONA \u003d new PersonBuilder().withName(\"Fiona Kunz\").withPhone(\"9482427\")","lastModifiedDate":"2018-01-10"},{"lineNumber":53,"author":{"gitId":"drustanyjt"},"content":" .withEmail(\"lydia@example.com\").withAddress(\"little tokyo\")","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"drustanyjt"},"content":" .withIdentityCardNumber(\"S1234567F\").withAge(35).withSex(\"F\")","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"drustanyjt"},"content":" .withNote(\"No medical conditions\")","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"drustanyjt"},"content":" .build();","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static final Person GEORGE \u003d new PersonBuilder().withName(\"George Best\").withPhone(\"9482442\")","lastModifiedDate":"2018-01-10"},{"lineNumber":58,"author":{"gitId":"drustanyjt"},"content":" .withEmail(\"anna@example.com\").withAddress(\"4th street\")","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"drustanyjt"},"content":" .withIdentityCardNumber(\"S1234567G\").withAge(\"36\").withSex(\"M\")","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"drustanyjt"},"content":" .withNote(\"Asthma\")","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"drustanyjt"},"content":" .build();","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static final Person HOON \u003d new PersonBuilder().withName(\"Hoon Meier\").withPhone(\"8482424\")","lastModifiedDate":"2018-01-10"},{"lineNumber":63,"author":{"gitId":"drustanyjt"},"content":" .withEmail(\"stefan@example.com\").withAddress(\"little india\")","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"drustanyjt"},"content":" .withIdentityCardNumber(\"S1234567H\").withAge(\"37\").withSex(\"M\")","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"drustanyjt"},"content":" .withNote(\"No medical conditions\")","lastModifiedDate":"2024-03-16"},{"lineNumber":66,"author":{"gitId":"drustanyjt"},"content":" .build();","lastModifiedDate":"2024-03-16"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public static final Person IDA \u003d new PersonBuilder().withName(\"Ida Mueller\").withPhone(\"8482131\")","lastModifiedDate":"2018-01-10"},{"lineNumber":68,"author":{"gitId":"drustanyjt"},"content":" .withEmail(\"hans@example.com\").withAddress(\"chicago ave\")","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"drustanyjt"},"content":" .withIdentityCardNumber(\"S1234567I\").withAge(\"38\").withSex(\"F\")","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"drustanyjt"},"content":" .withNote(\"Diabetes\")","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"drustanyjt"},"content":" .build();","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":73,"author":{"gitId":"-"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2017-08-22"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public static final Person AMY \u003d new PersonBuilder().withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2018-01-10"},{"lineNumber":75,"author":{"gitId":"drustanyjt"},"content":" .withAge(\"20\").withSex(\"F\").withIdentityCardNumber(\"S1234567A\").withEmail(VALID_EMAIL_AMY)","lastModifiedDate":"2024-03-16"},{"lineNumber":76,"author":{"gitId":"drustanyjt"},"content":" .withAddress(VALID_ADDRESS_AMY).withTags(VALID_TAG_FRIEND).withNote(\"Heavy smoker, 3 packs a day\")","lastModifiedDate":"2024-03-16"},{"lineNumber":77,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2017-09-21"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public static final Person BOB \u003d new PersonBuilder().withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-03-16"},{"lineNumber":79,"author":{"gitId":"drustanyjt"},"content":" .withAge(\"21\").withSex(\"M\").withIdentityCardNumber(\"S1234567B\").withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2024-03-16"},{"lineNumber":80,"author":{"gitId":"drustanyjt"},"content":" .withAddress(VALID_ADDRESS_BOB).withNote(\"Torn ACL multiple times\")","lastModifiedDate":"2024-03-16"},{"lineNumber":81,"author":{"gitId":"drustanyjt"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" private TypicalPersons() {} // prevents instantiation","lastModifiedDate":"2017-07-20"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":87,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2017-08-05"},{"lineNumber":89,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":90,"author":{"gitId":"-"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2017-08-05"},{"lineNumber":91,"author":{"gitId":"-"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2017-08-05"},{"lineNumber":92,"author":{"gitId":"-"},"content":" for (Person person : getTypicalPersons()) {","lastModifiedDate":"2018-01-10"},{"lineNumber":93,"author":{"gitId":"-"},"content":" ab.addPerson(person);","lastModifiedDate":"2017-08-05"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04"},{"lineNumber":98,"author":{"gitId":"-"},"content":" public static List\u003cPerson\u003e getTypicalPersons() {","lastModifiedDate":"2018-01-10"},{"lineNumber":99,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2017-08-07"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04"},{"lineNumber":101,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13"}],"authorContributionMap":{"drustanyjt":37,"-":64}}] +[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"tengcharmaine"},"content":"[![CI Status](https://github.com/AY2324S2-CS2103T-F14-2/tp/actions/workflows/gradle.yml/badge.svg)](https://github.com/AY2324S2-CS2103T-F14-2/tp/actions/workflows/gradle.yml)","lastModifiedDate":"2024-03-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"[![codecov](https://codecov.io/gh/AY2324S2-CS2103T-F14-2/tp/graph/badge.svg?token\u003dT5H5FY1BYS)](https://codecov.io/gh/AY2324S2-CS2103T-F14-2/tp)","lastModifiedDate":"2024-02-20"},{"lineNumber":3,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"tengcharmaine"},"content":"The project simulates an ongoing software project for a desktop application (called _Clinic Mate_) used for managing contact details.","lastModifiedDate":"2024-03-03"},{"lineNumber":7,"author":{"gitId":"tengcharmaine"},"content":"* It is **written in OOP fashion**. It provides a **reasonably well-written** code base.","lastModifiedDate":"2024-03-03"},{"lineNumber":8,"author":{"gitId":"-"},"content":"* It comes with a **reasonable level of user and developer documentation**.","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":10,"author":{"gitId":"tengcharmaine"},"content":"Clinic Mate is an **address book for managing user\u0027s contacts, optimised for use via a Command Line Interface** (CLI) while","lastModifiedDate":"2024-03-03"},{"lineNumber":11,"author":{"gitId":"tengcharmaine"},"content":"still having the benefits of a Graphical User Interface (GUI).","lastModifiedDate":"2024-03-03"},{"lineNumber":12,"author":{"gitId":"tengcharmaine"},"content":"If you can type fast, Clinic Mate can manage your contacts faster than traditional GUI apps.","lastModifiedDate":"2024-03-03"},{"lineNumber":13,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":14,"author":{"gitId":"tengcharmaine"},"content":"Clinic Mate aims to make it easy for **General Practitioners** (GPs) in private family clinics to view patient contacts at","lastModifiedDate":"2024-03-03"},{"lineNumber":15,"author":{"gitId":"tengcharmaine"},"content":"a glance including:","lastModifiedDate":"2024-03-03"},{"lineNumber":16,"author":{"gitId":"tengcharmaine"},"content":"* Medical history","lastModifiedDate":"2024-03-03"},{"lineNumber":17,"author":{"gitId":"tengcharmaine"},"content":"* Past diagnosis","lastModifiedDate":"2024-03-03"},{"lineNumber":18,"author":{"gitId":"tengcharmaine"},"content":"* Prescriptions","lastModifiedDate":"2024-03-03"},{"lineNumber":19,"author":{"gitId":"tengcharmaine"},"content":"* Future appointments","lastModifiedDate":"2024-03-03"},{"lineNumber":20,"author":{"gitId":"tengcharmaine"},"content":"* Many more","lastModifiedDate":"2024-03-03"},{"lineNumber":21,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":22,"author":{"gitId":"tengcharmaine"},"content":"For the detailed documentation of this project (e.g. User or Developer Guide), see the **[Clinic Mate Website](https://ay2324s2-cs2103t-f14-2.github.io/tp/)**.","lastModifiedDate":"2024-03-03"},{"lineNumber":23,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":24,"author":{"gitId":"drustanyjt"},"content":"To join our mailing list fill in this [form](https://docs.google.com/forms/d/e/1FAIpQLSdhsv0afLOwhto8Ov6CW9FqKSQyEJ-oprHHLmLS-d5ylGShmg/viewform?usp\u003dsharing).","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"tengcharmaine"},"content":"This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-03-03"}],"authorContributionMap":{"drustanyjt":2,"tengcharmaine":19,"-":5}},{"path":"build.gradle","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2016-08-29"},{"lineNumber":2,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2017-12-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2017-12-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2022-06-17"},{"lineNumber":5,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2016-12-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":" id \u0027jacoco\u0027","lastModifiedDate":"2020-08-07"},{"lineNumber":7,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-29"},{"lineNumber":9,"author":{"gitId":"-"},"content":"mainClassName \u003d \u0027seedu.address.Main\u0027","lastModifiedDate":"2019-02-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"sourceCompatibility \u003d JavaVersion.VERSION_11","lastModifiedDate":"2019-02-20"},{"lineNumber":12,"author":{"gitId":"-"},"content":"targetCompatibility \u003d JavaVersion.VERSION_11","lastModifiedDate":"2019-02-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" maven { url \u0027https://oss.sonatype.org/content/repositories/snapshots/\u0027 }","lastModifiedDate":"2018-04-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"checkstyle {","lastModifiedDate":"2016-10-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2022-04-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-10-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2018-03-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2018-03-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":" finalizedBy jacocoTestReport","lastModifiedDate":"2020-08-07"},{"lineNumber":26,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-08-07"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-08-07"},{"lineNumber":28,"author":{"gitId":"-"},"content":"task coverage(type: JacocoReport) {","lastModifiedDate":"2020-08-07"},{"lineNumber":29,"author":{"gitId":"-"},"content":" sourceDirectories.from files(sourceSets.main.allSource.srcDirs)","lastModifiedDate":"2020-08-07"},{"lineNumber":30,"author":{"gitId":"-"},"content":" classDirectories.from files(sourceSets.main.output)","lastModifiedDate":"2020-08-07"},{"lineNumber":31,"author":{"gitId":"-"},"content":" executionData.from files(jacocoTestReport.executionData)","lastModifiedDate":"2020-08-07"},{"lineNumber":32,"author":{"gitId":"-"},"content":" afterEvaluate {","lastModifiedDate":"2020-08-07"},{"lineNumber":33,"author":{"gitId":"-"},"content":" classDirectories.from files(classDirectories.files.collect {","lastModifiedDate":"2020-08-07"},{"lineNumber":34,"author":{"gitId":"-"},"content":" fileTree(dir: it, exclude: [\u0027**/*.jar\u0027])","lastModifiedDate":"2020-08-07"},{"lineNumber":35,"author":{"gitId":"-"},"content":" })","lastModifiedDate":"2020-08-07"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07"},{"lineNumber":37,"author":{"gitId":"-"},"content":" reports {","lastModifiedDate":"2020-08-07"},{"lineNumber":38,"author":{"gitId":"-"},"content":" html.required \u003d true","lastModifiedDate":"2022-06-17"},{"lineNumber":39,"author":{"gitId":"-"},"content":" xml.required \u003d true","lastModifiedDate":"2022-06-17"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07"},{"lineNumber":41,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-03-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" String jUnitVersion \u003d \u00275.4.0\u0027","lastModifiedDate":"2019-02-10"},{"lineNumber":45,"author":{"gitId":"-"},"content":" String javaFxVersion \u003d \u002717.0.7\u0027","lastModifiedDate":"2023-07-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":48,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":" implementation group: \u0027com.fasterxml.jackson.core\u0027, name: \u0027jackson-databind\u0027, version: \u00272.7.0\u0027","lastModifiedDate":"2018-03-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":" implementation group: \u0027com.fasterxml.jackson.datatype\u0027, name: \u0027jackson-datatype-jsr310\u0027, version: \u00272.7.4\u0027","lastModifiedDate":"2018-03-29"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-29"},{"lineNumber":68,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2016-08-29"},{"lineNumber":69,"author":{"gitId":"drustanyjt"},"content":" archiveFileName \u003d \u0027clinicmate.jar\u0027","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":"defaultTasks \u0027clean\u0027, \u0027test\u0027","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"drustanyjt":1,"-":71}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"About Us\"","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"# About Us","lastModifiedDate":"2023-09-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"We are a team based in the [School of Computing, National University of Singapore](http://www.comp.nus.edu.sg).","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"jiahui0309"},"content":"You can reach us at the email `e0970466@comp.nus.edu.sg`","lastModifiedDate":"2024-03-03"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"jiahui0309"},"content":"### Yeo Jun Teng Drustan","lastModifiedDate":"2024-03-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"jiahui0309"},"content":"\u003cimg src\u003d\"images/drustanyjt.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"jiahui0309"},"content":"[[github](https://github.com/drustanyjt)]","lastModifiedDate":"2024-03-03"},{"lineNumber":19,"author":{"gitId":"jiahui0309"},"content":"[[linkedin](https://www.linkedin.com/in/drustan/)]","lastModifiedDate":"2024-03-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"* Role: Team Lead","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"jiahui0309"},"content":"### Chen Jiaying Jayne","lastModifiedDate":"2024-03-03"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"jiahui0309"},"content":"\u003cimg src\u003d\"images/jayne1010.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"jiahui0309"},"content":"[[github](http://github.com/Jayne1010)]","lastModifiedDate":"2024-03-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"jiahui0309"},"content":"* Responsibilities: Documentation","lastModifiedDate":"2024-03-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"jiahui0309"},"content":"### Song Jia Hui","lastModifiedDate":"2024-03-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"jiahui0309"},"content":"\u003cimg src\u003d\"images/jiahui0309.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-03"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"jiahui0309"},"content":"[[github](http://github.com/jiahui0309)]","lastModifiedDate":"2024-03-03"},{"lineNumber":37,"author":{"gitId":"jiahui0309"},"content":"[[linkedin](https://www.linkedin.com/in/song-jia-hui/)]","lastModifiedDate":"2024-03-03"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"jiahui0309"},"content":"* Responsibilities: Integration","lastModifiedDate":"2024-03-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"jiahui0309"},"content":"### Teng Shi Rou Charmaine","lastModifiedDate":"2024-03-03"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"jiahui0309"},"content":"\u003cimg src\u003d\"images/tengcharmaine.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-03"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"jiahui0309"},"content":"[[github](http://github.com/tengcharmaine)]","lastModifiedDate":"2024-03-03"},{"lineNumber":47,"author":{"gitId":"jiahui0309"},"content":"[[linkedin](https://www.linkedin.com/in/charmaine-teng/)]","lastModifiedDate":"2024-03-03"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"jiahui0309"},"content":"* Responsibilities: Scheduling and tracking","lastModifiedDate":"2024-03-03"}],"authorContributionMap":{"-":32,"jiahui0309":19}},{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"Developer Guide\"","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":7,"author":{"gitId":"drustanyjt"},"content":"# ClinicMate Developer Guide","lastModifiedDate":"2024-03-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":14,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":16,"author":{"gitId":"-"},"content":"_{ list here sources of all reused/adapted ideas, code, documentation, and third-party libraries -- include links to the original source as well }_","lastModifiedDate":"2023-09-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureDiagram.puml\" width\u003d\"280\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":"The ***Architecture Diagram*** given above explains the high-level design of the App.","lastModifiedDate":"2021-07-31"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":"Given below is a quick overview of main components and how they interact with each other.","lastModifiedDate":"2021-07-31"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"**`Main`** (consisting of classes [`Main`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/Main.java) and [`MainApp`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/MainApp.java)) is in charge of the app launch and shut down.","lastModifiedDate":"2023-09-03"},{"lineNumber":39,"author":{"gitId":"-"},"content":"* At app launch, it initializes the other components in the correct sequence, and connects them up with each other.","lastModifiedDate":"2023-09-03"},{"lineNumber":40,"author":{"gitId":"-"},"content":"* At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2023-09-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"* [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"* [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"* [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"The *Sequence Diagram* below shows how the components interact with each other for the scenario where the user issues the command `delete 1`.","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureSequenceDiagram.puml\" width\u003d\"574\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":59,"author":{"gitId":"-"},"content":"* defines its *API* in an `interface` with the same name as the Component.","lastModifiedDate":"2021-07-31"},{"lineNumber":60,"author":{"gitId":"-"},"content":"* implements its functionality using a concrete `{Component Name}Manager` class (which follows the corresponding API `interface` mentioned in the previous point.","lastModifiedDate":"2021-07-31"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":62,"author":{"gitId":"-"},"content":"For example, the `Logic` component defines its API in the `Logic.java` interface and implements its functionality using the `LogicManager.java` class which follows the `Logic` interface. Other components interact with a given component through its interface rather than the concrete class (reason: to prevent outside component\u0027s being coupled to the implementation of a component), as illustrated in the (partial) class diagram below.","lastModifiedDate":"2021-07-31"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":64,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ComponentManagers.puml\" width\u003d\"300\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":66,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"The **API** of this component is specified in [`Ui.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/Ui.java)","lastModifiedDate":"2021-07-31"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UiClassDiagram.puml\" alt\u003d\"Structure of the UI Component\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"The UI consists of a `MainWindow` that is made up of parts e.g.`CommandBox`, `ResultDisplay`, `PersonListPanel`, `StatusBarFooter` etc. All these, including the `MainWindow`, inherit from the abstract `UiPart` class which captures the commonalities between classes that represent parts of the visible GUI.","lastModifiedDate":"2021-07-31"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"The `UI` component uses the JavaFx UI framework. The layout of these UI parts are defined in matching `.fxml` files that are in the `src/main/resources/view` folder. For example, the layout of the [`MainWindow`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/MainWindow.java) is specified in [`MainWindow.fxml`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/resources/view/MainWindow.fxml)","lastModifiedDate":"2021-07-31"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"* executes user commands using the `Logic` component.","lastModifiedDate":"2021-07-31"},{"lineNumber":81,"author":{"gitId":"-"},"content":"* listens for changes to `Model` data so that the UI can be updated with the modified data.","lastModifiedDate":"2021-07-31"},{"lineNumber":82,"author":{"gitId":"-"},"content":"* keeps a reference to the `Logic` component, because the `UI` relies on the `Logic` to execute commands.","lastModifiedDate":"2021-07-31"},{"lineNumber":83,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component, as it displays `Person` object residing in the `Model`.","lastModifiedDate":"2021-07-31"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"**API** : [`Logic.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/logic/Logic.java)","lastModifiedDate":"2021-07-31"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/LogicClassDiagram.puml\" width\u003d\"550\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"The sequence diagram below illustrates the interactions within the `Logic` component, taking `execute(\"delete 1\")` API call as an example.","lastModifiedDate":"2023-09-03"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/DeleteSequenceDiagram.puml\" alt\u003d\"Interactions Inside the Logic Component for the `delete 1` Command\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":97,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"**Note:** The lifeline for `DeleteCommandParser` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline continues till the end of diagram.","lastModifiedDate":"2023-09-12"},{"lineNumber":100,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":104,"author":{"gitId":"-"},"content":"1. When `Logic` is called upon to execute a command, it is passed to an `AddressBookParser` object which in turn creates a parser that matches the command (e.g., `DeleteCommandParser`) and uses it to parse the command.","lastModifiedDate":"2023-09-03"},{"lineNumber":105,"author":{"gitId":"-"},"content":"1. This results in a `Command` object (more precisely, an object of one of its subclasses e.g., `DeleteCommand`) which is executed by the `LogicManager`.","lastModifiedDate":"2023-09-03"},{"lineNumber":106,"author":{"gitId":"-"},"content":"1. The command can communicate with the `Model` when it is executed (e.g. to delete a person).\u003cbr\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":107,"author":{"gitId":"-"},"content":" Note that although this is shown as a single step in the diagram above (for simplicity), in the code it can take several interactions (between the command object and the `Model`) to achieve.","lastModifiedDate":"2024-02-09"},{"lineNumber":108,"author":{"gitId":"-"},"content":"1. The result of the command execution is encapsulated as a `CommandResult` object which is returned back from `Logic`.","lastModifiedDate":"2023-09-03"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":110,"author":{"gitId":"-"},"content":"Here are the other classes in `Logic` (omitted from the class diagram above) that are used for parsing a user command:","lastModifiedDate":"2021-07-31"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":112,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ParserClasses.puml\" width\u003d\"600\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31"},{"lineNumber":115,"author":{"gitId":"-"},"content":"* When called upon to parse a user command, the `AddressBookParser` class creates an `XYZCommandParser` (`XYZ` is a placeholder for the specific command name e.g., `AddCommandParser`) which uses the other classes shown above to parse the user command and create a `XYZCommand` object (e.g., `AddCommand`) which the `AddressBookParser` returns back as a `Command` object.","lastModifiedDate":"2021-07-31"},{"lineNumber":116,"author":{"gitId":"-"},"content":"* All `XYZCommandParser` classes (e.g., `AddCommandParser`, `DeleteCommandParser`, ...) inherit from the `Parser` interface so that they can be treated similarly where possible e.g, during testing.","lastModifiedDate":"2021-07-31"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31"},{"lineNumber":119,"author":{"gitId":"-"},"content":"**API** : [`Model.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/model/Model.java)","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":"* stores the address book data i.e., all `Person` objects (which are contained in a `UniquePersonList` object).","lastModifiedDate":"2021-07-31"},{"lineNumber":127,"author":{"gitId":"-"},"content":"* stores the currently \u0027selected\u0027 `Person` objects (e.g., results of a search query) as a separate _filtered_ list which is exposed to outsiders as an unmodifiable `ObservableList\u003cPerson\u003e` that can be \u0027observed\u0027 e.g. the UI can be bound to this list so that the UI automatically updates when the data in the list change.","lastModifiedDate":"2021-07-31"},{"lineNumber":128,"author":{"gitId":"-"},"content":"* stores a `UserPref` object that represents the user’s preferences. This is exposed to the outside as a `ReadOnlyUserPref` objects.","lastModifiedDate":"2021-07-31"},{"lineNumber":129,"author":{"gitId":"-"},"content":"* does not depend on any of the other three components (as the `Model` represents data entities of the domain, they should make sense on their own without depending on other components)","lastModifiedDate":"2021-07-31"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":131,"author":{"gitId":"drustanyjt"},"content":"[//]: # (\u003cbox type\u003d\"info\" seamless\u003e)","lastModifiedDate":"2024-03-20"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":133,"author":{"gitId":"drustanyjt"},"content":"[//]: # ()","lastModifiedDate":"2024-03-20"},{"lineNumber":134,"author":{"gitId":"drustanyjt"},"content":"[//]: # (**Note:** An alternative \u0026#40;arguably, a more OOP\u0026#41; model is given below. It has a `Tag` list in the `AddressBook`, which `Person` references. This allows `AddressBook` to only require one `Tag` object per unique tag, instead of each `Person` needing their own `Tag` objects.\u003cbr\u003e)","lastModifiedDate":"2024-03-20"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":136,"author":{"gitId":"drustanyjt"},"content":"[//]: # ()","lastModifiedDate":"2024-03-20"},{"lineNumber":137,"author":{"gitId":"drustanyjt"},"content":"[//]: # (\u003cpuml src\u003d\"diagrams/BetterModelClassDiagram.puml\" width\u003d\"450\" /\u003e)","lastModifiedDate":"2024-03-20"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"drustanyjt"},"content":"[//]: # ()","lastModifiedDate":"2024-03-20"},{"lineNumber":140,"author":{"gitId":"drustanyjt"},"content":"[//]: # (\u003c/box\u003e)","lastModifiedDate":"2024-03-20"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":"**API** : [`Storage.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/storage/Storage.java)","lastModifiedDate":"2020-05-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/StorageClassDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":149,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":"* can save both address book data and user preference data in JSON format, and read them back into corresponding objects.","lastModifiedDate":"2023-09-03"},{"lineNumber":151,"author":{"gitId":"-"},"content":"* inherits from both `AddressBookStorage` and `UserPrefStorage`, which means it can be treated as either one (if only the functionality of only one is needed).","lastModifiedDate":"2021-07-31"},{"lineNumber":152,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component (because the `Storage` component\u0027s job is to save/retrieve objects that belong to the `Model`)","lastModifiedDate":"2021-07-21"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.addressbook.commons` package.","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":"The proposed undo/redo mechanism is facilitated by `VersionedAddressBook`. It extends `AddressBook` with an undo/redo history, stored internally as an `addressBookStateList` and `currentStatePointer`. Additionally, it implements the following operations:","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":"These operations are exposed in the `Model` interface as `Model#commitAddressBook()`, `Model#undoAddressBook()` and `Model#redoAddressBook()` respectively.","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":"Given below is an example usage scenario and how the undo/redo mechanism behaves at each step.","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":"Step 1. The user launches the application for the first time. The `VersionedAddressBook` will be initialized with the initial address book state, and the `currentStatePointer` pointing to that single address book state.","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState0.puml\" alt\u003d\"UndoRedoState0\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":182,"author":{"gitId":"Jayne1010"},"content":"Step 2. The user executes `delete T0123456A` command to delete the person in the address book with the unique identification number `T0123456A`. The `delete` command calls `Model#commitAddressBook()`, causing the modified state of the address book after the `delete T0123456A` command executes to be saved in the `addressBookStateList`, and the `currentStatePointer` is shifted to the newly inserted address book state.","lastModifiedDate":"2024-03-19"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState1.puml\" alt\u003d\"UndoRedoState1\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":"Step 3. The user executes `add n/David …​` to add a new person. The `add` command also calls `Model#commitAddressBook()`, causing another modified address book state to be saved into the `addressBookStateList`.","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState2.puml\" alt\u003d\"UndoRedoState2\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":190,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":192,"author":{"gitId":"-"},"content":"**Note:** If a command fails its execution, it will not call `Model#commitAddressBook()`, so the address book state will not be saved into the `addressBookStateList`.","lastModifiedDate":"2023-09-12"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":194,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":"Step 4. The user now decides that adding the person was a mistake, and decides to undo that action by executing the `undo` command. The `undo` command will call `Model#undoAddressBook()`, which will shift the `currentStatePointer` once to the left, pointing it to the previous address book state, and restores the address book to that state.","lastModifiedDate":"2020-05-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":198,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState3.puml\" alt\u003d\"UndoRedoState3\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":201,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":"**Note:** If the `currentStatePointer` is at index 0, pointing to the initial AddressBook state, then there are no previous AddressBook states to restore. The `undo` command uses `Model#canUndoAddressBook()` to check if this is the case. If so, it will return an error to the user rather","lastModifiedDate":"2023-09-12"},{"lineNumber":204,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":206,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":208,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":210,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Logic.puml\" alt\u003d\"UndoSequenceDiagram-Logic\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":212,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":214,"author":{"gitId":"-"},"content":"**Note:** The lifeline for `UndoCommand` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.","lastModifiedDate":"2023-09-12"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":216,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":218,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":220,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Model.puml\" alt\u003d\"UndoSequenceDiagram-Model\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":222,"author":{"gitId":"-"},"content":"The `redo` command does the opposite — it calls `Model#redoAddressBook()`, which shifts the `currentStatePointer` once to the right, pointing to the previously undone state, and restores the address book to that state.","lastModifiedDate":"2020-05-23"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":224,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":226,"author":{"gitId":"-"},"content":"**Note:** If the `currentStatePointer` is at index `addressBookStateList.size() - 1`, pointing to the latest address book state, then there are no undone AddressBook states to restore. The `redo` command uses `Model#canRedoAddressBook()` to check if this is the case. If so, it will return an error to the user rather than attempting to perform the redo.","lastModifiedDate":"2023-09-12"},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":228,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":230,"author":{"gitId":"-"},"content":"Step 5. The user then decides to execute the command `list`. Commands that do not modify the address book, such as `list`, will usually not call `Model#commitAddressBook()`, `Model#undoAddressBook()` or `Model#redoAddressBook()`. Thus, the `addressBookStateList` remains unchanged.","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState4.puml\" alt\u003d\"UndoRedoState4\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":233,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":234,"author":{"gitId":"-"},"content":"Step 6. The user executes `clear`, which calls `Model#commitAddressBook()`. Since the `currentStatePointer` is not pointing at the end of the `addressBookStateList`, all address book states after the `currentStatePointer` will be purged. Reason: It no longer makes sense to redo the `add n/David …​` command. This is the behavior that most modern desktop applications follow.","lastModifiedDate":"2020-05-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState5.puml\" alt\u003d\"UndoRedoState5\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":237,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/CommitActivityDiagram.puml\" width\u003d\"250\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31"},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31"},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":247,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23"},{"lineNumber":248,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":250,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23"},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":257,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23"},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":259,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":262,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":264,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07"},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":266,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":267,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":268,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":269,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":270,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":271,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":272,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":274,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23"},{"lineNumber":275,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":276,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23"},{"lineNumber":277,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":278,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23"},{"lineNumber":279,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":280,"author":{"gitId":"drustanyjt"},"content":"* General Practitioners working in their own private GP Clinics","lastModifiedDate":"2024-03-06"},{"lineNumber":281,"author":{"gitId":"drustanyjt"},"content":"* short staffed with minimal assistants for administrative tasks","lastModifiedDate":"2024-03-06"},{"lineNumber":282,"author":{"gitId":"drustanyjt"},"content":"* annoyed by relying on pen and paper to track patient contacts","lastModifiedDate":"2024-03-06"},{"lineNumber":283,"author":{"gitId":"-"},"content":"* can type fast","lastModifiedDate":"2020-05-23"},{"lineNumber":284,"author":{"gitId":"drustanyjt"},"content":"* prefer desktop apps over other types","lastModifiedDate":"2024-03-06"},{"lineNumber":285,"author":{"gitId":"-"},"content":"* prefers typing to mouse interactions","lastModifiedDate":"2020-05-26"},{"lineNumber":286,"author":{"gitId":"-"},"content":"* is reasonably comfortable using CLI apps","lastModifiedDate":"2020-05-23"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":288,"author":{"gitId":"drustanyjt"},"content":"**Value proposition**: Quick and easy management of patient contacts, including important patient information.","lastModifiedDate":"2024-03-06"},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":290,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":291,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07"},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":293,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23"},{"lineNumber":294,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":295,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23"},{"lineNumber":296,"author":{"gitId":"-"},"content":"|----------|--------------------------------------------|------------------------------|------------------------------------------------------------------------|","lastModifiedDate":"2023-09-12"},{"lineNumber":297,"author":{"gitId":"-"},"content":"| `* * *` | new user | see usage instructions | refer to instructions when I forget how to use the App |","lastModifiedDate":"2020-05-23"},{"lineNumber":298,"author":{"gitId":"-"},"content":"| `* * *` | user | add a new person | |","lastModifiedDate":"2020-05-23"},{"lineNumber":299,"author":{"gitId":"-"},"content":"| `* * *` | user | delete a person | remove entries that I no longer need |","lastModifiedDate":"2020-05-23"},{"lineNumber":300,"author":{"gitId":"-"},"content":"| `* * *` | user | find a person by name | locate details of persons without having to go through the entire list |","lastModifiedDate":"2020-05-23"},{"lineNumber":301,"author":{"gitId":"-"},"content":"| `* *` | user | hide private contact details | minimize chance of someone else seeing them by accident |","lastModifiedDate":"2020-05-23"},{"lineNumber":302,"author":{"gitId":"-"},"content":"| `*` | user with many persons in the address book | sort persons by name | locate a person easily |","lastModifiedDate":"2020-05-23"},{"lineNumber":303,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":304,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":306,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07"},{"lineNumber":307,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":308,"author":{"gitId":"jiahui0309"},"content":"(For all use cases below, the **System** is the `ClinicMate` and the **Actor** is the `user`, unless specified otherwise)","lastModifiedDate":"2024-03-05"},{"lineNumber":309,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":310,"author":{"gitId":"jiahui0309"},"content":"**Use case: Add a person**","lastModifiedDate":"2024-03-04"},{"lineNumber":311,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":312,"author":{"gitId":"jiahui0309"},"content":"**MSS**","lastModifiedDate":"2024-03-04"},{"lineNumber":313,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":314,"author":{"gitId":"jiahui0309"},"content":"1. User requests to list persons","lastModifiedDate":"2024-03-04"},{"lineNumber":315,"author":{"gitId":"jiahui0309"},"content":"2. ClinicMate shows a list of persons","lastModifiedDate":"2024-03-05"},{"lineNumber":316,"author":{"gitId":"jiahui0309"},"content":"3. User requests to add a specific person in the list","lastModifiedDate":"2024-03-04"},{"lineNumber":317,"author":{"gitId":"jiahui0309"},"content":"4. ClinicMate adds the person","lastModifiedDate":"2024-03-05"},{"lineNumber":318,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":319,"author":{"gitId":"jiahui0309"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":320,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":321,"author":{"gitId":"jiahui0309"},"content":"**Extensions**","lastModifiedDate":"2024-03-04"},{"lineNumber":322,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":323,"author":{"gitId":"jiahui0309"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-03-04"},{"lineNumber":324,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":325,"author":{"gitId":"jiahui0309"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":326,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":327,"author":{"gitId":"jiahui0309"},"content":"* 3a. The given command format is wrong.","lastModifiedDate":"2024-03-04"},{"lineNumber":328,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":329,"author":{"gitId":"jiahui0309"},"content":" * 3a1. ClinicMate shows an error message.","lastModifiedDate":"2024-03-05"},{"lineNumber":330,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":331,"author":{"gitId":"jiahui0309"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-04"},{"lineNumber":332,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":333,"author":{"gitId":"jiahui0309"},"content":"* 4a. There is an existing user in the database.","lastModifiedDate":"2024-03-04"},{"lineNumber":334,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":335,"author":{"gitId":"jiahui0309"},"content":" * 4a1. ClinicMate shows an error message.","lastModifiedDate":"2024-03-05"},{"lineNumber":336,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":337,"author":{"gitId":"jiahui0309"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-04"},{"lineNumber":338,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":339,"author":{"gitId":"jiahui0309"},"content":"**Use case: Add notes for a person**","lastModifiedDate":"2024-03-04"},{"lineNumber":340,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":341,"author":{"gitId":"jiahui0309"},"content":"**MSS**","lastModifiedDate":"2024-03-04"},{"lineNumber":342,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":343,"author":{"gitId":"jiahui0309"},"content":"1. User requests to list persons","lastModifiedDate":"2024-03-04"},{"lineNumber":344,"author":{"gitId":"jiahui0309"},"content":"2. ClinicMate shows a list of persons","lastModifiedDate":"2024-03-05"},{"lineNumber":345,"author":{"gitId":"jiahui0309"},"content":"3. User requests to add notes for a specific person in the list","lastModifiedDate":"2024-03-04"},{"lineNumber":346,"author":{"gitId":"jiahui0309"},"content":"4. ClinicMate adds notes for the person","lastModifiedDate":"2024-03-05"},{"lineNumber":347,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":348,"author":{"gitId":"jiahui0309"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":349,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":350,"author":{"gitId":"jiahui0309"},"content":"**Extensions**","lastModifiedDate":"2024-03-04"},{"lineNumber":351,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":352,"author":{"gitId":"jiahui0309"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-03-04"},{"lineNumber":353,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":354,"author":{"gitId":"jiahui0309"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":355,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":356,"author":{"gitId":"jiahui0309"},"content":"* 3a. The given command format is wrong.","lastModifiedDate":"2024-03-04"},{"lineNumber":357,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":358,"author":{"gitId":"jiahui0309"},"content":" * 3a1. ClinicMate shows an error message.","lastModifiedDate":"2024-03-05"},{"lineNumber":359,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":360,"author":{"gitId":"jiahui0309"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-04"},{"lineNumber":361,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":362,"author":{"gitId":"jiahui0309"},"content":"* 4a. The given IC number is invalid.","lastModifiedDate":"2024-03-05"},{"lineNumber":363,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":364,"author":{"gitId":"jiahui0309"},"content":" * 4a1. ClinicMate shows an error message.","lastModifiedDate":"2024-03-05"},{"lineNumber":365,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":366,"author":{"gitId":"jiahui0309"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-04"},{"lineNumber":367,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":368,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":369,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":370,"author":{"gitId":"-"},"content":"**Use case: Delete a person**","lastModifiedDate":"2020-05-23"},{"lineNumber":371,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":372,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23"},{"lineNumber":373,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":374,"author":{"gitId":"-"},"content":"1. User requests to list persons","lastModifiedDate":"2020-05-23"},{"lineNumber":375,"author":{"gitId":"jiahui0309"},"content":"2. ClinicMate shows a list of persons","lastModifiedDate":"2024-03-05"},{"lineNumber":376,"author":{"gitId":"-"},"content":"3. User requests to delete a specific person in the list","lastModifiedDate":"2020-05-23"},{"lineNumber":377,"author":{"gitId":"jiahui0309"},"content":"4. ClinicMate deletes the person","lastModifiedDate":"2024-03-05"},{"lineNumber":378,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":379,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":380,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":381,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23"},{"lineNumber":382,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":383,"author":{"gitId":"-"},"content":"* 2a. The list is empty.","lastModifiedDate":"2020-05-23"},{"lineNumber":384,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":385,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":386,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":387,"author":{"gitId":"jiahui0309"},"content":"* 3a. The given IC number is invalid.","lastModifiedDate":"2024-03-05"},{"lineNumber":388,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":389,"author":{"gitId":"jiahui0309"},"content":" * 3a1. ClinicMate shows an error message.","lastModifiedDate":"2024-03-05"},{"lineNumber":390,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":391,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2020-05-23"},{"lineNumber":392,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":393,"author":{"gitId":"jiahui0309"},"content":"* 4a. The given command format is wrong.","lastModifiedDate":"2024-03-04"},{"lineNumber":394,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":395,"author":{"gitId":"jiahui0309"},"content":" * 4a1. ClinicMate shows an error message.","lastModifiedDate":"2024-03-05"},{"lineNumber":396,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":397,"author":{"gitId":"jiahui0309"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-04"},{"lineNumber":398,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":399,"author":{"gitId":"jiahui0309"},"content":"**Use case: Find a person**","lastModifiedDate":"2024-03-04"},{"lineNumber":400,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":401,"author":{"gitId":"jiahui0309"},"content":"**MSS**","lastModifiedDate":"2024-03-04"},{"lineNumber":402,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":403,"author":{"gitId":"jiahui0309"},"content":"1. User requests to list persons","lastModifiedDate":"2024-03-04"},{"lineNumber":404,"author":{"gitId":"jiahui0309"},"content":"2. ClinicMate shows a list of persons","lastModifiedDate":"2024-03-05"},{"lineNumber":405,"author":{"gitId":"jiahui0309"},"content":"3. User requests to find a specific person in the list","lastModifiedDate":"2024-03-04"},{"lineNumber":406,"author":{"gitId":"jiahui0309"},"content":"4. ClinicMate finds the person","lastModifiedDate":"2024-03-05"},{"lineNumber":407,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":408,"author":{"gitId":"jiahui0309"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":409,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":410,"author":{"gitId":"jiahui0309"},"content":"**Extensions**","lastModifiedDate":"2024-03-04"},{"lineNumber":411,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":412,"author":{"gitId":"jiahui0309"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-03-04"},{"lineNumber":413,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":414,"author":{"gitId":"jiahui0309"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":415,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":416,"author":{"gitId":"jiahui0309"},"content":"* 3a. The given IC number is invalid.","lastModifiedDate":"2024-03-05"},{"lineNumber":417,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":418,"author":{"gitId":"jiahui0309"},"content":" * 3a1. ClinicMate shows an error message.","lastModifiedDate":"2024-03-05"},{"lineNumber":419,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":420,"author":{"gitId":"jiahui0309"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-04"},{"lineNumber":421,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":422,"author":{"gitId":"jiahui0309"},"content":"* 4a. The given command format is wrong.","lastModifiedDate":"2024-03-04"},{"lineNumber":423,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":424,"author":{"gitId":"jiahui0309"},"content":" * 4a1. ClinicMate shows an error message.","lastModifiedDate":"2024-03-05"},{"lineNumber":425,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":426,"author":{"gitId":"jiahui0309"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-04"},{"lineNumber":427,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":428,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":429,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":430,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23"},{"lineNumber":431,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":432,"author":{"gitId":"-"},"content":"1. Should work on any _mainstream OS_ as long as it has Java `11` or above installed.","lastModifiedDate":"2020-05-23"},{"lineNumber":433,"author":{"gitId":"tengcharmaine"},"content":"2. A user with above average typing speed for regular English text (i.e. not code, not system admin commands) should be able to accomplish most of the tasks faster using commands than using the mouse.","lastModifiedDate":"2024-03-03"},{"lineNumber":434,"author":{"gitId":"tengcharmaine"},"content":"3. Should be able to hold up to 1000 persons without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2024-03-03"},{"lineNumber":435,"author":{"gitId":"tengcharmaine"},"content":"4. Should respond to user actions within 5 seconds under normal load conditions.","lastModifiedDate":"2024-03-03"},{"lineNumber":436,"author":{"gitId":"tengcharmaine"},"content":"5. Should be designed to use system resources (e.g. CPU) efficiently to minimise its impact on the host environment.","lastModifiedDate":"2024-03-03"},{"lineNumber":437,"author":{"gitId":"tengcharmaine"},"content":"6. User interface should be intuitive and easy for users with varying levels of technical expertise.","lastModifiedDate":"2024-03-03"},{"lineNumber":438,"author":{"gitId":"tengcharmaine"},"content":"7. Codebase should be well-documented and follow best practices to facilitate future maintenance and enhancements.","lastModifiedDate":"2024-03-03"},{"lineNumber":439,"author":{"gitId":"tengcharmaine"},"content":"8. Should be easy for developers to add new features or make changes to existing ones without causing unintended side effects.","lastModifiedDate":"2024-03-03"},{"lineNumber":440,"author":{"gitId":"tengcharmaine"},"content":"9. Should comply with relevant data privacy regulations (e.g. PDPA) and ensure user data is stored and processed securely.","lastModifiedDate":"2024-03-03"},{"lineNumber":441,"author":{"gitId":"tengcharmaine"},"content":"10. Should be able to be used alongside other systems and services commonly used in healthcare settings, such as electronic health record (EHR) systems.","lastModifiedDate":"2024-03-03"},{"lineNumber":442,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":443,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23"},{"lineNumber":444,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":445,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09"},{"lineNumber":446,"author":{"gitId":"drustanyjt"},"content":"* **GP**: General Practitioner, a general physician who provides primary care (usually in a clinic)","lastModifiedDate":"2024-03-04"},{"lineNumber":447,"author":{"gitId":"drustanyjt"},"content":"* **Taking History**: A medical term for recording a patient\u0027s symptoms, medical history, and other relevant information","lastModifiedDate":"2024-03-04"},{"lineNumber":448,"author":{"gitId":"drustanyjt"},"content":"* **Differential Diagnosis**: A medical term for a possible alternative diagnosis for a patient\u0027s symptoms","lastModifiedDate":"2024-03-04"},{"lineNumber":449,"author":{"gitId":"drustanyjt"},"content":"* **IC Number**: Short for NRIC (National Registration Identity Card) Number, a unique identifier for Singapore citizens and permanent residents","lastModifiedDate":"2024-03-05"},{"lineNumber":450,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":451,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":452,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":453,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23"},{"lineNumber":454,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":455,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":456,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":457,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":458,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":459,"author":{"gitId":"-"},"content":"**Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2023-09-12"},{"lineNumber":460,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":461,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":462,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":463,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":464,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":465,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":466,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":467,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":468,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23"},{"lineNumber":469,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":470,"author":{"gitId":"-"},"content":" 1. Double-click the jar file Expected: Shows the GUI with a set of sample contacts. The window size may not be optimum.","lastModifiedDate":"2020-05-23"},{"lineNumber":471,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":472,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23"},{"lineNumber":473,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":474,"author":{"gitId":"-"},"content":" 1. Resize the window to an optimum size. Move the window to a different location. Close the window.","lastModifiedDate":"2020-05-23"},{"lineNumber":475,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":476,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":477,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23"},{"lineNumber":478,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":479,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":480,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":481,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23"},{"lineNumber":482,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":483,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23"},{"lineNumber":484,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":485,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23"},{"lineNumber":486,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":487,"author":{"gitId":"Jayne1010"},"content":" 1. Test case: `delete T0123456A`\u003cbr\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":488,"author":{"gitId":"Jayne1010"},"content":" Expected: The contact with the unique identification number `T0123456A` is deleted from the list. Details of the deleted contact shown in the status message. Timestamp in the status bar is updated.","lastModifiedDate":"2024-03-19"},{"lineNumber":489,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":490,"author":{"gitId":"Jayne1010"},"content":" 1. Test case: `delete T0123A`\u003cbr\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":491,"author":{"gitId":"-"},"content":" Expected: No person is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2020-05-23"},{"lineNumber":492,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":493,"author":{"gitId":"Jayne1010"},"content":" 1. Other incorrect delete commands to try: `delete`, `delete x`, `...` (where x is the identification number which does not exist in the list)\u003cbr\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":494,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":495,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":496,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":497,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":498,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":499,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":500,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":501,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":502,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23"},{"lineNumber":503,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":504,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"drustanyjt":17,"Jayne1010":5,"tengcharmaine":9,"-":376,"jiahui0309":97}},{"path":"docs/UserGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"User Guide\"","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"Jayne1010"},"content":"# Clinic Mate User Guide","lastModifiedDate":"2024-03-03"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"Jayne1010"},"content":"Clinic Mate is a **desktop** app for managing contacts in a clinic, optimized for use via a **Command Line Interface** (CLI) while still having the benefits of a Graphical User Interface (GUI). If you can type fast, Clinic Mate can manage your patients\u0027 contact faster than traditional GUI apps.","lastModifiedDate":"2024-03-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"## Quick start","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"1. Ensure you have Java `11` or above installed in your Computer.","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"drustanyjt"},"content":"1. Download the latest `.jar` file from [here](https://github.com/AY2324S2-CS2103T-F14-2/tp/releases/latest)","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"1. Copy the file to the folder you want to use as the _home folder_ for your AddressBook.","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"tengcharmaine"},"content":"1. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar clinicmate.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":" A GUI similar to the below should appear in a few seconds. Note how the app contains some sample data.\u003cbr\u003e","lastModifiedDate":"2023-01-01"},{"lineNumber":26,"author":{"gitId":"-"},"content":" ![Ui](images/Ui.png)","lastModifiedDate":"2024-03-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":"1. Type the command in the command box and press Enter to execute it. e.g. typing **`help`** and pressing Enter will open the help window.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":" Some example commands you can try:","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * `list` : Lists all contacts.","lastModifiedDate":"2023-01-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"Jayne1010"},"content":" * `add n/John Doe p/88888888 e/johndoe@mail.com i/T0123456A ag/12 s/Male a/John street, block 123, #01-01` : Adds a contact named `John Doe` to the Address Book.","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"Jayne1010"},"content":" * `delete T0123456A` : Deletes the contact with the IC \u0027T0123456A\u0027 shown in the current list.","lastModifiedDate":"2024-03-03"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"Jayne1010"},"content":" * `find T0123456A` : Find the contact with the IC \u0027T0123456A\u0027 shown in the current list.","lastModifiedDate":"2024-03-03"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"Jayne1010"},"content":" * `addnote i/T0123456A n/Patient has diabetes` : Add a note: \u0027Patient has diabetes\u0027 for the contact with the IC \u0027T0123456A\u0027 as shown in current list.","lastModifiedDate":"2024-03-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"1. Refer to the [Features](#features) below for details of each command.","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"**Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"* Words in `UPPER_CASE` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" e.g. in `add n/NAME`, `NAME` is a parameter which can be used as `add n/John Doe`.","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"* Parameters can be in any order.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"Jayne1010"},"content":" e.g. if the command specifies `n/NAME i/IC_NUMBER`, `i/IC_NUMBER n/NAME` is also acceptable.","lastModifiedDate":"2024-03-03"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"* Extraneous parameters for commands that do not take in parameters (such as `help`, `list`, `exit` and `clear`) will be ignored.\u003cbr\u003e","lastModifiedDate":"2021-02-03"},{"lineNumber":58,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2021-02-03"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03"},{"lineNumber":60,"author":{"gitId":"-"},"content":"* If you are using a PDF version of this document, be careful when copying and pasting commands that span multiple lines as space characters surrounding line-breaks may be omitted when copied over to the application.","lastModifiedDate":"2023-06-26"},{"lineNumber":61,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":"### Viewing help : `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"author":{"gitId":"Jayne1010"},"content":"Shows a message explaining how to access the help page.","lastModifiedDate":"2024-03-03"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"Format: `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"### Adding a person: `add`","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"Adds a person to the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"Jayne1010"},"content":"Format: `add n/NAME p/PHONE e/EMAIL i/IC_NUMBER ag/AGE s/SEX a/ADDRESS`","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"Jayne1010"},"content":"* A person will be uniquely identified by his/her personal identification number.","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"Jayne1010"},"content":"* Clinic mate does not allow the same identification number to be twice.","lastModifiedDate":"2024-03-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":82,"author":{"gitId":"Jayne1010"},"content":"**Tip:** A person can have a note included.","lastModifiedDate":"2024-03-03"},{"lineNumber":83,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"Jayne1010"},"content":"* `add n/John Doe p/88888888 e/johndoe@mail.com i/T0123456A ag/12 s/Male a/John street, block 123, #01-01`","lastModifiedDate":"2024-03-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"Jayne1010"},"content":"### Adding a note : `addnote`","lastModifiedDate":"2024-03-03"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"Jayne1010"},"content":"Add a note to an existing person in the address book","lastModifiedDate":"2024-03-03"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"Jayne1010"},"content":"Format: `addnote i/IC_NUMBER n/NOTE`","lastModifiedDate":"2024-03-03"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"Jayne1010"},"content":"* Adds a note to the person with the specified `IC_NUMBER`. The IC number refers to the IC number shown in the displayed person list. The IC_NUMBER **must be the FULL IC NUMBER**.","lastModifiedDate":"2024-03-03"},{"lineNumber":95,"author":{"gitId":"-"},"content":"* Existing values will be updated to the input values.","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"Jayne1010"},"content":"* When adding notes, the new note added will be appended to the current note of the person. i.e. current note is preserved","lastModifiedDate":"2024-03-05"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"Jayne1010"},"content":"* `addnote i/T0123456A n/Patient has diabetes` Adds a note `Patient has diabetes` to the person with the IC number `T0123456A` in the address book.","lastModifiedDate":"2024-03-03"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"Jayne1010"},"content":"### Locating persons by ic number: `find`","lastModifiedDate":"2024-03-03"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":103,"author":{"gitId":"Jayne1010"},"content":"Find an existing person in the address book using their IC_NUMBER.","lastModifiedDate":"2024-03-03"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":105,"author":{"gitId":"Jayne1010"},"content":"Format: `find IC_NUMBER`","lastModifiedDate":"2024-03-03"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":107,"author":{"gitId":"Jayne1010"},"content":"* The search is case-insensitive. e.g `t0123456a` will match `T0123456A`.","lastModifiedDate":"2024-03-03"},{"lineNumber":108,"author":{"gitId":"Jayne1010"},"content":"* Only the IC number is searched.","lastModifiedDate":"2024-03-03"},{"lineNumber":109,"author":{"gitId":"Jayne1010"},"content":"* Only full IC number will be matched e.g. `T0123456A` will not match `T0123A`.","lastModifiedDate":"2024-03-03"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"Jayne1010"},"content":"* `find T0123456A` returns `John Doe`.","lastModifiedDate":"2024-03-03"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":"### Deleting a person : `delete`","lastModifiedDate":"2020-05-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"Jayne1010"},"content":"Deletes the specified person from the address book using their IC_NUMBER.","lastModifiedDate":"2024-03-03"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"Jayne1010"},"content":"Format: `delete IC_NUMBER`","lastModifiedDate":"2024-03-03"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"Jayne1010"},"content":"* Deletes the person with the specified `IC_NUMBER`.","lastModifiedDate":"2024-03-03"},{"lineNumber":121,"author":{"gitId":"Jayne1010"},"content":"* The IC_NUMBER refers to the IC number shown in the displayed person list.","lastModifiedDate":"2024-03-03"},{"lineNumber":122,"author":{"gitId":"Jayne1010"},"content":"* The IC_NUMBER **must be the FULL IC NUMBER**.","lastModifiedDate":"2024-03-03"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"Jayne1010"},"content":"* `delete T0123456A` deletes `John Doe` from the address book.","lastModifiedDate":"2024-03-03"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":"### Clearing all entries : `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":"Clears all entries from the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":"Format: `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":"AddressBook data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":145,"author":{"gitId":"drustanyjt"},"content":"AddressBook data are saved automatically as a JSON file `[JAR file location]/data/clinicmate.json`. Advanced users are welcome to update data directly by editing that data file.","lastModifiedDate":"2024-03-18"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":147,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"warning\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":149,"author":{"gitId":"-"},"content":"**Caution:**","lastModifiedDate":"2023-09-12"},{"lineNumber":150,"author":{"gitId":"-"},"content":"If your changes to the data file makes its format invalid, AddressBook will discard all data and start with an empty data file at the next run. Hence, it is recommended to take a backup of the file before editing it.\u003cbr\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":151,"author":{"gitId":"-"},"content":"Furthermore, certain edits can cause the AddressBook to behave in unexpected ways (e.g., if a value entered is outside the acceptable range). Therefore, edit the data file only if you are confident that you can update it correctly.","lastModifiedDate":"2023-09-12"},{"lineNumber":152,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":154,"author":{"gitId":"-"},"content":"### Archiving data files `[coming in v2.0]`","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"_Details coming soon ..._","lastModifiedDate":"2021-02-04"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":"**A**: Install the app in the other computer and overwrite the empty data file it creates with the file that contains the data of your previous AddressBook home folder.","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"## Known issues","lastModifiedDate":"2023-09-08"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":169,"author":{"gitId":"-"},"content":"1. **When using multiple screens**, if you move the application to a secondary screen, and later switch to using only the primary screen, the GUI will open off-screen. The remedy is to delete the `preferences.json` file created by the application before running the application again.","lastModifiedDate":"2023-09-08"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":171,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":173,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":"Action | Format, Examples","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":"-----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-12"},{"lineNumber":177,"author":{"gitId":"Jayne1010"},"content":"**Add** | `add n/NAME p/PHONE e/EMAIL i/IC_NUMBER ag/AGE s/SEX a/ADDRESS` \u003cbr\u003e e.g., `add n/John Doe p/88888888 e/johndoe@mail.com i/T0123456A ag/12 s/Male a/John street, block 123, #01-01`","lastModifiedDate":"2024-03-19"},{"lineNumber":178,"author":{"gitId":"-"},"content":"**Clear** | `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"Jayne1010"},"content":"**Delete** | `delete IC_NUMBER`\u003cbr\u003e e.g., `delete T0123456A`","lastModifiedDate":"2024-03-03"},{"lineNumber":180,"author":{"gitId":"Jayne1010"},"content":"**AddNote** | `addnote i/IC_NUMBER n/NOTE`\u003cbr\u003e e.g., `addnote i/T0123456A n/Patient has diabetes`","lastModifiedDate":"2024-03-03"},{"lineNumber":181,"author":{"gitId":"Jayne1010"},"content":"**Find** | `find IC_NUMBER`\u003cbr\u003e e.g., `find T0123456A`","lastModifiedDate":"2024-03-03"},{"lineNumber":182,"author":{"gitId":"-"},"content":"**Help** | `help`","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"Jayne1010":37,"drustanyjt":2,"tengcharmaine":1,"-":142}},{"path":"docs/diagrams/AddCommandDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"Jayne1010"},"content":"@startuml","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"Jayne1010"},"content":"!include style.puml","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"Jayne1010"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"Jayne1010"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"Jayne1010"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"Jayne1010"},"content":"participant \":AddressBookParser\" as AddressBookParser LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"Jayne1010"},"content":"participant \":AddCommandParser\" as AddCommandParser LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"Jayne1010"},"content":"participant \"d:AddCommand\" as AddCommand LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"Jayne1010"},"content":"participant \"r:CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"Jayne1010"},"content":"end box","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"Jayne1010"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"Jayne1010"},"content":"participant \"m:Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"Jayne1010"},"content":"end box","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"Jayne1010"},"content":"[-\u003e LogicManager : execute(\"add n/John Doe p/12345678 e/john@mail.com i/T0123456A ag/12 s/Male a/John street, block 123, #01-01\")","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"Jayne1010"},"content":"activate LogicManager","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"Jayne1010"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(\"add n/John Doe p/12345678 e/john@mail.com i/T0123456A ag/12 s/Male a/John street, block 123, #01-01\")","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"Jayne1010"},"content":"activate AddressBookParser","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"Jayne1010"},"content":"create AddCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"Jayne1010"},"content":"AddressBookParser -\u003e AddCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"Jayne1010"},"content":"activate AddCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"Jayne1010"},"content":"AddCommandParser --\u003e AddressBookParser","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"Jayne1010"},"content":"deactivate AddCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"Jayne1010"},"content":"AddressBookParser -\u003e AddCommandParser : parse(\"n/John Doe p/12345678 e/john@mail.com i/T0123456A ag/12 s/Male a/John street, block 123, #01-01\")","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"Jayne1010"},"content":"activate AddCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"Jayne1010"},"content":"create AddCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"Jayne1010"},"content":"AddCommandParser -\u003e AddCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"Jayne1010"},"content":"activate AddCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"Jayne1010"},"content":"AddCommand --\u003e AddCommandParser :","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"Jayne1010"},"content":"deactivate AddCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"Jayne1010"},"content":"AddCommandParser --\u003e AddressBookParser : a","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"Jayne1010"},"content":"deactivate AddCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"Jayne1010"},"content":"\u0027Hidden arrow to position the destroy marker below the end of the activation bar.","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"Jayne1010"},"content":"AddCommandParser -[hidden]-\u003e AddressBookParser","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"Jayne1010"},"content":"destroy AddCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"Jayne1010"},"content":"AddressBookParser --\u003e LogicManager : a","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"Jayne1010"},"content":"deactivate AddressBookParser","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"Jayne1010"},"content":"LogicManager -\u003e AddCommand : execute(m)","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"Jayne1010"},"content":"activate AddCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"Jayne1010"},"content":"AddCommand -\u003e Model : setPerson(T0123456A, \\n new Person(John Doe, 12345678, ...))","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"Jayne1010"},"content":"activate Model","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"Jayne1010"},"content":"Model --\u003e AddCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"Jayne1010"},"content":"deactivate Model","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"Jayne1010"},"content":"create CommandResult","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"Jayne1010"},"content":"AddCommand -\u003e CommandResult","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"Jayne1010"},"content":"activate CommandResult","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"Jayne1010"},"content":"CommandResult --\u003e AddCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"Jayne1010"},"content":"deactivate CommandResult","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"Jayne1010"},"content":"AddCommand --\u003e LogicManager : r","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"Jayne1010"},"content":"deactivate AddCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"Jayne1010"},"content":"[\u003c--LogicManager","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"Jayne1010"},"content":"deactivate LogicManager","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"Jayne1010"},"content":"@enduml","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"Jayne1010":70}},{"path":"docs/diagrams/AddNoteSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"tengcharmaine"},"content":"@startuml","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"tengcharmaine"},"content":"!include style.puml","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"tengcharmaine"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"tengcharmaine"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"tengcharmaine"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"tengcharmaine"},"content":"participant \":AddressBookParser\" as AddressBookParser LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"tengcharmaine"},"content":"participant \":AddNoteCommandParser\" as AddNoteCommandParser LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"tengcharmaine"},"content":"participant \"n:AddNoteCommand\" as AddNoteCommand LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"tengcharmaine"},"content":"participant \"r:CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"tengcharmaine"},"content":"end box","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"tengcharmaine"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"tengcharmaine"},"content":"participant \"m:Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"tengcharmaine"},"content":"end box","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"tengcharmaine"},"content":"[-\u003e LogicManager : execute(\"addnote \\n i/T0123456A n/Covid\")","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"tengcharmaine"},"content":"activate LogicManager","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"tengcharmaine"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(\"addnote \\n i/T0123456A n/Covid\")","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"tengcharmaine"},"content":"activate AddressBookParser","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"tengcharmaine"},"content":"create AddNoteCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"tengcharmaine"},"content":"AddressBookParser -\u003e AddNoteCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"tengcharmaine"},"content":"activate AddNoteCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"tengcharmaine"},"content":"AddNoteCommandParser --\u003e AddressBookParser","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"tengcharmaine"},"content":"deactivate AddNoteCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"tengcharmaine"},"content":"AddressBookParser -\u003e AddNoteCommandParser : parse(\"i/T0123456A n/Covid\")","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"tengcharmaine"},"content":"activate AddNoteCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"tengcharmaine"},"content":"create AddNoteCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"tengcharmaine"},"content":"AddNoteCommandParser -\u003e AddNoteCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"tengcharmaine"},"content":"activate AddNoteCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"tengcharmaine"},"content":"AddNoteCommand --\u003e AddNoteCommandParser :","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"tengcharmaine"},"content":"deactivate AddNoteCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"tengcharmaine"},"content":"AddNoteCommandParser --\u003e AddressBookParser : n","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"tengcharmaine"},"content":"deactivate AddNoteCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"tengcharmaine"},"content":"\u0027Hidden arrow to position the destroy marker below the end of the activation bar.","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"tengcharmaine"},"content":"AddNoteCommandParser -[hidden]-\u003e AddressBookParser","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"tengcharmaine"},"content":"destroy AddNoteCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"tengcharmaine"},"content":"AddressBookParser --\u003e LogicManager : n","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"tengcharmaine"},"content":"deactivate AddressBookParser","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"tengcharmaine"},"content":"LogicManager -\u003e AddNoteCommand : execute(m)","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"tengcharmaine"},"content":"activate AddNoteCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"tengcharmaine"},"content":"AddNoteCommand -\u003e Model : setPerson(T0123456A, \\n new Person(..., Covid, ...))","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"tengcharmaine"},"content":"activate Model","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"tengcharmaine"},"content":"Model --\u003e AddNoteCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"tengcharmaine"},"content":"deactivate Model","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"tengcharmaine"},"content":"create CommandResult","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"tengcharmaine"},"content":"AddNoteCommand -\u003e CommandResult","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"tengcharmaine"},"content":"activate CommandResult","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"tengcharmaine"},"content":"CommandResult --\u003e AddNoteCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"tengcharmaine"},"content":"deactivate CommandResult","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"tengcharmaine"},"content":"AddNoteCommand --\u003e LogicManager : r","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"tengcharmaine"},"content":"deactivate AddNoteCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"tengcharmaine"},"content":"[\u003c--LogicManager","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"tengcharmaine"},"content":"deactivate LogicManager","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"tengcharmaine"},"content":"@enduml","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"tengcharmaine":70}},{"path":"docs/diagrams/DeleteSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2023-07-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"participant \":AddressBookParser\" as AddressBookParser LOGIC_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":8,"author":{"gitId":"-"},"content":"participant \":DeleteCommandParser\" as DeleteCommandParser LOGIC_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"participant \"d:DeleteCommand\" as DeleteCommand LOGIC_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"-"},"content":"participant \"r:CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-02-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"end box","lastModifiedDate":"2019-07-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"participant \"m:Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-02-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":"end box","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"jiahui0309"},"content":"[-\u003e LogicManager : execute(\"delete S0123456A\")","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":"activate LogicManager","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"jiahui0309"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(\"delete S0123456A\")","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":"activate AddressBookParser","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"create DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":24,"author":{"gitId":"-"},"content":"AddressBookParser -\u003e DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":25,"author":{"gitId":"-"},"content":"activate DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":"DeleteCommandParser --\u003e AddressBookParser","lastModifiedDate":"2019-07-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"deactivate DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"jiahui0309"},"content":"AddressBookParser -\u003e DeleteCommandParser : parse(\"S0123456A\")","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"-"},"content":"activate DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":"create DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":"DeleteCommandParser -\u003e DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":35,"author":{"gitId":"-"},"content":"activate DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":37,"author":{"gitId":"-"},"content":"DeleteCommand --\u003e DeleteCommandParser :","lastModifiedDate":"2024-02-09"},{"lineNumber":38,"author":{"gitId":"-"},"content":"deactivate DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":40,"author":{"gitId":"-"},"content":"DeleteCommandParser --\u003e AddressBookParser : d","lastModifiedDate":"2019-07-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":"deactivate DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":42,"author":{"gitId":"-"},"content":"\u0027Hidden arrow to position the destroy marker below the end of the activation bar.","lastModifiedDate":"2019-07-03"},{"lineNumber":43,"author":{"gitId":"-"},"content":"DeleteCommandParser -[hidden]-\u003e AddressBookParser","lastModifiedDate":"2019-07-03"},{"lineNumber":44,"author":{"gitId":"-"},"content":"destroy DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":46,"author":{"gitId":"-"},"content":"AddressBookParser --\u003e LogicManager : d","lastModifiedDate":"2019-07-03"},{"lineNumber":47,"author":{"gitId":"-"},"content":"deactivate AddressBookParser","lastModifiedDate":"2019-07-03"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":49,"author":{"gitId":"-"},"content":"LogicManager -\u003e DeleteCommand : execute(m)","lastModifiedDate":"2024-02-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":"activate DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":52,"author":{"gitId":"jiahui0309"},"content":"DeleteCommand -\u003e Model : deletePerson(S0123456A)","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"-"},"content":"activate Model","lastModifiedDate":"2019-07-03"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":55,"author":{"gitId":"-"},"content":"Model --\u003e DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":56,"author":{"gitId":"-"},"content":"deactivate Model","lastModifiedDate":"2019-07-03"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":58,"author":{"gitId":"-"},"content":"create CommandResult","lastModifiedDate":"2019-07-03"},{"lineNumber":59,"author":{"gitId":"-"},"content":"DeleteCommand -\u003e CommandResult","lastModifiedDate":"2019-07-03"},{"lineNumber":60,"author":{"gitId":"-"},"content":"activate CommandResult","lastModifiedDate":"2019-07-03"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":62,"author":{"gitId":"-"},"content":"CommandResult --\u003e DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":63,"author":{"gitId":"-"},"content":"deactivate CommandResult","lastModifiedDate":"2019-07-03"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":65,"author":{"gitId":"-"},"content":"DeleteCommand --\u003e LogicManager : r","lastModifiedDate":"2024-02-09"},{"lineNumber":66,"author":{"gitId":"-"},"content":"deactivate DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":68,"author":{"gitId":"-"},"content":"[\u003c--LogicManager","lastModifiedDate":"2019-07-03"},{"lineNumber":69,"author":{"gitId":"-"},"content":"deactivate LogicManager","lastModifiedDate":"2019-07-03"},{"lineNumber":70,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"-":66,"jiahui0309":4}},{"path":"docs/diagrams/EditCommandDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"Jayne1010"},"content":"@startuml","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"Jayne1010"},"content":"!include style.puml","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"Jayne1010"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"Jayne1010"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"Jayne1010"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"Jayne1010"},"content":"participant \":AddressBookParser\" as AddressBookParser LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"Jayne1010"},"content":"participant \":EditCommandParser\" as EditCommandParser LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"Jayne1010"},"content":"participant \"d:EditCommand\" as EditCommand LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"Jayne1010"},"content":"participant \"r:CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"Jayne1010"},"content":"end box","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"Jayne1010"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"Jayne1010"},"content":"participant \"m:Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"Jayne1010"},"content":"end box","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"Jayne1010"},"content":"[-\u003e LogicManager : execute(\"edit T0123456A p/23456789\")","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"Jayne1010"},"content":"activate LogicManager","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"Jayne1010"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(\"edit T0123456A p/23456789\")","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"Jayne1010"},"content":"activate AddressBookParser","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"Jayne1010"},"content":"create EditCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"Jayne1010"},"content":"AddressBookParser -\u003e EditCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"Jayne1010"},"content":"activate EditCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"Jayne1010"},"content":"EditCommandParser --\u003e AddressBookParser","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"Jayne1010"},"content":"deactivate EditCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"Jayne1010"},"content":"AddressBookParser -\u003e EditCommandParser : parse(\"p/23456789\")","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"Jayne1010"},"content":"activate EditCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"Jayne1010"},"content":"create EditCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"Jayne1010"},"content":"EditCommandParser -\u003e EditCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"Jayne1010"},"content":"activate EditCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"Jayne1010"},"content":"EditCommand --\u003e EditCommandParser :","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"Jayne1010"},"content":"deactivate EditCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"Jayne1010"},"content":"EditCommandParser --\u003e AddressBookParser : e","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"Jayne1010"},"content":"deactivate EditCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"Jayne1010"},"content":"\u0027Hidden arrow to position the destroy marker below the end of the activation bar.","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"Jayne1010"},"content":"EditCommandParser -[hidden]-\u003e AddressBookParser","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"Jayne1010"},"content":"destroy EditCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"Jayne1010"},"content":"AddressBookParser --\u003e LogicManager : e","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"Jayne1010"},"content":"deactivate AddressBookParser","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"Jayne1010"},"content":"LogicManager -\u003e EditCommand : execute(m)","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"Jayne1010"},"content":"activate EditCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"Jayne1010"},"content":"EditCommand -\u003e Model : setPerson(T0123456A, \\n new Person(John Doe, 23456789, ...))","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"Jayne1010"},"content":"activate Model","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"Jayne1010"},"content":"Model --\u003e EditCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"Jayne1010"},"content":"deactivate Model","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"Jayne1010"},"content":"create CommandResult","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"Jayne1010"},"content":"EditCommand -\u003e CommandResult","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"Jayne1010"},"content":"activate CommandResult","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"Jayne1010"},"content":"CommandResult --\u003e EditCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"Jayne1010"},"content":"deactivate CommandResult","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"Jayne1010"},"content":"EditCommand --\u003e LogicManager : r","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"Jayne1010"},"content":"deactivate EditCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"Jayne1010"},"content":"[\u003c--LogicManager","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"Jayne1010"},"content":"deactivate LogicManager","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"Jayne1010"},"content":"@enduml","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"Jayne1010":70}},{"path":"docs/diagrams/FindSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"jiahui0309"},"content":"@startuml","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"jiahui0309"},"content":"!include style.puml","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"jiahui0309"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"jiahui0309"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"jiahui0309"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"jiahui0309"},"content":"participant \":AddressBookParser\" as AddressBookParser LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"jiahui0309"},"content":"participant \":FindCommandParser\" as FindCommandParser LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"jiahui0309"},"content":"participant \"f:FindCommand\" as FindCommand LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"jiahui0309"},"content":"participant \"r:CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"jiahui0309"},"content":"end box","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"jiahui0309"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"jiahui0309"},"content":"participant \"m:Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"jiahui0309"},"content":"end box","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"jiahui0309"},"content":"[-\u003e LogicManager : execute(\"find S0123456A\")","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"jiahui0309"},"content":"activate LogicManager","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"jiahui0309"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(\"find S0123456A\")","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"jiahui0309"},"content":"activate AddressBookParser","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"jiahui0309"},"content":"create FindCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"jiahui0309"},"content":"AddressBookParser -\u003e FindCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"jiahui0309"},"content":"activate FindCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"jiahui0309"},"content":"FindCommandParser --\u003e AddressBookParser","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"jiahui0309"},"content":"deactivate FindCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"jiahui0309"},"content":"AddressBookParser -\u003e FindCommandParser : parse(\"S0123456A\")","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"jiahui0309"},"content":"activate FindCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"jiahui0309"},"content":"create FindCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"jiahui0309"},"content":"FindCommandParser -\u003e FindCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"jiahui0309"},"content":"activate FindCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"jiahui0309"},"content":"FindCommand --\u003e FindCommandParser :","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"jiahui0309"},"content":"deactivate FindCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"jiahui0309"},"content":"FindCommandParser --\u003e AddressBookParser : f","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"jiahui0309"},"content":"deactivate FindCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"jiahui0309"},"content":"\u0027Hidden arrow to position the destroy marker below the end of the activation bar.","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"jiahui0309"},"content":"FindCommandParser -[hidden]-\u003e AddressBookParser","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"jiahui0309"},"content":"destroy FindCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"jiahui0309"},"content":"AddressBookParser --\u003e LogicManager : f","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"jiahui0309"},"content":"deactivate AddressBookParser","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"jiahui0309"},"content":"LogicManager -\u003e FindCommand : execute(m)","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"jiahui0309"},"content":"activate FindCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"jiahui0309"},"content":"FindCommand -\u003e Model : updateFilteredPersonList(S0123456A)","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"jiahui0309"},"content":"activate Model","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"jiahui0309"},"content":"Model --\u003e FindCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"jiahui0309"},"content":"deactivate Model","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"jiahui0309"},"content":"create CommandResult","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"jiahui0309"},"content":"FindCommand -\u003e CommandResult","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"jiahui0309"},"content":"activate CommandResult","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"jiahui0309"},"content":"CommandResult --\u003e FindCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"jiahui0309"},"content":"deactivate CommandResult","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"jiahui0309"},"content":"FindCommand --\u003e LogicManager : r","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"jiahui0309"},"content":"deactivate FindCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"jiahui0309"},"content":"[\u003c--LogicManager","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"jiahui0309"},"content":"deactivate LogicManager","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"jiahui0309"},"content":"@enduml","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"jiahui0309":70}},{"path":"docs/diagrams/ModelClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam arrowColor MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam classBackgroundColor MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Package Model as ModelPackage \u003c\u003cRectangle\u003e\u003e{","lastModifiedDate":"2023-07-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nReadOnlyAddressBook\" as ReadOnlyAddressBook","lastModifiedDate":"2022-01-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nReadOnlyUserPrefs\" as ReadOnlyUserPrefs","lastModifiedDate":"2022-01-03"},{"lineNumber":10,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nModel\" as Model","lastModifiedDate":"2022-01-03"},{"lineNumber":11,"author":{"gitId":"-"},"content":"Class AddressBook","lastModifiedDate":"2019-07-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"Class ModelManager","lastModifiedDate":"2019-07-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"Class UserPrefs","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":15,"author":{"gitId":"-"},"content":"Class UniquePersonList","lastModifiedDate":"2021-07-31"},{"lineNumber":16,"author":{"gitId":"-"},"content":"Class Person","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"Class Name","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"Class Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"drustanyjt"},"content":"Class Email","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"drustanyjt"},"content":"Class IdentityCardNumber","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"drustanyjt"},"content":"Class Age","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"drustanyjt"},"content":"Class Sex","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"drustanyjt"},"content":"Class Address","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"drustanyjt"},"content":"Class Note","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"drustanyjt"},"content":"\u0027Class Tag","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":27,"author":{"gitId":"-"},"content":"Class I #FFFFFF","lastModifiedDate":"2023-07-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":"AddressBook .up.|\u003e ReadOnlyAddressBook","lastModifiedDate":"2019-07-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":35,"author":{"gitId":"-"},"content":"ModelManager .up.|\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":36,"author":{"gitId":"-"},"content":"Model .right.\u003e ReadOnlyUserPrefs","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"Model .left.\u003e ReadOnlyAddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":38,"author":{"gitId":"-"},"content":"ModelManager -left-\u003e \"1\" AddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":39,"author":{"gitId":"-"},"content":"ModelManager -right-\u003e \"1\" UserPrefs","lastModifiedDate":"2021-07-31"},{"lineNumber":40,"author":{"gitId":"-"},"content":"UserPrefs .up.|\u003e ReadOnlyUserPrefs","lastModifiedDate":"2019-07-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":42,"author":{"gitId":"-"},"content":"AddressBook *--\u003e \"1\" UniquePersonList","lastModifiedDate":"2019-07-30"},{"lineNumber":43,"author":{"gitId":"-"},"content":"UniquePersonList --\u003e \"~* all\" Person","lastModifiedDate":"2021-07-31"},{"lineNumber":44,"author":{"gitId":"-"},"content":"Person *--\u003e Name","lastModifiedDate":"2019-07-03"},{"lineNumber":45,"author":{"gitId":"-"},"content":"Person *--\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":46,"author":{"gitId":"-"},"content":"Person *--\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":47,"author":{"gitId":"drustanyjt"},"content":"Person *--\u003e IdentityCardNumber","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"drustanyjt"},"content":"Person *--\u003e Age","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"drustanyjt"},"content":"Person *--\u003e Sex","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"-"},"content":"Person *--\u003e Address","lastModifiedDate":"2019-07-03"},{"lineNumber":51,"author":{"gitId":"drustanyjt"},"content":"Person *--\u003e Note","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"drustanyjt"},"content":"\u0027Person *--\u003e \"*\" Tag","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":54,"author":{"gitId":"-"},"content":"Person -[hidden]up--\u003e I","lastModifiedDate":"2023-07-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":"UniquePersonList -[hidden]right-\u003e I","lastModifiedDate":"2023-07-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":"Name -[hidden]right-\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":58,"author":{"gitId":"-"},"content":"Phone -[hidden]right-\u003e Address","lastModifiedDate":"2019-07-03"},{"lineNumber":59,"author":{"gitId":"-"},"content":"Address -[hidden]right-\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":61,"author":{"gitId":"-"},"content":"ModelManager --\u003e \"~* filtered\" Person","lastModifiedDate":"2021-07-31"},{"lineNumber":62,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"drustanyjt":12,"-":50}},{"path":"docs/index.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"\"","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"jiahui0309"},"content":"# ClinicMate Level-3","lastModifiedDate":"2024-03-06"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"[![CI Status](https://github.com/se-edu/addressbook-level3/workflows/Java%20CI/badge.svg)](https://github.com/se-edu/addressbook-level3/actions)","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"[![codecov](https://codecov.io/gh/se-edu/addressbook-level3/branch/master/graph/badge.svg)](https://codecov.io/gh/se-edu/addressbook-level3)","lastModifiedDate":"2020-08-07"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"tengcharmaine"},"content":"![Ui](images/OldUi.png)","lastModifiedDate":"2024-03-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"jiahui0309"},"content":"**ClinicMate is a desktop application for managing your contact details.** While it has a GUI, most of the user interactions happen using a CLI (Command Line Interface).","lastModifiedDate":"2024-03-06"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"jiahui0309"},"content":"* If you are interested in using ClinicMate, head over to the [_Quick Start_ section of the **User Guide**](UserGuide.html#quick-start).","lastModifiedDate":"2024-03-06"},{"lineNumber":16,"author":{"gitId":"jiahui0309"},"content":"* If you are interested about developing ClinicMate, the [**Developer Guide**](DeveloperGuide.html) is a good place to start.","lastModifiedDate":"2024-03-06"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"**Acknowledgements**","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"* Libraries used: [JavaFX](https://openjfx.io/), [Jackson](https://github.com/FasterXML/jackson), [JUnit5](https://github.com/junit-team/junit5)","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"drustanyjt"},"content":"* Logo: [Red Cross icons by Freepik - Flaticon](https://www.flaticon.com/free-icons/red-cross)","lastModifiedDate":"2024-03-03"},{"lineNumber":23,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-03"}],"authorContributionMap":{"drustanyjt":2,"tengcharmaine":1,"-":16,"jiahui0309":4}},{"path":"docs/tutorials/AddRemark.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-07-29"},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"Tutorial: Adding a command\"","lastModifiedDate":"2020-07-29"},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-07-29"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":7,"author":{"gitId":"-"},"content":"# Tutorial: Adding a command","lastModifiedDate":"2023-09-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"Let\u0027s walk you through the implementation of a new command — `remark`.","lastModifiedDate":"2020-07-29"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"This command allows users of the AddressBook application to add optional remarks to people in their address book and edit it if required. The command should have the following format:","lastModifiedDate":"2020-07-29"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":13,"author":{"gitId":"-"},"content":"`remark INDEX r/REMARK` (e.g., `remark 2 r/Likes baseball`)","lastModifiedDate":"2020-07-29"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":"We’ll assume that you have already set up the development environment as outlined in the Developer’s Guide.","lastModifiedDate":"2020-07-29"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":18,"author":{"gitId":"-"},"content":"## Create a new `remark` command","lastModifiedDate":"2020-07-29"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Looking in the `logic.command` package, you will notice that each existing command have their own class. All the commands inherit from the abstract class `Command` which means that they must override `execute()`. Each `Command` returns an instance of `CommandResult` upon success and `CommandResult#feedbackToUser` is printed to the `ResultDisplay`.","lastModifiedDate":"2020-07-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":22,"author":{"gitId":"-"},"content":"Let’s start by creating a new `RemarkCommand` class in the `src/main/java/seedu/address/logic/command` directory.","lastModifiedDate":"2020-07-29"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":24,"author":{"gitId":"-"},"content":"For now, let’s keep `RemarkCommand` as simple as possible and print some output. We accomplish that by returning a `CommandResult` with an accompanying message.","lastModifiedDate":"2020-07-29"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":26,"author":{"gitId":"-"},"content":"**`RemarkCommand.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":28,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":29,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2020-07-29"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2020-07-29"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":33,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-07-29"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Changes the remark of an existing person in the address book.","lastModifiedDate":"2020-07-29"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":36,"author":{"gitId":"-"},"content":"public class RemarkCommand extends Command {","lastModifiedDate":"2020-07-29"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"remark\";","lastModifiedDate":"2020-07-29"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2020-07-29"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return new CommandResult(\"Hello from remark\");","lastModifiedDate":"2020-07-29"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":44,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":45,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":47,"author":{"gitId":"-"},"content":"### Hook `RemarkCommand` into the application","lastModifiedDate":"2020-07-29"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":49,"author":{"gitId":"-"},"content":"Now that we have our `RemarkCommand` ready to be executed, we need to update `AddressBookParser#parseCommand()` to recognize the `remark` keyword. Add the new command to the `switch` block by creating a new `case` that returns a new instance of `RemarkCommand`.","lastModifiedDate":"2020-07-29"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":51,"author":{"gitId":"-"},"content":"You can refer to the changes in this [diff](https://github.com/se-edu/addressbook-level3/commit/35eb7286f18a029d39cb7a29df8f172a001e4fd8#diff-399c284cb892c20b7c04a69116fcff6ccc0666c5230a1db8e4a9145def8fa4ee).","lastModifiedDate":"2022-01-02"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":"### Run the application","lastModifiedDate":"2020-07-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":55,"author":{"gitId":"-"},"content":"Run `Main#main` and try out your new `RemarkCommand`. If everything went well, you should see something like this:","lastModifiedDate":"2020-07-29"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":"![Output displayed](../images/add-remark/RemarkHello.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":59,"author":{"gitId":"-"},"content":"## Change `RemarkCommand` to throw an exception","lastModifiedDate":"2020-07-29"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":"While we have successfully printed a message to `ResultDisplay`, the command does not do what it is supposed to do. Let’s change the command to throw a `CommandException` to accurately reflect that our command is still a work in progress.","lastModifiedDate":"2020-12-12"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":63,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"../diagrams/add-remark/RemarkClass.puml\" alt\u003d\"The relationship between RemarkCommand and Command\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":65,"author":{"gitId":"-"},"content":"Following the convention in other commands, we add relevant messages as constants and use them.","lastModifiedDate":"2020-07-29"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":67,"author":{"gitId":"-"},"content":"**`RemarkCommand.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":69,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2021-08-01"},{"lineNumber":71,"author":{"gitId":"-"},"content":" + \": Edits the remark of the person identified \"","lastModifiedDate":"2021-08-01"},{"lineNumber":72,"author":{"gitId":"-"},"content":" + \"by the index number used in the last person listing. \"","lastModifiedDate":"2020-07-29"},{"lineNumber":73,"author":{"gitId":"-"},"content":" + \"Existing remark will be overwritten by the input.\\n\"","lastModifiedDate":"2020-07-29"},{"lineNumber":74,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2020-07-29"},{"lineNumber":75,"author":{"gitId":"-"},"content":" + \"r/ [REMARK]\\n\"","lastModifiedDate":"2020-07-29"},{"lineNumber":76,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2020-07-29"},{"lineNumber":77,"author":{"gitId":"-"},"content":" + \"r/ Likes to swim.\";","lastModifiedDate":"2020-07-29"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_IMPLEMENTED_YET \u003d","lastModifiedDate":"2021-08-01"},{"lineNumber":80,"author":{"gitId":"-"},"content":" \"Remark command not implemented yet\";","lastModifiedDate":"2021-08-01"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2020-07-29"},{"lineNumber":84,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_NOT_IMPLEMENTED_YET);","lastModifiedDate":"2020-07-29"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":86,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":88,"author":{"gitId":"-"},"content":"## Enhancing `RemarkCommand`","lastModifiedDate":"2020-07-29"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":90,"author":{"gitId":"-"},"content":"Let’s change `RemarkCommand` to parse input from the user.","lastModifiedDate":"2020-07-29"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":92,"author":{"gitId":"-"},"content":"### Make the command accept parameters","lastModifiedDate":"2020-07-29"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":94,"author":{"gitId":"-"},"content":"We start by modifying the constructor of `RemarkCommand` to accept an `Index` and a `String`. While we are at it, let’s change the error message to echo the values. While this is not a replacement for tests, it is an obvious way to tell if our code is functioning as intended.","lastModifiedDate":"2020-07-29"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":96,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":97,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2020-07-29"},{"lineNumber":98,"author":{"gitId":"-"},"content":"//...","lastModifiedDate":"2020-07-29"},{"lineNumber":99,"author":{"gitId":"-"},"content":"public class RemarkCommand extends Command {","lastModifiedDate":"2020-07-29"},{"lineNumber":100,"author":{"gitId":"-"},"content":" //...","lastModifiedDate":"2020-07-29"},{"lineNumber":101,"author":{"gitId":"-"},"content":" public static final String MESSAGE_ARGUMENTS \u003d \"Index: %1$d, Remark: %2$s\";","lastModifiedDate":"2020-07-29"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":103,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2020-07-29"},{"lineNumber":104,"author":{"gitId":"-"},"content":" private final String remark;","lastModifiedDate":"2020-07-29"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":106,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-07-29"},{"lineNumber":107,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit the remark","lastModifiedDate":"2020-07-29"},{"lineNumber":108,"author":{"gitId":"-"},"content":" * @param remark of the person to be updated to","lastModifiedDate":"2020-07-29"},{"lineNumber":109,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":110,"author":{"gitId":"-"},"content":" public RemarkCommand(Index index, String remark) {","lastModifiedDate":"2020-07-29"},{"lineNumber":111,"author":{"gitId":"-"},"content":" requireAllNonNull(index, remark);","lastModifiedDate":"2020-07-29"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":113,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2020-07-29"},{"lineNumber":114,"author":{"gitId":"-"},"content":" this.remark \u003d remark;","lastModifiedDate":"2020-07-29"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":117,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2020-07-29"},{"lineNumber":118,"author":{"gitId":"-"},"content":" throw new CommandException(","lastModifiedDate":"2021-08-01"},{"lineNumber":119,"author":{"gitId":"-"},"content":" String.format(MESSAGE_ARGUMENTS, index.getOneBased(), remark));","lastModifiedDate":"2021-08-01"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":123,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2020-07-29"},{"lineNumber":124,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2020-07-29"},{"lineNumber":125,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2020-07-29"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":128,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2020-07-29"},{"lineNumber":129,"author":{"gitId":"-"},"content":" if (!(other instanceof RemarkCommand)) {","lastModifiedDate":"2020-07-29"},{"lineNumber":130,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2020-07-29"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":133,"author":{"gitId":"-"},"content":" RemarkCommand e \u003d (RemarkCommand) other;","lastModifiedDate":"2020-07-29"},{"lineNumber":134,"author":{"gitId":"-"},"content":" return index.equals(e.index)","lastModifiedDate":"2020-07-29"},{"lineNumber":135,"author":{"gitId":"-"},"content":" \u0026\u0026 remark.equals(e.remark);","lastModifiedDate":"2020-07-29"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":137,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":138,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":140,"author":{"gitId":"-"},"content":"Your code should look something like [this](https://github.com/se-edu/addressbook-level3/commit/dc6d5139d08f6403da0ec624ea32bd79a2ae0cbf#diff-a8e35af8f9c251525063fae36c9852922a7e7195763018eacec60f3a4d87c594) after you are done.","lastModifiedDate":"2022-01-02"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":142,"author":{"gitId":"-"},"content":"### Parse user input","lastModifiedDate":"2020-07-29"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":144,"author":{"gitId":"-"},"content":"Now let’s move on to writing a parser that will extract the index and remark from the input provided by the user.","lastModifiedDate":"2020-07-29"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":146,"author":{"gitId":"-"},"content":"Create a `RemarkCommandParser` class in the `seedu.address.logic.parser` package. The class must extend the `Parser` interface.","lastModifiedDate":"2020-07-29"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":148,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"../diagrams/add-remark/ParserClass.puml\" alt\u003d\"The relationship between Parser and RemarkCommandParser\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":150,"author":{"gitId":"-"},"content":"Thankfully, `ArgumentTokenizer#tokenize()` makes it trivial to parse user input. Let’s take a look at the JavaDoc provided for the function to understand what it does.","lastModifiedDate":"2020-07-29"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":152,"author":{"gitId":"-"},"content":"**`ArgumentTokenizer.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":154,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":155,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-07-29"},{"lineNumber":156,"author":{"gitId":"-"},"content":" * Tokenizes an arguments string and returns an {@code ArgumentMultimap}","lastModifiedDate":"2020-07-29"},{"lineNumber":157,"author":{"gitId":"-"},"content":" * object that maps prefixes to their respective argument values. Only the","lastModifiedDate":"2020-07-29"},{"lineNumber":158,"author":{"gitId":"-"},"content":" * given prefixes will be recognized in the arguments string.","lastModifiedDate":"2020-07-29"},{"lineNumber":159,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2020-07-29"},{"lineNumber":160,"author":{"gitId":"-"},"content":" * @param argsString Arguments string of the form:","lastModifiedDate":"2020-07-29"},{"lineNumber":161,"author":{"gitId":"-"},"content":" * {@code preamble \u003cprefix\u003evalue \u003cprefix\u003evalue ...}","lastModifiedDate":"2020-07-29"},{"lineNumber":162,"author":{"gitId":"-"},"content":" * @param prefixes Prefixes to tokenize the arguments string with","lastModifiedDate":"2020-07-29"},{"lineNumber":163,"author":{"gitId":"-"},"content":" * @return ArgumentMultimap object that maps prefixes to their","lastModifiedDate":"2020-07-29"},{"lineNumber":164,"author":{"gitId":"-"},"content":" * arguments","lastModifiedDate":"2020-07-29"},{"lineNumber":165,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":166,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":168,"author":{"gitId":"-"},"content":"We can tell `ArgumentTokenizer#tokenize()` to look out for our new prefix `r/` and it will return us an instance of `ArgumentMultimap`. Now let’s find out what we need to do in order to obtain the Index and String that we need. Let’s look through `ArgumentMultimap` :","lastModifiedDate":"2020-07-29"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":170,"author":{"gitId":"-"},"content":"**`ArgumentMultimap.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":172,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":173,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-07-29"},{"lineNumber":174,"author":{"gitId":"-"},"content":" * Returns the last value of {@code prefix}.","lastModifiedDate":"2020-07-29"},{"lineNumber":175,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":176,"author":{"gitId":"-"},"content":"public Optional\u003cString\u003e getValue(Prefix prefix) {","lastModifiedDate":"2020-07-29"},{"lineNumber":177,"author":{"gitId":"-"},"content":" List\u003cString\u003e values \u003d getAllValues(prefix);","lastModifiedDate":"2020-07-29"},{"lineNumber":178,"author":{"gitId":"-"},"content":" return values.isEmpty() ? Optional.empty() :","lastModifiedDate":"2020-07-29"},{"lineNumber":179,"author":{"gitId":"-"},"content":" Optional.of(values.get(values.size() - 1));","lastModifiedDate":"2020-07-29"},{"lineNumber":180,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":181,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":183,"author":{"gitId":"-"},"content":"This appears to be what we need to get a String of the remark. But what about the Index? Let\u0027s take a quick peek at existing `Command` that uses an index to see how it is done.","lastModifiedDate":"2020-07-29"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":185,"author":{"gitId":"-"},"content":"**`DeleteCommandParser.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":187,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":188,"author":{"gitId":"-"},"content":"Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2020-07-29"},{"lineNumber":189,"author":{"gitId":"-"},"content":"return new DeleteCommand(index);","lastModifiedDate":"2020-07-29"},{"lineNumber":190,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":192,"author":{"gitId":"-"},"content":"There appears to be another utility class that obtains an `Index` from the input provided by the user.","lastModifiedDate":"2020-07-29"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":194,"author":{"gitId":"-"},"content":"Now that we have the know-how to extract the data that we need from the user’s input, we can parse the user command and create a new instance of `RemarkCommand`, as given below.","lastModifiedDate":"2020-07-29"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":196,"author":{"gitId":"-"},"content":"**`RemarkCommandParser.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":198,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":199,"author":{"gitId":"-"},"content":"public RemarkCommand parse(String args) throws ParseException {","lastModifiedDate":"2020-07-29"},{"lineNumber":200,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2020-07-29"},{"lineNumber":201,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args,","lastModifiedDate":"2020-07-29"},{"lineNumber":202,"author":{"gitId":"-"},"content":" PREFIX_REMARK);","lastModifiedDate":"2020-07-29"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":204,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2020-07-29"},{"lineNumber":205,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2020-07-29"},{"lineNumber":206,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2020-07-29"},{"lineNumber":207,"author":{"gitId":"-"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2020-07-29"},{"lineNumber":208,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2020-07-29"},{"lineNumber":209,"author":{"gitId":"-"},"content":" RemarkCommand.MESSAGE_USAGE), ive);","lastModifiedDate":"2020-07-29"},{"lineNumber":210,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":212,"author":{"gitId":"-"},"content":" String remark \u003d argMultimap.getValue(PREFIX_REMARK).orElse(\"\");","lastModifiedDate":"2020-07-29"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":214,"author":{"gitId":"-"},"content":" return new RemarkCommand(index, remark);","lastModifiedDate":"2020-07-29"},{"lineNumber":215,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":216,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":218,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":220,"author":{"gitId":"-"},"content":"Don’t forget to update `AddressBookParser` to use our new `RemarkCommandParser`!","lastModifiedDate":"2023-09-12"},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":222,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":224,"author":{"gitId":"-"},"content":"If you are stuck, check out the sample","lastModifiedDate":"2020-07-29"},{"lineNumber":225,"author":{"gitId":"-"},"content":"[here](https://github.com/se-edu/addressbook-level3/commit/dc6d5139d08f6403da0ec624ea32bd79a2ae0cbf#diff-8bf239e8e9529369b577701303ddd96af93178b4ed6735f91c2d8488b20c6b4a).","lastModifiedDate":"2022-01-02"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":227,"author":{"gitId":"-"},"content":"## Add `Remark` to the model","lastModifiedDate":"2020-07-29"},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":229,"author":{"gitId":"-"},"content":"Now that we have all the information that we need, let’s lay the groundwork for propagating the remarks added into the in-memory storage of person data. We achieve that by working with the `Person` model. Each field in a Person is implemented as a separate class (e.g. a `Name` object represents the person’s name). That means we should add a `Remark` class so that we can use a `Remark` object to represent a remark given to a person.","lastModifiedDate":"2020-07-29"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":231,"author":{"gitId":"-"},"content":"### Add a new `Remark` class","lastModifiedDate":"2020-07-29"},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":233,"author":{"gitId":"-"},"content":"Create a new `Remark` in `seedu.address.model.person`. Since a `Remark` is a field that is similar to `Address`, we can reuse a significant bit of code.","lastModifiedDate":"2020-07-29"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":235,"author":{"gitId":"-"},"content":"A copy-paste and search-replace later, you should have something like [this](https://github.com/se-edu/addressbook-level3/commit/4516e099699baa9e2d51801bd26f016d812dedcc#diff-41bb13c581e280c686198251ad6cc337cd5e27032772f06ed9bf7f1440995ece). Note how `Remark` has no constrains and thus does not require input","lastModifiedDate":"2022-01-02"},{"lineNumber":236,"author":{"gitId":"-"},"content":"validation.","lastModifiedDate":"2020-07-29"},{"lineNumber":237,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":238,"author":{"gitId":"-"},"content":"### Make use of `Remark`","lastModifiedDate":"2020-07-29"},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":240,"author":{"gitId":"-"},"content":"Let’s change `RemarkCommand` and `RemarkCommandParser` to use the new `Remark` class instead of plain `String`. These should be relatively simple changes.","lastModifiedDate":"2020-07-29"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":242,"author":{"gitId":"-"},"content":"## Add a placeholder element for remark to the UI","lastModifiedDate":"2020-07-29"},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":244,"author":{"gitId":"-"},"content":"Without getting too deep into `fxml`, let’s go on a 5 minute adventure to get some placeholder text to show up for each person.","lastModifiedDate":"2020-07-29"},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":246,"author":{"gitId":"-"},"content":"Simply add the following to [`seedu.address.ui.PersonCard`](https://github.com/se-edu/addressbook-level3/commit/850b78879582f38accb05dd20c245963c65ea599#diff-639834f1e05afe2276a86372adf0fe5f69314642c2d93cfa543d614ce5a76688).","lastModifiedDate":"2022-01-02"},{"lineNumber":247,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":248,"author":{"gitId":"-"},"content":"**`PersonCard.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":250,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":251,"author":{"gitId":"-"},"content":"@FXML","lastModifiedDate":"2020-07-29"},{"lineNumber":252,"author":{"gitId":"-"},"content":"private Label remark;","lastModifiedDate":"2020-07-29"},{"lineNumber":253,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":256,"author":{"gitId":"-"},"content":"`@FXML` is an annotation that marks a private or protected field and makes it accessible to FXML. It might sound like Greek to you right now, don’t worry — we will get back to it later.","lastModifiedDate":"2020-07-29"},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":258,"author":{"gitId":"-"},"content":"Then insert the following into [`main/resources/view/PersonListCard.fxml`](https://github.com/se-edu/addressbook-level3/commit/850b78879582f38accb05dd20c245963c65ea599#diff-d44c4f51c24f6253c277a2bb9bc440b8064d9c15ad7cb7ceda280bca032efce9).","lastModifiedDate":"2022-01-02"},{"lineNumber":259,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":260,"author":{"gitId":"-"},"content":"**`PersonListCard.fxml`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":261,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":262,"author":{"gitId":"-"},"content":"``` xml","lastModifiedDate":"2020-07-29"},{"lineNumber":263,"author":{"gitId":"-"},"content":"\u003cLabel fx:id\u003d\"remark\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$remark\" /\u003e","lastModifiedDate":"2020-07-29"},{"lineNumber":264,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":266,"author":{"gitId":"-"},"content":"That’s it! Fire up the application again and you should see something like this:","lastModifiedDate":"2020-07-29"},{"lineNumber":267,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":268,"author":{"gitId":"-"},"content":"![$remark shows up in each entry](../images/add-remark/$Remark.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":269,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":270,"author":{"gitId":"-"},"content":"## Modify `Person` to support a `Remark` field","lastModifiedDate":"2020-07-29"},{"lineNumber":271,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":272,"author":{"gitId":"-"},"content":"Since `PersonCard` displays data from a `Person`, we need to update `Person` to get our `Remark` displayed!","lastModifiedDate":"2020-07-29"},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":274,"author":{"gitId":"-"},"content":"### Modify `Person`","lastModifiedDate":"2020-07-29"},{"lineNumber":275,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":276,"author":{"gitId":"-"},"content":"We change the constructor of `Person` to take a `Remark`. We will also need to define new fields and accessors accordingly to store our new addition.","lastModifiedDate":"2020-07-29"},{"lineNumber":277,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":278,"author":{"gitId":"-"},"content":"### Update other usages of `Person`","lastModifiedDate":"2020-07-29"},{"lineNumber":279,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":280,"author":{"gitId":"-"},"content":"Unfortunately, a change to `Person` will cause other commands to break, you will have to modify these commands to use the updated `Person`!","lastModifiedDate":"2020-07-29"},{"lineNumber":281,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":282,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":284,"author":{"gitId":"-"},"content":"Use the `Find Usages` feature in IntelliJ IDEA on the `Person` class to find these commands.","lastModifiedDate":"2023-09-12"},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":286,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":288,"author":{"gitId":"-"},"content":"Refer to [this commit](https://github.com/se-edu/addressbook-level3/commit/ce998c37e65b92d35c91d28c7822cd139c2c0a5c) and check that you have got everything in order!","lastModifiedDate":"2020-07-29"},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":290,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":291,"author":{"gitId":"-"},"content":"## Updating Storage","lastModifiedDate":"2020-07-29"},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":293,"author":{"gitId":"-"},"content":"AddressBook stores data by serializing `JsonAdaptedPerson` into `json` with the help of an external library — Jackson. Let’s update `JsonAdaptedPerson` to work with our new `Person`!","lastModifiedDate":"2020-07-29"},{"lineNumber":294,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":295,"author":{"gitId":"-"},"content":"While the changes to code may be minimal, the test data will have to be updated as well.","lastModifiedDate":"2020-07-29"},{"lineNumber":296,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":297,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"warning\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":298,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":299,"author":{"gitId":"drustanyjt"},"content":"You must delete AddressBook’s storage file located at `/data/clinicmate.json` before running it! Not doing so will cause AddressBook to default to an empty address book!","lastModifiedDate":"2024-03-18"},{"lineNumber":300,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":301,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":302,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":303,"author":{"gitId":"-"},"content":"Check out [this commit](https://github.com/se-edu/addressbook-level3/commit/556cbd0e03ff224d7a68afba171ad2eb0ce56bbf)","lastModifiedDate":"2020-07-29"},{"lineNumber":304,"author":{"gitId":"-"},"content":"to see what the changes entail.","lastModifiedDate":"2020-07-29"},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":306,"author":{"gitId":"-"},"content":"## Finalizing the UI","lastModifiedDate":"2020-07-29"},{"lineNumber":307,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":308,"author":{"gitId":"-"},"content":"Now that we have finalized the `Person` class and its dependencies, we can now bind the `Remark` field to the UI.","lastModifiedDate":"2020-07-29"},{"lineNumber":309,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":310,"author":{"gitId":"-"},"content":"Just add [this one line of code!](https://github.com/se-edu/addressbook-level3/commit/5b98fee11b6b3f5749b6b943c4f3bd3aa049b692)","lastModifiedDate":"2020-07-29"},{"lineNumber":311,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":312,"author":{"gitId":"-"},"content":"**`PersonCard.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":313,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":314,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":315,"author":{"gitId":"-"},"content":"public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2020-07-29"},{"lineNumber":316,"author":{"gitId":"-"},"content":" //...","lastModifiedDate":"2020-07-29"},{"lineNumber":317,"author":{"gitId":"-"},"content":" remark.setText(person.getRemark().value);","lastModifiedDate":"2020-07-29"},{"lineNumber":318,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":319,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":320,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":321,"author":{"gitId":"-"},"content":"![The remark label is bound properly!](../images/add-remark/RemarkBound.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":322,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":323,"author":{"gitId":"-"},"content":"## Putting everything together","lastModifiedDate":"2020-07-29"},{"lineNumber":324,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":325,"author":{"gitId":"-"},"content":"After the previous step, we notice a peculiar regression — we went from displaying something to nothing at all. However, this is expected behavior as we are yet to update the `RemarkCommand` to make use of the code we\u0027ve been adding in the last few steps.","lastModifiedDate":"2020-07-29"},{"lineNumber":326,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":327,"author":{"gitId":"-"},"content":"### Update `RemarkCommand` and `RemarkCommandParser`","lastModifiedDate":"2020-07-29"},{"lineNumber":328,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":329,"author":{"gitId":"-"},"content":"In this last step, we modify `RemarkCommand#execute()` to change the `Remark` of a `Person`. Since all fields in a `Person` are immutable, we create a new instance of a `Person` with the values that we want and","lastModifiedDate":"2020-07-29"},{"lineNumber":330,"author":{"gitId":"-"},"content":"save it with `Model#setPerson()`.","lastModifiedDate":"2020-07-29"},{"lineNumber":331,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":332,"author":{"gitId":"-"},"content":"**`RemarkCommand.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":333,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":334,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":335,"author":{"gitId":"-"},"content":"//...","lastModifiedDate":"2020-07-29"},{"lineNumber":336,"author":{"gitId":"-"},"content":" public static final String MESSAGE_ADD_REMARK_SUCCESS \u003d \"Added remark to Person: %1$s\";","lastModifiedDate":"2020-07-29"},{"lineNumber":337,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DELETE_REMARK_SUCCESS \u003d \"Removed remark from Person: %1$s\";","lastModifiedDate":"2020-07-29"},{"lineNumber":338,"author":{"gitId":"-"},"content":"//...","lastModifiedDate":"2020-07-29"},{"lineNumber":339,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":340,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2020-07-29"},{"lineNumber":341,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2020-07-29"},{"lineNumber":342,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":343,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2020-07-29"},{"lineNumber":344,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2020-07-29"},{"lineNumber":345,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":346,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":347,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2020-07-29"},{"lineNumber":348,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new Person(","lastModifiedDate":"2021-08-01"},{"lineNumber":349,"author":{"gitId":"-"},"content":" personToEdit.getName(), personToEdit.getPhone(), personToEdit.getEmail(),","lastModifiedDate":"2021-08-01"},{"lineNumber":350,"author":{"gitId":"-"},"content":" personToEdit.getAddress(), remark, personToEdit.getTags());","lastModifiedDate":"2020-07-29"},{"lineNumber":351,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":352,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2020-07-29"},{"lineNumber":353,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2020-07-29"},{"lineNumber":354,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":355,"author":{"gitId":"-"},"content":" return new CommandResult(generateSuccessMessage(editedPerson));","lastModifiedDate":"2020-07-29"},{"lineNumber":356,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":357,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":358,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-07-29"},{"lineNumber":359,"author":{"gitId":"-"},"content":" * Generates a command execution success message based on whether","lastModifiedDate":"2021-08-01"},{"lineNumber":360,"author":{"gitId":"-"},"content":" * the remark is added to or removed from","lastModifiedDate":"2021-08-01"},{"lineNumber":361,"author":{"gitId":"-"},"content":" * {@code personToEdit}.","lastModifiedDate":"2020-07-29"},{"lineNumber":362,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":363,"author":{"gitId":"-"},"content":" private String generateSuccessMessage(Person personToEdit) {","lastModifiedDate":"2020-07-29"},{"lineNumber":364,"author":{"gitId":"-"},"content":" String message \u003d !remark.value.isEmpty() ? MESSAGE_ADD_REMARK_SUCCESS : MESSAGE_DELETE_REMARK_SUCCESS;","lastModifiedDate":"2020-07-29"},{"lineNumber":365,"author":{"gitId":"-"},"content":" return String.format(message, personToEdit);","lastModifiedDate":"2020-07-29"},{"lineNumber":366,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":367,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":368,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":369,"author":{"gitId":"-"},"content":"![Congratulations!](../images/add-remark/RemarkComplete.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":370,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":371,"author":{"gitId":"-"},"content":"## Writing tests","lastModifiedDate":"2020-07-29"},{"lineNumber":372,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":373,"author":{"gitId":"-"},"content":"Tests are crucial to ensuring that bugs don’t slip into the codebase unnoticed. This is especially true for large code bases where a change might lead to unintended behavior.","lastModifiedDate":"2020-07-29"},{"lineNumber":374,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":375,"author":{"gitId":"-"},"content":"Let’s verify the correctness of our code by writing some tests!","lastModifiedDate":"2020-07-29"},{"lineNumber":376,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":377,"author":{"gitId":"-"},"content":"Of course you can simply add the test cases manually, like you\u0027ve been doing all along this tutorial. The result would be like the test cases in [here](https://github.com/se-edu/addressbook-level3/commit/fac8f3fd855d55831ca0cc73313b5943d49d4d6e#diff-ff58f7c10338b34f76645df49b71ecb2bafaf7611b20e7ff59ebc98475538a01). Alternatively, you can get the help of IntelliJ to generate the skeletons of the test cases, as explained in the next section.","lastModifiedDate":"2022-01-02"},{"lineNumber":378,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-08-01"},{"lineNumber":379,"author":{"gitId":"-"},"content":"### Automatically generating tests","lastModifiedDate":"2020-07-29"},{"lineNumber":380,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":381,"author":{"gitId":"-"},"content":"The goal is to write effective and efficient tests to ensure that `RemarkCommand#execute()` behaves as expected.","lastModifiedDate":"2020-07-29"},{"lineNumber":382,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":383,"author":{"gitId":"-"},"content":"The convention for test names is `methodName_testScenario_expectedResult`. An example would be","lastModifiedDate":"2020-07-29"},{"lineNumber":384,"author":{"gitId":"-"},"content":"`execute_filteredList_success`.","lastModifiedDate":"2020-07-29"},{"lineNumber":385,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":386,"author":{"gitId":"-"},"content":"Let’s create a test for `RemarkCommand#execute()` to test that adding a remark works. On `IntelliJ IDEA` you can bring up the context menu and choose to `Go To` \\\u003e `Test` or use the appropriate keyboard shortcut.","lastModifiedDate":"2020-07-29"},{"lineNumber":387,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":388,"author":{"gitId":"-"},"content":"![Using the context menu to jump to tests](../images/add-remark/ContextMenu.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":389,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":390,"author":{"gitId":"-"},"content":"Then, create a test for the `execute` method.","lastModifiedDate":"2020-07-29"},{"lineNumber":391,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":392,"author":{"gitId":"-"},"content":"![Creating a test for `execute`.](../images/add-remark/CreateTest.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":393,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":394,"author":{"gitId":"-"},"content":"Following convention, let’s change the name of the generated method to `execute_addRemarkUnfilteredList_success`.","lastModifiedDate":"2020-07-29"},{"lineNumber":395,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":396,"author":{"gitId":"-"},"content":"Let’s use the utility functions provided in `CommandTestUtil`. The functions ensure that commands produce the expected `CommandResult` and output the correct message. In this case, `CommandTestUtil#assertCommandSuccess` is the best fit as we are testing that a `RemarkCommand` will successfully add a `Remark`.","lastModifiedDate":"2020-07-29"},{"lineNumber":397,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":398,"author":{"gitId":"-"},"content":"You should end up with a test that looks something like [this](https://github.com/se-edu/addressbook-level3/commit/fac8f3fd855d55831ca0cc73313b5943d49d4d6e#diff-ff58f7c10338b34f76645df49b71ecb2bafaf7611b20e7ff59ebc98475538a01R36-R49).","lastModifiedDate":"2022-01-02"},{"lineNumber":399,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":400,"author":{"gitId":"-"},"content":"## Conclusion","lastModifiedDate":"2020-07-29"},{"lineNumber":401,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":402,"author":{"gitId":"-"},"content":"This concludes the tutorial for adding a new `Command` to AddressBook.","lastModifiedDate":"2020-07-29"}],"authorContributionMap":{"drustanyjt":1,"-":401}},{"path":"src/main/java/seedu/address/logic/Messages.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2023-07-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-07-14"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-07-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2023-07-14"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Container for user visible messages.","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class Messages {","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2016-09-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_PERSON_DISPLAYED_INDEX \u003d \"The person index provided is invalid\";","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"tengcharmaine"},"content":" public static final String MESSAGE_INVALID_PERSON \u003d \"The ic number provided is invalid\";","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String MESSAGE_PERSONS_LISTED_OVERVIEW \u003d \"%1$d persons listed!\";","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2023-07-14"},{"lineNumber":22,"author":{"gitId":"jiahui0309"},"content":" public static final String MESSAGE_NO_MATCHING_IC \u003d \"There is nobody with the IC you specified.\";","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-07-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2023-07-14"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2023-07-14"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":31,"author":{"gitId":"-"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-07-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Formats the {@code person} for display to the user.","lastModifiedDate":"2019-02-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static String format(Person person) {","lastModifiedDate":"2019-02-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" builder.append(person.getName())","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" .append(\"; Phone: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" .append(person.getPhone())","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" .append(\"; Address: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" .append(person.getAddress())","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"drustanyjt"},"content":" .append(\"; Email: \")","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"drustanyjt"},"content":" .append(person.getEmail())","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"drustanyjt"},"content":" .append(\"; Identity Card Number: \")","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"drustanyjt"},"content":" .append(person.getIdentityCardNumber())","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"drustanyjt"},"content":" .append(\"; Age: \")","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"drustanyjt"},"content":" .append(person.getAge())","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"drustanyjt"},"content":" .append(\"; Sex: \")","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"drustanyjt"},"content":" .append(person.getSex())","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"drustanyjt"},"content":" .append(\"; Note: \")","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"drustanyjt"},"content":" .append(person.getNote())","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"-"},"content":" .append(\"; Tags: \");","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" person.getTags().forEach(builder::append);","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"drustanyjt":10,"tengcharmaine":1,"-":49,"jiahui0309":1}},{"path":"src/main/java/seedu/address/logic/commands/AddCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_AGE;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_IC_NUMBER;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SEX;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-01-18"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"add\";","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a person to the address book. \"","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2017-06-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2017-06-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2017-05-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2017-05-09"},{"lineNumber":31,"author":{"gitId":"Jayne1010"},"content":" + PREFIX_IC_NUMBER + \"IC_NUMBER \"","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"Jayne1010"},"content":" + PREFIX_AGE + \"AGE \"","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"Jayne1010"},"content":" + PREFIX_SEX + \"SEX \"","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"Jayne1010"},"content":" + PREFIX_ADDRESS + \" \"","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06"},{"lineNumber":37,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2017-06-06"},{"lineNumber":38,"author":{"gitId":"Jayne1010"},"content":" + PREFIX_PHONE + \"12345678 \"","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"Jayne1010"},"content":" + PREFIX_EMAIL + \"JohnDoe@mail.com \"","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"Jayne1010"},"content":" + PREFIX_IC_NUMBER + \"T0123456A \"","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"Jayne1010"},"content":" + PREFIX_AGE + \"12 \"","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"Jayne1010"},"content":" + PREFIX_SEX + \"M \"","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"Jayne1010"},"content":" + PREFIX_ADDRESS + \"311, Clementi Ave 2, #02-25 \";","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New person added: %1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book\";","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" private final Person toAdd;","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2018-01-10"},{"lineNumber":52,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public AddCommand(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":54,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":55,"author":{"gitId":"-"},"content":" toAdd \u003d person;","lastModifiedDate":"2018-01-10"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":60,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":62,"author":{"gitId":"-"},"content":" if (model.hasPerson(toAdd)) {","lastModifiedDate":"2018-08-07"},{"lineNumber":63,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":66,"author":{"gitId":"-"},"content":" model.addPerson(toAdd);","lastModifiedDate":"2016-09-25"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2019-02-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-22"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22"},{"lineNumber":72,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" if (!(other instanceof AddCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" AddCommand otherAddCommand \u003d (AddCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2023-07-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"Jayne1010":13,"-":78}},{"path":"src/main/java/seedu/address/logic/commands/AddNoteCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"tengcharmaine"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"tengcharmaine"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"tengcharmaine"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_IC;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"tengcharmaine"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NOTE;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"tengcharmaine"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"tengcharmaine"},"content":"import java.util.List;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.model.person.IdentityCardNumberMatchesPredicate;","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.model.person.Note;","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"tengcharmaine"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"tengcharmaine"},"content":" * Changes the note of an existing person in the address book.","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"tengcharmaine"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"tengcharmaine"},"content":"public class AddNoteCommand extends Command {","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"tengcharmaine"},"content":" public static final String COMMAND_WORD \u003d \"addnote\";","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"tengcharmaine"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the note of the person whose profile matches \"","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"tengcharmaine"},"content":" + \"the specified IC (case-insensitive). \"","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"tengcharmaine"},"content":" + \"Existing remark will be appended by default. \"","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"tengcharmaine"},"content":" + \"To replace the original note, add -replace at the end of your command. \"","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"tengcharmaine"},"content":" + \"E.g. addnote i/S0123456Q n/Diabetes -replace\\n\"","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"tengcharmaine"},"content":" + \"Parameters: \"","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"tengcharmaine"},"content":" + PREFIX_IC + \"IC \"","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"tengcharmaine"},"content":" + PREFIX_NOTE + \"NOTE \\n\"","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"tengcharmaine"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"tengcharmaine"},"content":" + PREFIX_IC + \"S0123456Q \"","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"tengcharmaine"},"content":" + PREFIX_NOTE + \"Diabetes\";","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"tengcharmaine"},"content":" public static final String MESSAGE_MODIFY_NOTE_SUCCESS \u003d \"Note for %1$s (ic: %2$s) modified successfully!\";","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"tengcharmaine"},"content":" private final IdentityCardNumberMatchesPredicate icPredicate;","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"tengcharmaine"},"content":" private final Note note;","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"tengcharmaine"},"content":" private final boolean isReplace;","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"tengcharmaine"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"tengcharmaine"},"content":" * @param icPredicate of the person in the filtered person list to edit the note","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"tengcharmaine"},"content":" * @param note of the person to be updated to","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"tengcharmaine"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"tengcharmaine"},"content":" public AddNoteCommand(IdentityCardNumberMatchesPredicate icPredicate, Note note, boolean isReplace) {","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"tengcharmaine"},"content":" requireAllNonNull(icPredicate, note);","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"tengcharmaine"},"content":" this.icPredicate \u003d icPredicate;","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"tengcharmaine"},"content":" this.note \u003d note;","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"tengcharmaine"},"content":" this.isReplace \u003d isReplace;","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"tengcharmaine"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"tengcharmaine"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"tengcharmaine"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"tengcharmaine"},"content":" model.updateFilteredPersonList(icPredicate);","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"tengcharmaine"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"tengcharmaine"},"content":" if (lastShownList.isEmpty()) {","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"tengcharmaine"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON);","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"tengcharmaine"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"tengcharmaine"},"content":" Person personToEdit \u003d lastShownList.get(0);","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"tengcharmaine"},"content":" Person editedPerson;","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"tengcharmaine"},"content":" if (isReplace || personToEdit.getNote().equals(Note.DEFAULT)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"tengcharmaine"},"content":" editedPerson \u003d new Person(personToEdit.getName(), personToEdit.getPhone(), personToEdit.getEmail(),","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"tengcharmaine"},"content":" personToEdit.getIdentityCardNumber(), personToEdit.getAge(), personToEdit.getSex(),","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"tengcharmaine"},"content":" personToEdit.getAddress(), note, personToEdit.getTags());","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"tengcharmaine"},"content":" } else {","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"tengcharmaine"},"content":" Note updatedNote \u003d personToEdit.getNote().append(\"\\n\" + note.toString());","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"tengcharmaine"},"content":" editedPerson \u003d new Person(personToEdit.getName(), personToEdit.getPhone(), personToEdit.getEmail(),","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"tengcharmaine"},"content":" personToEdit.getIdentityCardNumber(), personToEdit.getAge(), personToEdit.getSex(),","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"tengcharmaine"},"content":" personToEdit.getAddress(), updatedNote, personToEdit.getTags());","lastModifiedDate":"2024-03-16"},{"lineNumber":75,"author":{"gitId":"tengcharmaine"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"tengcharmaine"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2024-03-16"},{"lineNumber":77,"author":{"gitId":"tengcharmaine"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-16"},{"lineNumber":78,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":79,"author":{"gitId":"tengcharmaine"},"content":" return new CommandResult(generateSuccessMessage(editedPerson));","lastModifiedDate":"2024-03-16"},{"lineNumber":80,"author":{"gitId":"tengcharmaine"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":81,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":82,"author":{"gitId":"tengcharmaine"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":83,"author":{"gitId":"tengcharmaine"},"content":" * Generates a command execution success message based on whether the remark is added to or removed from","lastModifiedDate":"2024-03-16"},{"lineNumber":84,"author":{"gitId":"tengcharmaine"},"content":" * {@code personToEdit}.","lastModifiedDate":"2024-03-16"},{"lineNumber":85,"author":{"gitId":"tengcharmaine"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":86,"author":{"gitId":"tengcharmaine"},"content":" public String generateSuccessMessage(Person personToEdit) {","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"tengcharmaine"},"content":" return String.format(MESSAGE_MODIFY_NOTE_SUCCESS, personToEdit.getName(),","lastModifiedDate":"2024-03-18"},{"lineNumber":88,"author":{"gitId":"tengcharmaine"},"content":" personToEdit.getIdentityCardNumber());","lastModifiedDate":"2024-03-18"},{"lineNumber":89,"author":{"gitId":"tengcharmaine"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":90,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":91,"author":{"gitId":"tengcharmaine"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":92,"author":{"gitId":"tengcharmaine"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-16"},{"lineNumber":93,"author":{"gitId":"tengcharmaine"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-16"},{"lineNumber":94,"author":{"gitId":"tengcharmaine"},"content":" return true;","lastModifiedDate":"2024-03-16"},{"lineNumber":95,"author":{"gitId":"tengcharmaine"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":96,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":97,"author":{"gitId":"tengcharmaine"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-16"},{"lineNumber":98,"author":{"gitId":"tengcharmaine"},"content":" if (!(other instanceof AddNoteCommand)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":99,"author":{"gitId":"tengcharmaine"},"content":" return false;","lastModifiedDate":"2024-03-16"},{"lineNumber":100,"author":{"gitId":"tengcharmaine"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":101,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":102,"author":{"gitId":"tengcharmaine"},"content":" AddNoteCommand e \u003d (AddNoteCommand) other;","lastModifiedDate":"2024-03-16"},{"lineNumber":103,"author":{"gitId":"tengcharmaine"},"content":" return icPredicate.equals(e.icPredicate)","lastModifiedDate":"2024-03-17"},{"lineNumber":104,"author":{"gitId":"tengcharmaine"},"content":" \u0026\u0026 note.equals(e.note)","lastModifiedDate":"2024-03-17"},{"lineNumber":105,"author":{"gitId":"tengcharmaine"},"content":" \u0026\u0026 isReplace \u003d\u003d e.isReplace;","lastModifiedDate":"2024-03-17"},{"lineNumber":106,"author":{"gitId":"tengcharmaine"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":107,"author":{"gitId":"tengcharmaine"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"tengcharmaine":107}},{"path":"src/main/java/seedu/address/logic/commands/DeleteCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-09-01"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":11,"author":{"gitId":"jiahui0309"},"content":"import seedu.address.model.person.IdentityCardNumberMatchesPredicate;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"jiahui0309"},"content":" * Deletes a person identified using it\u0027s displayed identity card number from the address book.","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"delete\";","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"jiahui0309"},"content":" + \": Deletes the person identified by the identity card number used in the displayed person list.\\n\"","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"jiahui0309"},"content":" + \"Parameters: IC (must be a valid identity card number)\\n\"","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"jiahui0309"},"content":" + \"Example: \" + COMMAND_WORD + \" S1234567A\";","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DELETE_PERSON_SUCCESS \u003d \"Deleted Person: %1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"jiahui0309"},"content":" private final IdentityCardNumberMatchesPredicate predicate;","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"jiahui0309"},"content":" public DeleteCommand(IdentityCardNumberMatchesPredicate predicate) {","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"jiahui0309"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":37,"author":{"gitId":"jiahui0309"},"content":" List\u003cPerson\u003e allPatients \u003d model.getAddressBook().getPersonList();","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":39,"author":{"gitId":"jiahui0309"},"content":" Person personToDelete \u003d allPatients.stream()","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"jiahui0309"},"content":" .filter(predicate::test)","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"jiahui0309"},"content":" .findFirst()","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"jiahui0309"},"content":" .orElseThrow(() -\u003e new CommandException(Messages.MESSAGE_NO_MATCHING_IC));","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":44,"author":{"gitId":"-"},"content":" model.deletePerson(personToDelete);","lastModifiedDate":"2016-09-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_PERSON_SUCCESS, Messages.format(personToDelete)));","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" if (!(other instanceof DeleteCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" DeleteCommand otherDeleteCommand \u003d (DeleteCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":60,"author":{"gitId":"jiahui0309"},"content":" return predicate.equals(otherDeleteCommand.predicate);","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":66,"author":{"gitId":"jiahui0309"},"content":" .add(\"predicate\", predicate)","lastModifiedDate":"2024-03-16"},{"lineNumber":67,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"-":54,"jiahui0309":15}},{"path":"src/main/java/seedu/address/logic/commands/EditCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-12-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09"},{"lineNumber":5,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_AGE;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09"},{"lineNumber":7,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_IC_NUMBER;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09"},{"lineNumber":10,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SEX;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-01-11"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-01-11"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2016-12-26"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"Jayne1010"},"content":"import seedu.address.model.person.Age;","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"Jayne1010"},"content":"import seedu.address.model.person.IdentityCardNumber;","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"Jayne1010"},"content":"import seedu.address.model.person.IdentityCardNumberMatchesPredicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"Jayne1010"},"content":"import seedu.address.model.person.Sex;","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":36,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Edits the details of an existing person in the address book.","lastModifiedDate":"2016-12-26"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":39,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2016-12-26"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the person identified \"","lastModifiedDate":"2016-12-26"},{"lineNumber":44,"author":{"gitId":"-"},"content":" + \"by the index number used in the displayed person list. \"","lastModifiedDate":"2018-04-01"},{"lineNumber":45,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26"},{"lineNumber":46,"author":{"gitId":"Jayne1010"},"content":" + \"Parameters: IC (National Registration Identity Card) \"","lastModifiedDate":"2024-03-22"},{"lineNumber":47,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06"},{"lineNumber":48,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":50,"author":{"gitId":"Jayne1010"},"content":" + \"[\" + PREFIX_IC_NUMBER + \"IC] \"","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"Jayne1010"},"content":" + \"[\" + PREFIX_AGE + \"AGE] \"","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"Jayne1010"},"content":" + \"[\" + PREFIX_SEX + \"SEX] \"","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":54,"author":{"gitId":"Jayne1010"},"content":" + \"Example: \" + COMMAND_WORD + \" T0123456A \"","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"91234567 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":56,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2017-05-09"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Person: %1$s\";","lastModifiedDate":"2016-12-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2016-12-26"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book.\";","lastModifiedDate":"2016-12-26"},{"lineNumber":61,"author":{"gitId":"-"},"content":" private final EditPersonDescriptor editPersonDescriptor;","lastModifiedDate":"2016-12-26"},{"lineNumber":62,"author":{"gitId":"Jayne1010"},"content":" private final IdentityCardNumberMatchesPredicate predicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":65,"author":{"gitId":"Jayne1010"},"content":" * @param predicate of the person in the filtered person list to edit","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":" * @param editPersonDescriptor details to edit the person with","lastModifiedDate":"2016-12-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":68,"author":{"gitId":"Jayne1010"},"content":" public EditCommand(IdentityCardNumberMatchesPredicate predicate, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"Jayne1010"},"content":" requireNonNull(predicate);","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2017-05-15"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":72,"author":{"gitId":"Jayne1010"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"-"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2016-12-26"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":78,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":79,"author":{"gitId":"Jayne1010"},"content":" List\u003cPerson\u003e allPatients \u003d model.getAddressBook().getPersonList();","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":81,"author":{"gitId":"Jayne1010"},"content":" Person personToEdit \u003d allPatients.stream()","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"Jayne1010"},"content":" .filter(predicate::test)","lastModifiedDate":"2024-03-21"},{"lineNumber":83,"author":{"gitId":"Jayne1010"},"content":" .findFirst()","lastModifiedDate":"2024-03-21"},{"lineNumber":84,"author":{"gitId":"Jayne1010"},"content":" .orElseThrow(() -\u003e new CommandException(Messages.MESSAGE_NO_MATCHING_IC));","lastModifiedDate":"2024-03-21"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2018-04-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":88,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2018-08-07"},{"lineNumber":89,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":92,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":93,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":94,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson)));","lastModifiedDate":"2019-02-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":97,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2016-12-26"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2016-12-26"},{"lineNumber":100,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":101,"author":{"gitId":"-"},"content":" private static Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2018-01-10"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2016-12-26"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":104,"author":{"gitId":"-"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(personToEdit.getName());","lastModifiedDate":"2017-06-21"},{"lineNumber":105,"author":{"gitId":"-"},"content":" Phone updatedPhone \u003d editPersonDescriptor.getPhone().orElse(personToEdit.getPhone());","lastModifiedDate":"2017-06-21"},{"lineNumber":106,"author":{"gitId":"-"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2017-06-21"},{"lineNumber":107,"author":{"gitId":"Jayne1010"},"content":" IdentityCardNumber updatedIC \u003d editPersonDescriptor.getIC().orElse(personToEdit.getIdentityCardNumber());","lastModifiedDate":"2024-03-21"},{"lineNumber":108,"author":{"gitId":"Jayne1010"},"content":" Age updatedAge \u003d editPersonDescriptor.getAge().orElse(personToEdit.getAge());","lastModifiedDate":"2024-03-21"},{"lineNumber":109,"author":{"gitId":"Jayne1010"},"content":" Sex updatedSex \u003d editPersonDescriptor.getSex().orElse(personToEdit.getSex());","lastModifiedDate":"2024-03-21"},{"lineNumber":110,"author":{"gitId":"-"},"content":" Address updatedAddress \u003d editPersonDescriptor.getAddress().orElse(personToEdit.getAddress());","lastModifiedDate":"2017-06-21"},{"lineNumber":111,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e updatedTags \u003d editPersonDescriptor.getTags().orElse(personToEdit.getTags());","lastModifiedDate":"2017-06-21"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":113,"author":{"gitId":"drustanyjt"},"content":" // Use the same person for existing fields, but copies the object for every thing else","lastModifiedDate":"2024-03-16"},{"lineNumber":114,"author":{"gitId":"drustanyjt"},"content":" // TODO: change this when the command is updated","lastModifiedDate":"2024-03-16"},{"lineNumber":115,"author":{"gitId":"Jayne1010"},"content":" return new Person(updatedName, updatedPhone, updatedEmail, updatedIC,","lastModifiedDate":"2024-03-21"},{"lineNumber":116,"author":{"gitId":"Jayne1010"},"content":" updatedAge, updatedSex, updatedAddress, personToEdit.getNote(), updatedTags);","lastModifiedDate":"2024-03-21"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":119,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08"},{"lineNumber":121,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":125,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":131,"author":{"gitId":"Jayne1010"},"content":" return predicate.equals(otherEditCommand.predicate)","lastModifiedDate":"2024-03-21"},{"lineNumber":132,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":138,"author":{"gitId":"Jayne1010"},"content":" .add(\"predicate\", predicate)","lastModifiedDate":"2024-03-21"},{"lineNumber":139,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":144,"author":{"gitId":"-"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2016-12-26"},{"lineNumber":145,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26"},{"lineNumber":146,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":147,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26"},{"lineNumber":148,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21"},{"lineNumber":149,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":150,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21"},{"lineNumber":151,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-06-21"},{"lineNumber":152,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21"},{"lineNumber":153,"author":{"gitId":"Jayne1010"},"content":" private IdentityCardNumber ic;","lastModifiedDate":"2024-03-21"},{"lineNumber":154,"author":{"gitId":"Jayne1010"},"content":" private Age age;","lastModifiedDate":"2024-03-21"},{"lineNumber":155,"author":{"gitId":"Jayne1010"},"content":" private Sex sex;","lastModifiedDate":"2024-03-21"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":157,"author":{"gitId":"-"},"content":" public EditPersonDescriptor() {}","lastModifiedDate":"2016-12-26"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":159,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":160,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11"},{"lineNumber":161,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":162,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26"},{"lineNumber":163,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15"},{"lineNumber":164,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15"},{"lineNumber":165,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15"},{"lineNumber":166,"author":{"gitId":"Jayne1010"},"content":" setIC(toCopy.ic);","lastModifiedDate":"2024-03-21"},{"lineNumber":167,"author":{"gitId":"Jayne1010"},"content":" setAge(toCopy.age);","lastModifiedDate":"2024-03-21"},{"lineNumber":168,"author":{"gitId":"Jayne1010"},"content":" setSex(toCopy.sex);","lastModifiedDate":"2024-03-21"},{"lineNumber":169,"author":{"gitId":"-"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2018-01-15"},{"lineNumber":170,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11"},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":173,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":174,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26"},{"lineNumber":175,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":176,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26"},{"lineNumber":177,"author":{"gitId":"Jayne1010"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, ic, sex, age, address, tags);","lastModifiedDate":"2024-03-21"},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":180,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21"},{"lineNumber":181,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21"},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":184,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26"},{"lineNumber":185,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21"},{"lineNumber":186,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":188,"author":{"gitId":"-"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2017-06-21"},{"lineNumber":189,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":190,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":192,"author":{"gitId":"-"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26"},{"lineNumber":193,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2017-06-21"},{"lineNumber":194,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":196,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2017-06-21"},{"lineNumber":197,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-06-21"},{"lineNumber":198,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":200,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26"},{"lineNumber":201,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21"},{"lineNumber":202,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":204,"author":{"gitId":"-"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2017-06-21"},{"lineNumber":205,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-06-21"},{"lineNumber":206,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":208,"author":{"gitId":"-"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2016-12-26"},{"lineNumber":209,"author":{"gitId":"-"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2017-06-21"},{"lineNumber":210,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":211,"author":{"gitId":"Jayne1010"},"content":" public void setIC(IdentityCardNumber ic) {","lastModifiedDate":"2024-03-21"},{"lineNumber":212,"author":{"gitId":"Jayne1010"},"content":" this.ic \u003d ic;","lastModifiedDate":"2024-03-21"},{"lineNumber":213,"author":{"gitId":"Jayne1010"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":214,"author":{"gitId":"Jayne1010"},"content":" public Optional\u003cIdentityCardNumber\u003e getIC() {","lastModifiedDate":"2024-03-21"},{"lineNumber":215,"author":{"gitId":"Jayne1010"},"content":" return Optional.ofNullable(ic);","lastModifiedDate":"2024-03-21"},{"lineNumber":216,"author":{"gitId":"Jayne1010"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":217,"author":{"gitId":"Jayne1010"},"content":" public void setAge(Age age) {","lastModifiedDate":"2024-03-21"},{"lineNumber":218,"author":{"gitId":"Jayne1010"},"content":" this.age \u003d age;","lastModifiedDate":"2024-03-21"},{"lineNumber":219,"author":{"gitId":"Jayne1010"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":220,"author":{"gitId":"Jayne1010"},"content":" public Optional\u003cAge\u003e getAge() {","lastModifiedDate":"2024-03-21"},{"lineNumber":221,"author":{"gitId":"Jayne1010"},"content":" return Optional.ofNullable(age);","lastModifiedDate":"2024-03-21"},{"lineNumber":222,"author":{"gitId":"Jayne1010"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":223,"author":{"gitId":"Jayne1010"},"content":" public void setSex(Sex sex) {","lastModifiedDate":"2024-03-21"},{"lineNumber":224,"author":{"gitId":"Jayne1010"},"content":" this.sex \u003d sex;","lastModifiedDate":"2024-03-21"},{"lineNumber":225,"author":{"gitId":"Jayne1010"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":226,"author":{"gitId":"Jayne1010"},"content":" public Optional\u003cSex\u003e getSex() {","lastModifiedDate":"2024-03-21"},{"lineNumber":227,"author":{"gitId":"Jayne1010"},"content":" return Optional.ofNullable(sex);","lastModifiedDate":"2024-03-21"},{"lineNumber":228,"author":{"gitId":"Jayne1010"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":230,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":231,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2018-01-11"},{"lineNumber":232,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":233,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":234,"author":{"gitId":"-"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-06-21"},{"lineNumber":235,"author":{"gitId":"-"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2018-01-11"},{"lineNumber":236,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":237,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":238,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":239,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11"},{"lineNumber":240,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11"},{"lineNumber":241,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11"},{"lineNumber":242,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":243,"author":{"gitId":"-"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":244,"author":{"gitId":"-"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2018-01-11"},{"lineNumber":245,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":247,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05"},{"lineNumber":248,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05"},{"lineNumber":249,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05"},{"lineNumber":250,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05"},{"lineNumber":251,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":252,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":253,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05"},{"lineNumber":254,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05"},{"lineNumber":255,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05"},{"lineNumber":256,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":258,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":259,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":260,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":261,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":262,"author":{"gitId":"Jayne1010"},"content":" \u0026\u0026 Objects.equals(ic, otherEditPersonDescriptor.ic)","lastModifiedDate":"2024-03-21"},{"lineNumber":263,"author":{"gitId":"Jayne1010"},"content":" \u0026\u0026 Objects.equals(age, otherEditPersonDescriptor.age)","lastModifiedDate":"2024-03-21"},{"lineNumber":264,"author":{"gitId":"Jayne1010"},"content":" \u0026\u0026 Objects.equals(sex, otherEditPersonDescriptor.sex)","lastModifiedDate":"2024-03-21"},{"lineNumber":265,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(address, otherEditPersonDescriptor.address)","lastModifiedDate":"2023-07-13"},{"lineNumber":266,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(tags, otherEditPersonDescriptor.tags);","lastModifiedDate":"2023-07-13"},{"lineNumber":267,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":268,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":269,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":270,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":271,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":272,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":273,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":274,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":275,"author":{"gitId":"Jayne1010"},"content":" .add(\"ic\", ic)","lastModifiedDate":"2024-03-21"},{"lineNumber":276,"author":{"gitId":"Jayne1010"},"content":" .add(\"age\", age)","lastModifiedDate":"2024-03-21"},{"lineNumber":277,"author":{"gitId":"Jayne1010"},"content":" .add(\"sex\", sex)","lastModifiedDate":"2024-03-21"},{"lineNumber":278,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":279,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":280,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":281,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":282,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":283,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26"}],"authorContributionMap":{"Jayne1010":60,"drustanyjt":2,"-":221}},{"path":"src/main/java/seedu/address/logic/commands/FindCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":8,"author":{"gitId":"jiahui0309"},"content":"import seedu.address.model.person.IdentityCardNumberMatchesPredicate;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-22"},{"lineNumber":11,"author":{"gitId":"jiahui0309"},"content":" * Finds and lists all persons in address book whose IC matches the argument IC.","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"jiahui0309"},"content":" * Keyword matching is case-insensitive.","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class FindCommand extends Command {","lastModifiedDate":"2016-09-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"find\";","lastModifiedDate":"2016-09-22"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":18,"author":{"gitId":"jiahui0309"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Finds all persons whose profile matches \"","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"jiahui0309"},"content":" + \"the specified IC (case-insensitive) and displays them.\\n\"","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"jiahui0309"},"content":" + \"Parameters: IC\\n\"","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"jiahui0309"},"content":" + \"Example: \" + COMMAND_WORD + \" t1234567A\";","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":23,"author":{"gitId":"jiahui0309"},"content":" private final IdentityCardNumberMatchesPredicate predicate;","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":25,"author":{"gitId":"jiahui0309"},"content":" public FindCommand(IdentityCardNumberMatchesPredicate predicate) {","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"-"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-22"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(predicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return new CommandResult(","lastModifiedDate":"2018-04-01"},{"lineNumber":34,"author":{"gitId":"-"},"content":" String.format(Messages.MESSAGE_PERSONS_LISTED_OVERVIEW, model.getFilteredPersonList().size()));","lastModifiedDate":"2018-04-01"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" if (!(other instanceof FindCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" FindCommand otherFindCommand \u003d (FindCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" return predicate.equals(otherFindCommand.predicate);","lastModifiedDate":"2023-07-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" .add(\"predicate\", predicate)","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22"}],"authorContributionMap":{"-":49,"jiahui0309":9}},{"path":"src/main/java/seedu/address/logic/parser/AddCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_AGE;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_IC_NUMBER;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SEX;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-17"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-02-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"Jayne1010"},"content":"import seedu.address.model.person.Age;","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"Jayne1010"},"content":"import seedu.address.model.person.IdentityCardNumber;","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"Jayne1010"},"content":"import seedu.address.model.person.Note;","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"Jayne1010"},"content":"import seedu.address.model.person.Sex;","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-17"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":40,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":41,"author":{"gitId":"Jayne1010"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL,","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"Jayne1010"},"content":" PREFIX_IC_NUMBER, PREFIX_AGE, PREFIX_SEX, PREFIX_ADDRESS);","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":44,"author":{"gitId":"Jayne1010"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL,","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"Jayne1010"},"content":" PREFIX_IC_NUMBER, PREFIX_AGE, PREFIX_SEX, PREFIX_ADDRESS)","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":50,"author":{"gitId":"Jayne1010"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL,","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"Jayne1010"},"content":" PREFIX_IC_NUMBER, PREFIX_AGE, PREFIX_SEX, PREFIX_ADDRESS);","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":53,"author":{"gitId":"-"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":54,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":55,"author":{"gitId":"Jayne1010"},"content":" IdentityCardNumber ic \u003d ParserUtil.parseIC(argMultimap.getValue(PREFIX_IC_NUMBER).get());","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"Jayne1010"},"content":" Sex sex \u003d ParserUtil.parseSex(argMultimap.getValue(PREFIX_SEX).get());","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"-"},"content":" Address address \u003d ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":58,"author":{"gitId":"Jayne1010"},"content":" Age age \u003d ParserUtil.parseAge(argMultimap.getValue(PREFIX_AGE).get());","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":61,"author":{"gitId":"drustanyjt"},"content":" // Use the same add person, but create a DEFAULT object for every thing else","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"drustanyjt"},"content":" // TODO: change this when the command is updated","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"Jayne1010"},"content":" Person person \u003d new Person(name, phone, email, ic, age, sex,","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"drustanyjt"},"content":" address, Note.DEFAULT, tagList);","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return new AddCommand(person);","lastModifiedDate":"2017-03-17"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":69,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17"},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17"},{"lineNumber":71,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17"},{"lineNumber":72,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17"},{"lineNumber":73,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17"},{"lineNumber":74,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":77,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05"}],"authorContributionMap":{"Jayne1010":17,"drustanyjt":3,"-":57}},{"path":"src/main/java/seedu/address/logic/parser/AddNoteCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"tengcharmaine"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"tengcharmaine"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"tengcharmaine"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"tengcharmaine"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FLAG;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"tengcharmaine"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_IC;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"tengcharmaine"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NOTE;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"tengcharmaine"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.logic.commands.AddNoteCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.model.person.IdentityCardNumber;","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.model.person.IdentityCardNumberMatchesPredicate;","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.model.person.Note;","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"tengcharmaine"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"tengcharmaine"},"content":" * Parses input arguments and creates a new {@code AddNoteCommand} object","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"tengcharmaine"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"tengcharmaine"},"content":"public class AddNoteCommandParser implements Parser\u003cAddNoteCommand\u003e {","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"tengcharmaine"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"tengcharmaine"},"content":" * Parses the given {@code String} of arguments in the context of the {@code AddNoteCommand}","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"tengcharmaine"},"content":" * and returns a {@code AddNoteCommand} object for execution.","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"tengcharmaine"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"tengcharmaine"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"tengcharmaine"},"content":" public AddNoteCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"tengcharmaine"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"tengcharmaine"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_IC, PREFIX_NOTE, PREFIX_FLAG);","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"tengcharmaine"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_IC, PREFIX_NOTE)","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"tengcharmaine"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"tengcharmaine"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddNoteCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"tengcharmaine"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"tengcharmaine"},"content":" IdentityCardNumber ic;","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"tengcharmaine"},"content":" try {","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"tengcharmaine"},"content":" String note \u003d \"\";","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"tengcharmaine"},"content":" boolean isReplace \u003d false;","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"tengcharmaine"},"content":" if (argMultimap.getValue(PREFIX_FLAG).isPresent()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"tengcharmaine"},"content":" int startIndex \u003d args.indexOf(PREFIX_NOTE.getPrefix()) + PREFIX_NOTE.getPrefix().length();","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"tengcharmaine"},"content":" int endIndex \u003d args.indexOf(PREFIX_FLAG.getPrefix());","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"tengcharmaine"},"content":" note \u003d args.substring(startIndex, endIndex).trim();","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"tengcharmaine"},"content":" isReplace \u003d true;","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"tengcharmaine"},"content":" } else {","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"tengcharmaine"},"content":" note \u003d argMultimap.getValue(PREFIX_NOTE).orElse(\"\");","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"tengcharmaine"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"tengcharmaine"},"content":" ic \u003d ParserUtil.parseIC(argMultimap.getValue(PREFIX_IC).get());","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"tengcharmaine"},"content":" return new AddNoteCommand(new IdentityCardNumberMatchesPredicate(ic), new Note(note), isReplace);","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"tengcharmaine"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"tengcharmaine"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddNoteCommand.MESSAGE_USAGE), ive);","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"tengcharmaine"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"tengcharmaine"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"tengcharmaine"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"tengcharmaine"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"tengcharmaine"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"tengcharmaine"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"tengcharmaine"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"tengcharmaine"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"tengcharmaine"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"tengcharmaine"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"tengcharmaine":64}},{"path":"src/main/java/seedu/address/logic/parser/AddressBookParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-07-29"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-07-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.logic.commands.AddNoteCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":42,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":50,"author":{"gitId":"-"},"content":" // Note to developers: Change the log level in config.json to enable lower level (i.e., FINE, FINER and lower)","lastModifiedDate":"2023-07-29"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":55,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":72,"author":{"gitId":"tengcharmaine"},"content":" case AddNoteCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"tengcharmaine"},"content":" return new AddNoteCommandParser().parse(arguments);","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":75,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return new ListCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":78,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26"},{"lineNumber":82,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":84,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26"},{"lineNumber":85,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29"},{"lineNumber":86,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":90,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"tengcharmaine":4,"-":86}},{"path":"src/main/java/seedu/address/logic/parser/CliSyntax.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11"},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":" /* Prefix definitions */","lastModifiedDate":"2017-02-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"n/\");","lastModifiedDate":"2017-06-06"},{"lineNumber":10,"author":{"gitId":"Jayne1010"},"content":" public static final Prefix PREFIX_IC_NUMBER \u003d new Prefix(\"i/\");","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"Jayne1010"},"content":" public static final Prefix PREFIX_AGE \u003d new Prefix(\"ag/\");","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"Jayne1010"},"content":" public static final Prefix PREFIX_SEX \u003d new Prefix(\"s/\");","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_ADDRESS \u003d new Prefix(\"a/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":14,"author":{"gitId":"Jayne1010"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"e/\");","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"Jayne1010"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"p/\");","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"t/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":17,"author":{"gitId":"tengcharmaine"},"content":" public static final Prefix PREFIX_NOTE \u003d new Prefix(\"n/\");","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"tengcharmaine"},"content":" public static final Prefix PREFIX_IC \u003d new Prefix(\"i/\");","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"tengcharmaine"},"content":" public static final Prefix PREFIX_FLAG \u003d new Prefix(\"-replace\");","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"Jayne1010":5,"tengcharmaine":3,"-":12}},{"path":"src/main/java/seedu/address/logic/parser/DeleteCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-01-26"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":7,"author":{"gitId":"jiahui0309"},"content":"import seedu.address.model.person.IdentityCardNumber;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"jiahui0309"},"content":"import seedu.address.model.person.IdentityCardNumberMatchesPredicate;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new DeleteCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class DeleteCommandParser implements Parser\u003cDeleteCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the DeleteCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * and returns a DeleteCommand object for execution.","lastModifiedDate":"2019-05-11"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public DeleteCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":21,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15"},{"lineNumber":22,"author":{"gitId":"jiahui0309"},"content":" IdentityCardNumber ic \u003d ParserUtil.parseIC(args);","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"jiahui0309"},"content":" return new DeleteCommand(new IdentityCardNumberMatchesPredicate(ic));","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10"},{"lineNumber":25,"author":{"gitId":"-"},"content":" throw new ParseException(","lastModifiedDate":"2017-03-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2018-08-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"-":26,"jiahui0309":4}},{"path":"src/main/java/seedu/address/logic/parser/EditCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_AGE;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_IC_NUMBER;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SEX;","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-01-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-01-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-01-26"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":22,"author":{"gitId":"Jayne1010"},"content":"import seedu.address.model.person.IdentityCardNumber;","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"Jayne1010"},"content":"import seedu.address.model.person.IdentityCardNumberMatchesPredicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":26,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new EditCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class EditCommandParser implements Parser\u003cEditCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the EditCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * and returns an EditCommand object for execution.","lastModifiedDate":"2017-01-26"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public EditCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":37,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2017-05-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":39,"author":{"gitId":"Jayne1010"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_IC_NUMBER,","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"Jayne1010"},"content":" PREFIX_AGE, PREFIX_SEX, PREFIX_ADDRESS);","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"Jayne1010"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"Jayne1010"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"Jayne1010"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"Jayne1010"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":46,"author":{"gitId":"Jayne1010"},"content":" IdentityCardNumber ic \u003d ParserUtil.parseIC(argMultimap.getPreamble());","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":48,"author":{"gitId":"Jayne1010"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_IC_NUMBER,","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"Jayne1010"},"content":" PREFIX_AGE, PREFIX_SEX, PREFIX_ADDRESS);","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":51,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-01-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":53,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":54,"author":{"gitId":"-"},"content":" editPersonDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":56,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":57,"author":{"gitId":"-"},"content":" editPersonDescriptor.setPhone(ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":59,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":60,"author":{"gitId":"-"},"content":" editPersonDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":62,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_ADDRESS).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":63,"author":{"gitId":"-"},"content":" editPersonDescriptor.setAddress(ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":65,"author":{"gitId":"Jayne1010"},"content":" if (argMultimap.getValue(PREFIX_IC_NUMBER).isPresent()) {","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"Jayne1010"},"content":" editPersonDescriptor.setIC(ParserUtil.parseIC(argMultimap.getValue(PREFIX_IC_NUMBER).get()));","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"Jayne1010"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"Jayne1010"},"content":" if (argMultimap.getValue(PREFIX_SEX).isPresent()) {","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"Jayne1010"},"content":" editPersonDescriptor.setSex(ParserUtil.parseSex(argMultimap.getValue(PREFIX_SEX).get()));","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"Jayne1010"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"Jayne1010"},"content":" if (argMultimap.getValue(PREFIX_AGE).isPresent()) {","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"Jayne1010"},"content":" editPersonDescriptor.setAge(ParserUtil.parseAge(argMultimap.getValue(PREFIX_AGE).get()));","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"Jayne1010"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":" parseTagsForEdit(argMultimap.getAllValues(PREFIX_TAG)).ifPresent(editPersonDescriptor::setTags);","lastModifiedDate":"2017-06-21"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":76,"author":{"gitId":"-"},"content":" if (!editPersonDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2017-01-26"},{"lineNumber":77,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-03-11"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":79,"author":{"gitId":"Jayne1010"},"content":" try {","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"Jayne1010"},"content":" return new EditCommand(new IdentityCardNumberMatchesPredicate(ic), editPersonDescriptor);","lastModifiedDate":"2024-03-21"},{"lineNumber":81,"author":{"gitId":"Jayne1010"},"content":" } catch (IllegalArgumentException pe) {","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"Jayne1010"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-21"},{"lineNumber":83,"author":{"gitId":"Jayne1010"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-03-21"},{"lineNumber":84,"author":{"gitId":"Jayne1010"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":87,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e} if {@code tags} is non-empty.","lastModifiedDate":"2017-03-07"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * If {@code tags} contain only one element which is an empty string, it will be parsed into a","lastModifiedDate":"2017-01-26"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * {@code Set\u003cTag\u003e} containing zero tags.","lastModifiedDate":"2017-03-07"},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":92,"author":{"gitId":"-"},"content":" private Optional\u003cSet\u003cTag\u003e\u003e parseTagsForEdit(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assert tags !\u003d null;","lastModifiedDate":"2017-01-26"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":95,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2017-01-26"},{"lineNumber":96,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2017-01-26"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":98,"author":{"gitId":"-"},"content":" Collection\u003cString\u003e tagSet \u003d tags.size() \u003d\u003d 1 \u0026\u0026 tags.contains(\"\") ? Collections.emptySet() : tags;","lastModifiedDate":"2017-01-26"},{"lineNumber":99,"author":{"gitId":"-"},"content":" return Optional.of(ParserUtil.parseTags(tagSet));","lastModifiedDate":"2017-01-26"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":102,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"Jayne1010":29,"-":73}},{"path":"src/main/java/seedu/address/logic/parser/FindCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-26"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":7,"author":{"gitId":"jiahui0309"},"content":"import seedu.address.model.person.IdentityCardNumber;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"jiahui0309"},"content":"import seedu.address.model.person.IdentityCardNumberMatchesPredicate;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new FindCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class FindCommandParser implements Parser\u003cFindCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the FindCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * and returns a FindCommand object for execution.","lastModifiedDate":"2019-05-11"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public FindCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":21,"author":{"gitId":"-"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2017-02-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2017-02-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" throw new ParseException(","lastModifiedDate":"2017-03-11"},{"lineNumber":24,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-01-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":27,"author":{"gitId":"jiahui0309"},"content":" try {","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"jiahui0309"},"content":" IdentityCardNumber ic \u003d ParserUtil.parseIC(trimmedArgs);","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"jiahui0309"},"content":" return new FindCommand(new IdentityCardNumberMatchesPredicate(ic));","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"jiahui0309"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"jiahui0309"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"jiahui0309"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE), e);","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"jiahui0309"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":35,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"-":26,"jiahui0309":9}},{"path":"src/main/java/seedu/address/logic/parser/ParserUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-02-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-02-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-02-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-02-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"Jayne1010"},"content":"import seedu.address.model.person.Age;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"Jayne1010"},"content":"import seedu.address.model.person.IdentityCardNumber;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"Jayne1010"},"content":"import seedu.address.model.person.Sex;","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-02-11"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2017-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":34,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02"},{"lineNumber":36,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":38,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29"},{"lineNumber":44,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":48,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29"},{"lineNumber":49,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29"},{"lineNumber":50,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":51,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":59,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30"},{"lineNumber":64,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":65,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":71,"author":{"gitId":"jiahui0309"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"jiahui0309"},"content":" * Parses a {@code String identityCardNumber} into a {@code IdentityCardNumber}.","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"jiahui0309"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"jiahui0309"},"content":" *","lastModifiedDate":"2024-03-16"},{"lineNumber":75,"author":{"gitId":"jiahui0309"},"content":" * @throws ParseException if the given {@code identityCardNumber} is invalid.","lastModifiedDate":"2024-03-16"},{"lineNumber":76,"author":{"gitId":"jiahui0309"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":77,"author":{"gitId":"jiahui0309"},"content":" public static IdentityCardNumber parseIC(String identityCardNumber) throws ParseException {","lastModifiedDate":"2024-03-16"},{"lineNumber":78,"author":{"gitId":"jiahui0309"},"content":" requireNonNull(identityCardNumber);","lastModifiedDate":"2024-03-16"},{"lineNumber":79,"author":{"gitId":"jiahui0309"},"content":" String trimmedIdentityCardNumber \u003d identityCardNumber.trim();","lastModifiedDate":"2024-03-16"},{"lineNumber":80,"author":{"gitId":"jiahui0309"},"content":" if (!IdentityCardNumber.isValidIdentityCardNumber(trimmedIdentityCardNumber)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":81,"author":{"gitId":"jiahui0309"},"content":" throw new ParseException(IdentityCardNumber.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-16"},{"lineNumber":82,"author":{"gitId":"jiahui0309"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":83,"author":{"gitId":"jiahui0309"},"content":" return new IdentityCardNumber(trimmedIdentityCardNumber);","lastModifiedDate":"2024-03-16"},{"lineNumber":84,"author":{"gitId":"jiahui0309"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":85,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":86,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":89,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":93,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-30"},{"lineNumber":94,"author":{"gitId":"-"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":95,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(trimmedAddress)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":96,"author":{"gitId":"-"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":98,"author":{"gitId":"-"},"content":" return new Address(trimmedAddress);","lastModifiedDate":"2017-05-30"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":101,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":104,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":106,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":108,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30"},{"lineNumber":109,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":110,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":111,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":113,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","lastModifiedDate":"2017-05-30"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":116,"author":{"gitId":"Jayne1010"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":117,"author":{"gitId":"Jayne1010"},"content":" * Parses a {@code String sex} into an {@code Sex}.","lastModifiedDate":"2024-03-17"},{"lineNumber":118,"author":{"gitId":"Jayne1010"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-17"},{"lineNumber":119,"author":{"gitId":"Jayne1010"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":120,"author":{"gitId":"Jayne1010"},"content":" * @throws ParseException if the given {@code sex} is invalid.","lastModifiedDate":"2024-03-17"},{"lineNumber":121,"author":{"gitId":"Jayne1010"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":122,"author":{"gitId":"Jayne1010"},"content":" public static Sex parseSex(String sex) throws ParseException {","lastModifiedDate":"2024-03-17"},{"lineNumber":123,"author":{"gitId":"Jayne1010"},"content":" requireNonNull(sex);","lastModifiedDate":"2024-03-17"},{"lineNumber":124,"author":{"gitId":"Jayne1010"},"content":" String trimmedSex \u003d sex.trim();","lastModifiedDate":"2024-03-17"},{"lineNumber":125,"author":{"gitId":"Jayne1010"},"content":" if (!Sex.isValidSex(trimmedSex)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":126,"author":{"gitId":"Jayne1010"},"content":" throw new ParseException(Sex.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":127,"author":{"gitId":"Jayne1010"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":128,"author":{"gitId":"Jayne1010"},"content":" return new Sex(trimmedSex);","lastModifiedDate":"2024-03-17"},{"lineNumber":129,"author":{"gitId":"Jayne1010"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":130,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":131,"author":{"gitId":"Jayne1010"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":132,"author":{"gitId":"Jayne1010"},"content":" * Parses a {@code String age} into an {@code Age}.","lastModifiedDate":"2024-03-17"},{"lineNumber":133,"author":{"gitId":"Jayne1010"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-17"},{"lineNumber":134,"author":{"gitId":"Jayne1010"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":135,"author":{"gitId":"Jayne1010"},"content":" * @throws ParseException if the given {@code age} is invalid.","lastModifiedDate":"2024-03-17"},{"lineNumber":136,"author":{"gitId":"Jayne1010"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":137,"author":{"gitId":"Jayne1010"},"content":" public static Age parseAge(String age) throws ParseException {","lastModifiedDate":"2024-03-17"},{"lineNumber":138,"author":{"gitId":"Jayne1010"},"content":" requireNonNull(age);","lastModifiedDate":"2024-03-17"},{"lineNumber":139,"author":{"gitId":"Jayne1010"},"content":" String trimmedAge \u003d age.trim();","lastModifiedDate":"2024-03-17"},{"lineNumber":140,"author":{"gitId":"Jayne1010"},"content":" if (!Age.isValidAge(trimmedAge)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":141,"author":{"gitId":"Jayne1010"},"content":" throw new ParseException(Age.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":142,"author":{"gitId":"Jayne1010"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":143,"author":{"gitId":"Jayne1010"},"content":" return new Age(trimmedAge);","lastModifiedDate":"2024-03-17"},{"lineNumber":144,"author":{"gitId":"Jayne1010"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":145,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":146,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":147,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30"},{"lineNumber":148,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":149,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":150,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":151,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":152,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":153,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30"},{"lineNumber":154,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":155,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":156,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":158,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","lastModifiedDate":"2017-05-30"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":161,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":162,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2017-03-07"},{"lineNumber":163,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":164,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":165,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15"},{"lineNumber":166,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11"},{"lineNumber":167,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11"},{"lineNumber":168,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30"},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":170,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07"},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":172,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"Jayne1010":33,"-":124,"jiahui0309":15}},{"path":"src/main/java/seedu/address/model/UserPrefs.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2016-09-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Represents User\u0027s preferences.","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class UserPrefs implements ReadOnlyUserPrefs {","lastModifiedDate":"2018-11-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" private GuiSettings guiSettings \u003d new GuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":17,"author":{"gitId":"drustanyjt"},"content":" private Path addressBookFilePath \u003d Paths.get(\"data\" , \"clinicmate.json\");","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-06"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Creates a {@code UserPrefs} with default values.","lastModifiedDate":"2018-12-06"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-06"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public UserPrefs() {}","lastModifiedDate":"2018-12-06"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Creates a {@code UserPrefs} with the prefs in {@code userPrefs}.","lastModifiedDate":"2018-12-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public UserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":" this();","lastModifiedDate":"2018-12-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":" resetData(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Resets the existing data of this {@code UserPrefs} with {@code newUserPrefs}.","lastModifiedDate":"2018-12-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-06"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public void resetData(ReadOnlyUserPrefs newUserPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":36,"author":{"gitId":"-"},"content":" requireNonNull(newUserPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":37,"author":{"gitId":"-"},"content":" setGuiSettings(newUserPrefs.getGuiSettings());","lastModifiedDate":"2018-12-06"},{"lineNumber":38,"author":{"gitId":"-"},"content":" setAddressBookFilePath(newUserPrefs.getAddressBookFilePath());","lastModifiedDate":"2018-12-06"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-06"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return guiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" this.guiSettings \u003d guiSettings;","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-04-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return addressBookFilePath;","lastModifiedDate":"2017-02-25"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-04-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" this.addressBookFilePath \u003d addressBookFilePath;","lastModifiedDate":"2017-02-25"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-25"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2016-09-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2016-09-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" if (!(other instanceof UserPrefs)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2016-09-24"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":" UserPrefs otherUserPrefs \u003d (UserPrefs) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return guiSettings.equals(otherUserPrefs.guiSettings)","lastModifiedDate":"2023-07-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" \u0026\u0026 addressBookFilePath.equals(otherUserPrefs.addressBookFilePath);","lastModifiedDate":"2023-07-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return Objects.hash(guiSettings, addressBookFilePath);","lastModifiedDate":"2018-08-09"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-09-24"},{"lineNumber":82,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-02-25"},{"lineNumber":83,"author":{"gitId":"-"},"content":" sb.append(\"Gui Settings : \" + guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":" sb.append(\"\\nLocal data file location : \" + addressBookFilePath);","lastModifiedDate":"2017-02-25"},{"lineNumber":85,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-02-25"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"drustanyjt":1,"-":87}},{"path":"src/main/java/seedu/address/model/person/Age.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"drustanyjt"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-15"},{"lineNumber":2,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":3,"author":{"gitId":"drustanyjt"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-15"},{"lineNumber":4,"author":{"gitId":"drustanyjt"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-15"},{"lineNumber":5,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":6,"author":{"gitId":"drustanyjt"},"content":"/**","lastModifiedDate":"2024-03-15"},{"lineNumber":7,"author":{"gitId":"drustanyjt"},"content":" * Represents a Person\u0027s age in the address book.","lastModifiedDate":"2024-03-15"},{"lineNumber":8,"author":{"gitId":"drustanyjt"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidAge(String)}","lastModifiedDate":"2024-03-15"},{"lineNumber":9,"author":{"gitId":"drustanyjt"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":10,"author":{"gitId":"drustanyjt"},"content":"public class Age {","lastModifiedDate":"2024-03-15"},{"lineNumber":11,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":12,"author":{"gitId":"drustanyjt"},"content":" public static final Age DEFAULT \u003d new Age(0);","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"drustanyjt"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-15"},{"lineNumber":14,"author":{"gitId":"drustanyjt"},"content":" \"Age should only contain non-negative numbers, and it should not be blank\";","lastModifiedDate":"2024-03-15"},{"lineNumber":15,"author":{"gitId":"drustanyjt"},"content":" public static final String VALIDATION_REGEX \u003d \"[0-9]+\";","lastModifiedDate":"2024-03-15"},{"lineNumber":16,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":17,"author":{"gitId":"drustanyjt"},"content":" public final Integer value;","lastModifiedDate":"2024-03-15"},{"lineNumber":18,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":19,"author":{"gitId":"drustanyjt"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":20,"author":{"gitId":"drustanyjt"},"content":" * Constructs a {@code Age}.","lastModifiedDate":"2024-03-15"},{"lineNumber":21,"author":{"gitId":"drustanyjt"},"content":" *","lastModifiedDate":"2024-03-15"},{"lineNumber":22,"author":{"gitId":"drustanyjt"},"content":" * @param age A valid age.","lastModifiedDate":"2024-03-15"},{"lineNumber":23,"author":{"gitId":"drustanyjt"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":24,"author":{"gitId":"drustanyjt"},"content":" public Age(String age) {","lastModifiedDate":"2024-03-15"},{"lineNumber":25,"author":{"gitId":"drustanyjt"},"content":" requireNonNull(age);","lastModifiedDate":"2024-03-15"},{"lineNumber":26,"author":{"gitId":"drustanyjt"},"content":" checkArgument(isValidAge(age), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-15"},{"lineNumber":27,"author":{"gitId":"drustanyjt"},"content":" value \u003d Integer.parseInt(age);","lastModifiedDate":"2024-03-15"},{"lineNumber":28,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":29,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":30,"author":{"gitId":"drustanyjt"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"drustanyjt"},"content":" * Constructs a {@code Age}.","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"drustanyjt"},"content":" *","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"drustanyjt"},"content":" * @param age A valid age.","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"drustanyjt"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"drustanyjt"},"content":" public Age(int age) {","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"drustanyjt"},"content":" checkArgument(isValidAge(age), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"drustanyjt"},"content":" value \u003d age;","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"drustanyjt"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":41,"author":{"gitId":"drustanyjt"},"content":" * Returns true if a given string is a valid age.","lastModifiedDate":"2024-03-15"},{"lineNumber":42,"author":{"gitId":"drustanyjt"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":43,"author":{"gitId":"drustanyjt"},"content":" public static boolean isValidAge(String test) {","lastModifiedDate":"2024-03-15"},{"lineNumber":44,"author":{"gitId":"drustanyjt"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-15"},{"lineNumber":45,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":46,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":47,"author":{"gitId":"drustanyjt"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"drustanyjt"},"content":" * Returns true if a given integer is a valid age.","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"drustanyjt"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"drustanyjt"},"content":" public static boolean isValidAge(int test) {","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"drustanyjt"},"content":" return test \u003e\u003d 0;","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"drustanyjt"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":55,"author":{"gitId":"drustanyjt"},"content":" public String toString() {","lastModifiedDate":"2024-03-15"},{"lineNumber":56,"author":{"gitId":"drustanyjt"},"content":" return value.toString();","lastModifiedDate":"2024-03-15"},{"lineNumber":57,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":58,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":59,"author":{"gitId":"drustanyjt"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":60,"author":{"gitId":"drustanyjt"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-15"},{"lineNumber":61,"author":{"gitId":"drustanyjt"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-15"},{"lineNumber":62,"author":{"gitId":"drustanyjt"},"content":" return true;","lastModifiedDate":"2024-03-15"},{"lineNumber":63,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":64,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":65,"author":{"gitId":"drustanyjt"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-15"},{"lineNumber":66,"author":{"gitId":"drustanyjt"},"content":" if (!(other instanceof Age)) {","lastModifiedDate":"2024-03-15"},{"lineNumber":67,"author":{"gitId":"drustanyjt"},"content":" return false;","lastModifiedDate":"2024-03-15"},{"lineNumber":68,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":69,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":70,"author":{"gitId":"drustanyjt"},"content":" Age otherAge \u003d (Age) other;","lastModifiedDate":"2024-03-15"},{"lineNumber":71,"author":{"gitId":"drustanyjt"},"content":" return value.equals(otherAge.value);","lastModifiedDate":"2024-03-15"},{"lineNumber":72,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":73,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":74,"author":{"gitId":"drustanyjt"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":75,"author":{"gitId":"drustanyjt"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-15"},{"lineNumber":76,"author":{"gitId":"drustanyjt"},"content":" return value.hashCode();","lastModifiedDate":"2024-03-15"},{"lineNumber":77,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":78,"author":{"gitId":"drustanyjt"},"content":"}","lastModifiedDate":"2024-03-15"}],"authorContributionMap":{"drustanyjt":78}},{"path":"src/main/java/seedu/address/model/person/IdentityCardNumber.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"drustanyjt"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-15"},{"lineNumber":2,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":3,"author":{"gitId":"drustanyjt"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-15"},{"lineNumber":4,"author":{"gitId":"drustanyjt"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-15"},{"lineNumber":5,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":6,"author":{"gitId":"drustanyjt"},"content":"/**","lastModifiedDate":"2024-03-15"},{"lineNumber":7,"author":{"gitId":"drustanyjt"},"content":" * Represents a Person\u0027s identity card number in the address book.","lastModifiedDate":"2024-03-15"},{"lineNumber":8,"author":{"gitId":"drustanyjt"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidIdentityCardNumber(String)}","lastModifiedDate":"2024-03-15"},{"lineNumber":9,"author":{"gitId":"drustanyjt"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":10,"author":{"gitId":"drustanyjt"},"content":"public class IdentityCardNumber {","lastModifiedDate":"2024-03-15"},{"lineNumber":11,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":12,"author":{"gitId":"drustanyjt"},"content":" public static final IdentityCardNumber DEFAULT \u003d new IdentityCardNumber(\"S0000000A\");","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"drustanyjt"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-15"},{"lineNumber":14,"author":{"gitId":"drustanyjt"},"content":" \"IC number starts with one letter (S,T,F,G,M) followed by seven digits and one letter behind\"","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"drustanyjt"},"content":" + \" It is case insensitive. An example is S1234567A.\";","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"jiahui0309"},"content":" public static final String VALIDATION_REGEX \u003d \"[STFGMstfgm][0-9]{7}[A-Z,a-z]\";","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":19,"author":{"gitId":"drustanyjt"},"content":" public final String value;","lastModifiedDate":"2024-03-15"},{"lineNumber":20,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":21,"author":{"gitId":"drustanyjt"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":22,"author":{"gitId":"drustanyjt"},"content":" * Constructs a {@code IdentityCardNumber}.","lastModifiedDate":"2024-03-15"},{"lineNumber":23,"author":{"gitId":"drustanyjt"},"content":" *","lastModifiedDate":"2024-03-15"},{"lineNumber":24,"author":{"gitId":"drustanyjt"},"content":" * @param identityCardNumber A valid identity card number.","lastModifiedDate":"2024-03-15"},{"lineNumber":25,"author":{"gitId":"drustanyjt"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":26,"author":{"gitId":"drustanyjt"},"content":" public IdentityCardNumber(String identityCardNumber) {","lastModifiedDate":"2024-03-15"},{"lineNumber":27,"author":{"gitId":"drustanyjt"},"content":" requireNonNull(identityCardNumber);","lastModifiedDate":"2024-03-15"},{"lineNumber":28,"author":{"gitId":"drustanyjt"},"content":" checkArgument(isValidIdentityCardNumber(identityCardNumber), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-15"},{"lineNumber":29,"author":{"gitId":"jiahui0309"},"content":" value \u003d identityCardNumber.toUpperCase();","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":31,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":32,"author":{"gitId":"drustanyjt"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":33,"author":{"gitId":"drustanyjt"},"content":" * Returns true if a given string is a valid identity card number.","lastModifiedDate":"2024-03-15"},{"lineNumber":34,"author":{"gitId":"drustanyjt"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":35,"author":{"gitId":"drustanyjt"},"content":" public static boolean isValidIdentityCardNumber(String test) {","lastModifiedDate":"2024-03-15"},{"lineNumber":36,"author":{"gitId":"drustanyjt"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-15"},{"lineNumber":37,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":38,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":39,"author":{"gitId":"drustanyjt"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":40,"author":{"gitId":"drustanyjt"},"content":" public String toString() {","lastModifiedDate":"2024-03-15"},{"lineNumber":41,"author":{"gitId":"drustanyjt"},"content":" return value;","lastModifiedDate":"2024-03-15"},{"lineNumber":42,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":43,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":44,"author":{"gitId":"drustanyjt"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":45,"author":{"gitId":"drustanyjt"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-15"},{"lineNumber":46,"author":{"gitId":"drustanyjt"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-15"},{"lineNumber":47,"author":{"gitId":"drustanyjt"},"content":" return true;","lastModifiedDate":"2024-03-15"},{"lineNumber":48,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":49,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":50,"author":{"gitId":"drustanyjt"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-15"},{"lineNumber":51,"author":{"gitId":"drustanyjt"},"content":" if (!(other instanceof IdentityCardNumber)) {","lastModifiedDate":"2024-03-15"},{"lineNumber":52,"author":{"gitId":"drustanyjt"},"content":" return false;","lastModifiedDate":"2024-03-15"},{"lineNumber":53,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":54,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":55,"author":{"gitId":"drustanyjt"},"content":" IdentityCardNumber otherIdentityCardNumber \u003d (IdentityCardNumber) other;","lastModifiedDate":"2024-03-15"},{"lineNumber":56,"author":{"gitId":"drustanyjt"},"content":" return value.equals(otherIdentityCardNumber.value);","lastModifiedDate":"2024-03-15"},{"lineNumber":57,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":58,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":59,"author":{"gitId":"drustanyjt"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":60,"author":{"gitId":"drustanyjt"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-15"},{"lineNumber":61,"author":{"gitId":"drustanyjt"},"content":" return value.hashCode();","lastModifiedDate":"2024-03-15"},{"lineNumber":62,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":63,"author":{"gitId":"drustanyjt"},"content":"}","lastModifiedDate":"2024-03-15"}],"authorContributionMap":{"drustanyjt":61,"jiahui0309":2}},{"path":"src/main/java/seedu/address/model/person/IdentityCardNumberMatchesPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jiahui0309"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"jiahui0309"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"jiahui0309"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"jiahui0309"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"jiahui0309"},"content":" * Tests that a {@code Person}\u0027s {@code IdentityCardNumber} matches the given IC number.","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"jiahui0309"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"jiahui0309"},"content":"public class IdentityCardNumberMatchesPredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"jiahui0309"},"content":" private final IdentityCardNumber targetIcNumber;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"jiahui0309"},"content":" public IdentityCardNumberMatchesPredicate(IdentityCardNumber targetIcNumber) {","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"jiahui0309"},"content":" this.targetIcNumber \u003d targetIcNumber;","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"jiahui0309"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"jiahui0309"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"jiahui0309"},"content":" public boolean test(Person person) {","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"jiahui0309"},"content":" return person.getIdentityCardNumber().equals(targetIcNumber);","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"jiahui0309"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"jiahui0309"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"jiahui0309"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"jiahui0309"},"content":" if (this \u003d\u003d other) {","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"jiahui0309"},"content":" return true;","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"jiahui0309"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"jiahui0309"},"content":" if (!(other instanceof IdentityCardNumberMatchesPredicate)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"jiahui0309"},"content":" return false;","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"jiahui0309"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"jiahui0309"},"content":" IdentityCardNumberMatchesPredicate predicate \u003d (IdentityCardNumberMatchesPredicate) other;","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"jiahui0309"},"content":" return targetIcNumber.equals(predicate.targetIcNumber);","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"jiahui0309"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"jiahui0309"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"jiahui0309"},"content":" public String toString() {","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"jiahui0309"},"content":" return new ToStringBuilder(this).toString();","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"jiahui0309"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"jiahui0309":42}},{"path":"src/main/java/seedu/address/model/person/Note.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"drustanyjt"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-15"},{"lineNumber":2,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":3,"author":{"gitId":"drustanyjt"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-15"},{"lineNumber":4,"author":{"gitId":"drustanyjt"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-15"},{"lineNumber":5,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":6,"author":{"gitId":"drustanyjt"},"content":"/**","lastModifiedDate":"2024-03-15"},{"lineNumber":7,"author":{"gitId":"drustanyjt"},"content":" * Represents a Person\u0027s note in the address book.","lastModifiedDate":"2024-03-15"},{"lineNumber":8,"author":{"gitId":"drustanyjt"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidNote(String)}","lastModifiedDate":"2024-03-15"},{"lineNumber":9,"author":{"gitId":"drustanyjt"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":10,"author":{"gitId":"drustanyjt"},"content":"public class Note {","lastModifiedDate":"2024-03-15"},{"lineNumber":11,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":12,"author":{"gitId":"drustanyjt"},"content":" public static final Note DEFAULT \u003d new Note(\"\");","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"drustanyjt"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Notes can take any values, and it should not be blank\";","lastModifiedDate":"2024-03-15"},{"lineNumber":14,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":15,"author":{"gitId":"drustanyjt"},"content":" public final String value;","lastModifiedDate":"2024-03-15"},{"lineNumber":16,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":17,"author":{"gitId":"drustanyjt"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":18,"author":{"gitId":"drustanyjt"},"content":" * Constructs a {@code Note}.","lastModifiedDate":"2024-03-15"},{"lineNumber":19,"author":{"gitId":"drustanyjt"},"content":" *","lastModifiedDate":"2024-03-15"},{"lineNumber":20,"author":{"gitId":"drustanyjt"},"content":" * @param note A valid note.","lastModifiedDate":"2024-03-15"},{"lineNumber":21,"author":{"gitId":"drustanyjt"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":22,"author":{"gitId":"drustanyjt"},"content":" public Note(String note) {","lastModifiedDate":"2024-03-15"},{"lineNumber":23,"author":{"gitId":"drustanyjt"},"content":" requireNonNull(note);","lastModifiedDate":"2024-03-15"},{"lineNumber":24,"author":{"gitId":"drustanyjt"},"content":" checkArgument(isValidNote(note), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-15"},{"lineNumber":25,"author":{"gitId":"drustanyjt"},"content":" value \u003d note;","lastModifiedDate":"2024-03-15"},{"lineNumber":26,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":27,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":28,"author":{"gitId":"drustanyjt"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":29,"author":{"gitId":"drustanyjt"},"content":" * Returns true if a given string is a valid note.","lastModifiedDate":"2024-03-15"},{"lineNumber":30,"author":{"gitId":"drustanyjt"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":31,"author":{"gitId":"drustanyjt"},"content":" public static boolean isValidNote(String test) {","lastModifiedDate":"2024-03-15"},{"lineNumber":32,"author":{"gitId":"drustanyjt"},"content":" return true;","lastModifiedDate":"2024-03-15"},{"lineNumber":33,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":34,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":35,"author":{"gitId":"tengcharmaine"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"tengcharmaine"},"content":" * Appends text to the current note.","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"tengcharmaine"},"content":" *","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"tengcharmaine"},"content":" * @param text The text to append.","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"tengcharmaine"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"tengcharmaine"},"content":" public Note append(String text) {","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"tengcharmaine"},"content":" requireNonNull(text);","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"tengcharmaine"},"content":" return new Note(value + text);","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"tengcharmaine"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"drustanyjt"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":46,"author":{"gitId":"drustanyjt"},"content":" public String toString() {","lastModifiedDate":"2024-03-15"},{"lineNumber":47,"author":{"gitId":"drustanyjt"},"content":" return value;","lastModifiedDate":"2024-03-15"},{"lineNumber":48,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":49,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":50,"author":{"gitId":"drustanyjt"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":51,"author":{"gitId":"drustanyjt"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-15"},{"lineNumber":52,"author":{"gitId":"drustanyjt"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-15"},{"lineNumber":53,"author":{"gitId":"drustanyjt"},"content":" return true;","lastModifiedDate":"2024-03-15"},{"lineNumber":54,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":55,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":56,"author":{"gitId":"drustanyjt"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-15"},{"lineNumber":57,"author":{"gitId":"drustanyjt"},"content":" if (!(other instanceof Note)) {","lastModifiedDate":"2024-03-15"},{"lineNumber":58,"author":{"gitId":"drustanyjt"},"content":" return false;","lastModifiedDate":"2024-03-15"},{"lineNumber":59,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":60,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":61,"author":{"gitId":"drustanyjt"},"content":" Note otherNote \u003d (Note) other;","lastModifiedDate":"2024-03-15"},{"lineNumber":62,"author":{"gitId":"drustanyjt"},"content":" return value.equals(otherNote.value);","lastModifiedDate":"2024-03-15"},{"lineNumber":63,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":64,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":65,"author":{"gitId":"drustanyjt"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":66,"author":{"gitId":"drustanyjt"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-15"},{"lineNumber":67,"author":{"gitId":"drustanyjt"},"content":" return value.hashCode();","lastModifiedDate":"2024-03-15"},{"lineNumber":68,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":69,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":70,"author":{"gitId":"drustanyjt"},"content":"}","lastModifiedDate":"2024-03-15"}],"authorContributionMap":{"drustanyjt":60,"tengcharmaine":10}},{"path":"src/main/java/seedu/address/model/person/Person.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2016-08-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-03-07"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-03-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Represents a Person in the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2017-12-20"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class Person {","lastModifiedDate":"2018-01-10"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private final Phone phone;","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final Email email;","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"drustanyjt"},"content":" private final IdentityCardNumber identityCardNumber;","lastModifiedDate":"2024-03-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19"},{"lineNumber":26,"author":{"gitId":"drustanyjt"},"content":" private final Age age;","lastModifiedDate":"2024-03-15"},{"lineNumber":27,"author":{"gitId":"drustanyjt"},"content":" private final Sex sex;","lastModifiedDate":"2024-03-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final Address address;","lastModifiedDate":"2018-04-19"},{"lineNumber":29,"author":{"gitId":"drustanyjt"},"content":" private final Note note;","lastModifiedDate":"2024-03-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"Jayne1010"},"content":" public Person(Name name, Phone phone, Email email, IdentityCardNumber identityCardNumber,","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"Jayne1010"},"content":" Age age, Sex sex, Address address, Note note, Set\u003cTag\u003e tags) {","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"drustanyjt"},"content":" requireAllNonNull(name, phone, email, identityCardNumber, age, sex, address, note, tags);","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20"},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"drustanyjt"},"content":" this.identityCardNumber \u003d identityCardNumber;","lastModifiedDate":"2024-03-15"},{"lineNumber":42,"author":{"gitId":"drustanyjt"},"content":" this.age \u003d age;","lastModifiedDate":"2024-03-15"},{"lineNumber":43,"author":{"gitId":"drustanyjt"},"content":" this.sex \u003d sex;","lastModifiedDate":"2024-03-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-12-20"},{"lineNumber":45,"author":{"gitId":"drustanyjt"},"content":" this.note \u003d note;","lastModifiedDate":"2024-03-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"drustanyjt"},"content":" public IdentityCardNumber getIdentityCardNumber() {","lastModifiedDate":"2024-03-15"},{"lineNumber":62,"author":{"gitId":"drustanyjt"},"content":" return identityCardNumber;","lastModifiedDate":"2024-03-15"},{"lineNumber":63,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":64,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":65,"author":{"gitId":"drustanyjt"},"content":" public Age getAge() {","lastModifiedDate":"2024-03-15"},{"lineNumber":66,"author":{"gitId":"drustanyjt"},"content":" return age;","lastModifiedDate":"2024-03-15"},{"lineNumber":67,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":68,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":69,"author":{"gitId":"drustanyjt"},"content":" public Sex getSex() {","lastModifiedDate":"2024-03-15"},{"lineNumber":70,"author":{"gitId":"drustanyjt"},"content":" return sex;","lastModifiedDate":"2024-03-15"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public Address getAddress() {","lastModifiedDate":"2017-07-12"},{"lineNumber":74,"author":{"gitId":"-"},"content":" return address;","lastModifiedDate":"2017-12-20"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":77,"author":{"gitId":"drustanyjt"},"content":" public Note getNote() {","lastModifiedDate":"2024-03-15"},{"lineNumber":78,"author":{"gitId":"drustanyjt"},"content":" return note;","lastModifiedDate":"2024-03-15"},{"lineNumber":79,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":80,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":81,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07"},{"lineNumber":82,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07"},{"lineNumber":84,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":86,"author":{"gitId":"-"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":89,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":90,"author":{"gitId":"jiahui0309"},"content":" * Returns true if both persons have the same IC number.","lastModifiedDate":"2024-03-18"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19"},{"lineNumber":99,"author":{"gitId":"drustanyjt"},"content":" \u0026\u0026 otherPerson.getIdentityCardNumber().equals(getIdentityCardNumber());","lastModifiedDate":"2024-03-15"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":102,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":103,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":104,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":106,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":109,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10"},{"lineNumber":110,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":113,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10"},{"lineNumber":115,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":118,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10"},{"lineNumber":119,"author":{"gitId":"-"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":121,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2024-03-16"},{"lineNumber":122,"author":{"gitId":"drustanyjt"},"content":" \u0026\u0026 identityCardNumber.equals(otherPerson.identityCardNumber)","lastModifiedDate":"2024-03-15"},{"lineNumber":123,"author":{"gitId":"drustanyjt"},"content":" \u0026\u0026 age.equals(otherPerson.age)","lastModifiedDate":"2024-03-15"},{"lineNumber":124,"author":{"gitId":"drustanyjt"},"content":" \u0026\u0026 sex.equals(otherPerson.sex)","lastModifiedDate":"2024-03-15"},{"lineNumber":125,"author":{"gitId":"-"},"content":" \u0026\u0026 address.equals(otherPerson.address)","lastModifiedDate":"2023-07-13"},{"lineNumber":126,"author":{"gitId":"drustanyjt"},"content":" \u0026\u0026 note.equals(otherPerson.note)","lastModifiedDate":"2024-03-15"},{"lineNumber":127,"author":{"gitId":"-"},"content":" \u0026\u0026 tags.equals(otherPerson.tags);","lastModifiedDate":"2023-07-13"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":130,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":131,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":132,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24"},{"lineNumber":133,"author":{"gitId":"drustanyjt"},"content":" return Objects.hash(name, phone, email, identityCardNumber, age, sex, address, note, tags);","lastModifiedDate":"2024-03-16"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":136,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":137,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":138,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2024-03-16"},{"lineNumber":142,"author":{"gitId":"drustanyjt"},"content":" .add(\"identityCardNumber\", identityCardNumber)","lastModifiedDate":"2024-03-15"},{"lineNumber":143,"author":{"gitId":"drustanyjt"},"content":" .add(\"age\", age)","lastModifiedDate":"2024-03-15"},{"lineNumber":144,"author":{"gitId":"drustanyjt"},"content":" .add(\"sex\", sex)","lastModifiedDate":"2024-03-15"},{"lineNumber":145,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":146,"author":{"gitId":"drustanyjt"},"content":" .add(\"note\", note)","lastModifiedDate":"2024-03-15"},{"lineNumber":147,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":151,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"drustanyjt":34,"Jayne1010":2,"-":114,"jiahui0309":1}},{"path":"src/main/java/seedu/address/model/person/Sex.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"drustanyjt"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-15"},{"lineNumber":2,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":3,"author":{"gitId":"drustanyjt"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-15"},{"lineNumber":4,"author":{"gitId":"drustanyjt"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-15"},{"lineNumber":5,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":6,"author":{"gitId":"drustanyjt"},"content":"/**","lastModifiedDate":"2024-03-15"},{"lineNumber":7,"author":{"gitId":"drustanyjt"},"content":" * Represents a Person\u0027s sex in the address book.","lastModifiedDate":"2024-03-15"},{"lineNumber":8,"author":{"gitId":"drustanyjt"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidSex(String)}","lastModifiedDate":"2024-03-15"},{"lineNumber":9,"author":{"gitId":"drustanyjt"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":10,"author":{"gitId":"drustanyjt"},"content":"public class Sex {","lastModifiedDate":"2024-03-15"},{"lineNumber":11,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":12,"author":{"gitId":"drustanyjt"},"content":" public static final Sex DEFAULT \u003d new Sex(\"F\");","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"drustanyjt"},"content":" public static final String MALE \u003d \"M\";","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"drustanyjt"},"content":" public static final String FEMALE \u003d \"F\";","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":16,"author":{"gitId":"drustanyjt"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-15"},{"lineNumber":17,"author":{"gitId":"drustanyjt"},"content":" \"Sex should only contain either \u0027M\u0027 or \u0027F\u0027, and it should not be blank\";","lastModifiedDate":"2024-03-15"},{"lineNumber":18,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":19,"author":{"gitId":"drustanyjt"},"content":" /*","lastModifiedDate":"2024-03-15"},{"lineNumber":20,"author":{"gitId":"drustanyjt"},"content":" * The first character of the sex must not be a whitespace,","lastModifiedDate":"2024-03-15"},{"lineNumber":21,"author":{"gitId":"drustanyjt"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2024-03-15"},{"lineNumber":22,"author":{"gitId":"drustanyjt"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":23,"author":{"gitId":"tengcharmaine"},"content":" public static final String VALIDATION_REGEX \u003d \"[mfMF]\";","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":25,"author":{"gitId":"drustanyjt"},"content":" public final String value;","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":27,"author":{"gitId":"drustanyjt"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":28,"author":{"gitId":"drustanyjt"},"content":" * Constructs a {@code Sex}","lastModifiedDate":"2024-03-15"},{"lineNumber":29,"author":{"gitId":"drustanyjt"},"content":" *","lastModifiedDate":"2024-03-15"},{"lineNumber":30,"author":{"gitId":"drustanyjt"},"content":" * @param sex A valid sex.","lastModifiedDate":"2024-03-15"},{"lineNumber":31,"author":{"gitId":"drustanyjt"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":32,"author":{"gitId":"drustanyjt"},"content":" public Sex(String sex) {","lastModifiedDate":"2024-03-15"},{"lineNumber":33,"author":{"gitId":"drustanyjt"},"content":" requireNonNull(sex);","lastModifiedDate":"2024-03-15"},{"lineNumber":34,"author":{"gitId":"drustanyjt"},"content":" checkArgument(isValidSex(sex), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-15"},{"lineNumber":35,"author":{"gitId":"drustanyjt"},"content":" if (isFemaleString(sex)) {","lastModifiedDate":"2024-03-15"},{"lineNumber":36,"author":{"gitId":"drustanyjt"},"content":" value \u003d FEMALE;","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"drustanyjt"},"content":" } else if (isMaleString(sex)) {","lastModifiedDate":"2024-03-15"},{"lineNumber":38,"author":{"gitId":"drustanyjt"},"content":" value \u003d MALE;","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"drustanyjt"},"content":" } else {","lastModifiedDate":"2024-03-15"},{"lineNumber":40,"author":{"gitId":"drustanyjt"},"content":" // This should never happen","lastModifiedDate":"2024-03-15"},{"lineNumber":41,"author":{"gitId":"drustanyjt"},"content":" // Prevents linter from detecting fullSex as potentially unassigned","lastModifiedDate":"2024-03-15"},{"lineNumber":42,"author":{"gitId":"drustanyjt"},"content":" value \u003d \"\";","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":44,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":45,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":46,"author":{"gitId":"drustanyjt"},"content":" public boolean isMaleString(String sex) {","lastModifiedDate":"2024-03-15"},{"lineNumber":47,"author":{"gitId":"tengcharmaine"},"content":" return sex.equalsIgnoreCase(MALE);","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":49,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":50,"author":{"gitId":"drustanyjt"},"content":" public boolean isFemaleString(String sex) {","lastModifiedDate":"2024-03-15"},{"lineNumber":51,"author":{"gitId":"tengcharmaine"},"content":" return sex.equalsIgnoreCase(FEMALE);","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":53,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":54,"author":{"gitId":"drustanyjt"},"content":" public static boolean isValidSex(String test) {","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"drustanyjt"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-15"},{"lineNumber":56,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":57,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":58,"author":{"gitId":"drustanyjt"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":59,"author":{"gitId":"drustanyjt"},"content":" public String toString() {","lastModifiedDate":"2024-03-15"},{"lineNumber":60,"author":{"gitId":"drustanyjt"},"content":" return value;","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":62,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":63,"author":{"gitId":"drustanyjt"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":64,"author":{"gitId":"drustanyjt"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-15"},{"lineNumber":65,"author":{"gitId":"drustanyjt"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-15"},{"lineNumber":66,"author":{"gitId":"drustanyjt"},"content":" return true;","lastModifiedDate":"2024-03-15"},{"lineNumber":67,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":68,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":69,"author":{"gitId":"drustanyjt"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-15"},{"lineNumber":70,"author":{"gitId":"drustanyjt"},"content":" if (!(other instanceof Sex)) {","lastModifiedDate":"2024-03-15"},{"lineNumber":71,"author":{"gitId":"drustanyjt"},"content":" return false;","lastModifiedDate":"2024-03-15"},{"lineNumber":72,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":73,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":74,"author":{"gitId":"drustanyjt"},"content":" Sex otherSex \u003d (Sex) other;","lastModifiedDate":"2024-03-15"},{"lineNumber":75,"author":{"gitId":"drustanyjt"},"content":" return value.equals(otherSex.value);","lastModifiedDate":"2024-03-16"},{"lineNumber":76,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":77,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":78,"author":{"gitId":"drustanyjt"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":79,"author":{"gitId":"drustanyjt"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-15"},{"lineNumber":80,"author":{"gitId":"drustanyjt"},"content":" return value.hashCode();","lastModifiedDate":"2024-03-16"},{"lineNumber":81,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":82,"author":{"gitId":"drustanyjt"},"content":"}","lastModifiedDate":"2024-03-15"}],"authorContributionMap":{"drustanyjt":79,"tengcharmaine":3}},{"path":"src/main/java/seedu/address/model/util/SampleDataUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.util;","lastModifiedDate":"2016-12-20"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21"},{"lineNumber":4,"author":{"gitId":"drustanyjt"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-22"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-12-20"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-12-20"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-20"},{"lineNumber":11,"author":{"gitId":"drustanyjt"},"content":"import seedu.address.model.person.Age;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-20"},{"lineNumber":13,"author":{"gitId":"drustanyjt"},"content":"import seedu.address.model.person.IdentityCardNumber;","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-20"},{"lineNumber":15,"author":{"gitId":"drustanyjt"},"content":"import seedu.address.model.person.Note;","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"drustanyjt"},"content":"import seedu.address.model.person.Sex;","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-14"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static Person[] getSamplePersons() {","lastModifiedDate":"2016-12-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" return new Person[] {","lastModifiedDate":"2016-12-20"},{"lineNumber":27,"author":{"gitId":"Jayne1010"},"content":" new Person(new Name(\"Alex Yeoh\"), new Phone(\"87438807\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"Jayne1010"},"content":" new Email(\"alexyeoh@example.com\"), new IdentityCardNumber(\"S1234567A\"), new Age(\"30\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"Jayne1010"},"content":" new Sex(\"M\"), new Address(\"Blk 30 Geylang Street 29, #06-40\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"Jayne1010"},"content":" new Note(\"No medical conditions\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"drustanyjt"},"content":" getEmptyTagSet()),","lastModifiedDate":"2024-03-22"},{"lineNumber":32,"author":{"gitId":"Jayne1010"},"content":" new Person(new Name(\"Bernice Yu\"), new Phone(\"99272758\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"Jayne1010"},"content":" new Email(\"berniceyu@example.com\"), new IdentityCardNumber(\"S1234567B\"), new Age(31),","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"Jayne1010"},"content":" new Sex(\"F\"), new Address(\"Blk 30 Lorong 3 Serangoon Gardens, #07-18\"), new Note(\"Asthma\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"drustanyjt"},"content":" getEmptyTagSet()),","lastModifiedDate":"2024-03-22"},{"lineNumber":36,"author":{"gitId":"Jayne1010"},"content":" new Person(new Name(\"Charlotte Oliveiro\"), new Phone(\"93210283\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"Jayne1010"},"content":" new Email(\"charlotte@example.com\"), new IdentityCardNumber(\"S1234567C\"), new Age(\"32\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"Jayne1010"},"content":" new Sex(\"F\"), new Address(\"Blk 11 Ang Mo Kio Street 74, #11-04\"), new Note(\"Diabetes\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"drustanyjt"},"content":" getEmptyTagSet()),","lastModifiedDate":"2024-03-22"},{"lineNumber":40,"author":{"gitId":"Jayne1010"},"content":" new Person(new Name(\"David Li\"), new Phone(\"91031282\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"Jayne1010"},"content":" new Email(\"lidavid@example.com\"), new IdentityCardNumber(\"S1234567D\"), new Age(33), new Sex(\"M\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"drustanyjt"},"content":" new Address(\"Blk 436 Serangoon Gardens Street 26, #16-43\"), new Note(\"No medical conditions\"),","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"drustanyjt"},"content":" getEmptyTagSet()),","lastModifiedDate":"2024-03-22"},{"lineNumber":44,"author":{"gitId":"Jayne1010"},"content":" new Person(new Name(\"Irfan Ibrahim\"), new Phone(\"92492021\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"Jayne1010"},"content":" new Email(\"irfan@example.com\"), new IdentityCardNumber(\"S1234567E\"), new Age(\"34\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"Jayne1010"},"content":" new Sex(\"M\"), new Address(\"Blk 47 Tampines Street 20, #17-35\"), new Note(\"High blood pressure\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"drustanyjt"},"content":" getEmptyTagSet()),","lastModifiedDate":"2024-03-22"},{"lineNumber":48,"author":{"gitId":"Jayne1010"},"content":" new Person(new Name(\"Roy Balakrishnan\"), new Phone(\"92624417\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"Jayne1010"},"content":" new Email(\"royb@example.com\"), new IdentityCardNumber(\"S1234567F\"), new Age(35),","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"Jayne1010"},"content":" new Sex(\"M\"), new Address(\"Blk 45 Aljunied Street 85, #11-31\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"Jayne1010"},"content":" new Note(\"No medical conditions\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"drustanyjt"},"content":" getEmptyTagSet()),","lastModifiedDate":"2024-03-22"},{"lineNumber":53,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07"},{"lineNumber":58,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":64,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14"},{"lineNumber":65,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14"},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2017-05-30"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21"},{"lineNumber":69,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2018-01-21"},{"lineNumber":70,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":73,"author":{"gitId":"drustanyjt"},"content":" public static Set\u003cTag\u003e getEmptyTagSet() {","lastModifiedDate":"2024-03-22"},{"lineNumber":74,"author":{"gitId":"drustanyjt"},"content":" return new HashSet\u003cTag\u003e();","lastModifiedDate":"2024-03-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":77,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20"}],"authorContributionMap":{"drustanyjt":14,"Jayne1010":19,"-":44}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedPerson.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"drustanyjt"},"content":"import seedu.address.model.person.Age;","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"drustanyjt"},"content":"import seedu.address.model.person.IdentityCardNumber;","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"drustanyjt"},"content":"import seedu.address.model.person.Note;","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"drustanyjt"},"content":"import seedu.address.model.person.Sex;","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Jackson-friendly version of {@link Person}.","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":"class JsonAdaptedPerson {","lastModifiedDate":"2018-12-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final String name;","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final String phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"drustanyjt"},"content":" private final String identityCardNumber;","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"drustanyjt"},"content":" private final Integer age;","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"drustanyjt"},"content":" private final String sex;","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private final String address;","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"drustanyjt"},"content":" private final String note;","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedTag\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-01-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given person details.","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(@JsonProperty(\"name\") String name, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"drustanyjt"},"content":" @JsonProperty(\"email\") String email,","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"drustanyjt"},"content":" @JsonProperty(\"identityCardNumber\") String identityCardNumber,","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"drustanyjt"},"content":" @JsonProperty(\"age\") Integer age,","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"drustanyjt"},"content":" @JsonProperty(\"sex\") String sex,","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"drustanyjt"},"content":" @JsonProperty(\"address\") String address,","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"drustanyjt"},"content":" @JsonProperty(\"note\") String note,","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags) {","lastModifiedDate":"2023-05-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13"},{"lineNumber":56,"author":{"gitId":"drustanyjt"},"content":" this.identityCardNumber \u003d identityCardNumber;","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"drustanyjt"},"content":" this.age \u003d age;","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"drustanyjt"},"content":" this.sex \u003d sex;","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"drustanyjt"},"content":" this.note \u003d note;","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"-"},"content":" if (tags !\u003d null) {","lastModifiedDate":"2023-01-09"},{"lineNumber":62,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2023-01-09"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2018-08-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" phone \u003d source.getPhone().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"drustanyjt"},"content":" identityCardNumber \u003d source.getIdentityCardNumber().value;","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"drustanyjt"},"content":" age \u003d source.getAge().value;","lastModifiedDate":"2024-03-16"},{"lineNumber":75,"author":{"gitId":"drustanyjt"},"content":" sex \u003d source.getSex().value;","lastModifiedDate":"2024-03-16"},{"lineNumber":76,"author":{"gitId":"-"},"content":" address \u003d source.getAddress().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"drustanyjt"},"content":" note \u003d source.getNote().value;","lastModifiedDate":"2024-03-16"},{"lineNumber":78,"author":{"gitId":"-"},"content":" tags.addAll(source.getTags().stream()","lastModifiedDate":"2023-01-09"},{"lineNumber":79,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2018-08-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" final List\u003cTag\u003e personTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":" for (JsonAdaptedTag tag : tags) {","lastModifiedDate":"2023-01-09"},{"lineNumber":91,"author":{"gitId":"-"},"content":" personTags.add(tag.toModelType());","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":103,"author":{"gitId":"Jayne1010"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-03-17"},{"lineNumber":104,"author":{"gitId":"Jayne1010"},"content":" Phone.class.getSimpleName()));","lastModifiedDate":"2024-03-17"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":107,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2024-03-17"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":119,"author":{"gitId":"drustanyjt"},"content":" if (identityCardNumber \u003d\u003d null) {","lastModifiedDate":"2024-03-16"},{"lineNumber":120,"author":{"gitId":"drustanyjt"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-03-16"},{"lineNumber":121,"author":{"gitId":"drustanyjt"},"content":" IdentityCardNumber.class.getSimpleName()));","lastModifiedDate":"2024-03-16"},{"lineNumber":122,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":123,"author":{"gitId":"drustanyjt"},"content":" if (!IdentityCardNumber.isValidIdentityCardNumber(identityCardNumber)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":124,"author":{"gitId":"drustanyjt"},"content":" throw new IllegalValueException(IdentityCardNumber.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-16"},{"lineNumber":125,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":126,"author":{"gitId":"drustanyjt"},"content":" final IdentityCardNumber modelIdentityCardNumber \u003d new IdentityCardNumber(identityCardNumber);","lastModifiedDate":"2024-03-16"},{"lineNumber":127,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":128,"author":{"gitId":"drustanyjt"},"content":" if (age \u003d\u003d null) {","lastModifiedDate":"2024-03-16"},{"lineNumber":129,"author":{"gitId":"drustanyjt"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Age.class.getSimpleName()));","lastModifiedDate":"2024-03-16"},{"lineNumber":130,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":131,"author":{"gitId":"drustanyjt"},"content":" if (!Age.isValidAge(age)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":132,"author":{"gitId":"drustanyjt"},"content":" throw new IllegalValueException(Age.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-16"},{"lineNumber":133,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":134,"author":{"gitId":"drustanyjt"},"content":" final Age modelAge \u003d new Age(age);","lastModifiedDate":"2024-03-16"},{"lineNumber":135,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":136,"author":{"gitId":"drustanyjt"},"content":" if (sex \u003d\u003d null) {","lastModifiedDate":"2024-03-16"},{"lineNumber":137,"author":{"gitId":"drustanyjt"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Sex.class.getSimpleName()));","lastModifiedDate":"2024-03-16"},{"lineNumber":138,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":139,"author":{"gitId":"drustanyjt"},"content":" if (!Sex.isValidSex(sex)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":140,"author":{"gitId":"drustanyjt"},"content":" throw new IllegalValueException(Sex.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-16"},{"lineNumber":141,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":142,"author":{"gitId":"drustanyjt"},"content":" final Sex modelSex \u003d new Sex(sex);","lastModifiedDate":"2024-03-16"},{"lineNumber":143,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":144,"author":{"gitId":"-"},"content":" if (address \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":145,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":147,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(address)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":148,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":150,"author":{"gitId":"-"},"content":" final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2018-08-13"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":152,"author":{"gitId":"drustanyjt"},"content":" if (note \u003d\u003d null) {","lastModifiedDate":"2024-03-16"},{"lineNumber":153,"author":{"gitId":"drustanyjt"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Note.class.getSimpleName()));","lastModifiedDate":"2024-03-16"},{"lineNumber":154,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":155,"author":{"gitId":"drustanyjt"},"content":" if (!Note.isValidNote(note)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":156,"author":{"gitId":"drustanyjt"},"content":" throw new IllegalValueException(Note.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-16"},{"lineNumber":157,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":158,"author":{"gitId":"drustanyjt"},"content":" final Note modelNote \u003d new Note(note);","lastModifiedDate":"2024-03-16"},{"lineNumber":159,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":160,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(personTags);","lastModifiedDate":"2018-08-13"},{"lineNumber":161,"author":{"gitId":"drustanyjt"},"content":" return new Person(modelName, modelPhone, modelEmail, modelIdentityCardNumber, modelAge, modelSex, modelAddress,","lastModifiedDate":"2024-03-16"},{"lineNumber":162,"author":{"gitId":"drustanyjt"},"content":" modelNote, modelTags);","lastModifiedDate":"2024-03-16"},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":165,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"drustanyjt":57,"Jayne1010":2,"-":106}},{"path":"src/main/java/seedu/address/ui/HelpWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-12-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2019-08-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2019-08-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.input.Clipboard;","lastModifiedDate":"2019-08-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.input.ClipboardContent;","lastModifiedDate":"2019-08-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Controller for a help page","lastModifiedDate":"2016-08-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class HelpWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-12-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":18,"author":{"gitId":"tengcharmaine"},"content":" public static final String USERGUIDE_URL \u003d \"https://ay2324s2-cs2103t-f14-2.github.io/tp/UserGuide.html\";","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String HELP_MESSAGE \u003d \"Refer to the user guide: \" + USERGUIDE_URL;","lastModifiedDate":"2019-08-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(HelpWindow.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"HelpWindow.fxml\";","lastModifiedDate":"2016-09-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-12-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private Button copyButton;","lastModifiedDate":"2019-08-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-08-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2019-08-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Label helpMessage;","lastModifiedDate":"2019-08-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-12-01"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-12-01"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * @param root Stage to use as the root of the HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-12-01"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public HelpWindow(Stage root) {","lastModifiedDate":"2017-12-01"},{"lineNumber":36,"author":{"gitId":"-"},"content":" super(FXML, root);","lastModifiedDate":"2017-12-01"},{"lineNumber":37,"author":{"gitId":"-"},"content":" helpMessage.setText(HELP_MESSAGE);","lastModifiedDate":"2019-08-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-12-01"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-12-01"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public HelpWindow() {","lastModifiedDate":"2017-12-01"},{"lineNumber":44,"author":{"gitId":"-"},"content":" this(new Stage());","lastModifiedDate":"2017-12-01"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-01"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-01"},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Shows the help window.","lastModifiedDate":"2017-08-16"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * @throws IllegalStateException","lastModifiedDate":"2017-08-16"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * \u003cul\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * if this method is called on a thread other than the JavaFX Application Thread.","lastModifiedDate":"2017-08-16"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * if this method is called during animation or layout processing.","lastModifiedDate":"2017-08-16"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * if this method is called on the primary stage.","lastModifiedDate":"2017-08-16"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * if {@code dialogStage} is already showing.","lastModifiedDate":"2017-08-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * \u003c/ul\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void show() {","lastModifiedDate":"2016-08-18"},{"lineNumber":66,"author":{"gitId":"-"},"content":" logger.fine(\"Showing help page about the application.\");","lastModifiedDate":"2016-12-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":" getRoot().show();","lastModifiedDate":"2018-02-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" getRoot().centerOnScreen();","lastModifiedDate":"2019-08-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-15"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * Returns true if the help window is currently being shown.","lastModifiedDate":"2018-03-15"},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-15"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public boolean isShowing() {","lastModifiedDate":"2018-03-15"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return getRoot().isShowing();","lastModifiedDate":"2018-03-15"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Hides the help window.","lastModifiedDate":"2018-12-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void hide() {","lastModifiedDate":"2018-12-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":" getRoot().hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-15"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Focuses on the help window.","lastModifiedDate":"2018-03-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void focus() {","lastModifiedDate":"2018-03-15"},{"lineNumber":89,"author":{"gitId":"-"},"content":" getRoot().requestFocus();","lastModifiedDate":"2018-03-15"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-08-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-08-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Copies the URL to the user guide to the clipboard.","lastModifiedDate":"2019-08-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-08-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2019-08-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":" private void copyUrl() {","lastModifiedDate":"2019-08-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":" final Clipboard clipboard \u003d Clipboard.getSystemClipboard();","lastModifiedDate":"2019-08-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" final ClipboardContent url \u003d new ClipboardContent();","lastModifiedDate":"2019-08-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" url.putString(USERGUIDE_URL);","lastModifiedDate":"2019-08-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":" clipboard.setContent(url);","lastModifiedDate":"2019-08-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-08-19"},{"lineNumber":102,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"tengcharmaine":1,"-":101}},{"path":"src/main/java/seedu/address/ui/PersonCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Comparator;","lastModifiedDate":"2019-01-02"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-01-02"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-09-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2016-09-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2016-12-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2016-09-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * An UI component that displays information of a {@code Person}.","lastModifiedDate":"2017-08-16"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class PersonCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"PersonListCard.fxml\";","lastModifiedDate":"2016-09-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2017-03-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2017-03-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2017-03-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @see \u003ca href\u003d\"https://github.com/se-edu/addressbook-level4/issues/336\"\u003eThe issue on AddressBook level 4\u003c/a\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public final Person person;","lastModifiedDate":"2018-01-10"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private HBox cardPane;","lastModifiedDate":"2016-09-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Label name;","lastModifiedDate":"2016-09-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Label id;","lastModifiedDate":"2016-09-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private Label phone;","lastModifiedDate":"2016-09-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private Label address;","lastModifiedDate":"2016-09-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private Label email;","lastModifiedDate":"2016-09-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":42,"author":{"gitId":"tengcharmaine"},"content":" private Label note;","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"tengcharmaine"},"content":" @FXML","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"Jayne1010"},"content":" private Label age;","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"Jayne1010"},"content":" @FXML","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"Jayne1010"},"content":" private Label sex;","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"Jayne1010"},"content":" @FXML","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"Jayne1010"},"content":" private Label ic;","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"Jayne1010"},"content":" @FXML","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"-"},"content":" private FlowPane tags;","lastModifiedDate":"2016-12-18"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":52,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2020-05-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2018-01-10"},{"lineNumber":56,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2017-07-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21"},{"lineNumber":59,"author":{"gitId":"-"},"content":" name.setText(person.getName().fullName);","lastModifiedDate":"2017-12-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":" phone.setText(person.getPhone().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":" email.setText(person.getEmail().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":62,"author":{"gitId":"tengcharmaine"},"content":" note.setText(person.getNote().value);","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"Jayne1010"},"content":" ic.setText(person.getIdentityCardNumber().value);","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"Jayne1010"},"content":" age.setText(String.valueOf(person.getAge().value));","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"Jayne1010"},"content":" sex.setText(person.getSex().value);","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"Jayne1010"},"content":" address.setText(person.getAddress().value);","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"-"},"content":" person.getTags().stream()","lastModifiedDate":"2019-01-02"},{"lineNumber":68,"author":{"gitId":"-"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.tagName))","lastModifiedDate":"2019-01-02"},{"lineNumber":69,"author":{"gitId":"-"},"content":" .forEach(tag -\u003e tags.getChildren().add(new Label(tag.tagName)));","lastModifiedDate":"2019-01-02"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":71,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"Jayne1010":10,"tengcharmaine":3,"-":58}},{"path":"src/main/java/seedu/address/ui/UiManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.application.Platform;","lastModifiedDate":"2016-08-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Alert;","lastModifiedDate":"2016-08-18"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.Alert.AlertType;","lastModifiedDate":"2016-08-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2016-08-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.MainApp;","lastModifiedDate":"2016-08-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2016-09-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.Logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * The manager of the UI component.","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class UiManager implements Ui {","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String ALERT_DIALOG_PANE_FIELD_ID \u003d \"alertDialogPane\";","lastModifiedDate":"2017-04-01"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(UiManager.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":23,"author":{"gitId":"drustanyjt"},"content":" private static final String ICON_APPLICATION \u003d \"/images/clinic_mate_logo2_32.png\";","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private MainWindow mainWindow;","lastModifiedDate":"2016-08-18"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Creates a {@code UiManager} with the given {@code Logic}.","lastModifiedDate":"2020-05-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public UiManager(Logic logic) {","lastModifiedDate":"2018-12-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" this.logic \u003d logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public void start(Stage primaryStage) {","lastModifiedDate":"2016-09-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" logger.info(\"Starting UI...\");","lastModifiedDate":"2016-09-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":" //Set the application icon.","lastModifiedDate":"2016-08-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":" primaryStage.getIcons().add(getImage(ICON_APPLICATION));","lastModifiedDate":"2016-08-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":42,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-08-18"},{"lineNumber":43,"author":{"gitId":"-"},"content":" mainWindow \u003d new MainWindow(primaryStage, logic);","lastModifiedDate":"2018-12-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" mainWindow.show(); //This should be called before creating other UI parts","lastModifiedDate":"2016-08-18"},{"lineNumber":45,"author":{"gitId":"-"},"content":" mainWindow.fillInnerParts();","lastModifiedDate":"2016-08-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" } catch (Throwable e) {","lastModifiedDate":"2016-08-18"},{"lineNumber":48,"author":{"gitId":"-"},"content":" logger.severe(StringUtil.getDetails(e));","lastModifiedDate":"2016-09-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":" showFatalErrorDialogAndShutdown(\"Fatal error during initializing\", e);","lastModifiedDate":"2016-08-18"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":53,"author":{"gitId":"-"},"content":" private Image getImage(String imagePath) {","lastModifiedDate":"2016-08-18"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return new Image(MainApp.class.getResourceAsStream(imagePath));","lastModifiedDate":"2016-08-18"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":57,"author":{"gitId":"-"},"content":" void showAlertDialogAndWait(Alert.AlertType type, String title, String headerText, String contentText) {","lastModifiedDate":"2016-09-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" showAlertDialogAndWait(mainWindow.getPrimaryStage(), type, title, headerText, contentText);","lastModifiedDate":"2016-08-18"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Shows an alert dialog on {@code owner} with the given parameters.","lastModifiedDate":"2017-08-16"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * This method only returns after the user has closed the alert dialog.","lastModifiedDate":"2017-08-16"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":" private static void showAlertDialogAndWait(Stage owner, AlertType type, String title, String headerText,","lastModifiedDate":"2016-09-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":" String contentText) {","lastModifiedDate":"2016-08-18"},{"lineNumber":67,"author":{"gitId":"-"},"content":" final Alert alert \u003d new Alert(type);","lastModifiedDate":"2016-08-18"},{"lineNumber":68,"author":{"gitId":"-"},"content":" alert.getDialogPane().getStylesheets().add(\"view/DarkTheme.css\");","lastModifiedDate":"2016-08-20"},{"lineNumber":69,"author":{"gitId":"-"},"content":" alert.initOwner(owner);","lastModifiedDate":"2016-08-18"},{"lineNumber":70,"author":{"gitId":"-"},"content":" alert.setTitle(title);","lastModifiedDate":"2016-08-18"},{"lineNumber":71,"author":{"gitId":"-"},"content":" alert.setHeaderText(headerText);","lastModifiedDate":"2016-08-18"},{"lineNumber":72,"author":{"gitId":"-"},"content":" alert.setContentText(contentText);","lastModifiedDate":"2016-08-18"},{"lineNumber":73,"author":{"gitId":"-"},"content":" alert.getDialogPane().setId(ALERT_DIALOG_PANE_FIELD_ID);","lastModifiedDate":"2016-10-12"},{"lineNumber":74,"author":{"gitId":"-"},"content":" alert.showAndWait();","lastModifiedDate":"2016-08-18"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * Shows an error alert dialog with {@code title} and error message, {@code e},","lastModifiedDate":"2017-08-16"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * and exits the application after the user has closed the alert dialog.","lastModifiedDate":"2017-08-16"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":81,"author":{"gitId":"-"},"content":" private void showFatalErrorDialogAndShutdown(String title, Throwable e) {","lastModifiedDate":"2016-09-21"},{"lineNumber":82,"author":{"gitId":"-"},"content":" logger.severe(title + \" \" + e.getMessage() + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-21"},{"lineNumber":83,"author":{"gitId":"-"},"content":" showAlertDialogAndWait(Alert.AlertType.ERROR, title, e.getMessage(), e.toString());","lastModifiedDate":"2016-08-18"},{"lineNumber":84,"author":{"gitId":"-"},"content":" Platform.exit();","lastModifiedDate":"2016-08-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":" System.exit(1);","lastModifiedDate":"2016-08-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-25"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"drustanyjt":1,"-":87}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2016-08-26"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Menu?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuBar?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuItem?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.SplitPane?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":14,"author":{"gitId":"tengcharmaine"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":"\u003cfx:root type\u003d\"javafx.stage.Stage\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"","lastModifiedDate":"2023-07-27"},{"lineNumber":16,"author":{"gitId":"drustanyjt"},"content":" title\u003d\"ClinicMate\" minWidth\u003d\"450\" minHeight\u003d\"600\" onCloseRequest\u003d\"#handleExit\"\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cicons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":18,"author":{"gitId":"drustanyjt"},"content":" \u003cImage url\u003d\"@/images/clinic_mate_logo2_32.png\" /\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003c/icons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cscene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cScene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@DarkTheme.css\" /\u003e","lastModifiedDate":"2016-08-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@Extensions.css\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cVBox\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cMenuBar fx:id\u003d\"menuBar\" VBox.vgrow\u003d\"NEVER\"\u003e","lastModifiedDate":"2017-06-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"File\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003cMenuItem mnemonicParsing\u003d\"false\" onAction\u003d\"#handleExit\" text\u003d\"Exit\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"Help\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003cMenuItem fx:id\u003d\"helpMenuItem\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleHelp\" text\u003d\"Help\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003c/MenuBar\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"commandBoxPlaceholder\" styleClass\u003d\"pane-with-border\"\u003e","lastModifiedDate":"2017-05-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":41,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"resultDisplayPlaceholder\" styleClass\u003d\"pane-with-border\"","lastModifiedDate":"2017-05-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" minHeight\u003d\"100\" prefHeight\u003d\"100\" maxHeight\u003d\"100\"\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":46,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":50,"author":{"gitId":"tengcharmaine"},"content":" \u003cSplitPane orientation\u003d\"HORIZONTAL\" VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":51,"author":{"gitId":"tengcharmaine"},"content":" \u003cVBox fx:id\u003d\"personList\" styleClass\u003d\"pane-with-border\" VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"10\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"personListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\"/\u003e","lastModifiedDate":"2017-06-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":58,"author":{"gitId":"tengcharmaine"},"content":" \u003cStackPane fx:id\u003d\"patientDetails\" styleClass\u003d\"pane-with-border\" VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"tengcharmaine"},"content":" \u003cVBox alignment\u003d\"CENTER\"\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"tengcharmaine"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"tengcharmaine"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"tengcharmaine"},"content":" \u003c/SplitPane\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"tengcharmaine"},"content":" \u003cStackPane fx:id\u003d\"statusbarPlaceholder\" minHeight\u003d\"20\" prefHeight\u003d\"20\" maxHeight\u003d\"20\"","lastModifiedDate":"2024-03-22"},{"lineNumber":65,"author":{"gitId":"tengcharmaine"},"content":" VBox.vgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":68,"author":{"gitId":"-"},"content":" \u003c/scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":69,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-11-29"}],"authorContributionMap":{"drustanyjt":2,"tengcharmaine":10,"-":57}},{"path":"src/main/resources/view/PersonListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003cHBox id\u003d\"cardPane\" fx:id\u003d\"cardPane\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-07-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2017-03-28"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2017-03-28"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003c/Label\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"name\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2016-09-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003cFlowPane fx:id\u003d\"tags\" /\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":31,"author":{"gitId":"Jayne1010"},"content":" \u003cLabel fx:id\u003d\"ic\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$ic\" /\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"Jayne1010"},"content":" \u003cLabel fx:id\u003d\"age\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$age\" /\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"Jayne1010"},"content":" \u003cLabel fx:id\u003d\"sex\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$sex\" /\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"tengcharmaine"},"content":" \u003cLabel fx:id\u003d\"note\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$note\" /\u003e","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"Jayne1010":3,"tengcharmaine":1,"-":36}},{"path":"src/test/java/seedu/address/commons/util/AppUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.commons.util;","lastModifiedDate":"2016-09-30"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertNotNull;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class AppUtilTest {","lastModifiedDate":"2016-09-30"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":10,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-30"},{"lineNumber":11,"author":{"gitId":"-"},"content":" public void getImage_exitingImage() {","lastModifiedDate":"2016-09-30"},{"lineNumber":12,"author":{"gitId":"drustanyjt"},"content":" assertNotNull(AppUtil.getImage(\"/images/clinic_mate_logo2_32.png\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-30"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":15,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-30"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public void getImage_nullGiven_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":17,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e AppUtil.getImage(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-15"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public void checkArgument_true_nothingHappens() {","lastModifiedDate":"2017-05-15"},{"lineNumber":22,"author":{"gitId":"-"},"content":" AppUtil.checkArgument(true);","lastModifiedDate":"2017-05-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":" AppUtil.checkArgument(true, \"\");","lastModifiedDate":"2017-05-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-15"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void checkArgument_falseWithoutErrorMessage_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e AppUtil.checkArgument(false));","lastModifiedDate":"2019-03-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void checkArgument_falseWithErrorMessage_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":" String errorMessage \u003d \"error message\";","lastModifiedDate":"2017-05-15"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, errorMessage, () -\u003e AppUtil.checkArgument(false, errorMessage));","lastModifiedDate":"2019-03-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-30"}],"authorContributionMap":{"drustanyjt":1,"-":35}},{"path":"src/test/java/seedu/address/logic/LogicManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"jiahui0309"},"content":"import static seedu.address.logic.Messages.MESSAGE_NO_MATCHING_IC;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25"},{"lineNumber":18,"author":{"gitId":"drustanyjt"},"content":"import org.junit.jupiter.api.Disabled;","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2018-12-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2017-01-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2016-09-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-31"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-12-09"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-12-09"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2018-12-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2018-12-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-12-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":"public class LogicManagerTest {","lastModifiedDate":"2016-09-22"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_IO_EXCEPTION \u003d new IOException(\"dummy IO exception\");","lastModifiedDate":"2023-06-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_AD_EXCEPTION \u003d new AccessDeniedException(\"dummy access denied exception\");","lastModifiedDate":"2023-06-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public Path temporaryFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":44,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-20"},{"lineNumber":45,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2018-12-09"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2019-04-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d","lastModifiedDate":"2019-04-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(temporaryFolder.resolve(\"addressBook.json\"));","lastModifiedDate":"2019-04-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2019-04-25"},{"lineNumber":52,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2018-12-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void execute_invalidCommandFormat_throwsParseException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":58,"author":{"gitId":"-"},"content":" String invalidCommand \u003d \"uicfhmowqewca\";","lastModifiedDate":"2017-06-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertParseException(invalidCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-06-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-14"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void execute_commandExecutionError_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":64,"author":{"gitId":"jiahui0309"},"content":" String deleteCommand \u003d \"delete s1234567a\";","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"jiahui0309"},"content":" assertCommandException(deleteCommand, MESSAGE_NO_MATCHING_IC);","lastModifiedDate":"2024-03-16"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void execute_validCommand_success() throws Exception {","lastModifiedDate":"2019-03-14"},{"lineNumber":70,"author":{"gitId":"-"},"content":" String listCommand \u003d ListCommand.COMMAND_WORD;","lastModifiedDate":"2017-06-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertCommandSuccess(listCommand, ListCommand.MESSAGE_SUCCESS, model);","lastModifiedDate":"2017-06-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20"},{"lineNumber":74,"author":{"gitId":"drustanyjt"},"content":" @Disabled (\"Requires add command to be working properly\")","lastModifiedDate":"2024-03-16"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2019-04-25"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-06-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":81,"author":{"gitId":"drustanyjt"},"content":" @Disabled (\"Requires add command to be working properly\")","lastModifiedDate":"2024-03-16"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-06-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2023-06-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":93,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":99,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":100,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14"},{"lineNumber":101,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14"},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14"},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":107,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":108,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a ParseException is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":109,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":110,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":111,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11"},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":115,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14"},{"lineNumber":116,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a CommandException is thrown and that the result message is correct.","lastModifiedDate":"2017-06-14"},{"lineNumber":117,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":118,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":124,"author":{"gitId":"-"},"content":" * Executes the command, confirms that the exception is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":125,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":126,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":127,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":128,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14"},{"lineNumber":129,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-05-31"},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":133,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":134,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":135,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":136,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":137,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":138,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":139,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":140,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":141,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31"},{"lineNumber":142,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14"},{"lineNumber":143,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19"},{"lineNumber":146,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":147,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13"},{"lineNumber":148,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13"},{"lineNumber":149,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13"},{"lineNumber":150,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13"},{"lineNumber":151,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":152,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13"},{"lineNumber":153,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":155,"author":{"gitId":"-"},"content":" // Inject LogicManager with an AddressBookStorage that throws the IOException e when saving","lastModifiedDate":"2023-06-13"},{"lineNumber":156,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(prefPath) {","lastModifiedDate":"2023-06-13"},{"lineNumber":157,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":158,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath)","lastModifiedDate":"2023-06-13"},{"lineNumber":159,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13"},{"lineNumber":160,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13"},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":162,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":164,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":165,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13"},{"lineNumber":166,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2023-06-13"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":168,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":170,"author":{"gitId":"-"},"content":" // Triggers the saveAddressBook method by executing an add command","lastModifiedDate":"2023-06-13"},{"lineNumber":171,"author":{"gitId":"-"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2023-06-13"},{"lineNumber":172,"author":{"gitId":"-"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY;","lastModifiedDate":"2023-06-13"},{"lineNumber":173,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2023-06-13"},{"lineNumber":174,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13"},{"lineNumber":175,"author":{"gitId":"-"},"content":" expectedModel.addPerson(expectedPerson);","lastModifiedDate":"2023-06-13"},{"lineNumber":176,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13"},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":178,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"drustanyjt":3,"-":172,"jiahui0309":3}},{"path":"src/test/java/seedu/address/logic/commands/AddNoteCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"tengcharmaine"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"tengcharmaine"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"tengcharmaine"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"tengcharmaine"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"tengcharmaine"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NOTE_AMY;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"tengcharmaine"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NOTE_BOB;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"tengcharmaine"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"tengcharmaine"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.model.person.IdentityCardNumber;","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.model.person.IdentityCardNumberMatchesPredicate;","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.model.person.Note;","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"tengcharmaine"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"tengcharmaine"},"content":" * Contains integration tests (interaction with the Model) and unit tests for AddNoteCommand.","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"tengcharmaine"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"tengcharmaine"},"content":"public class AddNoteCommandTest {","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"tengcharmaine"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"tengcharmaine"},"content":" public void testReplaceNote() throws CommandException {","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"tengcharmaine"},"content":" // Setup","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"tengcharmaine"},"content":" Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"tengcharmaine"},"content":" Person person \u003d model.getFilteredPersonList().get(0);","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"tengcharmaine"},"content":" Note originalNote \u003d person.getNote();","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"tengcharmaine"},"content":" AddNoteCommand command \u003d new AddNoteCommand(","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"tengcharmaine"},"content":" new IdentityCardNumberMatchesPredicate(person.getIdentityCardNumber()),","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"tengcharmaine"},"content":" new Note(\"new note\"), true);","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"tengcharmaine"},"content":" // Action","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"tengcharmaine"},"content":" command.execute(model);","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"tengcharmaine"},"content":" // Verify","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"tengcharmaine"},"content":" assertEquals(originalNote.toString(), person.getNote().toString());","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"tengcharmaine"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"tengcharmaine"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"tengcharmaine"},"content":" public void generateSuccessMessage_noteAdded_successMessage() {","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"tengcharmaine"},"content":" Person personToEdit \u003d new PersonBuilder().withName(\"Alice\").withIdentityCardNumber(\"S1234567A\").build();","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"tengcharmaine"},"content":" String expectedMessage \u003d String.format(AddNoteCommand.MESSAGE_MODIFY_NOTE_SUCCESS,","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"tengcharmaine"},"content":" personToEdit.getName(), personToEdit.getIdentityCardNumber());","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"tengcharmaine"},"content":" assertEquals(expectedMessage, new AddNoteCommand(","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"tengcharmaine"},"content":" new IdentityCardNumberMatchesPredicate(personToEdit.getIdentityCardNumber()),","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"tengcharmaine"},"content":" new Note(\"new note\"), false).generateSuccessMessage(personToEdit));","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"tengcharmaine"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"tengcharmaine"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"tengcharmaine"},"content":" public void equals() {","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"tengcharmaine"},"content":" IdentityCardNumberMatchesPredicate firstPredicate \u003d","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"tengcharmaine"},"content":" new IdentityCardNumberMatchesPredicate(new IdentityCardNumber(\"S1234567A\"));","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"tengcharmaine"},"content":" IdentityCardNumberMatchesPredicate secondPredicate \u003d","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"tengcharmaine"},"content":" new IdentityCardNumberMatchesPredicate(new IdentityCardNumber(\"S9876543B\"));","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"tengcharmaine"},"content":" final AddNoteCommand standardCommand \u003d new AddNoteCommand(firstPredicate,","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"tengcharmaine"},"content":" new Note(VALID_NOTE_AMY), false);","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"tengcharmaine"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"tengcharmaine"},"content":" AddNoteCommand commandWithSameValues \u003d new AddNoteCommand(firstPredicate,","lastModifiedDate":"2024-03-16"},{"lineNumber":66,"author":{"gitId":"tengcharmaine"},"content":" new Note(VALID_NOTE_AMY), false);","lastModifiedDate":"2024-03-16"},{"lineNumber":67,"author":{"gitId":"tengcharmaine"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2024-03-16"},{"lineNumber":68,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"tengcharmaine"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"tengcharmaine"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"tengcharmaine"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"tengcharmaine"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":75,"author":{"gitId":"tengcharmaine"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":76,"author":{"gitId":"tengcharmaine"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2024-03-16"},{"lineNumber":77,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":78,"author":{"gitId":"tengcharmaine"},"content":" // different index -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":79,"author":{"gitId":"tengcharmaine"},"content":" assertFalse(standardCommand.equals(new AddNoteCommand(secondPredicate,","lastModifiedDate":"2024-03-16"},{"lineNumber":80,"author":{"gitId":"tengcharmaine"},"content":" new Note(VALID_NOTE_AMY), false)));","lastModifiedDate":"2024-03-16"},{"lineNumber":81,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":82,"author":{"gitId":"tengcharmaine"},"content":" // different remark -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":83,"author":{"gitId":"tengcharmaine"},"content":" assertFalse(standardCommand.equals(new AddNoteCommand(firstPredicate,","lastModifiedDate":"2024-03-16"},{"lineNumber":84,"author":{"gitId":"tengcharmaine"},"content":" new Note(VALID_NOTE_BOB), false)));","lastModifiedDate":"2024-03-16"},{"lineNumber":85,"author":{"gitId":"tengcharmaine"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":86,"author":{"gitId":"tengcharmaine"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"tengcharmaine":86}},{"path":"src/test/java/seedu/address/logic/commands/CommandTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"Jayne1010"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_AGE;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_IC_NUMBER;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SEX;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-06-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05"},{"lineNumber":24,"author":{"gitId":"Jayne1010"},"content":"import seedu.address.model.person.IdentityCardNumber;","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"Jayne1010"},"content":"import seedu.address.model.person.IdentityCardNumberMatchesPredicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-07-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-07-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_AMY \u003d \"11111111\";","lastModifiedDate":"2017-07-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_BOB \u003d \"22222222\";","lastModifiedDate":"2017-07-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":41,"author":{"gitId":"drustanyjt"},"content":" public static final String VALID_IDENTITY_CARD_NUMBER_AMY \u003d \"S1234567A\";","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"drustanyjt"},"content":" public static final String VALID_IDENTITY_CARD_NUMBER_BOB \u003d \"S1234567B\";","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"drustanyjt"},"content":" public static final Integer VALID_AGE_AMY \u003d 13;","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"drustanyjt"},"content":" public static final Integer VALID_AGE_BOB \u003d 54;","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"drustanyjt"},"content":" public static final String VALID_SEX_AMY \u003d \"F\";","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"drustanyjt"},"content":" public static final String VALID_SEX_BOB \u003d \"M\";","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_AMY \u003d \"Block 312, Amy Street 1\";","lastModifiedDate":"2017-07-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_BOB \u003d \"Block 123, Bobby Street 3\";","lastModifiedDate":"2017-07-05"},{"lineNumber":49,"author":{"gitId":"drustanyjt"},"content":" public static final String VALID_NOTE_AMY \u003d \"Hypertensive Crisis with last reading of 156/60\";","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"drustanyjt"},"content":" public static final String VALID_NOTE_BOB \u003d \"Prone to cardiac arrest, 3 times in the past 2 months\";","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_HUSBAND \u003d \"husband\";","lastModifiedDate":"2017-07-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_FRIEND \u003d \"friend\";","lastModifiedDate":"2017-07-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + PREFIX_TAG + VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + PREFIX_TAG + VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":64,"author":{"gitId":"Jayne1010"},"content":" public static final String IC_DESC_AMY \u003d \" \" + PREFIX_IC_NUMBER + VALID_IDENTITY_CARD_NUMBER_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"Jayne1010"},"content":" public static final String IC_DESC_BOB \u003d \" \" + PREFIX_IC_NUMBER + VALID_IDENTITY_CARD_NUMBER_BOB;","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"Jayne1010"},"content":" public static final String AGE_DESC_AMY \u003d \" \" + PREFIX_AGE + VALID_AGE_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"Jayne1010"},"content":" public static final String AGE_DESC_BOB \u003d \" \" + PREFIX_AGE + VALID_AGE_BOB;","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"Jayne1010"},"content":" public static final String SEX_DESC_AMY \u003d \" \" + PREFIX_SEX + VALID_SEX_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"Jayne1010"},"content":" public static final String SEX_DESC_BOB \u003d \" \" + PREFIX_SEX + VALID_AGE_BOB;","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public static final String INVALID_NAME_DESC \u003d \" \" + PREFIX_NAME + \"James\u0026\"; // \u0027\u0026\u0027 not allowed in names","lastModifiedDate":"2017-07-05"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public static final String INVALID_PHONE_DESC \u003d \" \" + PREFIX_PHONE + \"911a\"; // \u0027a\u0027 not allowed in phones","lastModifiedDate":"2017-07-05"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public static final String INVALID_ADDRESS_DESC \u003d \" \" + PREFIX_ADDRESS; // empty string not allowed for addresses","lastModifiedDate":"2017-07-05"},{"lineNumber":74,"author":{"gitId":"Jayne1010"},"content":" public static final String INVALID_SEX \u003d \" \" + PREFIX_SEX + \"Z\"; // Only \u0027M\u0027 and \u0027F\u0027 allowed in sex","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"Jayne1010"},"content":" public static final String INVALID_AGE \u003d \" \" + PREFIX_AGE + \"-15\"; // Negative age not allowed in age","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"Jayne1010"},"content":" public static final String INVALID_IC \u003d \" \" + PREFIX_IC_NUMBER + \"P379@\"; // @ not allowed in identification number","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public static final String INVALID_TAG_DESC \u003d \" \" + PREFIX_TAG + \"hubby*\"; // \u0027*\u0027 not allowed in tags","lastModifiedDate":"2017-07-05"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":85,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05"},{"lineNumber":86,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05"},{"lineNumber":87,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-07-05"},{"lineNumber":88,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05"},{"lineNumber":89,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05"},{"lineNumber":90,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2017-07-05"},{"lineNumber":91,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":94,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25"},{"lineNumber":98,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":99,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25"},{"lineNumber":100,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":101,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":102,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09"},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":105,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15"},{"lineNumber":106,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":110,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":111,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25"},{"lineNumber":112,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09"},{"lineNumber":113,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":114,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25"},{"lineNumber":115,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":116,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":120,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":121,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":122,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":123,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":124,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25"},{"lineNumber":125,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":126,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25"},{"lineNumber":127,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05"},{"lineNumber":128,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05"},{"lineNumber":129,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":130,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":132,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03"},{"lineNumber":133,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":134,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":136,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20"},{"lineNumber":137,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show only the person at the given {@code targetIndex} in the","lastModifiedDate":"2018-01-31"},{"lineNumber":138,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31"},{"lineNumber":139,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20"},{"lineNumber":140,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31"},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31"},{"lineNumber":143,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31"},{"lineNumber":144,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20"},{"lineNumber":145,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":147,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08"},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":150,"author":{"gitId":"Jayne1010"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":151,"author":{"gitId":"Jayne1010"},"content":" * Updates {@code model}\u0027s filtered list to show only the person with the given {@code icNumber} in the","lastModifiedDate":"2024-03-21"},{"lineNumber":152,"author":{"gitId":"Jayne1010"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2024-03-21"},{"lineNumber":153,"author":{"gitId":"Jayne1010"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":154,"author":{"gitId":"Jayne1010"},"content":" public static void showPersonWithIC(Model model, IdentityCardNumber icNumber) {","lastModifiedDate":"2024-03-21"},{"lineNumber":155,"author":{"gitId":"Jayne1010"},"content":" model.updateFilteredPersonList(new IdentityCardNumberMatchesPredicate(icNumber));","lastModifiedDate":"2024-03-21"},{"lineNumber":156,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":157,"author":{"gitId":"Jayne1010"},"content":" // Ensure that at least one person matches the IC number","lastModifiedDate":"2024-03-21"},{"lineNumber":158,"author":{"gitId":"Jayne1010"},"content":" assertFalse(model.getFilteredPersonList().isEmpty());","lastModifiedDate":"2024-03-21"},{"lineNumber":159,"author":{"gitId":"Jayne1010"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":160,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":161,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"Jayne1010":26,"drustanyjt":8,"-":127}},{"path":"src/test/java/seedu/address/logic/commands/DeleteCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-05"},{"lineNumber":17,"author":{"gitId":"jiahui0309"},"content":"import seedu.address.model.person.IdentityCardNumber;","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"jiahui0309"},"content":"import seedu.address.model.person.IdentityCardNumberMatchesPredicate;","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2020-12-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * {@code DeleteCommand}.","lastModifiedDate":"2018-01-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class DeleteCommandTest {","lastModifiedDate":"2017-06-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void execute_validIndexUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":31,"author":{"gitId":"-"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":32,"author":{"gitId":"jiahui0309"},"content":" IdentityCardNumber icToDelete \u003d personToDelete.getIdentityCardNumber();","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"jiahui0309"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(new IdentityCardNumberMatchesPredicate(icToDelete));","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2019-02-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2019-02-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void execute_validIndexFilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":47,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":50,"author":{"gitId":"jiahui0309"},"content":" IdentityCardNumber icToDelete \u003d personToDelete.getIdentityCardNumber();","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"jiahui0309"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(new IdentityCardNumberMatchesPredicate(icToDelete));","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":" showNoPerson(expectedModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":66,"author":{"gitId":"jiahui0309"},"content":" IdentityCardNumberMatchesPredicate firstPredicate \u003d","lastModifiedDate":"2024-03-16"},{"lineNumber":67,"author":{"gitId":"jiahui0309"},"content":" new IdentityCardNumberMatchesPredicate(new IdentityCardNumber(\"S1234567A\"));","lastModifiedDate":"2024-03-16"},{"lineNumber":68,"author":{"gitId":"jiahui0309"},"content":" IdentityCardNumberMatchesPredicate secondPredicate \u003d","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"jiahui0309"},"content":" new IdentityCardNumberMatchesPredicate(new IdentityCardNumber(\"S9876543B\"));","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"jiahui0309"},"content":" DeleteCommand deleteFirstCommand \u003d new DeleteCommand(firstPredicate);","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"jiahui0309"},"content":" DeleteCommand deleteSecondCommand \u003d new DeleteCommand(secondPredicate);","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":78,"author":{"gitId":"jiahui0309"},"content":" DeleteCommand deleteFirstCommandCopy \u003d new DeleteCommand(firstPredicate);","lastModifiedDate":"2024-03-16"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2017-06-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2017-06-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2017-06-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":93,"author":{"gitId":"jiahui0309"},"content":" IdentityCardNumberMatchesPredicate predicate \u003d new IdentityCardNumberMatchesPredicate(","lastModifiedDate":"2024-03-16"},{"lineNumber":94,"author":{"gitId":"jiahui0309"},"content":" new IdentityCardNumber(\"S1234567A\"));","lastModifiedDate":"2024-03-16"},{"lineNumber":95,"author":{"gitId":"jiahui0309"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(predicate);","lastModifiedDate":"2024-03-16"},{"lineNumber":96,"author":{"gitId":"jiahui0309"},"content":" String expected \u003d DeleteCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2024-03-16"},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertEquals(expected, deleteCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show no one.","lastModifiedDate":"2017-06-05"},{"lineNumber":102,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":103,"author":{"gitId":"-"},"content":" private void showNoPerson(Model model) {","lastModifiedDate":"2017-06-05"},{"lineNumber":104,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(p -\u003e false);","lastModifiedDate":"2017-06-12"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertTrue(model.getFilteredPersonList().isEmpty());","lastModifiedDate":"2018-02-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"-":90,"jiahui0309":18}},{"path":"src/test/java/seedu/address/logic/commands/EditCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.IC_DESC_BOB;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_IDENTITY_CARD_NUMBER_BOB;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":15,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonWithIC;","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.testutil.TypicalIdentityPredicate.IC_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.testutil.TypicalIdentityPredicate.IC_BOB;","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":22,"author":{"gitId":"drustanyjt"},"content":"import org.junit.jupiter.api.Disabled;","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-04"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-05-04"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-04"},{"lineNumber":31,"author":{"gitId":"Jayne1010"},"content":"import seedu.address.model.person.IdentityCardNumber;","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-04"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-22"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-04"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-04"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for EditCommand.","lastModifiedDate":"2020-12-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-04"},{"lineNumber":39,"author":{"gitId":"drustanyjt"},"content":"@Disabled(\"Requires edit Command to be implemented\")","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"-"},"content":"public class EditCommandTest {","lastModifiedDate":"2017-05-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":46,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-26"},{"lineNumber":47,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(editedPerson).build();","lastModifiedDate":"2017-06-05"},{"lineNumber":48,"author":{"gitId":"Jayne1010"},"content":" EditCommand editCommand \u003d new EditCommand(IC_AMY, descriptor);","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":52,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":60,"author":{"gitId":"Jayne1010"},"content":" Person lastPerson \u003d model.getAddressBook().getPersonList()","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"Jayne1010"},"content":" .get(model.getAddressBook().getPersonList().size() - 1);","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":63,"author":{"gitId":"-"},"content":" PersonBuilder personInList \u003d new PersonBuilder(lastPerson);","lastModifiedDate":"2017-05-18"},{"lineNumber":64,"author":{"gitId":"-"},"content":" Person editedPerson \u003d personInList.withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-18"},{"lineNumber":65,"author":{"gitId":"Jayne1010"},"content":" .withIdentityCardNumber(VALID_IDENTITY_CARD_NUMBER_BOB)","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":68,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-05-18"},{"lineNumber":69,"author":{"gitId":"Jayne1010"},"content":" .withIC(VALID_IDENTITY_CARD_NUMBER_BOB)","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18"},{"lineNumber":71,"author":{"gitId":"Jayne1010"},"content":" EditCommand editCommand \u003d new EditCommand(IC_BOB, descriptor);","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":73,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":75,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":76,"author":{"gitId":"-"},"content":" expectedModel.setPerson(lastPerson, editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":83,"author":{"gitId":"Jayne1010"},"content":" EditCommand editCommand \u003d new EditCommand(IC_AMY, new EditPersonDescriptor());","lastModifiedDate":"2024-03-21"},{"lineNumber":84,"author":{"gitId":"Jayne1010"},"content":" Person editedPerson \u003d new PersonBuilder(AMY).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":88,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":95,"author":{"gitId":"Jayne1010"},"content":" showPersonWithIC(model, new IdentityCardNumber(\"S0123456B\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":97,"author":{"gitId":"Jayne1010"},"content":" Person editedPerson \u003d new PersonBuilder(BOB).withName(VALID_NAME_BOB)","lastModifiedDate":"2024-03-21"},{"lineNumber":98,"author":{"gitId":"Jayne1010"},"content":" .withIdentityCardNumber(VALID_IDENTITY_CARD_NUMBER_BOB).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":99,"author":{"gitId":"Jayne1010"},"content":" EditCommand editCommand \u003d new EditCommand(IC_BOB,","lastModifiedDate":"2024-03-21"},{"lineNumber":100,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":102,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":104,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":105,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":111,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonUnfilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":112,"author":{"gitId":"Jayne1010"},"content":" Person firstPerson \u003d new PersonBuilder(BOB).withName(VALID_NAME_BOB)","lastModifiedDate":"2024-03-21"},{"lineNumber":113,"author":{"gitId":"Jayne1010"},"content":" .withIdentityCardNumber(VALID_IDENTITY_CARD_NUMBER_BOB).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":114,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(firstPerson).build();","lastModifiedDate":"2017-06-05"},{"lineNumber":115,"author":{"gitId":"Jayne1010"},"content":" EditCommand editCommand \u003d new EditCommand(IC_BOB, descriptor);","lastModifiedDate":"2024-03-21"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":120,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":121,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonFilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":122,"author":{"gitId":"Jayne1010"},"content":" showPersonWithIC(model, new IdentityCardNumber(\"S0123456B\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":124,"author":{"gitId":"-"},"content":" // edit person in filtered list into a duplicate in address book","lastModifiedDate":"2017-05-18"},{"lineNumber":125,"author":{"gitId":"Jayne1010"},"content":" Person personInList \u003d new PersonBuilder(BOB).withName(VALID_NAME_BOB)","lastModifiedDate":"2024-03-21"},{"lineNumber":126,"author":{"gitId":"Jayne1010"},"content":" .withIdentityCardNumber(VALID_IDENTITY_CARD_NUMBER_BOB).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":127,"author":{"gitId":"Jayne1010"},"content":" EditCommand editCommand \u003d new EditCommand(IC_BOB,","lastModifiedDate":"2024-03-21"},{"lineNumber":128,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder(personInList).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":133,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":135,"author":{"gitId":"Jayne1010"},"content":" final EditCommand standardCommand \u003d new EditCommand(IC_AMY, DESC_AMY);","lastModifiedDate":"2024-03-21"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":137,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":138,"author":{"gitId":"-"},"content":" EditPersonDescriptor copyDescriptor \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-08"},{"lineNumber":139,"author":{"gitId":"Jayne1010"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(IC_AMY, copyDescriptor);","lastModifiedDate":"2024-03-21"},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":142,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":143,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":145,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":148,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":149,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2017-05-08"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":151,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":152,"author":{"gitId":"Jayne1010"},"content":" assertFalse(standardCommand.equals(new EditCommand(IC_BOB, DESC_AMY)));","lastModifiedDate":"2024-03-21"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":154,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":155,"author":{"gitId":"Jayne1010"},"content":" assertFalse(standardCommand.equals(new EditCommand(IC_BOB, DESC_BOB)));","lastModifiedDate":"2024-03-21"},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":158,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23"},{"lineNumber":161,"author":{"gitId":"Jayne1010"},"content":" EditCommand editCommand \u003d new EditCommand(IC_BOB, editPersonDescriptor);","lastModifiedDate":"2024-03-21"},{"lineNumber":162,"author":{"gitId":"Jayne1010"},"content":" String expected \u003d EditCommand.class.getCanonicalName() + \"{ic\u003d\" + IC_DESC_BOB + \", editPersonDescriptor\u003d\"","lastModifiedDate":"2024-03-21"},{"lineNumber":163,"author":{"gitId":"-"},"content":" + editPersonDescriptor + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08"}],"authorContributionMap":{"Jayne1010":33,"drustanyjt":2,"-":131}},{"path":"src/test/java/seedu/address/logic/commands/EditPersonDescriptorTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorTest {","lastModifiedDate":"2017-05-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptorWithSameValues \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(descriptorWithSameValues));","lastModifiedDate":"2017-05-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(DESC_AMY));","lastModifiedDate":"2017-05-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(null));","lastModifiedDate":"2017-05-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(5));","lastModifiedDate":"2017-05-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(DESC_BOB));","lastModifiedDate":"2017-05-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" EditPersonDescriptor editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":" String expected \u003d EditPersonDescriptor.class.getCanonicalName() + \"{name\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getName().orElse(null) + \", phone\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getPhone().orElse(null) + \", email\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":66,"author":{"gitId":"Jayne1010"},"content":" + editPersonDescriptor.getEmail().orElse(null) + \", ic\u003d\"","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"Jayne1010"},"content":" + editPersonDescriptor.getIC().orElse(null) + \", age\u003d\"","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"Jayne1010"},"content":" + editPersonDescriptor.getAge().orElse(null) + \", sex\u003d\"","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"Jayne1010"},"content":" + editPersonDescriptor.getSex().orElse(null) + \", address\u003d\"","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getAddress().orElse(null) + \", tags\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getTags().orElse(null) + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertEquals(expected, editPersonDescriptor.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"Jayne1010":4,"-":70}},{"path":"src/test/java/seedu/address/logic/commands/FindCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_PERSONS_LISTED_OVERVIEW;","lastModifiedDate":"2023-07-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2018-08-08"},{"lineNumber":8,"author":{"gitId":"jiahui0309"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"jiahui0309"},"content":"import seedu.address.model.person.IdentityCardNumber;","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"jiahui0309"},"content":"import seedu.address.model.person.IdentityCardNumberMatchesPredicate;","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code FindCommand}.","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class FindCommandTest {","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2018-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-27"},{"lineNumber":31,"author":{"gitId":"jiahui0309"},"content":" IdentityCardNumberMatchesPredicate firstPredicate \u003d","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"jiahui0309"},"content":" new IdentityCardNumberMatchesPredicate(new IdentityCardNumber(\"S1234567A\"));","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"jiahui0309"},"content":" IdentityCardNumberMatchesPredicate secondPredicate \u003d","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"jiahui0309"},"content":" new IdentityCardNumberMatchesPredicate(new IdentityCardNumber(\"S9876543B\"));","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":" FindCommand findFirstCommand \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" FindCommand findSecondCommand \u003d new FindCommand(secondPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" FindCommand findFirstCommandCopy \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommandCopy));","lastModifiedDate":"2017-06-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(1));","lastModifiedDate":"2017-06-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(null));","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(findSecondCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":57,"author":{"gitId":"jiahui0309"},"content":" public void execute_validIC_singlePersonFound() {","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"jiahui0309"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 1);","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"jiahui0309"},"content":" IdentityCardNumberMatchesPredicate predicate \u003d preparePredicate(\"S1234567A\");","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":63,"author":{"gitId":"jiahui0309"},"content":" assertEquals(Collections.singletonList(ALICE), model.getFilteredPersonList());","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":68,"author":{"gitId":"jiahui0309"},"content":" IdentityCardNumberMatchesPredicate predicate \u003d new IdentityCardNumberMatchesPredicate(","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"jiahui0309"},"content":" new IdentityCardNumber(\"S1234567A\"));","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"-"},"content":" FindCommand findCommand \u003d new FindCommand(predicate);","lastModifiedDate":"2019-02-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" String expected \u003d FindCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertEquals(expected, findCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-12"},{"lineNumber":76,"author":{"gitId":"-"},"content":" * Parses {@code userInput} into a {@code NameContainsKeywordsPredicate}.","lastModifiedDate":"2018-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":78,"author":{"gitId":"jiahui0309"},"content":" private IdentityCardNumberMatchesPredicate preparePredicate(String userInput) {","lastModifiedDate":"2024-03-16"},{"lineNumber":79,"author":{"gitId":"jiahui0309"},"content":" return new IdentityCardNumberMatchesPredicate(new IdentityCardNumber(userInput));","lastModifiedDate":"2024-03-16"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":81,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"},{"lineNumber":82,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"-":65,"jiahui0309":17}},{"path":"src/test/java/seedu/address/logic/parser/AddCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-15"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.AGE_DESC_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.AGE_DESC_BOB;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.IC_DESC_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.IC_DESC_BOB;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_AGE;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_IC;","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_SEX;","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SEX_DESC_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SEX_DESC_BOB;","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_AGE;","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_IC;","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SEX;","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":43,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":44,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-07-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-07-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":47,"author":{"gitId":"drustanyjt"},"content":"import org.junit.jupiter.api.Disabled;","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":51,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-15"},{"lineNumber":52,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-06-15"},{"lineNumber":53,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-06-15"},{"lineNumber":54,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-06-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-06-15"},{"lineNumber":57,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-06-15"},{"lineNumber":58,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":60,"author":{"gitId":"drustanyjt"},"content":"@Disabled(\"Requires add Command to be implemented\")","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":62,"author":{"gitId":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2017-06-15"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":66,"author":{"gitId":"Jayne1010"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":68,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":70,"author":{"gitId":"Jayne1010"},"content":" + IC_DESC_BOB + AGE_DESC_BOB + SEX_DESC_BOB + ADDRESS_DESC_BOB, new AddCommand(expectedPerson));","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":73,"author":{"gitId":"-"},"content":" // multiple tags - all accepted","lastModifiedDate":"2017-06-15"},{"lineNumber":74,"author":{"gitId":"Jayne1010"},"content":" Person expectedPersonMultipleTags \u003d new PersonBuilder(BOB)","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-07-25"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":77,"author":{"gitId":"Jayne1010"},"content":" NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + IC_DESC_BOB","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"Jayne1010"},"content":" + AGE_DESC_BOB + SEX_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"-"},"content":" new AddCommand(expectedPersonMultipleTags));","lastModifiedDate":"2023-07-14"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":84,"author":{"gitId":"-"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-07-14"},{"lineNumber":85,"author":{"gitId":"-"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_FRIEND;","lastModifiedDate":"2023-07-14"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":87,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":89,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":91,"author":{"gitId":"-"},"content":" // multiple phones","lastModifiedDate":"2023-07-14"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":93,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":95,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14"},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":97,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":99,"author":{"gitId":"Jayne1010"},"content":" // multiple ic","lastModifiedDate":"2024-03-20"},{"lineNumber":100,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, IC_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-03-20"},{"lineNumber":101,"author":{"gitId":"Jayne1010"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_IC));","lastModifiedDate":"2024-03-20"},{"lineNumber":102,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":103,"author":{"gitId":"Jayne1010"},"content":" // multiple age","lastModifiedDate":"2024-03-20"},{"lineNumber":104,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, AGE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-03-20"},{"lineNumber":105,"author":{"gitId":"Jayne1010"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_AGE));","lastModifiedDate":"2024-03-20"},{"lineNumber":106,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":107,"author":{"gitId":"Jayne1010"},"content":" // multiple sex","lastModifiedDate":"2024-03-20"},{"lineNumber":108,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, SEX_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-03-20"},{"lineNumber":109,"author":{"gitId":"Jayne1010"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_SEX));","lastModifiedDate":"2024-03-20"},{"lineNumber":110,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":111,"author":{"gitId":"-"},"content":" // multiple addresses","lastModifiedDate":"2023-07-14"},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertParseFailure(parser, ADDRESS_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":113,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":115,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":116,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":117,"author":{"gitId":"-"},"content":" validExpectedPersonString + PHONE_DESC_AMY + EMAIL_DESC_AMY + NAME_DESC_AMY + ADDRESS_DESC_AMY","lastModifiedDate":"2023-07-14"},{"lineNumber":118,"author":{"gitId":"-"},"content":" + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_ADDRESS, PREFIX_EMAIL, PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":127,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":129,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":131,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":132,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_PHONE_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":133,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":135,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":136,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_ADDRESS_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":137,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":139,"author":{"gitId":"Jayne1010"},"content":" // invalid sex","lastModifiedDate":"2024-03-20"},{"lineNumber":140,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, INVALID_SEX + validExpectedPersonString,","lastModifiedDate":"2024-03-20"},{"lineNumber":141,"author":{"gitId":"Jayne1010"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_SEX));","lastModifiedDate":"2024-03-20"},{"lineNumber":142,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":143,"author":{"gitId":"Jayne1010"},"content":" // invalid age","lastModifiedDate":"2024-03-20"},{"lineNumber":144,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, INVALID_AGE + validExpectedPersonString,","lastModifiedDate":"2024-03-20"},{"lineNumber":145,"author":{"gitId":"Jayne1010"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_AGE));","lastModifiedDate":"2024-03-20"},{"lineNumber":146,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":147,"author":{"gitId":"Jayne1010"},"content":" // invalid ic","lastModifiedDate":"2024-03-20"},{"lineNumber":148,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, INVALID_IC + validExpectedPersonString,","lastModifiedDate":"2024-03-20"},{"lineNumber":149,"author":{"gitId":"Jayne1010"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_IC));","lastModifiedDate":"2024-03-20"},{"lineNumber":150,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":151,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":153,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":154,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":155,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":157,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":158,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":159,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":161,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":162,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_PHONE_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":163,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":165,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":166,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_ADDRESS_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":167,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":168,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":169,"author":{"gitId":"Jayne1010"},"content":" // invalid age","lastModifiedDate":"2024-03-20"},{"lineNumber":170,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_AGE,","lastModifiedDate":"2024-03-20"},{"lineNumber":171,"author":{"gitId":"Jayne1010"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_AGE));","lastModifiedDate":"2024-03-20"},{"lineNumber":172,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":173,"author":{"gitId":"Jayne1010"},"content":" // invalid sex","lastModifiedDate":"2024-03-20"},{"lineNumber":174,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_SEX,","lastModifiedDate":"2024-03-20"},{"lineNumber":175,"author":{"gitId":"Jayne1010"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_SEX));","lastModifiedDate":"2024-03-20"},{"lineNumber":176,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":177,"author":{"gitId":"Jayne1010"},"content":" // invalid ic","lastModifiedDate":"2024-03-20"},{"lineNumber":178,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_IC,","lastModifiedDate":"2024-03-20"},{"lineNumber":179,"author":{"gitId":"Jayne1010"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_IC));","lastModifiedDate":"2024-03-20"},{"lineNumber":180,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":182,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":183,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":184,"author":{"gitId":"-"},"content":" // zero tags","lastModifiedDate":"2017-06-15"},{"lineNumber":185,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2018-07-25"},{"lineNumber":186,"author":{"gitId":"Jayne1010"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY + IC_DESC_AMY","lastModifiedDate":"2024-03-20"},{"lineNumber":187,"author":{"gitId":"Jayne1010"},"content":" + AGE_DESC_AMY + SEX_DESC_AMY + ADDRESS_DESC_AMY,","lastModifiedDate":"2024-03-20"},{"lineNumber":188,"author":{"gitId":"-"},"content":" new AddCommand(expectedPerson));","lastModifiedDate":"2017-12-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":191,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":192,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":193,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":195,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":196,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":199,"author":{"gitId":"-"},"content":" // missing phone prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":200,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_PHONE_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":201,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":203,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":204,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":207,"author":{"gitId":"Jayne1010"},"content":" // missing age prefix","lastModifiedDate":"2024-03-20"},{"lineNumber":208,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2024-03-20"},{"lineNumber":209,"author":{"gitId":"Jayne1010"},"content":" expectedMessage);","lastModifiedDate":"2024-03-20"},{"lineNumber":210,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":211,"author":{"gitId":"Jayne1010"},"content":" // missing sex prefix","lastModifiedDate":"2024-03-20"},{"lineNumber":212,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2024-03-20"},{"lineNumber":213,"author":{"gitId":"Jayne1010"},"content":" expectedMessage);","lastModifiedDate":"2024-03-20"},{"lineNumber":214,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":215,"author":{"gitId":"Jayne1010"},"content":" // missing ic prefix","lastModifiedDate":"2024-03-20"},{"lineNumber":216,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2024-03-20"},{"lineNumber":217,"author":{"gitId":"Jayne1010"},"content":" expectedMessage);","lastModifiedDate":"2024-03-20"},{"lineNumber":218,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":219,"author":{"gitId":"-"},"content":" // missing address prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":220,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":221,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":223,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15"},{"lineNumber":224,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_PHONE_BOB + VALID_EMAIL_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":226,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":228,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":229,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":230,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15"},{"lineNumber":231,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-20"},{"lineNumber":232,"author":{"gitId":"Jayne1010"},"content":" + IC_DESC_BOB + AGE_DESC_BOB + SEX_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-20"},{"lineNumber":233,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":235,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15"},{"lineNumber":236,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_PHONE_DESC + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-20"},{"lineNumber":237,"author":{"gitId":"Jayne1010"},"content":" + IC_DESC_BOB + AGE_DESC_BOB + SEX_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-20"},{"lineNumber":238,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":240,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15"},{"lineNumber":241,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC","lastModifiedDate":"2024-03-20"},{"lineNumber":242,"author":{"gitId":"Jayne1010"},"content":" + IC_DESC_BOB + AGE_DESC_BOB + SEX_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-20"},{"lineNumber":243,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":244,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":245,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2017-06-15"},{"lineNumber":246,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-20"},{"lineNumber":247,"author":{"gitId":"Jayne1010"},"content":" + IC_DESC_BOB + AGE_DESC_BOB + SEX_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2024-03-20"},{"lineNumber":248,"author":{"gitId":"Jayne1010"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-20"},{"lineNumber":249,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":250,"author":{"gitId":"Jayne1010"},"content":" // invalid age","lastModifiedDate":"2024-03-20"},{"lineNumber":251,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-20"},{"lineNumber":252,"author":{"gitId":"Jayne1010"},"content":" + IC_DESC_BOB + INVALID_AGE + SEX_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-20"},{"lineNumber":253,"author":{"gitId":"Jayne1010"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-20"},{"lineNumber":254,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":255,"author":{"gitId":"Jayne1010"},"content":" // invalid sex","lastModifiedDate":"2024-03-20"},{"lineNumber":256,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-20"},{"lineNumber":257,"author":{"gitId":"Jayne1010"},"content":" + IC_DESC_BOB + AGE_DESC_BOB + INVALID_SEX + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-20"},{"lineNumber":258,"author":{"gitId":"Jayne1010"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-20"},{"lineNumber":259,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":260,"author":{"gitId":"Jayne1010"},"content":" // invalid ic","lastModifiedDate":"2024-03-20"},{"lineNumber":261,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-20"},{"lineNumber":262,"author":{"gitId":"Jayne1010"},"content":" + INVALID_IC + AGE_DESC_BOB + SEX_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-20"},{"lineNumber":263,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":265,"author":{"gitId":"-"},"content":" // invalid tag","lastModifiedDate":"2017-06-15"},{"lineNumber":266,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":267,"author":{"gitId":"-"},"content":" + INVALID_TAG_DESC + VALID_TAG_FRIEND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":268,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":269,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15"},{"lineNumber":270,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC,","lastModifiedDate":"2017-12-23"},{"lineNumber":271,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":273,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":274,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":275,"author":{"gitId":"-"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2017-12-23"},{"lineNumber":276,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-12-23"},{"lineNumber":277,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":278,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"Jayne1010":90,"drustanyjt":2,"-":186}},{"path":"src/test/java/seedu/address/logic/parser/AddNoteCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"tengcharmaine"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"tengcharmaine"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"tengcharmaine"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"tengcharmaine"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.logic.commands.AddNoteCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"tengcharmaine"},"content":"public class AddNoteCommandParserTest {","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"tengcharmaine"},"content":" private AddNoteCommandParser parser \u003d new AddNoteCommandParser();","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"tengcharmaine"},"content":" private final String nonEmptyNote \u003d \"Some note.\";","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"tengcharmaine"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"tengcharmaine"},"content":" public void parse_missingCompulsoryField_failure() {","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"tengcharmaine"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddNoteCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"tengcharmaine"},"content":" // no parameters","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"tengcharmaine"},"content":" assertParseFailure(parser, AddNoteCommand.COMMAND_WORD, expectedMessage);","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"tengcharmaine"},"content":" // no index","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"tengcharmaine"},"content":" assertParseFailure(parser, AddNoteCommand.COMMAND_WORD + \" \" + nonEmptyNote, expectedMessage);","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"tengcharmaine"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"tengcharmaine"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"tengcharmaine":24}},{"path":"src/test/java/seedu/address/logic/parser/AddressBookParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":7,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.AGE_DESC_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.IC_DESC_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SEX_DESC_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_AGE_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_IDENTITY_CARD_NUMBER_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SEX_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"tengcharmaine"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FLAG;","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"tengcharmaine"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_IC;","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"tengcharmaine"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NOTE;","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":26,"author":{"gitId":"drustanyjt"},"content":"import org.junit.jupiter.api.Disabled;","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.logic.commands.AddNoteCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-06-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24"},{"lineNumber":40,"author":{"gitId":"jiahui0309"},"content":"import seedu.address.model.person.IdentityCardNumber;","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"jiahui0309"},"content":"import seedu.address.model.person.IdentityCardNumberMatchesPredicate;","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.model.person.Note;","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-06-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonUtil;","lastModifiedDate":"2017-06-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":52,"author":{"gitId":"drustanyjt"},"content":" @Disabled(\"Requires add Command to be implemented\")","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(PersonUtil.getAddCommand(person));","lastModifiedDate":"2017-06-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertEquals(new AddCommand(person), command);","lastModifiedDate":"2017-06-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":68,"author":{"gitId":"jiahui0309"},"content":" String args \u003d \"s1234567a\";","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":70,"author":{"gitId":"jiahui0309"},"content":" DeleteCommand.COMMAND_WORD + \" \" + args);","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"jiahui0309"},"content":" assertEquals(new DeleteCommand(new IdentityCardNumberMatchesPredicate(","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"jiahui0309"},"content":" new IdentityCardNumber(args))), command);","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":77,"author":{"gitId":"Jayne1010"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2024-03-21"},{"lineNumber":78,"author":{"gitId":"Jayne1010"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withIC(VALID_IDENTITY_CARD_NUMBER_AMY)","lastModifiedDate":"2024-03-21"},{"lineNumber":79,"author":{"gitId":"Jayne1010"},"content":" .withSex(VALID_SEX_AMY).withAge(VALID_AGE_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"Jayne1010"},"content":" .build();","lastModifiedDate":"2024-03-21"},{"lineNumber":81,"author":{"gitId":"Jayne1010"},"content":" String userInput \u003d EditCommand.COMMAND_WORD + \" \" + VALID_IDENTITY_CARD_NUMBER_AMY","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"Jayne1010"},"content":" + NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2024-03-21"},{"lineNumber":83,"author":{"gitId":"Jayne1010"},"content":" + EMAIL_DESC_AMY + IC_DESC_AMY + AGE_DESC_AMY + SEX_DESC_AMY + ADDRESS_DESC_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":84,"author":{"gitId":"Jayne1010"},"content":" EditCommand expectedCommand \u003d new EditCommand(new IdentityCardNumberMatchesPredicate(","lastModifiedDate":"2024-03-21"},{"lineNumber":85,"author":{"gitId":"Jayne1010"},"content":" new IdentityCardNumber(VALID_IDENTITY_CARD_NUMBER_AMY)), descriptor);","lastModifiedDate":"2024-03-21"},{"lineNumber":86,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":87,"author":{"gitId":"Jayne1010"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(userInput);","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":89,"author":{"gitId":"Jayne1010"},"content":" assertEquals(expectedCommand, command);","lastModifiedDate":"2024-03-21"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":100,"author":{"gitId":"jiahui0309"},"content":" String args \u003d \"s1234567a\";","lastModifiedDate":"2024-03-16"},{"lineNumber":101,"author":{"gitId":"jiahui0309"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(FindCommand.COMMAND_WORD + \" \" + args);","lastModifiedDate":"2024-03-16"},{"lineNumber":102,"author":{"gitId":"jiahui0309"},"content":" assertEquals(new FindCommand(new IdentityCardNumberMatchesPredicate(new IdentityCardNumber(args))), command);","lastModifiedDate":"2024-03-16"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":106,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":112,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD) instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" 3\") instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":117,"author":{"gitId":"tengcharmaine"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":118,"author":{"gitId":"tengcharmaine"},"content":" public void parseCommand_addNote_withReplaceFlag() throws Exception {","lastModifiedDate":"2024-03-17"},{"lineNumber":119,"author":{"gitId":"tengcharmaine"},"content":" final Note note \u003d new Note(\"Some note.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":120,"author":{"gitId":"tengcharmaine"},"content":" AddNoteCommand command \u003d (AddNoteCommand) parser.parseCommand(AddNoteCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2024-03-17"},{"lineNumber":121,"author":{"gitId":"tengcharmaine"},"content":" + PREFIX_IC + \"S0123456Q \" + PREFIX_NOTE + note.value + \" \" + PREFIX_FLAG);","lastModifiedDate":"2024-03-17"},{"lineNumber":122,"author":{"gitId":"tengcharmaine"},"content":" assertEquals(new AddNoteCommand(new IdentityCardNumberMatchesPredicate(new IdentityCardNumber(\"S0123456Q\")),","lastModifiedDate":"2024-03-17"},{"lineNumber":123,"author":{"gitId":"tengcharmaine"},"content":" note, true), command);","lastModifiedDate":"2024-03-17"},{"lineNumber":124,"author":{"gitId":"tengcharmaine"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":125,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":126,"author":{"gitId":"tengcharmaine"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":127,"author":{"gitId":"tengcharmaine"},"content":" public void parseCommand_addNote_withoutReplaceFlag() throws Exception {","lastModifiedDate":"2024-03-17"},{"lineNumber":128,"author":{"gitId":"tengcharmaine"},"content":" final Note note \u003d new Note(\"Some note.\");","lastModifiedDate":"2024-03-16"},{"lineNumber":129,"author":{"gitId":"tengcharmaine"},"content":" AddNoteCommand command \u003d (AddNoteCommand) parser.parseCommand(AddNoteCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2024-03-16"},{"lineNumber":130,"author":{"gitId":"tengcharmaine"},"content":" + PREFIX_IC + \"S0123456Q \" + PREFIX_NOTE + note.value);","lastModifiedDate":"2024-03-16"},{"lineNumber":131,"author":{"gitId":"tengcharmaine"},"content":" assertEquals(new AddNoteCommand(new IdentityCardNumberMatchesPredicate(new IdentityCardNumber(\"S0123456Q\")),","lastModifiedDate":"2024-03-16"},{"lineNumber":132,"author":{"gitId":"tengcharmaine"},"content":" note, false), command);","lastModifiedDate":"2024-03-16"},{"lineNumber":133,"author":{"gitId":"tengcharmaine"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":134,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":136,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":141,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":142,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":145,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"Jayne1010":27,"drustanyjt":2,"tengcharmaine":23,"-":84,"jiahui0309":9}},{"path":"src/test/java/seedu/address/logic/parser/DeleteCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-09"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-06-09"},{"lineNumber":10,"author":{"gitId":"jiahui0309"},"content":"import seedu.address.model.person.IdentityCardNumber;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"jiahui0309"},"content":"import seedu.address.model.person.IdentityCardNumberMatchesPredicate;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * As we are only doing white-box testing, our test cases do not cover path variations","lastModifiedDate":"2017-06-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * outside of the DeleteCommand code. For example, inputs \"1\" and \"1 abc\" take the","lastModifiedDate":"2017-06-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * same path through the DeleteCommand, and therefore we test only one of them.","lastModifiedDate":"2017-06-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * The path variation for those two cases occur inside the ParserUtil, and","lastModifiedDate":"2017-06-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * therefore should be covered by the ParserUtilTest.","lastModifiedDate":"2017-06-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class DeleteCommandParserTest {","lastModifiedDate":"2017-06-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private DeleteCommandParser parser \u003d new DeleteCommandParser();","lastModifiedDate":"2017-06-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void parse_validArgs_returnsDeleteCommand() {","lastModifiedDate":"2017-08-15"},{"lineNumber":26,"author":{"gitId":"jiahui0309"},"content":" DeleteCommand expectedDeleteCommand \u003d new DeleteCommand(new IdentityCardNumberMatchesPredicate(","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"jiahui0309"},"content":" new IdentityCardNumber(\"S1234567A\")));","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"jiahui0309"},"content":" assertParseSuccess(parser, \"S1234567A\", expectedDeleteCommand);","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":33,"author":{"gitId":"jiahui0309"},"content":" // IC with incorrect format","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"jiahui0309"},"content":" assertParseFailure(parser, \"S1234\", String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"jiahui0309"},"content":" // IC with incorrect format and additional arguments","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"jiahui0309"},"content":" assertParseFailure(parser, \"S1234 extra\", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"jiahui0309"},"content":" DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"jiahui0309"},"content":" // IC with correct format but contains non-alphanumeric characters","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"jiahui0309"},"content":" assertParseFailure(parser, \"S1234$%^\", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"jiahui0309"},"content":" DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09"},{"lineNumber":44,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-09"}],"authorContributionMap":{"-":29,"jiahui0309":15}},{"path":"src/test/java/seedu/address/logic/parser/EditCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-04"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":6,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.AGE_DESC_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.IC_DESC_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":17,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SEX_DESC_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":19,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_AGE_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":21,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_IDENTITY_CARD_NUMBER_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_IDENTITY_CARD_NUMBER_BOB;","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":25,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SEX_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":32,"author":{"gitId":"Jayne1010"},"content":"import org.junit.jupiter.api.Disabled;","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-05-04"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-04"},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-05-04"},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-04"},{"lineNumber":40,"author":{"gitId":"Jayne1010"},"content":"import seedu.address.model.person.IdentityCardNumber;","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"Jayne1010"},"content":"import seedu.address.model.person.IdentityCardNumberMatchesPredicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-04"},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-04"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":46,"author":{"gitId":"Jayne1010"},"content":"@Disabled(\"Boo\")","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":"public class EditCommandParserTest {","lastModifiedDate":"2017-05-04"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":49,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2017-05-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-05-04"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":52,"author":{"gitId":"Jayne1010"},"content":" private static final String IC_INVALID \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"Jayne1010"},"content":" String.format(IdentityCardNumber.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" private EditCommandParser parser \u003d new EditCommandParser();","lastModifiedDate":"2017-05-04"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":60,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":61,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, \"S0123456A\", EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":63,"author":{"gitId":"-"},"content":" // no index and no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2017-06-06"},{"lineNumber":69,"author":{"gitId":"Jayne1010"},"content":" // too short string","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, \"S09\" + NAME_DESC_AMY, IC_INVALID);","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":72,"author":{"gitId":"Jayne1010"},"content":" // Wrong format","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, \"P0123456A\" + NAME_DESC_AMY, IC_INVALID);","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06"},{"lineNumber":75,"author":{"gitId":"-"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2017-06-06"},{"lineNumber":76,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, \"some random string\", IC_INVALID);","lastModifiedDate":"2024-03-21"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06"},{"lineNumber":78,"author":{"gitId":"-"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2017-06-06"},{"lineNumber":79,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, \"1 i/ string\", IC_INVALID);","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":84,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, \"S0123456A\" + INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2024-03-21"},{"lineNumber":85,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, \"S0123456A\" + INVALID_PHONE_DESC,","lastModifiedDate":"2024-03-21"},{"lineNumber":86,"author":{"gitId":"Jayne1010"},"content":" Phone.MESSAGE_CONSTRAINTS); // invalid phone","lastModifiedDate":"2024-03-17"},{"lineNumber":87,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, \"S0123456A\" + INVALID_EMAIL_DESC, Email.MESSAGE_CONSTRAINTS); // invalid email","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, \"S0123456A\" + INVALID_ADDRESS_DESC, Address.MESSAGE_CONSTRAINTS); // invalid address","lastModifiedDate":"2024-03-21"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":90,"author":{"gitId":"-"},"content":" // invalid phone followed by valid email","lastModifiedDate":"2017-05-04"},{"lineNumber":91,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, \"S0123456A\" + INVALID_PHONE_DESC + EMAIL_DESC_AMY,","lastModifiedDate":"2024-03-21"},{"lineNumber":92,"author":{"gitId":"Jayne1010"},"content":" Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":94,"author":{"gitId":"-"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2017-05-04"},{"lineNumber":95,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, \"S0123456A\" + INVALID_NAME_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2024-03-21"},{"lineNumber":96,"author":{"gitId":"Jayne1010"},"content":" + VALID_ADDRESS_AMY + VALID_PHONE_AMY,","lastModifiedDate":"2024-03-21"},{"lineNumber":97,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":100,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":101,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":102,"author":{"gitId":"Jayne1010"},"content":" String userInput \u003d VALID_IDENTITY_CARD_NUMBER_AMY + NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2024-03-21"},{"lineNumber":103,"author":{"gitId":"Jayne1010"},"content":" + EMAIL_DESC_AMY + IC_DESC_AMY + AGE_DESC_AMY + SEX_DESC_AMY + ADDRESS_DESC_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":104,"author":{"gitId":"Jayne1010"},"content":" IdentityCardNumberMatchesPredicate ic \u003d new IdentityCardNumberMatchesPredicate(","lastModifiedDate":"2024-03-21"},{"lineNumber":105,"author":{"gitId":"Jayne1010"},"content":" new IdentityCardNumber(VALID_IDENTITY_CARD_NUMBER_AMY));","lastModifiedDate":"2024-03-21"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":107,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-05-04"},{"lineNumber":108,"author":{"gitId":"Jayne1010"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withIC(VALID_IDENTITY_CARD_NUMBER_AMY)","lastModifiedDate":"2024-03-21"},{"lineNumber":109,"author":{"gitId":"Jayne1010"},"content":" .withSex(VALID_SEX_AMY).withAge(VALID_AGE_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2024-03-21"},{"lineNumber":110,"author":{"gitId":"Jayne1010"},"content":" .build();","lastModifiedDate":"2024-03-21"},{"lineNumber":111,"author":{"gitId":"Jayne1010"},"content":" EditCommand expectedCommand \u003d new EditCommand(ic, descriptor);","lastModifiedDate":"2024-03-21"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":117,"author":{"gitId":"-"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":118,"author":{"gitId":"Jayne1010"},"content":" String userInput \u003d VALID_IDENTITY_CARD_NUMBER_AMY + NAME_DESC_AMY + PHONE_DESC_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":119,"author":{"gitId":"Jayne1010"},"content":" IdentityCardNumberMatchesPredicate ic \u003d new IdentityCardNumberMatchesPredicate(","lastModifiedDate":"2024-03-21"},{"lineNumber":120,"author":{"gitId":"Jayne1010"},"content":" new IdentityCardNumber(VALID_IDENTITY_CARD_NUMBER_AMY));","lastModifiedDate":"2024-03-21"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":122,"author":{"gitId":"Jayne1010"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2024-03-21"},{"lineNumber":123,"author":{"gitId":"Jayne1010"},"content":" .withPhone(VALID_PHONE_AMY).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":124,"author":{"gitId":"Jayne1010"},"content":" EditCommand expectedCommand \u003d new EditCommand(ic, descriptor);","lastModifiedDate":"2024-03-21"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":129,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":130,"author":{"gitId":"-"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":131,"author":{"gitId":"Jayne1010"},"content":" IdentityCardNumberMatchesPredicate ic \u003d new IdentityCardNumberMatchesPredicate(","lastModifiedDate":"2024-03-21"},{"lineNumber":132,"author":{"gitId":"Jayne1010"},"content":" new IdentityCardNumber(VALID_IDENTITY_CARD_NUMBER_AMY));","lastModifiedDate":"2024-03-21"},{"lineNumber":133,"author":{"gitId":"-"},"content":" // name","lastModifiedDate":"2017-05-04"},{"lineNumber":134,"author":{"gitId":"Jayne1010"},"content":" String userInput \u003d VALID_IDENTITY_CARD_NUMBER_AMY + NAME_DESC_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":135,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":136,"author":{"gitId":"Jayne1010"},"content":" EditCommand expectedCommand \u003d new EditCommand(ic, descriptor);","lastModifiedDate":"2024-03-21"},{"lineNumber":137,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":139,"author":{"gitId":"-"},"content":" // phone","lastModifiedDate":"2017-05-04"},{"lineNumber":140,"author":{"gitId":"Jayne1010"},"content":" userInput \u003d VALID_IDENTITY_CARD_NUMBER_AMY + PHONE_DESC_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":141,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":142,"author":{"gitId":"Jayne1010"},"content":" expectedCommand \u003d new EditCommand(ic, descriptor);","lastModifiedDate":"2024-03-21"},{"lineNumber":143,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":145,"author":{"gitId":"-"},"content":" // email","lastModifiedDate":"2017-05-04"},{"lineNumber":146,"author":{"gitId":"Jayne1010"},"content":" userInput \u003d VALID_IDENTITY_CARD_NUMBER_AMY + EMAIL_DESC_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":147,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":148,"author":{"gitId":"Jayne1010"},"content":" expectedCommand \u003d new EditCommand(ic, descriptor);","lastModifiedDate":"2024-03-21"},{"lineNumber":149,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":151,"author":{"gitId":"Jayne1010"},"content":" // sex","lastModifiedDate":"2024-03-21"},{"lineNumber":152,"author":{"gitId":"Jayne1010"},"content":" userInput \u003d VALID_IDENTITY_CARD_NUMBER_AMY + SEX_DESC_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":153,"author":{"gitId":"Jayne1010"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withSex(VALID_SEX_AMY).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":154,"author":{"gitId":"Jayne1010"},"content":" expectedCommand \u003d new EditCommand(ic, descriptor);","lastModifiedDate":"2024-03-21"},{"lineNumber":155,"author":{"gitId":"Jayne1010"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-21"},{"lineNumber":156,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":157,"author":{"gitId":"Jayne1010"},"content":" // age","lastModifiedDate":"2024-03-21"},{"lineNumber":158,"author":{"gitId":"Jayne1010"},"content":" userInput \u003d VALID_IDENTITY_CARD_NUMBER_AMY + AGE_DESC_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":159,"author":{"gitId":"Jayne1010"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withAge(VALID_AGE_AMY).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":160,"author":{"gitId":"Jayne1010"},"content":" expectedCommand \u003d new EditCommand(ic, descriptor);","lastModifiedDate":"2024-03-21"},{"lineNumber":161,"author":{"gitId":"Jayne1010"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-21"},{"lineNumber":162,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":163,"author":{"gitId":"Jayne1010"},"content":" // IC number","lastModifiedDate":"2024-03-21"},{"lineNumber":164,"author":{"gitId":"Jayne1010"},"content":" userInput \u003d VALID_IDENTITY_CARD_NUMBER_AMY + IC_DESC_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":165,"author":{"gitId":"Jayne1010"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withIC(VALID_IDENTITY_CARD_NUMBER_AMY).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":166,"author":{"gitId":"Jayne1010"},"content":" expectedCommand \u003d new EditCommand(ic, descriptor);","lastModifiedDate":"2024-03-21"},{"lineNumber":167,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":169,"author":{"gitId":"Jayne1010"},"content":" // address","lastModifiedDate":"2024-03-21"},{"lineNumber":170,"author":{"gitId":"Jayne1010"},"content":" userInput \u003d VALID_IDENTITY_CARD_NUMBER_AMY + ADDRESS_DESC_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":171,"author":{"gitId":"Jayne1010"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withAddress(VALID_ADDRESS_AMY).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":172,"author":{"gitId":"Jayne1010"},"content":" expectedCommand \u003d new EditCommand(ic, descriptor);","lastModifiedDate":"2024-03-21"},{"lineNumber":173,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":176,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":177,"author":{"gitId":"-"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":178,"author":{"gitId":"-"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2023-07-14"},{"lineNumber":179,"author":{"gitId":"-"},"content":" // AddCommandParserTest#parse_repeatedNonTagValue_failure()","lastModifiedDate":"2023-07-14"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":181,"author":{"gitId":"-"},"content":" // valid followed by invalid","lastModifiedDate":"2023-07-14"},{"lineNumber":182,"author":{"gitId":"Jayne1010"},"content":" String userInput \u003d VALID_IDENTITY_CARD_NUMBER_BOB + PHONE_DESC_BOB + INVALID_PHONE_DESC;","lastModifiedDate":"2024-03-21"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":184,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":186,"author":{"gitId":"-"},"content":" // invalid followed by valid","lastModifiedDate":"2023-07-14"},{"lineNumber":187,"author":{"gitId":"Jayne1010"},"content":" userInput \u003d VALID_IDENTITY_CARD_NUMBER_AMY + INVALID_PHONE_DESC + PHONE_DESC_BOB;","lastModifiedDate":"2024-03-21"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":189,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":191,"author":{"gitId":"Jayne1010"},"content":" // multiple valid fields repeated","lastModifiedDate":"2024-03-21"},{"lineNumber":192,"author":{"gitId":"Jayne1010"},"content":" userInput \u003d VALID_IDENTITY_CARD_NUMBER_BOB + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2024-03-21"},{"lineNumber":193,"author":{"gitId":"Jayne1010"},"content":" + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2024-03-21"},{"lineNumber":194,"author":{"gitId":"Jayne1010"},"content":" + PHONE_DESC_BOB + ADDRESS_DESC_BOB + EMAIL_DESC_BOB;","lastModifiedDate":"2024-03-21"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":196,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":197,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":199,"author":{"gitId":"-"},"content":" // multiple invalid values","lastModifiedDate":"2023-07-14"},{"lineNumber":200,"author":{"gitId":"Jayne1010"},"content":" userInput \u003d VALID_IDENTITY_CARD_NUMBER_BOB + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2024-03-21"},{"lineNumber":201,"author":{"gitId":"-"},"content":" + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC;","lastModifiedDate":"2023-07-14"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":203,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":204,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":205,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":206,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-04"}],"authorContributionMap":{"Jayne1010":79,"-":127}},{"path":"src/test/java/seedu/address/logic/parser/FindCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-27"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":6,"author":{"gitId":"jiahui0309"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":11,"author":{"gitId":"jiahui0309"},"content":"import seedu.address.model.person.IdentityCardNumber;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"jiahui0309"},"content":"import seedu.address.model.person.IdentityCardNumberMatchesPredicate;","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class FindCommandParserTest {","lastModifiedDate":"2017-06-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":" private FindCommandParser parser \u003d new FindCommandParser();","lastModifiedDate":"2017-06-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public void parse_emptyArg_throwsParseException() {","lastModifiedDate":"2017-06-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \" \", String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-07-06"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void parse_validArgs_returnsFindCommand() {","lastModifiedDate":"2017-08-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" FindCommand expectedFindCommand \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"jiahui0309"},"content":" new FindCommand(new IdentityCardNumberMatchesPredicate(new IdentityCardNumber(\"S1234567A\")));","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"jiahui0309"},"content":" assertParseSuccess(parser, \"S1234567A\", expectedFindCommand);","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" // multiple whitespaces between keywords","lastModifiedDate":"2017-06-27"},{"lineNumber":30,"author":{"gitId":"jiahui0309"},"content":" assertParseSuccess(parser, \" \\n\"","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"jiahui0309"},"content":" + \" S1234567A \\n\"","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"jiahui0309"},"content":" + \" \\t \\t\", expectedFindCommand);","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"jiahui0309"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"jiahui0309"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"jiahui0309"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"jiahui0309"},"content":" // IC with incorrect format","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"jiahui0309"},"content":" assertParseFailure(parser, \"S1234\", IdentityCardNumber.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"jiahui0309"},"content":" // IC with incorrect format and additional arguments","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"jiahui0309"},"content":" assertParseFailure(parser, \"S1234 extra\", IdentityCardNumber.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"jiahui0309"},"content":" // IC with correct format but contains non-alphanumeric characters","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"jiahui0309"},"content":" assertParseFailure(parser, \"S1234$%^\", IdentityCardNumber.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"jiahui0309"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"jiahui0309"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"jiahui0309"},"content":" public void parse_nullArgs_throwsNullPointerException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"jiahui0309"},"content":" assertThrows(NullPointerException.class, () -\u003e parser.parse(null));","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-27"}],"authorContributionMap":{"-":27,"jiahui0309":25}},{"path":"src/test/java/seedu/address/logic/parser/ParserUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.ParserUtil.MESSAGE_INVALID_INDEX;","lastModifiedDate":"2017-06-02"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-05-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-05-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-05-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-05-22"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-22"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-22"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-22"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-22"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class ParserUtilTest {","lastModifiedDate":"2017-05-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2017-05-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2017-05-22"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2017-05-22"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2017-05-22"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2017-05-22"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d \"Rachel Walker\";","lastModifiedDate":"2017-05-22"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d \"123456\";","lastModifiedDate":"2017-05-22"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d \"123 Main Street #0505\";","lastModifiedDate":"2017-05-22"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d \"rachel@example.com\";","lastModifiedDate":"2017-05-22"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_1 \u003d \"friend\";","lastModifiedDate":"2017-05-22"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_2 \u003d \"neighbour\";","lastModifiedDate":"2017-05-22"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final String WHITESPACE \u003d \" \\t\\r\\n\";","lastModifiedDate":"2017-05-29"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void parseIndex_invalidInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseIndex(\"10 a\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void parseIndex_outOfRangeInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_INVALID_INDEX, ()","lastModifiedDate":"2019-03-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" -\u003e ParserUtil.parseIndex(Long.toString(Integer.MAX_VALUE + 1)));","lastModifiedDate":"2019-03-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void parseIndex_validInput_success() throws Exception {","lastModifiedDate":"2017-05-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // No whitespaces","lastModifiedDate":"2017-05-26"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\"1\"));","lastModifiedDate":"2017-05-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // Leading and trailing whitespaces","lastModifiedDate":"2017-05-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\" 1 \"));","lastModifiedDate":"2017-05-25"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void parseName_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseName((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void parseName_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseName(INVALID_NAME));","lastModifiedDate":"2019-03-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void parseName_validValueWithoutWhitespace_returnsName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":71,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-22"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(VALID_NAME));","lastModifiedDate":"2017-05-29"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-29"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void parseName_validValueWithWhitespace_returnsTrimmedName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":77,"author":{"gitId":"-"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_NAME + WHITESPACE;","lastModifiedDate":"2017-05-29"},{"lineNumber":78,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-29"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(nameWithWhitespace));","lastModifiedDate":"2017-05-29"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void parsePhone_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parsePhone((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void parsePhone_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parsePhone(INVALID_PHONE));","lastModifiedDate":"2019-03-14"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithoutWhitespace_returnsPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":94,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-22"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(VALID_PHONE));","lastModifiedDate":"2017-05-30"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":99,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithWhitespace_returnsTrimmedPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":100,"author":{"gitId":"-"},"content":" String phoneWithWhitespace \u003d WHITESPACE + VALID_PHONE + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":101,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-30"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(phoneWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":106,"author":{"gitId":"-"},"content":" public void parseAddress_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseAddress((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":111,"author":{"gitId":"-"},"content":" public void parseAddress_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseAddress(INVALID_ADDRESS));","lastModifiedDate":"2019-03-14"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":116,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithoutWhitespace_returnsAddress() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":117,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-22"},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(VALID_ADDRESS));","lastModifiedDate":"2017-05-30"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":122,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithWhitespace_returnsTrimmedAddress() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":123,"author":{"gitId":"-"},"content":" String addressWithWhitespace \u003d WHITESPACE + VALID_ADDRESS + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":124,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-30"},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(addressWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":129,"author":{"gitId":"-"},"content":" public void parseEmail_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseEmail((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":133,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":134,"author":{"gitId":"-"},"content":" public void parseEmail_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":135,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseEmail(INVALID_EMAIL));","lastModifiedDate":"2019-03-14"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":138,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":139,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithoutWhitespace_returnsEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":140,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-22"},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(VALID_EMAIL));","lastModifiedDate":"2017-05-30"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":144,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":145,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithWhitespace_returnsTrimmedEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":146,"author":{"gitId":"-"},"content":" String emailWithWhitespace \u003d WHITESPACE + VALID_EMAIL + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":147,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-30"},{"lineNumber":148,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(emailWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":151,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":152,"author":{"gitId":"-"},"content":" public void parseTag_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTag(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":156,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":157,"author":{"gitId":"-"},"content":" public void parseTag_invalidValue_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTag(INVALID_TAG));","lastModifiedDate":"2019-03-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":161,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":162,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithoutWhitespace_returnsTag() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":163,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30"},{"lineNumber":164,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(VALID_TAG_1));","lastModifiedDate":"2017-05-30"},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":167,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":168,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithWhitespace_returnsTrimmedTag() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":169,"author":{"gitId":"-"},"content":" String tagWithWhitespace \u003d WHITESPACE + VALID_TAG_1 + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":170,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30"},{"lineNumber":171,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(tagWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":174,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":175,"author":{"gitId":"-"},"content":" public void parseTags_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTags(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":179,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":180,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithInvalidTags_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, INVALID_TAG)));","lastModifiedDate":"2019-03-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":184,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":185,"author":{"gitId":"-"},"content":" public void parseTags_emptyCollection_returnsEmptySet() throws Exception {","lastModifiedDate":"2017-05-22"},{"lineNumber":186,"author":{"gitId":"-"},"content":" assertTrue(ParserUtil.parseTags(Collections.emptyList()).isEmpty());","lastModifiedDate":"2017-05-22"},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":189,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":190,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithValidTags_returnsTagSet() throws Exception {","lastModifiedDate":"2017-05-22"},{"lineNumber":191,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e actualTagSet \u003d ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, VALID_TAG_2));","lastModifiedDate":"2017-05-22"},{"lineNumber":192,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e expectedTagSet \u003d new HashSet\u003cTag\u003e(Arrays.asList(new Tag(VALID_TAG_1), new Tag(VALID_TAG_2)));","lastModifiedDate":"2017-05-22"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":194,"author":{"gitId":"-"},"content":" assertEquals(expectedTagSet, actualTagSet);","lastModifiedDate":"2017-05-22"},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":196,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-22"},{"lineNumber":197,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"Jayne1010":1,"-":196}},{"path":"src/test/java/seedu/address/model/person/AgeTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"drustanyjt"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"drustanyjt"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"drustanyjt"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"drustanyjt"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"drustanyjt"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"drustanyjt"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"drustanyjt"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"drustanyjt"},"content":"public class AgeTest {","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"drustanyjt"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"drustanyjt"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"drustanyjt"},"content":" assertThrows(NullPointerException.class, () -\u003e new Age(null));","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"drustanyjt"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"drustanyjt"},"content":" public void constructor_invalidAge_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"drustanyjt"},"content":" String invalidAge \u003d \"\";","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"drustanyjt"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Age(invalidAge));","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"drustanyjt"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"drustanyjt"},"content":" public void isValidAge() {","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"drustanyjt"},"content":" // null age","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"drustanyjt"},"content":" assertThrows(NullPointerException.class, () -\u003e Age.isValidAge(null));","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"drustanyjt"},"content":" // invalid age","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"drustanyjt"},"content":" assertFalse(Age.isValidAge(\"\")); // empty string","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"drustanyjt"},"content":" assertFalse(Age.isValidAge(\" \")); // spaces only","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"drustanyjt"},"content":" assertFalse(Age.isValidAge(\"age\")); // non-numeric","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"drustanyjt"},"content":" assertFalse(Age.isValidAge(\"-1\")); // negative number","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"drustanyjt"},"content":" // valid age","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"drustanyjt"},"content":" assertTrue(Age.isValidAge(\"1\")); // one number","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"drustanyjt"},"content":" assertTrue(Age.isValidAge(\"12\")); // two numbers","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"drustanyjt"},"content":" assertTrue(Age.isValidAge(\"123\")); // three numbers","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"drustanyjt"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"drustanyjt"},"content":" public void equals() {","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"drustanyjt"},"content":" Age age \u003d new Age(\"123\");","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"drustanyjt"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"drustanyjt"},"content":" assertTrue(age.equals(new Age(\"123\")));","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"drustanyjt"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"drustanyjt"},"content":" assertTrue(age.equals(age));","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"drustanyjt"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"drustanyjt"},"content":" assertFalse(age.equals(null));","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"drustanyjt"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"drustanyjt"},"content":" assertFalse(age.equals(5.0f));","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"drustanyjt"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"drustanyjt"},"content":" assertFalse(age.equals(new Age(\"321\")));","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"drustanyjt"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"drustanyjt"},"content":" public void hash() {","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"drustanyjt"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"drustanyjt"},"content":" Age ageCopy \u003d new Age(\"123\");","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"drustanyjt"},"content":" assertEquals(ageCopy.hashCode(), ageCopy.hashCode());","lastModifiedDate":"2024-03-16"},{"lineNumber":66,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":67,"author":{"gitId":"drustanyjt"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":68,"author":{"gitId":"drustanyjt"},"content":" Age age \u003d new Age(\"123\");","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"drustanyjt"},"content":" assertEquals(age.hashCode(), age.hashCode());","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"drustanyjt"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"drustanyjt"},"content":" Age differentAge \u003d new Age(\"321\");","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"drustanyjt"},"content":" assertNotEquals(age.hashCode(), differentAge.hashCode());","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":75,"author":{"gitId":"drustanyjt"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"drustanyjt":75}},{"path":"src/test/java/seedu/address/model/person/IdentityCardNumberTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"drustanyjt"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"drustanyjt"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"drustanyjt"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"drustanyjt"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"drustanyjt"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"drustanyjt"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"drustanyjt"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"drustanyjt"},"content":"public class IdentityCardNumberTest {","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"drustanyjt"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"drustanyjt"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"drustanyjt"},"content":" assertThrows(NullPointerException.class, () -\u003e new IdentityCardNumber(null));","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"drustanyjt"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"drustanyjt"},"content":" public void constructor_invalidIdentityCardNumber_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"drustanyjt"},"content":" String invalidIdentityCardNumber \u003d \"\";","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"drustanyjt"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new IdentityCardNumber(invalidIdentityCardNumber));","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"drustanyjt"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"drustanyjt"},"content":" public void isValidIdentityCardNumber() {","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"drustanyjt"},"content":" // null identity card number","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"drustanyjt"},"content":" assertThrows(NullPointerException.class, () -\u003e IdentityCardNumber.isValidIdentityCardNumber(null));","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"drustanyjt"},"content":" // invalid identity card number","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"drustanyjt"},"content":" assertFalse(IdentityCardNumber.isValidIdentityCardNumber(\"\")); // empty string","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"drustanyjt"},"content":" assertFalse(IdentityCardNumber.isValidIdentityCardNumber(\" \")); // spaces only","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"drustanyjt"},"content":" assertFalse(IdentityCardNumber.isValidIdentityCardNumber(\"1234abc\")); // alphanumeric","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"drustanyjt"},"content":" assertFalse(IdentityCardNumber.isValidIdentityCardNumber(\"1234 5678\")); // spaces within digits","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"drustanyjt"},"content":" // valid identity card number","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"drustanyjt"},"content":" assertTrue(IdentityCardNumber.isValidIdentityCardNumber(\"S1234567A\")); // starts with S","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"drustanyjt"},"content":" assertTrue(IdentityCardNumber.isValidIdentityCardNumber(\"T1234567A\")); // starts with T","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"drustanyjt"},"content":" assertTrue(IdentityCardNumber.isValidIdentityCardNumber(\"F1234567A\")); // starts with F","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"drustanyjt"},"content":" assertTrue(IdentityCardNumber.isValidIdentityCardNumber(\"G1234567A\")); // starts with G","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"drustanyjt"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"drustanyjt"},"content":" public void equals() {","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"drustanyjt"},"content":" // remember the format is [STFG][0-9]{7}[A-Z]","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"drustanyjt"},"content":" IdentityCardNumber identityCardNumber \u003d new IdentityCardNumber(\"S1234567A\");","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"drustanyjt"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"drustanyjt"},"content":" IdentityCardNumber identityCardNumberCopy \u003d new IdentityCardNumber(\"S1234567A\");","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"drustanyjt"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"drustanyjt"},"content":" assertTrue(identityCardNumber.equals(identityCardNumber));","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"drustanyjt"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"drustanyjt"},"content":" assertFalse(identityCardNumber.equals(null));","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"drustanyjt"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"drustanyjt"},"content":" assertFalse(identityCardNumber.equals(5.0f));","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"drustanyjt"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"drustanyjt"},"content":" assertFalse(identityCardNumber.equals(new IdentityCardNumber(\"T1234567A\")));","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"drustanyjt"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"drustanyjt"},"content":" public void hash() {","lastModifiedDate":"2024-03-16"},{"lineNumber":66,"author":{"gitId":"drustanyjt"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":67,"author":{"gitId":"drustanyjt"},"content":" IdentityCardNumber identityCardNumber \u003d new IdentityCardNumber(\"S1234567A\");","lastModifiedDate":"2024-03-16"},{"lineNumber":68,"author":{"gitId":"drustanyjt"},"content":" assertEquals(identityCardNumber.hashCode(), identityCardNumber.hashCode());","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"drustanyjt"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"drustanyjt"},"content":" IdentityCardNumber identityCardNumberCopy \u003d new IdentityCardNumber(\"S1234567A\");","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"drustanyjt"},"content":" assertEquals(identityCardNumber.hashCode(), identityCardNumberCopy.hashCode());","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"drustanyjt"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":75,"author":{"gitId":"drustanyjt"},"content":" assertNotEquals(identityCardNumber.hashCode(), new IdentityCardNumber(\"T1234567A\").hashCode());","lastModifiedDate":"2024-03-16"},{"lineNumber":76,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":77,"author":{"gitId":"drustanyjt"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"drustanyjt":77}},{"path":"src/test/java/seedu/address/model/person/NoteTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"tengcharmaine"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"tengcharmaine"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"tengcharmaine"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"tengcharmaine"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"tengcharmaine"},"content":"public class NoteTest {","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"tengcharmaine"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"tengcharmaine"},"content":" public void equals() {","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"tengcharmaine"},"content":" Note remark \u003d new Note(\"Hello\");","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"tengcharmaine"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"tengcharmaine"},"content":" assertTrue(remark.equals(remark));","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"tengcharmaine"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"tengcharmaine"},"content":" Note remarkCopy \u003d new Note(remark.value);","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"tengcharmaine"},"content":" assertTrue(remark.equals(remarkCopy));","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"tengcharmaine"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"tengcharmaine"},"content":" assertFalse(remark.equals(1));","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"tengcharmaine"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"tengcharmaine"},"content":" assertFalse(remark.equals(null));","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"tengcharmaine"},"content":" // different remark -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"tengcharmaine"},"content":" Note differentRemark \u003d new Note(\"Bye\");","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"tengcharmaine"},"content":" assertFalse(remark.equals(differentRemark));","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"tengcharmaine"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"tengcharmaine"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"tengcharmaine":31}},{"path":"src/test/java/seedu/address/model/person/PersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2018-03-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"drustanyjt"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-04-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-04-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-03-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class PersonTest {","lastModifiedDate":"2018-03-26"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void asObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":24,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2018-03-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e person.getTags().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void isSamePerson() {","lastModifiedDate":"2018-04-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(ALICE));","lastModifiedDate":"2018-04-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(null));","lastModifiedDate":"2018-04-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":" // same name, all other attributes different -\u003e returns true","lastModifiedDate":"2020-12-18"},{"lineNumber":37,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2020-12-18"},{"lineNumber":38,"author":{"gitId":"-"},"content":" .withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2020-12-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2020-12-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":41,"author":{"gitId":"jiahui0309"},"content":" // different name, all other attributes same -\u003e returns true","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":43,"author":{"gitId":"jiahui0309"},"content":" assertTrue(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":45,"author":{"gitId":"jiahui0309"},"content":" // name differs in case, all other attributes same -\u003e returns true","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":" Person editedBob \u003d new PersonBuilder(BOB).withName(VALID_NAME_BOB.toLowerCase()).build();","lastModifiedDate":"2020-12-18"},{"lineNumber":47,"author":{"gitId":"jiahui0309"},"content":" assertTrue(BOB.isSamePerson(editedBob));","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":49,"author":{"gitId":"jiahui0309"},"content":" // name has trailing spaces, all other attributes same -\u003e returns true","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"-"},"content":" String nameWithTrailingSpaces \u003d VALID_NAME_BOB + \" \";","lastModifiedDate":"2020-12-18"},{"lineNumber":51,"author":{"gitId":"-"},"content":" editedBob \u003d new PersonBuilder(BOB).withName(nameWithTrailingSpaces).build();","lastModifiedDate":"2020-12-18"},{"lineNumber":52,"author":{"gitId":"jiahui0309"},"content":" assertTrue(BOB.isSamePerson(editedBob));","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" Person aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2018-04-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2018-04-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":64,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(null));","lastModifiedDate":"2018-04-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":67,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2018-04-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2018-04-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":77,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":81,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":85,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2018-04-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2018-04-18"},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-18"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":94,"author":{"gitId":"drustanyjt"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":95,"author":{"gitId":"drustanyjt"},"content":" public void hash() {","lastModifiedDate":"2024-03-16"},{"lineNumber":96,"author":{"gitId":"drustanyjt"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":97,"author":{"gitId":"drustanyjt"},"content":" Person aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":98,"author":{"gitId":"drustanyjt"},"content":" assertEquals(ALICE.hashCode(), aliceCopy.hashCode());","lastModifiedDate":"2024-03-16"},{"lineNumber":99,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":100,"author":{"gitId":"drustanyjt"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":101,"author":{"gitId":"drustanyjt"},"content":" Person bobCopy \u003d new PersonBuilder(BOB).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":102,"author":{"gitId":"drustanyjt"},"content":" assertEquals(BOB.hashCode(), bobCopy.hashCode());","lastModifiedDate":"2024-03-16"},{"lineNumber":103,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":104,"author":{"gitId":"drustanyjt"},"content":" // different name -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":105,"author":{"gitId":"drustanyjt"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":106,"author":{"gitId":"drustanyjt"},"content":" assertNotEquals(ALICE.hashCode(), editedAlice.hashCode());","lastModifiedDate":"2024-03-16"},{"lineNumber":107,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":108,"author":{"gitId":"drustanyjt"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":109,"author":{"gitId":"drustanyjt"},"content":" Person editedAlice2 \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":110,"author":{"gitId":"drustanyjt"},"content":" assertNotEquals(ALICE.hashCode(), editedAlice2.hashCode());","lastModifiedDate":"2024-03-16"},{"lineNumber":111,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":112,"author":{"gitId":"drustanyjt"},"content":" // different email -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":113,"author":{"gitId":"drustanyjt"},"content":" Person editedAlice3 \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":114,"author":{"gitId":"drustanyjt"},"content":" assertNotEquals(ALICE.hashCode(), editedAlice3.hashCode());","lastModifiedDate":"2024-03-16"},{"lineNumber":115,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":116,"author":{"gitId":"drustanyjt"},"content":" // different address -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":117,"author":{"gitId":"drustanyjt"},"content":" Person editedAlice4 \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":118,"author":{"gitId":"drustanyjt"},"content":" assertNotEquals(ALICE.hashCode(), editedAlice4.hashCode());","lastModifiedDate":"2024-03-16"},{"lineNumber":119,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":120,"author":{"gitId":"drustanyjt"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":121,"author":{"gitId":"drustanyjt"},"content":" Person editedAlice5 \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":122,"author":{"gitId":"drustanyjt"},"content":" assertNotEquals(ALICE.hashCode(), editedAlice5.hashCode());","lastModifiedDate":"2024-03-16"},{"lineNumber":123,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":124,"author":{"gitId":"drustanyjt"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":125,"author":{"gitId":"drustanyjt"},"content":" assertNotEquals(ALICE.hashCode(), BOB.hashCode());","lastModifiedDate":"2024-03-16"},{"lineNumber":126,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":127,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":" String expected \u003d Person.class.getCanonicalName() + \"{name\u003d\" + ALICE.getName() + \", phone\u003d\" + ALICE.getPhone()","lastModifiedDate":"2019-02-23"},{"lineNumber":131,"author":{"gitId":"drustanyjt"},"content":" + \", email\u003d\" + ALICE.getEmail() + \", identityCardNumber\u003d\" + ALICE.getIdentityCardNumber()","lastModifiedDate":"2024-03-16"},{"lineNumber":132,"author":{"gitId":"drustanyjt"},"content":" + \", age\u003d\" + ALICE.getAge() + \", sex\u003d\" + ALICE.getSex() + \", address\u003d\" + ALICE.getAddress()","lastModifiedDate":"2024-03-16"},{"lineNumber":133,"author":{"gitId":"drustanyjt"},"content":" + \", note\u003d\" + ALICE.getNote() + \", tags\u003d\" + ALICE.getTags() + \"}\";","lastModifiedDate":"2024-03-16"},{"lineNumber":134,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"drustanyjt":38,"-":92,"jiahui0309":6}},{"path":"src/test/java/seedu/address/model/person/SexTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"drustanyjt"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"drustanyjt"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"drustanyjt"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"drustanyjt"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"drustanyjt"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"drustanyjt"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"drustanyjt"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"drustanyjt"},"content":"public class SexTest {","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"drustanyjt"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"drustanyjt"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"drustanyjt"},"content":" assertThrows(NullPointerException.class, () -\u003e new Sex(null));","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"drustanyjt"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"drustanyjt"},"content":" public void constructor_invalidSex_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"drustanyjt"},"content":" String invalidSex \u003d \"\";","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"drustanyjt"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Sex(invalidSex));","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"drustanyjt"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"drustanyjt"},"content":" public void isValidSex() {","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"drustanyjt"},"content":" // null sex","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"drustanyjt"},"content":" assertThrows(NullPointerException.class, () -\u003e Sex.isValidSex(null));","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"drustanyjt"},"content":" // invalid sex","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"drustanyjt"},"content":" assertFalse(Sex.isValidSex(\"\")); // empty string","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"drustanyjt"},"content":" assertFalse(Sex.isValidSex(\" \")); // spaces only","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"drustanyjt"},"content":" assertFalse(Sex.isValidSex(\"^\")); // only non-alphanumeric characters","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"drustanyjt"},"content":" assertFalse(Sex.isValidSex(\"peter*\")); // contains non-alphanumeric characters","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"drustanyjt"},"content":" // valid sex","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"drustanyjt"},"content":" assertTrue(Sex.isValidSex(\"M\")); // one character","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"drustanyjt"},"content":" assertTrue(Sex.isValidSex(\"F\")); // one character","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"drustanyjt"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"drustanyjt"},"content":" public void equals() {","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"drustanyjt"},"content":" Sex sex \u003d new Sex(\"M\");","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"drustanyjt"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"drustanyjt"},"content":" assertEquals(sex, new Sex(\"M\"));","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"drustanyjt"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"drustanyjt"},"content":" assertEquals(sex, sex);","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"drustanyjt"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"drustanyjt"},"content":" assertNotEquals(null, sex);","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"drustanyjt"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"drustanyjt"},"content":" assertFalse(sex.equals(5.0f));","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"drustanyjt"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"drustanyjt"},"content":" assertFalse(sex.equals(new Sex(\"F\")));","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"drustanyjt"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"drustanyjt"},"content":" public void hash() {","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"drustanyjt"},"content":" Sex sexMale \u003d new Sex(\"M\");","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"drustanyjt"},"content":" Sex sexMaleCopy \u003d new Sex(\"M\");","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"drustanyjt"},"content":" Sex sexFemale \u003d new Sex(\"F\");","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":66,"author":{"gitId":"drustanyjt"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":67,"author":{"gitId":"drustanyjt"},"content":" assertEquals(sexMale.hashCode(), sexMaleCopy.hashCode());","lastModifiedDate":"2024-03-16"},{"lineNumber":68,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"drustanyjt"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"drustanyjt"},"content":" assertNotEquals(sexMale.hashCode(), sexFemale.hashCode());","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"drustanyjt"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"drustanyjt":72}},{"path":"src/test/java/seedu/address/model/util/SampleDataUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"drustanyjt"},"content":"package seedu.address.model.util;","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":3,"author":{"gitId":"drustanyjt"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-22"},{"lineNumber":4,"author":{"gitId":"drustanyjt"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-22"},{"lineNumber":5,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":6,"author":{"gitId":"drustanyjt"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-22"},{"lineNumber":7,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":8,"author":{"gitId":"drustanyjt"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-22"},{"lineNumber":9,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"drustanyjt"},"content":"public class SampleDataUtilTest {","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"drustanyjt"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"drustanyjt"},"content":" public void getSamplePersonsTest() {","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"drustanyjt"},"content":" Person[] samplePersons \u003d SampleDataUtil.getSamplePersons();","lastModifiedDate":"2024-03-22"},{"lineNumber":15,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"drustanyjt"},"content":" // Test the number of sample persons","lastModifiedDate":"2024-03-22"},{"lineNumber":17,"author":{"gitId":"drustanyjt"},"content":" assertTrue(samplePersons.length \u003e 0);","lastModifiedDate":"2024-03-22"},{"lineNumber":18,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":20,"author":{"gitId":"drustanyjt"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":21,"author":{"gitId":"drustanyjt"},"content":" public void getSampleAddressBookTest() {","lastModifiedDate":"2024-03-22"},{"lineNumber":22,"author":{"gitId":"drustanyjt"},"content":" assertEquals(SampleDataUtil.getSampleAddressBook().getPersonList().size(), 6);","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":24,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"drustanyjt"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":26,"author":{"gitId":"drustanyjt"},"content":" public void getEmptyTagSetTest() {","lastModifiedDate":"2024-03-22"},{"lineNumber":27,"author":{"gitId":"drustanyjt"},"content":" assertEquals(SampleDataUtil.getEmptyTagSet().size(), 0);","lastModifiedDate":"2024-03-22"},{"lineNumber":28,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":29,"author":{"gitId":"drustanyjt"},"content":"}","lastModifiedDate":"2024-03-22"}],"authorContributionMap":{"drustanyjt":29}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedPersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.storage.JsonAdaptedPerson.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"drustanyjt"},"content":"import seedu.address.model.person.Age;","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"drustanyjt"},"content":"import seedu.address.model.person.IdentityCardNumber;","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"drustanyjt"},"content":"import seedu.address.model.person.Note;","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"drustanyjt"},"content":"import seedu.address.model.person.Sex;","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class JsonAdaptedPersonTest {","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"drustanyjt"},"content":" private static final String INVALID_IDENTITY_CARD_NUMBER \u003d \"Q1234567A\";","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"drustanyjt"},"content":" private static final Integer INVALID_AGE \u003d -12;","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"drustanyjt"},"content":" private static final String INVALID_SEX \u003d \"G\";","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"drustanyjt"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d BENSON.getPhone().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"drustanyjt"},"content":" private static final String VALID_IDENTITY_CARD_NUMBER \u003d BENSON.getIdentityCardNumber().toString();","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"drustanyjt"},"content":" private static final Integer VALID_AGE \u003d BENSON.getAge().value;","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"drustanyjt"},"content":" private static final String VALID_SEX \u003d BENSON.getSex().value;","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d BENSON.getAddress().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"drustanyjt"},"content":" private static final String VALID_NOTE \u003d BENSON.getNote().toString();","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"-"},"content":" private static final List\u003cJsonAdaptedTag\u003e VALID_TAGS \u003d BENSON.getTags().stream()","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public void toModelType_validPersonDetails_returnsPerson() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(BENSON);","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertEquals(BENSON, person.toModelType());","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"drustanyjt"},"content":" new JsonAdaptedPerson(INVALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_IDENTITY_CARD_NUMBER, VALID_AGE,","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"drustanyjt"},"content":" VALID_SEX, VALID_ADDRESS, VALID_NOTE, VALID_TAGS);","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"drustanyjt"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(null, VALID_PHONE, VALID_EMAIL, VALID_IDENTITY_CARD_NUMBER,","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"drustanyjt"},"content":" VALID_AGE, VALID_SEX, VALID_ADDRESS, VALID_NOTE, VALID_TAGS);","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void toModelType_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"drustanyjt"},"content":" new JsonAdaptedPerson(VALID_NAME, INVALID_PHONE, VALID_EMAIL, VALID_IDENTITY_CARD_NUMBER, VALID_AGE,","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"drustanyjt"},"content":" VALID_SEX, VALID_ADDRESS, VALID_NOTE, VALID_TAGS);","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Phone.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public void toModelType_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":80,"author":{"gitId":"drustanyjt"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, null, VALID_EMAIL, VALID_IDENTITY_CARD_NUMBER,","lastModifiedDate":"2024-03-16"},{"lineNumber":81,"author":{"gitId":"drustanyjt"},"content":" VALID_AGE, VALID_SEX, VALID_ADDRESS, VALID_NOTE, VALID_TAGS);","lastModifiedDate":"2024-03-16"},{"lineNumber":82,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"drustanyjt"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, INVALID_EMAIL, VALID_IDENTITY_CARD_NUMBER, VALID_AGE,","lastModifiedDate":"2024-03-16"},{"lineNumber":90,"author":{"gitId":"drustanyjt"},"content":" VALID_SEX, VALID_ADDRESS, VALID_NOTE, VALID_TAGS);","lastModifiedDate":"2024-03-16"},{"lineNumber":91,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"drustanyjt"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, null,","lastModifiedDate":"2024-03-16"},{"lineNumber":98,"author":{"gitId":"drustanyjt"},"content":" VALID_IDENTITY_CARD_NUMBER, VALID_AGE, VALID_SEX, VALID_ADDRESS, VALID_NOTE, VALID_TAGS);","lastModifiedDate":"2024-03-16"},{"lineNumber":99,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":103,"author":{"gitId":"drustanyjt"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":104,"author":{"gitId":"drustanyjt"},"content":" public void toModelType_invalidIdentityCardNumber_throwsIllegalValueException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":105,"author":{"gitId":"drustanyjt"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-03-16"},{"lineNumber":106,"author":{"gitId":"drustanyjt"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, INVALID_IDENTITY_CARD_NUMBER, VALID_AGE,","lastModifiedDate":"2024-03-16"},{"lineNumber":107,"author":{"gitId":"drustanyjt"},"content":" VALID_SEX, VALID_ADDRESS, VALID_NOTE, VALID_TAGS);","lastModifiedDate":"2024-03-16"},{"lineNumber":108,"author":{"gitId":"drustanyjt"},"content":" String expectedMessage \u003d IdentityCardNumber.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-16"},{"lineNumber":109,"author":{"gitId":"drustanyjt"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-16"},{"lineNumber":110,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":111,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":112,"author":{"gitId":"drustanyjt"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":113,"author":{"gitId":"drustanyjt"},"content":" public void toModelType_nullIdentityCardNumber_throwsIllegalValueException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":114,"author":{"gitId":"drustanyjt"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, null,","lastModifiedDate":"2024-03-16"},{"lineNumber":115,"author":{"gitId":"drustanyjt"},"content":" VALID_AGE, VALID_SEX, VALID_ADDRESS, VALID_NOTE, VALID_TAGS);","lastModifiedDate":"2024-03-16"},{"lineNumber":116,"author":{"gitId":"drustanyjt"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, IdentityCardNumber.class.getSimpleName());","lastModifiedDate":"2024-03-16"},{"lineNumber":117,"author":{"gitId":"drustanyjt"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-16"},{"lineNumber":118,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":119,"author":{"gitId":"drustanyjt"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":120,"author":{"gitId":"drustanyjt"},"content":" public void toModelType_invalidAge_throwsIllegalValueException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":121,"author":{"gitId":"drustanyjt"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-03-16"},{"lineNumber":122,"author":{"gitId":"drustanyjt"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_IDENTITY_CARD_NUMBER, INVALID_AGE,","lastModifiedDate":"2024-03-16"},{"lineNumber":123,"author":{"gitId":"drustanyjt"},"content":" VALID_SEX, VALID_ADDRESS, VALID_NOTE, VALID_TAGS);","lastModifiedDate":"2024-03-16"},{"lineNumber":124,"author":{"gitId":"drustanyjt"},"content":" String expectedMessage \u003d Age.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-16"},{"lineNumber":125,"author":{"gitId":"drustanyjt"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-16"},{"lineNumber":126,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":127,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":128,"author":{"gitId":"drustanyjt"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":129,"author":{"gitId":"drustanyjt"},"content":" public void toModelType_nullAge_throwsIllegalValueException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":130,"author":{"gitId":"drustanyjt"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-03-16"},{"lineNumber":131,"author":{"gitId":"drustanyjt"},"content":" VALID_IDENTITY_CARD_NUMBER, null, VALID_SEX, VALID_ADDRESS, VALID_NOTE, VALID_TAGS);","lastModifiedDate":"2024-03-16"},{"lineNumber":132,"author":{"gitId":"drustanyjt"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Age.class.getSimpleName());","lastModifiedDate":"2024-03-16"},{"lineNumber":133,"author":{"gitId":"drustanyjt"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-16"},{"lineNumber":134,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":135,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":136,"author":{"gitId":"drustanyjt"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":137,"author":{"gitId":"drustanyjt"},"content":" public void toModelType_invalidSex_throwsIllegalValueException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":138,"author":{"gitId":"drustanyjt"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-03-16"},{"lineNumber":139,"author":{"gitId":"drustanyjt"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_IDENTITY_CARD_NUMBER, VALID_AGE,","lastModifiedDate":"2024-03-16"},{"lineNumber":140,"author":{"gitId":"drustanyjt"},"content":" INVALID_SEX, VALID_ADDRESS, VALID_NOTE, VALID_TAGS);","lastModifiedDate":"2024-03-16"},{"lineNumber":141,"author":{"gitId":"drustanyjt"},"content":" String expectedMessage \u003d Sex.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-16"},{"lineNumber":142,"author":{"gitId":"drustanyjt"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-16"},{"lineNumber":143,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":144,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":145,"author":{"gitId":"drustanyjt"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":146,"author":{"gitId":"drustanyjt"},"content":" public void toModelType_nullSex_throwsIllegalValueException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":147,"author":{"gitId":"drustanyjt"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-03-16"},{"lineNumber":148,"author":{"gitId":"drustanyjt"},"content":" VALID_IDENTITY_CARD_NUMBER, VALID_AGE, null, VALID_ADDRESS, VALID_NOTE, VALID_TAGS);","lastModifiedDate":"2024-03-16"},{"lineNumber":149,"author":{"gitId":"drustanyjt"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Sex.class.getSimpleName());","lastModifiedDate":"2024-03-16"},{"lineNumber":150,"author":{"gitId":"drustanyjt"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-16"},{"lineNumber":151,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":152,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":153,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":154,"author":{"gitId":"-"},"content":" public void toModelType_invalidAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":155,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":156,"author":{"gitId":"drustanyjt"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_IDENTITY_CARD_NUMBER, VALID_AGE,","lastModifiedDate":"2024-03-16"},{"lineNumber":157,"author":{"gitId":"drustanyjt"},"content":" VALID_SEX, INVALID_ADDRESS, VALID_NOTE, VALID_TAGS);","lastModifiedDate":"2024-03-16"},{"lineNumber":158,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Address.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":159,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":162,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":163,"author":{"gitId":"-"},"content":" public void toModelType_nullAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":164,"author":{"gitId":"drustanyjt"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-03-16"},{"lineNumber":165,"author":{"gitId":"drustanyjt"},"content":" VALID_IDENTITY_CARD_NUMBER, VALID_AGE, VALID_SEX, null, VALID_NOTE, VALID_TAGS);","lastModifiedDate":"2024-03-16"},{"lineNumber":166,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":167,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":170,"author":{"gitId":"drustanyjt"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":171,"author":{"gitId":"drustanyjt"},"content":" public void toModelType_nullNote_throwsIllegalValueException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":172,"author":{"gitId":"drustanyjt"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-03-16"},{"lineNumber":173,"author":{"gitId":"drustanyjt"},"content":" VALID_IDENTITY_CARD_NUMBER, VALID_AGE, VALID_SEX, VALID_ADDRESS, null, VALID_TAGS);","lastModifiedDate":"2024-03-16"},{"lineNumber":174,"author":{"gitId":"drustanyjt"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Note.class.getSimpleName());","lastModifiedDate":"2024-03-16"},{"lineNumber":175,"author":{"gitId":"drustanyjt"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-16"},{"lineNumber":176,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":177,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":178,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":179,"author":{"gitId":"-"},"content":" public void toModelType_invalidTags_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":180,"author":{"gitId":"-"},"content":" List\u003cJsonAdaptedTag\u003e invalidTags \u003d new ArrayList\u003c\u003e(VALID_TAGS);","lastModifiedDate":"2018-08-13"},{"lineNumber":181,"author":{"gitId":"-"},"content":" invalidTags.add(new JsonAdaptedTag(INVALID_TAG));","lastModifiedDate":"2018-08-13"},{"lineNumber":182,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":183,"author":{"gitId":"drustanyjt"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_IDENTITY_CARD_NUMBER, VALID_AGE,","lastModifiedDate":"2024-03-16"},{"lineNumber":184,"author":{"gitId":"drustanyjt"},"content":" VALID_SEX, VALID_ADDRESS, VALID_NOTE, invalidTags);","lastModifiedDate":"2024-03-16"},{"lineNumber":185,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":186,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":188,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"drustanyjt":88,"-":100}},{"path":"src/test/java/seedu/address/storage/JsonUserPrefsStorageTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2016-09-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2016-09-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class JsonUserPrefsStorageTest {","lastModifiedDate":"2016-10-01"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonUserPrefsStorageTest\");","lastModifiedDate":"2018-04-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public Path testFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void readUserPrefs_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e readUserPrefs(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Optional\u003cUserPrefs\u003e readUserPrefs(String userPrefsFileInTestDataFolder) throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":" Path prefsFilePath \u003d addToTestDataPathIfNotNull(userPrefsFileInTestDataFolder);","lastModifiedDate":"2018-04-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return new JsonUserPrefsStorage(prefsFilePath).readUserPrefs(prefsFilePath);","lastModifiedDate":"2016-10-01"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void readUserPrefs_missingFile_emptyResult() throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertFalse(readUserPrefs(\"NonExistentFile.json\").isPresent());","lastModifiedDate":"2016-09-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void readUserPrefs_notJsonFormat_exceptionThrown() {","lastModifiedDate":"2019-03-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertThrows(DataLoadingException.class, () -\u003e readUserPrefs(\"NotJsonFormatUserPrefs.json\"));","lastModifiedDate":"2023-06-14"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" private Path addToTestDataPathIfNotNull(String userPrefsFileInTestDataFolder) {","lastModifiedDate":"2018-04-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" return userPrefsFileInTestDataFolder !\u003d null","lastModifiedDate":"2016-09-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" ? TEST_DATA_FOLDER.resolve(userPrefsFileInTestDataFolder)","lastModifiedDate":"2018-04-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":" : null;","lastModifiedDate":"2016-09-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void readUserPrefs_fileInOrder_successfullyRead() throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":54,"author":{"gitId":"-"},"content":" UserPrefs expected \u003d getTypicalUserPrefs();","lastModifiedDate":"2017-02-25"},{"lineNumber":55,"author":{"gitId":"-"},"content":" UserPrefs actual \u003d readUserPrefs(\"TypicalUserPref.json\").get();","lastModifiedDate":"2016-09-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertEquals(expected, actual);","lastModifiedDate":"2016-09-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void readUserPrefs_valuesMissingFromFile_defaultValuesUsed() throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":61,"author":{"gitId":"-"},"content":" UserPrefs actual \u003d readUserPrefs(\"EmptyUserPrefs.json\").get();","lastModifiedDate":"2016-09-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertEquals(new UserPrefs(), actual);","lastModifiedDate":"2016-09-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void readUserPrefs_extraValuesInFile_extraValuesIgnored() throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":" UserPrefs expected \u003d getTypicalUserPrefs();","lastModifiedDate":"2017-02-25"},{"lineNumber":68,"author":{"gitId":"-"},"content":" UserPrefs actual \u003d readUserPrefs(\"ExtraValuesUserPref.json\").get();","lastModifiedDate":"2016-09-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertEquals(expected, actual);","lastModifiedDate":"2016-09-24"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":" private UserPrefs getTypicalUserPrefs() {","lastModifiedDate":"2017-02-25"},{"lineNumber":74,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-02-25"},{"lineNumber":75,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(new GuiSettings(1000, 500, 300, 100));","lastModifiedDate":"2018-11-27"},{"lineNumber":76,"author":{"gitId":"drustanyjt"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"clinicmate.json\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return userPrefs;","lastModifiedDate":"2017-02-25"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-25"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void savePrefs_nullPrefs_throwsNullPointerException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e saveUserPrefs(null, \"SomeFile.json\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void saveUserPrefs_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e saveUserPrefs(new UserPrefs(), null));","lastModifiedDate":"2019-03-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":90,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-15"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * Saves {@code userPrefs} at the specified {@code prefsFileInTestDataFolder} filepath.","lastModifiedDate":"2017-08-15"},{"lineNumber":92,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-15"},{"lineNumber":93,"author":{"gitId":"-"},"content":" private void saveUserPrefs(UserPrefs userPrefs, String prefsFileInTestDataFolder) {","lastModifiedDate":"2017-08-15"},{"lineNumber":94,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":95,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(addToTestDataPathIfNotNull(prefsFileInTestDataFolder))","lastModifiedDate":"2016-10-12"},{"lineNumber":96,"author":{"gitId":"-"},"content":" .saveUserPrefs(userPrefs);","lastModifiedDate":"2016-10-12"},{"lineNumber":97,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2017-08-15"},{"lineNumber":98,"author":{"gitId":"-"},"content":" throw new AssertionError(\"There should not be an error writing to the file\", ioe);","lastModifiedDate":"2017-08-15"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":103,"author":{"gitId":"-"},"content":" public void saveUserPrefs_allInOrder_success() throws DataLoadingException, IOException {","lastModifiedDate":"2023-06-14"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":105,"author":{"gitId":"-"},"content":" UserPrefs original \u003d new UserPrefs();","lastModifiedDate":"2016-09-24"},{"lineNumber":106,"author":{"gitId":"-"},"content":" original.setGuiSettings(new GuiSettings(1200, 200, 0, 2));","lastModifiedDate":"2018-11-27"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":108,"author":{"gitId":"-"},"content":" Path pefsFilePath \u003d testFolder.resolve(\"TempPrefs.json\");","lastModifiedDate":"2019-04-25"},{"lineNumber":109,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage jsonUserPrefsStorage \u003d new JsonUserPrefsStorage(pefsFilePath);","lastModifiedDate":"2016-10-01"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":111,"author":{"gitId":"-"},"content":" //Try writing when the file doesn\u0027t exist","lastModifiedDate":"2016-09-24"},{"lineNumber":112,"author":{"gitId":"-"},"content":" jsonUserPrefsStorage.saveUserPrefs(original);","lastModifiedDate":"2016-10-01"},{"lineNumber":113,"author":{"gitId":"-"},"content":" UserPrefs readBack \u003d jsonUserPrefsStorage.readUserPrefs().get();","lastModifiedDate":"2016-10-01"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertEquals(original, readBack);","lastModifiedDate":"2016-09-24"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":116,"author":{"gitId":"-"},"content":" //Try saving when the file exists","lastModifiedDate":"2016-09-24"},{"lineNumber":117,"author":{"gitId":"-"},"content":" original.setGuiSettings(new GuiSettings(5, 5, 5, 5));","lastModifiedDate":"2018-11-27"},{"lineNumber":118,"author":{"gitId":"-"},"content":" jsonUserPrefsStorage.saveUserPrefs(original);","lastModifiedDate":"2016-10-01"},{"lineNumber":119,"author":{"gitId":"-"},"content":" readBack \u003d jsonUserPrefsStorage.readUserPrefs().get();","lastModifiedDate":"2016-10-01"},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertEquals(original, readBack);","lastModifiedDate":"2016-09-24"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":123,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-24"}],"authorContributionMap":{"drustanyjt":1,"-":122}},{"path":"src/test/java/seedu/address/testutil/EditPersonDescriptorBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-05-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-12-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-12-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-12-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-12-23"},{"lineNumber":9,"author":{"gitId":"Jayne1010"},"content":"import seedu.address.model.person.Age;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-12-23"},{"lineNumber":11,"author":{"gitId":"Jayne1010"},"content":"import seedu.address.model.person.IdentityCardNumber;","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-12-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-12-23"},{"lineNumber":15,"author":{"gitId":"Jayne1010"},"content":"import seedu.address.model.person.Sex;","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-12-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * A utility class to help with building EditPersonDescriptor objects.","lastModifiedDate":"2017-05-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorBuilder {","lastModifiedDate":"2017-05-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private EditPersonDescriptor descriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder() {","lastModifiedDate":"2017-05-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-05-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(EditPersonDescriptor descriptor) {","lastModifiedDate":"2017-05-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" this.descriptor \u003d new EditPersonDescriptor(descriptor);","lastModifiedDate":"2017-05-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Returns an {@code EditPersonDescriptor} with fields containing {@code person}\u0027s details","lastModifiedDate":"2017-06-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":37,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-06-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" descriptor.setName(person.getName());","lastModifiedDate":"2017-06-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" descriptor.setPhone(person.getPhone());","lastModifiedDate":"2017-06-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" descriptor.setEmail(person.getEmail());","lastModifiedDate":"2017-06-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" descriptor.setAddress(person.getAddress());","lastModifiedDate":"2017-06-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" descriptor.setTags(person.getTags());","lastModifiedDate":"2017-06-21"},{"lineNumber":43,"author":{"gitId":"Jayne1010"},"content":" descriptor.setSex(person.getSex());","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"Jayne1010"},"content":" descriptor.setAge(person.getAge());","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"Jayne1010"},"content":" descriptor.setIC(person.getIdentityCardNumber());","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withName(String name) {","lastModifiedDate":"2017-08-15"},{"lineNumber":52,"author":{"gitId":"-"},"content":" descriptor.setName(new Name(name));","lastModifiedDate":"2017-12-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15"},{"lineNumber":60,"author":{"gitId":"-"},"content":" descriptor.setPhone(new Phone(phone));","lastModifiedDate":"2017-12-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":64,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15"},{"lineNumber":68,"author":{"gitId":"-"},"content":" descriptor.setEmail(new Email(email));","lastModifiedDate":"2017-12-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15"},{"lineNumber":76,"author":{"gitId":"-"},"content":" descriptor.setAddress(new Address(address));","lastModifiedDate":"2017-12-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":80,"author":{"gitId":"Jayne1010"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":81,"author":{"gitId":"Jayne1010"},"content":" * Sets the {@code Age} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"Jayne1010"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":83,"author":{"gitId":"Jayne1010"},"content":" public EditPersonDescriptorBuilder withAge(int age) {","lastModifiedDate":"2024-03-21"},{"lineNumber":84,"author":{"gitId":"Jayne1010"},"content":" descriptor.setAge(new Age(age));","lastModifiedDate":"2024-03-21"},{"lineNumber":85,"author":{"gitId":"Jayne1010"},"content":" return this;","lastModifiedDate":"2024-03-21"},{"lineNumber":86,"author":{"gitId":"Jayne1010"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":87,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"Jayne1010"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":89,"author":{"gitId":"Jayne1010"},"content":" * Sets the {@code IdentityCardNumber} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-03-21"},{"lineNumber":90,"author":{"gitId":"Jayne1010"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":91,"author":{"gitId":"Jayne1010"},"content":" public EditPersonDescriptorBuilder withIC(String ic) {","lastModifiedDate":"2024-03-21"},{"lineNumber":92,"author":{"gitId":"Jayne1010"},"content":" descriptor.setIC(new IdentityCardNumber(ic));","lastModifiedDate":"2024-03-21"},{"lineNumber":93,"author":{"gitId":"Jayne1010"},"content":" return this;","lastModifiedDate":"2024-03-21"},{"lineNumber":94,"author":{"gitId":"Jayne1010"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":95,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":96,"author":{"gitId":"Jayne1010"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":97,"author":{"gitId":"Jayne1010"},"content":" * Sets the {@code Sex} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-03-21"},{"lineNumber":98,"author":{"gitId":"Jayne1010"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":99,"author":{"gitId":"Jayne1010"},"content":" public EditPersonDescriptorBuilder withSex(String sex) {","lastModifiedDate":"2024-03-21"},{"lineNumber":100,"author":{"gitId":"Jayne1010"},"content":" descriptor.setSex(new Sex(sex));","lastModifiedDate":"2024-03-21"},{"lineNumber":101,"author":{"gitId":"Jayne1010"},"content":" return this;","lastModifiedDate":"2024-03-21"},{"lineNumber":102,"author":{"gitId":"Jayne1010"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":103,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":104,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code EditPersonDescriptor}","lastModifiedDate":"2017-07-26"},{"lineNumber":106,"author":{"gitId":"-"},"content":" * that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":107,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withTags(String... tags) {","lastModifiedDate":"2017-08-15"},{"lineNumber":109,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagSet \u003d Stream.of(tags).map(Tag::new).collect(Collectors.toSet());","lastModifiedDate":"2017-12-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":" descriptor.setTags(tagSet);","lastModifiedDate":"2017-12-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":114,"author":{"gitId":"-"},"content":" public EditPersonDescriptor build() {","lastModifiedDate":"2017-05-05"},{"lineNumber":115,"author":{"gitId":"-"},"content":" return descriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":117,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"},{"lineNumber":118,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"Jayne1010":31,"-":87}},{"path":"src/test/java/seedu/address/testutil/PersonBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-12-20"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-04-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-01-18"},{"lineNumber":7,"author":{"gitId":"drustanyjt"},"content":"import seedu.address.model.person.Age;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-01-18"},{"lineNumber":9,"author":{"gitId":"drustanyjt"},"content":"import seedu.address.model.person.IdentityCardNumber;","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-01-18"},{"lineNumber":11,"author":{"gitId":"drustanyjt"},"content":"import seedu.address.model.person.Note;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-04-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-01-18"},{"lineNumber":14,"author":{"gitId":"drustanyjt"},"content":"import seedu.address.model.person.Sex;","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-04-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2017-04-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * A utility class to help with building Person objects.","lastModifiedDate":"2017-04-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class PersonBuilder {","lastModifiedDate":"2016-09-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2020-12-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2017-04-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2020-12-18"},{"lineNumber":26,"author":{"gitId":"drustanyjt"},"content":" public static final String DEFAULT_IDENTITY_CARD_NUMBER \u003d \"S1234567A\";","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"drustanyjt"},"content":" public static final Integer DEFAULT_AGE \u003d 20;","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"drustanyjt"},"content":" public static final String DEFAULT_SEX \u003d \"F\";","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2017-04-05"},{"lineNumber":30,"author":{"gitId":"drustanyjt"},"content":" public static final String DEFAULT_NOTE \u003d \"Hypertensive Crisis with last reading of 203/114\";","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20"},{"lineNumber":35,"author":{"gitId":"drustanyjt"},"content":" private IdentityCardNumber identityCardNumber;","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"drustanyjt"},"content":" private Age age;","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"drustanyjt"},"content":" private Sex sex;","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-12-20"},{"lineNumber":39,"author":{"gitId":"drustanyjt"},"content":" private Note note;","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-12-20"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2020-05-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public PersonBuilder() {","lastModifiedDate":"2017-08-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20"},{"lineNumber":47,"author":{"gitId":"-"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2017-12-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2017-12-20"},{"lineNumber":49,"author":{"gitId":"drustanyjt"},"content":" identityCardNumber \u003d new IdentityCardNumber(DEFAULT_IDENTITY_CARD_NUMBER);","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"drustanyjt"},"content":" age \u003d new Age(DEFAULT_AGE);","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"drustanyjt"},"content":" sex \u003d new Sex(DEFAULT_SEX);","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"-"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2017-12-20"},{"lineNumber":53,"author":{"gitId":"drustanyjt"},"content":" note \u003d new Note(DEFAULT_NOTE);","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":57,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * Initializes the PersonBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2016-12-11"},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public PersonBuilder(Person personToCopy) {","lastModifiedDate":"2018-01-10"},{"lineNumber":61,"author":{"gitId":"-"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2017-12-20"},{"lineNumber":62,"author":{"gitId":"-"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2017-12-20"},{"lineNumber":63,"author":{"gitId":"-"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2017-12-20"},{"lineNumber":64,"author":{"gitId":"drustanyjt"},"content":" identityCardNumber \u003d personToCopy.getIdentityCardNumber();","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"drustanyjt"},"content":" age \u003d personToCopy.getAge();","lastModifiedDate":"2024-03-16"},{"lineNumber":66,"author":{"gitId":"drustanyjt"},"content":" sex \u003d personToCopy.getSex();","lastModifiedDate":"2024-03-16"},{"lineNumber":67,"author":{"gitId":"-"},"content":" address \u003d personToCopy.getAddress();","lastModifiedDate":"2017-12-20"},{"lineNumber":68,"author":{"gitId":"drustanyjt"},"content":" note \u003d personToCopy.getNote();","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e(personToCopy.getTags());","lastModifiedDate":"2017-12-20"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11"},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public PersonBuilder withName(String name) {","lastModifiedDate":"2017-08-15"},{"lineNumber":76,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":80,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":81,"author":{"gitId":"drustanyjt"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-16"},{"lineNumber":82,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":83,"author":{"gitId":"drustanyjt"},"content":" public PersonBuilder withPhone(String phone) {","lastModifiedDate":"2024-03-16"},{"lineNumber":84,"author":{"gitId":"drustanyjt"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2024-03-16"},{"lineNumber":85,"author":{"gitId":"drustanyjt"},"content":" return this;","lastModifiedDate":"2024-03-16"},{"lineNumber":86,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":87,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":88,"author":{"gitId":"drustanyjt"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":89,"author":{"gitId":"drustanyjt"},"content":" * Sets the {@code Email} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-16"},{"lineNumber":90,"author":{"gitId":"drustanyjt"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":91,"author":{"gitId":"drustanyjt"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2024-03-16"},{"lineNumber":92,"author":{"gitId":"drustanyjt"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2024-03-16"},{"lineNumber":93,"author":{"gitId":"drustanyjt"},"content":" return this;","lastModifiedDate":"2024-03-16"},{"lineNumber":94,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":95,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":96,"author":{"gitId":"drustanyjt"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":97,"author":{"gitId":"drustanyjt"},"content":" * Sets the {@code IdentityCardNumber} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-16"},{"lineNumber":98,"author":{"gitId":"drustanyjt"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":99,"author":{"gitId":"drustanyjt"},"content":" public PersonBuilder withIdentityCardNumber(String identityCardNumber) {","lastModifiedDate":"2024-03-16"},{"lineNumber":100,"author":{"gitId":"drustanyjt"},"content":" this.identityCardNumber \u003d new IdentityCardNumber(identityCardNumber);","lastModifiedDate":"2024-03-16"},{"lineNumber":101,"author":{"gitId":"drustanyjt"},"content":" return this;","lastModifiedDate":"2024-03-16"},{"lineNumber":102,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":103,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":104,"author":{"gitId":"drustanyjt"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":105,"author":{"gitId":"drustanyjt"},"content":" * Sets the {@code Age} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-16"},{"lineNumber":106,"author":{"gitId":"drustanyjt"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":107,"author":{"gitId":"drustanyjt"},"content":" public PersonBuilder withAge(int age) {","lastModifiedDate":"2024-03-16"},{"lineNumber":108,"author":{"gitId":"drustanyjt"},"content":" this.age \u003d new Age(age);","lastModifiedDate":"2024-03-16"},{"lineNumber":109,"author":{"gitId":"drustanyjt"},"content":" return this;","lastModifiedDate":"2024-03-16"},{"lineNumber":110,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":111,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":112,"author":{"gitId":"drustanyjt"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":113,"author":{"gitId":"drustanyjt"},"content":" * Sets the {@code Age} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-16"},{"lineNumber":114,"author":{"gitId":"drustanyjt"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":115,"author":{"gitId":"drustanyjt"},"content":" public PersonBuilder withAge(String age) {","lastModifiedDate":"2024-03-16"},{"lineNumber":116,"author":{"gitId":"drustanyjt"},"content":" this.age \u003d new Age(age);","lastModifiedDate":"2024-03-16"},{"lineNumber":117,"author":{"gitId":"drustanyjt"},"content":" return this;","lastModifiedDate":"2024-03-16"},{"lineNumber":118,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":119,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":120,"author":{"gitId":"drustanyjt"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":121,"author":{"gitId":"drustanyjt"},"content":" * Sets the {@code Sex} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-16"},{"lineNumber":122,"author":{"gitId":"drustanyjt"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":123,"author":{"gitId":"drustanyjt"},"content":" public PersonBuilder withSex(String sex) {","lastModifiedDate":"2024-03-16"},{"lineNumber":124,"author":{"gitId":"drustanyjt"},"content":" this.sex \u003d new Sex(sex);","lastModifiedDate":"2024-03-16"},{"lineNumber":125,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":128,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":129,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":130,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":131,"author":{"gitId":"-"},"content":" public PersonBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15"},{"lineNumber":132,"author":{"gitId":"-"},"content":" this.address \u003d new Address(address);","lastModifiedDate":"2017-12-20"},{"lineNumber":133,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":136,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":137,"author":{"gitId":"drustanyjt"},"content":" * Sets the {@code Note} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-16"},{"lineNumber":138,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":139,"author":{"gitId":"drustanyjt"},"content":" public PersonBuilder withNote(String note) {","lastModifiedDate":"2024-03-16"},{"lineNumber":140,"author":{"gitId":"drustanyjt"},"content":" this.note \u003d new Note(note);","lastModifiedDate":"2024-03-16"},{"lineNumber":141,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":144,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":145,"author":{"gitId":"drustanyjt"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code Person} that we are building.","lastModifiedDate":"2024-03-16"},{"lineNumber":146,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":147,"author":{"gitId":"drustanyjt"},"content":" public PersonBuilder withTags(String ... tags) {","lastModifiedDate":"2024-03-16"},{"lineNumber":148,"author":{"gitId":"drustanyjt"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2024-03-16"},{"lineNumber":149,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":152,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":153,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05"},{"lineNumber":154,"author":{"gitId":"drustanyjt"},"content":" return new Person(name, phone, email, identityCardNumber, age, sex, address, note, tags);","lastModifiedDate":"2024-03-16"},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":157,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03"}],"authorContributionMap":{"drustanyjt":71,"-":86}},{"path":"src/test/java/seedu/address/testutil/TypicalIdentityPredicate.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Jayne1010"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"Jayne1010"},"content":"import seedu.address.model.person.IdentityCardNumber;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"Jayne1010"},"content":"import seedu.address.model.person.IdentityCardNumberMatchesPredicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"Jayne1010"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"Jayne1010"},"content":" * A utility class containing a list of {@code IdentityCardNumberMatchesPredicate} objects to be used in tests.","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"Jayne1010"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"Jayne1010"},"content":"public class TypicalIdentityPredicate {","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"Jayne1010"},"content":" public static final IdentityCardNumberMatchesPredicate IC_AMY \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"Jayne1010"},"content":" new IdentityCardNumberMatchesPredicate(new IdentityCardNumber(\"S1234567A\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"Jayne1010"},"content":" public static final IdentityCardNumberMatchesPredicate IC_BOB \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"Jayne1010"},"content":" new IdentityCardNumberMatchesPredicate(new IdentityCardNumber(\"S1234567B\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"Jayne1010"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"Jayne1010":14}},{"path":"src/test/java/seedu/address/testutil/TypicalPersons.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-08-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-08-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-07"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Person} objects to be used in tests.","lastModifiedDate":"2017-08-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class TypicalPersons {","lastModifiedDate":"2017-04-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final Person ALICE \u003d new PersonBuilder().withName(\"Alice Pauline\")","lastModifiedDate":"2018-01-10"},{"lineNumber":26,"author":{"gitId":"-"},"content":" .withAddress(\"123, Jurong West Ave 6, #08-111\").withEmail(\"alice@example.com\")","lastModifiedDate":"2017-04-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" .withPhone(\"94351253\")","lastModifiedDate":"2018-04-19"},{"lineNumber":28,"author":{"gitId":"drustanyjt"},"content":" .withIdentityCardNumber(\"S1234567A\").withAge(\"30\").withSex(\"F\")","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"drustanyjt"},"content":" .withNote(\"No medical conditions\")","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":" .withTags(\"friends\").build();","lastModifiedDate":"2016-09-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static final Person BENSON \u003d new PersonBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2018-01-10"},{"lineNumber":32,"author":{"gitId":"-"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2017-09-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" .withEmail(\"johnd@example.com\").withPhone(\"98765432\")","lastModifiedDate":"2017-04-05"},{"lineNumber":34,"author":{"gitId":"drustanyjt"},"content":" .withIdentityCardNumber(\"S1234567B\").withAge(31).withSex(\"M\")","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"drustanyjt"},"content":" .withNote(\"Asthma\")","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" .withTags(\"owesMoney\", \"friends\").build();","lastModifiedDate":"2016-09-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final Person CARL \u003d new PersonBuilder().withName(\"Carl Kurz\").withPhone(\"95352563\")","lastModifiedDate":"2018-01-10"},{"lineNumber":38,"author":{"gitId":"drustanyjt"},"content":" .withEmail(\"heinz@example.com\").withAddress(\"wall street\")","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"drustanyjt"},"content":" .withIdentityCardNumber(\"S1234567C\").withAge(\"32\").withSex(\"M\")","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"drustanyjt"},"content":" .withNote(\"Diabetes\")","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"drustanyjt"},"content":" .build();","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static final Person DANIEL \u003d new PersonBuilder().withName(\"Daniel Meier\").withPhone(\"87652533\")","lastModifiedDate":"2018-01-10"},{"lineNumber":43,"author":{"gitId":"drustanyjt"},"content":" .withEmail(\"cornelia@example.com\").withAddress(\"10th street\")","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"drustanyjt"},"content":" .withIdentityCardNumber(\"S1234567D\").withAge(33).withSex(\"M\")","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"drustanyjt"},"content":" .withNote(\"No medical conditions\")","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"drustanyjt"},"content":" .withTags(\"friends\").build();","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static final Person ELLE \u003d new PersonBuilder().withName(\"Elle Meyer\").withPhone(\"9482224\")","lastModifiedDate":"2018-01-10"},{"lineNumber":48,"author":{"gitId":"drustanyjt"},"content":" .withEmail(\"werner@example.com\").withAddress(\"michegan ave\")","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"drustanyjt"},"content":" .withIdentityCardNumber(\"S1234567E\").withAge(\"34\").withSex(\"F\")","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"drustanyjt"},"content":" .withNote(\"High blood pressure\")","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"drustanyjt"},"content":" .build();","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final Person FIONA \u003d new PersonBuilder().withName(\"Fiona Kunz\").withPhone(\"9482427\")","lastModifiedDate":"2018-01-10"},{"lineNumber":53,"author":{"gitId":"drustanyjt"},"content":" .withEmail(\"lydia@example.com\").withAddress(\"little tokyo\")","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"drustanyjt"},"content":" .withIdentityCardNumber(\"S1234567F\").withAge(35).withSex(\"F\")","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"drustanyjt"},"content":" .withNote(\"No medical conditions\")","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"drustanyjt"},"content":" .build();","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static final Person GEORGE \u003d new PersonBuilder().withName(\"George Best\").withPhone(\"9482442\")","lastModifiedDate":"2018-01-10"},{"lineNumber":58,"author":{"gitId":"drustanyjt"},"content":" .withEmail(\"anna@example.com\").withAddress(\"4th street\")","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"drustanyjt"},"content":" .withIdentityCardNumber(\"S1234567G\").withAge(\"36\").withSex(\"M\")","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"drustanyjt"},"content":" .withNote(\"Asthma\")","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"drustanyjt"},"content":" .build();","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static final Person HOON \u003d new PersonBuilder().withName(\"Hoon Meier\").withPhone(\"8482424\")","lastModifiedDate":"2018-01-10"},{"lineNumber":63,"author":{"gitId":"drustanyjt"},"content":" .withEmail(\"stefan@example.com\").withAddress(\"little india\")","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"drustanyjt"},"content":" .withIdentityCardNumber(\"S1234567H\").withAge(\"37\").withSex(\"M\")","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"drustanyjt"},"content":" .withNote(\"No medical conditions\")","lastModifiedDate":"2024-03-16"},{"lineNumber":66,"author":{"gitId":"drustanyjt"},"content":" .build();","lastModifiedDate":"2024-03-16"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public static final Person IDA \u003d new PersonBuilder().withName(\"Ida Mueller\").withPhone(\"8482131\")","lastModifiedDate":"2018-01-10"},{"lineNumber":68,"author":{"gitId":"drustanyjt"},"content":" .withEmail(\"hans@example.com\").withAddress(\"chicago ave\")","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"drustanyjt"},"content":" .withIdentityCardNumber(\"S1234567I\").withAge(\"38\").withSex(\"F\")","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"drustanyjt"},"content":" .withNote(\"Diabetes\")","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"drustanyjt"},"content":" .build();","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":73,"author":{"gitId":"-"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2017-08-22"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public static final Person AMY \u003d new PersonBuilder().withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2018-01-10"},{"lineNumber":75,"author":{"gitId":"drustanyjt"},"content":" .withAge(\"20\").withSex(\"F\").withIdentityCardNumber(\"S1234567A\").withEmail(VALID_EMAIL_AMY)","lastModifiedDate":"2024-03-16"},{"lineNumber":76,"author":{"gitId":"drustanyjt"},"content":" .withAddress(VALID_ADDRESS_AMY).withTags(VALID_TAG_FRIEND).withNote(\"Heavy smoker, 3 packs a day\")","lastModifiedDate":"2024-03-16"},{"lineNumber":77,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2017-09-21"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public static final Person BOB \u003d new PersonBuilder().withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-03-16"},{"lineNumber":79,"author":{"gitId":"drustanyjt"},"content":" .withAge(\"21\").withSex(\"M\").withIdentityCardNumber(\"S1234567B\").withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2024-03-16"},{"lineNumber":80,"author":{"gitId":"drustanyjt"},"content":" .withAddress(VALID_ADDRESS_BOB).withNote(\"Torn ACL multiple times\")","lastModifiedDate":"2024-03-16"},{"lineNumber":81,"author":{"gitId":"drustanyjt"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" private TypicalPersons() {} // prevents instantiation","lastModifiedDate":"2017-07-20"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":87,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2017-08-05"},{"lineNumber":89,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":90,"author":{"gitId":"-"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2017-08-05"},{"lineNumber":91,"author":{"gitId":"-"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2017-08-05"},{"lineNumber":92,"author":{"gitId":"-"},"content":" for (Person person : getTypicalPersons()) {","lastModifiedDate":"2018-01-10"},{"lineNumber":93,"author":{"gitId":"-"},"content":" ab.addPerson(person);","lastModifiedDate":"2017-08-05"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04"},{"lineNumber":98,"author":{"gitId":"-"},"content":" public static List\u003cPerson\u003e getTypicalPersons() {","lastModifiedDate":"2018-01-10"},{"lineNumber":99,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2017-08-07"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04"},{"lineNumber":101,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13"}],"authorContributionMap":{"drustanyjt":37,"-":64}}] diff --git a/AY2324S2-CS2103T-F14-2_tp_master/commits.json b/AY2324S2-CS2103T-F14-2_tp_master/commits.json index 44129585..892347fd 100644 --- a/AY2324S2-CS2103T-F14-2_tp_master/commits.json +++ b/AY2324S2-CS2103T-F14-2_tp_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"drustanyjt":[{"date":"2024-03-03","commitResults":[{"hash":"e054773e7feb575fd00e7ac063510ae83d2c94d1","isMergeCommit":false,"messageTitle":"Update sitewide settings with product name and new logo","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":0}}},{"hash":"6b2d0514ccfe445f72ff94a09eff0e80b023a14c","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into docs-sitewide-settings","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"3da4848193c31724810f138e9ca4ecc699b5622c","isMergeCommit":true,"messageTitle":"Merge pull request #20 from drustanyjt/docs-sitewide-settings","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-04","commitResults":[{"hash":"863ee95c9fdb7c1212b802c562b4d0c47b9c75d0","isMergeCommit":false,"messageTitle":"Add medical terms in meeting notes to glossary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":2}}},{"hash":"8490e739aea7f07a72a320c62382da7316e982d5","isMergeCommit":false,"messageTitle":"Fix whitespace errors","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}}]},{"date":"2024-03-05","commitResults":[{"hash":"3936397f7fb177dbeb1099057ef0dd76c36f00de","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}}]},{"date":"2024-03-06","commitResults":[{"hash":"467d54beba603f8ee15c03f015b90ec4eadc35fa","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md","messageBody":"Added value proposition and user profile.","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":3}}}]},{"date":"2024-03-15","commitResults":[{"hash":"9b3c1bc527279a3dbc61d1fbc343e5f74c11dd4a","isMergeCommit":false,"messageTitle":"Update models to support new Person fields","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":306,"deletions":11}}}]},{"date":"2024-03-16","commitResults":[{"hash":"d6df9b2962221f3fc13fce1a89e015fe9b593b6f","isMergeCommit":false,"messageTitle":"Fix support for using the new Person constructor","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":134,"deletions":39},"test-code":{"insertions":164,"deletions":42}}},{"hash":"90a1a5e75fde24f143b3b5378ff6a59ec1d4df26","isMergeCommit":false,"messageTitle":"Fix line formatting issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":283,"deletions":283}}},{"hash":"9348f3b6d45023bb0d5cf0204d918548c6d78c75","isMergeCommit":false,"messageTitle":"Fix line too long for checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1}}},{"hash":"6ff0db7e1787cf29bb66f08f7113ec6e9d112e87","isMergeCommit":false,"messageTitle":"Add test coverage for new Person fields","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":548,"deletions":228}}},{"hash":"5b7b1918e150a30060cc1fe87d8c58b9dc9bb2b5","isMergeCommit":false,"messageTitle":"Replace CRLF with LF","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":325,"deletions":325}}},{"hash":"fe3baa9236e2f4c21a40ff41e1f311acab6e8b14","isMergeCommit":false,"messageTitle":"Fix message not showing some fields from a Person","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":5}}}]},{"date":"2024-03-18","commitResults":[{"hash":"216b72757c6dbcaa6cfc41e8d1bb475a09e7a1ec","isMergeCommit":false,"messageTitle":"Update icon in UI","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3},"test-code":{"insertions":1,"deletions":1}}},{"hash":"bc2abd9ebf106d1d87120297ec67a2c3e8293ba7","isMergeCommit":false,"messageTitle":"Re-rename test file","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":1,"deletions":1}}},{"hash":"72967a3b3fb6f77f78149a53deed55cb81f147da","isMergeCommit":false,"messageTitle":"Change some references of addresbook to clinicmate","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"other":{"insertions":72,"deletions":72},"docs":{"insertions":2,"deletions":2},"test-code":{"insertions":1,"deletions":1}}},{"hash":"3535c1d1efb981a6b7206f4fb6118b7aba668bc7","isMergeCommit":false,"messageTitle":"Change CRLF to LF","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":72,"deletions":72}}}]},{"date":"2024-03-19","commitResults":[{"hash":"a3fd086dc37a1c7fbcfc25baa770d83a9b894458","isMergeCommit":true,"messageTitle":"Merge pull request #63 from drustanyjt/fix-phonetest","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-20","commitResults":[{"hash":"26394e6a65ca6108a4efd408c5c6275b828eb252","isMergeCommit":true,"messageTitle":"Merge pull request #66 from Jayne1010/UpdateUGv1.2b","messageBody":"Update user guide for features v1.2b","fileTypesAndContributionMap":{}},{"hash":"29f201eb54951eeb0b7433e806d5398802bdffb7","isMergeCommit":false,"messageTitle":"Add new attribute classes and remove references to Tag","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":19,"deletions":8}}},{"hash":"5bb0e9d0ccbd06c8dc55515d6a63f660f22b50d0","isMergeCommit":false,"messageTitle":"Revert \"Update Edit Command to edit with Person\u0027s IC\"","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":32,"deletions":88},"docs":{"insertions":1,"deletions":0}}},{"hash":"10df923a08f07ec97ba9a32fb1a7515d1a3f5de5","isMergeCommit":true,"messageTitle":"Merge pull request #80 from AY2324S2-CS2103T-F14-2/revert-65-UpdateEditCommandv1.2b","messageBody":"Revert \"Update Edit Command to edit with Person\u0027s IC\"","fileTypesAndContributionMap":{}},{"hash":"e38345b1184de88826da2b88bb491a96341fedee","isMergeCommit":true,"messageTitle":"Merge pull request #85 from AY2324S2-CS2103T-F14-2/drustanyjt-patch-1","messageBody":"Fix typo in pre-release names","fileTypesAndContributionMap":{}},{"hash":"e53d42cb9636c21071a91e61bdb0934b663ee733","isMergeCommit":false,"messageTitle":"Add google form link and update release link","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":1}}},{"hash":"4de861628d8e885464367a820e2f607580dae3a9","isMergeCommit":true,"messageTitle":"Merge pull request #88 from drustanyjt/drus-gform","messageBody":"Add google form link and update release link","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"d579361ce799668289ca6390a2e5f621d264ff59","isMergeCommit":true,"messageTitle":"Merge pull request #89 from tengcharmaine/sex_field_bug","messageBody":"","tags":["v1.2b"],"fileTypesAndContributionMap":{}}]},{"date":"2024-03-22","commitResults":[{"hash":"33ccf1040274465a973c6809afb5e589bbe2b6bd","isMergeCommit":false,"messageTitle":"Change sample data to have no tags","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":27,"deletions":22},"test-code":{"insertions":29,"deletions":0}}}]}],"Jayne1010":[{"date":"2024-03-05","commitResults":[{"hash":"5c3b512b4437b7dbc40a12f81d2a5f2c4043d612","isMergeCommit":false,"messageTitle":"Update user guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":34,"deletions":58}}},{"hash":"474dc32baa8f98a1a8bcbf3df39a6e78e83f1d2d","isMergeCommit":false,"messageTitle":"Update UG with minor typo fix","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"8a95434394c4826dbd915f7d99bdb060ed2ea7aa","isMergeCommit":false,"messageTitle":"Update UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":0}}},{"hash":"bccedcb53f202203ade98150652a325be001ba04","isMergeCommit":false,"messageTitle":"Update UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"80c59a32e3f398301150979761ec4f763903e5f0","isMergeCommit":false,"messageTitle":"Update UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"ae0360ebd33544f6c1b1b14bc94e972a998f48f5","isMergeCommit":false,"messageTitle":"Update UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":1}}},{"hash":"25b35b33296660a59dfebfe6c7c75df99957da4f","isMergeCommit":false,"messageTitle":"Update DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":34,"deletions":58}}},{"hash":"e6ef73be1f8c8973daa5432b782e0115a35d3945","isMergeCommit":false,"messageTitle":"Update DG v1.1","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":9}}},{"hash":"8ef12faa0943d2dfcd686f934b30f37ee98b8ad4","isMergeCommit":false,"messageTitle":"Update DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":0}}},{"hash":"a848745810b23913f65038b592963a9ba03b4d72","isMergeCommit":false,"messageTitle":"Update DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":0}}},{"hash":"62eceedef59ac84b48a8dfdf17b5e857dfaf23b7","isMergeCommit":false,"messageTitle":"Update DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":1}}},{"hash":"90d19984cb50ddf3faa74ac2182f8724cf041efb","isMergeCommit":true,"messageTitle":"Merge pull request #26 from Jayne1010/Updated-DG-v1.1","messageBody":"Update dg v1.1","fileTypesAndContributionMap":{}},{"hash":"c9d0294eb50bbd3d051ef812fc30db401db1a632","isMergeCommit":false,"messageTitle":"Revert \"Update dg v1.1\"","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":67,"deletions":46}}},{"hash":"44d87616ec6b8d546d083f15578cb65e6fa586fb","isMergeCommit":true,"messageTitle":"Merge pull request #30 from AY2324S2-CS2103T-F14-2/revert-26-Updated-DG-v1.1","messageBody":"Revert \"Update dg v1.1\"","fileTypesAndContributionMap":{}},{"hash":"46d4d35070797256cbf1a01fb7a6bb5cb07954a2","isMergeCommit":false,"messageTitle":"Update UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"349d3530bc407f12ef6316292df677f7da1ea3ed","isMergeCommit":false,"messageTitle":"Update UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-17","commitResults":[{"hash":"e7f6c808b940a0a5390acbc01033aeeeef77cbd9","isMergeCommit":false,"messageTitle":"Update Add Command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":82,"deletions":67},"other":{"insertions":1,"deletions":1},"test-code":{"insertions":9,"deletions":14}}},{"hash":"4a73cf3ede2e956c8dd997ab9bcb35674c40097e","isMergeCommit":false,"messageTitle":"Update Add Command to add more Person\u0027s parameters","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":18,"deletions":5}}},{"hash":"d9dd3a2450670ae972f69520634b5a7de98503ea","isMergeCommit":false,"messageTitle":"Fix style: General style improvements","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":33,"deletions":7}}},{"hash":"1432dd9f55d45c5b22611d4b3ca6f29f48296dd4","isMergeCommit":false,"messageTitle":"Fix style: General style improvements","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":17,"deletions":7}}},{"hash":"713b587907b03b5b815d55a9623da1419dcf9333","isMergeCommit":false,"messageTitle":"Fix style: General style improvements","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":2}}},{"hash":"116d1a441c736c1bd2b93c3a4cdbae8d8e1b740c","isMergeCommit":false,"messageTitle":"Fix style: General style improvements","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":2}}},{"hash":"defb309d5fc0c8ce6a000cfd2426b4b1cbdc811e","isMergeCommit":false,"messageTitle":"Fix style: General style improvements","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":29,"deletions":30},"test-code":{"insertions":14,"deletions":9}}},{"hash":"c06824bf8da1476b28ac4e629c59e8aa1a1d6bc0","isMergeCommit":false,"messageTitle":"Fix style: General style improvements","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":2}}},{"hash":"f9a36cbb78b0a4e360cc66370dff542601aaebaa","isMergeCommit":false,"messageTitle":"Fix style: General style improvements","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"01efc05263cab20b8e01b9148cb39d063bc9922c","isMergeCommit":false,"messageTitle":"Fix style: General style improvements","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":21}}},{"hash":"3aabcf15f4e2a9b3b52e6b38a298fa3cd7c30c68","isMergeCommit":true,"messageTitle":"Merge pull request #53 from Jayne1010/UpdateAdd1.2","messageBody":"Update add1.2","fileTypesAndContributionMap":{}}]},{"date":"2024-03-18","commitResults":[{"hash":"6e19572844da113e05ffb588e34fa8986d83104f","isMergeCommit":false,"messageTitle":"Update Edit Command to edit with Person\u0027s IC","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":83,"deletions":41}}},{"hash":"7e602cdfbb9e118ed4f78cb152db3b053fb0b452","isMergeCommit":false,"messageTitle":"Update Edit Command to edit with Person\u0027s IC","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":17,"deletions":3}}}]},{"date":"2024-03-19","commitResults":[{"hash":"fa2cba4fce2677a798273f4b31a22593ee22064f","isMergeCommit":false,"messageTitle":"Update user guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":5}}},{"hash":"c54256525520c61e3a178a2a75087b06de7be70f","isMergeCommit":false,"messageTitle":"Update developer guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}},{"hash":"a8d1265d5c930e30a8598939de94e196bc3ed4fc","isMergeCommit":false,"messageTitle":"Style enhancement","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"docs":{"insertions":0,"deletions":1}}}]},{"date":"2024-03-20","commitResults":[{"hash":"d4ba08a423ebafb5103291e7dad87f57d1b3a6ad","isMergeCommit":false,"messageTitle":"Add UML diagram for add command","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":70,"deletions":0}}},{"hash":"2096e22eb9e1d39b661e12a03bd404cb16e1fc18","isMergeCommit":false,"messageTitle":"Add UML diagram for edit command","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":70,"deletions":0}}},{"hash":"e154c8199b8561dc0be88a7ad488722f964d8148","isMergeCommit":false,"messageTitle":"Add test cases for add command","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":89,"deletions":42}}},{"hash":"00246e93044baff1c2f670cb393064b8be17fc0c","isMergeCommit":false,"messageTitle":"Fix style","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":51,"deletions":7}}},{"hash":"138e2e3044c031c6e6cf3427974de8da334181d9","isMergeCommit":false,"messageTitle":"Fix style","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"69621e5f881ea459ba0f0ab2a59fe5356bebfd32","isMergeCommit":true,"messageTitle":"Merge pull request #65 from Jayne1010/UpdateEditCommandv1.2b","messageBody":"Update Edit Command to edit with Person\u0027s IC","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"4c97d2a44827ff30141e9ca40e4f17f45fbc6d9b","isMergeCommit":false,"messageTitle":"Update edit command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":60,"deletions":22}}},{"hash":"40c648e33a264ed3de5d524017377fa53ad236b5","isMergeCommit":false,"messageTitle":"Update edit command parser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":29,"deletions":12}}},{"hash":"f385afd8123f50ad2220237d635356af7a304d62","isMergeCommit":false,"messageTitle":"Update edit command test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":113,"deletions":136}}},{"hash":"e18e604f267059d574e1410568c67e1e95d3afb3","isMergeCommit":false,"messageTitle":"Add new class","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":0}}},{"hash":"f92949ae64248ea5d5d29a4aea6cb27b33fb156c","isMergeCommit":false,"messageTitle":"Update edit command test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":41,"deletions":1}}},{"hash":"eddc320fc5092d4eb83123feb73809aa2bf01566","isMergeCommit":false,"messageTitle":"Update edit command test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":16,"deletions":2}}},{"hash":"f8576e93b3e4a389cd1ff104b8534c9582a76505","isMergeCommit":false,"messageTitle":"Update edit command test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":28,"deletions":7}}},{"hash":"3490671e09e40f99750307d2d0ec89943adad54f","isMergeCommit":false,"messageTitle":"Update edit command","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":1}}},{"hash":"742dd0511add81875621f7342a7168fd1e40b292","isMergeCommit":false,"messageTitle":"Update edit command","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-22","commitResults":[{"hash":"518a4d97cb1f0c4b05df5e4b8a6e1c7b98a5eda1","isMergeCommit":false,"messageTitle":"Fix typo","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"76d48aac5243c5b628715cb72c1bb8d9baa4082d","isMergeCommit":true,"messageTitle":"Merge pull request #93 from Jayne1010/UpdateEditCommandTestv1.2b","messageBody":"Update edit command test","fileTypesAndContributionMap":{}},{"hash":"a62d3e45fd226189eba4c249086173ee4be4077e","isMergeCommit":true,"messageTitle":"Merge pull request #94 from drustanyjt/drus-update-sample","messageBody":"Remove tags from sample data","fileTypesAndContributionMap":{}}]}],"tengcharmaine":[{"date":"2024-03-03","commitResults":[{"hash":"6adfcc34a784f13ffc31553c6973dadbb80cac88","isMergeCommit":false,"messageTitle":"Update Ui mockup png to the new Ui mockup in readme","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"1486ea0ef2a180512c5976509554d75ef28089dd","isMergeCommit":false,"messageTitle":"Update readme docs for Clinic Mate from original docs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":19,"deletions":10}}},{"hash":"6e06e4ea3678473438cca55efac61b95ed58ecbf","isMergeCommit":false,"messageTitle":"Fix errors from github checks","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"19bf42edea40495ac4119f43eb631d4c62b37073","isMergeCommit":false,"messageTitle":"Update CI status badge to reflect build status of teams repo","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"633a23989c72c88bc8f67cdfd1334c35eb009fa0","isMergeCommit":false,"messageTitle":"Update non-functional requirements (NFRs) to developers guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":5}}},{"hash":"6e1c8f60919f274804a665135aa7ee90348f57b0","isMergeCommit":true,"messageTitle":"Merge pull request #24 from tengcharmaine/update-readme","messageBody":"Update Project README","fileTypesAndContributionMap":{}},{"hash":"922bfe9ea876da86da32caebe1932565f064f5b4","isMergeCommit":true,"messageTitle":"Merge pull request #25 from tengcharmaine/update_NFR","messageBody":"Update non-functional requirements (NFRs) to developers guide","fileTypesAndContributionMap":{}}]},{"date":"2024-03-05","commitResults":[{"hash":"46d097d2b310c08dd298e62dc545ff12a54644de","isMergeCommit":true,"messageTitle":"Merge pull request #27 from Jayne1010/Updated-UG-v1.1","messageBody":"Update ug v1.1","fileTypesAndContributionMap":{}}]},{"date":"2024-03-06","commitResults":[{"hash":"3f6d958b873330dc5407e8bb3e43e7334e3e1aa6","isMergeCommit":false,"messageTitle":"Update Quick Start section of UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}}]},{"date":"2024-03-16","commitResults":[{"hash":"0fe36078122ac2a61d7c89cdf4788d23bdec8e40","isMergeCommit":false,"messageTitle":"Create a new AddNoteCommand class for the new addnote functionality","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":35,"deletions":0}}},{"hash":"665392252e1bf9f57f32851c3b3d129c5456494c","isMergeCommit":false,"messageTitle":"Start addnote from scratch again to prevent mixup","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":24}}},{"hash":"fba4dade8a26169a869463e43b0054dc894086bb","isMergeCommit":false,"messageTitle":"Update main body of the addnote command class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":2}}},{"hash":"cdf552de2e734860f1806a08f8c948db40404c0a","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/tengcharmaine/tp into addnote","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"47fef0bc3dd278ca979e3221291cfdf8b93bfcb6","isMergeCommit":false,"messageTitle":"Update addressbookparser to include addnote command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":9}}},{"hash":"f064efd928120ca7e3f14ca4cf19b8b11ced1735","isMergeCommit":false,"messageTitle":"Add prefix for the note section of the addnotecommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0}}},{"hash":"2ff70274d59ddbb96029423577e0edc49be78132","isMergeCommit":false,"messageTitle":"Add test file to test the functionality of the addnotecommand","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":24,"deletions":0}}},{"hash":"6ae46c777b2f1815a580b357825e42e710dfc2ce","isMergeCommit":false,"messageTitle":"Update addressbookparsertest file to include the parsing of the addnote command","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":6,"deletions":8}}},{"hash":"0aa30a47054fa71b0e61a5b71517c46094e320bc","isMergeCommit":false,"messageTitle":"Create parser for addnotecommand to parse addnote command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":72,"deletions":3}}},{"hash":"b953704fc5e36e73e89303fadb54bd1db3404414","isMergeCommit":false,"messageTitle":"Add more tests for addnotecommandtest to check if add note command works","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":37,"deletions":6}}},{"hash":"19c02c9a4c8c6f0ae5a077154ded5e502a1de9d3","isMergeCommit":false,"messageTitle":"Update addressbookparsertest to check that parsing works","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":1}}},{"hash":"e92c6a711c6103d786f4ded3b22354c9ee288fec","isMergeCommit":false,"messageTitle":"Create a parser test for addnotecommandparser","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":42,"deletions":0}}},{"hash":"9b401bddb29969bf74af3ade8e3bfcf4c00301c1","isMergeCommit":false,"messageTitle":"Update comments to fit the class name","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":4}}},{"hash":"5dd57bd198941b8960523b4e5546c701825a35c4","isMergeCommit":false,"messageTitle":"Update names of variables to match new names","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":4}}},{"hash":"50f08d92eb32fdc0b3194006629dc76aee34db49","isMergeCommit":false,"messageTitle":"Update the type of note to all relevant files and create a test for note class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":3},"test-code":{"insertions":48,"deletions":9}}},{"hash":"18e48a708961bdd57d13a098c30dbb99ad7a9ae2","isMergeCommit":false,"messageTitle":"Update code for the ui to show note in the main window","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":0}}},{"hash":"59c2973f81bf759822ae322d8df6e1d048e0258d","isMergeCommit":false,"messageTitle":"Update code for ui to work properly","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0}}},{"hash":"a8cda1b083ae0911b9d21f4c550a6d8aea2377c0","isMergeCommit":false,"messageTitle":"Update addnotecommand class to have the correct person format","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":34,"deletions":6},"test-code":{"insertions":77,"deletions":9}}},{"hash":"dc08b5f7db6e534fb4d0b17a2f46d51a6c16f53a","isMergeCommit":false,"messageTitle":"Update addnotecommand to append notes instead of replacing them","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":25,"deletions":6}}},{"hash":"098fb1f2b74c6044113e0964846c61506c29fbcc","isMergeCommit":false,"messageTitle":"Update the addnotecommand to be able to replace or append the original note","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":30,"deletions":16}}},{"hash":"07769ba97fd671dd6c2789cf356b30639453ef65","isMergeCommit":false,"messageTitle":"Edit the appending of new note to make the output more user friendly","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":2}}},{"hash":"81aefcc9c314e29a603eab7d072173eb97f0a694","isMergeCommit":false,"messageTitle":"Update to use ic number instead of index to addnote to a person","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":35,"deletions":30}}},{"hash":"3e1b1d0960373d9351aec95f8ae3bacb02b23773","isMergeCommit":false,"messageTitle":"Update addnotecommand and addnotecommandparser classes to be able to append or replace note","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":26,"deletions":11},"test-code":{"insertions":33,"deletions":52}}},{"hash":"75619c631e9eef91aed04c5bb67be4b1bc0d73ae","isMergeCommit":false,"messageTitle":"Resolve checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":5}}},{"hash":"c2ea630c9d8f7c6854d1c4c2e21c081d5d0b3e7f","isMergeCommit":false,"messageTitle":"Update imports to resolve checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":1}}},{"hash":"f5f4105f45e2486a88ddd8395e59a0783f84a758","isMergeCommit":false,"messageTitle":"Resolve checkstyle issue again","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"487291a522debc982e5047f68cdec3dace2e01cc","isMergeCommit":false,"messageTitle":"Update addressbookparsertest to be able to test when notes are added","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":2}}},{"hash":"4aca9270e0bdaadec67d877d537e66df11300017","isMergeCommit":false,"messageTitle":"Update files to make sure all tests pass","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":12,"deletions":83}}},{"hash":"2f04d41b5300a61f4ac3773b38cc305f7d8dca3d","isMergeCommit":false,"messageTitle":"Update url of help command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-17","commitResults":[{"hash":"96beadae28564108a199f25e873b4963b1932807","isMergeCommit":true,"messageTitle":"Merge pull request #51 from tengcharmaine/helpcommand","messageBody":"Update URL of help command","fileTypesAndContributionMap":{}},{"hash":"351418a1e1c71dc1dc6f94e0cd411a494aea7efb","isMergeCommit":false,"messageTitle":"Update naming of variable to make the code more readable","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":7}}},{"hash":"1defa5b91d2ae21e1a4f299fe7f9019ed87dc966","isMergeCommit":false,"messageTitle":"Update code such that there is no repeated code in the if-else block","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":12}}},{"hash":"27f94b8780094149a5712b522460949b12a5cc13","isMergeCommit":false,"messageTitle":"Update success message to fit the functionalities that are going to be implemented","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":4}}},{"hash":"b6da16e7d0427f2298e0660ad44d2647f4132452","isMergeCommit":false,"messageTitle":"Update equals method in addnotecommand class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1}}},{"hash":"65e4f6d9fb9ef49b856e290372fdc91696958e68","isMergeCommit":false,"messageTitle":"Move -replace flag to be a prefix because it is a constant","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":8}}},{"hash":"504a6703e724f4312911eb7637556896b4044750","isMergeCommit":false,"messageTitle":"Update parser and the relevant test files to support testing of the replace flag","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":5},"test-code":{"insertions":11,"deletions":1}}},{"hash":"adf49f8cccd1f0ca863fed3d49d1909f6a477c49","isMergeCommit":false,"messageTitle":"Remove unecessary string in the test case","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"34049096c3887035c2fdcbddbc07d8eca8817df5","isMergeCommit":false,"messageTitle":"Update invalid format output and remove unecessary lines of code","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":5}}},{"hash":"7c5baeec3ae1edaa23da954b35697cb3dfedf5a3","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into addnote","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-18","commitResults":[{"hash":"5c57592ed5e86e4a50bd0d75df021f7d498f69f7","isMergeCommit":true,"messageTitle":"Merge pull request #50 from tengcharmaine/addnote","messageBody":"Add addnote command to add a note to a Person\u0027s entry in the addressbook","fileTypesAndContributionMap":{}},{"hash":"2e2c94a8715de9f8ae27dfe3fd778f54d55922cd","isMergeCommit":true,"messageTitle":"Merge pull request #47 from jiahui0309/update-delete-command","messageBody":"Update Delete Command to delete with Person\u0027s IC","fileTypesAndContributionMap":{}},{"hash":"ba56b8f3169d27722e5697cab7ce1fb4a8e6f577","isMergeCommit":false,"messageTitle":"Fix bug that results in a empty line when a note is first added","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":5}}},{"hash":"44fb44e949110f002aec28e8fcd9257274d25c60","isMergeCommit":false,"messageTitle":"Update the output success message to be more user friendly","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":2}}}]},{"date":"2024-03-20","commitResults":[{"hash":"e9344111855be514da956b9dd6539a5745ef0819","isMergeCommit":true,"messageTitle":"Merge pull request #64 from drustanyjt/drus-ci","messageBody":"Add release workflows and update icons/titles to match product","fileTypesAndContributionMap":{}},{"hash":"78816172f25a8fe82a66935d381b9d1cc3a4f9af","isMergeCommit":false,"messageTitle":"Create UML diagram using PlantUML for addnotecommand function","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":70,"deletions":0}}},{"hash":"032e2453de7b90a06cdef8075a04c35a7b374682","isMergeCommit":false,"messageTitle":"Add test cases for addnotecommand class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":38,"deletions":2}}},{"hash":"eccd7f69508df4cc8cad7455483dea9d21ae728d","isMergeCommit":false,"messageTitle":"Edit file to resolve checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":3}}},{"hash":"e346979cb6f0827b2bdf54ff46cddfcddde47717","isMergeCommit":true,"messageTitle":"Merge pull request #68 from jiahui0309/add-seq-diagram","messageBody":"Create UML diagram for find and delete commands","fileTypesAndContributionMap":{}},{"hash":"68b26570fd6df049800008271734c66b3e5f4f1e","isMergeCommit":true,"messageTitle":"Merge pull request #74 from Jayne1010/master","messageBody":"Add UML diagram for add command and edit command","fileTypesAndContributionMap":{}},{"hash":"58013af5ab57cfd07da360478ed0016c19db9e72","isMergeCommit":true,"messageTitle":"Merge pull request #78 from drustanyjt/drus-person-uml","messageBody":"Update UML diagram for Person","fileTypesAndContributionMap":{}},{"hash":"f9caef08d2a479ec65f42cb0beb9e3c735505c4b","isMergeCommit":true,"messageTitle":"Merge pull request #71 from tengcharmaine/uml_addnotecommand","messageBody":"Create UML diagram using PlantUML for addnotecommand function","fileTypesAndContributionMap":{}},{"hash":"71d8bc93b84be9e50bf3f3786e6b4a81dfa31d99","isMergeCommit":true,"messageTitle":"Merge pull request #67 from Jayne1010/UpdateDGv1.2b","messageBody":"Update dg for v1.2b","tags":["dev"],"fileTypesAndContributionMap":{}},{"hash":"dd696a81d7454b18a575688973537dfdd248670c","isMergeCommit":false,"messageTitle":"Update sex field to accept upper and lower case","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}},{"hash":"d8902645b25aa38d037c66a1273ed6efeb38b3c7","isMergeCommit":true,"messageTitle":"Merge pull request #77 from Jayne1010/UpdateAddCommandTestv1.2b","messageBody":"Update add command test for v1.2b","fileTypesAndContributionMap":{}}]}],"jiahui0309":[{"date":"2024-03-03","commitResults":[{"hash":"be650b34b7753172421b5ac7dc1b96999429bb1c","isMergeCommit":false,"messageTitle":"Update About Us","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":17,"deletions":29}}},{"hash":"d7d233883734a9e0bcc21f4991fc8f820a6ba874","isMergeCommit":false,"messageTitle":"Update About Us from feedbacks","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":4}}},{"hash":"c363de2811d3fd0a4d3110b9047eee86e9232c22","isMergeCommit":true,"messageTitle":"Merge pull request #19 from jiahui0309/update-about-us","messageBody":"Update About Us","fileTypesAndContributionMap":{}}]},{"date":"2024-03-04","commitResults":[{"hash":"9a969a3bb60e72dcfaf0bc6d755408e91f78fe54","isMergeCommit":false,"messageTitle":"Update DG usecase","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":97,"deletions":2}}}]},{"date":"2024-03-05","commitResults":[{"hash":"f06e933edb533409ab4cce2c551b975a0b604bd2","isMergeCommit":false,"messageTitle":"Update DG usecase from comments","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":20,"deletions":20}}},{"hash":"f2831f7e8d61abdedfb24b7ebd72b5e7fcafd917","isMergeCommit":true,"messageTitle":"Merge pull request #29 from drustanyjt/docs-dg-glossary","messageBody":"Add medical terms in meeting notes to glossary","fileTypesAndContributionMap":{}},{"hash":"4e8320caaaf9ba28f09b91f32975fa292a0f96af","isMergeCommit":true,"messageTitle":"Merge pull request #28 from jiahui0309/update-dg-usecase","messageBody":"Update DG usecase","fileTypesAndContributionMap":{}}]},{"date":"2024-03-06","commitResults":[{"hash":"548133f9d747a41caa2218591dfc1e381a2f0f60","isMergeCommit":true,"messageTitle":"Merge pull request #33 from tengcharmaine/updateug","messageBody":"Update Quick Start section of UG","fileTypesAndContributionMap":{}},{"hash":"0d6da5c29394a526908e9fd2124d6549f57cec53","isMergeCommit":true,"messageTitle":"Merge pull request #34 from drustanyjt/docs-dg-product-scope","messageBody":"Update DeveloperGuide.md","fileTypesAndContributionMap":{}},{"hash":"8a80e337ed28e10568b9606abb2173afa58cc921","isMergeCommit":false,"messageTitle":"Update index.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}},{"hash":"f2ec7ddff937a906bc2e2a0d7a00bc620db97ef3","isMergeCommit":true,"messageTitle":"Merge pull request #35 from jiahui0309/update-index","messageBody":"Update index.md","fileTypesAndContributionMap":{}}]},{"date":"2024-03-16","commitResults":[{"hash":"dfcbf36c65d5d96d25471da99407015f2221593a","isMergeCommit":true,"messageTitle":"Merge pull request #44 from drustanyjt/drus-update-person","messageBody":"Update Person Class","fileTypesAndContributionMap":{}},{"hash":"0813c1753e3f735d66fefa81ab4bd0698af2c3a6","isMergeCommit":false,"messageTitle":"Update Find command to search with Person\u0027s IC","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":61,"deletions":17},"test-code":{"insertions":49,"deletions":42}}},{"hash":"53dac0a58990075939d2d93e04d7670b08f9eac6","isMergeCommit":false,"messageTitle":"Update PaserUtil to add parseIC","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":18,"deletions":2},"test-code":{"insertions":3,"deletions":5}}},{"hash":"14de81967ef0fed342a542d525affb138668a6c0","isMergeCommit":true,"messageTitle":"Merge pull request #46 from jiahui0309/update-find-command","messageBody":"Update Find command to search using Person\u0027s IC","fileTypesAndContributionMap":{}},{"hash":"69940f556a45d2f7d548345fbbc9ee34cead237c","isMergeCommit":false,"messageTitle":"Update Delete Command to delete with Person\u0027s IC","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":19,"deletions":17},"test-code":{"insertions":40,"deletions":38}}},{"hash":"e093fa404c24f17eeb13a8d96fa7c95313884e96","isMergeCommit":false,"messageTitle":"Update Delete Command class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}}]},{"date":"2024-03-18","commitResults":[{"hash":"7671661bb0df09ac3c55aa9c381db3cc8d8fbd05","isMergeCommit":false,"messageTitle":"Fix bugs in IdentityCardNumber class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":3}}},{"hash":"60acb0663c3d3e2de1d454c6a776b59bdbd10ede","isMergeCommit":false,"messageTitle":"Fix checkstyle comments","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":2},"test-code":{"insertions":6,"deletions":21}}},{"hash":"541832906428e5254fbfdb0c8c44e7083e5b103c","isMergeCommit":true,"messageTitle":"Merge pull request #61 from jiahui0309/review-find-delete-commands","messageBody":"Fix bugs in IdentityCardNumber class","fileTypesAndContributionMap":{}},{"hash":"bed5d5d7d44d0f92a26211c8530e815482c3fcc6","isMergeCommit":true,"messageTitle":"Merge pull request #60 from tengcharmaine/bugfixes","messageBody":"Bugfixes for addnote command","tags":["v1.2"],"fileTypesAndContributionMap":{}}]},{"date":"2024-03-20","commitResults":[{"hash":"a018971dde606dce262bf8ae51a44b3286f25228","isMergeCommit":false,"messageTitle":"Add UML diagram for find and delete commands","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":74,"deletions":4}}},{"hash":"81b904c26bf50c64bba80aa609cd3daf08f91aaa","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"9f248ee44c792ab821a8785acc01b629531bb032","isMergeCommit":true,"messageTitle":"Merge pull request #83 from tengcharmaine/addnotetest","messageBody":"Add test cases for addnotecommand class","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"drustanyjt":{"docs":36,"functional-code":402,"test-code":506,"other":1},"Jayne1010":{"docs":182,"functional-code":193,"test-code":305},"tengcharmaine":{"docs":100,"functional-code":197,"test-code":164},"jiahui0309":{"docs":194,"functional-code":98,"test-code":93}},"authorContributionVariance":{"drustanyjt":192921.06,"Jayne1010":18425.744,"tengcharmaine":27435.77,"jiahui0309":3712.464},"authorDisplayNameMap":{"drustanyjt":"CS2103T-F14-2 YEO ..STAN","Jayne1010":"CS2103T-F14-2 CHEN..AYNE","tengcharmaine":"CS2103T-F14-2 TENG..AINE","jiahui0309":"CS2103T-F14-2 SONG.. HUI"}} +{"authorDailyContributionsMap":{"drustanyjt":[{"date":"2024-03-03","commitResults":[{"hash":"e054773e7feb575fd00e7ac063510ae83d2c94d1","isMergeCommit":false,"messageTitle":"Update sitewide settings with product name and new logo","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":0}}},{"hash":"6b2d0514ccfe445f72ff94a09eff0e80b023a14c","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into docs-sitewide-settings","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"3da4848193c31724810f138e9ca4ecc699b5622c","isMergeCommit":true,"messageTitle":"Merge pull request #20 from drustanyjt/docs-sitewide-settings","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-04","commitResults":[{"hash":"863ee95c9fdb7c1212b802c562b4d0c47b9c75d0","isMergeCommit":false,"messageTitle":"Add medical terms in meeting notes to glossary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":2}}},{"hash":"8490e739aea7f07a72a320c62382da7316e982d5","isMergeCommit":false,"messageTitle":"Fix whitespace errors","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}}]},{"date":"2024-03-05","commitResults":[{"hash":"3936397f7fb177dbeb1099057ef0dd76c36f00de","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}}]},{"date":"2024-03-06","commitResults":[{"hash":"467d54beba603f8ee15c03f015b90ec4eadc35fa","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md","messageBody":"Added value proposition and user profile.","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":3}}}]},{"date":"2024-03-15","commitResults":[{"hash":"9b3c1bc527279a3dbc61d1fbc343e5f74c11dd4a","isMergeCommit":false,"messageTitle":"Update models to support new Person fields","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":306,"deletions":11}}}]},{"date":"2024-03-16","commitResults":[{"hash":"d6df9b2962221f3fc13fce1a89e015fe9b593b6f","isMergeCommit":false,"messageTitle":"Fix support for using the new Person constructor","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":134,"deletions":39},"test-code":{"insertions":164,"deletions":42}}},{"hash":"90a1a5e75fde24f143b3b5378ff6a59ec1d4df26","isMergeCommit":false,"messageTitle":"Fix line formatting issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":283,"deletions":283}}},{"hash":"9348f3b6d45023bb0d5cf0204d918548c6d78c75","isMergeCommit":false,"messageTitle":"Fix line too long for checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1}}},{"hash":"6ff0db7e1787cf29bb66f08f7113ec6e9d112e87","isMergeCommit":false,"messageTitle":"Add test coverage for new Person fields","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":548,"deletions":228}}},{"hash":"5b7b1918e150a30060cc1fe87d8c58b9dc9bb2b5","isMergeCommit":false,"messageTitle":"Replace CRLF with LF","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":325,"deletions":325}}},{"hash":"fe3baa9236e2f4c21a40ff41e1f311acab6e8b14","isMergeCommit":false,"messageTitle":"Fix message not showing some fields from a Person","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":5}}}]},{"date":"2024-03-18","commitResults":[{"hash":"216b72757c6dbcaa6cfc41e8d1bb475a09e7a1ec","isMergeCommit":false,"messageTitle":"Update icon in UI","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3},"test-code":{"insertions":1,"deletions":1}}},{"hash":"bc2abd9ebf106d1d87120297ec67a2c3e8293ba7","isMergeCommit":false,"messageTitle":"Re-rename test file","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":1,"deletions":1}}},{"hash":"72967a3b3fb6f77f78149a53deed55cb81f147da","isMergeCommit":false,"messageTitle":"Change some references of addresbook to clinicmate","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"other":{"insertions":72,"deletions":72},"docs":{"insertions":2,"deletions":2},"test-code":{"insertions":1,"deletions":1}}},{"hash":"3535c1d1efb981a6b7206f4fb6118b7aba668bc7","isMergeCommit":false,"messageTitle":"Change CRLF to LF","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":72,"deletions":72}}}]},{"date":"2024-03-19","commitResults":[{"hash":"a3fd086dc37a1c7fbcfc25baa770d83a9b894458","isMergeCommit":true,"messageTitle":"Merge pull request #63 from drustanyjt/fix-phonetest","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-20","commitResults":[{"hash":"26394e6a65ca6108a4efd408c5c6275b828eb252","isMergeCommit":true,"messageTitle":"Merge pull request #66 from Jayne1010/UpdateUGv1.2b","messageBody":"Update user guide for features v1.2b","fileTypesAndContributionMap":{}},{"hash":"29f201eb54951eeb0b7433e806d5398802bdffb7","isMergeCommit":false,"messageTitle":"Add new attribute classes and remove references to Tag","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":19,"deletions":8}}},{"hash":"5bb0e9d0ccbd06c8dc55515d6a63f660f22b50d0","isMergeCommit":false,"messageTitle":"Revert \"Update Edit Command to edit with Person\u0027s IC\"","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":32,"deletions":88},"docs":{"insertions":1,"deletions":0}}},{"hash":"10df923a08f07ec97ba9a32fb1a7515d1a3f5de5","isMergeCommit":true,"messageTitle":"Merge pull request #80 from AY2324S2-CS2103T-F14-2/revert-65-UpdateEditCommandv1.2b","messageBody":"Revert \"Update Edit Command to edit with Person\u0027s IC\"","fileTypesAndContributionMap":{}},{"hash":"e38345b1184de88826da2b88bb491a96341fedee","isMergeCommit":true,"messageTitle":"Merge pull request #85 from AY2324S2-CS2103T-F14-2/drustanyjt-patch-1","messageBody":"Fix typo in pre-release names","fileTypesAndContributionMap":{}},{"hash":"e53d42cb9636c21071a91e61bdb0934b663ee733","isMergeCommit":false,"messageTitle":"Add google form link and update release link","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":1}}},{"hash":"4de861628d8e885464367a820e2f607580dae3a9","isMergeCommit":true,"messageTitle":"Merge pull request #88 from drustanyjt/drus-gform","messageBody":"Add google form link and update release link","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"d579361ce799668289ca6390a2e5f621d264ff59","isMergeCommit":true,"messageTitle":"Merge pull request #89 from tengcharmaine/sex_field_bug","messageBody":"","tags":["v1.2b"],"fileTypesAndContributionMap":{}}]},{"date":"2024-03-22","commitResults":[{"hash":"33ccf1040274465a973c6809afb5e589bbe2b6bd","isMergeCommit":false,"messageTitle":"Change sample data to have no tags","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":27,"deletions":22},"test-code":{"insertions":29,"deletions":0}}}]}],"Jayne1010":[{"date":"2024-03-05","commitResults":[{"hash":"5c3b512b4437b7dbc40a12f81d2a5f2c4043d612","isMergeCommit":false,"messageTitle":"Update user guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":34,"deletions":58}}},{"hash":"474dc32baa8f98a1a8bcbf3df39a6e78e83f1d2d","isMergeCommit":false,"messageTitle":"Update UG with minor typo fix","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"8a95434394c4826dbd915f7d99bdb060ed2ea7aa","isMergeCommit":false,"messageTitle":"Update UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":0}}},{"hash":"bccedcb53f202203ade98150652a325be001ba04","isMergeCommit":false,"messageTitle":"Update UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"80c59a32e3f398301150979761ec4f763903e5f0","isMergeCommit":false,"messageTitle":"Update UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"ae0360ebd33544f6c1b1b14bc94e972a998f48f5","isMergeCommit":false,"messageTitle":"Update UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":1}}},{"hash":"25b35b33296660a59dfebfe6c7c75df99957da4f","isMergeCommit":false,"messageTitle":"Update DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":34,"deletions":58}}},{"hash":"e6ef73be1f8c8973daa5432b782e0115a35d3945","isMergeCommit":false,"messageTitle":"Update DG v1.1","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":9}}},{"hash":"8ef12faa0943d2dfcd686f934b30f37ee98b8ad4","isMergeCommit":false,"messageTitle":"Update DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":0}}},{"hash":"a848745810b23913f65038b592963a9ba03b4d72","isMergeCommit":false,"messageTitle":"Update DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":0}}},{"hash":"62eceedef59ac84b48a8dfdf17b5e857dfaf23b7","isMergeCommit":false,"messageTitle":"Update DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":1}}},{"hash":"90d19984cb50ddf3faa74ac2182f8724cf041efb","isMergeCommit":true,"messageTitle":"Merge pull request #26 from Jayne1010/Updated-DG-v1.1","messageBody":"Update dg v1.1","fileTypesAndContributionMap":{}},{"hash":"c9d0294eb50bbd3d051ef812fc30db401db1a632","isMergeCommit":false,"messageTitle":"Revert \"Update dg v1.1\"","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":67,"deletions":46}}},{"hash":"44d87616ec6b8d546d083f15578cb65e6fa586fb","isMergeCommit":true,"messageTitle":"Merge pull request #30 from AY2324S2-CS2103T-F14-2/revert-26-Updated-DG-v1.1","messageBody":"Revert \"Update dg v1.1\"","fileTypesAndContributionMap":{}},{"hash":"46d4d35070797256cbf1a01fb7a6bb5cb07954a2","isMergeCommit":false,"messageTitle":"Update UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"349d3530bc407f12ef6316292df677f7da1ea3ed","isMergeCommit":false,"messageTitle":"Update UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-17","commitResults":[{"hash":"e7f6c808b940a0a5390acbc01033aeeeef77cbd9","isMergeCommit":false,"messageTitle":"Update Add Command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":82,"deletions":67},"other":{"insertions":1,"deletions":1},"test-code":{"insertions":9,"deletions":14}}},{"hash":"4a73cf3ede2e956c8dd997ab9bcb35674c40097e","isMergeCommit":false,"messageTitle":"Update Add Command to add more Person\u0027s parameters","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":18,"deletions":5}}},{"hash":"d9dd3a2450670ae972f69520634b5a7de98503ea","isMergeCommit":false,"messageTitle":"Fix style: General style improvements","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":33,"deletions":7}}},{"hash":"1432dd9f55d45c5b22611d4b3ca6f29f48296dd4","isMergeCommit":false,"messageTitle":"Fix style: General style improvements","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":17,"deletions":7}}},{"hash":"713b587907b03b5b815d55a9623da1419dcf9333","isMergeCommit":false,"messageTitle":"Fix style: General style improvements","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":2}}},{"hash":"116d1a441c736c1bd2b93c3a4cdbae8d8e1b740c","isMergeCommit":false,"messageTitle":"Fix style: General style improvements","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":2}}},{"hash":"defb309d5fc0c8ce6a000cfd2426b4b1cbdc811e","isMergeCommit":false,"messageTitle":"Fix style: General style improvements","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":29,"deletions":30},"test-code":{"insertions":14,"deletions":9}}},{"hash":"c06824bf8da1476b28ac4e629c59e8aa1a1d6bc0","isMergeCommit":false,"messageTitle":"Fix style: General style improvements","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":2}}},{"hash":"f9a36cbb78b0a4e360cc66370dff542601aaebaa","isMergeCommit":false,"messageTitle":"Fix style: General style improvements","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"01efc05263cab20b8e01b9148cb39d063bc9922c","isMergeCommit":false,"messageTitle":"Fix style: General style improvements","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":21}}},{"hash":"3aabcf15f4e2a9b3b52e6b38a298fa3cd7c30c68","isMergeCommit":true,"messageTitle":"Merge pull request #53 from Jayne1010/UpdateAdd1.2","messageBody":"Update add1.2","fileTypesAndContributionMap":{}}]},{"date":"2024-03-18","commitResults":[{"hash":"6e19572844da113e05ffb588e34fa8986d83104f","isMergeCommit":false,"messageTitle":"Update Edit Command to edit with Person\u0027s IC","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":83,"deletions":41}}},{"hash":"7e602cdfbb9e118ed4f78cb152db3b053fb0b452","isMergeCommit":false,"messageTitle":"Update Edit Command to edit with Person\u0027s IC","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":17,"deletions":3}}}]},{"date":"2024-03-19","commitResults":[{"hash":"fa2cba4fce2677a798273f4b31a22593ee22064f","isMergeCommit":false,"messageTitle":"Update user guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":5}}},{"hash":"c54256525520c61e3a178a2a75087b06de7be70f","isMergeCommit":false,"messageTitle":"Update developer guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}},{"hash":"a8d1265d5c930e30a8598939de94e196bc3ed4fc","isMergeCommit":false,"messageTitle":"Style enhancement","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"docs":{"insertions":0,"deletions":1}}}]},{"date":"2024-03-20","commitResults":[{"hash":"d4ba08a423ebafb5103291e7dad87f57d1b3a6ad","isMergeCommit":false,"messageTitle":"Add UML diagram for add command","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":70,"deletions":0}}},{"hash":"2096e22eb9e1d39b661e12a03bd404cb16e1fc18","isMergeCommit":false,"messageTitle":"Add UML diagram for edit command","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":70,"deletions":0}}},{"hash":"e154c8199b8561dc0be88a7ad488722f964d8148","isMergeCommit":false,"messageTitle":"Add test cases for add command","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":89,"deletions":42}}},{"hash":"00246e93044baff1c2f670cb393064b8be17fc0c","isMergeCommit":false,"messageTitle":"Fix style","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":51,"deletions":7}}},{"hash":"138e2e3044c031c6e6cf3427974de8da334181d9","isMergeCommit":false,"messageTitle":"Fix style","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"69621e5f881ea459ba0f0ab2a59fe5356bebfd32","isMergeCommit":true,"messageTitle":"Merge pull request #65 from Jayne1010/UpdateEditCommandv1.2b","messageBody":"Update Edit Command to edit with Person\u0027s IC","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"4c97d2a44827ff30141e9ca40e4f17f45fbc6d9b","isMergeCommit":false,"messageTitle":"Update edit command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":60,"deletions":22}}},{"hash":"40c648e33a264ed3de5d524017377fa53ad236b5","isMergeCommit":false,"messageTitle":"Update edit command parser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":29,"deletions":12}}},{"hash":"f385afd8123f50ad2220237d635356af7a304d62","isMergeCommit":false,"messageTitle":"Update edit command test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":113,"deletions":136}}},{"hash":"e18e604f267059d574e1410568c67e1e95d3afb3","isMergeCommit":false,"messageTitle":"Add new class","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":0}}},{"hash":"f92949ae64248ea5d5d29a4aea6cb27b33fb156c","isMergeCommit":false,"messageTitle":"Update edit command test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":41,"deletions":1}}},{"hash":"eddc320fc5092d4eb83123feb73809aa2bf01566","isMergeCommit":false,"messageTitle":"Update edit command test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":16,"deletions":2}}},{"hash":"f8576e93b3e4a389cd1ff104b8534c9582a76505","isMergeCommit":false,"messageTitle":"Update edit command test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":28,"deletions":7}}},{"hash":"3490671e09e40f99750307d2d0ec89943adad54f","isMergeCommit":false,"messageTitle":"Update edit command","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":1}}},{"hash":"742dd0511add81875621f7342a7168fd1e40b292","isMergeCommit":false,"messageTitle":"Update edit command","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-22","commitResults":[{"hash":"518a4d97cb1f0c4b05df5e4b8a6e1c7b98a5eda1","isMergeCommit":false,"messageTitle":"Fix typo","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"76d48aac5243c5b628715cb72c1bb8d9baa4082d","isMergeCommit":true,"messageTitle":"Merge pull request #93 from Jayne1010/UpdateEditCommandTestv1.2b","messageBody":"Update edit command test","fileTypesAndContributionMap":{}},{"hash":"a62d3e45fd226189eba4c249086173ee4be4077e","isMergeCommit":true,"messageTitle":"Merge pull request #94 from drustanyjt/drus-update-sample","messageBody":"Remove tags from sample data","fileTypesAndContributionMap":{}}]}],"tengcharmaine":[{"date":"2024-03-03","commitResults":[{"hash":"6adfcc34a784f13ffc31553c6973dadbb80cac88","isMergeCommit":false,"messageTitle":"Update Ui mockup png to the new Ui mockup in readme","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"1486ea0ef2a180512c5976509554d75ef28089dd","isMergeCommit":false,"messageTitle":"Update readme docs for Clinic Mate from original docs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":19,"deletions":10}}},{"hash":"6e06e4ea3678473438cca55efac61b95ed58ecbf","isMergeCommit":false,"messageTitle":"Fix errors from github checks","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"19bf42edea40495ac4119f43eb631d4c62b37073","isMergeCommit":false,"messageTitle":"Update CI status badge to reflect build status of teams repo","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"633a23989c72c88bc8f67cdfd1334c35eb009fa0","isMergeCommit":false,"messageTitle":"Update non-functional requirements (NFRs) to developers guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":5}}},{"hash":"6e1c8f60919f274804a665135aa7ee90348f57b0","isMergeCommit":true,"messageTitle":"Merge pull request #24 from tengcharmaine/update-readme","messageBody":"Update Project README","fileTypesAndContributionMap":{}},{"hash":"922bfe9ea876da86da32caebe1932565f064f5b4","isMergeCommit":true,"messageTitle":"Merge pull request #25 from tengcharmaine/update_NFR","messageBody":"Update non-functional requirements (NFRs) to developers guide","fileTypesAndContributionMap":{}}]},{"date":"2024-03-05","commitResults":[{"hash":"46d097d2b310c08dd298e62dc545ff12a54644de","isMergeCommit":true,"messageTitle":"Merge pull request #27 from Jayne1010/Updated-UG-v1.1","messageBody":"Update ug v1.1","fileTypesAndContributionMap":{}}]},{"date":"2024-03-06","commitResults":[{"hash":"3f6d958b873330dc5407e8bb3e43e7334e3e1aa6","isMergeCommit":false,"messageTitle":"Update Quick Start section of UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}}]},{"date":"2024-03-16","commitResults":[{"hash":"0fe36078122ac2a61d7c89cdf4788d23bdec8e40","isMergeCommit":false,"messageTitle":"Create a new AddNoteCommand class for the new addnote functionality","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":35,"deletions":0}}},{"hash":"665392252e1bf9f57f32851c3b3d129c5456494c","isMergeCommit":false,"messageTitle":"Start addnote from scratch again to prevent mixup","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":24}}},{"hash":"fba4dade8a26169a869463e43b0054dc894086bb","isMergeCommit":false,"messageTitle":"Update main body of the addnote command class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":2}}},{"hash":"cdf552de2e734860f1806a08f8c948db40404c0a","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/tengcharmaine/tp into addnote","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"47fef0bc3dd278ca979e3221291cfdf8b93bfcb6","isMergeCommit":false,"messageTitle":"Update addressbookparser to include addnote command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":9}}},{"hash":"f064efd928120ca7e3f14ca4cf19b8b11ced1735","isMergeCommit":false,"messageTitle":"Add prefix for the note section of the addnotecommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0}}},{"hash":"2ff70274d59ddbb96029423577e0edc49be78132","isMergeCommit":false,"messageTitle":"Add test file to test the functionality of the addnotecommand","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":24,"deletions":0}}},{"hash":"6ae46c777b2f1815a580b357825e42e710dfc2ce","isMergeCommit":false,"messageTitle":"Update addressbookparsertest file to include the parsing of the addnote command","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":6,"deletions":8}}},{"hash":"0aa30a47054fa71b0e61a5b71517c46094e320bc","isMergeCommit":false,"messageTitle":"Create parser for addnotecommand to parse addnote command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":72,"deletions":3}}},{"hash":"b953704fc5e36e73e89303fadb54bd1db3404414","isMergeCommit":false,"messageTitle":"Add more tests for addnotecommandtest to check if add note command works","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":37,"deletions":6}}},{"hash":"19c02c9a4c8c6f0ae5a077154ded5e502a1de9d3","isMergeCommit":false,"messageTitle":"Update addressbookparsertest to check that parsing works","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":1}}},{"hash":"e92c6a711c6103d786f4ded3b22354c9ee288fec","isMergeCommit":false,"messageTitle":"Create a parser test for addnotecommandparser","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":42,"deletions":0}}},{"hash":"9b401bddb29969bf74af3ade8e3bfcf4c00301c1","isMergeCommit":false,"messageTitle":"Update comments to fit the class name","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":4}}},{"hash":"5dd57bd198941b8960523b4e5546c701825a35c4","isMergeCommit":false,"messageTitle":"Update names of variables to match new names","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":4}}},{"hash":"50f08d92eb32fdc0b3194006629dc76aee34db49","isMergeCommit":false,"messageTitle":"Update the type of note to all relevant files and create a test for note class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":3},"test-code":{"insertions":48,"deletions":9}}},{"hash":"18e48a708961bdd57d13a098c30dbb99ad7a9ae2","isMergeCommit":false,"messageTitle":"Update code for the ui to show note in the main window","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":0}}},{"hash":"59c2973f81bf759822ae322d8df6e1d048e0258d","isMergeCommit":false,"messageTitle":"Update code for ui to work properly","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0}}},{"hash":"a8cda1b083ae0911b9d21f4c550a6d8aea2377c0","isMergeCommit":false,"messageTitle":"Update addnotecommand class to have the correct person format","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":34,"deletions":6},"test-code":{"insertions":77,"deletions":9}}},{"hash":"dc08b5f7db6e534fb4d0b17a2f46d51a6c16f53a","isMergeCommit":false,"messageTitle":"Update addnotecommand to append notes instead of replacing them","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":25,"deletions":6}}},{"hash":"098fb1f2b74c6044113e0964846c61506c29fbcc","isMergeCommit":false,"messageTitle":"Update the addnotecommand to be able to replace or append the original note","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":30,"deletions":16}}},{"hash":"07769ba97fd671dd6c2789cf356b30639453ef65","isMergeCommit":false,"messageTitle":"Edit the appending of new note to make the output more user friendly","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":2}}},{"hash":"81aefcc9c314e29a603eab7d072173eb97f0a694","isMergeCommit":false,"messageTitle":"Update to use ic number instead of index to addnote to a person","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":35,"deletions":30}}},{"hash":"3e1b1d0960373d9351aec95f8ae3bacb02b23773","isMergeCommit":false,"messageTitle":"Update addnotecommand and addnotecommandparser classes to be able to append or replace note","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":26,"deletions":11},"test-code":{"insertions":33,"deletions":52}}},{"hash":"75619c631e9eef91aed04c5bb67be4b1bc0d73ae","isMergeCommit":false,"messageTitle":"Resolve checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":5}}},{"hash":"c2ea630c9d8f7c6854d1c4c2e21c081d5d0b3e7f","isMergeCommit":false,"messageTitle":"Update imports to resolve checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":1}}},{"hash":"f5f4105f45e2486a88ddd8395e59a0783f84a758","isMergeCommit":false,"messageTitle":"Resolve checkstyle issue again","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"487291a522debc982e5047f68cdec3dace2e01cc","isMergeCommit":false,"messageTitle":"Update addressbookparsertest to be able to test when notes are added","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":2}}},{"hash":"4aca9270e0bdaadec67d877d537e66df11300017","isMergeCommit":false,"messageTitle":"Update files to make sure all tests pass","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":12,"deletions":83}}},{"hash":"2f04d41b5300a61f4ac3773b38cc305f7d8dca3d","isMergeCommit":false,"messageTitle":"Update url of help command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-17","commitResults":[{"hash":"96beadae28564108a199f25e873b4963b1932807","isMergeCommit":true,"messageTitle":"Merge pull request #51 from tengcharmaine/helpcommand","messageBody":"Update URL of help command","fileTypesAndContributionMap":{}},{"hash":"351418a1e1c71dc1dc6f94e0cd411a494aea7efb","isMergeCommit":false,"messageTitle":"Update naming of variable to make the code more readable","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":7}}},{"hash":"1defa5b91d2ae21e1a4f299fe7f9019ed87dc966","isMergeCommit":false,"messageTitle":"Update code such that there is no repeated code in the if-else block","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":12}}},{"hash":"27f94b8780094149a5712b522460949b12a5cc13","isMergeCommit":false,"messageTitle":"Update success message to fit the functionalities that are going to be implemented","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":4}}},{"hash":"b6da16e7d0427f2298e0660ad44d2647f4132452","isMergeCommit":false,"messageTitle":"Update equals method in addnotecommand class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1}}},{"hash":"65e4f6d9fb9ef49b856e290372fdc91696958e68","isMergeCommit":false,"messageTitle":"Move -replace flag to be a prefix because it is a constant","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":8}}},{"hash":"504a6703e724f4312911eb7637556896b4044750","isMergeCommit":false,"messageTitle":"Update parser and the relevant test files to support testing of the replace flag","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":5},"test-code":{"insertions":11,"deletions":1}}},{"hash":"adf49f8cccd1f0ca863fed3d49d1909f6a477c49","isMergeCommit":false,"messageTitle":"Remove unecessary string in the test case","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"34049096c3887035c2fdcbddbc07d8eca8817df5","isMergeCommit":false,"messageTitle":"Update invalid format output and remove unecessary lines of code","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":5}}},{"hash":"7c5baeec3ae1edaa23da954b35697cb3dfedf5a3","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into addnote","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-18","commitResults":[{"hash":"5c57592ed5e86e4a50bd0d75df021f7d498f69f7","isMergeCommit":true,"messageTitle":"Merge pull request #50 from tengcharmaine/addnote","messageBody":"Add addnote command to add a note to a Person\u0027s entry in the addressbook","fileTypesAndContributionMap":{}},{"hash":"2e2c94a8715de9f8ae27dfe3fd778f54d55922cd","isMergeCommit":true,"messageTitle":"Merge pull request #47 from jiahui0309/update-delete-command","messageBody":"Update Delete Command to delete with Person\u0027s IC","fileTypesAndContributionMap":{}},{"hash":"ba56b8f3169d27722e5697cab7ce1fb4a8e6f577","isMergeCommit":false,"messageTitle":"Fix bug that results in a empty line when a note is first added","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":5}}},{"hash":"44fb44e949110f002aec28e8fcd9257274d25c60","isMergeCommit":false,"messageTitle":"Update the output success message to be more user friendly","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":2}}}]},{"date":"2024-03-20","commitResults":[{"hash":"e9344111855be514da956b9dd6539a5745ef0819","isMergeCommit":true,"messageTitle":"Merge pull request #64 from drustanyjt/drus-ci","messageBody":"Add release workflows and update icons/titles to match product","fileTypesAndContributionMap":{}},{"hash":"78816172f25a8fe82a66935d381b9d1cc3a4f9af","isMergeCommit":false,"messageTitle":"Create UML diagram using PlantUML for addnotecommand function","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":70,"deletions":0}}},{"hash":"032e2453de7b90a06cdef8075a04c35a7b374682","isMergeCommit":false,"messageTitle":"Add test cases for addnotecommand class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":38,"deletions":2}}},{"hash":"eccd7f69508df4cc8cad7455483dea9d21ae728d","isMergeCommit":false,"messageTitle":"Edit file to resolve checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":3}}},{"hash":"e346979cb6f0827b2bdf54ff46cddfcddde47717","isMergeCommit":true,"messageTitle":"Merge pull request #68 from jiahui0309/add-seq-diagram","messageBody":"Create UML diagram for find and delete commands","fileTypesAndContributionMap":{}},{"hash":"68b26570fd6df049800008271734c66b3e5f4f1e","isMergeCommit":true,"messageTitle":"Merge pull request #74 from Jayne1010/master","messageBody":"Add UML diagram for add command and edit command","fileTypesAndContributionMap":{}},{"hash":"58013af5ab57cfd07da360478ed0016c19db9e72","isMergeCommit":true,"messageTitle":"Merge pull request #78 from drustanyjt/drus-person-uml","messageBody":"Update UML diagram for Person","fileTypesAndContributionMap":{}},{"hash":"f9caef08d2a479ec65f42cb0beb9e3c735505c4b","isMergeCommit":true,"messageTitle":"Merge pull request #71 from tengcharmaine/uml_addnotecommand","messageBody":"Create UML diagram using PlantUML for addnotecommand function","fileTypesAndContributionMap":{}},{"hash":"71d8bc93b84be9e50bf3f3786e6b4a81dfa31d99","isMergeCommit":true,"messageTitle":"Merge pull request #67 from Jayne1010/UpdateDGv1.2b","messageBody":"Update dg for v1.2b","tags":["dev"],"fileTypesAndContributionMap":{}},{"hash":"dd696a81d7454b18a575688973537dfdd248670c","isMergeCommit":false,"messageTitle":"Update sex field to accept upper and lower case","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}},{"hash":"d8902645b25aa38d037c66a1273ed6efeb38b3c7","isMergeCommit":true,"messageTitle":"Merge pull request #77 from Jayne1010/UpdateAddCommandTestv1.2b","messageBody":"Update add command test for v1.2b","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"a3c54ace8262ecf7334bf349a42687140ca85c47","isMergeCommit":false,"messageTitle":"Update fxml to change the ui for main window but incomplete","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":22,"deletions":7}}}]},{"date":"2024-03-22","commitResults":[{"hash":"0462a049e5d09e807cc18f4a40bbf9ac2c095a66","isMergeCommit":false,"messageTitle":"Update split window to make it grow proportionately","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":8}}}]}],"jiahui0309":[{"date":"2024-03-03","commitResults":[{"hash":"be650b34b7753172421b5ac7dc1b96999429bb1c","isMergeCommit":false,"messageTitle":"Update About Us","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":17,"deletions":29}}},{"hash":"d7d233883734a9e0bcc21f4991fc8f820a6ba874","isMergeCommit":false,"messageTitle":"Update About Us from feedbacks","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":4}}},{"hash":"c363de2811d3fd0a4d3110b9047eee86e9232c22","isMergeCommit":true,"messageTitle":"Merge pull request #19 from jiahui0309/update-about-us","messageBody":"Update About Us","fileTypesAndContributionMap":{}}]},{"date":"2024-03-04","commitResults":[{"hash":"9a969a3bb60e72dcfaf0bc6d755408e91f78fe54","isMergeCommit":false,"messageTitle":"Update DG usecase","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":97,"deletions":2}}}]},{"date":"2024-03-05","commitResults":[{"hash":"f06e933edb533409ab4cce2c551b975a0b604bd2","isMergeCommit":false,"messageTitle":"Update DG usecase from comments","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":20,"deletions":20}}},{"hash":"f2831f7e8d61abdedfb24b7ebd72b5e7fcafd917","isMergeCommit":true,"messageTitle":"Merge pull request #29 from drustanyjt/docs-dg-glossary","messageBody":"Add medical terms in meeting notes to glossary","fileTypesAndContributionMap":{}},{"hash":"4e8320caaaf9ba28f09b91f32975fa292a0f96af","isMergeCommit":true,"messageTitle":"Merge pull request #28 from jiahui0309/update-dg-usecase","messageBody":"Update DG usecase","fileTypesAndContributionMap":{}}]},{"date":"2024-03-06","commitResults":[{"hash":"548133f9d747a41caa2218591dfc1e381a2f0f60","isMergeCommit":true,"messageTitle":"Merge pull request #33 from tengcharmaine/updateug","messageBody":"Update Quick Start section of UG","fileTypesAndContributionMap":{}},{"hash":"0d6da5c29394a526908e9fd2124d6549f57cec53","isMergeCommit":true,"messageTitle":"Merge pull request #34 from drustanyjt/docs-dg-product-scope","messageBody":"Update DeveloperGuide.md","fileTypesAndContributionMap":{}},{"hash":"8a80e337ed28e10568b9606abb2173afa58cc921","isMergeCommit":false,"messageTitle":"Update index.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}},{"hash":"f2ec7ddff937a906bc2e2a0d7a00bc620db97ef3","isMergeCommit":true,"messageTitle":"Merge pull request #35 from jiahui0309/update-index","messageBody":"Update index.md","fileTypesAndContributionMap":{}}]},{"date":"2024-03-16","commitResults":[{"hash":"dfcbf36c65d5d96d25471da99407015f2221593a","isMergeCommit":true,"messageTitle":"Merge pull request #44 from drustanyjt/drus-update-person","messageBody":"Update Person Class","fileTypesAndContributionMap":{}},{"hash":"0813c1753e3f735d66fefa81ab4bd0698af2c3a6","isMergeCommit":false,"messageTitle":"Update Find command to search with Person\u0027s IC","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":61,"deletions":17},"test-code":{"insertions":49,"deletions":42}}},{"hash":"53dac0a58990075939d2d93e04d7670b08f9eac6","isMergeCommit":false,"messageTitle":"Update PaserUtil to add parseIC","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":18,"deletions":2},"test-code":{"insertions":3,"deletions":5}}},{"hash":"14de81967ef0fed342a542d525affb138668a6c0","isMergeCommit":true,"messageTitle":"Merge pull request #46 from jiahui0309/update-find-command","messageBody":"Update Find command to search using Person\u0027s IC","fileTypesAndContributionMap":{}},{"hash":"69940f556a45d2f7d548345fbbc9ee34cead237c","isMergeCommit":false,"messageTitle":"Update Delete Command to delete with Person\u0027s IC","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":19,"deletions":17},"test-code":{"insertions":40,"deletions":38}}},{"hash":"e093fa404c24f17eeb13a8d96fa7c95313884e96","isMergeCommit":false,"messageTitle":"Update Delete Command class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}}]},{"date":"2024-03-18","commitResults":[{"hash":"7671661bb0df09ac3c55aa9c381db3cc8d8fbd05","isMergeCommit":false,"messageTitle":"Fix bugs in IdentityCardNumber class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":3}}},{"hash":"60acb0663c3d3e2de1d454c6a776b59bdbd10ede","isMergeCommit":false,"messageTitle":"Fix checkstyle comments","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":2},"test-code":{"insertions":6,"deletions":21}}},{"hash":"541832906428e5254fbfdb0c8c44e7083e5b103c","isMergeCommit":true,"messageTitle":"Merge pull request #61 from jiahui0309/review-find-delete-commands","messageBody":"Fix bugs in IdentityCardNumber class","fileTypesAndContributionMap":{}},{"hash":"bed5d5d7d44d0f92a26211c8530e815482c3fcc6","isMergeCommit":true,"messageTitle":"Merge pull request #60 from tengcharmaine/bugfixes","messageBody":"Bugfixes for addnote command","tags":["v1.2"],"fileTypesAndContributionMap":{}}]},{"date":"2024-03-20","commitResults":[{"hash":"a018971dde606dce262bf8ae51a44b3286f25228","isMergeCommit":false,"messageTitle":"Add UML diagram for find and delete commands","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":74,"deletions":4}}},{"hash":"81b904c26bf50c64bba80aa609cd3daf08f91aaa","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"9f248ee44c792ab821a8785acc01b629531bb032","isMergeCommit":true,"messageTitle":"Merge pull request #83 from tengcharmaine/addnotetest","messageBody":"Add test cases for addnotecommand class","fileTypesAndContributionMap":{}}]},{"date":"2024-03-22","commitResults":[{"hash":"9275e1387489506d5cc140df44402a9d7f81e97e","isMergeCommit":true,"messageTitle":"Merge pull request #107 from tengcharmaine/improvenotesui","messageBody":"Create split screen to display patient information","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"drustanyjt":{"docs":36,"functional-code":402,"test-code":506,"other":1},"Jayne1010":{"docs":182,"functional-code":193,"test-code":305},"tengcharmaine":{"docs":100,"functional-code":207,"test-code":164},"jiahui0309":{"docs":194,"functional-code":98,"test-code":93}},"authorContributionVariance":{"drustanyjt":192921.06,"Jayne1010":18425.744,"tengcharmaine":27354.744,"jiahui0309":3712.464},"authorDisplayNameMap":{"drustanyjt":"CS2103T-F14-2 YEO ..STAN","Jayne1010":"CS2103T-F14-2 CHEN..AYNE","tengcharmaine":"CS2103T-F14-2 TENG..AINE","jiahui0309":"CS2103T-F14-2 SONG.. HUI"}} diff --git a/AY2324S2-CS2103T-T09-3_tp_master/authorship.json b/AY2324S2-CS2103T-T09-3_tp_master/authorship.json index 1988bd24..9e55b050 100644 --- a/AY2324S2-CS2103T-T09-3_tp_master/authorship.json +++ b/AY2324S2-CS2103T-T09-3_tp_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"[![CI Status](https://github.com/AY2324S2-CS2103T-T09-3/tp/actions/workflows/gradle.yml/badge.svg)](https://github.com/AY2324S2-CS2103T-T09-3/tp/actions)","lastModifiedDate":"2024-02-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"[![codecov](https://codecov.io/gh/AY2324S2-CS2103-T09-3/tp/graph/badge.svg?token\u003d7N2EZAM58I)](https://codecov.io/gh/AY2324S2-CS2103-T09-3/tp)","lastModifiedDate":"2024-02-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"chaaaaun"},"content":"**Elder Scrolls is a desktop volunteer management system application for managing both volunteers, and befriendees.** While it has a GUI, most of the user interactions happen using a CLI (Command Line Interface).","lastModifiedDate":"2024-03-03"},{"lineNumber":7,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":"* If you are interested in using Elder Scrolls, head over to the [_Quick Start_ section of the **User Guide**](UserGuide.html#quick-start).","lastModifiedDate":"2024-03-03"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":"* If you are interested about developing Elder Scrolls, the [**Developer Guide**](DeveloperGuide.html) is a good place to start.","lastModifiedDate":"2024-03-03"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":12,"author":{"gitId":"chaaaaun"},"content":"**Acknowledgements**","lastModifiedDate":"2024-03-03"},{"lineNumber":13,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":14,"author":{"gitId":"chaaaaun"},"content":"* Libraries used: [JavaFX](https://openjfx.io/), [Jackson](https://github.com/FasterXML/jackson), [JUnit5](https://github.com/junit-team/junit5)","lastModifiedDate":"2024-03-03"},{"lineNumber":15,"author":{"gitId":"chaaaaun"},"content":"* This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-03-03"}],"authorContributionMap":{"chaaaaun":10,"-":5}},{"path":"build.gradle","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2016-08-29"},{"lineNumber":2,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2017-12-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2017-12-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2022-06-17"},{"lineNumber":5,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2016-12-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":" id \u0027jacoco\u0027","lastModifiedDate":"2020-08-07"},{"lineNumber":7,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-29"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":"mainClassName \u003d \u0027scrolls.elder.Main\u0027","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"sourceCompatibility \u003d JavaVersion.VERSION_11","lastModifiedDate":"2019-02-20"},{"lineNumber":12,"author":{"gitId":"-"},"content":"targetCompatibility \u003d JavaVersion.VERSION_11","lastModifiedDate":"2019-02-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" maven { url \u0027https://oss.sonatype.org/content/repositories/snapshots/\u0027 }","lastModifiedDate":"2018-04-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"checkstyle {","lastModifiedDate":"2016-10-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2022-04-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-10-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2018-03-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2018-03-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":" finalizedBy jacocoTestReport","lastModifiedDate":"2020-08-07"},{"lineNumber":26,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-08-07"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-08-07"},{"lineNumber":28,"author":{"gitId":"-"},"content":"task coverage(type: JacocoReport) {","lastModifiedDate":"2020-08-07"},{"lineNumber":29,"author":{"gitId":"-"},"content":" sourceDirectories.from files(sourceSets.main.allSource.srcDirs)","lastModifiedDate":"2020-08-07"},{"lineNumber":30,"author":{"gitId":"-"},"content":" classDirectories.from files(sourceSets.main.output)","lastModifiedDate":"2020-08-07"},{"lineNumber":31,"author":{"gitId":"-"},"content":" executionData.from files(jacocoTestReport.executionData)","lastModifiedDate":"2020-08-07"},{"lineNumber":32,"author":{"gitId":"-"},"content":" afterEvaluate {","lastModifiedDate":"2020-08-07"},{"lineNumber":33,"author":{"gitId":"-"},"content":" classDirectories.from files(classDirectories.files.collect {","lastModifiedDate":"2020-08-07"},{"lineNumber":34,"author":{"gitId":"-"},"content":" fileTree(dir: it, exclude: [\u0027**/*.jar\u0027])","lastModifiedDate":"2020-08-07"},{"lineNumber":35,"author":{"gitId":"-"},"content":" })","lastModifiedDate":"2020-08-07"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07"},{"lineNumber":37,"author":{"gitId":"-"},"content":" reports {","lastModifiedDate":"2020-08-07"},{"lineNumber":38,"author":{"gitId":"-"},"content":" html.required \u003d true","lastModifiedDate":"2022-06-17"},{"lineNumber":39,"author":{"gitId":"-"},"content":" xml.required \u003d true","lastModifiedDate":"2022-06-17"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07"},{"lineNumber":41,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-03-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" String jUnitVersion \u003d \u00275.4.0\u0027","lastModifiedDate":"2019-02-10"},{"lineNumber":45,"author":{"gitId":"-"},"content":" String javaFxVersion \u003d \u002717.0.7\u0027","lastModifiedDate":"2023-07-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":48,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":" implementation group: \u0027com.fasterxml.jackson.core\u0027, name: \u0027jackson-databind\u0027, version: \u00272.7.0\u0027","lastModifiedDate":"2018-03-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":" implementation group: \u0027com.fasterxml.jackson.datatype\u0027, name: \u0027jackson-datatype-jsr310\u0027, version: \u00272.7.4\u0027","lastModifiedDate":"2018-03-29"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-29"},{"lineNumber":68,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2016-08-29"},{"lineNumber":69,"author":{"gitId":"chaaaaun"},"content":" archiveFileName \u003d \u0027elderscrolls.jar\u0027","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":"defaultTasks \u0027clean\u0027, \u0027test\u0027","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"chaaaaun":2,"-":70}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: About Us","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"We are a team based in the [School of Computing, National University of Singapore](http://www.comp.nus.edu.sg).","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"You can reach us at the email `seer[at]comp.nus.edu.sg`","lastModifiedDate":"2020-06-17"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"chaaaaun"},"content":"### Tu Jia En","lastModifiedDate":"2024-03-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"chaaaaun"},"content":"\u003cimg src\u003d\"images/chaaaaun.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"chaaaaun"},"content":"[[github](https://github.com/chaaaaun)]","lastModifiedDate":"2024-03-03"},{"lineNumber":17,"author":{"gitId":"chaaaaun"},"content":"[[portfolio](team/chaaaaun.md)]","lastModifiedDate":"2024-03-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"chaaaaun"},"content":"* Role: Developer","lastModifiedDate":"2024-03-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"soons1"},"content":"### Soh Soon Wei","lastModifiedDate":"2024-03-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"soons1"},"content":"\u003cimg src\u003d\"images/soons1.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-03"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"soons1"},"content":"[[github](http://github.com/soons1)]","lastModifiedDate":"2024-03-03"},{"lineNumber":26,"author":{"gitId":"soons1"},"content":"[[portfolio](team/soons1.md)]","lastModifiedDate":"2024-03-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"soons1"},"content":"* Role: Developer","lastModifiedDate":"2024-03-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"* Responsibilities: UI","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"sdevih"},"content":"### S Devi Harshitha","lastModifiedDate":"2024-03-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"sdevih"},"content":"\u003cimg src\u003d\"images/sdevih.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"chaaaaun"},"content":"[[github](http://github.com/sdevih)]","lastModifiedDate":"2024-03-03"},{"lineNumber":36,"author":{"gitId":"chaaaaun"},"content":"[[portfolio](team/sdevih.md)]","lastModifiedDate":"2024-03-03"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"* Responsibilities: Data","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"CJerrong"},"content":"### Chong Jer Rong","lastModifiedDate":"2024-03-03"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"CJerrong"},"content":"\u003cimg src\u003d\"images/cjerrong.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-03"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"CJerrong"},"content":"[[github](http://github.com/CJerrong)]","lastModifiedDate":"2024-03-03"},{"lineNumber":46,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"gerteck"},"content":"### Chan Ger Teck","lastModifiedDate":"2024-03-03"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"gerteck"},"content":"\u003cimg src\u003d\"images/gerteck.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-03"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"gerteck"},"content":"[[github](https://github.com/gerteck)]","lastModifiedDate":"2024-03-03"},{"lineNumber":55,"author":{"gitId":"gerteck"},"content":"[[portfolio](team/gerteck.md)]","lastModifiedDate":"2024-03-03"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"soons1":5,"CJerrong":3,"gerteck":4,"chaaaaun":7,"-":36,"sdevih":2}},{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: Developer Guide","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"{:toc}","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":10,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":12,"author":{"gitId":"-"},"content":"* {list here sources of all reused/adapted ideas, code, documentation, and third-party libraries -- include links to the original source as well}","lastModifiedDate":"2021-07-30"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":14,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":":bulb: **Tip:** The `.puml` files used to create diagrams in this document `docs/diagrams` folder. Refer to the [_PlantUML Tutorial_ at se-edu/guides](https://se-education.org/guides/tutorials/plantUml.html) to learn how to create and edit diagrams.","lastModifiedDate":"2023-09-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureDiagram.png\" width\u003d\"280\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":"The ***Architecture Diagram*** given above explains the high-level design of the App.","lastModifiedDate":"2021-07-31"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"Given below is a quick overview of main components and how they interact with each other.","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"**`Main`** (consisting of classes [`Main`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/Main.java) and [`MainApp`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/MainApp.java)) is in charge of the app launch and shut down.","lastModifiedDate":"2023-09-03"},{"lineNumber":40,"author":{"gitId":"-"},"content":"* At app launch, it initializes the other components in the correct sequence, and connects them up with each other.","lastModifiedDate":"2023-09-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":"* At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2023-09-03"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"* [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"* [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"The *Sequence Diagram* below shows how the components interact with each other for the scenario where the user issues the command `delete 1`.","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureSequenceDiagram.png\" width\u003d\"574\" /\u003e","lastModifiedDate":"2020-06-07"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":60,"author":{"gitId":"-"},"content":"* defines its *API* in an `interface` with the same name as the Component.","lastModifiedDate":"2021-07-31"},{"lineNumber":61,"author":{"gitId":"-"},"content":"* implements its functionality using a concrete `{Component Name}Manager` class (which follows the corresponding API `interface` mentioned in the previous point.","lastModifiedDate":"2021-07-31"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":63,"author":{"gitId":"-"},"content":"For example, the `Logic` component defines its API in the `Logic.java` interface and implements its functionality using the `LogicManager.java` class which follows the `Logic` interface. Other components interact with a given component through its interface rather than the concrete class (reason: to prevent outside component\u0027s being coupled to the implementation of a component), as illustrated in the (partial) class diagram below.","lastModifiedDate":"2021-07-31"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":65,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ComponentManagers.png\" width\u003d\"300\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":67,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"The **API** of this component is specified in [`Ui.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/Ui.java)","lastModifiedDate":"2021-07-31"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"![Structure of the UI Component](images/UiClassDiagram.png)","lastModifiedDate":"2021-07-31"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"The UI consists of a `MainWindow` that is made up of parts e.g.`CommandBox`, `ResultDisplay`, `PersonListPanel`, `StatusBarFooter` etc. All these, including the `MainWindow`, inherit from the abstract `UiPart` class which captures the commonalities between classes that represent parts of the visible GUI.","lastModifiedDate":"2021-07-31"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":"The `UI` component uses the JavaFx UI framework. The layout of these UI parts are defined in matching `.fxml` files that are in the `src/main/resources/view` folder. For example, the layout of the [`MainWindow`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/MainWindow.java) is specified in [`MainWindow.fxml`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/resources/view/MainWindow.fxml)","lastModifiedDate":"2021-07-31"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"* executes user commands using the `Logic` component.","lastModifiedDate":"2021-07-31"},{"lineNumber":82,"author":{"gitId":"-"},"content":"* listens for changes to `Model` data so that the UI can be updated with the modified data.","lastModifiedDate":"2021-07-31"},{"lineNumber":83,"author":{"gitId":"-"},"content":"* keeps a reference to the `Logic` component, because the `UI` relies on the `Logic` to execute commands.","lastModifiedDate":"2021-07-31"},{"lineNumber":84,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component, as it displays `Person` object residing in the `Model`.","lastModifiedDate":"2021-07-31"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"**API** : [`Logic.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/logic/Logic.java)","lastModifiedDate":"2021-07-31"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/LogicClassDiagram.png\" width\u003d\"550\"/\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":"The sequence diagram below illustrates the interactions within the `Logic` component, taking `execute(\"delete 1\")` API call as an example.","lastModifiedDate":"2023-09-03"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"![Interactions Inside the Logic Component for the `delete 1` Command](images/DeleteSequenceDiagram.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** The lifeline for `DeleteCommandParser` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline continues till the end of diagram.","lastModifiedDate":"2024-02-09"},{"lineNumber":99,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":103,"author":{"gitId":"-"},"content":"1. When `Logic` is called upon to execute a command, it is passed to an `AddressBookParser` object which in turn creates a parser that matches the command (e.g., `DeleteCommandParser`) and uses it to parse the command.","lastModifiedDate":"2023-09-03"},{"lineNumber":104,"author":{"gitId":"-"},"content":"1. This results in a `Command` object (more precisely, an object of one of its subclasses e.g., `DeleteCommand`) which is executed by the `LogicManager`.","lastModifiedDate":"2023-09-03"},{"lineNumber":105,"author":{"gitId":"-"},"content":"1. The command can communicate with the `Model` when it is executed (e.g. to delete a person).\u003cbr\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":106,"author":{"gitId":"-"},"content":" Note that although this is shown as a single step in the diagram above (for simplicity), in the code it can take several interactions (between the command object and the `Model`) to achieve.","lastModifiedDate":"2024-02-09"},{"lineNumber":107,"author":{"gitId":"-"},"content":"1. The result of the command execution is encapsulated as a `CommandResult` object which is returned back from `Logic`.","lastModifiedDate":"2023-09-03"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":109,"author":{"gitId":"-"},"content":"Here are the other classes in `Logic` (omitted from the class diagram above) that are used for parsing a user command:","lastModifiedDate":"2021-07-31"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":111,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ParserClasses.png\" width\u003d\"600\"/\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31"},{"lineNumber":114,"author":{"gitId":"-"},"content":"* When called upon to parse a user command, the `AddressBookParser` class creates an `XYZCommandParser` (`XYZ` is a placeholder for the specific command name e.g., `AddCommandParser`) which uses the other classes shown above to parse the user command and create a `XYZCommand` object (e.g., `AddCommand`) which the `AddressBookParser` returns back as a `Command` object.","lastModifiedDate":"2021-07-31"},{"lineNumber":115,"author":{"gitId":"-"},"content":"* All `XYZCommandParser` classes (e.g., `AddCommandParser`, `DeleteCommandParser`, ...) inherit from the `Parser` interface so that they can be treated similarly where possible e.g, during testing.","lastModifiedDate":"2021-07-31"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31"},{"lineNumber":118,"author":{"gitId":"-"},"content":"**API** : [`Model.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/model/Model.java)","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":"* stores the address book data i.e., all `Person` objects (which are contained in a `UniquePersonList` object).","lastModifiedDate":"2021-07-31"},{"lineNumber":126,"author":{"gitId":"-"},"content":"* stores the currently \u0027selected\u0027 `Person` objects (e.g., results of a search query) as a separate _filtered_ list which is exposed to outsiders as an unmodifiable `ObservableList\u003cPerson\u003e` that can be \u0027observed\u0027 e.g. the UI can be bound to this list so that the UI automatically updates when the data in the list change.","lastModifiedDate":"2021-07-31"},{"lineNumber":127,"author":{"gitId":"-"},"content":"* stores a `UserPref` object that represents the user’s preferences. This is exposed to the outside as a `ReadOnlyUserPref` objects.","lastModifiedDate":"2021-07-31"},{"lineNumber":128,"author":{"gitId":"-"},"content":"* does not depend on any of the other three components (as the `Model` represents data entities of the domain, they should make sense on their own without depending on other components)","lastModifiedDate":"2021-07-31"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":130,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** An alternative (arguably, a more OOP) model is given below. It has a `Tag` list in the `AddressBook`, which `Person` references. This allows `AddressBook` to only require one `Tag` object per unique tag, instead of each `Person` needing their own `Tag` objects.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":132,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/BetterModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"**API** : [`Storage.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/storage/Storage.java)","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/StorageClassDiagram.png\" width\u003d\"550\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":143,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"* can save both address book data and user preference data in JSON format, and read them back into corresponding objects.","lastModifiedDate":"2023-09-03"},{"lineNumber":145,"author":{"gitId":"-"},"content":"* inherits from both `AddressBookStorage` and `UserPrefStorage`, which means it can be treated as either one (if only the functionality of only one is needed).","lastModifiedDate":"2021-07-31"},{"lineNumber":146,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component (because the `Storage` component\u0027s job is to save/retrieve objects that belong to the `Model`)","lastModifiedDate":"2021-07-21"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.addressbook.commons` package.","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":"The proposed undo/redo mechanism is facilitated by `VersionedAddressBook`. It extends `AddressBook` with an undo/redo history, stored internally as an `addressBookStateList` and `currentStatePointer`. Additionally, it implements the following operations:","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":"These operations are exposed in the `Model` interface as `Model#commitAddressBook()`, `Model#undoAddressBook()` and `Model#redoAddressBook()` respectively.","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"Given below is an example usage scenario and how the undo/redo mechanism behaves at each step.","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":"Step 1. The user launches the application for the first time. The `VersionedAddressBook` will be initialized with the initial address book state, and the `currentStatePointer` pointing to that single address book state.","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":"![UndoRedoState0](images/UndoRedoState0.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":"Step 2. The user executes `delete 5` command to delete the 5th person in the address book. The `delete` command calls `Model#commitAddressBook()`, causing the modified state of the address book after the `delete 5` command executes to be saved in the `addressBookStateList`, and the `currentStatePointer` is shifted to the newly inserted address book state.","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":"![UndoRedoState1](images/UndoRedoState1.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":"Step 3. The user executes `add n/David …​` to add a new person. The `add` command also calls `Model#commitAddressBook()`, causing another modified address book state to be saved into the `addressBookStateList`.","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":"![UndoRedoState2](images/UndoRedoState2.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If a command fails its execution, it will not call `Model#commitAddressBook()`, so the address book state will not be saved into the `addressBookStateList`.","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":"Step 4. The user now decides that adding the person was a mistake, and decides to undo that action by executing the `undo` command. The `undo` command will call `Model#undoAddressBook()`, which will shift the `currentStatePointer` once to the left, pointing it to the previous address book state, and restores the address book to that state.","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":190,"author":{"gitId":"-"},"content":"![UndoRedoState3](images/UndoRedoState3.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":192,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If the `currentStatePointer` is at index 0, pointing to the initial AddressBook state, then there are no previous AddressBook states to restore. The `undo` command uses `Model#canUndoAddressBook()` to check if this is the case. If so, it will return an error to the user rather","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-Logic.png)","lastModifiedDate":"2024-02-09"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":201,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** The lifeline for `UndoCommand` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":207,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-Model.png)","lastModifiedDate":"2024-02-09"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":209,"author":{"gitId":"-"},"content":"The `redo` command does the opposite — it calls `Model#redoAddressBook()`, which shifts the `currentStatePointer` once to the right, pointing to the previously undone state, and restores the address book to that state.","lastModifiedDate":"2020-05-23"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If the `currentStatePointer` is at index `addressBookStateList.size() - 1`, pointing to the latest address book state, then there are no undone AddressBook states to restore. The `redo` command uses `Model#canRedoAddressBook()` to check if this is the case. If so, it will return an error to the user rather than attempting to perform the redo.","lastModifiedDate":"2020-05-23"},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":213,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":"Step 5. The user then decides to execute the command `list`. Commands that do not modify the address book, such as `list`, will usually not call `Model#commitAddressBook()`, `Model#undoAddressBook()` or `Model#redoAddressBook()`. Thus, the `addressBookStateList` remains unchanged.","lastModifiedDate":"2020-05-23"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":217,"author":{"gitId":"-"},"content":"![UndoRedoState4](images/UndoRedoState4.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":219,"author":{"gitId":"-"},"content":"Step 6. The user executes `clear`, which calls `Model#commitAddressBook()`. Since the `currentStatePointer` is not pointing at the end of the `addressBookStateList`, all address book states after the `currentStatePointer` will be purged. Reason: It no longer makes sense to redo the `add n/David …​` command. This is the behavior that most modern desktop applications follow.","lastModifiedDate":"2020-05-23"},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":221,"author":{"gitId":"-"},"content":"![UndoRedoState5](images/UndoRedoState5.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":223,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/CommitActivityDiagram.png\" width\u003d\"250\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31"},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":247,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":248,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":249,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07"},{"lineNumber":250,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":252,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":253,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":254,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":255,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":256,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":257,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":259,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23"},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23"},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":265,"author":{"gitId":"chaaaaun"},"content":"* is a manager of a befriending volunteer organisation","lastModifiedDate":"2024-03-03"},{"lineNumber":266,"author":{"gitId":"chaaaaun"},"content":"* has a need to keep track of many befriendees/elderly of the volunteer programme","lastModifiedDate":"2024-03-03"},{"lineNumber":267,"author":{"gitId":"chaaaaun"},"content":"* has a need to keep track of volunteers in the organisation","lastModifiedDate":"2024-03-03"},{"lineNumber":268,"author":{"gitId":"-"},"content":"* prefer desktop apps over other types","lastModifiedDate":"2020-05-23"},{"lineNumber":269,"author":{"gitId":"-"},"content":"* can type fast","lastModifiedDate":"2020-05-23"},{"lineNumber":270,"author":{"gitId":"-"},"content":"* prefers typing to mouse interactions","lastModifiedDate":"2020-05-26"},{"lineNumber":271,"author":{"gitId":"-"},"content":"* is reasonably comfortable using CLI apps","lastModifiedDate":"2020-05-23"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":273,"author":{"gitId":"chaaaaun"},"content":"**Value proposition**: manage the volunteer organisation faster than a typical mouse/GUI driven app","lastModifiedDate":"2024-03-03"},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":275,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":276,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07"},{"lineNumber":277,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":278,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23"},{"lineNumber":279,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":280,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23"},{"lineNumber":281,"author":{"gitId":"gerteck"},"content":"|-----|-----------|----------------------------------------------------------------------------------------|---------------------------------------------------------------|","lastModifiedDate":"2024-03-04"},{"lineNumber":282,"author":{"gitId":"soons1"},"content":"| `* * *` | manager | add volunteers’ and elderly befriendees’ contacts | |","lastModifiedDate":"2024-03-03"},{"lineNumber":283,"author":{"gitId":"soons1"},"content":"| `* * *` | manager | edit volunteers’ and elderly befriendees’ details | |","lastModifiedDate":"2024-03-03"},{"lineNumber":284,"author":{"gitId":"soons1"},"content":"| `* * *` | manager | delete volunteer and elderly befriendee contacts | |","lastModifiedDate":"2024-03-03"},{"lineNumber":285,"author":{"gitId":"gerteck"},"content":"| `* * *` | manager | view list of volunteers and elderly befriendees | keep track of the roster |","lastModifiedDate":"2024-03-04"},{"lineNumber":286,"author":{"gitId":"soons1"},"content":"| `* * *` | manager | tag elderly befriendees with relevant details | accommodate for any special circumstances |","lastModifiedDate":"2024-03-03"},{"lineNumber":287,"author":{"gitId":"soons1"},"content":"| `* * *` | manager | pair volunteers with befriendee contacts | assign the pairings |","lastModifiedDate":"2024-03-03"},{"lineNumber":288,"author":{"gitId":"gerteck"},"content":"| `* * *` | manager | view details of elderly befriendee | know the address and case details |","lastModifiedDate":"2024-03-04"},{"lineNumber":289,"author":{"gitId":"gerteck"},"content":"| `* * *` | manager | view details of volunteer befriender | know the details of the volunteer |","lastModifiedDate":"2024-03-04"},{"lineNumber":290,"author":{"gitId":"soons1"},"content":"| `* *` | first-time user | access a help page | refer to the features that come along with the application |","lastModifiedDate":"2024-03-03"},{"lineNumber":291,"author":{"gitId":"soons1"},"content":"| `* *` | manager | have a one-stop view of all the important information about the elderly and volunteers | contact each person easily |","lastModifiedDate":"2024-03-03"},{"lineNumber":292,"author":{"gitId":"soons1"},"content":"| `* *` | manager | see a timetable with meeting details | quickly see the planned meeting sessions |","lastModifiedDate":"2024-03-03"},{"lineNumber":293,"author":{"gitId":"soons1"},"content":"| `* *` | manager | search for specific contact based on keywords | quickly see contact details of specific people |","lastModifiedDate":"2024-03-03"},{"lineNumber":294,"author":{"gitId":"gerteck"},"content":"| `* *` | manager | add details directly to pairings | add information specific to pairings |","lastModifiedDate":"2024-03-04"},{"lineNumber":295,"author":{"gitId":"gerteck"},"content":"| `* *` | manager | search for specific contact based on keywords | quickly see contact details of specific people |","lastModifiedDate":"2024-03-04"},{"lineNumber":296,"author":{"gitId":"soons1"},"content":"| `*` | first-time user | see sample befriendee and volunteer profiles | try out the features with pre-loaded data |","lastModifiedDate":"2024-03-03"},{"lineNumber":297,"author":{"gitId":"soons1"},"content":"| `*` | first-time user | follow a guided tour | be aware of how to use and access features in the application |","lastModifiedDate":"2024-03-03"},{"lineNumber":298,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":299,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":300,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":301,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07"},{"lineNumber":302,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":303,"author":{"gitId":"sdevih"},"content":"(For all use cases below, the **System** is the `Elder Scrolls` and the **Actor** is the","lastModifiedDate":"2024-03-15"},{"lineNumber":304,"author":{"gitId":"sdevih"},"content":"`volunteer organisation manager`, unless specified otherwise)","lastModifiedDate":"2024-03-15"},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":306,"author":{"gitId":"sdevih"},"content":"**Use case: UC01 - Add a contact**","lastModifiedDate":"2024-03-15"},{"lineNumber":307,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":308,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23"},{"lineNumber":309,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":310,"author":{"gitId":"CJerrong"},"content":"1. User requests to add contact, entering contact information","lastModifiedDate":"2024-03-03"},{"lineNumber":311,"author":{"gitId":"CJerrong"},"content":"2. Elder Scrolls adds the contact","lastModifiedDate":"2024-03-03"},{"lineNumber":312,"author":{"gitId":"CJerrong"},"content":"3. Elder Scrolls displays the details of the contact added","lastModifiedDate":"2024-03-03"},{"lineNumber":313,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":314,"author":{"gitId":"CJerrong"},"content":" Use case ends.","lastModifiedDate":"2024-03-03"},{"lineNumber":315,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":316,"author":{"gitId":"CJerrong"},"content":"**Extensions**","lastModifiedDate":"2024-03-03"},{"lineNumber":317,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":318,"author":{"gitId":"CJerrong"},"content":"* 2a. The given contact details are invalid.","lastModifiedDate":"2024-03-03"},{"lineNumber":319,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":320,"author":{"gitId":"CJerrong"},"content":" * 2a1. Elder Scrolls shows an error message.","lastModifiedDate":"2024-03-03"},{"lineNumber":321,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":322,"author":{"gitId":"CJerrong"},"content":" Use case ends.","lastModifiedDate":"2024-03-03"},{"lineNumber":323,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":324,"author":{"gitId":"CJerrong"},"content":"* 3a. The given contact details are already in the contact book","lastModifiedDate":"2024-03-03"},{"lineNumber":325,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":326,"author":{"gitId":"CJerrong"},"content":" * 3a1. Elder scrolls shows an error message.","lastModifiedDate":"2024-03-03"},{"lineNumber":327,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":328,"author":{"gitId":"CJerrong"},"content":" Use case ends.","lastModifiedDate":"2024-03-03"},{"lineNumber":329,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":330,"author":{"gitId":"sdevih"},"content":"**Use case: UC02 - Delete a contact**","lastModifiedDate":"2024-03-15"},{"lineNumber":331,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":332,"author":{"gitId":"CJerrong"},"content":"**MSS**","lastModifiedDate":"2024-03-03"},{"lineNumber":333,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":334,"author":{"gitId":"CJerrong"},"content":"1. User requests to list all contacts","lastModifiedDate":"2024-03-03"},{"lineNumber":335,"author":{"gitId":"CJerrong"},"content":"2. Elder Scrolls shows a list of all contacts","lastModifiedDate":"2024-03-03"},{"lineNumber":336,"author":{"gitId":"CJerrong"},"content":"3. User requests to delete a specific contact using its unique ID (UID)","lastModifiedDate":"2024-03-03"},{"lineNumber":337,"author":{"gitId":"CJerrong"},"content":"4. Elder Scrolls deletes the contact based on its UID","lastModifiedDate":"2024-03-03"},{"lineNumber":338,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":339,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":340,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":341,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23"},{"lineNumber":342,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":343,"author":{"gitId":"-"},"content":"* 2a. The list is empty.","lastModifiedDate":"2020-05-23"},{"lineNumber":344,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":345,"author":{"gitId":"CJerrong"},"content":" * 2a1. Elder Scrolls shows an error message.","lastModifiedDate":"2024-03-03"},{"lineNumber":346,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":347,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":348,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":349,"author":{"gitId":"CJerrong"},"content":"* 3a. The given UID is invalid.","lastModifiedDate":"2024-03-03"},{"lineNumber":350,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":351,"author":{"gitId":"CJerrong"},"content":" * 3a1. Elder Scrolls shows an error message.","lastModifiedDate":"2024-03-03"},{"lineNumber":352,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":353,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2020-05-23"},{"lineNumber":354,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":355,"author":{"gitId":"CJerrong"},"content":"* 4a. The contact requested to be deleted is still paired.","lastModifiedDate":"2024-03-03"},{"lineNumber":356,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":357,"author":{"gitId":"CJerrong"},"content":" * 4a1. Elder Scrolls shows an error message.","lastModifiedDate":"2024-03-03"},{"lineNumber":358,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":359,"author":{"gitId":"CJerrong"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-03"},{"lineNumber":360,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":361,"author":{"gitId":"sdevih"},"content":"**Use case: UC03 - List all contacts**","lastModifiedDate":"2024-03-15"},{"lineNumber":362,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":363,"author":{"gitId":"CJerrong"},"content":"**MSS**","lastModifiedDate":"2024-03-03"},{"lineNumber":364,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":365,"author":{"gitId":"CJerrong"},"content":"1. User requests to list all contacts","lastModifiedDate":"2024-03-03"},{"lineNumber":366,"author":{"gitId":"CJerrong"},"content":"2. Elder Scrolls shows a list of all contacts","lastModifiedDate":"2024-03-03"},{"lineNumber":367,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":368,"author":{"gitId":"CJerrong"},"content":" Use case ends.","lastModifiedDate":"2024-03-03"},{"lineNumber":369,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":370,"author":{"gitId":"CJerrong"},"content":"**Extensions**","lastModifiedDate":"2024-03-03"},{"lineNumber":371,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":372,"author":{"gitId":"CJerrong"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-03-03"},{"lineNumber":373,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":374,"author":{"gitId":"CJerrong"},"content":" * 2a1. Elder Scrolls shows an error message.","lastModifiedDate":"2024-03-03"},{"lineNumber":375,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":376,"author":{"gitId":"CJerrong"},"content":" Use case ends.","lastModifiedDate":"2024-03-03"},{"lineNumber":377,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":378,"author":{"gitId":"sdevih"},"content":"**Use case: UC04 - List all volunteer contacts**","lastModifiedDate":"2024-03-15"},{"lineNumber":379,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":380,"author":{"gitId":"CJerrong"},"content":"**MSS**","lastModifiedDate":"2024-03-03"},{"lineNumber":381,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":382,"author":{"gitId":"CJerrong"},"content":"1. User requests to list all volunteer contacts","lastModifiedDate":"2024-03-03"},{"lineNumber":383,"author":{"gitId":"CJerrong"},"content":"2. Elder Scrolls shows a list of all volunteer contacts","lastModifiedDate":"2024-03-03"},{"lineNumber":384,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":385,"author":{"gitId":"CJerrong"},"content":" Use case ends.","lastModifiedDate":"2024-03-03"},{"lineNumber":386,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":387,"author":{"gitId":"CJerrong"},"content":"**Extensions**","lastModifiedDate":"2024-03-03"},{"lineNumber":388,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":389,"author":{"gitId":"CJerrong"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-03-03"},{"lineNumber":390,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":391,"author":{"gitId":"CJerrong"},"content":" * 2a1. Elder Scrolls shows an error message.","lastModifiedDate":"2024-03-03"},{"lineNumber":392,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":393,"author":{"gitId":"CJerrong"},"content":" Use case ends.","lastModifiedDate":"2024-03-03"},{"lineNumber":394,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":395,"author":{"gitId":"CJerrong"},"content":"* 3a. The incorrect filtering parameter used, ie. \u0027vol\u0027 not used","lastModifiedDate":"2024-03-03"},{"lineNumber":396,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":397,"author":{"gitId":"CJerrong"},"content":" * 3a1. Elder Scrolls shows an error message.","lastModifiedDate":"2024-03-03"},{"lineNumber":398,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":399,"author":{"gitId":"CJerrong"},"content":" Use case ends.","lastModifiedDate":"2024-03-03"},{"lineNumber":400,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":401,"author":{"gitId":"sdevih"},"content":"**Use case: UC05 - List all befriendee contacts**","lastModifiedDate":"2024-03-15"},{"lineNumber":402,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":403,"author":{"gitId":"CJerrong"},"content":"**MSS**","lastModifiedDate":"2024-03-03"},{"lineNumber":404,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":405,"author":{"gitId":"CJerrong"},"content":"1. User requests to list all befriendee contacts","lastModifiedDate":"2024-03-03"},{"lineNumber":406,"author":{"gitId":"CJerrong"},"content":"2. Elder Scrolls shows a list of all befriendee contacts","lastModifiedDate":"2024-03-03"},{"lineNumber":407,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":408,"author":{"gitId":"CJerrong"},"content":" Use case ends.","lastModifiedDate":"2024-03-03"},{"lineNumber":409,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":410,"author":{"gitId":"CJerrong"},"content":"**Extensions**","lastModifiedDate":"2024-03-03"},{"lineNumber":411,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":412,"author":{"gitId":"CJerrong"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-03-03"},{"lineNumber":413,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":414,"author":{"gitId":"CJerrong"},"content":" * 2a1. Elder Scrolls shows an error message.","lastModifiedDate":"2024-03-03"},{"lineNumber":415,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":416,"author":{"gitId":"CJerrong"},"content":" Use case ends.","lastModifiedDate":"2024-03-03"},{"lineNumber":417,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":418,"author":{"gitId":"CJerrong"},"content":"* 3a. The incorrect filtering parameter used, ie. \u0027bef\u0027 is not used","lastModifiedDate":"2024-03-03"},{"lineNumber":419,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":420,"author":{"gitId":"CJerrong"},"content":" * 3a1. Elder Scrolls shows an error message.","lastModifiedDate":"2024-03-03"},{"lineNumber":421,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":422,"author":{"gitId":"CJerrong"},"content":" Use case ends.","lastModifiedDate":"2024-03-03"},{"lineNumber":423,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":424,"author":{"gitId":"sdevih"},"content":"**Use case: UC06 - Pair a volunteer and befriendee**","lastModifiedDate":"2024-03-15"},{"lineNumber":425,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":426,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23"},{"lineNumber":427,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":428,"author":{"gitId":"sdevih"},"content":"1. User \u003cu\u003erequests to list all contacts (UC03)\u003c/u\u003e.","lastModifiedDate":"2024-03-15"},{"lineNumber":429,"author":{"gitId":"sdevih"},"content":"2. Elder Scrolls shows a list of contacts.","lastModifiedDate":"2024-03-15"},{"lineNumber":430,"author":{"gitId":"sdevih"},"content":"3. User requests to pair a specific volunteer and befriendee in the list.","lastModifiedDate":"2024-03-03"},{"lineNumber":431,"author":{"gitId":"sdevih"},"content":"4. Elder Scrolls pairs the specified volunteer and befriendee.","lastModifiedDate":"2024-03-03"},{"lineNumber":432,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":433,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":434,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":435,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23"},{"lineNumber":436,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":437,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":438,"author":{"gitId":"sdevih"},"content":"* 3a. The given UID is invalid.","lastModifiedDate":"2024-03-03"},{"lineNumber":439,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":440,"author":{"gitId":"sdevih"},"content":" * 3a1. Elder Scrolls shows an error message indicating that the given UID is invalid.","lastModifiedDate":"2024-03-15"},{"lineNumber":441,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":442,"author":{"gitId":"sdevih"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-03"},{"lineNumber":443,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":444,"author":{"gitId":"sdevih"},"content":"* 3b. The given UIDs are both volunteers or both befriendees.","lastModifiedDate":"2024-03-03"},{"lineNumber":445,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":446,"author":{"gitId":"sdevih"},"content":" * 3b1. Elder Scrolls shows an error message indicating that the given UIDs are not of different types.","lastModifiedDate":"2024-03-15"},{"lineNumber":447,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":448,"author":{"gitId":"sdevih"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-03"},{"lineNumber":449,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":450,"author":{"gitId":"sdevih"},"content":"* 3b. One or both given UIDs are already paired.","lastModifiedDate":"2024-03-15"},{"lineNumber":451,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":452,"author":{"gitId":"sdevih"},"content":" * 3b1. Elder Scrolls shows an error message indicating that the given UID(s) are already paired.","lastModifiedDate":"2024-03-15"},{"lineNumber":453,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":454,"author":{"gitId":"sdevih"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-15"},{"lineNumber":455,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":456,"author":{"gitId":"sdevih"},"content":"**Use case: UC07 - Tag contacts**","lastModifiedDate":"2024-03-15"},{"lineNumber":457,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":458,"author":{"gitId":"sdevih"},"content":"**MSS**","lastModifiedDate":"2024-03-03"},{"lineNumber":459,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":460,"author":{"gitId":"sdevih"},"content":"1. User \u003cu\u003erequests to list all contacts (UC03)\u003c/u\u003e.","lastModifiedDate":"2024-03-15"},{"lineNumber":461,"author":{"gitId":"sdevih"},"content":"2. Elder Scrolls shows a list of contacts.","lastModifiedDate":"2024-03-15"},{"lineNumber":462,"author":{"gitId":"sdevih"},"content":"3. User requests to tag a specific person with a property.","lastModifiedDate":"2024-03-03"},{"lineNumber":463,"author":{"gitId":"sdevih"},"content":"4. Elder Scrolls tags the specified person in the list with that specified property.","lastModifiedDate":"2024-03-03"},{"lineNumber":464,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":465,"author":{"gitId":"sdevih"},"content":" Use case ends.","lastModifiedDate":"2024-03-03"},{"lineNumber":466,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":467,"author":{"gitId":"sdevih"},"content":"**Extensions**","lastModifiedDate":"2024-03-03"},{"lineNumber":468,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":469,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":470,"author":{"gitId":"sdevih"},"content":"* 3a. The given UID is invalid.","lastModifiedDate":"2024-03-03"},{"lineNumber":471,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":472,"author":{"gitId":"sdevih"},"content":" * 3a1. Elder Scrolls shows an error message.","lastModifiedDate":"2024-03-03"},{"lineNumber":473,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":474,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2020-05-23"},{"lineNumber":475,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":476,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2024-03-03"},{"lineNumber":477,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23"},{"lineNumber":478,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":479,"author":{"gitId":"-"},"content":"1. Should work on any _mainstream OS_ as long as it has Java `11` or above installed.","lastModifiedDate":"2020-05-23"},{"lineNumber":480,"author":{"gitId":"-"},"content":"2. Should be able to hold up to 1000 persons without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":481,"author":{"gitId":"-"},"content":"3. A user with above average typing speed for regular English text (i.e. not code, not system admin commands) should be able to accomplish most of the tasks faster using commands than using the mouse.","lastModifiedDate":"2020-05-23"},{"lineNumber":482,"author":{"gitId":"chaaaaun"},"content":"4. Should have a simple menu structure with clear labels, guiding users to key actions without extensive tutorials.","lastModifiedDate":"2024-03-03"},{"lineNumber":483,"author":{"gitId":"soons1"},"content":"5. Should have graceful error handling with clear human-readable messages to the user to guide them in fixing their command.","lastModifiedDate":"2024-03-15"},{"lineNumber":484,"author":{"gitId":"chaaaaun"},"content":"6. Ability to filter contacts based on relevant criteria (location, demographics, skills, availability) to aid in pairing.","lastModifiedDate":"2024-03-03"},{"lineNumber":485,"author":{"gitId":"chaaaaun"},"content":"7. Should have a robust data storage mechanism that can handle data corruption and large data sets.","lastModifiedDate":"2024-03-03"},{"lineNumber":486,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":487,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23"},{"lineNumber":488,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":489,"author":{"gitId":"soons1"},"content":"* **Befriendee**: Elderly person seeking companionship","lastModifiedDate":"2024-03-03"},{"lineNumber":490,"author":{"gitId":"soons1"},"content":"* **Befriending Volunteer Organisations**: An organisation that aims to provide companionship to seniors by pairing them with volunteers","lastModifiedDate":"2024-03-03"},{"lineNumber":491,"author":{"gitId":"soons1"},"content":"* **Pairing**: Assigning of a volunteer to a befriendee and a befriendee to a volunteer (one-to-one)) so that they become a pair","lastModifiedDate":"2024-03-15"},{"lineNumber":492,"author":{"gitId":"soons1"},"content":"* **Tagging**: Adding an arbitrary detail(s) to a volunteer or befriendee profile to aid in identifying special conditions","lastModifiedDate":"2024-03-15"},{"lineNumber":493,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":494,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":495,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":496,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23"},{"lineNumber":497,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":498,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":499,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":500,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2020-05-23"},{"lineNumber":501,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":502,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":503,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":504,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":505,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":506,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":507,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":508,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":509,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23"},{"lineNumber":510,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":511,"author":{"gitId":"-"},"content":" 1. Double-click the jar file Expected: Shows the GUI with a set of sample contacts. The window size may not be optimum.","lastModifiedDate":"2020-05-23"},{"lineNumber":512,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":513,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23"},{"lineNumber":514,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":515,"author":{"gitId":"-"},"content":" 1. Resize the window to an optimum size. Move the window to a different location. Close the window.","lastModifiedDate":"2020-05-23"},{"lineNumber":516,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":517,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":518,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23"},{"lineNumber":519,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":520,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":521,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":522,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23"},{"lineNumber":523,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":524,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23"},{"lineNumber":525,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":526,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23"},{"lineNumber":527,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":528,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":529,"author":{"gitId":"-"},"content":" Expected: First contact is deleted from the list. Details of the deleted contact shown in the status message. Timestamp in the status bar is updated.","lastModifiedDate":"2020-05-23"},{"lineNumber":530,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":531,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":532,"author":{"gitId":"-"},"content":" Expected: No person is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2020-05-23"},{"lineNumber":533,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":534,"author":{"gitId":"-"},"content":" 1. Other incorrect delete commands to try: `delete`, `delete x`, `...` (where x is larger than the list size)\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":535,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":536,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":537,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":538,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":539,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":540,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":541,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":542,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":543,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23"},{"lineNumber":544,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":545,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"soons1":16,"CJerrong":93,"gerteck":6,"chaaaaun":7,"-":377,"sdevih":46}},{"path":"docs/SettingUp.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: Setting up and getting started","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"{:toc}","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"## Setting up the project in your computer","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-warning\"\u003e:exclamation: **Caution:**","lastModifiedDate":"2020-06-07"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"Follow the steps in the following guide precisely. Things will not work out if you deviate in some steps.","lastModifiedDate":"2020-06-07"},{"lineNumber":17,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"First, **fork** this repo, and **clone** the fork into your computer.","lastModifiedDate":"2020-06-07"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-07"},{"lineNumber":21,"author":{"gitId":"-"},"content":"If you plan to use Intellij IDEA (highly recommended):","lastModifiedDate":"2020-06-07"},{"lineNumber":22,"author":{"gitId":"-"},"content":"1. **Configure the JDK**: Follow the guide [_[se-edu/guides] IDEA: Configuring the JDK_](https://se-education.org/guides/tutorials/intellijJdk.html) to to ensure Intellij is configured to use **JDK 11**.","lastModifiedDate":"2020-06-07"},{"lineNumber":23,"author":{"gitId":"-"},"content":"1. **Import the project as a Gradle project**: Follow the guide [_[se-edu/guides] IDEA: Importing a Gradle project_](https://se-education.org/guides/tutorials/intellijImportGradleProject.html) to import the project into IDEA.\u003cbr\u003e","lastModifiedDate":"2020-06-07"},{"lineNumber":24,"author":{"gitId":"-"},"content":" :exclamation: Note: Importing a Gradle project is slightly different from importing a normal Java project.","lastModifiedDate":"2020-06-07"},{"lineNumber":25,"author":{"gitId":"-"},"content":"1. **Verify the setup**:","lastModifiedDate":"2020-06-07"},{"lineNumber":26,"author":{"gitId":"chaaaaun"},"content":" 1. Run the `scrolls.elder.Main` and try a few commands.","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" 1. [Run the tests](Testing.md) to ensure they all pass.","lastModifiedDate":"2020-06-07"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-07"},{"lineNumber":29,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":"## Before writing code","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":"1. **Configure the coding style**","lastModifiedDate":"2020-06-07"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" If using IDEA, follow the guide [_[se-edu/guides] IDEA: Configuring the code style_](https://se-education.org/guides/tutorials/intellijCodeStyle.html) to set up IDEA\u0027s coding style to match ours.","lastModifiedDate":"2020-09-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e:bulb: **Tip:**","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" Optionally, you can follow the guide [_[se-edu/guides] Using Checkstyle_](https://se-education.org/guides/tutorials/checkstyle.html) to find how to use the CheckStyle within IDEA e.g., to report problems _as_ you write code.","lastModifiedDate":"2020-06-07"},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"1. **Set up CI**","lastModifiedDate":"2020-06-07"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" This project comes with a GitHub Actions config files (in `.github/workflows` folder). When GitHub detects those files, it will run the CI for your project automatically at each push to the `master` branch or to any PR. No set up required.","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"1. **Learn the design**","lastModifiedDate":"2020-06-07"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" When you are ready to start coding, we recommend that you get some sense of the overall design by reading about [AddressBook’s architecture](DeveloperGuide.md#architecture).","lastModifiedDate":"2020-06-07"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"1. **Do the tutorials**","lastModifiedDate":"2020-06-07"},{"lineNumber":51,"author":{"gitId":"-"},"content":" These tutorials will help you get acquainted with the codebase.","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * [Tracing code](tutorials/TracingCode.md)","lastModifiedDate":"2020-07-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * [Adding a new command](tutorials/AddRemark.md)","lastModifiedDate":"2020-07-29"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * [Removing fields](tutorials/RemovingFields.md)","lastModifiedDate":"2021-08-01"}],"authorContributionMap":{"chaaaaun":1,"-":54}},{"path":"docs/Testing.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: Testing guide","lastModifiedDate":"2020-06-07"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"{:toc}","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"## Running tests","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"There are two ways to run tests.","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"* **Method 1: Using IntelliJ JUnit test runner**","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * To run all tests, right-click on the `src/test/java` folder and choose `Run \u0027All Tests\u0027`","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * To run a subset of tests, you can right-click on a test package,","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":" test class, or a test and choose `Run \u0027ABC\u0027`","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"* **Method 2: Using Gradle**","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Open a console and run the command `gradlew clean test` (Mac/Linux: `./gradlew clean test`)","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-secondary\"\u003e:link: **Link**: Read [this Gradle Tutorial from the se-edu/guides](https://se-education.org/guides/tutorials/gradle.html) to learn more about using Gradle.","lastModifiedDate":"2020-06-07"},{"lineNumber":23,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":"## Types of tests","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"This project has three types of tests:","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":"1. *Unit tests* targeting the lowest level methods/classes.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":" e.g. `seedu.address.commons.StringUtilTest`","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":"1. *Integration tests* that are checking the integration of multiple code units (those code units are assumed to be working).\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"chaaaaun"},"content":" e.g. `storage.scrolls.elder.StorageManagerTest`","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":"1. Hybrids of unit and integration tests. These test are checking multiple code units as well as how the are connected together.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"chaaaaun"},"content":" e.g. `logic.scrolls.elder.LogicManagerTest`","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"chaaaaun":2,"-":34}},{"path":"docs/UserGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: User Guide","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"AddressBook Level 3 (AB3) is a **desktop app for managing contacts, optimized for use via a Command Line Interface** (CLI) while still having the benefits of a Graphical User Interface (GUI). If you can type fast, AB3 can get your contact management tasks done faster than traditional GUI apps.","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"{:toc}","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"## Quick start","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"1. Ensure you have Java `11` or above installed in your Computer.","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"1. Download the latest `addressbook.jar` from [here](https://github.com/se-edu/addressbook-level3/releases).","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"1. Copy the file to the folder you want to use as the _home folder_ for your AddressBook.","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"1. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar addressbook.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2023-01-01"},{"lineNumber":22,"author":{"gitId":"-"},"content":" A GUI similar to the below should appear in a few seconds. Note how the app contains some sample data.\u003cbr\u003e","lastModifiedDate":"2023-01-01"},{"lineNumber":23,"author":{"gitId":"-"},"content":" ![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"1. Type the command in the command box and press Enter to execute it. e.g. typing **`help`** and pressing Enter will open the help window.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":" Some example commands you can try:","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * `list` : Lists all contacts.","lastModifiedDate":"2023-01-01"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01` : Adds a contact named `John Doe` to the Address Book.","lastModifiedDate":"2023-01-01"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * `delete 3` : Deletes the 3rd contact shown in the current list.","lastModifiedDate":"2023-01-01"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * `clear` : Deletes all contacts.","lastModifiedDate":"2023-01-01"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * `exit` : Exits the app.","lastModifiedDate":"2023-01-01"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"1. Refer to the [Features](#features) below for details of each command.","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"block\" class\u003d\"alert alert-info\"\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"**:information_source: Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"* Words in `UPPER_CASE` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" e.g. in `add n/NAME`, `NAME` is a parameter which can be used as `add n/John Doe`.","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"* Items in square brackets are optional.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" e.g `n/NAME [t/TAG]` can be used as `n/John Doe t/friend` or as `n/John Doe`.","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"* Items with `…`​ after them can be used multiple times including zero times.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" e.g. `[t/TAG]…​` can be used as ` ` (i.e. 0 times), `t/friend`, `t/friend t/family` etc.","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"* Parameters can be in any order.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" e.g. if the command specifies `n/NAME p/PHONE_NUMBER`, `p/PHONE_NUMBER n/NAME` is also acceptable.","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"* Extraneous parameters for commands that do not take in parameters (such as `help`, `list`, `exit` and `clear`) will be ignored.\u003cbr\u003e","lastModifiedDate":"2021-02-03"},{"lineNumber":61,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2021-02-03"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03"},{"lineNumber":63,"author":{"gitId":"-"},"content":"* If you are using a PDF version of this document, be careful when copying and pasting commands that span multiple lines as space characters surrounding line-breaks may be omitted when copied over to the application.","lastModifiedDate":"2023-06-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"### Viewing help : `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"Shows a message explaning how to access the help page.","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"Format: `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"CJerrong"},"content":"### Adding a volunteer: `add`","lastModifiedDate":"2024-03-15"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"CJerrong"},"content":"Adds a volunteer to the address book.","lastModifiedDate":"2024-03-15"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"CJerrong"},"content":"Format: `add n/NAME r/ROLE p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]…​`","lastModifiedDate":"2024-03-15"},{"lineNumber":80,"author":{"gitId":"CJerrong"},"content":"Where `ROLE` must be `volunteer` to add volunteer.","lastModifiedDate":"2024-03-15"},{"lineNumber":81,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e:bulb: **Tip:**","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"A person can have any number of tags (including 0)","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"CJerrong"},"content":"* `add n/John Doe r/volunteer p/98765432 e/johnd@example.com a/John street, block 123, #01-01`","lastModifiedDate":"2024-03-15"},{"lineNumber":87,"author":{"gitId":"CJerrong"},"content":"* `add n/Betsy Crowe r/volunteer t/friend e/betsycrowe@example.com a/Newgate Prison p/1234567 t/criminal`","lastModifiedDate":"2024-03-15"},{"lineNumber":88,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":89,"author":{"gitId":"CJerrong"},"content":"### Adding a befriendee: `add`","lastModifiedDate":"2024-03-15"},{"lineNumber":90,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":91,"author":{"gitId":"CJerrong"},"content":"Adds a befriendee to the address book.","lastModifiedDate":"2024-03-15"},{"lineNumber":92,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":93,"author":{"gitId":"CJerrong"},"content":"Format: `add n/NAME r/ROLE p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]…​`","lastModifiedDate":"2024-03-15"},{"lineNumber":94,"author":{"gitId":"CJerrong"},"content":"Where `ROLE` must be `befriendee` to add befriendee.","lastModifiedDate":"2024-03-15"},{"lineNumber":95,"author":{"gitId":"CJerrong"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e:bulb: **Tip:**","lastModifiedDate":"2024-03-15"},{"lineNumber":96,"author":{"gitId":"CJerrong"},"content":"A person can have any number of tags (including 0)","lastModifiedDate":"2024-03-15"},{"lineNumber":97,"author":{"gitId":"CJerrong"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"CJerrong"},"content":"Examples:","lastModifiedDate":"2024-03-15"},{"lineNumber":100,"author":{"gitId":"CJerrong"},"content":"* `add n/John Doe r/befriendee p/98765432 e/johnd@example.com a/John street, block 123, #01-01`","lastModifiedDate":"2024-03-15"},{"lineNumber":101,"author":{"gitId":"CJerrong"},"content":"* `add n/Betsy Crowe r/befriendee t/friend e/betsycrowe@example.com a/Newgate Prison p/1234567 t/criminal`","lastModifiedDate":"2024-03-15"},{"lineNumber":102,"author":{"gitId":"-"},"content":"### Listing all persons : `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":"Shows a list of all persons in the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":"Format: `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":"### Editing a person : `edit`","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":"Edits an existing person in the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":"Format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAG]…​`","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":"* Edits the person at the specified `INDEX`. The index refers to the index number shown in the displayed person list. The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2020-05-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":"* At least one of the optional fields must be provided.","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":"* Existing values will be updated to the input values.","lastModifiedDate":"2020-05-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":"* When editing tags, the existing tags of the person will be removed i.e adding of tags is not cumulative.","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":"* You can remove all the person’s tags by typing `t/` without","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":" specifying any tags after it.","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":"* `edit 1 p/91234567 e/johndoe@example.com` Edits the phone number and email address of the 1st person to be `91234567` and `johndoe@example.com` respectively.","lastModifiedDate":"2020-05-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":"* `edit 2 n/Betsy Crower t/` Edits the name of the 2nd person to be `Betsy Crower` and clears all existing tags.","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":"### Locating persons by name: `find`","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":"Finds persons whose names contain any of the given keywords.","lastModifiedDate":"2020-05-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":"Format: `find KEYWORD [MORE_KEYWORDS]`","lastModifiedDate":"2020-05-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":"* The search is case-insensitive. e.g `hans` will match `Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":"* The order of the keywords does not matter. e.g. `Hans Bo` will match `Bo Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":"* Only the name is searched.","lastModifiedDate":"2020-05-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":"* Only full words will be matched e.g. `Han` will not match `Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":"* Persons matching at least one keyword will be returned (i.e. `OR` search).","lastModifiedDate":"2020-05-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":" e.g. `Hans Bo` will return `Hans Gruber`, `Bo Yang`","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"* `find John` returns `john` and `John Doe`","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"* `find alex david` returns `Alex Yeoh`, `David Li`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":" ![result for \u0027find alex david\u0027](images/findAlexDavidResult.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":"### Deleting a person : `delete`","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":"Deletes the specified person from the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":"Format: `delete INDEX`","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":"* Deletes the person at the specified `INDEX`.","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":"* The index refers to the index number shown in the displayed person list.","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":"* `list` followed by `delete 2` deletes the 2nd person in the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"* `find Betsy` followed by `delete 1` deletes the 1st person in the results of the `find` command.","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"### Clearing all entries : `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":"Clears all entries from the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"Format: `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":"AddressBook data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":175,"author":{"gitId":"-"},"content":"AddressBook data are saved automatically as a JSON file `[JAR file location]/data/addressbook.json`. Advanced users are welcome to update data directly by editing that data file.","lastModifiedDate":"2023-09-08"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":177,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-warning\"\u003e:exclamation: **Caution:**","lastModifiedDate":"2021-02-04"},{"lineNumber":178,"author":{"gitId":"-"},"content":"If your changes to the data file makes its format invalid, AddressBook will discard all data and start with an empty data file at the next run. Hence, it is recommended to take a backup of the file before editing it.\u003cbr\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":179,"author":{"gitId":"-"},"content":"Furthermore, certain edits can cause the AddressBook to behave in unexpected ways (e.g., if a value entered is outside of the acceptable range). Therefore, edit the data file only if you are confident that you can update it correctly.","lastModifiedDate":"2024-02-09"},{"lineNumber":180,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-02-04"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":182,"author":{"gitId":"-"},"content":"### Archiving data files `[coming in v2.0]`","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"_Details coming soon ..._","lastModifiedDate":"2021-02-04"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":190,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":"**A**: Install the app in the other computer and overwrite the empty data file it creates with the file that contains the data of your previous AddressBook home folder.","lastModifiedDate":"2020-05-23"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":"## Known issues","lastModifiedDate":"2023-09-08"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":197,"author":{"gitId":"-"},"content":"1. **When using multiple screens**, if you move the application to a secondary screen, and later switch to using only the primary screen, the GUI will open off-screen. The remedy is to delete the `preferences.json` file created by the application before running the application again.","lastModifiedDate":"2023-09-08"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":199,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":201,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":"Action | Format, Examples","lastModifiedDate":"2020-05-23"},{"lineNumber":204,"author":{"gitId":"-"},"content":"--------|------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":"**Add** | `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]…​` \u003cbr\u003e e.g., `add n/James Ho p/22224444 e/jamesho@example.com a/123, Clementi Rd, 1234665 t/friend t/colleague`","lastModifiedDate":"2020-05-23"},{"lineNumber":206,"author":{"gitId":"-"},"content":"**Clear** | `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":"**Delete** | `delete INDEX`\u003cbr\u003e e.g., `delete 3`","lastModifiedDate":"2020-05-23"},{"lineNumber":208,"author":{"gitId":"-"},"content":"**Edit** | `edit INDEX [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [t/TAG]…​`\u003cbr\u003e e.g.,`edit 2 n/James Lee e/jameslee@example.com`","lastModifiedDate":"2020-05-23"},{"lineNumber":209,"author":{"gitId":"-"},"content":"**Find** | `find KEYWORD [MORE_KEYWORDS]`\u003cbr\u003e e.g., `find James Jake`","lastModifiedDate":"2020-05-23"},{"lineNumber":210,"author":{"gitId":"-"},"content":"**List** | `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":"**Help** | `help`","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"CJerrong":19,"-":192}},{"path":"docs/_sass/minima/_base.scss","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"html {","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":" font-size: $base-font-size;","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * Reset some basic elements","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"body, h1, h2, h3, h4, h5, h6,","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"p, blockquote, pre, hr,","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"dl, dd, ol, ul, figure {","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":" margin: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":" padding: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Basic styling","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"body {","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":" font: $base-font-weight #{$base-font-size}/#{$base-line-height} $base-font-family;","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":" color: $text-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":" background-color: $background-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":" -webkit-text-size-adjust: 100%;","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":" -webkit-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":" -moz-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":" -o-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":" font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":" font-kerning: normal;","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" display: flex;","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":" min-height: 100vh;","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":" flex-direction: column;","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":" overflow-wrap: break-word;","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Set `margin-bottom` to maintain vertical rhythm","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"h1, h2, h3, h4, h5, h6,","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"p, blockquote, pre,","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"ul, ol, dl, figure,","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"%vertical-rhythm {","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit / 2;","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"hr {","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" margin-top: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * `main` element","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"main {","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" display: block; /* Default value of `display` of `main` element is \u0027inline\u0027 in IE 11. */","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Images","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"img {","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" max-width: 100%;","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" vertical-align: middle;","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * Figures","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"figure \u003e img {","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"figcaption {","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" font-size: $small-font-size;","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Lists","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"ul, ol {","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" margin-left: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"li {","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":" \u003e ul,","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":" \u003e ol {","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":" margin-bottom: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Headings","lastModifiedDate":"2020-05-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":"h1, h2, h3, h4, h5, h6 {","lastModifiedDate":"2020-05-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":" font-weight: $base-font-weight;","lastModifiedDate":"2020-05-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":" * Links","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":"a {","lastModifiedDate":"2020-05-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":" color: $link-base-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":" text-decoration: none;","lastModifiedDate":"2020-05-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":" \u0026:visited {","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":" color: $link-visited-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":" \u0026:hover {","lastModifiedDate":"2020-05-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":" color: $text-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":" text-decoration: underline;","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":" .social-media-list \u0026:hover {","lastModifiedDate":"2020-05-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":" text-decoration: none;","lastModifiedDate":"2020-05-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":" .username {","lastModifiedDate":"2020-05-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":" text-decoration: underline;","lastModifiedDate":"2020-05-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":" * Blockquotes","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"blockquote {","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":" color: $brand-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":" border-left: 4px solid $brand-color-light;","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit / 2;","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":" @include relative-font-size(1.125);","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":" font-style: italic;","lastModifiedDate":"2020-05-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":" \u003e :last-child {","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":" margin-bottom: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":" i, em {","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":" font-style: normal;","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":" * Code formatting","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"pre,","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":"code {","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":" font-family: $code-font-family;","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":" font-size: 0.9375em;","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":" border: 1px solid $brand-color-light;","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":" border-radius: 3px;","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":" background-color: $code-background-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"code {","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":" padding: 1px 5px;","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":"pre {","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":" padding: 8px 12px;","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":" overflow-x: auto;","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":" \u003e code {","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":" border: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":" padding-right: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":" padding-left: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":".highlight {","lastModifiedDate":"2020-05-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":" border-radius: 3px;","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":" background: $code-background-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":" @extend %vertical-rhythm;","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":190,"author":{"gitId":"-"},"content":" .highlighter-rouge \u0026 {","lastModifiedDate":"2020-05-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":" background: $code-background-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":198,"author":{"gitId":"-"},"content":" * Wrapper","lastModifiedDate":"2020-05-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"author":{"gitId":"-"},"content":".wrapper {","lastModifiedDate":"2020-05-23"},{"lineNumber":201,"author":{"gitId":"-"},"content":" max-width: calc(#{$content-width} - (#{$spacing-unit}));","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":" margin-right: auto;","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":" margin-left: auto;","lastModifiedDate":"2020-05-23"},{"lineNumber":204,"author":{"gitId":"-"},"content":" padding-right: $spacing-unit / 2;","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit / 2;","lastModifiedDate":"2020-05-23"},{"lineNumber":206,"author":{"gitId":"-"},"content":" @extend %clearfix;","lastModifiedDate":"2020-05-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":208,"author":{"gitId":"-"},"content":" @media screen and (min-width: $on-large) {","lastModifiedDate":"2020-05-23"},{"lineNumber":209,"author":{"gitId":"-"},"content":" max-width: calc(#{$content-width} - (#{$spacing-unit} * 2));","lastModifiedDate":"2020-05-23"},{"lineNumber":210,"author":{"gitId":"-"},"content":" padding-right: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":212,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":213,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":217,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":218,"author":{"gitId":"-"},"content":" * Clearfix","lastModifiedDate":"2020-05-23"},{"lineNumber":219,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":220,"author":{"gitId":"-"},"content":"%clearfix:after {","lastModifiedDate":"2020-05-23"},{"lineNumber":221,"author":{"gitId":"-"},"content":" content: \"\";","lastModifiedDate":"2020-05-23"},{"lineNumber":222,"author":{"gitId":"-"},"content":" display: table;","lastModifiedDate":"2020-05-23"},{"lineNumber":223,"author":{"gitId":"-"},"content":" clear: both;","lastModifiedDate":"2020-05-23"},{"lineNumber":224,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":228,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":" * Icons","lastModifiedDate":"2020-05-23"},{"lineNumber":230,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":".orange {","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":" color: #f66a0a;","lastModifiedDate":"2020-05-23"},{"lineNumber":234,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":".grey {","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":" color: #828282;","lastModifiedDate":"2020-05-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":" * Tables","lastModifiedDate":"2020-05-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":"table {","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":" width: 100%;","lastModifiedDate":"2020-05-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":" text-align: $table-text-align;","lastModifiedDate":"2020-05-23"},{"lineNumber":247,"author":{"gitId":"-"},"content":" color: $table-text-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":248,"author":{"gitId":"-"},"content":" border-collapse: collapse;","lastModifiedDate":"2020-05-23"},{"lineNumber":249,"author":{"gitId":"-"},"content":" border: 1px solid $table-border-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":250,"author":{"gitId":"-"},"content":" tr {","lastModifiedDate":"2020-05-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":" \u0026:nth-child(even) {","lastModifiedDate":"2020-05-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":" background-color: $table-zebra-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":254,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":" th, td {","lastModifiedDate":"2020-05-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":" padding: ($spacing-unit / 3) ($spacing-unit / 2);","lastModifiedDate":"2020-05-23"},{"lineNumber":257,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":258,"author":{"gitId":"-"},"content":" th {","lastModifiedDate":"2020-05-23"},{"lineNumber":259,"author":{"gitId":"-"},"content":" background-color: $table-header-bg-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"-"},"content":" border: 1px solid $table-header-border;","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":262,"author":{"gitId":"-"},"content":" td {","lastModifiedDate":"2020-05-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":" border: 1px solid $table-border-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":264,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":266,"author":{"gitId":"-"},"content":" @include media-query($on-laptop) {","lastModifiedDate":"2020-05-23"},{"lineNumber":267,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2020-05-23"},{"lineNumber":268,"author":{"gitId":"-"},"content":" overflow-x: auto;","lastModifiedDate":"2020-05-23"},{"lineNumber":269,"author":{"gitId":"-"},"content":" -webkit-overflow-scrolling: touch;","lastModifiedDate":"2020-05-23"},{"lineNumber":270,"author":{"gitId":"-"},"content":" -ms-overflow-style: -ms-autohiding-scrollbar;","lastModifiedDate":"2020-05-23"},{"lineNumber":271,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":272,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-01-11"},{"lineNumber":274,"author":{"gitId":"-"},"content":"@media print {","lastModifiedDate":"2021-01-12"},{"lineNumber":275,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2021-01-11"},{"lineNumber":276,"author":{"gitId":"-"},"content":" * Prevents page break from cutting through content when printing","lastModifiedDate":"2021-01-12"},{"lineNumber":277,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2021-01-11"},{"lineNumber":278,"author":{"gitId":"-"},"content":" body {","lastModifiedDate":"2021-01-11"},{"lineNumber":279,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2021-01-11"},{"lineNumber":280,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-11"},{"lineNumber":281,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2021-01-12"},{"lineNumber":282,"author":{"gitId":"-"},"content":" * Replaces the top navigation menu with the project name when printing","lastModifiedDate":"2021-01-12"},{"lineNumber":283,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2021-01-12"},{"lineNumber":284,"author":{"gitId":"-"},"content":" .site-header .wrapper {","lastModifiedDate":"2021-01-12"},{"lineNumber":285,"author":{"gitId":"-"},"content":" display: none;","lastModifiedDate":"2021-01-12"},{"lineNumber":286,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-12"},{"lineNumber":287,"author":{"gitId":"-"},"content":" .site-header {","lastModifiedDate":"2021-01-12"},{"lineNumber":288,"author":{"gitId":"-"},"content":" text-align: center;","lastModifiedDate":"2021-01-12"},{"lineNumber":289,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-12"},{"lineNumber":290,"author":{"gitId":"-"},"content":" .site-header:before {","lastModifiedDate":"2021-01-12"},{"lineNumber":291,"author":{"gitId":"gerteck"},"content":" content: \"Elder Scrolls\";","lastModifiedDate":"2024-03-03"},{"lineNumber":292,"author":{"gitId":"-"},"content":" font-size: 32px;","lastModifiedDate":"2021-01-12"},{"lineNumber":293,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-11"},{"lineNumber":294,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-01-12"},{"lineNumber":295,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-01-12"}],"authorContributionMap":{"gerteck":1,"-":294}},{"path":"docs/diagrams/ArchitectureSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2023-07-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"Actor User as user USER_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"Participant \":UI\" as ui UI_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Participant \":Logic\" as logic LOGIC_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":8,"author":{"gitId":"-"},"content":"Participant \":Model\" as model MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"Participant \":Storage\" as storage STORAGE_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":11,"author":{"gitId":"sdevih"},"content":"user -[USER_COLOR]\u003e ui : \"delete 1 r/volunteer\"","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"activate ui UI_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"sdevih"},"content":"ui -[UI_COLOR]\u003e logic : execute(\"delete 1 r/volunteer\")","lastModifiedDate":"2024-03-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":"activate logic LOGIC_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"logic -[LOGIC_COLOR]\u003e model : deletePerson(p)","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"activate model MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"model -[MODEL_COLOR]-\u003e logic","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"deactivate model","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"logic -[LOGIC_COLOR]\u003e storage : saveAddressBook(addressBook)","lastModifiedDate":"2019-07-03"},{"lineNumber":24,"author":{"gitId":"-"},"content":"activate storage STORAGE_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":"storage -[STORAGE_COLOR]\u003e storage : Save to file","lastModifiedDate":"2019-07-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":"activate storage STORAGE_COLOR_T1","lastModifiedDate":"2019-07-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"storage --[STORAGE_COLOR]\u003e storage","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"deactivate storage","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"storage --[STORAGE_COLOR]\u003e logic","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"deactivate storage","lastModifiedDate":"2019-07-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":"logic --[LOGIC_COLOR]\u003e ui","lastModifiedDate":"2019-07-03"},{"lineNumber":35,"author":{"gitId":"-"},"content":"deactivate logic","lastModifiedDate":"2019-07-03"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":37,"author":{"gitId":"-"},"content":"ui--[UI_COLOR]\u003e user","lastModifiedDate":"2019-07-03"},{"lineNumber":38,"author":{"gitId":"-"},"content":"deactivate ui","lastModifiedDate":"2019-07-03"},{"lineNumber":39,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"-":37,"sdevih":2}},{"path":"docs/diagrams/BetterModelClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam arrowColor MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam classBackgroundColor MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"AddressBook *-right-\u003e \"1\" UniquePersonList","lastModifiedDate":"2019-07-30"},{"lineNumber":8,"author":{"gitId":"-"},"content":"AddressBook *-right-\u003e \"1\" UniqueTagList","lastModifiedDate":"2019-07-30"},{"lineNumber":9,"author":{"gitId":"-"},"content":"UniqueTagList -[hidden]down- UniquePersonList","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"-"},"content":"UniqueTagList -[hidden]down- UniquePersonList","lastModifiedDate":"2019-07-03"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"UniqueTagList -right-\u003e \"*\" Tag","lastModifiedDate":"2023-01-01"},{"lineNumber":13,"author":{"gitId":"-"},"content":"UniquePersonList -right-\u003e Person","lastModifiedDate":"2021-07-31"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"Person -up-\u003e \"*\" Tag","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"CJerrong"},"content":"Volunteer .left.|\u003e Person","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"CJerrong"},"content":"Befriendee .left.|\u003e Person","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Person *--\u003e Name","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"Person *--\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"Person *--\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"Person *--\u003e Address","lastModifiedDate":"2019-07-03"},{"lineNumber":24,"author":{"gitId":"soons1"},"content":"Person *--\u003e \"0..1\" pairedWith","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"soons1"},"content":"Person *--\u003e Role","lastModifiedDate":"2024-03-22"},{"lineNumber":26,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"CJerrong":3,"soons1":2,"-":21}},{"path":"docs/diagrams/DeleteSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2023-07-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"participant \":AddressBookParser\" as AddressBookParser LOGIC_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":8,"author":{"gitId":"-"},"content":"participant \":DeleteCommandParser\" as DeleteCommandParser LOGIC_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"participant \"d:DeleteCommand\" as DeleteCommand LOGIC_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"-"},"content":"participant \"r:CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-02-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"end box","lastModifiedDate":"2019-07-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"participant \"m:Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-02-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":"end box","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"sdevih"},"content":"[-\u003e LogicManager : execute(\"delete 1 r/volunteer\")","lastModifiedDate":"2024-03-22"},{"lineNumber":18,"author":{"gitId":"-"},"content":"activate LogicManager","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"sdevih"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(\"delete 1 r/volunteer\")","lastModifiedDate":"2024-03-22"},{"lineNumber":21,"author":{"gitId":"-"},"content":"activate AddressBookParser","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"create DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":24,"author":{"gitId":"-"},"content":"AddressBookParser -\u003e DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":25,"author":{"gitId":"-"},"content":"activate DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":"DeleteCommandParser --\u003e AddressBookParser","lastModifiedDate":"2019-07-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"deactivate DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"sdevih"},"content":"AddressBookParser -\u003e DeleteCommandParser : parse(\"1 r/volunteer\")","lastModifiedDate":"2024-03-22"},{"lineNumber":31,"author":{"gitId":"-"},"content":"activate DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":"create DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":"DeleteCommandParser -\u003e DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":35,"author":{"gitId":"-"},"content":"activate DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":37,"author":{"gitId":"-"},"content":"DeleteCommand --\u003e DeleteCommandParser :","lastModifiedDate":"2024-02-09"},{"lineNumber":38,"author":{"gitId":"-"},"content":"deactivate DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":40,"author":{"gitId":"-"},"content":"DeleteCommandParser --\u003e AddressBookParser : d","lastModifiedDate":"2019-07-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":"deactivate DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":42,"author":{"gitId":"-"},"content":"\u0027Hidden arrow to position the destroy marker below the end of the activation bar.","lastModifiedDate":"2019-07-03"},{"lineNumber":43,"author":{"gitId":"-"},"content":"DeleteCommandParser -[hidden]-\u003e AddressBookParser","lastModifiedDate":"2019-07-03"},{"lineNumber":44,"author":{"gitId":"-"},"content":"destroy DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":46,"author":{"gitId":"-"},"content":"AddressBookParser --\u003e LogicManager : d","lastModifiedDate":"2019-07-03"},{"lineNumber":47,"author":{"gitId":"-"},"content":"deactivate AddressBookParser","lastModifiedDate":"2019-07-03"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":49,"author":{"gitId":"-"},"content":"LogicManager -\u003e DeleteCommand : execute(m)","lastModifiedDate":"2024-02-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":"activate DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":52,"author":{"gitId":"-"},"content":"DeleteCommand -\u003e Model : deletePerson(1)","lastModifiedDate":"2019-07-03"},{"lineNumber":53,"author":{"gitId":"-"},"content":"activate Model","lastModifiedDate":"2019-07-03"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":55,"author":{"gitId":"-"},"content":"Model --\u003e DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":56,"author":{"gitId":"-"},"content":"deactivate Model","lastModifiedDate":"2019-07-03"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":58,"author":{"gitId":"-"},"content":"create CommandResult","lastModifiedDate":"2019-07-03"},{"lineNumber":59,"author":{"gitId":"-"},"content":"DeleteCommand -\u003e CommandResult","lastModifiedDate":"2019-07-03"},{"lineNumber":60,"author":{"gitId":"-"},"content":"activate CommandResult","lastModifiedDate":"2019-07-03"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":62,"author":{"gitId":"-"},"content":"CommandResult --\u003e DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":63,"author":{"gitId":"-"},"content":"deactivate CommandResult","lastModifiedDate":"2019-07-03"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":65,"author":{"gitId":"-"},"content":"DeleteCommand --\u003e LogicManager : r","lastModifiedDate":"2024-02-09"},{"lineNumber":66,"author":{"gitId":"-"},"content":"deactivate DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":68,"author":{"gitId":"-"},"content":"[\u003c--LogicManager","lastModifiedDate":"2019-07-03"},{"lineNumber":69,"author":{"gitId":"-"},"content":"deactivate LogicManager","lastModifiedDate":"2019-07-03"},{"lineNumber":70,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"-":67,"sdevih":3}},{"path":"docs/diagrams/ModelClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam arrowColor MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam classBackgroundColor MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Package Model as ModelPackage \u003c\u003cRectangle\u003e\u003e{","lastModifiedDate":"2023-07-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nReadOnlyAddressBook\" as ReadOnlyAddressBook","lastModifiedDate":"2022-01-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nReadOnlyUserPrefs\" as ReadOnlyUserPrefs","lastModifiedDate":"2022-01-03"},{"lineNumber":10,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nModel\" as Model","lastModifiedDate":"2022-01-03"},{"lineNumber":11,"author":{"gitId":"-"},"content":"Class AddressBook","lastModifiedDate":"2019-07-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"Class ModelManager","lastModifiedDate":"2019-07-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"Class UserPrefs","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":15,"author":{"gitId":"-"},"content":"Class UniquePersonList","lastModifiedDate":"2021-07-31"},{"lineNumber":16,"author":{"gitId":"gerteck"},"content":"Class \"{abstract}\\nPerson\" as Person","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":"Class Address","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"Class Email","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"Class Name","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Class Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"Class Tag","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"gerteck"},"content":"Class Role","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"gerteck"},"content":"Class \"Optional\u003cName\u003e\"","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"gerteck"},"content":"Class Volunteer","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"gerteck"},"content":"Class Befriendee","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":28,"author":{"gitId":"-"},"content":"Class I #FFFFFF","lastModifiedDate":"2023-07-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":"AddressBook .up.|\u003e ReadOnlyAddressBook","lastModifiedDate":"2019-07-03"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":36,"author":{"gitId":"-"},"content":"ModelManager .up.|\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":37,"author":{"gitId":"-"},"content":"Model .right.\u003e ReadOnlyUserPrefs","lastModifiedDate":"2021-07-31"},{"lineNumber":38,"author":{"gitId":"-"},"content":"Model .left.\u003e ReadOnlyAddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":39,"author":{"gitId":"-"},"content":"ModelManager -left-\u003e \"1\" AddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":40,"author":{"gitId":"-"},"content":"ModelManager -right-\u003e \"1\" UserPrefs","lastModifiedDate":"2021-07-31"},{"lineNumber":41,"author":{"gitId":"-"},"content":"UserPrefs .up.|\u003e ReadOnlyUserPrefs","lastModifiedDate":"2019-07-03"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":43,"author":{"gitId":"-"},"content":"AddressBook *--\u003e \"1\" UniquePersonList","lastModifiedDate":"2019-07-30"},{"lineNumber":44,"author":{"gitId":"-"},"content":"UniquePersonList --\u003e \"~* all\" Person","lastModifiedDate":"2021-07-31"},{"lineNumber":45,"author":{"gitId":"-"},"content":"Person *--\u003e Name","lastModifiedDate":"2019-07-03"},{"lineNumber":46,"author":{"gitId":"-"},"content":"Person *--\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":47,"author":{"gitId":"-"},"content":"Person *--\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":48,"author":{"gitId":"-"},"content":"Person *--\u003e Address","lastModifiedDate":"2019-07-03"},{"lineNumber":49,"author":{"gitId":"soons1"},"content":"Person *--\u003e \"0..1\" pairedWith","lastModifiedDate":"2024-03-22"},{"lineNumber":50,"author":{"gitId":"soons1"},"content":"Person -up-\u003e \"*\" Tag","lastModifiedDate":"2024-03-22"},{"lineNumber":51,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":52,"author":{"gitId":"gerteck"},"content":"Person *--\u003e Role","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":55,"author":{"gitId":"gerteck"},"content":"Volunteer .up.|\u003e Person","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"gerteck"},"content":"Befriendee .up.|\u003e Person","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"gerteck"},"content":"Person -[hidden]down--\u003e Volunteer","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"gerteck"},"content":"Person -[hidden]down--\u003e Befriendee","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":62,"author":{"gitId":"-"},"content":"Person -[hidden]up--\u003e I","lastModifiedDate":"2023-07-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":"UniquePersonList -[hidden]right-\u003e I","lastModifiedDate":"2023-07-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":"Name -[hidden]right-\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":66,"author":{"gitId":"-"},"content":"Phone -[hidden]right-\u003e Address","lastModifiedDate":"2019-07-03"},{"lineNumber":67,"author":{"gitId":"-"},"content":"Address -[hidden]right-\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":69,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"-"},"content":"ModelManager --\u003e \"~* filtered\" Person","lastModifiedDate":"2021-07-31"},{"lineNumber":72,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"soons1":4,"gerteck":16,"-":52}},{"path":"docs/diagrams/UiClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam arrowColor UI_COLOR_T4","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam classBackgroundColor UI_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"package UI \u003c\u003cRectangle\u003e\u003e{","lastModifiedDate":"2019-07-03"},{"lineNumber":8,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nUi\" as Ui","lastModifiedDate":"2022-01-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"Class \"{abstract}\\nUiPart\" as UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"-"},"content":"Class UiManager","lastModifiedDate":"2019-07-03"},{"lineNumber":11,"author":{"gitId":"-"},"content":"Class MainWindow","lastModifiedDate":"2019-07-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"Class HelpWindow","lastModifiedDate":"2019-07-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"Class ResultDisplay","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"Class PersonListPanel","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"Class PersonCard","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"Class StatusBarFooter","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"Class CommandBox","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"package Model \u003c\u003cRectangle\u003e\u003e {","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"Class HiddenModel #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":24,"author":{"gitId":"-"},"content":"package Logic \u003c\u003cRectangle\u003e\u003e {","lastModifiedDate":"2019-07-03"},{"lineNumber":25,"author":{"gitId":"-"},"content":"Class HiddenLogic #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Ui","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"UiManager .left.|\u003e Ui","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"UiManager -down-\u003e \"1\" MainWindow","lastModifiedDate":"2021-07-31"},{"lineNumber":33,"author":{"gitId":"-"},"content":"MainWindow *-down-\u003e \"1\" CommandBox","lastModifiedDate":"2021-07-31"},{"lineNumber":34,"author":{"gitId":"-"},"content":"MainWindow *-down-\u003e \"1\" ResultDisplay","lastModifiedDate":"2021-07-31"},{"lineNumber":35,"author":{"gitId":"CJerrong"},"content":"MainWindow *-down-\u003e \"2\" PersonListPanel","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":"MainWindow *-down-\u003e \"1\" StatusBarFooter","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"MainWindow --\u003e \"0..1\" HelpWindow","lastModifiedDate":"2021-07-31"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":39,"author":{"gitId":"-"},"content":"PersonListPanel -down-\u003e \"*\" PersonCard","lastModifiedDate":"2021-07-31"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":"MainWindow -left-|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":43,"author":{"gitId":"-"},"content":"ResultDisplay --|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":44,"author":{"gitId":"-"},"content":"CommandBox --|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":45,"author":{"gitId":"-"},"content":"PersonListPanel --|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":46,"author":{"gitId":"-"},"content":"PersonCard --|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":47,"author":{"gitId":"-"},"content":"StatusBarFooter --|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":48,"author":{"gitId":"-"},"content":"HelpWindow --|\u003e UiPart","lastModifiedDate":"2021-07-31"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":50,"author":{"gitId":"-"},"content":"PersonCard ..\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":51,"author":{"gitId":"-"},"content":"UiManager -right-\u003e Logic","lastModifiedDate":"2019-07-03"},{"lineNumber":52,"author":{"gitId":"-"},"content":"MainWindow -left-\u003e Logic","lastModifiedDate":"2019-07-03"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":54,"author":{"gitId":"-"},"content":"PersonListPanel -[hidden]left- HelpWindow","lastModifiedDate":"2019-07-03"},{"lineNumber":55,"author":{"gitId":"-"},"content":"HelpWindow -[hidden]left- CommandBox","lastModifiedDate":"2019-07-03"},{"lineNumber":56,"author":{"gitId":"-"},"content":"CommandBox -[hidden]left- ResultDisplay","lastModifiedDate":"2019-07-03"},{"lineNumber":57,"author":{"gitId":"-"},"content":"ResultDisplay -[hidden]left- StatusBarFooter","lastModifiedDate":"2019-07-30"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":59,"author":{"gitId":"-"},"content":"MainWindow -[hidden]-|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":60,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"CJerrong":1,"-":59}},{"path":"docs/index.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"gerteck"},"content":"title: Elder Scrolls","lastModifiedDate":"2024-03-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"[![CI Status](https://github.com/se-edu/addressbook-level3/workflows/Java%20CI/badge.svg)](https://github.com/se-edu/addressbook-level3/actions)","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"[![codecov](https://codecov.io/gh/se-edu/addressbook-level3/branch/master/graph/badge.svg)](https://codecov.io/gh/se-edu/addressbook-level3)","lastModifiedDate":"2020-08-07"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"gerteck"},"content":"**Elder Scrolls is a desktop volunteer management system application for managing both volunteers, and befriendees.** While it has a GUI, most of the user interactions happen using a CLI (Command Line Interface).","lastModifiedDate":"2024-03-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"gerteck"},"content":"* If you are interested in using Elder Scrolls, head over to the [_Quick Start_ section of the **User Guide**](UserGuide.html#quick-start).","lastModifiedDate":"2024-03-03"},{"lineNumber":14,"author":{"gitId":"gerteck"},"content":"* If you are interested about developing Elder Scrolls, the [**Developer Guide**](DeveloperGuide.html) is a good place to start.","lastModifiedDate":"2024-03-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"**Acknowledgements**","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"* Libraries used: [JavaFX](https://openjfx.io/), [Jackson](https://github.com/FasterXML/jackson), [JUnit5](https://github.com/junit-team/junit5)","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"gerteck"},"content":"* This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-03-03"}],"authorContributionMap":{"gerteck":5,"-":15}},{"path":"docs/team/chaaaaun.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"---","lastModifiedDate":"2024-03-03"},{"lineNumber":2,"author":{"gitId":"chaaaaun"},"content":"layout: page","lastModifiedDate":"2024-03-03"},{"lineNumber":3,"author":{"gitId":"chaaaaun"},"content":"title: Tu Jia En\u0027s Project Portfolio Page","lastModifiedDate":"2024-03-03"},{"lineNumber":4,"author":{"gitId":"chaaaaun"},"content":"---","lastModifiedDate":"2024-03-03"},{"lineNumber":5,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":6,"author":{"gitId":"chaaaaun"},"content":"### Project: Elder Scrolls","lastModifiedDate":"2024-03-03"}],"authorContributionMap":{"chaaaaun":6}},{"path":"docs/team/cjerrong.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"CJerrong"},"content":" ---","lastModifiedDate":"2024-03-03"},{"lineNumber":2,"author":{"gitId":"CJerrong"},"content":"layout: page","lastModifiedDate":"2024-03-03"},{"lineNumber":3,"author":{"gitId":"CJerrong"},"content":"title: CJerrong\u0027s Project Portfolio Page","lastModifiedDate":"2024-03-03"},{"lineNumber":4,"author":{"gitId":"CJerrong"},"content":"---","lastModifiedDate":"2024-03-03"},{"lineNumber":5,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":6,"author":{"gitId":"CJerrong"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-03-03"},{"lineNumber":7,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":8,"author":{"gitId":"CJerrong"},"content":"AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2024-03-03"},{"lineNumber":9,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":10,"author":{"gitId":"CJerrong"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-03-03"},{"lineNumber":11,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":12,"author":{"gitId":"CJerrong"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-03-03"},{"lineNumber":13,"author":{"gitId":"CJerrong"},"content":" * What it does: allows the user to undo all previous commands one at a time. Preceding undo commands can be reversed by using the redo command.","lastModifiedDate":"2024-03-03"},{"lineNumber":14,"author":{"gitId":"CJerrong"},"content":" * Justification: This feature improves the product significantly because a user can make mistakes in commands and the app should provide a convenient way to rectify them.","lastModifiedDate":"2024-03-03"},{"lineNumber":15,"author":{"gitId":"CJerrong"},"content":" * Highlights: This enhancement affects existing commands and commands to be added in future. It required an in-depth analysis of design alternatives. The implementation too was challenging as it required changes to existing commands.","lastModifiedDate":"2024-03-03"},{"lineNumber":16,"author":{"gitId":"CJerrong"},"content":" * Credits: *{mention here if you reused any code/ideas from elsewhere or if a third-party library is heavily used in the feature so that a reader can make a more accurate judgement of how much effort went into the feature}*","lastModifiedDate":"2024-03-03"},{"lineNumber":17,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":18,"author":{"gitId":"CJerrong"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-03-03"},{"lineNumber":19,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":20,"author":{"gitId":"CJerrong"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-03-03"},{"lineNumber":21,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":22,"author":{"gitId":"CJerrong"},"content":"* **Project management**:","lastModifiedDate":"2024-03-03"},{"lineNumber":23,"author":{"gitId":"CJerrong"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-03-03"},{"lineNumber":24,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":25,"author":{"gitId":"CJerrong"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-03-03"},{"lineNumber":26,"author":{"gitId":"CJerrong"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-03-03"},{"lineNumber":27,"author":{"gitId":"CJerrong"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-03-03"},{"lineNumber":28,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":29,"author":{"gitId":"CJerrong"},"content":"* **Documentation**:","lastModifiedDate":"2024-03-03"},{"lineNumber":30,"author":{"gitId":"CJerrong"},"content":" * User Guide:","lastModifiedDate":"2024-03-03"},{"lineNumber":31,"author":{"gitId":"CJerrong"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-03-03"},{"lineNumber":32,"author":{"gitId":"CJerrong"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-03-03"},{"lineNumber":33,"author":{"gitId":"CJerrong"},"content":" * Developer Guide:","lastModifiedDate":"2024-03-03"},{"lineNumber":34,"author":{"gitId":"CJerrong"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-03-03"},{"lineNumber":35,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":36,"author":{"gitId":"CJerrong"},"content":"* **Community**:","lastModifiedDate":"2024-03-03"},{"lineNumber":37,"author":{"gitId":"CJerrong"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-03-03"},{"lineNumber":38,"author":{"gitId":"CJerrong"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-03-03"},{"lineNumber":39,"author":{"gitId":"CJerrong"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-03-03"},{"lineNumber":40,"author":{"gitId":"CJerrong"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-03-03"},{"lineNumber":41,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":42,"author":{"gitId":"CJerrong"},"content":"* **Tools**:","lastModifiedDate":"2024-03-03"},{"lineNumber":43,"author":{"gitId":"CJerrong"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-03-03"},{"lineNumber":44,"author":{"gitId":"CJerrong"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-03-03"},{"lineNumber":45,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":46,"author":{"gitId":"CJerrong"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-03-03"}],"authorContributionMap":{"CJerrong":46}},{"path":"docs/team/gerteck.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"gerteck"},"content":"---","lastModifiedDate":"2024-03-03"},{"lineNumber":2,"author":{"gitId":"gerteck"},"content":"layout: page","lastModifiedDate":"2024-03-03"},{"lineNumber":3,"author":{"gitId":"gerteck"},"content":"title: Ger Teck\u0027s Project Portfolio Page","lastModifiedDate":"2024-03-03"},{"lineNumber":4,"author":{"gitId":"gerteck"},"content":"---","lastModifiedDate":"2024-03-03"},{"lineNumber":5,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":6,"author":{"gitId":"gerteck"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-03-03"},{"lineNumber":7,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":8,"author":{"gitId":"gerteck"},"content":"AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2024-03-03"},{"lineNumber":9,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":10,"author":{"gitId":"gerteck"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-03-03"},{"lineNumber":11,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":12,"author":{"gitId":"gerteck"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-03-03"},{"lineNumber":13,"author":{"gitId":"gerteck"},"content":" * What it does: allows the user to undo all previous commands one at a time. Preceding undo commands can be reversed by using the redo command.","lastModifiedDate":"2024-03-03"},{"lineNumber":14,"author":{"gitId":"gerteck"},"content":" * Justification: This feature improves the product significantly because a user can make mistakes in commands and the app should provide a convenient way to rectify them.","lastModifiedDate":"2024-03-03"},{"lineNumber":15,"author":{"gitId":"gerteck"},"content":" * Highlights: This enhancement affects existing commands and commands to be added in future. It required an in-depth analysis of design alternatives. The implementation too was challenging as it required changes to existing commands.","lastModifiedDate":"2024-03-03"},{"lineNumber":16,"author":{"gitId":"gerteck"},"content":" * Credits: *{mention here if you reused any code/ideas from elsewhere or if a third-party library is heavily used in the feature so that a reader can make a more accurate judgement of how much effort went into the feature}*","lastModifiedDate":"2024-03-03"},{"lineNumber":17,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":18,"author":{"gitId":"gerteck"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-03-03"},{"lineNumber":19,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":20,"author":{"gitId":"gerteck"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-03-03"},{"lineNumber":21,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":22,"author":{"gitId":"gerteck"},"content":"* **Project management**:","lastModifiedDate":"2024-03-03"},{"lineNumber":23,"author":{"gitId":"gerteck"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-03-03"},{"lineNumber":24,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":25,"author":{"gitId":"gerteck"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-03-03"},{"lineNumber":26,"author":{"gitId":"gerteck"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-03-03"},{"lineNumber":27,"author":{"gitId":"gerteck"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-03-03"},{"lineNumber":28,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":29,"author":{"gitId":"gerteck"},"content":"* **Documentation**:","lastModifiedDate":"2024-03-03"},{"lineNumber":30,"author":{"gitId":"gerteck"},"content":" * User Guide:","lastModifiedDate":"2024-03-03"},{"lineNumber":31,"author":{"gitId":"gerteck"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-03-03"},{"lineNumber":32,"author":{"gitId":"gerteck"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-03-03"},{"lineNumber":33,"author":{"gitId":"gerteck"},"content":" * Developer Guide:","lastModifiedDate":"2024-03-03"},{"lineNumber":34,"author":{"gitId":"gerteck"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-03-03"},{"lineNumber":35,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":36,"author":{"gitId":"gerteck"},"content":"* **Community**:","lastModifiedDate":"2024-03-03"},{"lineNumber":37,"author":{"gitId":"gerteck"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-03-03"},{"lineNumber":38,"author":{"gitId":"gerteck"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-03-03"},{"lineNumber":39,"author":{"gitId":"gerteck"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-03-03"},{"lineNumber":40,"author":{"gitId":"gerteck"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-03-03"},{"lineNumber":41,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":42,"author":{"gitId":"gerteck"},"content":"* **Tools**:","lastModifiedDate":"2024-03-03"},{"lineNumber":43,"author":{"gitId":"gerteck"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-03-03"},{"lineNumber":44,"author":{"gitId":"gerteck"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-03-03"},{"lineNumber":45,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":46,"author":{"gitId":"gerteck"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-03-03"}],"authorContributionMap":{"gerteck":46}},{"path":"docs/team/johndoe.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"CJerrong"},"content":"_---","lastModifiedDate":"2024-03-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: John Doe\u0027s Project Portfolio Page","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2021-07-30"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * What it does: allows the user to undo all previous commands one at a time. Preceding undo commands can be reversed by using the redo command.","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Justification: This feature improves the product significantly because a user can make mistakes in commands and the app should provide a convenient way to rectify them.","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Highlights: This enhancement affects existing commands and commands to be added in future. It required an in-depth analysis of design alternatives. The implementation too was challenging as it required changes to existing commands.","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Credits: *{mention here if you reused any code/ideas from elsewhere or if a third-party library is heavily used in the feature so that a reader can make a more accurate judgement of how much effort went into the feature}*","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"* **Project management**:","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"* **Documentation**:","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * User Guide:","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Developer Guide:","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":"* **Community**:","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"* **Tools**:","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"CJerrong"},"content":"* _{you can add/remove categories in the list above}__","lastModifiedDate":"2024-03-03"}],"authorContributionMap":{"CJerrong":2,"-":44}},{"path":"docs/team/sdevih.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"sdevih"},"content":"---","lastModifiedDate":"2024-03-03"},{"lineNumber":2,"author":{"gitId":"sdevih"},"content":"layout: page","lastModifiedDate":"2024-03-03"},{"lineNumber":3,"author":{"gitId":"sdevih"},"content":"title: S Devi Harshitha\u0027s Project Portfolio Page","lastModifiedDate":"2024-03-03"},{"lineNumber":4,"author":{"gitId":"sdevih"},"content":"---","lastModifiedDate":"2024-03-03"},{"lineNumber":5,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":6,"author":{"gitId":"sdevih"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-03-03"},{"lineNumber":7,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":8,"author":{"gitId":"sdevih"},"content":"AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2024-03-03"},{"lineNumber":9,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":10,"author":{"gitId":"sdevih"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-03-03"},{"lineNumber":11,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":12,"author":{"gitId":"sdevih"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-03-03"},{"lineNumber":13,"author":{"gitId":"sdevih"},"content":" * What it does: allows the user to undo all previous commands one at a time. Preceding undo commands can be reversed by using the redo command.","lastModifiedDate":"2024-03-03"},{"lineNumber":14,"author":{"gitId":"sdevih"},"content":" * Justification: This feature improves the product significantly because a user can make mistakes in commands and the app should provide a convenient way to rectify them.","lastModifiedDate":"2024-03-03"},{"lineNumber":15,"author":{"gitId":"sdevih"},"content":" * Highlights: This enhancement affects existing commands and commands to be added in future. It required an in-depth analysis of design alternatives. The implementation too was challenging as it required changes to existing commands.","lastModifiedDate":"2024-03-03"},{"lineNumber":16,"author":{"gitId":"sdevih"},"content":" * Credits: *{mention here if you reused any code/ideas from elsewhere or if a third-party library is heavily used in the feature so that a reader can make a more accurate judgement of how much effort went into the feature}*","lastModifiedDate":"2024-03-03"},{"lineNumber":17,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":18,"author":{"gitId":"sdevih"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-03-03"},{"lineNumber":19,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":20,"author":{"gitId":"sdevih"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-03-03"},{"lineNumber":21,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":22,"author":{"gitId":"sdevih"},"content":"* **Project management**:","lastModifiedDate":"2024-03-03"},{"lineNumber":23,"author":{"gitId":"sdevih"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-03-03"},{"lineNumber":24,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":25,"author":{"gitId":"sdevih"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-03-03"},{"lineNumber":26,"author":{"gitId":"sdevih"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-03-03"},{"lineNumber":27,"author":{"gitId":"sdevih"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-03-03"},{"lineNumber":28,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":29,"author":{"gitId":"sdevih"},"content":"* **Documentation**:","lastModifiedDate":"2024-03-03"},{"lineNumber":30,"author":{"gitId":"sdevih"},"content":" * User Guide:","lastModifiedDate":"2024-03-03"},{"lineNumber":31,"author":{"gitId":"sdevih"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-03-03"},{"lineNumber":32,"author":{"gitId":"sdevih"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-03-03"},{"lineNumber":33,"author":{"gitId":"sdevih"},"content":" * Developer Guide:","lastModifiedDate":"2024-03-03"},{"lineNumber":34,"author":{"gitId":"sdevih"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-03-03"},{"lineNumber":35,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":36,"author":{"gitId":"sdevih"},"content":"* **Community**:","lastModifiedDate":"2024-03-03"},{"lineNumber":37,"author":{"gitId":"sdevih"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-03-03"},{"lineNumber":38,"author":{"gitId":"sdevih"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-03-03"},{"lineNumber":39,"author":{"gitId":"sdevih"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-03-03"},{"lineNumber":40,"author":{"gitId":"sdevih"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-03-03"},{"lineNumber":41,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":42,"author":{"gitId":"sdevih"},"content":"* **Tools**:","lastModifiedDate":"2024-03-03"},{"lineNumber":43,"author":{"gitId":"sdevih"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-03-03"},{"lineNumber":44,"author":{"gitId":"sdevih"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-03-03"},{"lineNumber":45,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":46,"author":{"gitId":"sdevih"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-03-03"}],"authorContributionMap":{"sdevih":46}},{"path":"docs/team/soons1.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"soons1"},"content":"---","lastModifiedDate":"2024-03-03"},{"lineNumber":2,"author":{"gitId":"soons1"},"content":"layout: page","lastModifiedDate":"2024-03-03"},{"lineNumber":3,"author":{"gitId":"soons1"},"content":"title: John Doe\u0027s Project Portfolio Page","lastModifiedDate":"2024-03-03"},{"lineNumber":4,"author":{"gitId":"soons1"},"content":"---","lastModifiedDate":"2024-03-03"},{"lineNumber":5,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":6,"author":{"gitId":"soons1"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-03-03"},{"lineNumber":7,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":8,"author":{"gitId":"soons1"},"content":"AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2024-03-03"},{"lineNumber":9,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":10,"author":{"gitId":"soons1"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-03-03"},{"lineNumber":11,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":12,"author":{"gitId":"soons1"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-03-03"},{"lineNumber":13,"author":{"gitId":"soons1"},"content":" * What it does: allows the user to undo all previous commands one at a time. Preceding undo commands can be reversed by using the redo command.","lastModifiedDate":"2024-03-03"},{"lineNumber":14,"author":{"gitId":"soons1"},"content":" * Justification: This feature improves the product significantly because a user can make mistakes in commands and the app should provide a convenient way to rectify them.","lastModifiedDate":"2024-03-03"},{"lineNumber":15,"author":{"gitId":"soons1"},"content":" * Highlights: This enhancement affects existing commands and commands to be added in future. It required an in-depth analysis of design alternatives. The implementation too was challenging as it required changes to existing commands.","lastModifiedDate":"2024-03-03"},{"lineNumber":16,"author":{"gitId":"soons1"},"content":" * Credits: *{mention here if you reused any code/ideas from elsewhere or if a third-party library is heavily used in the feature so that a reader can make a more accurate judgement of how much effort went into the feature}*","lastModifiedDate":"2024-03-03"},{"lineNumber":17,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":18,"author":{"gitId":"soons1"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-03-03"},{"lineNumber":19,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":20,"author":{"gitId":"soons1"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-03-03"},{"lineNumber":21,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":22,"author":{"gitId":"soons1"},"content":"* **Project management**:","lastModifiedDate":"2024-03-03"},{"lineNumber":23,"author":{"gitId":"soons1"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-03-03"},{"lineNumber":24,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":25,"author":{"gitId":"soons1"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-03-03"},{"lineNumber":26,"author":{"gitId":"soons1"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-03-03"},{"lineNumber":27,"author":{"gitId":"soons1"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-03-03"},{"lineNumber":28,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":29,"author":{"gitId":"soons1"},"content":"* **Documentation**:","lastModifiedDate":"2024-03-03"},{"lineNumber":30,"author":{"gitId":"soons1"},"content":" * User Guide:","lastModifiedDate":"2024-03-03"},{"lineNumber":31,"author":{"gitId":"soons1"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-03-03"},{"lineNumber":32,"author":{"gitId":"soons1"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-03-03"},{"lineNumber":33,"author":{"gitId":"soons1"},"content":" * Developer Guide:","lastModifiedDate":"2024-03-03"},{"lineNumber":34,"author":{"gitId":"soons1"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-03-03"},{"lineNumber":35,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":36,"author":{"gitId":"soons1"},"content":"* **Community**:","lastModifiedDate":"2024-03-03"},{"lineNumber":37,"author":{"gitId":"soons1"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-03-03"},{"lineNumber":38,"author":{"gitId":"soons1"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-03-03"},{"lineNumber":39,"author":{"gitId":"soons1"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-03-03"},{"lineNumber":40,"author":{"gitId":"soons1"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-03-03"},{"lineNumber":41,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":42,"author":{"gitId":"soons1"},"content":"* **Tools**:","lastModifiedDate":"2024-03-03"},{"lineNumber":43,"author":{"gitId":"soons1"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-03-03"},{"lineNumber":44,"author":{"gitId":"soons1"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-03-03"},{"lineNumber":45,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":46,"author":{"gitId":"soons1"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-03-03"}],"authorContributionMap":{"soons1":46}},{"path":"docs/tutorials/AddRemark.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-07-29"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-07-29"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: \"Tutorial: Adding a command\"","lastModifiedDate":"2020-07-29"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-07-29"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":6,"author":{"gitId":"-"},"content":"Let\u0027s walk you through the implementation of a new command — `remark`.","lastModifiedDate":"2020-07-29"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":8,"author":{"gitId":"-"},"content":"This command allows users of the AddressBook application to add optional remarks to people in their address book and edit it if required. The command should have the following format:","lastModifiedDate":"2020-07-29"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":10,"author":{"gitId":"-"},"content":"`remark INDEX r/REMARK` (e.g., `remark 2 r/Likes baseball`)","lastModifiedDate":"2020-07-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":12,"author":{"gitId":"-"},"content":"We’ll assume that you have already set up the development environment as outlined in the Developer’s Guide.","lastModifiedDate":"2020-07-29"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":"## Create a new `remark` command","lastModifiedDate":"2020-07-29"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":"Looking in the `logic.command` package, you will notice that each existing command have their own class. All the commands inherit from the abstract class `Command` which means that they must override `execute()`. Each `Command` returns an instance of `CommandResult` upon success and `CommandResult#feedbackToUser` is printed to the `ResultDisplay`.","lastModifiedDate":"2020-07-29"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":19,"author":{"gitId":"-"},"content":"Let’s start by creating a new `RemarkCommand` class in the `src/main/java/seedu/address/logic/command` directory.","lastModifiedDate":"2020-07-29"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":"For now, let’s keep `RemarkCommand` as simple as possible and print some output. We accomplish that by returning a `CommandResult` with an accompanying message.","lastModifiedDate":"2020-07-29"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":23,"author":{"gitId":"-"},"content":"**`RemarkCommand.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":25,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":26,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2020-07-29"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":28,"author":{"gitId":"chaaaaun"},"content":"import model.scrolls.elder.Model;","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":30,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-07-29"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Changes the remark of an existing person in the address book.","lastModifiedDate":"2020-07-29"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":33,"author":{"gitId":"-"},"content":"public class RemarkCommand extends Command {","lastModifiedDate":"2020-07-29"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"remark\";","lastModifiedDate":"2020-07-29"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2020-07-29"},{"lineNumber":39,"author":{"gitId":"-"},"content":" return new CommandResult(\"Hello from remark\");","lastModifiedDate":"2020-07-29"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":41,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":42,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":44,"author":{"gitId":"-"},"content":"### Hook `RemarkCommand` into the application","lastModifiedDate":"2020-07-29"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":46,"author":{"gitId":"-"},"content":"Now that we have our `RemarkCommand` ready to be executed, we need to update `AddressBookParser#parseCommand()` to recognize the `remark` keyword. Add the new command to the `switch` block by creating a new `case` that returns a new instance of `RemarkCommand`.","lastModifiedDate":"2020-07-29"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":48,"author":{"gitId":"-"},"content":"You can refer to the changes in this [diff](https://github.com/se-edu/addressbook-level3/commit/35eb7286f18a029d39cb7a29df8f172a001e4fd8#diff-399c284cb892c20b7c04a69116fcff6ccc0666c5230a1db8e4a9145def8fa4ee).","lastModifiedDate":"2022-01-02"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":50,"author":{"gitId":"-"},"content":"### Run the application","lastModifiedDate":"2020-07-29"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":52,"author":{"gitId":"-"},"content":"Run `Main#main` and try out your new `RemarkCommand`. If everything went well, you should see something like this:","lastModifiedDate":"2020-07-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":"![Output displayed](../images/add-remark/RemarkHello.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":56,"author":{"gitId":"-"},"content":"## Change `RemarkCommand` to throw an exception","lastModifiedDate":"2020-07-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":"While we have successfully printed a message to `ResultDisplay`, the command does not do what it is supposed to do. Let’s change the command to throw a `CommandException` to accurately reflect that our command is still a work in progress.","lastModifiedDate":"2020-12-12"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":60,"author":{"gitId":"-"},"content":"![The relationship between RemarkCommand and Command](../images/add-remark/RemarkCommandClass.png)","lastModifiedDate":"2023-09-12"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":62,"author":{"gitId":"-"},"content":"Following the convention in other commands, we add relevant messages as constants and use them.","lastModifiedDate":"2020-07-29"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":64,"author":{"gitId":"-"},"content":"**`RemarkCommand.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":66,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2021-08-01"},{"lineNumber":68,"author":{"gitId":"-"},"content":" + \": Edits the remark of the person identified \"","lastModifiedDate":"2021-08-01"},{"lineNumber":69,"author":{"gitId":"-"},"content":" + \"by the index number used in the last person listing. \"","lastModifiedDate":"2020-07-29"},{"lineNumber":70,"author":{"gitId":"-"},"content":" + \"Existing remark will be overwritten by the input.\\n\"","lastModifiedDate":"2020-07-29"},{"lineNumber":71,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2020-07-29"},{"lineNumber":72,"author":{"gitId":"-"},"content":" + \"r/ [REMARK]\\n\"","lastModifiedDate":"2020-07-29"},{"lineNumber":73,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2020-07-29"},{"lineNumber":74,"author":{"gitId":"-"},"content":" + \"r/ Likes to swim.\";","lastModifiedDate":"2020-07-29"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_IMPLEMENTED_YET \u003d","lastModifiedDate":"2021-08-01"},{"lineNumber":77,"author":{"gitId":"-"},"content":" \"Remark command not implemented yet\";","lastModifiedDate":"2021-08-01"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2020-07-29"},{"lineNumber":81,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_NOT_IMPLEMENTED_YET);","lastModifiedDate":"2020-07-29"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":83,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":85,"author":{"gitId":"-"},"content":"## Enhancing `RemarkCommand`","lastModifiedDate":"2020-07-29"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":87,"author":{"gitId":"-"},"content":"Let’s change `RemarkCommand` to parse input from the user.","lastModifiedDate":"2020-07-29"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":89,"author":{"gitId":"-"},"content":"### Make the command accept parameters","lastModifiedDate":"2020-07-29"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":91,"author":{"gitId":"-"},"content":"We start by modifying the constructor of `RemarkCommand` to accept an `Index` and a `String`. While we are at it, let’s change the error message to echo the values. While this is not a replacement for tests, it is an obvious way to tell if our code is functioning as intended.","lastModifiedDate":"2020-07-29"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":93,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":94,"author":{"gitId":"chaaaaun"},"content":"import static util.commons.scrolls.elder.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-12"},{"lineNumber":95,"author":{"gitId":"-"},"content":"//...","lastModifiedDate":"2020-07-29"},{"lineNumber":96,"author":{"gitId":"-"},"content":"public class RemarkCommand extends Command {","lastModifiedDate":"2020-07-29"},{"lineNumber":97,"author":{"gitId":"-"},"content":" //...","lastModifiedDate":"2020-07-29"},{"lineNumber":98,"author":{"gitId":"-"},"content":" public static final String MESSAGE_ARGUMENTS \u003d \"Index: %1$d, Remark: %2$s\";","lastModifiedDate":"2020-07-29"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":100,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2020-07-29"},{"lineNumber":101,"author":{"gitId":"-"},"content":" private final String remark;","lastModifiedDate":"2020-07-29"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":103,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-07-29"},{"lineNumber":104,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit the remark","lastModifiedDate":"2020-07-29"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * @param remark of the person to be updated to","lastModifiedDate":"2020-07-29"},{"lineNumber":106,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public RemarkCommand(Index index, String remark) {","lastModifiedDate":"2020-07-29"},{"lineNumber":108,"author":{"gitId":"-"},"content":" requireAllNonNull(index, remark);","lastModifiedDate":"2020-07-29"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":110,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2020-07-29"},{"lineNumber":111,"author":{"gitId":"-"},"content":" this.remark \u003d remark;","lastModifiedDate":"2020-07-29"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":114,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2020-07-29"},{"lineNumber":115,"author":{"gitId":"-"},"content":" throw new CommandException(","lastModifiedDate":"2021-08-01"},{"lineNumber":116,"author":{"gitId":"-"},"content":" String.format(MESSAGE_ARGUMENTS, index.getOneBased(), remark));","lastModifiedDate":"2021-08-01"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":119,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":120,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2020-07-29"},{"lineNumber":121,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2020-07-29"},{"lineNumber":122,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2020-07-29"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":125,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2020-07-29"},{"lineNumber":126,"author":{"gitId":"-"},"content":" if (!(other instanceof RemarkCommand)) {","lastModifiedDate":"2020-07-29"},{"lineNumber":127,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2020-07-29"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":130,"author":{"gitId":"-"},"content":" RemarkCommand e \u003d (RemarkCommand) other;","lastModifiedDate":"2020-07-29"},{"lineNumber":131,"author":{"gitId":"-"},"content":" return index.equals(e.index)","lastModifiedDate":"2020-07-29"},{"lineNumber":132,"author":{"gitId":"-"},"content":" \u0026\u0026 remark.equals(e.remark);","lastModifiedDate":"2020-07-29"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":134,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":135,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":137,"author":{"gitId":"-"},"content":"Your code should look something like [this](https://github.com/se-edu/addressbook-level3/commit/dc6d5139d08f6403da0ec624ea32bd79a2ae0cbf#diff-a8e35af8f9c251525063fae36c9852922a7e7195763018eacec60f3a4d87c594) after you are done.","lastModifiedDate":"2022-01-02"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":139,"author":{"gitId":"-"},"content":"### Parse user input","lastModifiedDate":"2020-07-29"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":141,"author":{"gitId":"-"},"content":"Now let’s move on to writing a parser that will extract the index and remark from the input provided by the user.","lastModifiedDate":"2020-07-29"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":143,"author":{"gitId":"-"},"content":"Create a `RemarkCommandParser` class in the `seedu.address.logic.parser` package. The class must extend the `Parser` interface.","lastModifiedDate":"2020-07-29"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":145,"author":{"gitId":"-"},"content":"![The relationship between Parser and RemarkCommandParser](../images/add-remark/RemarkCommandParserClass.png)","lastModifiedDate":"2023-09-12"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":147,"author":{"gitId":"-"},"content":"Thankfully, `ArgumentTokenizer#tokenize()` makes it trivial to parse user input. Let’s take a look at the JavaDoc provided for the function to understand what it does.","lastModifiedDate":"2020-07-29"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":149,"author":{"gitId":"-"},"content":"**`ArgumentTokenizer.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":151,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":152,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-07-29"},{"lineNumber":153,"author":{"gitId":"-"},"content":" * Tokenizes an arguments string and returns an {@code ArgumentMultimap}","lastModifiedDate":"2020-07-29"},{"lineNumber":154,"author":{"gitId":"-"},"content":" * object that maps prefixes to their respective argument values. Only the","lastModifiedDate":"2020-07-29"},{"lineNumber":155,"author":{"gitId":"-"},"content":" * given prefixes will be recognized in the arguments string.","lastModifiedDate":"2020-07-29"},{"lineNumber":156,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2020-07-29"},{"lineNumber":157,"author":{"gitId":"-"},"content":" * @param argsString Arguments string of the form:","lastModifiedDate":"2020-07-29"},{"lineNumber":158,"author":{"gitId":"-"},"content":" * {@code preamble \u003cprefix\u003evalue \u003cprefix\u003evalue ...}","lastModifiedDate":"2020-07-29"},{"lineNumber":159,"author":{"gitId":"-"},"content":" * @param prefixes Prefixes to tokenize the arguments string with","lastModifiedDate":"2020-07-29"},{"lineNumber":160,"author":{"gitId":"-"},"content":" * @return ArgumentMultimap object that maps prefixes to their","lastModifiedDate":"2020-07-29"},{"lineNumber":161,"author":{"gitId":"-"},"content":" * arguments","lastModifiedDate":"2020-07-29"},{"lineNumber":162,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":163,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":165,"author":{"gitId":"-"},"content":"We can tell `ArgumentTokenizer#tokenize()` to look out for our new prefix `r/` and it will return us an instance of `ArgumentMultimap`. Now let’s find out what we need to do in order to obtain the Index and String that we need. Let’s look through `ArgumentMultimap` :","lastModifiedDate":"2020-07-29"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":167,"author":{"gitId":"-"},"content":"**`ArgumentMultimap.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":169,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":170,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-07-29"},{"lineNumber":171,"author":{"gitId":"-"},"content":" * Returns the last value of {@code prefix}.","lastModifiedDate":"2020-07-29"},{"lineNumber":172,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":173,"author":{"gitId":"-"},"content":"public Optional\u003cString\u003e getValue(Prefix prefix) {","lastModifiedDate":"2020-07-29"},{"lineNumber":174,"author":{"gitId":"-"},"content":" List\u003cString\u003e values \u003d getAllValues(prefix);","lastModifiedDate":"2020-07-29"},{"lineNumber":175,"author":{"gitId":"-"},"content":" return values.isEmpty() ? Optional.empty() :","lastModifiedDate":"2020-07-29"},{"lineNumber":176,"author":{"gitId":"-"},"content":" Optional.of(values.get(values.size() - 1));","lastModifiedDate":"2020-07-29"},{"lineNumber":177,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":178,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":180,"author":{"gitId":"-"},"content":"This appears to be what we need to get a String of the remark. But what about the Index? Let\u0027s take a quick peek at existing `Command` that uses an index to see how it is done.","lastModifiedDate":"2020-07-29"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":182,"author":{"gitId":"-"},"content":"**`DeleteCommandParser.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":184,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":185,"author":{"gitId":"-"},"content":"Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2020-07-29"},{"lineNumber":186,"author":{"gitId":"-"},"content":"return new DeleteCommand(index);","lastModifiedDate":"2020-07-29"},{"lineNumber":187,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":189,"author":{"gitId":"-"},"content":"There appears to be another utility class that obtains an `Index` from the input provided by the user.","lastModifiedDate":"2020-07-29"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":191,"author":{"gitId":"-"},"content":"Now that we have the know-how to extract the data that we need from the user’s input, we can parse the user command and create a new instance of `RemarkCommand`, as given below.","lastModifiedDate":"2020-07-29"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":193,"author":{"gitId":"-"},"content":"**`RemarkCommandParser.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":195,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":196,"author":{"gitId":"-"},"content":"public RemarkCommand parse(String args) throws ParseException {","lastModifiedDate":"2020-07-29"},{"lineNumber":197,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2020-07-29"},{"lineNumber":198,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args,","lastModifiedDate":"2020-07-29"},{"lineNumber":199,"author":{"gitId":"-"},"content":" PREFIX_REMARK);","lastModifiedDate":"2020-07-29"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":201,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2020-07-29"},{"lineNumber":202,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2020-07-29"},{"lineNumber":203,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2020-07-29"},{"lineNumber":204,"author":{"gitId":"-"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2020-07-29"},{"lineNumber":205,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2020-07-29"},{"lineNumber":206,"author":{"gitId":"-"},"content":" RemarkCommand.MESSAGE_USAGE), ive);","lastModifiedDate":"2020-07-29"},{"lineNumber":207,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":209,"author":{"gitId":"-"},"content":" String remark \u003d argMultimap.getValue(PREFIX_REMARK).orElse(\"\");","lastModifiedDate":"2020-07-29"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":211,"author":{"gitId":"-"},"content":" return new RemarkCommand(index, remark);","lastModifiedDate":"2020-07-29"},{"lineNumber":212,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":213,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":215,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2020-07-29"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":217,"author":{"gitId":"-"},"content":":information_source: Don’t forget to update `AddressBookParser` to use our new `RemarkCommandParser`!","lastModifiedDate":"2020-07-29"},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":219,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-07-29"},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":221,"author":{"gitId":"-"},"content":"If you are stuck, check out the sample","lastModifiedDate":"2020-07-29"},{"lineNumber":222,"author":{"gitId":"-"},"content":"[here](https://github.com/se-edu/addressbook-level3/commit/dc6d5139d08f6403da0ec624ea32bd79a2ae0cbf#diff-8bf239e8e9529369b577701303ddd96af93178b4ed6735f91c2d8488b20c6b4a).","lastModifiedDate":"2022-01-02"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":224,"author":{"gitId":"-"},"content":"## Add `Remark` to the model","lastModifiedDate":"2020-07-29"},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":226,"author":{"gitId":"-"},"content":"Now that we have all the information that we need, let’s lay the groundwork for propagating the remarks added into the in-memory storage of person data. We achieve that by working with the `Person` model. Each field in a Person is implemented as a separate class (e.g. a `Name` object represents the person’s name). That means we should add a `Remark` class so that we can use a `Remark` object to represent a remark given to a person.","lastModifiedDate":"2020-07-29"},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":228,"author":{"gitId":"-"},"content":"### Add a new `Remark` class","lastModifiedDate":"2020-07-29"},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":230,"author":{"gitId":"-"},"content":"Create a new `Remark` in `seedu.address.model.person`. Since a `Remark` is a field that is similar to `Address`, we can reuse a significant bit of code.","lastModifiedDate":"2020-07-29"},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":232,"author":{"gitId":"-"},"content":"A copy-paste and search-replace later, you should have something like [this](https://github.com/se-edu/addressbook-level3/commit/4516e099699baa9e2d51801bd26f016d812dedcc#diff-41bb13c581e280c686198251ad6cc337cd5e27032772f06ed9bf7f1440995ece). Note how `Remark` has no constrains and thus does not require input","lastModifiedDate":"2022-01-02"},{"lineNumber":233,"author":{"gitId":"-"},"content":"validation.","lastModifiedDate":"2020-07-29"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":235,"author":{"gitId":"-"},"content":"### Make use of `Remark`","lastModifiedDate":"2020-07-29"},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":237,"author":{"gitId":"-"},"content":"Let’s change `RemarkCommand` and `RemarkCommandParser` to use the new `Remark` class instead of plain `String`. These should be relatively simple changes.","lastModifiedDate":"2020-07-29"},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":239,"author":{"gitId":"-"},"content":"## Add a placeholder element for remark to the UI","lastModifiedDate":"2020-07-29"},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":241,"author":{"gitId":"-"},"content":"Without getting too deep into `fxml`, let’s go on a 5 minute adventure to get some placeholder text to show up for each person.","lastModifiedDate":"2020-07-29"},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":243,"author":{"gitId":"chaaaaun"},"content":"Simply add the following to [`ui.scrolls.elder.PersonCard`](https://github.com/se-edu/addressbook-level3/commit/850b78879582f38accb05dd20c245963c65ea599#diff-639834f1e05afe2276a86372adf0fe5f69314642c2d93cfa543d614ce5a76688).","lastModifiedDate":"2024-03-12"},{"lineNumber":244,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":245,"author":{"gitId":"-"},"content":"**`PersonCard.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":247,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":248,"author":{"gitId":"-"},"content":"@FXML","lastModifiedDate":"2020-07-29"},{"lineNumber":249,"author":{"gitId":"-"},"content":"private Label remark;","lastModifiedDate":"2020-07-29"},{"lineNumber":250,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":251,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":252,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":253,"author":{"gitId":"-"},"content":"`@FXML` is an annotation that marks a private or protected field and makes it accessible to FXML. It might sound like Greek to you right now, don’t worry — we will get back to it later.","lastModifiedDate":"2020-07-29"},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":255,"author":{"gitId":"-"},"content":"Then insert the following into [`main/resources/view/PersonListCard.fxml`](https://github.com/se-edu/addressbook-level3/commit/850b78879582f38accb05dd20c245963c65ea599#diff-d44c4f51c24f6253c277a2bb9bc440b8064d9c15ad7cb7ceda280bca032efce9).","lastModifiedDate":"2022-01-02"},{"lineNumber":256,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":257,"author":{"gitId":"-"},"content":"**`PersonListCard.fxml`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":259,"author":{"gitId":"-"},"content":"``` xml","lastModifiedDate":"2020-07-29"},{"lineNumber":260,"author":{"gitId":"-"},"content":"\u003cLabel fx:id\u003d\"remark\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$remark\" /\u003e","lastModifiedDate":"2020-07-29"},{"lineNumber":261,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":263,"author":{"gitId":"-"},"content":"That’s it! Fire up the application again and you should see something like this:","lastModifiedDate":"2020-07-29"},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":265,"author":{"gitId":"-"},"content":"![$remark shows up in each entry](../images/add-remark/$Remark.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":266,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":267,"author":{"gitId":"-"},"content":"## Modify `Person` to support a `Remark` field","lastModifiedDate":"2020-07-29"},{"lineNumber":268,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":269,"author":{"gitId":"-"},"content":"Since `PersonCard` displays data from a `Person`, we need to update `Person` to get our `Remark` displayed!","lastModifiedDate":"2020-07-29"},{"lineNumber":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":271,"author":{"gitId":"-"},"content":"### Modify `Person`","lastModifiedDate":"2020-07-29"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":273,"author":{"gitId":"-"},"content":"We change the constructor of `Person` to take a `Remark`. We will also need to define new fields and accessors accordingly to store our new addition.","lastModifiedDate":"2020-07-29"},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":275,"author":{"gitId":"-"},"content":"### Update other usages of `Person`","lastModifiedDate":"2020-07-29"},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":277,"author":{"gitId":"-"},"content":"Unfortunately, a change to `Person` will cause other commands to break, you will have to modify these commands to use the updated `Person`!","lastModifiedDate":"2020-07-29"},{"lineNumber":278,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":279,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2020-07-29"},{"lineNumber":280,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":281,"author":{"gitId":"-"},"content":":bulb: Use the `Find Usages` feature in IntelliJ IDEA on the `Person` class to find these commands.","lastModifiedDate":"2020-07-29"},{"lineNumber":282,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":283,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-07-29"},{"lineNumber":284,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":285,"author":{"gitId":"-"},"content":"Refer to [this commit](https://github.com/se-edu/addressbook-level3/commit/ce998c37e65b92d35c91d28c7822cd139c2c0a5c) and check that you have got everything in order!","lastModifiedDate":"2020-07-29"},{"lineNumber":286,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":288,"author":{"gitId":"-"},"content":"## Updating Storage","lastModifiedDate":"2020-07-29"},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":290,"author":{"gitId":"-"},"content":"AddressBook stores data by serializing `JsonAdaptedPerson` into `json` with the help of an external library — Jackson. Let’s update `JsonAdaptedPerson` to work with our new `Person`!","lastModifiedDate":"2020-07-29"},{"lineNumber":291,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":292,"author":{"gitId":"-"},"content":"While the changes to code may be minimal, the test data will have to be updated as well.","lastModifiedDate":"2020-07-29"},{"lineNumber":293,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":294,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-warning\"\u003e","lastModifiedDate":"2020-07-29"},{"lineNumber":295,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":296,"author":{"gitId":"-"},"content":":exclamation: You must delete AddressBook’s storage file located at `/data/addressbook.json` before running it! Not doing so will cause AddressBook to default to an empty address book!","lastModifiedDate":"2020-07-29"},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":298,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-07-29"},{"lineNumber":299,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":300,"author":{"gitId":"-"},"content":"Check out [this commit](https://github.com/se-edu/addressbook-level3/commit/556cbd0e03ff224d7a68afba171ad2eb0ce56bbf)","lastModifiedDate":"2020-07-29"},{"lineNumber":301,"author":{"gitId":"-"},"content":"to see what the changes entail.","lastModifiedDate":"2020-07-29"},{"lineNumber":302,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":303,"author":{"gitId":"-"},"content":"## Finalizing the UI","lastModifiedDate":"2020-07-29"},{"lineNumber":304,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":305,"author":{"gitId":"-"},"content":"Now that we have finalized the `Person` class and its dependencies, we can now bind the `Remark` field to the UI.","lastModifiedDate":"2020-07-29"},{"lineNumber":306,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":307,"author":{"gitId":"-"},"content":"Just add [this one line of code!](https://github.com/se-edu/addressbook-level3/commit/5b98fee11b6b3f5749b6b943c4f3bd3aa049b692)","lastModifiedDate":"2020-07-29"},{"lineNumber":308,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":309,"author":{"gitId":"-"},"content":"**`PersonCard.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":310,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":311,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":312,"author":{"gitId":"-"},"content":"public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2020-07-29"},{"lineNumber":313,"author":{"gitId":"-"},"content":" //...","lastModifiedDate":"2020-07-29"},{"lineNumber":314,"author":{"gitId":"-"},"content":" remark.setText(person.getRemark().value);","lastModifiedDate":"2020-07-29"},{"lineNumber":315,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":316,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":317,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":318,"author":{"gitId":"-"},"content":"![The remark label is bound properly!](../images/add-remark/RemarkBound.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":319,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":320,"author":{"gitId":"-"},"content":"## Putting everything together","lastModifiedDate":"2020-07-29"},{"lineNumber":321,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":322,"author":{"gitId":"-"},"content":"After the previous step, we notice a peculiar regression — we went from displaying something to nothing at all. However, this is expected behavior as we are yet to update the `RemarkCommand` to make use of the code we\u0027ve been adding in the last few steps.","lastModifiedDate":"2020-07-29"},{"lineNumber":323,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":324,"author":{"gitId":"-"},"content":"### Update `RemarkCommand` and `RemarkCommandParser`","lastModifiedDate":"2020-07-29"},{"lineNumber":325,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":326,"author":{"gitId":"-"},"content":"In this last step, we modify `RemarkCommand#execute()` to change the `Remark` of a `Person`. Since all fields in a `Person` are immutable, we create a new instance of a `Person` with the values that we want and","lastModifiedDate":"2020-07-29"},{"lineNumber":327,"author":{"gitId":"-"},"content":"save it with `Model#setPerson()`.","lastModifiedDate":"2020-07-29"},{"lineNumber":328,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":329,"author":{"gitId":"-"},"content":"**`RemarkCommand.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":330,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":331,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":332,"author":{"gitId":"-"},"content":"//...","lastModifiedDate":"2020-07-29"},{"lineNumber":333,"author":{"gitId":"-"},"content":" public static final String MESSAGE_ADD_REMARK_SUCCESS \u003d \"Added remark to Person: %1$s\";","lastModifiedDate":"2020-07-29"},{"lineNumber":334,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DELETE_REMARK_SUCCESS \u003d \"Removed remark from Person: %1$s\";","lastModifiedDate":"2020-07-29"},{"lineNumber":335,"author":{"gitId":"-"},"content":"//...","lastModifiedDate":"2020-07-29"},{"lineNumber":336,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":337,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2020-07-29"},{"lineNumber":338,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2020-07-29"},{"lineNumber":339,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":340,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2020-07-29"},{"lineNumber":341,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2020-07-29"},{"lineNumber":342,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":343,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":344,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2020-07-29"},{"lineNumber":345,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new Person(","lastModifiedDate":"2021-08-01"},{"lineNumber":346,"author":{"gitId":"-"},"content":" personToEdit.getName(), personToEdit.getPhone(), personToEdit.getEmail(),","lastModifiedDate":"2021-08-01"},{"lineNumber":347,"author":{"gitId":"-"},"content":" personToEdit.getAddress(), remark, personToEdit.getTags());","lastModifiedDate":"2020-07-29"},{"lineNumber":348,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":349,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2020-07-29"},{"lineNumber":350,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2020-07-29"},{"lineNumber":351,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":352,"author":{"gitId":"-"},"content":" return new CommandResult(generateSuccessMessage(editedPerson));","lastModifiedDate":"2020-07-29"},{"lineNumber":353,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":354,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":355,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-07-29"},{"lineNumber":356,"author":{"gitId":"-"},"content":" * Generates a command execution success message based on whether","lastModifiedDate":"2021-08-01"},{"lineNumber":357,"author":{"gitId":"-"},"content":" * the remark is added to or removed from","lastModifiedDate":"2021-08-01"},{"lineNumber":358,"author":{"gitId":"-"},"content":" * {@code personToEdit}.","lastModifiedDate":"2020-07-29"},{"lineNumber":359,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":360,"author":{"gitId":"-"},"content":" private String generateSuccessMessage(Person personToEdit) {","lastModifiedDate":"2020-07-29"},{"lineNumber":361,"author":{"gitId":"-"},"content":" String message \u003d !remark.value.isEmpty() ? MESSAGE_ADD_REMARK_SUCCESS : MESSAGE_DELETE_REMARK_SUCCESS;","lastModifiedDate":"2020-07-29"},{"lineNumber":362,"author":{"gitId":"-"},"content":" return String.format(message, personToEdit);","lastModifiedDate":"2020-07-29"},{"lineNumber":363,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":364,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":365,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":366,"author":{"gitId":"-"},"content":"![Congratulations!](../images/add-remark/RemarkComplete.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":367,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":368,"author":{"gitId":"-"},"content":"## Writing tests","lastModifiedDate":"2020-07-29"},{"lineNumber":369,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":370,"author":{"gitId":"-"},"content":"Tests are crucial to ensuring that bugs don’t slip into the codebase unnoticed. This is especially true for large code bases where a change might lead to unintended behavior.","lastModifiedDate":"2020-07-29"},{"lineNumber":371,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":372,"author":{"gitId":"-"},"content":"Let’s verify the correctness of our code by writing some tests!","lastModifiedDate":"2020-07-29"},{"lineNumber":373,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":374,"author":{"gitId":"-"},"content":"Of course you can simply add the test cases manually, like you\u0027ve been doing all along this tutorial. The result would be like the test cases in [here](https://github.com/se-edu/addressbook-level3/commit/fac8f3fd855d55831ca0cc73313b5943d49d4d6e#diff-ff58f7c10338b34f76645df49b71ecb2bafaf7611b20e7ff59ebc98475538a01). Alternatively, you can get the help of IntelliJ to generate the skeletons of the test cases, as explained in the next section.","lastModifiedDate":"2022-01-02"},{"lineNumber":375,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-08-01"},{"lineNumber":376,"author":{"gitId":"-"},"content":"### Automatically generating tests","lastModifiedDate":"2020-07-29"},{"lineNumber":377,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":378,"author":{"gitId":"-"},"content":"The goal is to write effective and efficient tests to ensure that `RemarkCommand#execute()` behaves as expected.","lastModifiedDate":"2020-07-29"},{"lineNumber":379,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":380,"author":{"gitId":"-"},"content":"The convention for test names is `methodName_testScenario_expectedResult`. An example would be","lastModifiedDate":"2020-07-29"},{"lineNumber":381,"author":{"gitId":"-"},"content":"`execute_filteredList_success`.","lastModifiedDate":"2020-07-29"},{"lineNumber":382,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":383,"author":{"gitId":"-"},"content":"Let’s create a test for `RemarkCommand#execute()` to test that adding a remark works. On `IntelliJ IDEA` you can bring up the context menu and choose to `Go To` \\\u003e `Test` or use the appropriate keyboard shortcut.","lastModifiedDate":"2020-07-29"},{"lineNumber":384,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":385,"author":{"gitId":"-"},"content":"![Using the context menu to jump to tests](../images/add-remark/ContextMenu.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":386,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":387,"author":{"gitId":"-"},"content":"Then, create a test for the `execute` method.","lastModifiedDate":"2020-07-29"},{"lineNumber":388,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":389,"author":{"gitId":"-"},"content":"![Creating a test for `execute`.](../images/add-remark/CreateTest.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":390,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":391,"author":{"gitId":"-"},"content":"Following convention, let’s change the name of the generated method to `execute_addRemarkUnfilteredList_success`.","lastModifiedDate":"2020-07-29"},{"lineNumber":392,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":393,"author":{"gitId":"-"},"content":"Let’s use the utility functions provided in `CommandTestUtil`. The functions ensure that commands produce the expected `CommandResult` and output the correct message. In this case, `CommandTestUtil#assertCommandSuccess` is the best fit as we are testing that a `RemarkCommand` will successfully add a `Remark`.","lastModifiedDate":"2020-07-29"},{"lineNumber":394,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":395,"author":{"gitId":"-"},"content":"You should end up with a test that looks something like [this](https://github.com/se-edu/addressbook-level3/commit/fac8f3fd855d55831ca0cc73313b5943d49d4d6e#diff-ff58f7c10338b34f76645df49b71ecb2bafaf7611b20e7ff59ebc98475538a01R36-R49).","lastModifiedDate":"2022-01-02"},{"lineNumber":396,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":397,"author":{"gitId":"-"},"content":"## Conclusion","lastModifiedDate":"2020-07-29"},{"lineNumber":398,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":399,"author":{"gitId":"-"},"content":"This concludes the tutorial for adding a new `Command` to AddressBook.","lastModifiedDate":"2020-07-29"}],"authorContributionMap":{"chaaaaun":3,"-":396}},{"path":"docs/tutorials/RemovingFields.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: \"Tutorial: Removing Fields\"","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003e Perfection is achieved, not when there is nothing more to add, but when there is nothing left to take away.","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003e — Antoine de Saint-Exupery","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"When working on an existing code base, you will most likely find that some features that are no longer necessary.","lastModifiedDate":"2021-08-01"},{"lineNumber":11,"author":{"gitId":"-"},"content":"This tutorial aims to give you some practice on such a code \u0027removal\u0027 activity by removing the `address` field from `Person` class.","lastModifiedDate":"2021-08-01"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-08-01"},{"lineNumber":13,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-success\"\u003e","lastModifiedDate":"2021-08-01"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-08-01"},{"lineNumber":15,"author":{"gitId":"-"},"content":"**If you have done the [Add `remark` command tutorial](AddRemark.html) already**, you should know where the code had to be updated to add the field `remark`. From that experience, you can deduce where the code needs to be changed to _remove_ that field too. The removing of the `address` field can be done similarly.","lastModifiedDate":"2021-08-01"},{"lineNumber":16,"author":{"gitId":"-"},"content":"\u003cbr\u003e","lastModifiedDate":"2021-08-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":"\u003cbr\u003e","lastModifiedDate":"2021-08-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":"However, if you have no such prior knowledge, removing a field can take a quite a bit of detective work. This tutorial takes you through that process. **At least have a read even if you don\u0027t actually do the steps yourself.**","lastModifiedDate":"2021-08-01"},{"lineNumber":19,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-08-01"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"{:toc}","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"## Safely deleting `Address`","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":"IntelliJ IDEA provides a refactoring tool that can identify *most* parts of a removal easily. Let’s try to use it as much as we can.","lastModifiedDate":"2021-08-01"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"### Assisted refactoring","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"chaaaaun"},"content":"The `address` field in `Person` is actually an instance of the `person.model.scrolls.elder.Address` class. Since removing the `Address` class will break the application, we start by identifying `Address`\u0027s usages. This allows us to see code that depends on `Address` to function properly and edit them on a case-by-case basis. Right-click the `Address` class and select `Refactor` \\\u003e `Safe Delete` through the menu.","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":"* :bulb: To make things simpler, you can unselect the options `Search in comments and strings` and `Search for text occurrences`","lastModifiedDate":"2021-08-01"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":"![Usages detected](../images/remove/UnsafeDelete.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":"Choose to `View Usages` and you should be presented with a list of `Safe Delete Conflicts`. These conflicts describe locations in which the `Address` class is used.","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"![List of conflicts](../images/remove/SafeDeleteConflicts.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"Remove usages of `Address` by performing `Safe Delete`s on each entry i.e., double-click on the entry (which takes you to the code in concern, right-click on that entity, and choose `Refactor` -\u003e `Safe delete` as before). You will need to exercise discretion when removing usages of `Address`. Functions like `ParserUtil#parseAddress()` can be safely removed but its usages must be removed as well. Other usages like in `EditPersonDescriptor` may require more careful inspection.","lastModifiedDate":"2021-08-01"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"Let’s try removing references to `Address` in `EditPersonDescriptor`.","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"1. Safe delete the field `address` in `EditPersonDescriptor`.","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"1. Select `Yes` when prompted to remove getters and setters.","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"1. Select `View Usages` again.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" ![UnsafeDeleteOnField](../images/remove/UnsafeDeleteOnField.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"1. Remove the usages of `address` and select `Do refactor` when you are done.","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" :bulb: **Tip:** Removing usages may result in errors. Exercise discretion and fix them. For example, removing the `address` field from the `Person` class will require you to modify its constructor.","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"1. Repeat the steps for the remaining usages of `Address`","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"After you are done, verify that the application still works by compiling and running it again.","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":"### Manual refactoring","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":"Unfortunately, there are usages of `Address` that IntelliJ IDEA cannot identify. You can find them by searching for instances of the word `address` in your code (`Edit` \\\u003e `Find` \\\u003e `Find in path`).","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"Places of interest to look out for would be resources used by the application. `main/resources` contains images and `fxml` files used by the application and `test/resources` contains test data. For example, there is a `$address` in each `PersonCard` that has not been removed nor identified.","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"![$address](../images/remove/$address.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"A quick look at the `PersonCard` class and its `fxml` file quickly reveals why it slipped past the automated refactoring.","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"**`PersonCard.java`**","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"@FXML","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":"private Label address;","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"**`PersonCard.fxml`**","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"``` xml","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"\u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"\u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" /\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"\u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"After removing the `Label`, we can proceed to formally test our code. If everything went well, you should have most of your tests pass. Fix any remaining errors until the tests all pass.","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"## Tidying up","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":"At this point, your application is working as intended and all your tests are passing. What’s left to do is to clean up references to `Address` in test data and documentation.","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":"In `src/test/data/`, data meant for testing purposes are stored. While keeping the `address` field in the json files does not cause the tests to fail, it is not good practice to let cruft from old features accumulate.","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"**`invalidPersonAddressBook.json`:**","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"```json","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"{","lastModifiedDate":"2020-05-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":" \"persons\": [ {","lastModifiedDate":"2020-05-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":" \"name\": \"Person with invalid name field: Ha!ns Mu@ster\",","lastModifiedDate":"2020-05-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":" \"phone\": \"9482424\",","lastModifiedDate":"2020-05-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":" \"email\": \"hans@example.com\",","lastModifiedDate":"2020-05-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":" \"address\": \"4th street\"","lastModifiedDate":"2020-05-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":" } ]","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-05-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":"You can go through each individual `json` file and manually remove the `address` field.","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"chaaaaun":1,"-":111}},{"path":"docs/tutorials/TracingCode.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: \"Tutorial: Tracing code\"","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003e Indeed, the ratio of time spent reading versus writing is well over 10 to 1. We are constantly reading old code as part of the effort to write new code. …​\\[Therefore,\\] making it easy to read makes it easier to write.","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003e — Robert C. Martin Clean Code: A Handbook of Agile Software Craftsmanship","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"When trying to understand an unfamiliar code base, one common strategy used is to trace some representative execution path through the code base. One easy way to trace an execution path is to use a debugger to step through the code. In this tutorial, you will be using the IntelliJ IDEA’s debugger to trace the execution path of a specific user command.","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"{:toc}","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"## Before we start","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"Before we jump into the code, it is useful to get an idea of the overall structure and the high-level behavior of the application. This is provided in the \u0027Architecture\u0027 section of the developer guide. In particular, the architecture diagram (reproduced below), tells us that the App consists of several components.","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"![ArchitectureDiagram](../images/ArchitectureDiagram.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"It also has a sequence diagram (reproduced below) that tells us how a command propagates through the App.","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"../images/ArchitectureSequenceDiagram.png\" width\u003d\"550\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"Note how the diagram shows only the execution flows _between_ the main components. That is, it does not show details of the execution path *inside* each component. By hiding those details, the diagram aims to inform the reader about the overall execution path of a command without overwhelming the reader with too much details. In this tutorial, you aim to find those omitted details so that you get a more in-depth understanding of how the code works.","lastModifiedDate":"2021-07-31"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":"Before we proceed, ensure that you have done the following:","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":"1. Read the [*Architecture* section of the DG](../DeveloperGuide.md#architecture)","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"1. Set up the project in Intellij IDEA","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"1. Learn basic debugging features of Intellij IDEA","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * If you are using a different IDE, we\u0027ll leave it to you to figure out the equivalent feature to use in your IDE.","lastModifiedDate":"2021-07-31"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * If you are not using an IDE, we\u0027ll let you figure out how to achieve the same using your coding toolchain.","lastModifiedDate":"2021-07-31"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":"## Setting a breakpoint","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":"As you know, the first step of debugging is to put in a breakpoint where you want the debugger to pause the execution. For example, if you are trying to understand how the App starts up, you would put a breakpoint in the first statement of the `main` method.","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"In our case, we would want to begin the tracing at the very point where the App start processing user input (i.e., somewhere in the UI component), and then trace through how the execution proceeds through the UI component. However, the execution path through a GUI is often somewhat obscure due to various *event-driven mechanisms* used by GUI frameworks, which happens to be the case here too. Therefore, let us put the breakpoint where the `UI` transfers control to the `Logic` component.","lastModifiedDate":"2021-07-31"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"../images/ArchitectureSequenceDiagram.png\" width\u003d\"550\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":42,"author":{"gitId":"chaaaaun"},"content":"According to the sequence diagram you saw earlier (and repeated above for reference), the `UI` component yields control to the `Logic` component through a method named `execute`. Searching through the code base for an `execute()` method that belongs to the `Logic` component yields a promising candidate in `logic.scrolls.elder.Logic`.","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":44,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"../images/tracing/searchResultsForExecuteMethod.png\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":46,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":48,"author":{"gitId":"-"},"content":":bulb: **Intellij Tip:** The [\u0027**Search Everywhere**\u0027 feature](https://www.jetbrains.com/help/idea/searching-everywhere.html) can be used here. In particular, the \u0027**Find Symbol**\u0027 (\u0027Symbol\u0027 here refers to methods, variables, classes etc.) variant of that feature is quite useful here as we are looking for a _method_ named `execute`, not simply the text `execute`.","lastModifiedDate":"2021-07-31"},{"lineNumber":49,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":51,"author":{"gitId":"chaaaaun"},"content":"A quick look at the `logic.scrolls.elder.Logic` (an extract given below) confirms that this indeed might be what we’re looking for.","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":53,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2021-07-31"},{"lineNumber":54,"author":{"gitId":"-"},"content":"public interface Logic {","lastModifiedDate":"2021-07-31"},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2021-07-31"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2021-07-31"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * @param commandText The command as entered by the user.","lastModifiedDate":"2021-07-31"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * @return the result of the command execution.","lastModifiedDate":"2021-07-31"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2021-07-31"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * @throws ParseException If an error occurs during parsing.","lastModifiedDate":"2021-07-31"},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2021-07-31"},{"lineNumber":62,"author":{"gitId":"-"},"content":" CommandResult execute(String commandText) throws CommandException, ParseException;","lastModifiedDate":"2021-07-31"},{"lineNumber":63,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2021-07-31"},{"lineNumber":64,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-07-31"},{"lineNumber":65,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2021-07-31"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":67,"author":{"gitId":"-"},"content":"But apparently, this is an interface, not a concrete implementation.","lastModifiedDate":"2021-07-31"},{"lineNumber":68,"author":{"gitId":"-"},"content":"That should be fine because the [Architecture section of the Developer Guide](../DeveloperGuide.html#architecture) tells us that components interact through interfaces. Here\u0027s the relevant diagram:","lastModifiedDate":"2021-07-31"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":70,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"../images/ComponentManagers.png\" width\u003d\"300\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":72,"author":{"gitId":"-"},"content":"Next, let\u0027s find out which statement(s) in the `UI` code is calling this method, thus transferring control from the `UI` to the `Logic`.","lastModifiedDate":"2021-07-31"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":74,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":76,"author":{"gitId":"-"},"content":":bulb: **Intellij Tip:** The [\u0027**Find Usages**\u0027 feature](https://www.jetbrains.com/help/idea/find-highlight-usages.html#find-usages) can find from which parts of the code a class/method/variable is being used.","lastModifiedDate":"2021-07-31"},{"lineNumber":77,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"![`Find Usages` tool window. `Edit` \\\u003e `Find` \\\u003e `Find Usages`.](../images/tracing/FindUsages.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"Bingo\\! `MainWindow#executeCommand()` seems to be exactly what we’re looking for\\!","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"Now let’s set the breakpoint. First, double-click the item to reach the corresponding code. Once there, click on the left gutter to set a breakpoint, as shown below.","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" ![LeftGutter](../images/tracing/LeftGutter.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"## Tracing the execution path","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"Recall from the User Guide that the `edit` command has the format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAG]…​` For this tutorial we will be issuing the command `edit 1 n/Alice Yeoh`.","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":":bulb: **Tip:** Over the course of the debugging session, you will encounter every major component in the application. Try to keep track of what happens inside the component and where the execution transfers to another component.","lastModifiedDate":"2021-07-31"},{"lineNumber":93,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":"1. To start the debugging session, simply `Run` \\\u003e `Debug Main`","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":"1. When the GUI appears, enter `edit 1 n/Alice Yeoh` into the command box and press `Enter`.","lastModifiedDate":"2021-07-31"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"1. The Debugger tool window should show up and show something like this:\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":100,"author":{"gitId":"-"},"content":" ![DebuggerStep1](../images/tracing/DebuggerStep1.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"1. Use the _Show execution point_ feature to jump to the line of code that we stopped at:\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":103,"author":{"gitId":"-"},"content":" ![ShowExecutionPoint](../images/tracing/ShowExecutionPoint.png)\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":104,"author":{"gitId":"-"},"content":" `CommandResult commandResult \u003d logic.execute(commandText);` is the line that you end up at (i.e., the place where we put the breakpoint).","lastModifiedDate":"2021-07-31"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":"1. We are interested in the `logic.execute(commandText)` portion of that line so let’s _Step in_ into that method call:\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":107,"author":{"gitId":"-"},"content":" ![StepInto](../images/tracing/StepInto.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":"1. We end up in `LogicManager#execute()` (not `Logic#execute` -- but this is expected because we know the `execute()` method in the `Logic` interface is actually implemented by the `LogicManager` class). Let’s take a look at the body of the method. Given below is the same code, with additional explanatory comments.","lastModifiedDate":"2021-07-31"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":" **LogicManager\\#execute().**","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":" ``` java","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-05-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":" public CommandResult execute(String commandText)","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":" throws CommandException, ParseException {","lastModifiedDate":"2020-05-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":" //Logging, safe to ignore","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":" logger.info(\"----------------[USER COMMAND][\" + commandText + \"]\");","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":" CommandResult commandResult;","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":" //Parse user input from String to a Command","lastModifiedDate":"2020-05-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":" Command command \u003d addressBookParser.parseCommand(commandText);","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":" //Executes the Command and stores the result","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":" commandResult \u003d command.execute(model);","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2020-05-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":" //We can deduce that the previous line of code modifies model in some way","lastModifiedDate":"2020-05-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":" // since it\u0027s being stored here.","lastModifiedDate":"2020-05-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":" storage.saveAddressBook(model.getAddressBook());","lastModifiedDate":"2020-05-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2020-05-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":" throw new CommandException(FILE_OPS_ERROR_MESSAGE + ioe, ioe);","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2020-05-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"1. `LogicManager#execute()` appears to delegate most of the heavy lifting to other components. Let’s take a closer look at each one.","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":"1. _Step over_ the logging code since it is of no interest to us now.","lastModifiedDate":"2021-07-31"},{"lineNumber":142,"author":{"gitId":"-"},"content":" ![StepOver](../images/tracing/StepOver.png)","lastModifiedDate":"2021-07-31"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"1. _Step into_ the line where user input in parsed from a String to a Command, which should bring you to the `AddressBookParser#parseCommand()` method (partial code given below):","lastModifiedDate":"2021-07-31"},{"lineNumber":145,"author":{"gitId":"-"},"content":" ``` java","lastModifiedDate":"2020-05-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":"1. _Step over_ the statements in that method until you reach the `switch` statement. The \u0027Variables\u0027 window now shows the value of both `commandWord` and `arguments`:\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":154,"author":{"gitId":"-"},"content":" ![Variables](../images/tracing/Variables.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"1. We see that the value of `commandWord` is now `edit` but `arguments` is still not processed in any meaningful way.","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"1. Stepping through the `switch` block, we end up at a call to `EditCommandParser().parse()` as expected (because the command we typed is an edit command).","lastModifiedDate":"2021-07-31"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":" ``` java","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"1. Let’s see what `EditCommandParser#parse()` does by stepping into it. You might have to click the \u0027step into\u0027 button multiple times here because there are two method calls in that statement: `EditCommandParser()` and `parse()`.","lastModifiedDate":"2021-07-31"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":" \u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e:bulb: **Intellij Tip:** Sometimes, you might end up stepping into functions that are not of interest. Simply use the `step out` button to get out of them!","lastModifiedDate":"2021-07-31"},{"lineNumber":170,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":"1. Stepping through the method shows that it calls `ArgumentTokenizer#tokenize()` and `ParserUtil#parseIndex()` to obtain the arguments and index required.","lastModifiedDate":"2021-07-31"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":174,"author":{"gitId":"-"},"content":"1. The rest of the method seems to exhaustively check for the existence of each possible parameter of the `edit` command and store any possible changes in an `EditPersonDescriptor`. Recall that we can verify the contents of `editPersonDesciptor` through the \u0027Variables\u0027 window.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":175,"author":{"gitId":"-"},"content":" ![EditCommand](../images/tracing/EditCommand.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":"1. As you just traced through some code involved in parsing a command, you can take a look at this class diagram to see where the various parsing-related classes you encountered fit into the design of the `Logic` component.","lastModifiedDate":"2021-07-31"},{"lineNumber":178,"author":{"gitId":"-"},"content":" \u003cimg src\u003d\"../images/ParserClasses.png\" width\u003d\"600\"/\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":180,"author":{"gitId":"-"},"content":"1. Let’s continue stepping through until we return to `LogicManager#execute()`.","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":" The sequence diagram below shows the details of the execution path through the Logic component. Does the execution path you traced in the code so far match the diagram?\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":183,"author":{"gitId":"-"},"content":" ![Tracing an `edit` command through the Logic component](../images/tracing/LogicSequenceDiagram.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":"1. Now, step over until you read the statement that calls the `execute()` method of the `EditCommand` object received, and step into that `execute()` method (partial code given below):","lastModifiedDate":"2021-07-31"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":" **`EditCommand#execute()`:**","lastModifiedDate":"2021-07-31"},{"lineNumber":188,"author":{"gitId":"-"},"content":" ``` java","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-05-23"},{"lineNumber":190,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2020-05-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2020-05-23"},{"lineNumber":192,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2020-05-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2020-05-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2020-05-23"},{"lineNumber":198,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2020-05-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, editedPerson));","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":201,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":"1. As suspected, `command#execute()` does indeed make changes to the `model` object. Specifically,","lastModifiedDate":"2021-07-31"},{"lineNumber":204,"author":{"gitId":"-"},"content":" * it uses the `setPerson()` method (defined in the interface `Model` and implemented in `ModelManager` as per the usual pattern) to update the person data.","lastModifiedDate":"2021-07-31"},{"lineNumber":205,"author":{"gitId":"-"},"content":" * it uses the `updateFilteredPersonList` method to ask the `Model` to populate the \u0027filtered list\u0027 with _all_ persons.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":206,"author":{"gitId":"-"},"content":" FYI, The \u0027filtered list\u0027 is the list of persons resulting from the most recent operation that will be shown to the user immediately after. For the `edit` command, we populate it with all the persons so that the user can see the edited person along with all other persons. If this was a `find` command, we would be setting that list to contain the search results instead.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":207,"author":{"gitId":"-"},"content":" To provide some context, given below is the class diagram of the `Model` component. See if you can figure out where the \u0027filtered list\u0027 of persons is being tracked.","lastModifiedDate":"2021-07-31"},{"lineNumber":208,"author":{"gitId":"-"},"content":" \u003cimg src\u003d\"../images/ModelClassDiagram.png\" width\u003d\"450\" /\u003e\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":209,"author":{"gitId":"-"},"content":" * :bulb: This may be a good time to read through the [`Model` component section of the DG](../DeveloperGuide.html#model-component)","lastModifiedDate":"2021-07-31"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":"1. As you step through the rest of the statements in the `EditCommand#execute()` method, you\u0027ll see that it creates a `CommandResult` object (containing information about the result of the execution) and returns it.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":212,"author":{"gitId":"-"},"content":" Advancing the debugger by one more step should take you back to the middle of the `LogicManager#execute()` method.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":214,"author":{"gitId":"-"},"content":"1. Given that you have already seen quite a few classes in the `Logic` component in action, see if you can identify in this partial class diagram some of the classes you\u0027ve encountered so far, and see how they fit into the class structure of the `Logic` component:","lastModifiedDate":"2021-07-31"},{"lineNumber":215,"author":{"gitId":"-"},"content":" \u003cimg src\u003d\"../images/LogicClassDiagram.png\" width\u003d\"550\"/\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":216,"author":{"gitId":"-"},"content":" * :bulb: This may be a good time to read through the [`Logic` component section of the DG](../DeveloperGuide.html#logic-component)","lastModifiedDate":"2021-07-31"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":218,"author":{"gitId":"-"},"content":"1. Similar to before, you can step over/into statements in the `LogicManager#execute()` method to examine how the control is transferred to the `Storage` component and what happens inside that component.","lastModifiedDate":"2021-07-31"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":220,"author":{"gitId":"-"},"content":" \u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e:bulb: **Intellij Tip:** When trying to step into a statement such as `storage.saveAddressBook(model.getAddressBook())` which contains multiple method calls, Intellij will let you choose (by clicking) which one you want to step into.","lastModifiedDate":"2021-07-31"},{"lineNumber":221,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":223,"author":{"gitId":"-"},"content":"1. As you step through the code inside the `Storage` component, you will eventually arrive at the `JsonAddressBook#saveAddressBook()` method which calls the `JsonSerializableAddressBook` constructor, to create an object that can be _serialized_ (i.e., stored in storage medium) in JSON format. That constructor is given below (with added line breaks for easier readability):","lastModifiedDate":"2021-07-31"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":225,"author":{"gitId":"-"},"content":" **`JsonSerializableAddressBook` constructor:**","lastModifiedDate":"2021-07-31"},{"lineNumber":226,"author":{"gitId":"-"},"content":" ``` java","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-23"},{"lineNumber":228,"author":{"gitId":"-"},"content":" * Converts a given {@code ReadOnlyAddressBook} into this class for Jackson use.","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2020-05-23"},{"lineNumber":230,"author":{"gitId":"-"},"content":" * @param source future changes to this will not affect the created","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"author":{"gitId":"-"},"content":" * {@code JsonSerializableAddressBook}.","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":" public JsonSerializableAddressBook(ReadOnlyAddressBook source) {","lastModifiedDate":"2020-05-23"},{"lineNumber":234,"author":{"gitId":"-"},"content":" persons.addAll(","lastModifiedDate":"2020-05-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":" source.getPersonList()","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":" .stream()","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":" .map(JsonAdaptedPerson::new)","lastModifiedDate":"2020-05-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":"1. It appears that a `JsonAdaptedPerson` is created for each `Person` and then added to the `JsonSerializableAddressBook`.","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":" This is because regular Java objects need to go through an _adaptation_ for them to be suitable to be saved in JSON format.","lastModifiedDate":"2021-07-31"},{"lineNumber":244,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":"1. While you are stepping through the classes in the `Storage` component, here is the component\u0027s class diagram to help you understand how those classes fit into the structure of the component.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":246,"author":{"gitId":"-"},"content":" \u003cimg src\u003d\"../images/StorageClassDiagram.png\" width\u003d\"550\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":247,"author":{"gitId":"-"},"content":" * :bulb: This may be a good time to read through the [`Storage` component section of the DG](../DeveloperGuide.html#storage-component)","lastModifiedDate":"2021-07-31"},{"lineNumber":248,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":249,"author":{"gitId":"-"},"content":"1. We can continue to step through until you reach the end of the `LogicManager#execute()` method and return to the `MainWindow#executeCommand()` method (the place where we put the original breakpoint).","lastModifiedDate":"2021-07-31"},{"lineNumber":250,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":"1. Stepping into `resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser());`, we end up in:","lastModifiedDate":"2021-07-31"},{"lineNumber":252,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":" **`ResultDisplay#setFeedbackToUser()`**","lastModifiedDate":"2021-07-31"},{"lineNumber":254,"author":{"gitId":"-"},"content":" ``` java","lastModifiedDate":"2020-05-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":" public void setFeedbackToUser(String feedbackToUser) {","lastModifiedDate":"2020-05-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":" requireNonNull(feedbackToUser);","lastModifiedDate":"2020-05-23"},{"lineNumber":257,"author":{"gitId":"-"},"content":" resultDisplay.setText(feedbackToUser);","lastModifiedDate":"2020-05-23"},{"lineNumber":258,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":259,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":"1. Finally, you can step through until you reach the end of`MainWindow#executeCommand()`.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":262,"author":{"gitId":"-"},"content":" :bulb: This may be a good time to read through the [`UI` component section of the DG](../DeveloperGuide.html#ui-component)","lastModifiedDate":"2021-07-31"},{"lineNumber":263,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":265,"author":{"gitId":"-"},"content":"## Conclusion","lastModifiedDate":"2020-05-23"},{"lineNumber":266,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":267,"author":{"gitId":"-"},"content":"In this tutorial, we traced a valid edit command from raw user input to the result being displayed to the user. From this tutorial, you learned more about how the various components work together to produce a response to a user command.","lastModifiedDate":"2021-07-31"},{"lineNumber":268,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":269,"author":{"gitId":"-"},"content":"Here are some quick questions you can try to answer based on your execution path tracing. In some cases, you can do further tracing for the given commands to find exactly what happens.","lastModifiedDate":"2021-07-31"},{"lineNumber":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":271,"author":{"gitId":"-"},"content":"1. In this tutorial, we traced the \"happy path\" (i.e., no errors). What","lastModifiedDate":"2020-05-23"},{"lineNumber":272,"author":{"gitId":"-"},"content":" do you think will happen if we traced the following commands","lastModifiedDate":"2020-05-23"},{"lineNumber":273,"author":{"gitId":"-"},"content":" instead? What exceptions do you think will be thrown (if any), where","lastModifiedDate":"2020-05-23"},{"lineNumber":274,"author":{"gitId":"-"},"content":" will the exceptions be thrown and where will they be handled?","lastModifiedDate":"2020-05-23"},{"lineNumber":275,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":276,"author":{"gitId":"-"},"content":" 1. `redit 1 n/Alice Yu`","lastModifiedDate":"2020-05-23"},{"lineNumber":277,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":278,"author":{"gitId":"-"},"content":" 2. `edit 0 n/Alice Yu`","lastModifiedDate":"2020-05-23"},{"lineNumber":279,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":280,"author":{"gitId":"-"},"content":" 3. `edit 1 n/Alex Yeoh`","lastModifiedDate":"2020-05-23"},{"lineNumber":281,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":282,"author":{"gitId":"-"},"content":" 4. `edit 1`","lastModifiedDate":"2020-05-23"},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":284,"author":{"gitId":"-"},"content":" 5. `edit 1 n/アリス ユー`","lastModifiedDate":"2020-05-23"},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":286,"author":{"gitId":"-"},"content":" 6. `edit 1 t/one t/two t/three t/one`","lastModifiedDate":"2020-05-23"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":288,"author":{"gitId":"-"},"content":"2. What components will you have to modify to perform the following","lastModifiedDate":"2020-05-23"},{"lineNumber":289,"author":{"gitId":"-"},"content":" enhancements to the application?","lastModifiedDate":"2020-05-23"},{"lineNumber":290,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":291,"author":{"gitId":"-"},"content":" 1. Make command words case-insensitive","lastModifiedDate":"2020-05-23"},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":293,"author":{"gitId":"-"},"content":" 2. Allow `delete` to remove more than one index at a time","lastModifiedDate":"2020-05-23"},{"lineNumber":294,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":295,"author":{"gitId":"-"},"content":" 3. Save the address book in the CSV format instead","lastModifiedDate":"2020-05-23"},{"lineNumber":296,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":297,"author":{"gitId":"-"},"content":" 4. Add a new command","lastModifiedDate":"2020-05-23"},{"lineNumber":298,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":299,"author":{"gitId":"-"},"content":" 5. Add a new field to `Person`","lastModifiedDate":"2020-05-23"},{"lineNumber":300,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":301,"author":{"gitId":"-"},"content":" 6. Add a new entity to the address book","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"chaaaaun":2,"-":299}},{"path":"src/main/java/scrolls/elder/AppParameters.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Map;","lastModifiedDate":"2018-04-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2018-04-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2018-04-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.application.Application;","lastModifiedDate":"2018-04-21"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.core.LogsCenter;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.util.FileUtil;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-04-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Represents the parsed command-line parameters given to the application.","lastModifiedDate":"2018-04-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class AppParameters {","lastModifiedDate":"2018-04-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AppParameters.class);","lastModifiedDate":"2018-04-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private Path configPath;","lastModifiedDate":"2018-04-21"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public Path getConfigPath() {","lastModifiedDate":"2018-04-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":" return configPath;","lastModifiedDate":"2018-04-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void setConfigPath(Path configPath) {","lastModifiedDate":"2018-04-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":" this.configPath \u003d configPath;","lastModifiedDate":"2018-04-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Parses the application command-line parameters.","lastModifiedDate":"2018-04-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static AppParameters parse(Application.Parameters parameters) {","lastModifiedDate":"2018-04-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" AppParameters appParameters \u003d new AppParameters();","lastModifiedDate":"2018-04-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" Map\u003cString, String\u003e namedParameters \u003d parameters.getNamed();","lastModifiedDate":"2018-04-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" String configPathParameter \u003d namedParameters.get(\"config\");","lastModifiedDate":"2018-04-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" if (configPathParameter !\u003d null \u0026\u0026 !FileUtil.isValidPath(configPathParameter)) {","lastModifiedDate":"2018-04-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" logger.warning(\"Invalid config path \" + configPathParameter + \". Using default config path.\");","lastModifiedDate":"2018-04-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" configPathParameter \u003d null;","lastModifiedDate":"2018-04-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" appParameters.setConfigPath(configPathParameter !\u003d null ? Paths.get(configPathParameter) : null);","lastModifiedDate":"2018-04-21"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":44,"author":{"gitId":"-"},"content":" return appParameters;","lastModifiedDate":"2018-04-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-04-21"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2018-04-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-04-21"},{"lineNumber":50,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (!(other instanceof AppParameters)) {","lastModifiedDate":"2018-04-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-04-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" AppParameters otherAppParameters \u003d (AppParameters) other;","lastModifiedDate":"2018-04-21"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return Objects.equals(configPath, otherAppParameters.configPath);","lastModifiedDate":"2023-07-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-04-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2018-04-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return configPath.hashCode();","lastModifiedDate":"2018-04-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":" .add(\"configPath\", configPath)","lastModifiedDate":"2019-02-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-04-21"}],"authorContributionMap":{"chaaaaun":4,"-":69}},{"path":"src/main/java/scrolls/elder/Main.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-07-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-27"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.application.Application;","lastModifiedDate":"2019-02-08"},{"lineNumber":6,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.core.LogsCenter;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2019-02-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * The main entry point to the application.","lastModifiedDate":"2019-02-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2019-02-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * This is a workaround for the following error when MainApp is made the","lastModifiedDate":"2019-02-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * entry point of the application:","lastModifiedDate":"2019-02-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2019-02-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Error: JavaFX runtime components are missing, and are required to run this application","lastModifiedDate":"2019-02-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2019-02-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * The reason is that MainApp extends Application. In that case, the","lastModifiedDate":"2019-02-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * LauncherHelper will check for the javafx.graphics module to be present","lastModifiedDate":"2019-02-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * as a named module. We don\u0027t use JavaFX via the module system so it can\u0027t","lastModifiedDate":"2019-02-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * find the javafx.graphics module, and so the launch is aborted.","lastModifiedDate":"2019-02-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2019-02-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * By having a separate main class (Main) that doesn\u0027t extend Application","lastModifiedDate":"2019-02-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * to be the entry point of the application, we avoid this issue.","lastModifiedDate":"2019-02-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class Main {","lastModifiedDate":"2019-02-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static Logger logger \u003d LogsCenter.getLogger(Main.class);","lastModifiedDate":"2023-07-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-02-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" // As per https://github.com/openjdk/jfx/blob/master/doc-files/release-notes-16.md","lastModifiedDate":"2023-07-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" // JavaFX 16 (or later) runtime logs a warning at startup if JavaFX classes are loaded from","lastModifiedDate":"2023-07-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // the classpath instead of a module.","lastModifiedDate":"2023-07-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" // Our application does not use Java modules yet. Even if it did, modules are ignored when","lastModifiedDate":"2023-07-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // packed into a FAT Jar file (as we do), which means this warning will persist even then.","lastModifiedDate":"2023-07-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" // The warning however, can be safely ignored. Thus, the following log informs","lastModifiedDate":"2023-07-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // the user (if looking at the log output) that the said warning appearing in the log","lastModifiedDate":"2023-07-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":" // can be ignored.","lastModifiedDate":"2023-07-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" logger.warning(\"The warning about Unsupported JavaFX configuration below can be ignored.\");","lastModifiedDate":"2023-07-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" Application.launch(MainApp.class, args);","lastModifiedDate":"2019-02-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-02-08"}],"authorContributionMap":{"chaaaaun":2,"-":39}},{"path":"src/main/java/scrolls/elder/MainApp.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.application.Application;","lastModifiedDate":"2016-08-26"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-26"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.core.Config;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.core.LogsCenter;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.core.Version;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.util.ConfigUtil;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.util.StringUtil;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.Logic;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.LogicManager;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.AddressBook;","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.Model;","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.ModelManager;","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.ReadOnlyUserPrefs;","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.UserPrefs;","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.util.SampleDataUtil;","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.storage.AddressBookStorage;","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.storage.JsonAddressBookStorage;","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.storage.JsonUserPrefsStorage;","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.storage.Storage;","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.storage.StorageManager;","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.storage.UserPrefsStorage;","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.ui.Ui;","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.ui.UiManager;","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Runs the application.","lastModifiedDate":"2019-02-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":"public class MainApp extends Application {","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final Version VERSION \u003d new Version(0, 2, 2, true);","lastModifiedDate":"2023-08-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(MainApp.class);","lastModifiedDate":"2017-04-01"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":43,"author":{"gitId":"-"},"content":" protected Ui ui;","lastModifiedDate":"2016-09-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" protected Logic logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":" protected Storage storage;","lastModifiedDate":"2016-09-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":" protected Model model;","lastModifiedDate":"2016-09-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" protected Config config;","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void init() throws Exception {","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"chaaaaun"},"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 Elder Scrolls ]\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\");","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":" super.init();","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" AppParameters appParameters \u003d AppParameters.parse(getParameters());","lastModifiedDate":"2018-04-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" config \u003d initConfig(appParameters.getConfigPath());","lastModifiedDate":"2018-04-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":" initLogging(config);","lastModifiedDate":"2023-07-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25"},{"lineNumber":58,"author":{"gitId":"-"},"content":" UserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(config.getUserPrefsFilePath());","lastModifiedDate":"2017-02-25"},{"lineNumber":59,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d initPrefs(userPrefsStorage);","lastModifiedDate":"2018-12-06"},{"lineNumber":60,"author":{"gitId":"-"},"content":" AddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(userPrefs.getAddressBookFilePath());","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2017-02-25"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" model \u003d initModelManager(storage, userPrefs);","lastModifiedDate":"2016-09-25"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":" ui \u003d new UiManager(logic);","lastModifiedDate":"2018-12-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Returns a {@code ModelManager} with the data from {@code storage}\u0027s address book and {@code userPrefs}. \u003cbr\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * The data from the sample address book will be used instead if {@code storage}\u0027s address book is not found,","lastModifiedDate":"2017-08-16"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * or an empty address book will be used instead if errors occur when reading {@code storage}\u0027s address book.","lastModifiedDate":"2017-08-16"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":75,"author":{"gitId":"-"},"content":" private Model initModelManager(Storage storage, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":76,"author":{"gitId":"-"},"content":" logger.info(\"Using data file : \" + storage.getAddressBookFilePath());","lastModifiedDate":"2023-07-29"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":78,"author":{"gitId":"-"},"content":" Optional\u003cReadOnlyAddressBook\u003e addressBookOptional;","lastModifiedDate":"2016-09-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook initialData;","lastModifiedDate":"2016-09-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":" addressBookOptional \u003d storage.readAddressBook();","lastModifiedDate":"2016-09-25"},{"lineNumber":82,"author":{"gitId":"-"},"content":" if (!addressBookOptional.isPresent()) {","lastModifiedDate":"2016-09-24"},{"lineNumber":83,"author":{"gitId":"-"},"content":" logger.info(\"Creating a new data file \" + storage.getAddressBookFilePath()","lastModifiedDate":"2023-05-15"},{"lineNumber":84,"author":{"gitId":"-"},"content":" + \" populated with a sample AddressBook.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":86,"author":{"gitId":"-"},"content":" initialData \u003d addressBookOptional.orElseGet(SampleDataUtil::getSampleAddressBook);","lastModifiedDate":"2016-12-20"},{"lineNumber":87,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14"},{"lineNumber":88,"author":{"gitId":"-"},"content":" logger.warning(\"Data file at \" + storage.getAddressBookFilePath() + \" could not be loaded.\"","lastModifiedDate":"2023-06-15"},{"lineNumber":89,"author":{"gitId":"-"},"content":" + \" Will be starting with an empty AddressBook.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":90,"author":{"gitId":"chaaaaun"},"content":" initialData \u003d new AddressBook(0);","lastModifiedDate":"2024-03-17"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":93,"author":{"gitId":"-"},"content":" return new ModelManager(initialData, userPrefs);","lastModifiedDate":"2016-09-25"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":96,"author":{"gitId":"-"},"content":" private void initLogging(Config config) {","lastModifiedDate":"2016-09-24"},{"lineNumber":97,"author":{"gitId":"-"},"content":" LogsCenter.init(config);","lastModifiedDate":"2016-09-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":100,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * Returns a {@code Config} using the file at {@code configFilePath}. \u003cbr\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * The default file path {@code Config#DEFAULT_CONFIG_FILE} will be used instead","lastModifiedDate":"2017-08-16"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * if {@code configFilePath} is null.","lastModifiedDate":"2017-08-16"},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":105,"author":{"gitId":"-"},"content":" protected Config initConfig(Path configFilePath) {","lastModifiedDate":"2018-04-21"},{"lineNumber":106,"author":{"gitId":"-"},"content":" Config initializedConfig;","lastModifiedDate":"2016-09-24"},{"lineNumber":107,"author":{"gitId":"-"},"content":" Path configFilePathUsed;","lastModifiedDate":"2018-04-21"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":109,"author":{"gitId":"-"},"content":" configFilePathUsed \u003d Config.DEFAULT_CONFIG_FILE;","lastModifiedDate":"2016-09-24"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":111,"author":{"gitId":"-"},"content":" if (configFilePath !\u003d null) {","lastModifiedDate":"2016-09-24"},{"lineNumber":112,"author":{"gitId":"-"},"content":" logger.info(\"Custom Config file specified \" + configFilePath);","lastModifiedDate":"2016-09-24"},{"lineNumber":113,"author":{"gitId":"-"},"content":" configFilePathUsed \u003d configFilePath;","lastModifiedDate":"2016-09-24"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":" logger.info(\"Using config file : \" + configFilePathUsed);","lastModifiedDate":"2016-09-24"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":118,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":119,"author":{"gitId":"-"},"content":" Optional\u003cConfig\u003e configOptional \u003d ConfigUtil.readConfig(configFilePathUsed);","lastModifiedDate":"2016-09-24"},{"lineNumber":120,"author":{"gitId":"-"},"content":" if (!configOptional.isPresent()) {","lastModifiedDate":"2023-01-03"},{"lineNumber":121,"author":{"gitId":"-"},"content":" logger.info(\"Creating new config file \" + configFilePathUsed);","lastModifiedDate":"2023-05-15"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-01-03"},{"lineNumber":123,"author":{"gitId":"-"},"content":" initializedConfig \u003d configOptional.orElse(new Config());","lastModifiedDate":"2016-09-24"},{"lineNumber":124,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":" logger.warning(\"Config file at \" + configFilePathUsed + \" could not be loaded.\"","lastModifiedDate":"2023-06-15"},{"lineNumber":126,"author":{"gitId":"-"},"content":" + \" Using default config properties.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":127,"author":{"gitId":"-"},"content":" initializedConfig \u003d new Config();","lastModifiedDate":"2016-09-24"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":130,"author":{"gitId":"-"},"content":" //Update config file in case it was missing to begin with or there are new/unused fields","lastModifiedDate":"2016-09-24"},{"lineNumber":131,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":132,"author":{"gitId":"-"},"content":" ConfigUtil.saveConfig(initializedConfig, configFilePathUsed);","lastModifiedDate":"2016-09-24"},{"lineNumber":133,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24"},{"lineNumber":134,"author":{"gitId":"-"},"content":" logger.warning(\"Failed to save config file : \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":136,"author":{"gitId":"-"},"content":" return initializedConfig;","lastModifiedDate":"2016-09-24"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":140,"author":{"gitId":"-"},"content":" * Returns a {@code UserPrefs} using the file at {@code storage}\u0027s user prefs file path,","lastModifiedDate":"2017-08-16"},{"lineNumber":141,"author":{"gitId":"-"},"content":" * or a new {@code UserPrefs} with default configuration if errors occur when","lastModifiedDate":"2017-08-16"},{"lineNumber":142,"author":{"gitId":"-"},"content":" * reading from the file.","lastModifiedDate":"2017-08-16"},{"lineNumber":143,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":144,"author":{"gitId":"-"},"content":" protected UserPrefs initPrefs(UserPrefsStorage storage) {","lastModifiedDate":"2017-02-25"},{"lineNumber":145,"author":{"gitId":"-"},"content":" Path prefsFilePath \u003d storage.getUserPrefsFilePath();","lastModifiedDate":"2018-04-21"},{"lineNumber":146,"author":{"gitId":"-"},"content":" logger.info(\"Using preference file : \" + prefsFilePath);","lastModifiedDate":"2023-05-15"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":148,"author":{"gitId":"-"},"content":" UserPrefs initializedPrefs;","lastModifiedDate":"2016-09-24"},{"lineNumber":149,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":150,"author":{"gitId":"-"},"content":" Optional\u003cUserPrefs\u003e prefsOptional \u003d storage.readUserPrefs();","lastModifiedDate":"2016-09-25"},{"lineNumber":151,"author":{"gitId":"-"},"content":" if (!prefsOptional.isPresent()) {","lastModifiedDate":"2023-01-03"},{"lineNumber":152,"author":{"gitId":"-"},"content":" logger.info(\"Creating new preference file \" + prefsFilePath);","lastModifiedDate":"2023-05-15"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-01-03"},{"lineNumber":154,"author":{"gitId":"-"},"content":" initializedPrefs \u003d prefsOptional.orElse(new UserPrefs());","lastModifiedDate":"2016-09-24"},{"lineNumber":155,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14"},{"lineNumber":156,"author":{"gitId":"-"},"content":" logger.warning(\"Preference file at \" + prefsFilePath + \" could not be loaded.\"","lastModifiedDate":"2023-06-15"},{"lineNumber":157,"author":{"gitId":"-"},"content":" + \" Using default preferences.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":158,"author":{"gitId":"-"},"content":" initializedPrefs \u003d new UserPrefs();","lastModifiedDate":"2016-09-24"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":" //Update prefs file in case it was missing to begin with or there are new/unused fields","lastModifiedDate":"2016-09-24"},{"lineNumber":162,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":163,"author":{"gitId":"-"},"content":" storage.saveUserPrefs(initializedPrefs);","lastModifiedDate":"2016-09-25"},{"lineNumber":164,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24"},{"lineNumber":165,"author":{"gitId":"-"},"content":" logger.warning(\"Failed to save config file : \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24"},{"lineNumber":166,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":168,"author":{"gitId":"-"},"content":" return initializedPrefs;","lastModifiedDate":"2016-09-24"},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":171,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":172,"author":{"gitId":"-"},"content":" public void start(Stage primaryStage) {","lastModifiedDate":"2016-08-08"},{"lineNumber":173,"author":{"gitId":"chaaaaun"},"content":" logger.info(\"Starting Elder Scrolls \" + MainApp.VERSION);","lastModifiedDate":"2024-03-12"},{"lineNumber":174,"author":{"gitId":"-"},"content":" ui.start(primaryStage);","lastModifiedDate":"2016-09-25"},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":177,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":178,"author":{"gitId":"-"},"content":" public void stop() {","lastModifiedDate":"2016-08-08"},{"lineNumber":179,"author":{"gitId":"chaaaaun"},"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 Elder Scrolls ] \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\");","lastModifiedDate":"2024-03-12"},{"lineNumber":180,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":181,"author":{"gitId":"-"},"content":" storage.saveUserPrefs(model.getUserPrefs());","lastModifiedDate":"2018-12-06"},{"lineNumber":182,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24"},{"lineNumber":183,"author":{"gitId":"-"},"content":" logger.severe(\"Failed to save preferences \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24"},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":185,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26"},{"lineNumber":186,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"chaaaaun":28,"-":158}},{"path":"src/main/java/scrolls/elder/commons/core/Config.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.commons.core;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2016-09-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Level;","lastModifiedDate":"2016-09-09"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Config values used by the app","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class Config {","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final Path DEFAULT_CONFIG_FILE \u003d Paths.get(\"config.json\");","lastModifiedDate":"2018-04-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" // Config values customizable through config file","lastModifiedDate":"2016-09-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private Level logLevel \u003d Level.INFO;","lastModifiedDate":"2016-09-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private Path userPrefsFilePath \u003d Paths.get(\"preferences.json\");","lastModifiedDate":"2018-04-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public Level getLogLevel() {","lastModifiedDate":"2016-09-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" return logLevel;","lastModifiedDate":"2016-09-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void setLogLevel(Level logLevel) {","lastModifiedDate":"2016-09-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" this.logLevel \u003d logLevel;","lastModifiedDate":"2016-09-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public Path getUserPrefsFilePath() {","lastModifiedDate":"2018-04-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":" return userPrefsFilePath;","lastModifiedDate":"2016-09-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public void setUserPrefsFilePath(Path userPrefsFilePath) {","lastModifiedDate":"2018-04-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" this.userPrefsFilePath \u003d userPrefsFilePath;","lastModifiedDate":"2016-09-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2016-09-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2016-09-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" if (!(other instanceof Config)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2016-09-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" Config otherConfig \u003d (Config) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" return Objects.equals(logLevel, otherConfig.logLevel)","lastModifiedDate":"2023-07-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(userPrefsFilePath, otherConfig.userPrefsFilePath);","lastModifiedDate":"2023-07-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return Objects.hash(logLevel, userPrefsFilePath);","lastModifiedDate":"2018-12-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-09-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" .add(\"logLevel\", logLevel)","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":" .add(\"userPrefsFilePath\", userPrefsFilePath)","lastModifiedDate":"2019-02-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"chaaaaun":2,"-":64}},{"path":"src/main/java/scrolls/elder/commons/core/GuiSettings.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.commons.core;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.awt.Point;","lastModifiedDate":"2017-01-18"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.io.Serializable;","lastModifiedDate":"2016-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2016-09-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * A Serializable class that contains the GUI settings.","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Guarantees: immutable.","lastModifiedDate":"2018-11-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class GuiSettings implements Serializable {","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" private static final double DEFAULT_HEIGHT \u003d 600;","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"CJerrong"},"content":" private static final double DEFAULT_WIDTH \u003d 1000;","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private final double windowWidth;","lastModifiedDate":"2018-11-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private final double windowHeight;","lastModifiedDate":"2018-11-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final Point windowCoordinates;","lastModifiedDate":"2018-11-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Constructs a {@code GuiSettings} with the default height, width and position.","lastModifiedDate":"2020-05-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public GuiSettings() {","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" windowWidth \u003d DEFAULT_WIDTH;","lastModifiedDate":"2018-08-14"},{"lineNumber":27,"author":{"gitId":"-"},"content":" windowHeight \u003d DEFAULT_HEIGHT;","lastModifiedDate":"2018-08-14"},{"lineNumber":28,"author":{"gitId":"-"},"content":" windowCoordinates \u003d null; // null represent no coordinates","lastModifiedDate":"2018-08-14"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Constructs a {@code GuiSettings} with the specified height, width and position.","lastModifiedDate":"2020-05-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public GuiSettings(double windowWidth, double windowHeight, int xPosition, int yPosition) {","lastModifiedDate":"2018-11-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.windowWidth \u003d windowWidth;","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.windowHeight \u003d windowHeight;","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" windowCoordinates \u003d new Point(xPosition, yPosition);","lastModifiedDate":"2018-08-14"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public double getWindowWidth() {","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" return windowWidth;","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public double getWindowHeight() {","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" return windowHeight;","lastModifiedDate":"2016-08-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public Point getWindowCoordinates() {","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" return windowCoordinates !\u003d null ? new Point(windowCoordinates) : null;","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2016-09-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2016-09-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" if (!(other instanceof GuiSettings)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2016-09-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" GuiSettings otherGuiSettings \u003d (GuiSettings) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return windowWidth \u003d\u003d otherGuiSettings.windowWidth","lastModifiedDate":"2023-07-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" \u0026\u0026 windowHeight \u003d\u003d otherGuiSettings.windowHeight","lastModifiedDate":"2023-07-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(windowCoordinates, otherGuiSettings.windowCoordinates);","lastModifiedDate":"2023-07-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-24"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return Objects.hash(windowWidth, windowHeight, windowCoordinates);","lastModifiedDate":"2016-09-24"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-09-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" .add(\"windowWidth\", windowWidth)","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":" .add(\"windowHeight\", windowHeight)","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" .add(\"windowCoordinates\", windowCoordinates)","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"CJerrong":1,"chaaaaun":2,"-":79}},{"path":"src/main/java/scrolls/elder/commons/core/LogsCenter.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.commons.core;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-05-20"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-05-20"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2016-09-09"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.logging.ConsoleHandler;","lastModifiedDate":"2017-01-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.logging.FileHandler;","lastModifiedDate":"2017-01-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.logging.Level;","lastModifiedDate":"2017-01-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.logging.SimpleFormatter;","lastModifiedDate":"2017-01-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Configures and manages loggers and handlers, including their logging level","lastModifiedDate":"2016-09-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Named {@link Logger}s can be obtained from this class\u003cbr\u003e","lastModifiedDate":"2016-09-29"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * These loggers have been configured to output messages to the console and a {@code .log} file by default,","lastModifiedDate":"2016-09-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * at the {@code INFO} level. A new {@code .log} file with a new numbering will be created after the log","lastModifiedDate":"2016-09-29"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * file reaches 5MB big, up to a maximum of 5 files.\u003cbr\u003e","lastModifiedDate":"2016-09-29"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class LogsCenter {","lastModifiedDate":"2016-09-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final int MAX_FILE_COUNT \u003d 5;","lastModifiedDate":"2016-09-28"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final int MAX_FILE_SIZE_IN_BYTES \u003d (int) (Math.pow(2, 20) * 5); // 5MB","lastModifiedDate":"2016-09-28"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final String LOG_FILE \u003d \"addressbook.log\";","lastModifiedDate":"2016-09-28"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final Logger logger; // logger for this class","lastModifiedDate":"2023-07-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static Logger baseLogger; // to be used as the parent of all other loggers created by this class.","lastModifiedDate":"2023-07-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static Level currentLogLevel \u003d Level.INFO;","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" // This static block ensures essential loggers are created early","lastModifiedDate":"2023-07-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2023-07-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":" setBaseLogger();","lastModifiedDate":"2023-07-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":" logger \u003d LogsCenter.getLogger(LogsCenter.class);","lastModifiedDate":"2023-07-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-29"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Initializes loggers with the log level specified in the {@code config} object. Applies to all loggers created","lastModifiedDate":"2023-07-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * using {@link #getLogger(String)} and {@link #getLogger(Class)} methods except for those that are manually set.","lastModifiedDate":"2023-07-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-29"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static void init(Config config) {","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" currentLogLevel \u003d config.getLogLevel();","lastModifiedDate":"2016-09-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" logger.info(\"Log level will be set as: \" + currentLogLevel);","lastModifiedDate":"2023-07-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":" // set the level of the baseLogger which will be inherited by other loggers","lastModifiedDate":"2023-07-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":" baseLogger.setLevel(currentLogLevel);","lastModifiedDate":"2023-07-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-29"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Creates a logger with the given name prefixed by the {@code baseLogger}\u0027s name so that the created logger","lastModifiedDate":"2023-07-19"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * becomes a descendant of the {@code baseLogger}. Furthermore, the returned logger will have the same log handlers","lastModifiedDate":"2023-07-19"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * as the {@code baseLogger}.","lastModifiedDate":"2023-07-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-29"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static Logger getLogger(String name) {","lastModifiedDate":"2016-09-28"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // Java organizes loggers into a hierarchy based on their names (using \u0027.\u0027 as a separator, similar to how Java","lastModifiedDate":"2023-07-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // packages form a hierarchy). Furthermore, loggers without a level inherit the level of their parent logger.","lastModifiedDate":"2023-07-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // By prefixing names of all loggers with baseLogger\u0027s name + \".\", we make the baseLogger the parent of all","lastModifiedDate":"2023-07-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // loggers. This allows us to change the level of all loggers simply by changing the baseLogger level.","lastModifiedDate":"2023-07-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" Logger logger \u003d Logger.getLogger(baseLogger.getName() + \".\" + name);","lastModifiedDate":"2023-07-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" removeHandlers(logger);","lastModifiedDate":"2016-09-28"},{"lineNumber":57,"author":{"gitId":"-"},"content":" logger.setUseParentHandlers(true);","lastModifiedDate":"2023-07-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return logger;","lastModifiedDate":"2023-07-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Creates a Logger for the given class name.","lastModifiedDate":"2017-01-16"},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-16"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public static \u003cT\u003e Logger getLogger(Class\u003cT\u003e clazz) {","lastModifiedDate":"2017-01-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":" requireNonNull(clazz);","lastModifiedDate":"2023-05-20"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return getLogger(clazz.getSimpleName());","lastModifiedDate":"2017-01-16"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":69,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Removes all handlers from the {@code logger}.","lastModifiedDate":"2023-07-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":72,"author":{"gitId":"-"},"content":" private static void removeHandlers(Logger logger) {","lastModifiedDate":"2016-09-28"},{"lineNumber":73,"author":{"gitId":"-"},"content":" Arrays.stream(logger.getHandlers())","lastModifiedDate":"2018-01-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":" .forEach(logger::removeHandler);","lastModifiedDate":"2018-01-21"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-28"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * Creates a logger named \u0027ab3\u0027, containing a {@code ConsoleHandler} and a {@code FileHandler}.","lastModifiedDate":"2023-07-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Sets it as the {@code baseLogger}, to be used as the parent logger of all other loggers.","lastModifiedDate":"2023-07-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":81,"author":{"gitId":"-"},"content":" private static void setBaseLogger() {","lastModifiedDate":"2023-07-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":" baseLogger \u003d Logger.getLogger(\"ab3\");","lastModifiedDate":"2023-07-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":" baseLogger.setUseParentHandlers(false);","lastModifiedDate":"2023-07-19"},{"lineNumber":84,"author":{"gitId":"-"},"content":" removeHandlers(baseLogger);","lastModifiedDate":"2023-07-19"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":" // Level.ALL is used as the level for the handlers because the baseLogger filters the log messages by level","lastModifiedDate":"2023-07-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":" // already; there is no need to control log message level of the handlers.","lastModifiedDate":"2023-07-19"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-19"},{"lineNumber":89,"author":{"gitId":"-"},"content":" // add a ConsoleHandler to log to the console","lastModifiedDate":"2023-07-19"},{"lineNumber":90,"author":{"gitId":"-"},"content":" ConsoleHandler consoleHandler \u003d new ConsoleHandler();","lastModifiedDate":"2023-07-19"},{"lineNumber":91,"author":{"gitId":"-"},"content":" consoleHandler.setLevel(Level.ALL);","lastModifiedDate":"2023-07-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":" baseLogger.addHandler(consoleHandler);","lastModifiedDate":"2023-07-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":" // add a FileHandler to log to a file","lastModifiedDate":"2023-07-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-09"},{"lineNumber":96,"author":{"gitId":"-"},"content":" FileHandler fileHandler \u003d new FileHandler(LOG_FILE, MAX_FILE_SIZE_IN_BYTES, MAX_FILE_COUNT, true);","lastModifiedDate":"2023-07-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":" fileHandler.setFormatter(new SimpleFormatter());","lastModifiedDate":"2023-07-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" fileHandler.setLevel(Level.ALL);","lastModifiedDate":"2023-07-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" baseLogger.addHandler(fileHandler);","lastModifiedDate":"2023-07-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-09"},{"lineNumber":101,"author":{"gitId":"-"},"content":" logger.warning(\"Error adding file handler for logger.\");","lastModifiedDate":"2016-09-09"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"chaaaaun":1,"-":105}},{"path":"src/main/java/scrolls/elder/commons/core/Version.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.commons.core;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2016-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2016-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonValue;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * Represents a version with major, minor and patch number","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class Version implements Comparable\u003cVersion\u003e {","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" public static final String VERSION_REGEX \u003d \"V(\\\\d+)\\\\.(\\\\d+)\\\\.(\\\\d+)(ea)?\";","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" private static final String EXCEPTION_STRING_NOT_VERSION \u003d \"String is not a valid Version. %s\";","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private static final Pattern VERSION_PATTERN \u003d Pattern.compile(VERSION_REGEX);","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final int major;","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private final int minor;","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final int patch;","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final boolean isEarlyAccess;","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Constructs a {@code Version} with the given version details.","lastModifiedDate":"2020-05-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public Version(int major, int minor, int patch, boolean isEarlyAccess) {","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" this.major \u003d major;","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" this.minor \u003d minor;","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" this.patch \u003d patch;","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" this.isEarlyAccess \u003d isEarlyAccess;","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public int getMajor() {","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" return major;","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public int getMinor() {","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" return minor;","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public int getPatch() {","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" return patch;","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public boolean isEarlyAccess() {","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" return isEarlyAccess;","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Parses a version number string in the format V1.2.3.","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * @param versionString version number string","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * @return a Version object","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2016-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static Version fromString(String versionString) throws IllegalArgumentException {","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" Matcher versionMatcher \u003d VERSION_PATTERN.matcher(versionString);","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" if (!versionMatcher.find()) {","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" throw new IllegalArgumentException(String.format(EXCEPTION_STRING_NOT_VERSION, versionString));","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return new Version(Integer.parseInt(versionMatcher.group(1)),","lastModifiedDate":"2016-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":" Integer.parseInt(versionMatcher.group(2)),","lastModifiedDate":"2016-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":" Integer.parseInt(versionMatcher.group(3)),","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":" versionMatcher.group(4) \u003d\u003d null ? false : true);","lastModifiedDate":"2016-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":" @JsonValue","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return String.format(\"V%d.%d.%d%s\", major, minor, patch, isEarlyAccess ? \"ea\" : \"\");","lastModifiedDate":"2016-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public int compareTo(Version other) {","lastModifiedDate":"2016-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":" if (major !\u003d other.major) {","lastModifiedDate":"2018-08-14"},{"lineNumber":78,"author":{"gitId":"-"},"content":" return major - other.major;","lastModifiedDate":"2018-08-14"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":80,"author":{"gitId":"-"},"content":" if (minor !\u003d other.minor) {","lastModifiedDate":"2018-08-14"},{"lineNumber":81,"author":{"gitId":"-"},"content":" return minor - other.minor;","lastModifiedDate":"2018-08-14"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":83,"author":{"gitId":"-"},"content":" if (patch !\u003d other.patch) {","lastModifiedDate":"2018-08-14"},{"lineNumber":84,"author":{"gitId":"-"},"content":" return patch - other.patch;","lastModifiedDate":"2018-08-14"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":86,"author":{"gitId":"-"},"content":" if (isEarlyAccess \u003d\u003d other.isEarlyAccess()) {","lastModifiedDate":"2018-08-14"},{"lineNumber":87,"author":{"gitId":"-"},"content":" return 0;","lastModifiedDate":"2017-05-22"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":89,"author":{"gitId":"-"},"content":" if (isEarlyAccess) {","lastModifiedDate":"2018-08-14"},{"lineNumber":90,"author":{"gitId":"-"},"content":" return -1;","lastModifiedDate":"2017-05-22"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":92,"author":{"gitId":"-"},"content":" return 1;","lastModifiedDate":"2017-05-22"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":96,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":" if (!(other instanceof Version)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2016-08-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":" Version otherVersion \u003d (Version) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":" return major \u003d\u003d otherVersion.major","lastModifiedDate":"2023-07-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" \u0026\u0026 minor \u003d\u003d otherVersion.minor","lastModifiedDate":"2023-07-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":" \u0026\u0026 patch \u003d\u003d otherVersion.patch","lastModifiedDate":"2023-07-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":" \u0026\u0026 isEarlyAccess \u003d\u003d otherVersion.isEarlyAccess;","lastModifiedDate":"2023-07-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":" String hash \u003d String.format(\"%03d%03d%03d\", major, minor, patch);","lastModifiedDate":"2016-08-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":" if (!isEarlyAccess) {","lastModifiedDate":"2016-08-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":" hash \u003d \"1\" + hash;","lastModifiedDate":"2016-08-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":" return Integer.parseInt(hash);","lastModifiedDate":"2016-08-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":121,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"chaaaaun":1,"-":120}},{"path":"src/main/java/scrolls/elder/commons/core/index/Index.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.commons.core.index;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":3,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * Represents a zero-based or one-based index.","lastModifiedDate":"2017-05-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * {@code Index} should be used right from the start (when parsing in a new user input), so that if the current","lastModifiedDate":"2017-05-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * component wants to communicate with another component, it can send an {@code Index} to avoid having to know what","lastModifiedDate":"2017-05-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * base the other component is using for its index. However, after receiving the {@code Index}, that component can","lastModifiedDate":"2017-05-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * convert it back to an int if the index will not be passed to a different component again.","lastModifiedDate":"2017-05-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class Index {","lastModifiedDate":"2017-05-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" private int zeroBasedIndex;","lastModifiedDate":"2017-05-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Index can only be created by calling {@link Index#fromZeroBased(int)} or","lastModifiedDate":"2017-05-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * {@link Index#fromOneBased(int)}.","lastModifiedDate":"2017-05-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private Index(int zeroBasedIndex) {","lastModifiedDate":"2017-05-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" if (zeroBasedIndex \u003c 0) {","lastModifiedDate":"2017-05-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" throw new IndexOutOfBoundsException();","lastModifiedDate":"2017-05-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" this.zeroBasedIndex \u003d zeroBasedIndex;","lastModifiedDate":"2017-05-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public int getZeroBased() {","lastModifiedDate":"2017-05-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" return zeroBasedIndex;","lastModifiedDate":"2017-05-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public int getOneBased() {","lastModifiedDate":"2017-05-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return zeroBasedIndex + 1;","lastModifiedDate":"2017-05-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Creates a new {@code Index} using a zero-based index.","lastModifiedDate":"2017-05-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static Index fromZeroBased(int zeroBasedIndex) {","lastModifiedDate":"2017-05-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" return new Index(zeroBasedIndex);","lastModifiedDate":"2017-05-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Creates a new {@code Index} using a one-based index.","lastModifiedDate":"2017-05-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static Index fromOneBased(int oneBasedIndex) {","lastModifiedDate":"2017-05-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" return new Index(oneBasedIndex - 1);","lastModifiedDate":"2017-05-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" if (!(other instanceof Index)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" Index otherIndex \u003d (Index) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return zeroBasedIndex \u003d\u003d otherIndex.zeroBasedIndex;","lastModifiedDate":"2023-07-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this).add(\"zeroBasedIndex\", zeroBasedIndex).toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"chaaaaun":2,"-":67}},{"path":"src/main/java/scrolls/elder/commons/exceptions/DataLoadingException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.commons.exceptions;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-14"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2023-06-14"},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Represents an error during loading of data from a file.","lastModifiedDate":"2023-06-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-06-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class DataLoadingException extends Exception {","lastModifiedDate":"2023-06-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":" public DataLoadingException(Exception cause) {","lastModifiedDate":"2023-06-14"},{"lineNumber":8,"author":{"gitId":"-"},"content":" super(cause);","lastModifiedDate":"2023-06-14"},{"lineNumber":9,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-06-14"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-14"},{"lineNumber":11,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2023-06-14"}],"authorContributionMap":{"chaaaaun":1,"-":10}},{"path":"src/main/java/scrolls/elder/commons/exceptions/IllegalValueException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.commons.exceptions;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Signals that some given data does not fulfill some constraints.","lastModifiedDate":"2016-08-24"},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class IllegalValueException extends Exception {","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * @param message should contain relevant information on the failed constraint(s)","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public IllegalValueException(String message) {","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" super(message);","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":14,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * @param message should contain relevant information on the failed constraint(s)","lastModifiedDate":"2017-03-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * @param cause of the main exception","lastModifiedDate":"2017-03-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public IllegalValueException(String message, Throwable cause) {","lastModifiedDate":"2017-03-11"},{"lineNumber":19,"author":{"gitId":"-"},"content":" super(message, cause);","lastModifiedDate":"2017-03-11"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"chaaaaun":1,"-":20}},{"path":"src/main/java/scrolls/elder/commons/util/AppUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.commons.util;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2016-08-18"},{"lineNumber":6,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.MainApp;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * A container for App specific utility functions","lastModifiedDate":"2016-08-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class AppUtil {","lastModifiedDate":"2016-08-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Gets an {@code Image} from the specified path.","lastModifiedDate":"2020-05-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static Image getImage(String imagePath) {","lastModifiedDate":"2016-08-18"},{"lineNumber":17,"author":{"gitId":"-"},"content":" requireNonNull(imagePath);","lastModifiedDate":"2017-05-15"},{"lineNumber":18,"author":{"gitId":"-"},"content":" return new Image(MainApp.class.getResourceAsStream(imagePath));","lastModifiedDate":"2016-08-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-15"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Checks that {@code condition} is true. Used for validating arguments to methods.","lastModifiedDate":"2017-05-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @throws IllegalArgumentException if {@code condition} is false.","lastModifiedDate":"2017-05-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static void checkArgument(Boolean condition) {","lastModifiedDate":"2017-05-15"},{"lineNumber":27,"author":{"gitId":"-"},"content":" if (!condition) {","lastModifiedDate":"2017-05-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":" throw new IllegalArgumentException();","lastModifiedDate":"2017-05-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-15"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Checks that {@code condition} is true. Used for validating arguments to methods.","lastModifiedDate":"2017-05-15"},{"lineNumber":34,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-15"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * @throws IllegalArgumentException with {@code errorMessage} if {@code condition} is false.","lastModifiedDate":"2017-05-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static void checkArgument(Boolean condition, String errorMessage) {","lastModifiedDate":"2017-05-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":" if (!condition) {","lastModifiedDate":"2017-05-15"},{"lineNumber":39,"author":{"gitId":"-"},"content":" throw new IllegalArgumentException(errorMessage);","lastModifiedDate":"2017-05-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"chaaaaun":2,"-":40}},{"path":"src/main/java/scrolls/elder/commons/util/CollectionUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.commons.util;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-06-21"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2017-01-30"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2016-12-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Utility methods related to Collections","lastModifiedDate":"2016-09-30"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class CollectionUtil {","lastModifiedDate":"2016-09-21"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" /** @see #requireAllNonNull(Collection) */","lastModifiedDate":"2017-05-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static void requireAllNonNull(Object... items) {","lastModifiedDate":"2017-05-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":" requireNonNull(items);","lastModifiedDate":"2017-06-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Stream.of(items).forEach(Objects::requireNonNull);","lastModifiedDate":"2017-05-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Throws NullPointerException if {@code items} or any element of {@code items} is null.","lastModifiedDate":"2017-05-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static void requireAllNonNull(Collection\u003c?\u003e items) {","lastModifiedDate":"2017-05-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" requireNonNull(items);","lastModifiedDate":"2017-06-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":" items.forEach(Objects::requireNonNull);","lastModifiedDate":"2017-05-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Returns true if {@code items} contain any elements that are non-null.","lastModifiedDate":"2017-06-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static boolean isAnyNonNull(Object... items) {","lastModifiedDate":"2017-06-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return items !\u003d null \u0026\u0026 Arrays.stream(items).anyMatch(Objects::nonNull);","lastModifiedDate":"2017-06-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"chaaaaun":1,"-":34}},{"path":"src/main/java/scrolls/elder/commons/util/ConfigUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.commons.util;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2016-09-24"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-09-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":7,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.core.Config;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * A class for accessing the Config File.","lastModifiedDate":"2016-09-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class ConfigUtil {","lastModifiedDate":"2016-09-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static Optional\u003cConfig\u003e readConfig(Path configFilePath) throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":16,"author":{"gitId":"-"},"content":" return JsonUtil.readJsonFile(configFilePath, Config.class);","lastModifiedDate":"2016-10-07"},{"lineNumber":17,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static void saveConfig(Config config, Path configFilePath) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":" JsonUtil.saveJsonFile(config, configFilePath);","lastModifiedDate":"2016-10-07"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-24"}],"authorContributionMap":{"chaaaaun":3,"-":20}},{"path":"src/main/java/scrolls/elder/commons/util/FileUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.commons.util;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2016-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Files;","lastModifiedDate":"2016-08-26"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.InvalidPathException;","lastModifiedDate":"2018-04-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * Writes and reads files","lastModifiedDate":"2016-10-07"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class FileUtil {","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":14,"author":{"gitId":"-"},"content":" private static final String CHARSET \u003d \"UTF-8\";","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static boolean isFileExists(Path file) {","lastModifiedDate":"2018-04-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":" return Files.exists(file) \u0026\u0026 Files.isRegularFile(file);","lastModifiedDate":"2018-04-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-21"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Returns true if {@code path} can be converted into a {@code Path} via {@link Paths#get(String)},","lastModifiedDate":"2018-04-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * otherwise returns false.","lastModifiedDate":"2018-04-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * @param path A string representing the file path. Cannot be null.","lastModifiedDate":"2018-04-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static boolean isValidPath(String path) {","lastModifiedDate":"2018-04-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-04-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":" Paths.get(path);","lastModifiedDate":"2018-04-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":" } catch (InvalidPathException ipe) {","lastModifiedDate":"2018-04-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-04-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Creates a file if it does not exist along with its missing parent directories.","lastModifiedDate":"2017-08-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * @throws IOException if the file or directory cannot be created.","lastModifiedDate":"2017-08-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static void createIfMissing(Path file) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" if (!isFileExists(file)) {","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" createFile(file);","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * Creates a file if it does not exist along with its missing parent directories.","lastModifiedDate":"2018-04-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static void createFile(Path file) throws IOException {","lastModifiedDate":"2018-04-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":" if (Files.exists(file)) {","lastModifiedDate":"2018-04-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":" return;","lastModifiedDate":"2018-04-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" createParentDirsOfFile(file);","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":" Files.createFile(file);","lastModifiedDate":"2018-04-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * Creates parent directories of file if it has a parent directory","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static void createParentDirsOfFile(Path file) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":61,"author":{"gitId":"-"},"content":" Path parentDir \u003d file.getParent();","lastModifiedDate":"2018-04-21"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" if (parentDir !\u003d null) {","lastModifiedDate":"2016-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" Files.createDirectories(parentDir);","lastModifiedDate":"2018-04-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" * Assumes file exists","lastModifiedDate":"2016-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public static String readFromFile(Path file) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return new String(Files.readAllBytes(file), CHARSET);","lastModifiedDate":"2018-04-21"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" * Writes given string to a file.","lastModifiedDate":"2016-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":" * Will create the file if it does not exist yet.","lastModifiedDate":"2016-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public static void writeToFile(Path file, String content) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":80,"author":{"gitId":"-"},"content":" Files.write(file, content.getBytes(CHARSET));","lastModifiedDate":"2018-04-21"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"chaaaaun":1,"-":82}},{"path":"src/main/java/scrolls/elder/commons/util/JsonUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.commons.util;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Files;","lastModifiedDate":"2018-04-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.logging.Level;","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonAutoDetect;","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.PropertyAccessor;","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.core.JsonProcessingException;","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.databind.DeserializationContext;","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.databind.DeserializationFeature;","lastModifiedDate":"2016-09-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.databind.ObjectMapper;","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.databind.SerializationFeature;","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.databind.deser.std.FromStringDeserializer;","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.databind.module.SimpleModule;","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":23,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.core.LogsCenter;","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Converts a Java object instance to JSON and vice versa","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class JsonUtil {","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(JsonUtil.class);","lastModifiedDate":"2016-10-07"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static ObjectMapper objectMapper \u003d new ObjectMapper().findAndRegisterModules()","lastModifiedDate":"2016-10-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":" .configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false)","lastModifiedDate":"2016-10-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":" .configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)","lastModifiedDate":"2016-10-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":" .setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.NONE)","lastModifiedDate":"2016-10-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":" .setVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY)","lastModifiedDate":"2016-10-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":" .registerModule(new SimpleModule(\"SimpleModule\")","lastModifiedDate":"2016-10-19"},{"lineNumber":39,"author":{"gitId":"-"},"content":" .addSerializer(Level.class, new ToStringSerializer())","lastModifiedDate":"2016-10-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":" .addDeserializer(Level.class, new LevelDeserializer(Level.class)));","lastModifiedDate":"2016-10-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":" static \u003cT\u003e void serializeObjectToJsonFile(Path jsonFile, T objectToSerialize) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":43,"author":{"gitId":"-"},"content":" FileUtil.writeToFile(jsonFile, toJsonString(objectToSerialize));","lastModifiedDate":"2016-10-07"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-07"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":46,"author":{"gitId":"-"},"content":" static \u003cT\u003e T deserializeObjectFromJsonFile(Path jsonFile, Class\u003cT\u003e classOfObjectToDeserialize)","lastModifiedDate":"2018-04-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2016-10-07"},{"lineNumber":48,"author":{"gitId":"-"},"content":" return fromJsonString(FileUtil.readFromFile(jsonFile), classOfObjectToDeserialize);","lastModifiedDate":"2016-10-07"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-07"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-07"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Returns the JSON object from the given file or {@code Optional.empty()} object if the file is not found.","lastModifiedDate":"2023-06-15"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * If any values are missing from the file, default values will be used, as long as the file is a valid JSON file.","lastModifiedDate":"2023-06-15"},{"lineNumber":54,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * @param filePath cannot be null.","lastModifiedDate":"2016-10-07"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * @param classOfObjectToDeserialize JSON file has to correspond to the structure in the class given here.","lastModifiedDate":"2023-06-15"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * @throws DataLoadingException if loading of the JSON file failed.","lastModifiedDate":"2023-06-15"},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-07"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static \u003cT\u003e Optional\u003cT\u003e readJsonFile(","lastModifiedDate":"2016-10-07"},{"lineNumber":60,"author":{"gitId":"-"},"content":" Path filePath, Class\u003cT\u003e classOfObjectToDeserialize) throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":61,"author":{"gitId":"-"},"content":" requireNonNull(filePath);","lastModifiedDate":"2017-05-15"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":63,"author":{"gitId":"-"},"content":" if (!Files.exists(filePath)) {","lastModifiedDate":"2018-04-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2016-10-07"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-07"},{"lineNumber":66,"author":{"gitId":"-"},"content":" logger.info(\"JSON file \" + filePath + \" found.\");","lastModifiedDate":"2023-01-03"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":68,"author":{"gitId":"-"},"content":" T jsonFile;","lastModifiedDate":"2016-10-07"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":70,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-10-07"},{"lineNumber":71,"author":{"gitId":"-"},"content":" jsonFile \u003d deserializeObjectFromJsonFile(filePath, classOfObjectToDeserialize);","lastModifiedDate":"2018-04-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-10-07"},{"lineNumber":73,"author":{"gitId":"-"},"content":" logger.warning(\"Error reading from jsonFile file \" + filePath + \": \" + e);","lastModifiedDate":"2018-04-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":" throw new DataLoadingException(e);","lastModifiedDate":"2023-06-14"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-07"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return Optional.of(jsonFile);","lastModifiedDate":"2016-10-07"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-07"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":80,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-07"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * Saves the Json object to the specified file.","lastModifiedDate":"2016-10-07"},{"lineNumber":82,"author":{"gitId":"-"},"content":" * Overwrites existing file if it exists, creates a new file if it doesn\u0027t.","lastModifiedDate":"2016-10-07"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * @param jsonFile cannot be null","lastModifiedDate":"2016-10-07"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * @param filePath cannot be null","lastModifiedDate":"2016-10-07"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * @throws IOException if there was an error during writing to the file","lastModifiedDate":"2016-10-07"},{"lineNumber":86,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-07"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public static \u003cT\u003e void saveJsonFile(T jsonFile, Path filePath) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":88,"author":{"gitId":"-"},"content":" requireNonNull(filePath);","lastModifiedDate":"2017-05-15"},{"lineNumber":89,"author":{"gitId":"-"},"content":" requireNonNull(jsonFile);","lastModifiedDate":"2017-05-15"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":91,"author":{"gitId":"-"},"content":" serializeObjectToJsonFile(filePath, jsonFile);","lastModifiedDate":"2018-04-21"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-07"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * Converts a given string representation of a JSON data to instance of a class","lastModifiedDate":"2016-10-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * @param \u003cT\u003e The generic type to create an instance of","lastModifiedDate":"2016-10-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * @return The instance of T with the specified values in the JSON string","lastModifiedDate":"2016-10-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public static \u003cT\u003e T fromJsonString(String json, Class\u003cT\u003e instanceClass) throws IOException {","lastModifiedDate":"2016-10-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":" return objectMapper.readValue(json, instanceClass);","lastModifiedDate":"2016-10-19"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":104,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-19"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * Converts a given instance of a class into its JSON data string representation","lastModifiedDate":"2016-10-19"},{"lineNumber":106,"author":{"gitId":"-"},"content":" * @param instance The T object to be converted into the JSON string","lastModifiedDate":"2016-10-19"},{"lineNumber":107,"author":{"gitId":"-"},"content":" * @param \u003cT\u003e The generic type to create an instance of","lastModifiedDate":"2016-10-19"},{"lineNumber":108,"author":{"gitId":"-"},"content":" * @return JSON data representation of the given class instance, in string","lastModifiedDate":"2016-10-19"},{"lineNumber":109,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-19"},{"lineNumber":110,"author":{"gitId":"-"},"content":" public static \u003cT\u003e String toJsonString(T instance) throws JsonProcessingException {","lastModifiedDate":"2016-10-19"},{"lineNumber":111,"author":{"gitId":"-"},"content":" return objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(instance);","lastModifiedDate":"2016-10-19"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":114,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":115,"author":{"gitId":"-"},"content":" * Contains methods that retrieve logging level from serialized string.","lastModifiedDate":"2017-08-16"},{"lineNumber":116,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":117,"author":{"gitId":"-"},"content":" private static class LevelDeserializer extends FromStringDeserializer\u003cLevel\u003e {","lastModifiedDate":"2016-08-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":" protected LevelDeserializer(Class\u003c?\u003e vc) {","lastModifiedDate":"2016-08-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" super(vc);","lastModifiedDate":"2016-08-08"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" protected Level _deserialize(String value, DeserializationContext ctxt) {","lastModifiedDate":"2018-08-08"},{"lineNumber":125,"author":{"gitId":"-"},"content":" return getLoggingLevel(value);","lastModifiedDate":"2016-08-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":" * Gets the logging level that matches loggingLevelString","lastModifiedDate":"2016-08-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" * \u003cp\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":131,"author":{"gitId":"-"},"content":" * Returns null if there are no matches","lastModifiedDate":"2016-08-08"},{"lineNumber":132,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":" private Level getLoggingLevel(String loggingLevelString) {","lastModifiedDate":"2016-08-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":" return Level.parse(loggingLevelString);","lastModifiedDate":"2016-09-09"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":138,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":" public Class\u003cLevel\u003e handledType() {","lastModifiedDate":"2016-08-08"},{"lineNumber":140,"author":{"gitId":"-"},"content":" return Level.class;","lastModifiedDate":"2016-08-08"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":144,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"chaaaaun":3,"-":141}},{"path":"src/main/java/scrolls/elder/commons/util/StringUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.commons.util;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"chaaaaun"},"content":"import static scrolls.elder.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.io.PrintWriter;","lastModifiedDate":"2016-09-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.io.StringWriter;","lastModifiedDate":"2016-09-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Helper functions for handling strings.","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class StringUtil {","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Returns true if the {@code sentence} contains the {@code word}.","lastModifiedDate":"2016-10-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Ignores case, but a full word match is required.","lastModifiedDate":"2016-10-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * \u003cbr\u003eexamples:\u003cpre\u003e","lastModifiedDate":"2016-10-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * containsWordIgnoreCase(\"ABc def\", \"abc\") \u003d\u003d true","lastModifiedDate":"2016-10-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * containsWordIgnoreCase(\"ABc def\", \"DEF\") \u003d\u003d true","lastModifiedDate":"2016-10-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * containsWordIgnoreCase(\"ABc def\", \"AB\") \u003d\u003d false //not a full word match","lastModifiedDate":"2016-10-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * \u003c/pre\u003e","lastModifiedDate":"2016-10-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * @param sentence cannot be null","lastModifiedDate":"2016-10-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @param word cannot be null, cannot be empty, must be a single word","lastModifiedDate":"2016-10-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static boolean containsWordIgnoreCase(String sentence, String word) {","lastModifiedDate":"2016-10-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" requireNonNull(sentence);","lastModifiedDate":"2017-05-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":" requireNonNull(word);","lastModifiedDate":"2017-05-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" String preppedWord \u003d word.trim();","lastModifiedDate":"2016-10-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" checkArgument(!preppedWord.isEmpty(), \"Word parameter cannot be empty\");","lastModifiedDate":"2017-05-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":" checkArgument(preppedWord.split(\"\\\\s+\").length \u003d\u003d 1, \"Word parameter should be a single word\");","lastModifiedDate":"2017-05-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" String preppedSentence \u003d sentence;","lastModifiedDate":"2016-10-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" String[] wordsInPreppedSentence \u003d preppedSentence.split(\"\\\\s+\");","lastModifiedDate":"2016-10-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" return Arrays.stream(wordsInPreppedSentence)","lastModifiedDate":"2018-01-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" .anyMatch(preppedWord::equalsIgnoreCase);","lastModifiedDate":"2018-01-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Returns a detailed message of the t, including the stack trace.","lastModifiedDate":"2016-09-21"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static String getDetails(Throwable t) {","lastModifiedDate":"2016-09-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":" requireNonNull(t);","lastModifiedDate":"2017-05-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" StringWriter sw \u003d new StringWriter();","lastModifiedDate":"2016-09-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" t.printStackTrace(new PrintWriter(sw));","lastModifiedDate":"2016-09-21"},{"lineNumber":48,"author":{"gitId":"-"},"content":" return t.getMessage() + \"\\n\" + sw.toString();","lastModifiedDate":"2016-09-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-22"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Returns true if {@code s} represents a non-zero unsigned integer","lastModifiedDate":"2017-06-02"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * e.g. 1, 2, 3, ..., {@code Integer.MAX_VALUE} \u003cbr\u003e","lastModifiedDate":"2017-06-02"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Will return false for any other non-null string input","lastModifiedDate":"2017-06-02"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * e.g. empty string, \"-1\", \"0\", \"+1\", and \" 2 \" (untrimmed), \"3 0\" (contains whitespace), \"1 a\" (contains letters)","lastModifiedDate":"2017-06-02"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code s} is null.","lastModifiedDate":"2017-06-02"},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static boolean isNonZeroUnsignedInteger(String s) {","lastModifiedDate":"2017-06-02"},{"lineNumber":59,"author":{"gitId":"-"},"content":" requireNonNull(s);","lastModifiedDate":"2017-06-02"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02"},{"lineNumber":61,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-06-02"},{"lineNumber":62,"author":{"gitId":"-"},"content":" int value \u003d Integer.parseInt(s);","lastModifiedDate":"2017-06-02"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return value \u003e 0 \u0026\u0026 !s.startsWith(\"+\"); // \"+1\" is successfully parsed by Integer#parseInt(String)","lastModifiedDate":"2017-06-02"},{"lineNumber":64,"author":{"gitId":"-"},"content":" } catch (NumberFormatException nfe) {","lastModifiedDate":"2017-06-02"},{"lineNumber":65,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-06-02"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-02"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"chaaaaun":2,"-":66}},{"path":"src/main/java/scrolls/elder/commons/util/ToStringBuilder.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.commons.util;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Builds a string representation of an object that is suitable as the return value of {@link Object#toString()}.","lastModifiedDate":"2019-02-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class ToStringBuilder {","lastModifiedDate":"2019-02-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":" private static final String OBJECT_PREFIX \u003d \"{\";","lastModifiedDate":"2019-02-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":" private static final String OBJECT_SUFFIX \u003d \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":" private static final String FIELD_SEPARATOR \u003d \", \";","lastModifiedDate":"2019-02-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":" private static final String FIELD_NAME_VALUE_SEPARATOR \u003d \"\u003d\";","lastModifiedDate":"2019-02-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":" private final StringBuilder stringBuilder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":" private boolean hasField;","lastModifiedDate":"2019-02-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Constructs a {@code ToStringBuilder} whose formatted output will be prefixed with {@code objectName}.","lastModifiedDate":"2019-02-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public ToStringBuilder(String objectName) {","lastModifiedDate":"2019-02-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":" stringBuilder.append(objectName).append(OBJECT_PREFIX);","lastModifiedDate":"2019-02-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Constructs a {@code ToStringBuilder} whose formatted output will be prefixed with the","lastModifiedDate":"2019-02-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * canonical class name of {@code object}.","lastModifiedDate":"2019-02-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public ToStringBuilder(Object object) {","lastModifiedDate":"2019-02-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":" this(object.getClass().getCanonicalName());","lastModifiedDate":"2019-02-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Adds a field name/value pair to the output string.","lastModifiedDate":"2019-02-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2019-02-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * @param fieldName The name of the field.","lastModifiedDate":"2019-02-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * @param fieldValue The value of the field.","lastModifiedDate":"2019-02-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * @return A reference to this {@code ToStringBuilder} object, allowing method calls to be chained.","lastModifiedDate":"2019-02-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public ToStringBuilder add(String fieldName, Object fieldValue) {","lastModifiedDate":"2019-02-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" if (hasField) {","lastModifiedDate":"2019-02-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" stringBuilder.append(FIELD_SEPARATOR);","lastModifiedDate":"2019-02-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" stringBuilder.append(fieldName).append(FIELD_NAME_VALUE_SEPARATOR).append(fieldValue);","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" hasField \u003d true;","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Returns the built formatted string representation.","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return stringBuilder.toString() + OBJECT_SUFFIX;","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-02-23"}],"authorContributionMap":{"chaaaaun":1,"-":52}},{"path":"src/main/java/scrolls/elder/logic/Logic.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.logic;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-25"},{"lineNumber":6,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.core.GuiSettings;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.commands.CommandResult;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.Model;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Person;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * API of the Logic component","lastModifiedDate":"2016-09-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public interface Logic {","lastModifiedDate":"2016-09-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2016-09-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * @param commandText The command as entered by the user.","lastModifiedDate":"2016-09-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * @return the result of the command execution.","lastModifiedDate":"2016-09-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2017-02-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * @throws ParseException If an error occurs during parsing.","lastModifiedDate":"2017-03-11"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" CommandResult execute(String commandText) throws CommandException, ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Returns the AddressBook.","lastModifiedDate":"2018-12-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-03"},{"lineNumber":30,"author":{"gitId":"chaaaaun"},"content":" * @see Model#getAddressBook()","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2018-12-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /** Returns an unmodifiable view of the filtered list of persons */","lastModifiedDate":"2017-09-01"},{"lineNumber":35,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-26"},{"lineNumber":37,"author":{"gitId":"CJerrong"},"content":" /** Returns an unmodifiable view of the filtered list of persons */","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"CJerrong"},"content":" ObservableList\u003cPerson\u003e getFilteredVolunteerList();","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"CJerrong"},"content":" /** Returns an unmodifiable view of the filtered list of persons */","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"CJerrong"},"content":" ObservableList\u003cPerson\u003e getFilteredBefriendeeList();","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Set the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"CJerrong":6,"chaaaaun":9,"-":42}},{"path":"src/main/java/scrolls/elder/logic/LogicManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.logic;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-24"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.core.GuiSettings;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.core.LogsCenter;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.commands.Command;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.commands.CommandResult;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.parser.AddressBookParser;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.Model;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Person;","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.storage.Storage;","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * The main LogicManager of the app.","lastModifiedDate":"2016-09-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class LogicManager implements Logic {","lastModifiedDate":"2018-12-09"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_ERROR_FORMAT \u003d \"Could not save data due to the following error: %s\";","lastModifiedDate":"2023-06-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_PERMISSION_ERROR_FORMAT \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \"Could not save data to file %s due to insufficient permissions to write to the file or the folder.\";","lastModifiedDate":"2023-06-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(LogicManager.class);","lastModifiedDate":"2016-09-29"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final Model model;","lastModifiedDate":"2016-09-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final Storage storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final AddressBookParser addressBookParser;","lastModifiedDate":"2017-07-07"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Constructs a {@code LogicManager} with the given {@code Model} and {@code Storage}.","lastModifiedDate":"2020-05-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public LogicManager(Model model, Storage storage) {","lastModifiedDate":"2018-12-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.model \u003d model;","lastModifiedDate":"2016-09-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.storage \u003d storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":" addressBookParser \u003d new AddressBookParser();","lastModifiedDate":"2018-01-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public CommandResult execute(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":47,"author":{"gitId":"-"},"content":" logger.info(\"----------------[USER COMMAND][\" + commandText + \"]\");","lastModifiedDate":"2016-09-29"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":" CommandResult commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":" Command command \u003d addressBookParser.parseCommand(commandText);","lastModifiedDate":"2017-07-07"},{"lineNumber":51,"author":{"gitId":"-"},"content":" commandResult \u003d command.execute(model);","lastModifiedDate":"2019-01-25"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":" storage.saveAddressBook(model.getAddressBook());","lastModifiedDate":"2018-12-09"},{"lineNumber":55,"author":{"gitId":"-"},"content":" } catch (AccessDeniedException e) {","lastModifiedDate":"2023-06-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_PERMISSION_ERROR_FORMAT, e.getMessage()), e);","lastModifiedDate":"2023-06-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2018-12-09"},{"lineNumber":58,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_ERROR_FORMAT, ioe.getMessage()), ioe);","lastModifiedDate":"2023-06-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-03"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2018-12-03"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return model.getAddressBook();","lastModifiedDate":"2018-12-03"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-03"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return model.getFilteredPersonList();","lastModifiedDate":"2016-09-25"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-29"},{"lineNumber":74,"author":{"gitId":"CJerrong"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"CJerrong"},"content":" public ObservableList\u003cPerson\u003e getFilteredVolunteerList() {","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"CJerrong"},"content":" return model.getFilteredVolunteerList();","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"CJerrong"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"CJerrong"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"CJerrong"},"content":" public ObservableList\u003cPerson\u003e getFilteredBefriendeeList() {","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"CJerrong"},"content":" return model.getFilteredBefriendeeList();","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"CJerrong"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":" return model.getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":" return model.getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":" model.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"CJerrong":10,"chaaaaun":12,"-":76}},{"path":"src/main/java/scrolls/elder/logic/Messages.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.logic;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-07-14"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-07-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":7,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.parser.Prefix;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Person;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Container for user visible messages.","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class Messages {","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2016-09-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_PERSON_DISPLAYED_INDEX \u003d \"The person index provided is invalid\";","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String MESSAGE_PERSONS_LISTED_OVERVIEW \u003d \"%1$d persons listed!\";","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2023-07-14"},{"lineNumber":21,"author":{"gitId":"sdevih"},"content":" public static final String MESSAGE_CONTACT_PAIRED_BEFORE_DELETE \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"sdevih"},"content":" \"Contact is paired. Please unpair before deleting.\";","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-07-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2023-07-14"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2023-07-14"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":31,"author":{"gitId":"-"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-07-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Formats the {@code person} for display to the user.","lastModifiedDate":"2019-02-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static String format(Person person) {","lastModifiedDate":"2019-02-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" builder.append(person.getName())","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"gerteck"},"content":" .append(\"; Role: \")","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"gerteck"},"content":" .append(person.getRole())","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"-"},"content":" .append(\"; Phone: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" .append(person.getPhone())","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" .append(\"; Email: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" .append(person.getEmail())","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" .append(\"; Address: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" .append(person.getAddress())","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" .append(\"; Tags: \");","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" person.getTags().forEach(builder::append);","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"gerteck":2,"chaaaaun":3,"-":48,"sdevih":2}},{"path":"src/main/java/scrolls/elder/logic/commands/AddCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.logic.commands;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"gerteck"},"content":"import static scrolls.elder.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"gerteck"},"content":"import static scrolls.elder.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"gerteck"},"content":"import static scrolls.elder.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"gerteck"},"content":"import static scrolls.elder.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"gerteck"},"content":"import static scrolls.elder.logic.parser.CliSyntax.PREFIX_ROLE;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"gerteck"},"content":"import static scrolls.elder.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.Messages;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.Model;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Person;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"add\";","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a person to the address book. \"","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2017-06-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2017-06-06"},{"lineNumber":27,"author":{"gitId":"gerteck"},"content":" + PREFIX_ROLE + \"{VOLUNTEER or BEFRIENDEE} \"","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2017-05-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2017-05-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"ADDRESS \"","lastModifiedDate":"2017-05-09"},{"lineNumber":31,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09"},{"lineNumber":32,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2017-06-06"},{"lineNumber":34,"author":{"gitId":"gerteck"},"content":" + PREFIX_ROLE + \"volunteer \"","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2017-05-09"},{"lineNumber":37,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"311, Clementi Ave 2, #02-25 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":38,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"friends \"","lastModifiedDate":"2017-05-09"},{"lineNumber":39,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"owesMoney\";","lastModifiedDate":"2017-05-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New person added: %1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book\";","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" private final Person toAdd;","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2018-01-10"},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public AddCommand(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":50,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":51,"author":{"gitId":"-"},"content":" toAdd \u003d person;","lastModifiedDate":"2018-01-10"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":58,"author":{"gitId":"chaaaaun"},"content":" int gid \u003d model.getAddressBook().getGlobalId();","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"chaaaaun"},"content":" toAdd.setId(gid);","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"-"},"content":" if (model.hasPerson(toAdd)) {","lastModifiedDate":"2018-08-07"},{"lineNumber":61,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":64,"author":{"gitId":"-"},"content":" model.addPerson(toAdd);","lastModifiedDate":"2016-09-25"},{"lineNumber":65,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2019-02-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-22"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" if (!(other instanceof AddCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" AddCommand otherAddCommand \u003d (AddCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2023-07-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"gerteck":8,"chaaaaun":8,"-":73}},{"path":"src/main/java/scrolls/elder/logic/commands/ClearCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.logic.commands;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.AddressBook;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.Model;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * Clears the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class ClearCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"clear\";","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Address book has been cleared!\";","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15"},{"lineNumber":20,"author":{"gitId":"chaaaaun"},"content":" model.setAddressBook(new AddressBook(0));","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"-"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"chaaaaun":4,"-":19}},{"path":"src/main/java/scrolls/elder/logic/commands/Command.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.logic.commands;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.Model;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * Represents a command with hidden internal logic and the ability to be executed.","lastModifiedDate":"2016-08-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public abstract class Command {","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Executes the command and returns the result message.","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * @param model {@code Model} which the command should operate on.","lastModifiedDate":"2018-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * @return feedback message of the operation result for display","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2017-02-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public abstract CommandResult execute(Model model) throws CommandException;","lastModifiedDate":"2019-01-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"chaaaaun":3,"-":17}},{"path":"src/main/java/scrolls/elder/logic/commands/CommandResult.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.logic.commands;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2018-12-09"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":7,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * Represents the result of a command execution.","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class CommandResult {","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":14,"author":{"gitId":"-"},"content":" private final String feedbackToUser;","lastModifiedDate":"2018-12-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" /** Help information should be shown to the user. */","lastModifiedDate":"2018-12-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":" private final boolean showHelp;","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":" /** The application should exit. */","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final boolean exit;","lastModifiedDate":"2018-12-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Constructs a {@code CommandResult} with the specified fields.","lastModifiedDate":"2018-12-09"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public CommandResult(String feedbackToUser, boolean showHelp, boolean exit) {","lastModifiedDate":"2018-12-09"},{"lineNumber":26,"author":{"gitId":"-"},"content":" this.feedbackToUser \u003d requireNonNull(feedbackToUser);","lastModifiedDate":"2017-05-15"},{"lineNumber":27,"author":{"gitId":"-"},"content":" this.showHelp \u003d showHelp;","lastModifiedDate":"2018-12-09"},{"lineNumber":28,"author":{"gitId":"-"},"content":" this.exit \u003d exit;","lastModifiedDate":"2018-12-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Constructs a {@code CommandResult} with the specified {@code feedbackToUser},","lastModifiedDate":"2018-12-09"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * and other fields set to their default value.","lastModifiedDate":"2018-12-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public CommandResult(String feedbackToUser) {","lastModifiedDate":"2018-12-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":" this(feedbackToUser, false, false);","lastModifiedDate":"2018-12-09"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public String getFeedbackToUser() {","lastModifiedDate":"2018-12-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":" return feedbackToUser;","lastModifiedDate":"2018-12-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public boolean isShowHelp() {","lastModifiedDate":"2018-12-09"},{"lineNumber":44,"author":{"gitId":"-"},"content":" return showHelp;","lastModifiedDate":"2018-12-09"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public boolean isExit() {","lastModifiedDate":"2018-12-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":" return exit;","lastModifiedDate":"2018-12-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2018-12-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-12-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-12-09"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2018-12-09"},{"lineNumber":58,"author":{"gitId":"-"},"content":" if (!(other instanceof CommandResult)) {","lastModifiedDate":"2018-12-09"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-12-09"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":62,"author":{"gitId":"-"},"content":" CommandResult otherCommandResult \u003d (CommandResult) other;","lastModifiedDate":"2018-12-09"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return feedbackToUser.equals(otherCommandResult.feedbackToUser)","lastModifiedDate":"2018-12-09"},{"lineNumber":64,"author":{"gitId":"-"},"content":" \u0026\u0026 showHelp \u003d\u003d otherCommandResult.showHelp","lastModifiedDate":"2018-12-09"},{"lineNumber":65,"author":{"gitId":"-"},"content":" \u0026\u0026 exit \u003d\u003d otherCommandResult.exit;","lastModifiedDate":"2018-12-09"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2018-12-09"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return Objects.hash(feedbackToUser, showHelp, exit);","lastModifiedDate":"2018-12-09"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":" .add(\"feedbackToUser\", feedbackToUser)","lastModifiedDate":"2019-02-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" .add(\"showHelp\", showHelp)","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":" .add(\"exit\", exit)","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"chaaaaun":2,"-":80}},{"path":"src/main/java/scrolls/elder/logic/commands/DeleteCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.logic.commands;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-09-01"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":7,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.core.index.Index;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.Messages;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.Model;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Person;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Role;","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"sdevih"},"content":" * Deletes a person identified using its displayed index from the address book.","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"sdevih"},"content":" public static final String COMMAND_WORD_DELETE \u003d \"delete\";","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"sdevih"},"content":" public static final String COMMAND_WORD_DEL \u003d \"del\";","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"sdevih"},"content":" public static final String COMMAND_WORD_RM \u003d \"rm\";","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"sdevih"},"content":" public static final String COMMAND_WORD_REMOVE \u003d \"remove\";","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"sdevih"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD_DELETE","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":" + \": Deletes the person identified by the index number used in the displayed person list.\\n\"","lastModifiedDate":"2018-04-01"},{"lineNumber":27,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer)\\n\"","lastModifiedDate":"2016-09-29"},{"lineNumber":28,"author":{"gitId":"sdevih"},"content":" + \"Example: \" + COMMAND_WORD_DELETE + \" 1\"","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"sdevih"},"content":" + \"Alternatively, you can also delete a person using the following commands as well.\\n\"","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"sdevih"},"content":" + \"Example: \" + COMMAND_WORD_DEL + \" 1\"","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"sdevih"},"content":" + \"Example: \" + COMMAND_WORD_RM + \" 1\"","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"sdevih"},"content":" + \"Example: \" + COMMAND_WORD_REMOVE + \" 1\";","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DELETE_PERSON_SUCCESS \u003d \"Deleted Person: %1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"sdevih"},"content":" public static final String MESSAGE_DELETE_PERSON_ERROR \u003d \"Unable to delete contact: \";","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"sdevih"},"content":" public static final String MESSAGE_CONFIRM_DELETE \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"sdevih"},"content":" \"Valid contact inputted. Are you sure you want to delete this contact?\";","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"chaaaaun"},"content":" public static final String MESSAGE_NO_ROLE \u003d \"Role must be specified when editing a person.\";","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" private final Index targetIndex;","lastModifiedDate":"2017-06-27"},{"lineNumber":42,"author":{"gitId":"chaaaaun"},"content":" private final Role role;","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"chaaaaun"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"chaaaaun"},"content":" * Creates a DeleteCommand to delete the person at the specified {@code targetIndex}.","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"chaaaaun"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"chaaaaun"},"content":" public DeleteCommand(Index targetIndex, Role role) {","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"-"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2016-09-22"},{"lineNumber":49,"author":{"gitId":"chaaaaun"},"content":" this.role \u003d role;","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":55,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"chaaaaun"},"content":" List\u003cPerson\u003e lastShownList;","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"chaaaaun"},"content":" if (role.isVolunteer()) {","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"chaaaaun"},"content":" lastShownList \u003d model.getFilteredVolunteerList();","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"chaaaaun"},"content":" } else {","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"chaaaaun"},"content":" lastShownList \u003d model.getFilteredBefriendeeList();","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19"},{"lineNumber":64,"author":{"gitId":"sdevih"},"content":" throw new CommandException(MESSAGE_DELETE_PERSON_ERROR + Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":67,"author":{"gitId":"-"},"content":" Person personToDelete \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2018-04-19"},{"lineNumber":68,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"sdevih"},"content":" //Check if the person to be deleted is paired with another person.","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"sdevih"},"content":" if (personToDelete.isPairPresent(personToDelete)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"sdevih"},"content":" throw new CommandException(MESSAGE_DELETE_PERSON_ERROR + Messages.MESSAGE_CONTACT_PAIRED_BEFORE_DELETE);","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"sdevih"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"-"},"content":" model.deletePerson(personToDelete);","lastModifiedDate":"2016-09-25"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_PERSON_SUCCESS, Messages.format(personToDelete)));","lastModifiedDate":"2019-02-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":78,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" if (!(other instanceof DeleteCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" DeleteCommand otherDeleteCommand \u003d (DeleteCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":" return targetIndex.equals(otherDeleteCommand.targetIndex);","lastModifiedDate":"2023-07-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2019-02-23"},{"lineNumber":97,"author":{"gitId":"chaaaaun"},"content":" .add(\"role\", role)","lastModifiedDate":"2024-03-21"},{"lineNumber":98,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"chaaaaun":23,"-":54,"sdevih":23}},{"path":"src/main/java/scrolls/elder/logic/commands/EditCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.logic.commands;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"chaaaaun"},"content":"import static scrolls.elder.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"chaaaaun"},"content":"import static scrolls.elder.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"chaaaaun"},"content":"import static scrolls.elder.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"chaaaaun"},"content":"import static scrolls.elder.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":"import static scrolls.elder.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-01-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-01-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":17,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.core.index.Index;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.util.CollectionUtil;","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.Messages;","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.Model;","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"CJerrong"},"content":"import scrolls.elder.model.person.Address;","lastModifiedDate":"2024-03-15"},{"lineNumber":24,"author":{"gitId":"CJerrong"},"content":"import scrolls.elder.model.person.Befriendee;","lastModifiedDate":"2024-03-15"},{"lineNumber":25,"author":{"gitId":"CJerrong"},"content":"import scrolls.elder.model.person.Email;","lastModifiedDate":"2024-03-15"},{"lineNumber":26,"author":{"gitId":"CJerrong"},"content":"import scrolls.elder.model.person.Name;","lastModifiedDate":"2024-03-15"},{"lineNumber":27,"author":{"gitId":"CJerrong"},"content":"import scrolls.elder.model.person.Person;","lastModifiedDate":"2024-03-15"},{"lineNumber":28,"author":{"gitId":"CJerrong"},"content":"import scrolls.elder.model.person.Phone;","lastModifiedDate":"2024-03-15"},{"lineNumber":29,"author":{"gitId":"gerteck"},"content":"import scrolls.elder.model.person.Role;","lastModifiedDate":"2024-03-15"},{"lineNumber":30,"author":{"gitId":"CJerrong"},"content":"import scrolls.elder.model.person.Volunteer;","lastModifiedDate":"2024-03-15"},{"lineNumber":31,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.tag.Tag;","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":34,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Edits the details of an existing person in the address book.","lastModifiedDate":"2016-12-26"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":37,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2016-12-26"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the person identified \"","lastModifiedDate":"2016-12-26"},{"lineNumber":42,"author":{"gitId":"-"},"content":" + \"by the index number used in the displayed person list. \"","lastModifiedDate":"2018-04-01"},{"lineNumber":43,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26"},{"lineNumber":44,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2017-06-06"},{"lineNumber":45,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06"},{"lineNumber":46,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"91234567 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2017-05-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Person: %1$s\";","lastModifiedDate":"2016-12-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2016-12-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book.\";","lastModifiedDate":"2016-12-26"},{"lineNumber":57,"author":{"gitId":"chaaaaun"},"content":" public static final String MESSAGE_NO_ROLE \u003d \"Role must be specified when editing a person.\";","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2017-05-25"},{"lineNumber":60,"author":{"gitId":"-"},"content":" private final EditPersonDescriptor editPersonDescriptor;","lastModifiedDate":"2016-12-26"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit","lastModifiedDate":"2017-05-25"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * @param editPersonDescriptor details to edit the person with","lastModifiedDate":"2016-12-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public EditCommand(Index index, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2017-05-25"},{"lineNumber":67,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25"},{"lineNumber":68,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2017-05-15"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":70,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25"},{"lineNumber":71,"author":{"gitId":"-"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2016-12-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":74,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":75,"author":{"gitId":"-"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2016-12-26"},{"lineNumber":76,"author":{"gitId":"-"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2016-12-26"},{"lineNumber":77,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":78,"author":{"gitId":"-"},"content":" private static Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2018-01-10"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2016-12-26"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":81,"author":{"gitId":"-"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(personToEdit.getName());","lastModifiedDate":"2017-06-21"},{"lineNumber":82,"author":{"gitId":"-"},"content":" Phone updatedPhone \u003d editPersonDescriptor.getPhone().orElse(personToEdit.getPhone());","lastModifiedDate":"2017-06-21"},{"lineNumber":83,"author":{"gitId":"-"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2017-06-21"},{"lineNumber":84,"author":{"gitId":"-"},"content":" Address updatedAddress \u003d editPersonDescriptor.getAddress().orElse(personToEdit.getAddress());","lastModifiedDate":"2017-06-21"},{"lineNumber":85,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e updatedTags \u003d editPersonDescriptor.getTags().orElse(personToEdit.getTags());","lastModifiedDate":"2017-06-21"},{"lineNumber":86,"author":{"gitId":"gerteck"},"content":" Role role \u003d editPersonDescriptor.getRole().orElse(personToEdit.getRole());","lastModifiedDate":"2024-03-15"},{"lineNumber":87,"author":{"gitId":"CJerrong"},"content":" Optional\u003cName\u003e pairedWithName \u003d personToEdit.getPairedWithName();","lastModifiedDate":"2024-03-22"},{"lineNumber":88,"author":{"gitId":"CJerrong"},"content":" Optional\u003cInteger\u003e pairedWithID \u003d personToEdit.getPairedWithID();","lastModifiedDate":"2024-03-22"},{"lineNumber":89,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":90,"author":{"gitId":"chaaaaun"},"content":" Person p;","lastModifiedDate":"2024-03-21"},{"lineNumber":91,"author":{"gitId":"gerteck"},"content":" if (role.isVolunteer()) {","lastModifiedDate":"2024-03-16"},{"lineNumber":92,"author":{"gitId":"CJerrong"},"content":" p \u003d new Volunteer(updatedName, updatedPhone, updatedEmail, updatedAddress, updatedTags,","lastModifiedDate":"2024-03-22"},{"lineNumber":93,"author":{"gitId":"CJerrong"},"content":" pairedWithName, pairedWithID);","lastModifiedDate":"2024-03-22"},{"lineNumber":94,"author":{"gitId":"gerteck"},"content":" } else {","lastModifiedDate":"2024-03-15"},{"lineNumber":95,"author":{"gitId":"CJerrong"},"content":" p \u003d new Befriendee(updatedName, updatedPhone, updatedEmail, updatedAddress, updatedTags,","lastModifiedDate":"2024-03-22"},{"lineNumber":96,"author":{"gitId":"CJerrong"},"content":" pairedWithName, pairedWithID);","lastModifiedDate":"2024-03-22"},{"lineNumber":97,"author":{"gitId":"CJerrong"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":98,"author":{"gitId":"chaaaaun"},"content":" p.setId(personToEdit.getId());","lastModifiedDate":"2024-03-21"},{"lineNumber":99,"author":{"gitId":"CJerrong"},"content":" return p;","lastModifiedDate":"2024-03-21"},{"lineNumber":100,"author":{"gitId":"CJerrong"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":101,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":102,"author":{"gitId":"CJerrong"},"content":" private static Person createEditedPair(Person editedPerson, Person originalPair) {","lastModifiedDate":"2024-03-21"},{"lineNumber":103,"author":{"gitId":"CJerrong"},"content":" assert editedPerson !\u003d null;","lastModifiedDate":"2024-03-21"},{"lineNumber":104,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":105,"author":{"gitId":"CJerrong"},"content":" // Will check before calling this function that the editedPerson is paired","lastModifiedDate":"2024-03-21"},{"lineNumber":106,"author":{"gitId":"CJerrong"},"content":" Name updatedName \u003d originalPair.getName();","lastModifiedDate":"2024-03-21"},{"lineNumber":107,"author":{"gitId":"CJerrong"},"content":" Phone updatedPhone \u003d originalPair.getPhone();","lastModifiedDate":"2024-03-21"},{"lineNumber":108,"author":{"gitId":"CJerrong"},"content":" Email updatedEmail \u003d originalPair.getEmail();","lastModifiedDate":"2024-03-21"},{"lineNumber":109,"author":{"gitId":"CJerrong"},"content":" Address updatedAddress \u003d originalPair.getAddress();","lastModifiedDate":"2024-03-21"},{"lineNumber":110,"author":{"gitId":"CJerrong"},"content":" Set\u003cTag\u003e updatedTags \u003d originalPair.getTags();","lastModifiedDate":"2024-03-21"},{"lineNumber":111,"author":{"gitId":"CJerrong"},"content":" Role role \u003d originalPair.getRole();","lastModifiedDate":"2024-03-21"},{"lineNumber":112,"author":{"gitId":"CJerrong"},"content":" Optional\u003cName\u003e updatedPairedWithName \u003d Optional.of(editedPerson.getName());","lastModifiedDate":"2024-03-22"},{"lineNumber":113,"author":{"gitId":"CJerrong"},"content":" Optional\u003cInteger\u003e updatedPairedWithID \u003d Optional.of(editedPerson.getId());","lastModifiedDate":"2024-03-22"},{"lineNumber":114,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":115,"author":{"gitId":"CJerrong"},"content":" Person p;","lastModifiedDate":"2024-03-21"},{"lineNumber":116,"author":{"gitId":"CJerrong"},"content":" if (role.isVolunteer()) {","lastModifiedDate":"2024-03-21"},{"lineNumber":117,"author":{"gitId":"CJerrong"},"content":" p \u003d new Volunteer(updatedName, updatedPhone, updatedEmail, updatedAddress, updatedTags,","lastModifiedDate":"2024-03-22"},{"lineNumber":118,"author":{"gitId":"CJerrong"},"content":" updatedPairedWithName, updatedPairedWithID);","lastModifiedDate":"2024-03-22"},{"lineNumber":119,"author":{"gitId":"CJerrong"},"content":" } else {","lastModifiedDate":"2024-03-21"},{"lineNumber":120,"author":{"gitId":"CJerrong"},"content":" p \u003d new Befriendee(updatedName, updatedPhone, updatedEmail, updatedAddress, updatedTags,","lastModifiedDate":"2024-03-22"},{"lineNumber":121,"author":{"gitId":"CJerrong"},"content":" updatedPairedWithName, updatedPairedWithID);","lastModifiedDate":"2024-03-22"},{"lineNumber":122,"author":{"gitId":"CJerrong"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":123,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":124,"author":{"gitId":"CJerrong"},"content":" p.setId(originalPair.getId());","lastModifiedDate":"2024-03-21"},{"lineNumber":125,"author":{"gitId":"chaaaaun"},"content":" return p;","lastModifiedDate":"2024-03-21"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":129,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-21"},{"lineNumber":130,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-21"},{"lineNumber":131,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":132,"author":{"gitId":"chaaaaun"},"content":" if (editPersonDescriptor.getRole().isEmpty()) {","lastModifiedDate":"2024-03-21"},{"lineNumber":133,"author":{"gitId":"chaaaaun"},"content":" throw new CommandException(MESSAGE_NO_ROLE);","lastModifiedDate":"2024-03-21"},{"lineNumber":134,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":135,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":136,"author":{"gitId":"chaaaaun"},"content":" List\u003cPerson\u003e lastShownList;","lastModifiedDate":"2024-03-21"},{"lineNumber":137,"author":{"gitId":"chaaaaun"},"content":" if (editPersonDescriptor.getRole().get().isVolunteer()) {","lastModifiedDate":"2024-03-21"},{"lineNumber":138,"author":{"gitId":"chaaaaun"},"content":" lastShownList \u003d model.getFilteredVolunteerList();","lastModifiedDate":"2024-03-21"},{"lineNumber":139,"author":{"gitId":"chaaaaun"},"content":" } else {","lastModifiedDate":"2024-03-21"},{"lineNumber":140,"author":{"gitId":"chaaaaun"},"content":" lastShownList \u003d model.getFilteredBefriendeeList();","lastModifiedDate":"2024-03-21"},{"lineNumber":141,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":143,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-03-21"},{"lineNumber":144,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-21"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":147,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-03-21"},{"lineNumber":148,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2024-03-21"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":150,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2024-03-22"},{"lineNumber":151,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2024-03-21"},{"lineNumber":152,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":154,"author":{"gitId":"CJerrong"},"content":" if (editedPerson.isPaired()) {","lastModifiedDate":"2024-03-21"},{"lineNumber":155,"author":{"gitId":"CJerrong"},"content":" Person pairedWith \u003d model.getPersonFromID(editedPerson.getPairedWithID().get());","lastModifiedDate":"2024-03-21"},{"lineNumber":156,"author":{"gitId":"CJerrong"},"content":" Person pairedWithUpdated \u003d createEditedPair(editedPerson, pairedWith);","lastModifiedDate":"2024-03-21"},{"lineNumber":157,"author":{"gitId":"CJerrong"},"content":" model.setPerson(pairedWith, pairedWithUpdated);","lastModifiedDate":"2024-03-21"},{"lineNumber":158,"author":{"gitId":"CJerrong"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":159,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":160,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2024-03-21"},{"lineNumber":161,"author":{"gitId":"chaaaaun"},"content":" model.updateFilteredPersonList(Model.PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-21"},{"lineNumber":162,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson)));","lastModifiedDate":"2024-03-21"},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":165,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08"},{"lineNumber":166,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08"},{"lineNumber":168,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08"},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":171,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08"},{"lineNumber":172,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08"},{"lineNumber":173,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08"},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":176,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":177,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13"},{"lineNumber":178,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13"},{"lineNumber":179,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":181,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":190,"author":{"gitId":"-"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2016-12-26"},{"lineNumber":191,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26"},{"lineNumber":192,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":193,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26"},{"lineNumber":194,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21"},{"lineNumber":195,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":196,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21"},{"lineNumber":197,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-06-21"},{"lineNumber":198,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21"},{"lineNumber":199,"author":{"gitId":"gerteck"},"content":" private Role role;","lastModifiedDate":"2024-03-15"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":201,"author":{"gitId":"chaaaaun"},"content":" public EditPersonDescriptor() {","lastModifiedDate":"2024-03-21"},{"lineNumber":202,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":204,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":205,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11"},{"lineNumber":206,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":207,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":208,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26"},{"lineNumber":209,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15"},{"lineNumber":210,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15"},{"lineNumber":211,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15"},{"lineNumber":212,"author":{"gitId":"-"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2018-01-15"},{"lineNumber":213,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11"},{"lineNumber":214,"author":{"gitId":"gerteck"},"content":" setRole(toCopy.role);","lastModifiedDate":"2024-03-15"},{"lineNumber":215,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":217,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":218,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26"},{"lineNumber":219,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":220,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26"},{"lineNumber":221,"author":{"gitId":"-"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, address, tags);","lastModifiedDate":"2018-08-14"},{"lineNumber":222,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":224,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26"},{"lineNumber":225,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21"},{"lineNumber":226,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":228,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2024-03-21"},{"lineNumber":229,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2024-03-21"},{"lineNumber":230,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":232,"author":{"gitId":"-"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26"},{"lineNumber":233,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2017-06-21"},{"lineNumber":234,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":236,"author":{"gitId":"-"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2024-03-21"},{"lineNumber":237,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2024-03-21"},{"lineNumber":238,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":240,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26"},{"lineNumber":241,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21"},{"lineNumber":242,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":244,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2024-03-21"},{"lineNumber":245,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2024-03-21"},{"lineNumber":246,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":247,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":248,"author":{"gitId":"-"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2016-12-26"},{"lineNumber":249,"author":{"gitId":"-"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2017-06-21"},{"lineNumber":250,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":251,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":252,"author":{"gitId":"-"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2024-03-21"},{"lineNumber":253,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2024-03-21"},{"lineNumber":254,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":256,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":257,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11"},{"lineNumber":258,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11"},{"lineNumber":259,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11"},{"lineNumber":260,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":261,"author":{"gitId":"-"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":262,"author":{"gitId":"-"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2018-01-11"},{"lineNumber":263,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":265,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":266,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2024-03-21"},{"lineNumber":267,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2024-03-21"},{"lineNumber":268,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":269,"author":{"gitId":"-"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2024-03-21"},{"lineNumber":270,"author":{"gitId":"-"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2024-03-21"},{"lineNumber":271,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":273,"author":{"gitId":"gerteck"},"content":" public Optional\u003cRole\u003e getRole() {","lastModifiedDate":"2024-03-15"},{"lineNumber":274,"author":{"gitId":"gerteck"},"content":" return Optional.ofNullable(role);","lastModifiedDate":"2024-03-15"},{"lineNumber":275,"author":{"gitId":"CJerrong"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":276,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":277,"author":{"gitId":"chaaaaun"},"content":" public void setRole(Role role) {","lastModifiedDate":"2024-03-21"},{"lineNumber":278,"author":{"gitId":"chaaaaun"},"content":" this.role \u003d role;","lastModifiedDate":"2024-03-21"},{"lineNumber":279,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":280,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":281,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05"},{"lineNumber":282,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05"},{"lineNumber":283,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05"},{"lineNumber":284,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05"},{"lineNumber":285,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":286,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":287,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05"},{"lineNumber":288,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05"},{"lineNumber":289,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05"},{"lineNumber":290,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":291,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":292,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":293,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":294,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":295,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":296,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(address, otherEditPersonDescriptor.address)","lastModifiedDate":"2023-07-13"},{"lineNumber":297,"author":{"gitId":"CJerrong"},"content":" \u0026\u0026 Objects.equals(tags, otherEditPersonDescriptor.tags)","lastModifiedDate":"2024-03-15"},{"lineNumber":298,"author":{"gitId":"gerteck"},"content":" \u0026\u0026 Objects.equals(role, otherEditPersonDescriptor.role);","lastModifiedDate":"2024-03-15"},{"lineNumber":299,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":300,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":301,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":302,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":303,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":304,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":305,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":306,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":307,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":308,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":309,"author":{"gitId":"CJerrong"},"content":" .add(\"role\", role)","lastModifiedDate":"2024-03-15"},{"lineNumber":310,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":311,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":312,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":313,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26"}],"authorContributionMap":{"CJerrong":50,"gerteck":10,"chaaaaun":33,"-":220}},{"path":"src/main/java/scrolls/elder/logic/commands/ExitCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.logic.commands;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":3,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.Model;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-22"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * Terminates the program.","lastModifiedDate":"2016-09-22"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2016-09-22"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"exit\";","lastModifiedDate":"2016-09-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final String MESSAGE_EXIT_ACKNOWLEDGEMENT \u003d \"Exiting Address Book as requested ...\";","lastModifiedDate":"2016-09-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":" return new CommandResult(MESSAGE_EXIT_ACKNOWLEDGEMENT, false, true);","lastModifiedDate":"2018-12-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":19,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22"}],"authorContributionMap":{"chaaaaun":2,"-":17}},{"path":"src/main/java/scrolls/elder/logic/commands/FindCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.logic.commands;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":5,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.Messages;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.Model;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Finds and lists all persons in address book whose name contains any of the argument keywords.","lastModifiedDate":"2016-09-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Keyword matching is case insensitive.","lastModifiedDate":"2018-04-01"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class FindCommand extends Command {","lastModifiedDate":"2016-09-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"find\";","lastModifiedDate":"2016-09-22"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Finds all persons whose names contain any of \"","lastModifiedDate":"2016-09-22"},{"lineNumber":19,"author":{"gitId":"-"},"content":" + \"the specified keywords (case-insensitive) and displays them as a list with index numbers.\\n\"","lastModifiedDate":"2018-04-01"},{"lineNumber":20,"author":{"gitId":"-"},"content":" + \"Parameters: KEYWORD [MORE_KEYWORDS]...\\n\"","lastModifiedDate":"2016-09-22"},{"lineNumber":21,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" alice bob charlie\";","lastModifiedDate":"2016-09-22"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final NameContainsKeywordsPredicate predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public FindCommand(NameContainsKeywordsPredicate predicate) {","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-22"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(predicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return new CommandResult(","lastModifiedDate":"2018-04-01"},{"lineNumber":34,"author":{"gitId":"-"},"content":" String.format(Messages.MESSAGE_PERSONS_LISTED_OVERVIEW, model.getFilteredPersonList().size()));","lastModifiedDate":"2018-04-01"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" if (!(other instanceof FindCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" FindCommand otherFindCommand \u003d (FindCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" return predicate.equals(otherFindCommand.predicate);","lastModifiedDate":"2023-07-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" .add(\"predicate\", predicate)","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22"}],"authorContributionMap":{"chaaaaun":5,"-":53}},{"path":"src/main/java/scrolls/elder/logic/commands/HelpCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.logic.commands;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.Model;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-31"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * Format full help instructions for every command for display.","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class HelpCommand extends Command {","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"help\";","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Shows program usage instructions.\\n\"","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD;","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String SHOWING_HELP_MESSAGE \u003d \"Opened help window.\";","lastModifiedDate":"2016-08-31"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-31"},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" return new CommandResult(SHOWING_HELP_MESSAGE, true, false);","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"chaaaaun":2,"-":19}},{"path":"src/main/java/scrolls/elder/logic/commands/ListCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.logic.commands;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":5,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.Model;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Lists all persons in the address book to the user.","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2016-09-21"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"list\";","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Listed all persons\";","lastModifiedDate":"2016-09-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":20,"author":{"gitId":"chaaaaun"},"content":" model.updateFilteredPersonList(Model.PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2016-09-22"},{"lineNumber":22,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"chaaaaun":3,"-":20}},{"path":"src/main/java/scrolls/elder/logic/commands/PairCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"soons1"},"content":"package scrolls.elder.logic.commands;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"soons1"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"gerteck"},"content":"import java.util.List;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"gerteck"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"gerteck"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"soons1"},"content":"import scrolls.elder.commons.core.index.Index;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"soons1"},"content":"import scrolls.elder.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"soons1"},"content":"import scrolls.elder.logic.Messages;","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"soons1"},"content":"import scrolls.elder.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"soons1"},"content":"import scrolls.elder.model.Model;","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"gerteck"},"content":"import scrolls.elder.model.person.Address;","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"gerteck"},"content":"import scrolls.elder.model.person.Befriendee;","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"gerteck"},"content":"import scrolls.elder.model.person.Email;","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"gerteck"},"content":"import scrolls.elder.model.person.Name;","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"soons1"},"content":"import scrolls.elder.model.person.Person;","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"gerteck"},"content":"import scrolls.elder.model.person.Phone;","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"gerteck"},"content":"import scrolls.elder.model.person.Role;","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"gerteck"},"content":"import scrolls.elder.model.person.Volunteer;","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"gerteck"},"content":"import scrolls.elder.model.tag.Tag;","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"soons1"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"soons1"},"content":" * Pairs a volunteer and a befriendee in the address book.","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"soons1"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"soons1"},"content":"public class PairCommand extends Command {","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"soons1"},"content":" public static final String COMMAND_WORD \u003d \"pair\";","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"soons1"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Pairs a volunteer and a befriendee specified \"","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"soons1"},"content":" + \"by their index numbers used in the displayed person list.\\n\"","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"soons1"},"content":" + \"Parameters: INDEX1 INDEX2 (both must be a positive integers)\\n\"","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"soons1"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 2\";","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"soons1"},"content":" public static final String MESSAGE_PAIR_SUCCESS \u003d \"Paired: %1$s and %2$s\";","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"soons1"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"Cannot pair the same person with themselves.\";","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"soons1"},"content":" public static final String MESSAGE_DIFFERENT_PERSON_TYPE \u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"soons1"},"content":" \"Pairing can only be done between a volunteer and a befriendee.\";","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"soons1"},"content":" public static final String MESSAGE_ALREADY_PAIRED \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"soons1"},"content":" \"One or both of the persons are already paired, unpair and try again.\";","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"soons1"},"content":" private final Index index1;","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"soons1"},"content":" private final Index index2;","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"soons1"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"soons1"},"content":" * @param index1 of the first person to be paired","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"soons1"},"content":" * @param index2 of the second person to be paired with","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"soons1"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"soons1"},"content":" public PairCommand(Index index1, Index index2) {","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"soons1"},"content":" requireNonNull(index1);","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"soons1"},"content":" requireNonNull(index2);","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"soons1"},"content":" this.index1 \u003d index1;","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"soons1"},"content":" this.index2 \u003d index2;","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"soons1"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"soons1"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"soons1"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"soons1"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"chaaaaun"},"content":" List\u003cPerson\u003e lastShownBList \u003d model.getFilteredBefriendeeList();","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"chaaaaun"},"content":" List\u003cPerson\u003e lastShownVList \u003d model.getFilteredVolunteerList();","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"chaaaaun"},"content":" if (index1.getZeroBased() \u003e\u003d lastShownBList.size() || index2.getZeroBased() \u003e\u003d lastShownVList.size()) {","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"soons1"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"soons1"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"chaaaaun"},"content":" Person personToPair1 \u003d lastShownBList.get(index1.getZeroBased());","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"chaaaaun"},"content":" Person personToPair2 \u003d lastShownVList.get(index2.getZeroBased());","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"soons1"},"content":" // Check if the two persons are the same person","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"soons1"},"content":" if (personToPair1.isSamePerson(personToPair2)","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"soons1"},"content":" \u0026\u0026 model.hasPerson(personToPair1)","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"soons1"},"content":" \u0026\u0026 model.hasPerson(personToPair2)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"soons1"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"soons1"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":80,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":81,"author":{"gitId":"soons1"},"content":" // Check if the two persons are of different types (eg. volunteer and befriendee)","lastModifiedDate":"2024-03-18"},{"lineNumber":82,"author":{"gitId":"soons1"},"content":" if (personToPair1.getRole().equals(personToPair2.getRole())) {","lastModifiedDate":"2024-03-18"},{"lineNumber":83,"author":{"gitId":"soons1"},"content":" throw new CommandException(MESSAGE_DIFFERENT_PERSON_TYPE);","lastModifiedDate":"2024-03-18"},{"lineNumber":84,"author":{"gitId":"soons1"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":85,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":86,"author":{"gitId":"soons1"},"content":" // Check if any of the persons are already paired","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"soons1"},"content":" if (personToPair1.isPaired() || personToPair2.isPaired()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":88,"author":{"gitId":"soons1"},"content":" throw new CommandException(MESSAGE_ALREADY_PAIRED);","lastModifiedDate":"2024-03-20"},{"lineNumber":89,"author":{"gitId":"soons1"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":90,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":91,"author":{"gitId":"CJerrong"},"content":" Person newPerson1 \u003d createEditedPairedPerson(personToPair1, Optional.of(personToPair2.getName()),","lastModifiedDate":"2024-03-22"},{"lineNumber":92,"author":{"gitId":"CJerrong"},"content":" Optional.of(personToPair2.getId()));","lastModifiedDate":"2024-03-22"},{"lineNumber":93,"author":{"gitId":"CJerrong"},"content":" Person newPerson2 \u003d createEditedPairedPerson(personToPair2, Optional.of(personToPair1.getName()),","lastModifiedDate":"2024-03-22"},{"lineNumber":94,"author":{"gitId":"CJerrong"},"content":" Optional.of(personToPair1.getId()));","lastModifiedDate":"2024-03-22"},{"lineNumber":95,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":96,"author":{"gitId":"gerteck"},"content":" // TODO: REMOVE DEAD CODE","lastModifiedDate":"2024-03-21"},{"lineNumber":97,"author":{"gitId":"gerteck"},"content":" // No longer needed since we are using new Person objects","lastModifiedDate":"2024-03-21"},{"lineNumber":98,"author":{"gitId":"gerteck"},"content":" // model.setPerson(lastShownBList.get(index1.getZeroBased()), personToPair1);","lastModifiedDate":"2024-03-21"},{"lineNumber":99,"author":{"gitId":"gerteck"},"content":" // model.setPerson(lastShownVList.get(index2.getZeroBased()), personToPair2);","lastModifiedDate":"2024-03-21"},{"lineNumber":100,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":101,"author":{"gitId":"gerteck"},"content":" model.setPerson(personToPair1, newPerson1);","lastModifiedDate":"2024-03-21"},{"lineNumber":102,"author":{"gitId":"gerteck"},"content":" model.setPerson(personToPair2, newPerson2);","lastModifiedDate":"2024-03-21"},{"lineNumber":103,"author":{"gitId":"soons1"},"content":" model.updateFilteredPersonList(Model.PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-18"},{"lineNumber":104,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":105,"author":{"gitId":"soons1"},"content":" return new CommandResult(","lastModifiedDate":"2024-03-18"},{"lineNumber":106,"author":{"gitId":"soons1"},"content":" String.format(MESSAGE_PAIR_SUCCESS, Messages.format(personToPair1), Messages.format(personToPair2)));","lastModifiedDate":"2024-03-18"},{"lineNumber":107,"author":{"gitId":"soons1"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":108,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":109,"author":{"gitId":"soons1"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":110,"author":{"gitId":"soons1"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-18"},{"lineNumber":111,"author":{"gitId":"soons1"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-18"},{"lineNumber":112,"author":{"gitId":"soons1"},"content":" return true;","lastModifiedDate":"2024-03-18"},{"lineNumber":113,"author":{"gitId":"soons1"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":114,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":115,"author":{"gitId":"soons1"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-18"},{"lineNumber":116,"author":{"gitId":"soons1"},"content":" if (!(other instanceof PairCommand)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":117,"author":{"gitId":"soons1"},"content":" return false;","lastModifiedDate":"2024-03-18"},{"lineNumber":118,"author":{"gitId":"soons1"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":119,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":120,"author":{"gitId":"soons1"},"content":" PairCommand otherPairCommand \u003d (PairCommand) other;","lastModifiedDate":"2024-03-18"},{"lineNumber":121,"author":{"gitId":"soons1"},"content":" return index1.equals(otherPairCommand.index1)","lastModifiedDate":"2024-03-18"},{"lineNumber":122,"author":{"gitId":"soons1"},"content":" \u0026\u0026 index2.equals(otherPairCommand.index2);","lastModifiedDate":"2024-03-18"},{"lineNumber":123,"author":{"gitId":"soons1"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":124,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":125,"author":{"gitId":"soons1"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":126,"author":{"gitId":"soons1"},"content":" public String toString() {","lastModifiedDate":"2024-03-18"},{"lineNumber":127,"author":{"gitId":"soons1"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-18"},{"lineNumber":128,"author":{"gitId":"soons1"},"content":" .add(\"index1\", index1)","lastModifiedDate":"2024-03-18"},{"lineNumber":129,"author":{"gitId":"soons1"},"content":" .add(\"index2\", index2)","lastModifiedDate":"2024-03-18"},{"lineNumber":130,"author":{"gitId":"soons1"},"content":" .toString();","lastModifiedDate":"2024-03-18"},{"lineNumber":131,"author":{"gitId":"soons1"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":132,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":133,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":134,"author":{"gitId":"gerteck"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":135,"author":{"gitId":"gerteck"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2024-03-21"},{"lineNumber":136,"author":{"gitId":"gerteck"},"content":" * edited with {@code editPairedPersonDescriptor}.","lastModifiedDate":"2024-03-21"},{"lineNumber":137,"author":{"gitId":"gerteck"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":138,"author":{"gitId":"CJerrong"},"content":" private static Person createEditedPairedPerson(Person personToEdit, Optional\u003cName\u003e updatedPairName,","lastModifiedDate":"2024-03-22"},{"lineNumber":139,"author":{"gitId":"CJerrong"},"content":" Optional\u003cInteger\u003e updatedPairID) {","lastModifiedDate":"2024-03-22"},{"lineNumber":140,"author":{"gitId":"gerteck"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2024-03-21"},{"lineNumber":141,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":142,"author":{"gitId":"gerteck"},"content":" Name updatedName \u003d personToEdit.getName();","lastModifiedDate":"2024-03-21"},{"lineNumber":143,"author":{"gitId":"gerteck"},"content":" Phone updatedPhone \u003d personToEdit.getPhone();","lastModifiedDate":"2024-03-21"},{"lineNumber":144,"author":{"gitId":"gerteck"},"content":" Email updatedEmail \u003d personToEdit.getEmail();","lastModifiedDate":"2024-03-21"},{"lineNumber":145,"author":{"gitId":"gerteck"},"content":" Address updatedAddress \u003d personToEdit.getAddress();","lastModifiedDate":"2024-03-21"},{"lineNumber":146,"author":{"gitId":"gerteck"},"content":" Set\u003cTag\u003e updatedTags \u003d personToEdit.getTags();","lastModifiedDate":"2024-03-21"},{"lineNumber":147,"author":{"gitId":"gerteck"},"content":" Role role \u003d personToEdit.getRole();","lastModifiedDate":"2024-03-21"},{"lineNumber":148,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":149,"author":{"gitId":"gerteck"},"content":" Person p;","lastModifiedDate":"2024-03-21"},{"lineNumber":150,"author":{"gitId":"gerteck"},"content":" if (role.isVolunteer()) {","lastModifiedDate":"2024-03-21"},{"lineNumber":151,"author":{"gitId":"CJerrong"},"content":" p \u003d new Volunteer(updatedName, updatedPhone, updatedEmail, updatedAddress, updatedTags,","lastModifiedDate":"2024-03-22"},{"lineNumber":152,"author":{"gitId":"CJerrong"},"content":" updatedPairName, updatedPairID);","lastModifiedDate":"2024-03-22"},{"lineNumber":153,"author":{"gitId":"gerteck"},"content":" } else {","lastModifiedDate":"2024-03-21"},{"lineNumber":154,"author":{"gitId":"CJerrong"},"content":" p \u003d new Befriendee(updatedName, updatedPhone, updatedEmail, updatedAddress, updatedTags,","lastModifiedDate":"2024-03-22"},{"lineNumber":155,"author":{"gitId":"CJerrong"},"content":" updatedPairName, updatedPairID);","lastModifiedDate":"2024-03-22"},{"lineNumber":156,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":157,"author":{"gitId":"gerteck"},"content":" p.setId(personToEdit.getId());","lastModifiedDate":"2024-03-21"},{"lineNumber":158,"author":{"gitId":"gerteck"},"content":" return p;","lastModifiedDate":"2024-03-21"},{"lineNumber":159,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":160,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":161,"author":{"gitId":"soons1"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"soons1":104,"CJerrong":10,"gerteck":42,"chaaaaun":5}},{"path":"src/main/java/scrolls/elder/logic/commands/UnpairCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sdevih"},"content":"package scrolls.elder.logic.commands;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"sdevih"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"sdevih"},"content":"import java.util.List;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"sdevih"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"gerteck"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"sdevih"},"content":"import scrolls.elder.commons.core.index.Index;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"sdevih"},"content":"import scrolls.elder.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"sdevih"},"content":"import scrolls.elder.logic.Messages;","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"sdevih"},"content":"import scrolls.elder.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"sdevih"},"content":"import scrolls.elder.model.Model;","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"gerteck"},"content":"import scrolls.elder.model.person.Address;","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"gerteck"},"content":"import scrolls.elder.model.person.Befriendee;","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"gerteck"},"content":"import scrolls.elder.model.person.Email;","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"gerteck"},"content":"import scrolls.elder.model.person.Name;","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"gerteck"},"content":"import scrolls.elder.model.person.Person;","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"gerteck"},"content":"import scrolls.elder.model.person.Phone;","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"gerteck"},"content":"import scrolls.elder.model.person.Role;","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"gerteck"},"content":"import scrolls.elder.model.person.Volunteer;","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"gerteck"},"content":"import scrolls.elder.model.tag.Tag;","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"sdevih"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"sdevih"},"content":" * Unpairs a volunteer and a befriendee who were paired in the address book.","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"sdevih"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"sdevih"},"content":"public class UnpairCommand extends Command {","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"sdevih"},"content":" public static final String COMMAND_WORD \u003d \"unpair\";","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"sdevih"},"content":" public static final String MESSAGE_USAGE \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"sdevih"},"content":" COMMAND_WORD + \": Unpairs a volunteer and a befriendee specified\"","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"sdevih"},"content":" + \"by their index numbers used in the displayed person list.\\n\"","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"sdevih"},"content":" + \"Parameters: INDEX1 INDEX2 (both must be a positive integers)\\n\"","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"sdevih"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 2\";","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"sdevih"},"content":" public static final String MESSAGE_UNPAIR_SUCCESS \u003d \"Unpaired: %1$s and %2$s\";","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"sdevih"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"Cannot unpair the same person from themselves.\";","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"sdevih"},"content":" public static final String MESSAGE_NOT_PAIRED \u003d \"The two persons are not paired, so unpairing is not possible.\";","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"sdevih"},"content":" private final Index index1;","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"sdevih"},"content":" private final Index index2;","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"sdevih"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"sdevih"},"content":" * @param index1 of the first person to be paired","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"sdevih"},"content":" * @param index2 of the second person to be paired with","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"sdevih"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"sdevih"},"content":" public UnpairCommand(Index index1, Index index2) {","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"sdevih"},"content":" requireNonNull(index1);","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"sdevih"},"content":" requireNonNull(index2);","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"sdevih"},"content":" this.index1 \u003d index1;","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"sdevih"},"content":" this.index2 \u003d index2;","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"sdevih"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"sdevih"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"sdevih"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"sdevih"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"chaaaaun"},"content":" List\u003cPerson\u003e lastShownBList \u003d model.getFilteredBefriendeeList();","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"chaaaaun"},"content":" List\u003cPerson\u003e lastShownVList \u003d model.getFilteredVolunteerList();","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"chaaaaun"},"content":" if (index1.getZeroBased() \u003e\u003d lastShownBList.size() || index2.getZeroBased() \u003e\u003d lastShownVList.size()) {","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"sdevih"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"sdevih"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"chaaaaun"},"content":" Person personToUnpair1 \u003d lastShownBList.get(index1.getZeroBased());","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"chaaaaun"},"content":" Person personToUnpair2 \u003d lastShownVList.get(index2.getZeroBased());","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"sdevih"},"content":" // Check if the two persons are the same person","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"sdevih"},"content":" if (personToUnpair1.isSamePerson(personToUnpair2)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"sdevih"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"sdevih"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"sdevih"},"content":" // Check if the two persons are paired","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"CJerrong"},"content":" if (!personToUnpair1.getPairedWithName().equals(Optional.of(personToUnpair2.getName()))","lastModifiedDate":"2024-03-22"},{"lineNumber":75,"author":{"gitId":"CJerrong"},"content":" || !personToUnpair2.getPairedWithName().equals(Optional.of(personToUnpair1.getName()))) {","lastModifiedDate":"2024-03-22"},{"lineNumber":76,"author":{"gitId":"sdevih"},"content":" throw new CommandException(MESSAGE_NOT_PAIRED);","lastModifiedDate":"2024-03-21"},{"lineNumber":77,"author":{"gitId":"sdevih"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":78,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":79,"author":{"gitId":"sdevih"},"content":" // Unset the pairedWith attribute of the befriendee and volunteer","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"CJerrong"},"content":" Person newPerson1 \u003d createEditedPairedPerson(personToUnpair1, Optional.empty(), Optional.empty());","lastModifiedDate":"2024-03-22"},{"lineNumber":81,"author":{"gitId":"CJerrong"},"content":" Person newPerson2 \u003d createEditedPairedPerson(personToUnpair2, Optional.empty(), Optional.empty());","lastModifiedDate":"2024-03-22"},{"lineNumber":82,"author":{"gitId":"gerteck"},"content":" model.setPerson(personToUnpair1, newPerson1);","lastModifiedDate":"2024-03-21"},{"lineNumber":83,"author":{"gitId":"gerteck"},"content":" model.setPerson(personToUnpair2, newPerson2);","lastModifiedDate":"2024-03-21"},{"lineNumber":84,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":85,"author":{"gitId":"gerteck"},"content":" // TODO: REMOVE DEAD CODE","lastModifiedDate":"2024-03-21"},{"lineNumber":86,"author":{"gitId":"gerteck"},"content":" // No longer needed since we are using new Person objects","lastModifiedDate":"2024-03-21"},{"lineNumber":87,"author":{"gitId":"gerteck"},"content":" // personToUnpair1.setPairedWith(Optional.empty());","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"gerteck"},"content":" // personToUnpair2.setPairedWith(Optional.empty());","lastModifiedDate":"2024-03-21"},{"lineNumber":89,"author":{"gitId":"gerteck"},"content":" // model.setPerson(lastShownBList.get(index1.getZeroBased()), personToUnpair1);","lastModifiedDate":"2024-03-21"},{"lineNumber":90,"author":{"gitId":"gerteck"},"content":" // model.setPerson(lastShownVList.get(index2.getZeroBased()), personToUnpair2);","lastModifiedDate":"2024-03-21"},{"lineNumber":91,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":92,"author":{"gitId":"sdevih"},"content":" model.updateFilteredPersonList(Model.PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-21"},{"lineNumber":93,"author":{"gitId":"sdevih"},"content":" return new CommandResult(","lastModifiedDate":"2024-03-21"},{"lineNumber":94,"author":{"gitId":"sdevih"},"content":" String.format(","lastModifiedDate":"2024-03-21"},{"lineNumber":95,"author":{"gitId":"sdevih"},"content":" MESSAGE_UNPAIR_SUCCESS, Messages.format(personToUnpair1), Messages.format(personToUnpair2)));","lastModifiedDate":"2024-03-21"},{"lineNumber":96,"author":{"gitId":"sdevih"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":97,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":98,"author":{"gitId":"sdevih"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":99,"author":{"gitId":"sdevih"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-21"},{"lineNumber":100,"author":{"gitId":"sdevih"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-21"},{"lineNumber":101,"author":{"gitId":"sdevih"},"content":" return true;","lastModifiedDate":"2024-03-21"},{"lineNumber":102,"author":{"gitId":"sdevih"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":103,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":104,"author":{"gitId":"sdevih"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-21"},{"lineNumber":105,"author":{"gitId":"sdevih"},"content":" if (!(other instanceof UnpairCommand)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":106,"author":{"gitId":"sdevih"},"content":" return false;","lastModifiedDate":"2024-03-21"},{"lineNumber":107,"author":{"gitId":"sdevih"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":108,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":109,"author":{"gitId":"sdevih"},"content":" UnpairCommand otherUnpairCommand \u003d (UnpairCommand) other;","lastModifiedDate":"2024-03-21"},{"lineNumber":110,"author":{"gitId":"sdevih"},"content":" return index1.equals(otherUnpairCommand.index1)","lastModifiedDate":"2024-03-21"},{"lineNumber":111,"author":{"gitId":"sdevih"},"content":" \u0026\u0026 index2.equals(otherUnpairCommand.index2);","lastModifiedDate":"2024-03-21"},{"lineNumber":112,"author":{"gitId":"sdevih"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":113,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":114,"author":{"gitId":"sdevih"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":115,"author":{"gitId":"sdevih"},"content":" public String toString() {","lastModifiedDate":"2024-03-21"},{"lineNumber":116,"author":{"gitId":"sdevih"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-21"},{"lineNumber":117,"author":{"gitId":"sdevih"},"content":" .add(\"index1\", index1)","lastModifiedDate":"2024-03-21"},{"lineNumber":118,"author":{"gitId":"sdevih"},"content":" .add(\"index2\", index2)","lastModifiedDate":"2024-03-21"},{"lineNumber":119,"author":{"gitId":"sdevih"},"content":" .toString();","lastModifiedDate":"2024-03-21"},{"lineNumber":120,"author":{"gitId":"sdevih"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":121,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":122,"author":{"gitId":"gerteck"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":123,"author":{"gitId":"gerteck"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2024-03-21"},{"lineNumber":124,"author":{"gitId":"gerteck"},"content":" * edited with {@code editPairedPersonDescriptor}.","lastModifiedDate":"2024-03-21"},{"lineNumber":125,"author":{"gitId":"gerteck"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":126,"author":{"gitId":"CJerrong"},"content":" private static Person createEditedPairedPerson(Person personToEdit,","lastModifiedDate":"2024-03-22"},{"lineNumber":127,"author":{"gitId":"CJerrong"},"content":" Optional\u003cName\u003e updatedPairName, Optional\u003cInteger\u003e updatedPairID) {","lastModifiedDate":"2024-03-22"},{"lineNumber":128,"author":{"gitId":"gerteck"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2024-03-21"},{"lineNumber":129,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":130,"author":{"gitId":"gerteck"},"content":" Name updatedName \u003d personToEdit.getName();","lastModifiedDate":"2024-03-21"},{"lineNumber":131,"author":{"gitId":"gerteck"},"content":" Phone updatedPhone \u003d personToEdit.getPhone();","lastModifiedDate":"2024-03-21"},{"lineNumber":132,"author":{"gitId":"gerteck"},"content":" Email updatedEmail \u003d personToEdit.getEmail();","lastModifiedDate":"2024-03-21"},{"lineNumber":133,"author":{"gitId":"gerteck"},"content":" Address updatedAddress \u003d personToEdit.getAddress();","lastModifiedDate":"2024-03-21"},{"lineNumber":134,"author":{"gitId":"gerteck"},"content":" Set\u003cTag\u003e updatedTags \u003d personToEdit.getTags();","lastModifiedDate":"2024-03-21"},{"lineNumber":135,"author":{"gitId":"gerteck"},"content":" Role role \u003d personToEdit.getRole();","lastModifiedDate":"2024-03-21"},{"lineNumber":136,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":137,"author":{"gitId":"gerteck"},"content":" Person p;","lastModifiedDate":"2024-03-21"},{"lineNumber":138,"author":{"gitId":"gerteck"},"content":" if (role.isVolunteer()) {","lastModifiedDate":"2024-03-21"},{"lineNumber":139,"author":{"gitId":"CJerrong"},"content":" p \u003d new Volunteer(updatedName, updatedPhone, updatedEmail, updatedAddress, updatedTags,","lastModifiedDate":"2024-03-22"},{"lineNumber":140,"author":{"gitId":"CJerrong"},"content":" updatedPairName, updatedPairID);","lastModifiedDate":"2024-03-22"},{"lineNumber":141,"author":{"gitId":"gerteck"},"content":" } else {","lastModifiedDate":"2024-03-21"},{"lineNumber":142,"author":{"gitId":"CJerrong"},"content":" p \u003d new Befriendee(updatedName, updatedPhone, updatedEmail, updatedAddress, updatedTags,","lastModifiedDate":"2024-03-22"},{"lineNumber":143,"author":{"gitId":"CJerrong"},"content":" updatedPairName, updatedPairID);","lastModifiedDate":"2024-03-22"},{"lineNumber":144,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":145,"author":{"gitId":"gerteck"},"content":" p.setId(personToEdit.getId());","lastModifiedDate":"2024-03-21"},{"lineNumber":146,"author":{"gitId":"gerteck"},"content":" return p;","lastModifiedDate":"2024-03-21"},{"lineNumber":147,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":148,"author":{"gitId":"sdevih"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"CJerrong":10,"gerteck":40,"chaaaaun":5,"sdevih":93}},{"path":"src/main/java/scrolls/elder/logic/commands/exceptions/CommandException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.logic.commands.exceptions;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Represents an error which occurs during execution of a {@link Command}.","lastModifiedDate":"2017-02-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CommandException extends Exception {","lastModifiedDate":"2017-02-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":" public CommandException(String message) {","lastModifiedDate":"2017-02-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":" super(message);","lastModifiedDate":"2017-02-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":11,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Constructs a new {@code CommandException} with the specified detail {@code message} and {@code cause}.","lastModifiedDate":"2018-08-06"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":14,"author":{"gitId":"-"},"content":" public CommandException(String message, Throwable cause) {","lastModifiedDate":"2018-08-06"},{"lineNumber":15,"author":{"gitId":"-"},"content":" super(message, cause);","lastModifiedDate":"2018-08-06"},{"lineNumber":16,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05"}],"authorContributionMap":{"chaaaaun":1,"-":16}},{"path":"src/main/java/scrolls/elder/logic/parser/AddCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.logic.parser;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":3,"author":{"gitId":"chaaaaun"},"content":"import static scrolls.elder.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":5,"author":{"gitId":"gerteck"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-17"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.commands.AddCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"CJerrong"},"content":"import scrolls.elder.model.person.Address;","lastModifiedDate":"2024-03-15"},{"lineNumber":12,"author":{"gitId":"gerteck"},"content":"import scrolls.elder.model.person.Befriendee;","lastModifiedDate":"2024-03-15"},{"lineNumber":13,"author":{"gitId":"CJerrong"},"content":"import scrolls.elder.model.person.Email;","lastModifiedDate":"2024-03-15"},{"lineNumber":14,"author":{"gitId":"CJerrong"},"content":"import scrolls.elder.model.person.Name;","lastModifiedDate":"2024-03-15"},{"lineNumber":15,"author":{"gitId":"CJerrong"},"content":"import scrolls.elder.model.person.Person;","lastModifiedDate":"2024-03-15"},{"lineNumber":16,"author":{"gitId":"CJerrong"},"content":"import scrolls.elder.model.person.Phone;","lastModifiedDate":"2024-03-15"},{"lineNumber":17,"author":{"gitId":"gerteck"},"content":"import scrolls.elder.model.person.Role;","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"CJerrong"},"content":"import scrolls.elder.model.person.Volunteer;","lastModifiedDate":"2024-03-15"},{"lineNumber":19,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.tag.Tag;","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":26,"author":{"gitId":"chaaaaun"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"chaaaaun"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"chaaaaun"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"chaaaaun"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"chaaaaun"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"chaaaaun"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05"},{"lineNumber":37,"author":{"gitId":"chaaaaun"},"content":" *","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":41,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":42,"author":{"gitId":"gerteck"},"content":" ArgumentTokenizer.tokenize(args,","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"gerteck"},"content":" CliSyntax.PREFIX_ROLE,","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"gerteck"},"content":" CliSyntax.PREFIX_PHONE,","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"gerteck"},"content":" CliSyntax.PREFIX_EMAIL,","lastModifiedDate":"2024-03-14"},{"lineNumber":46,"author":{"gitId":"gerteck"},"content":" CliSyntax.PREFIX_ADDRESS,","lastModifiedDate":"2024-03-14"},{"lineNumber":47,"author":{"gitId":"gerteck"},"content":" CliSyntax.PREFIX_TAG,","lastModifiedDate":"2024-03-15"},{"lineNumber":48,"author":{"gitId":"gerteck"},"content":" CliSyntax.PREFIX_NAME);","lastModifiedDate":"2024-03-15"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":50,"author":{"gitId":"gerteck"},"content":" // Check for all Prefixes present","lastModifiedDate":"2024-03-15"},{"lineNumber":51,"author":{"gitId":"gerteck"},"content":" if (!arePrefixesPresent(argMultimap,","lastModifiedDate":"2024-03-15"},{"lineNumber":52,"author":{"gitId":"gerteck"},"content":" CliSyntax.PREFIX_ROLE, CliSyntax.PREFIX_NAME,","lastModifiedDate":"2024-03-15"},{"lineNumber":53,"author":{"gitId":"gerteck"},"content":" CliSyntax.PREFIX_ADDRESS, CliSyntax.PREFIX_PHONE,","lastModifiedDate":"2024-03-15"},{"lineNumber":54,"author":{"gitId":"gerteck"},"content":" CliSyntax.PREFIX_EMAIL) || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-03-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":58,"author":{"gitId":"gerteck"},"content":" // Check No duplicates for PREFIXES","lastModifiedDate":"2024-03-15"},{"lineNumber":59,"author":{"gitId":"gerteck"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(CliSyntax.PREFIX_ROLE,","lastModifiedDate":"2024-03-15"},{"lineNumber":60,"author":{"gitId":"gerteck"},"content":" CliSyntax.PREFIX_PHONE,","lastModifiedDate":"2024-03-15"},{"lineNumber":61,"author":{"gitId":"gerteck"},"content":" CliSyntax.PREFIX_EMAIL,","lastModifiedDate":"2024-03-15"},{"lineNumber":62,"author":{"gitId":"gerteck"},"content":" CliSyntax.PREFIX_ADDRESS,","lastModifiedDate":"2024-03-15"},{"lineNumber":63,"author":{"gitId":"gerteck"},"content":" CliSyntax.PREFIX_NAME);","lastModifiedDate":"2024-03-15"},{"lineNumber":64,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":65,"author":{"gitId":"gerteck"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(CliSyntax.PREFIX_NAME).get());","lastModifiedDate":"2024-03-15"},{"lineNumber":66,"author":{"gitId":"chaaaaun"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(CliSyntax.PREFIX_PHONE).get());","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"chaaaaun"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(CliSyntax.PREFIX_EMAIL).get());","lastModifiedDate":"2024-03-12"},{"lineNumber":68,"author":{"gitId":"chaaaaun"},"content":" Address address \u003d ParserUtil.parseAddress(argMultimap.getValue(CliSyntax.PREFIX_ADDRESS).get());","lastModifiedDate":"2024-03-12"},{"lineNumber":69,"author":{"gitId":"chaaaaun"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(CliSyntax.PREFIX_TAG));","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"gerteck"},"content":" Role role \u003d ParserUtil.parseRole(argMultimap.getValue(CliSyntax.PREFIX_ROLE).get());","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"gerteck"},"content":" Optional\u003cName\u003e pairedWithNone \u003d Optional.empty();","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"CJerrong"},"content":" Optional\u003cInteger\u003e pairedWithNoID \u003d Optional.empty();","lastModifiedDate":"2024-03-22"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":74,"author":{"gitId":"CJerrong"},"content":" // temporary solution, delete after merging","lastModifiedDate":"2024-03-15"},{"lineNumber":75,"author":{"gitId":"gerteck"},"content":" Person person \u003d null;","lastModifiedDate":"2024-03-15"},{"lineNumber":76,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":77,"author":{"gitId":"gerteck"},"content":" if (role.isVolunteer()) {","lastModifiedDate":"2024-03-16"},{"lineNumber":78,"author":{"gitId":"CJerrong"},"content":" person \u003d new Volunteer(name, phone, email, address, tagList, pairedWithNone, pairedWithNoID);","lastModifiedDate":"2024-03-22"},{"lineNumber":79,"author":{"gitId":"gerteck"},"content":" } else {","lastModifiedDate":"2024-03-16"},{"lineNumber":80,"author":{"gitId":"gerteck"},"content":" assert role.isBefriendee();","lastModifiedDate":"2024-03-16"},{"lineNumber":81,"author":{"gitId":"CJerrong"},"content":" person \u003d new Befriendee(name, phone, email, address, tagList, pairedWithNone, pairedWithNoID);","lastModifiedDate":"2024-03-22"},{"lineNumber":82,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":83,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":84,"author":{"gitId":"-"},"content":" return new AddCommand(person);","lastModifiedDate":"2017-03-17"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":87,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05"}],"authorContributionMap":{"CJerrong":10,"gerteck":32,"chaaaaun":18,"-":27}},{"path":"src/main/java/scrolls/elder/logic/parser/AddressBookParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.logic.parser;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"chaaaaun"},"content":"import static scrolls.elder.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"chaaaaun"},"content":"import static scrolls.elder.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-07-29"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.core.LogsCenter;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.commands.AddCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.commands.ClearCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.commands.Command;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.commands.DeleteCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.commands.EditCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.commands.ExitCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.commands.FindCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.commands.HelpCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.commands.ListCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"soons1"},"content":"import scrolls.elder.logic.commands.PairCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"sdevih"},"content":"import scrolls.elder.logic.commands.UnpairCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":43,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // Note to developers: Change the log level in config.json to enable lower level (i.e., FINE, FINER and lower)","lastModifiedDate":"2023-07-29"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":56,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":64,"author":{"gitId":"sdevih"},"content":" case DeleteCommand.COMMAND_WORD_DELETE:","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"sdevih"},"content":" case DeleteCommand.COMMAND_WORD_DEL:","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"sdevih"},"content":" case DeleteCommand.COMMAND_WORD_RM:","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"sdevih"},"content":" case DeleteCommand.COMMAND_WORD_REMOVE:","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return new ListCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":82,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26"},{"lineNumber":83,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":85,"author":{"gitId":"soons1"},"content":" case PairCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-18"},{"lineNumber":86,"author":{"gitId":"soons1"},"content":" return new PairCommandParser().parse(arguments);","lastModifiedDate":"2024-03-18"},{"lineNumber":87,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":88,"author":{"gitId":"sdevih"},"content":" case UnpairCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-21"},{"lineNumber":89,"author":{"gitId":"sdevih"},"content":" return new UnpairCommandParser().parse(arguments);","lastModifiedDate":"2024-03-21"},{"lineNumber":90,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":91,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26"},{"lineNumber":92,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29"},{"lineNumber":93,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":97,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"soons1":4,"chaaaaun":14,"-":71,"sdevih":8}},{"path":"src/main/java/scrolls/elder/logic/parser/ArgumentMultimap.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.logic.parser;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-03-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashMap;","lastModifiedDate":"2017-03-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-03-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Map;","lastModifiedDate":"2017-03-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-03-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.Messages;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-03-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Stores mapping of prefixes to their respective arguments.","lastModifiedDate":"2017-03-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Each key may be associated with multiple argument values.","lastModifiedDate":"2017-03-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Values for a given key are stored in a list, and the insertion ordering is maintained.","lastModifiedDate":"2017-03-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Keys are unique, but the list of argument values may contain duplicate argument values, i.e. the same argument value","lastModifiedDate":"2017-03-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * can be inserted multiple times for the same prefix.","lastModifiedDate":"2017-03-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class ArgumentMultimap {","lastModifiedDate":"2017-03-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /** Prefixes mapped to their respective arguments**/","lastModifiedDate":"2017-03-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final Map\u003cPrefix, List\u003cString\u003e\u003e argMultimap \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2017-03-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Associates the specified argument value with {@code prefix} key in this map.","lastModifiedDate":"2017-03-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * If the map previously contained a mapping for the key, the new value is appended to the list of existing values.","lastModifiedDate":"2017-03-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * @param prefix Prefix key with which the specified argument value is to be associated","lastModifiedDate":"2017-03-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * @param argValue Argument value to be associated with the specified prefix key","lastModifiedDate":"2017-03-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void put(Prefix prefix, String argValue) {","lastModifiedDate":"2017-03-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" List\u003cString\u003e argValues \u003d getAllValues(prefix);","lastModifiedDate":"2017-03-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" argValues.add(argValue);","lastModifiedDate":"2017-03-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" argMultimap.put(prefix, argValues);","lastModifiedDate":"2017-03-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Returns the last value of {@code prefix}.","lastModifiedDate":"2017-03-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public Optional\u003cString\u003e getValue(Prefix prefix) {","lastModifiedDate":"2017-03-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" List\u003cString\u003e values \u003d getAllValues(prefix);","lastModifiedDate":"2017-03-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" return values.isEmpty() ? Optional.empty() : Optional.of(values.get(values.size() - 1));","lastModifiedDate":"2017-03-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Returns all values of {@code prefix}.","lastModifiedDate":"2017-03-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * If the prefix does not exist or has no values, this will return an empty list.","lastModifiedDate":"2017-03-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Modifying the returned list will not affect the underlying data structure of the ArgumentMultimap.","lastModifiedDate":"2017-03-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public List\u003cString\u003e getAllValues(Prefix prefix) {","lastModifiedDate":"2017-03-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" if (!argMultimap.containsKey(prefix)) {","lastModifiedDate":"2017-03-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e();","lastModifiedDate":"2017-03-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(argMultimap.get(prefix));","lastModifiedDate":"2017-03-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * Returns the preamble (text before the first valid prefix). Trims any leading/trailing spaces.","lastModifiedDate":"2017-03-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public String getPreamble() {","lastModifiedDate":"2017-03-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return getValue(new Prefix(\"\")).orElse(\"\");","lastModifiedDate":"2017-03-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":65,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14"},{"lineNumber":66,"author":{"gitId":"-"},"content":" * Throws a {@code ParseException} if any of the prefixes given in {@code prefixes} appeared more than","lastModifiedDate":"2023-07-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":" * once among the arguments.","lastModifiedDate":"2023-07-14"},{"lineNumber":68,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void verifyNoDuplicatePrefixesFor(Prefix... prefixes) throws ParseException {","lastModifiedDate":"2023-07-14"},{"lineNumber":70,"author":{"gitId":"-"},"content":" Prefix[] duplicatedPrefixes \u003d Stream.of(prefixes).distinct()","lastModifiedDate":"2023-07-14"},{"lineNumber":71,"author":{"gitId":"-"},"content":" .filter(prefix -\u003e argMultimap.containsKey(prefix) \u0026\u0026 argMultimap.get(prefix).size() \u003e 1)","lastModifiedDate":"2023-07-14"},{"lineNumber":72,"author":{"gitId":"-"},"content":" .toArray(Prefix[]::new);","lastModifiedDate":"2023-07-14"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":74,"author":{"gitId":"-"},"content":" if (duplicatedPrefixes.length \u003e 0) {","lastModifiedDate":"2023-07-14"},{"lineNumber":75,"author":{"gitId":"-"},"content":" throw new ParseException(Messages.getErrorMessageForDuplicatePrefixes(duplicatedPrefixes));","lastModifiedDate":"2023-07-14"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":78,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-08"}],"authorContributionMap":{"chaaaaun":3,"-":75}},{"path":"src/main/java/scrolls/elder/logic/parser/ArgumentTokenizer.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.logic.parser;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-01-18"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-01-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-10-16"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * Tokenizes arguments string of the form: {@code preamble \u003cprefix\u003evalue \u003cprefix\u003evalue ...}\u003cbr\u003e","lastModifiedDate":"2016-10-16"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * e.g. {@code some preamble text t/ 11.00 t/12.00 k/ m/ July} where prefixes are {@code t/ k/ m/}.\u003cbr\u003e","lastModifiedDate":"2017-05-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * 1. An argument\u0027s value can be an empty string e.g. the value of {@code k/} in the above example.\u003cbr\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * 2. Leading and trailing whitespaces of an argument value will be discarded.\u003cbr\u003e","lastModifiedDate":"2016-10-16"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * 3. An argument may be repeated and all its values will be accumulated e.g. the value of {@code t/}","lastModifiedDate":"2017-05-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * in the above example.\u003cbr\u003e","lastModifiedDate":"2016-10-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class ArgumentTokenizer {","lastModifiedDate":"2016-10-16"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Tokenizes an arguments string and returns an {@code ArgumentMultimap} object that maps prefixes to their","lastModifiedDate":"2017-03-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * respective argument values. Only the given prefixes will be recognized in the arguments string.","lastModifiedDate":"2017-03-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * @param argsString Arguments string of the form: {@code preamble \u003cprefix\u003evalue \u003cprefix\u003evalue ...}","lastModifiedDate":"2017-03-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * @param prefixes Prefixes to tokenize the arguments string with","lastModifiedDate":"2017-03-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @return ArgumentMultimap object that maps prefixes to their arguments","lastModifiedDate":"2017-03-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static ArgumentMultimap tokenize(String argsString, Prefix... prefixes) {","lastModifiedDate":"2017-03-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" List\u003cPrefixPosition\u003e positions \u003d findAllPrefixPositions(argsString, prefixes);","lastModifiedDate":"2017-03-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":" return extractArguments(argsString, positions);","lastModifiedDate":"2017-03-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Finds all zero-based prefix positions in the given arguments string.","lastModifiedDate":"2017-03-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * @param argsString Arguments string of the form: {@code preamble \u003cprefix\u003evalue \u003cprefix\u003evalue ...}","lastModifiedDate":"2017-03-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * @param prefixes Prefixes to find in the arguments string","lastModifiedDate":"2017-03-20"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * @return List of zero-based prefix positions in the given arguments string","lastModifiedDate":"2017-03-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private static List\u003cPrefixPosition\u003e findAllPrefixPositions(String argsString, Prefix... prefixes) {","lastModifiedDate":"2017-03-20"},{"lineNumber":39,"author":{"gitId":"-"},"content":" return Arrays.stream(prefixes)","lastModifiedDate":"2018-01-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" .flatMap(prefix -\u003e findPrefixPositions(argsString, prefix).stream())","lastModifiedDate":"2018-01-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-01-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * {@see findAllPrefixPositions}","lastModifiedDate":"2017-03-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":47,"author":{"gitId":"-"},"content":" private static List\u003cPrefixPosition\u003e findPrefixPositions(String argsString, Prefix prefix) {","lastModifiedDate":"2017-03-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":" List\u003cPrefixPosition\u003e positions \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2016-10-16"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":50,"author":{"gitId":"-"},"content":" int prefixPosition \u003d findPrefixPosition(argsString, prefix.getPrefix(), 0);","lastModifiedDate":"2017-05-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" while (prefixPosition !\u003d -1) {","lastModifiedDate":"2017-05-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" PrefixPosition extendedPrefix \u003d new PrefixPosition(prefix, prefixPosition);","lastModifiedDate":"2017-05-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" positions.add(extendedPrefix);","lastModifiedDate":"2016-10-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":" prefixPosition \u003d findPrefixPosition(argsString, prefix.getPrefix(), prefixPosition);","lastModifiedDate":"2017-05-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return positions;","lastModifiedDate":"2016-10-16"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * Returns the index of the first occurrence of {@code prefix} in","lastModifiedDate":"2017-05-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * {@code argsString} starting from index {@code fromIndex}. An occurrence","lastModifiedDate":"2017-05-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * is valid if there is a whitespace before {@code prefix}. Returns -1 if no","lastModifiedDate":"2017-05-19"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * such occurrence can be found.","lastModifiedDate":"2017-05-19"},{"lineNumber":65,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":" * E.g if {@code argsString} \u003d \"e/hip/900\", {@code prefix} \u003d \"p/\" and","lastModifiedDate":"2017-05-19"},{"lineNumber":67,"author":{"gitId":"-"},"content":" * {@code fromIndex} \u003d 0, this method returns -1 as there are no valid","lastModifiedDate":"2017-05-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":" * occurrences of \"p/\" with whitespace before it. However, if","lastModifiedDate":"2017-05-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" * {@code argsString} \u003d \"e/hi p/900\", {@code prefix} \u003d \"p/\" and","lastModifiedDate":"2017-05-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":" * {@code fromIndex} \u003d 0, this method returns 5.","lastModifiedDate":"2017-05-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" private static int findPrefixPosition(String argsString, String prefix, int fromIndex) {","lastModifiedDate":"2017-05-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":" int prefixIndex \u003d argsString.indexOf(\" \" + prefix, fromIndex);","lastModifiedDate":"2017-05-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" return prefixIndex \u003d\u003d -1 ? -1","lastModifiedDate":"2017-05-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":" : prefixIndex + 1; // +1 as offset for whitespace","lastModifiedDate":"2017-05-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-19"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Extracts prefixes and their argument values, and returns an {@code ArgumentMultimap} object that maps the","lastModifiedDate":"2017-03-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * extracted prefixes to their respective arguments. Prefixes are extracted based on their zero-based positions in","lastModifiedDate":"2017-03-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * {@code argsString}.","lastModifiedDate":"2017-03-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * @param argsString Arguments string of the form: {@code preamble \u003cprefix\u003evalue \u003cprefix\u003evalue ...}","lastModifiedDate":"2017-03-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * @param prefixPositions Zero-based positions of all prefixes in {@code argsString}","lastModifiedDate":"2017-03-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * @return ArgumentMultimap object that maps prefixes to their arguments","lastModifiedDate":"2017-03-08"},{"lineNumber":86,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":87,"author":{"gitId":"-"},"content":" private static ArgumentMultimap extractArguments(String argsString, List\u003cPrefixPosition\u003e prefixPositions) {","lastModifiedDate":"2017-03-20"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":89,"author":{"gitId":"-"},"content":" // Sort by start position","lastModifiedDate":"2016-10-16"},{"lineNumber":90,"author":{"gitId":"-"},"content":" prefixPositions.sort((prefix1, prefix2) -\u003e prefix1.getStartPosition() - prefix2.getStartPosition());","lastModifiedDate":"2016-10-16"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":92,"author":{"gitId":"-"},"content":" // Insert a PrefixPosition to represent the preamble","lastModifiedDate":"2016-10-16"},{"lineNumber":93,"author":{"gitId":"-"},"content":" PrefixPosition preambleMarker \u003d new PrefixPosition(new Prefix(\"\"), 0);","lastModifiedDate":"2016-10-16"},{"lineNumber":94,"author":{"gitId":"-"},"content":" prefixPositions.add(0, preambleMarker);","lastModifiedDate":"2016-10-16"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":96,"author":{"gitId":"-"},"content":" // Add a dummy PrefixPosition to represent the end of the string","lastModifiedDate":"2016-10-16"},{"lineNumber":97,"author":{"gitId":"-"},"content":" PrefixPosition endPositionMarker \u003d new PrefixPosition(new Prefix(\"\"), argsString.length());","lastModifiedDate":"2016-10-16"},{"lineNumber":98,"author":{"gitId":"-"},"content":" prefixPositions.add(endPositionMarker);","lastModifiedDate":"2016-10-16"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":100,"author":{"gitId":"-"},"content":" // Map prefixes to their argument values (if any)","lastModifiedDate":"2017-03-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d new ArgumentMultimap();","lastModifiedDate":"2017-03-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":" for (int i \u003d 0; i \u003c prefixPositions.size() - 1; i++) {","lastModifiedDate":"2016-10-16"},{"lineNumber":103,"author":{"gitId":"-"},"content":" // Extract and store prefixes and their arguments","lastModifiedDate":"2017-03-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":" Prefix argPrefix \u003d prefixPositions.get(i).getPrefix();","lastModifiedDate":"2017-03-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":" String argValue \u003d extractArgumentValue(argsString, prefixPositions.get(i), prefixPositions.get(i + 1));","lastModifiedDate":"2016-10-16"},{"lineNumber":106,"author":{"gitId":"-"},"content":" argMultimap.put(argPrefix, argValue);","lastModifiedDate":"2017-03-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":109,"author":{"gitId":"-"},"content":" return argMultimap;","lastModifiedDate":"2017-03-08"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":112,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":113,"author":{"gitId":"-"},"content":" * Returns the trimmed value of the argument in the arguments string specified by {@code currentPrefixPosition}.","lastModifiedDate":"2017-03-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":" * The end position of the value is determined by {@code nextPrefixPosition}.","lastModifiedDate":"2017-03-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":116,"author":{"gitId":"-"},"content":" private static String extractArgumentValue(String argsString,","lastModifiedDate":"2017-03-20"},{"lineNumber":117,"author":{"gitId":"-"},"content":" PrefixPosition currentPrefixPosition,","lastModifiedDate":"2016-10-16"},{"lineNumber":118,"author":{"gitId":"-"},"content":" PrefixPosition nextPrefixPosition) {","lastModifiedDate":"2016-10-16"},{"lineNumber":119,"author":{"gitId":"-"},"content":" Prefix prefix \u003d currentPrefixPosition.getPrefix();","lastModifiedDate":"2016-10-16"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":121,"author":{"gitId":"-"},"content":" int valueStartPos \u003d currentPrefixPosition.getStartPosition() + prefix.getPrefix().length();","lastModifiedDate":"2016-10-16"},{"lineNumber":122,"author":{"gitId":"-"},"content":" String value \u003d argsString.substring(valueStartPos, nextPrefixPosition.getStartPosition());","lastModifiedDate":"2016-10-16"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":124,"author":{"gitId":"-"},"content":" return value.trim();","lastModifiedDate":"2016-10-16"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":127,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":128,"author":{"gitId":"-"},"content":" * Represents a prefix\u0027s position in an arguments string.","lastModifiedDate":"2017-03-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-19"},{"lineNumber":130,"author":{"gitId":"-"},"content":" private static class PrefixPosition {","lastModifiedDate":"2017-03-20"},{"lineNumber":131,"author":{"gitId":"-"},"content":" private int startPosition;","lastModifiedDate":"2016-10-19"},{"lineNumber":132,"author":{"gitId":"-"},"content":" private final Prefix prefix;","lastModifiedDate":"2016-10-19"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":134,"author":{"gitId":"-"},"content":" PrefixPosition(Prefix prefix, int startPosition) {","lastModifiedDate":"2016-10-19"},{"lineNumber":135,"author":{"gitId":"-"},"content":" this.prefix \u003d prefix;","lastModifiedDate":"2016-10-19"},{"lineNumber":136,"author":{"gitId":"-"},"content":" this.startPosition \u003d startPosition;","lastModifiedDate":"2016-10-19"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":139,"author":{"gitId":"-"},"content":" int getStartPosition() {","lastModifiedDate":"2016-10-19"},{"lineNumber":140,"author":{"gitId":"-"},"content":" return startPosition;","lastModifiedDate":"2018-08-14"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":143,"author":{"gitId":"-"},"content":" Prefix getPrefix() {","lastModifiedDate":"2016-10-19"},{"lineNumber":144,"author":{"gitId":"-"},"content":" return prefix;","lastModifiedDate":"2018-08-14"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":148,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-10-16"}],"authorContributionMap":{"chaaaaun":1,"-":147}},{"path":"src/main/java/scrolls/elder/logic/parser/CliSyntax.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.logic.parser;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11"},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":" /* Prefix definitions */","lastModifiedDate":"2017-02-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"n/\");","lastModifiedDate":"2017-06-06"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"p/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"e/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_ADDRESS \u003d new Prefix(\"a/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"t/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":15,"author":{"gitId":"gerteck"},"content":" public static final Prefix PREFIX_ROLE \u003d new Prefix(\"r/\");","lastModifiedDate":"2024-03-15"},{"lineNumber":16,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":17,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"gerteck":4,"chaaaaun":1,"-":14}},{"path":"src/main/java/scrolls/elder/logic/parser/DeleteCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.logic.parser;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"chaaaaun"},"content":"import static scrolls.elder.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"chaaaaun"},"content":"import static scrolls.elder.logic.parser.CliSyntax.PREFIX_ROLE;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":6,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.core.index.Index;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.commands.DeleteCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new DeleteCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class DeleteCommandParser implements Parser\u003cDeleteCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the DeleteCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * and returns a DeleteCommand object for execution.","lastModifiedDate":"2019-05-11"},{"lineNumber":18,"author":{"gitId":"chaaaaun"},"content":" *","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public DeleteCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":22,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15"},{"lineNumber":23,"author":{"gitId":"chaaaaun"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_ROLE);","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"chaaaaun"},"content":" Index index;","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"chaaaaun"},"content":" try {","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"chaaaaun"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"chaaaaun"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"chaaaaun"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE),","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"chaaaaun"},"content":" pe);","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"chaaaaun"},"content":" return new DeleteCommand(index, ParserUtil.parseRole(argMultimap.getValue(PREFIX_ROLE).get()));","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10"},{"lineNumber":33,"author":{"gitId":"-"},"content":" throw new ParseException(","lastModifiedDate":"2017-03-11"},{"lineNumber":34,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2018-08-06"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":38,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"chaaaaun":16,"-":22}},{"path":"src/main/java/scrolls/elder/logic/parser/EditCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.logic.parser;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"chaaaaun"},"content":"import static scrolls.elder.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"gerteck"},"content":"import static scrolls.elder.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"gerteck"},"content":"import static scrolls.elder.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"gerteck"},"content":"import static scrolls.elder.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"gerteck"},"content":"import static scrolls.elder.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"gerteck"},"content":"import static scrolls.elder.logic.parser.CliSyntax.PREFIX_ROLE;","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"gerteck"},"content":"import static scrolls.elder.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-01-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-01-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":17,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.core.index.Index;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.commands.EditCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.tag.Tag;","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new EditCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class EditCommandParser implements Parser\u003cEditCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the EditCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * and returns an EditCommand object for execution.","lastModifiedDate":"2017-01-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public EditCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":33,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2017-05-15"},{"lineNumber":34,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":35,"author":{"gitId":"gerteck"},"content":" ArgumentTokenizer.tokenize(args,","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"gerteck"},"content":" PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_TAG, PREFIX_ROLE);","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2017-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2017-06-06"},{"lineNumber":42,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10"},{"lineNumber":43,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2018-08-06"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":46,"author":{"gitId":"-"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS);","lastModifiedDate":"2023-07-14"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":48,"author":{"gitId":"chaaaaun"},"content":" EditCommand.EditPersonDescriptor editPersonDescriptor \u003d new EditCommand.EditPersonDescriptor();","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":50,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":51,"author":{"gitId":"-"},"content":" editPersonDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":53,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":54,"author":{"gitId":"-"},"content":" editPersonDescriptor.setPhone(ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":56,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":57,"author":{"gitId":"-"},"content":" editPersonDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":59,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_ADDRESS).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":60,"author":{"gitId":"-"},"content":" editPersonDescriptor.setAddress(ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":62,"author":{"gitId":"gerteck"},"content":" if (argMultimap.getValue(PREFIX_ROLE).isPresent()) {","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"gerteck"},"content":" editPersonDescriptor.setRole(ParserUtil.parseRole(argMultimap.getValue(PREFIX_ROLE).get()));","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":66,"author":{"gitId":"-"},"content":" parseTagsForEdit(argMultimap.getAllValues(PREFIX_TAG)).ifPresent(editPersonDescriptor::setTags);","lastModifiedDate":"2017-06-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":68,"author":{"gitId":"-"},"content":" if (!editPersonDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2017-01-26"},{"lineNumber":69,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-03-11"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2017-05-15"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":75,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":76,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e} if {@code tags} is non-empty.","lastModifiedDate":"2017-03-07"},{"lineNumber":77,"author":{"gitId":"-"},"content":" * If {@code tags} contain only one element which is an empty string, it will be parsed into a","lastModifiedDate":"2017-01-26"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * {@code Set\u003cTag\u003e} containing zero tags.","lastModifiedDate":"2017-03-07"},{"lineNumber":79,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":80,"author":{"gitId":"-"},"content":" private Optional\u003cSet\u003cTag\u003e\u003e parseTagsForEdit(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assert tags !\u003d null;","lastModifiedDate":"2017-01-26"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":83,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2017-01-26"},{"lineNumber":84,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2017-01-26"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":86,"author":{"gitId":"-"},"content":" Collection\u003cString\u003e tagSet \u003d tags.size() \u003d\u003d 1 \u0026\u0026 tags.contains(\"\") ? Collections.emptySet() : tags;","lastModifiedDate":"2017-01-26"},{"lineNumber":87,"author":{"gitId":"-"},"content":" return Optional.of(ParserUtil.parseTags(tagSet));","lastModifiedDate":"2017-01-26"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":90,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"gerteck":12,"chaaaaun":7,"-":71}},{"path":"src/main/java/scrolls/elder/logic/parser/FindCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.logic.parser;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"chaaaaun"},"content":"import static scrolls.elder.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-01-26"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":7,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.commands.FindCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new FindCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class FindCommandParser implements Parser\u003cFindCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the FindCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * and returns a FindCommand object for execution.","lastModifiedDate":"2019-05-11"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public FindCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":22,"author":{"gitId":"-"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2017-02-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2017-02-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":" throw new ParseException(","lastModifiedDate":"2017-03-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-01-26"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":" String[] nameKeywords \u003d trimmedArgs.split(\"\\\\s+\");","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" return new FindCommand(new NameContainsKeywordsPredicate(Arrays.asList(nameKeywords)));","lastModifiedDate":"2017-06-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"chaaaaun":5,"-":28}},{"path":"src/main/java/scrolls/elder/logic/parser/PairCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"soons1"},"content":"package scrolls.elder.logic.parser;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"soons1"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"soons1"},"content":"import static scrolls.elder.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"soons1"},"content":"import scrolls.elder.commons.core.index.Index;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"soons1"},"content":"import scrolls.elder.logic.commands.PairCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"soons1"},"content":"import scrolls.elder.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"soons1"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"soons1"},"content":" * Parses input arguments and creates a new PairCommand object","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"soons1"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"soons1"},"content":"public class PairCommandParser implements Parser\u003cPairCommand\u003e {","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"soons1"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"soons1"},"content":" * Parses the given {@code String} of arguments in the context of the PairCommand","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"soons1"},"content":" * and returns an PairCommand object for execution.","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"soons1"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"soons1"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"soons1"},"content":" public PairCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"soons1"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"soons1"},"content":" String[] pairIndexes \u003d args.trim().split(\" \");","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"soons1"},"content":" Index index1;","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"soons1"},"content":" Index index2;","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"soons1"},"content":" try {","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"soons1"},"content":" index1 \u003d ParserUtil.parseIndex(pairIndexes[0]);","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"soons1"},"content":" index2 \u003d ParserUtil.parseIndex(pairIndexes[1]);","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"soons1"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"soons1"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, PairCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"soons1"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"soons1"},"content":" return new PairCommand(index1, index2);","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"soons1"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"soons1"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"soons1":35}},{"path":"src/main/java/scrolls/elder/logic/parser/Parser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.logic.parser;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06"},{"lineNumber":3,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.commands.Command;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-07-06"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * Represents a Parser that is able to parse user input into a {@code Command} of type {@code T}.","lastModifiedDate":"2017-07-06"},{"lineNumber":8,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-06"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public interface Parser\u003cT extends Command\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06"},{"lineNumber":11,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-06"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Parses {@code userInput} into a command and returns it.","lastModifiedDate":"2017-07-06"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * @throws ParseException if {@code userInput} does not conform the expected format","lastModifiedDate":"2017-07-06"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-06"},{"lineNumber":15,"author":{"gitId":"-"},"content":" T parse(String userInput) throws ParseException;","lastModifiedDate":"2017-07-06"},{"lineNumber":16,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-07-06"}],"authorContributionMap":{"chaaaaun":3,"-":13}},{"path":"src/main/java/scrolls/elder/logic/parser/ParserUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.logic.parser;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-02-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-02-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-02-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.core.index.Index;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.util.StringUtil;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Address;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Email;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Name;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Phone;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"gerteck"},"content":"import scrolls.elder.model.person.Role;","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.tag.Tag;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02"},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2017-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":32,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02"},{"lineNumber":34,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":36,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29"},{"lineNumber":42,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":46,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29"},{"lineNumber":47,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29"},{"lineNumber":48,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":49,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":57,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":61,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30"},{"lineNumber":62,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":63,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":64,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","lastModifiedDate":"2017-05-30"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":69,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30"},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":72,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":76,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-30"},{"lineNumber":77,"author":{"gitId":"-"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":78,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(trimmedAddress)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":79,"author":{"gitId":"-"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":81,"author":{"gitId":"-"},"content":" return new Address(trimmedAddress);","lastModifiedDate":"2017-05-30"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":84,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":87,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":89,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":90,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":91,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30"},{"lineNumber":92,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":93,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":94,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":96,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","lastModifiedDate":"2017-05-30"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":99,"author":{"gitId":"gerteck"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":100,"author":{"gitId":"gerteck"},"content":" * Parses a {@code String role} into an {@code Role}.","lastModifiedDate":"2024-03-16"},{"lineNumber":101,"author":{"gitId":"gerteck"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-16"},{"lineNumber":102,"author":{"gitId":"gerteck"},"content":" *","lastModifiedDate":"2024-03-16"},{"lineNumber":103,"author":{"gitId":"gerteck"},"content":" * @throws ParseException if the given {@code role} is invalid.","lastModifiedDate":"2024-03-16"},{"lineNumber":104,"author":{"gitId":"gerteck"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":105,"author":{"gitId":"gerteck"},"content":" public static Role parseRole(String role) throws ParseException {","lastModifiedDate":"2024-03-16"},{"lineNumber":106,"author":{"gitId":"gerteck"},"content":" requireNonNull(role);","lastModifiedDate":"2024-03-16"},{"lineNumber":107,"author":{"gitId":"gerteck"},"content":" String trimmedRole \u003d role.trim();","lastModifiedDate":"2024-03-16"},{"lineNumber":108,"author":{"gitId":"gerteck"},"content":" if (!Role.isValidRole(trimmedRole)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":109,"author":{"gitId":"gerteck"},"content":" throw new ParseException(Role.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-16"},{"lineNumber":110,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":111,"author":{"gitId":"gerteck"},"content":" return new Role(trimmedRole);","lastModifiedDate":"2024-03-16"},{"lineNumber":112,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":113,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":114,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":115,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30"},{"lineNumber":116,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":117,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":118,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":119,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":120,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":121,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30"},{"lineNumber":122,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":123,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":124,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":126,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","lastModifiedDate":"2017-05-30"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":129,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":130,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2017-03-07"},{"lineNumber":131,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":132,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":133,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15"},{"lineNumber":134,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11"},{"lineNumber":135,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11"},{"lineNumber":136,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":138,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":140,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"gerteck":16,"chaaaaun":9,"-":115}},{"path":"src/main/java/scrolls/elder/logic/parser/Prefix.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.logic.parser;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-03-11"},{"lineNumber":4,"author":{"gitId":"-"},"content":" * A prefix that marks the beginning of an argument in an arguments string.","lastModifiedDate":"2017-03-11"},{"lineNumber":5,"author":{"gitId":"-"},"content":" * E.g. \u0027t/\u0027 in \u0027add James t/ friend\u0027.","lastModifiedDate":"2017-03-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"public class Prefix {","lastModifiedDate":"2017-03-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":" private final String prefix;","lastModifiedDate":"2017-03-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public Prefix(String prefix) {","lastModifiedDate":"2017-03-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":" this.prefix \u003d prefix;","lastModifiedDate":"2017-03-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":14,"author":{"gitId":"-"},"content":" public String getPrefix() {","lastModifiedDate":"2017-03-11"},{"lineNumber":15,"author":{"gitId":"-"},"content":" return prefix;","lastModifiedDate":"2017-03-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":18,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2017-05-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" return getPrefix();","lastModifiedDate":"2017-05-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-03-11"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2017-03-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":" return prefix \u003d\u003d null ? 0 : prefix.hashCode();","lastModifiedDate":"2017-03-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-03-11"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-03-11"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":34,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" if (!(other instanceof Prefix)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" Prefix otherPrefix \u003d (Prefix) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" return prefix.equals(otherPrefix.prefix);","lastModifiedDate":"2023-07-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-11"}],"authorContributionMap":{"chaaaaun":1,"-":41}},{"path":"src/main/java/scrolls/elder/logic/parser/UnpairCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sdevih"},"content":"package scrolls.elder.logic.parser;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"sdevih"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"sdevih"},"content":"import static scrolls.elder.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"sdevih"},"content":"import scrolls.elder.commons.core.index.Index;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"sdevih"},"content":"import scrolls.elder.logic.commands.UnpairCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"sdevih"},"content":"import scrolls.elder.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"sdevih"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"sdevih"},"content":" * Parses input arguments and creates a new UnpairCommand object","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"sdevih"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"sdevih"},"content":"public class UnpairCommandParser implements Parser\u003cUnpairCommand\u003e {","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"sdevih"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"sdevih"},"content":" * Parses the given {@code String} of arguments in the context of the PairCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"sdevih"},"content":" * and returns an PairCommand object for execution.","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"sdevih"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"sdevih"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"sdevih"},"content":" public UnpairCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"sdevih"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"sdevih"},"content":" String[] pairIndexes \u003d args.trim().split(\" \");","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"sdevih"},"content":" Index index1;","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"sdevih"},"content":" Index index2;","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"sdevih"},"content":" try {","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"sdevih"},"content":" index1 \u003d ParserUtil.parseIndex(pairIndexes[0]);","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"sdevih"},"content":" index2 \u003d ParserUtil.parseIndex(pairIndexes[1]);","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"sdevih"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"sdevih"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, UnpairCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"sdevih"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"sdevih"},"content":" return new UnpairCommand(index1, index2);","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"sdevih"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"sdevih"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"sdevih":35}},{"path":"src/main/java/scrolls/elder/logic/parser/exceptions/ParseException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.logic.parser.exceptions;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":3,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-03-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * Represents a parse error encountered by a parser.","lastModifiedDate":"2017-03-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class ParseException extends IllegalValueException {","lastModifiedDate":"2017-03-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public ParseException(String message) {","lastModifiedDate":"2017-03-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":" super(message);","lastModifiedDate":"2017-03-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":14,"author":{"gitId":"-"},"content":" public ParseException(String message, Throwable cause) {","lastModifiedDate":"2017-03-11"},{"lineNumber":15,"author":{"gitId":"-"},"content":" super(message, cause);","lastModifiedDate":"2017-03-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-11"}],"authorContributionMap":{"chaaaaun":2,"-":15}},{"path":"src/main/java/scrolls/elder/model/AddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.model;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Person;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.UniquePersonList;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * Wraps all data at the address-book level","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Duplicates are not allowed (by .isSamePerson comparison)","lastModifiedDate":"2018-04-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class AddressBook implements ReadOnlyAddressBook {","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"chaaaaun"},"content":" private int globalId;","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private final UniquePersonList persons;","lastModifiedDate":"2016-08-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-19"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * The \u0027unusual\u0027 code block below is a non-static initialization block, sometimes used to avoid duplication","lastModifiedDate":"2019-05-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * between constructors. See https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html","lastModifiedDate":"2016-10-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Note that non-static init blocks are not recommended to use. There are other ways to avoid duplication","lastModifiedDate":"2016-10-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * among constructors.","lastModifiedDate":"2016-10-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" {","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" persons \u003d new UniquePersonList();","lastModifiedDate":"2016-08-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"chaaaaun"},"content":" public AddressBook(int gid) {","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"chaaaaun"},"content":" this.globalId \u003d gid;","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Creates an AddressBook using the Persons in the {@code toBeCopied}","lastModifiedDate":"2018-03-29"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public AddressBook(ReadOnlyAddressBook toBeCopied) {","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"chaaaaun"},"content":" this(toBeCopied.getGlobalId());","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"-"},"content":" resetData(toBeCopied);","lastModifiedDate":"2016-12-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":44,"author":{"gitId":"-"},"content":" //// list overwrite operations","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":46,"author":{"gitId":"chaaaaun"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"chaaaaun"},"content":" public int getGlobalId() {","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"chaaaaun"},"content":" return globalId;","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Replaces the contents of the person list with {@code persons}.","lastModifiedDate":"2018-08-07"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * {@code persons} must not contain duplicate persons.","lastModifiedDate":"2018-08-07"},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void setPersons(List\u003cPerson\u003e persons) {","lastModifiedDate":"2018-08-07"},{"lineNumber":56,"author":{"gitId":"-"},"content":" this.persons.setPersons(persons);","lastModifiedDate":"2016-10-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * Resets the existing data of this {@code AddressBook} with {@code newData}.","lastModifiedDate":"2017-08-16"},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void resetData(ReadOnlyAddressBook newData) {","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" requireNonNull(newData);","lastModifiedDate":"2017-05-15"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-20"},{"lineNumber":65,"author":{"gitId":"chaaaaun"},"content":" this.globalId \u003d newData.getGlobalId();","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"-"},"content":" setPersons(newData.getPersonList());","lastModifiedDate":"2018-03-29"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" //// person-level operations","lastModifiedDate":"2016-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * Returns true if a person with the same identity as {@code person} exists in the address book.","lastModifiedDate":"2018-08-06"},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06"},{"lineNumber":75,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return persons.contains(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":79,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-09-21"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * The person must not already exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":82,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void addPerson(Person p) {","lastModifiedDate":"2018-08-07"},{"lineNumber":84,"author":{"gitId":"chaaaaun"},"content":" globalId +\u003d 1;","lastModifiedDate":"2024-03-17"},{"lineNumber":85,"author":{"gitId":"-"},"content":" persons.add(p);","lastModifiedDate":"2018-03-29"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":88,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * Replaces the given person {@code target} in the list with {@code editedPerson}.","lastModifiedDate":"2018-01-10"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * The person identity of {@code editedPerson} must not be the same as another existing person in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":92,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":94,"author":{"gitId":"-"},"content":" requireNonNull(editedPerson);","lastModifiedDate":"2018-01-10"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" persons.setPerson(target, editedPerson);","lastModifiedDate":"2018-03-29"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":99,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * Removes {@code key} from this {@code AddressBook}.","lastModifiedDate":"2017-08-16"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * {@code key} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":102,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":103,"author":{"gitId":"-"},"content":" public void removePerson(Person key) {","lastModifiedDate":"2018-08-07"},{"lineNumber":104,"author":{"gitId":"-"},"content":" persons.remove(key);","lastModifiedDate":"2018-02-28"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":" //// util methods","lastModifiedDate":"2016-08-08"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":110,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-08"},{"lineNumber":111,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":" .add(\"persons\", persons)","lastModifiedDate":"2019-02-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":118,"author":{"gitId":"-"},"content":" return persons.asUnmodifiableObservableList();","lastModifiedDate":"2018-04-05"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-01"},{"lineNumber":120,"author":{"gitId":"CJerrong"},"content":" public Person getPersonFromID(int i) {","lastModifiedDate":"2024-03-21"},{"lineNumber":121,"author":{"gitId":"CJerrong"},"content":" return persons.getPersonFromID(i);","lastModifiedDate":"2024-03-21"},{"lineNumber":122,"author":{"gitId":"CJerrong"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-01"},{"lineNumber":124,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":125,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-21"},{"lineNumber":126,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":127,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":130,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":131,"author":{"gitId":"-"},"content":" if (!(other instanceof AddressBook)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":132,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":135,"author":{"gitId":"-"},"content":" AddressBook otherAddressBook \u003d (AddressBook) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":136,"author":{"gitId":"-"},"content":" return persons.equals(otherAddressBook.persons);","lastModifiedDate":"2023-07-13"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":139,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":140,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-21"},{"lineNumber":141,"author":{"gitId":"-"},"content":" return persons.hashCode();","lastModifiedDate":"2018-03-29"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":143,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"CJerrong":3,"chaaaaun":16,"-":124}},{"path":"src/main/java/scrolls/elder/model/Model.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.model;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":7,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.core.GuiSettings;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Person;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * The API of the Model component.","lastModifiedDate":"2016-09-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public interface Model {","lastModifiedDate":"2016-09-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":" /** {@code Predicate} that always evaluate to true */","lastModifiedDate":"2017-08-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":" Predicate\u003cPerson\u003e PREDICATE_SHOW_ALL_PERSONS \u003d unused -\u003e true;","lastModifiedDate":"2018-01-10"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Replaces user prefs data with the data in {@code userPrefs}.","lastModifiedDate":"2018-12-06"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":" void setUserPrefs(ReadOnlyUserPrefs userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Returns the user prefs.","lastModifiedDate":"2018-11-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" ReadOnlyUserPrefs getUserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" void setAddressBookFilePath(Path addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Replaces address book data with the data in {@code addressBook}.","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" void setAddressBook(ReadOnlyAddressBook addressBook);","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":52,"author":{"gitId":"-"},"content":" /** Returns the AddressBook */","lastModifiedDate":"2016-09-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2016-09-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Returns true if a person with the same identity as {@code person} exists in the address book.","lastModifiedDate":"2018-08-06"},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":58,"author":{"gitId":"-"},"content":" boolean hasPerson(Person person);","lastModifiedDate":"2018-08-06"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * Deletes the given person.","lastModifiedDate":"2018-08-07"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * The person must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":64,"author":{"gitId":"-"},"content":" void deletePerson(Person target);","lastModifiedDate":"2018-08-07"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":66,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":67,"author":{"gitId":"-"},"content":" * Adds the given person.","lastModifiedDate":"2018-08-07"},{"lineNumber":68,"author":{"gitId":"-"},"content":" * {@code person} must not already exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":69,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":70,"author":{"gitId":"-"},"content":" void addPerson(Person person);","lastModifiedDate":"2018-08-07"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Replaces the given person {@code target} with {@code editedPerson}.","lastModifiedDate":"2017-06-07"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":75,"author":{"gitId":"-"},"content":" * The person identity of {@code editedPerson} must not be the same as another existing person in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":76,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" void setPerson(Person target, Person editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" /** Returns an unmodifiable view of the filtered person list */","lastModifiedDate":"2017-09-01"},{"lineNumber":80,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":82,"author":{"gitId":"CJerrong"},"content":" ObservableList\u003cPerson\u003e getFilteredVolunteerList();","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"CJerrong"},"content":" ObservableList\u003cPerson\u003e getFilteredBefriendeeList();","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"CJerrong"},"content":" Person getPersonFromID(int i);","lastModifiedDate":"2024-03-21"},{"lineNumber":86,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-05"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * Updates the filter of the filtered person list to filter by the given {@code predicate}.","lastModifiedDate":"2017-08-05"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2017-08-05"},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05"},{"lineNumber":91,"author":{"gitId":"-"},"content":" void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate);","lastModifiedDate":"2018-01-10"},{"lineNumber":92,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"CJerrong":5,"chaaaaun":3,"-":84}},{"path":"src/main/java/scrolls/elder/model/ModelManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.model;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-08-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2016-08-26"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.core.GuiSettings;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.core.LogsCenter;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.util.CollectionUtil;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Person;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Represents the in-memory model of the address book data.","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class ModelManager implements Model {","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ModelManager.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final AddressBook addressBook;","lastModifiedDate":"2019-01-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final UserPrefs userPrefs;","lastModifiedDate":"2018-12-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final FilteredList\u003cPerson\u003e filteredPersons;","lastModifiedDate":"2018-01-10"},{"lineNumber":25,"author":{"gitId":"CJerrong"},"content":" private final FilteredList\u003cPerson\u003e filteredVolunteers;","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"CJerrong"},"content":" private final FilteredList\u003cPerson\u003e filteredBefriendees;","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Initializes a ModelManager with the given addressBook and userPrefs.","lastModifiedDate":"2016-12-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public ModelManager(ReadOnlyAddressBook addressBook, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":32,"author":{"gitId":"chaaaaun"},"content":" CollectionUtil.requireAllNonNull(addressBook, userPrefs);","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" logger.fine(\"Initializing with address book: \" + addressBook + \" and user prefs \" + userPrefs);","lastModifiedDate":"2016-12-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.addressBook \u003d new AddressBook(addressBook);","lastModifiedDate":"2019-01-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":38,"author":{"gitId":"-"},"content":" filteredPersons \u003d new FilteredList\u003c\u003e(this.addressBook.getPersonList());","lastModifiedDate":"2019-01-25"},{"lineNumber":39,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"CJerrong"},"content":" filteredVolunteers \u003d new FilteredList\u003c\u003e(this.addressBook.getPersonList(), person -\u003e person.isVolunteer());","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"CJerrong"},"content":" filteredBefriendees \u003d new FilteredList\u003c\u003e(this.addressBook.getPersonList(), person -\u003e !(person.isVolunteer()));","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public ModelManager() {","lastModifiedDate":"2016-09-22"},{"lineNumber":46,"author":{"gitId":"chaaaaun"},"content":" this(new AddressBook(0), new UserPrefs());","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d UserPrefs \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":53,"author":{"gitId":"-"},"content":" requireNonNull(userPrefs);","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" this.userPrefs.resetData(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return userPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return userPrefs.getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return userPrefs.getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d AddressBook \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook addressBook) {","lastModifiedDate":"2018-11-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" this.addressBook.resetData(addressBook);","lastModifiedDate":"2019-01-25"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2016-09-21"},{"lineNumber":93,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2019-01-25"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":98,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":99,"author":{"gitId":"-"},"content":" return addressBook.hasPerson(person);","lastModifiedDate":"2019-01-25"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":103,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-15"},{"lineNumber":104,"author":{"gitId":"-"},"content":" addressBook.removePerson(target);","lastModifiedDate":"2019-01-25"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":109,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2019-01-25"},{"lineNumber":110,"author":{"gitId":"-"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26"},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":115,"author":{"gitId":"chaaaaun"},"content":" CollectionUtil.requireAllNonNull(target, editedPerson);","lastModifiedDate":"2024-03-12"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":" addressBook.setPerson(target, editedPerson);","lastModifiedDate":"2019-01-25"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Filtered Person List Accessors \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2016-10-12"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19"},{"lineNumber":123,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the list of {@code Person} backed by the internal list of","lastModifiedDate":"2018-01-10"},{"lineNumber":124,"author":{"gitId":"-"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2018-06-11"},{"lineNumber":125,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19"},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":127,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":128,"author":{"gitId":"-"},"content":" return filteredPersons;","lastModifiedDate":"2018-12-09"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":131,"author":{"gitId":"CJerrong"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":132,"author":{"gitId":"CJerrong"},"content":" public ObservableList\u003cPerson\u003e getFilteredVolunteerList() {","lastModifiedDate":"2024-03-20"},{"lineNumber":133,"author":{"gitId":"CJerrong"},"content":" return filteredVolunteers;","lastModifiedDate":"2024-03-20"},{"lineNumber":134,"author":{"gitId":"CJerrong"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":135,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":136,"author":{"gitId":"CJerrong"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":137,"author":{"gitId":"CJerrong"},"content":" public ObservableList\u003cPerson\u003e getFilteredBefriendeeList() {","lastModifiedDate":"2024-03-20"},{"lineNumber":138,"author":{"gitId":"CJerrong"},"content":" return filteredBefriendees;","lastModifiedDate":"2024-03-20"},{"lineNumber":139,"author":{"gitId":"CJerrong"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":140,"author":{"gitId":"CJerrong"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":141,"author":{"gitId":"CJerrong"},"content":" public Person getPersonFromID(int i) {","lastModifiedDate":"2024-03-21"},{"lineNumber":142,"author":{"gitId":"CJerrong"},"content":" return addressBook.getPersonFromID(i);","lastModifiedDate":"2024-03-21"},{"lineNumber":143,"author":{"gitId":"CJerrong"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":144,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":145,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":146,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10"},{"lineNumber":147,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05"},{"lineNumber":148,"author":{"gitId":"-"},"content":" filteredPersons.setPredicate(predicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":149,"author":{"gitId":"CJerrong"},"content":" filteredVolunteers.setPredicate(person -\u003e predicate.test(person) \u0026\u0026 person.isVolunteer());","lastModifiedDate":"2024-03-20"},{"lineNumber":150,"author":{"gitId":"CJerrong"},"content":" filteredBefriendees.setPredicate(person -\u003e predicate.test(person) \u0026\u0026 !(person.isVolunteer()));","lastModifiedDate":"2024-03-20"},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":153,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-31"},{"lineNumber":154,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13"},{"lineNumber":155,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":156,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31"},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":159,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31"},{"lineNumber":160,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":161,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-31"},{"lineNumber":162,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":164,"author":{"gitId":"-"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":165,"author":{"gitId":"-"},"content":" return addressBook.equals(otherModelManager.addressBook)","lastModifiedDate":"2023-07-13"},{"lineNumber":166,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13"},{"lineNumber":167,"author":{"gitId":"-"},"content":" \u0026\u0026 filteredPersons.equals(otherModelManager.filteredPersons);","lastModifiedDate":"2023-07-13"},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":170,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"CJerrong":22,"chaaaaun":8,"-":140}},{"path":"src/main/java/scrolls/elder/model/ReadOnlyAddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.model;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Person;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * Unmodifiable view of an address book","lastModifiedDate":"2016-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public interface ReadOnlyAddressBook {","lastModifiedDate":"2019-01-25"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":" * Returns the current ID counter.","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"chaaaaun"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"chaaaaun"},"content":" int getGlobalId();","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the persons list.","lastModifiedDate":"2016-12-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * This list will not contain any duplicate persons.","lastModifiedDate":"2016-12-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getPersonList();","lastModifiedDate":"2018-01-10"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"chaaaaun":6,"-":15}},{"path":"src/main/java/scrolls/elder/model/ReadOnlyUserPrefs.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.model;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":5,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.core.GuiSettings;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-11-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Unmodifiable view of user prefs.","lastModifiedDate":"2018-11-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public interface ReadOnlyUserPrefs {","lastModifiedDate":"2018-11-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-11-27"}],"authorContributionMap":{"chaaaaun":2,"-":14}},{"path":"src/main/java/scrolls/elder/model/UserPrefs.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.model;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2016-09-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.core.GuiSettings;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Represents User\u0027s preferences.","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class UserPrefs implements ReadOnlyUserPrefs {","lastModifiedDate":"2018-11-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" private GuiSettings guiSettings \u003d new GuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":" private Path addressBookFilePath \u003d Paths.get(\"data\" , \"addressbook.json\");","lastModifiedDate":"2018-11-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-06"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Creates a {@code UserPrefs} with default values.","lastModifiedDate":"2018-12-06"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-06"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public UserPrefs() {}","lastModifiedDate":"2018-12-06"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Creates a {@code UserPrefs} with the prefs in {@code userPrefs}.","lastModifiedDate":"2018-12-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public UserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":" this();","lastModifiedDate":"2018-12-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":" resetData(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Resets the existing data of this {@code UserPrefs} with {@code newUserPrefs}.","lastModifiedDate":"2018-12-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-06"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public void resetData(ReadOnlyUserPrefs newUserPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":36,"author":{"gitId":"-"},"content":" requireNonNull(newUserPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":37,"author":{"gitId":"-"},"content":" setGuiSettings(newUserPrefs.getGuiSettings());","lastModifiedDate":"2018-12-06"},{"lineNumber":38,"author":{"gitId":"-"},"content":" setAddressBookFilePath(newUserPrefs.getAddressBookFilePath());","lastModifiedDate":"2018-12-06"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-06"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return guiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" this.guiSettings \u003d guiSettings;","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-04-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return addressBookFilePath;","lastModifiedDate":"2017-02-25"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-04-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" this.addressBookFilePath \u003d addressBookFilePath;","lastModifiedDate":"2017-02-25"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-25"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2016-09-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2016-09-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" if (!(other instanceof UserPrefs)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2016-09-24"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":" UserPrefs otherUserPrefs \u003d (UserPrefs) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return guiSettings.equals(otherUserPrefs.guiSettings)","lastModifiedDate":"2023-07-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" \u0026\u0026 addressBookFilePath.equals(otherUserPrefs.addressBookFilePath);","lastModifiedDate":"2023-07-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return Objects.hash(guiSettings, addressBookFilePath);","lastModifiedDate":"2018-08-09"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-09-24"},{"lineNumber":82,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-02-25"},{"lineNumber":83,"author":{"gitId":"-"},"content":" sb.append(\"Gui Settings : \" + guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":" sb.append(\"\\nLocal data file location : \" + addressBookFilePath);","lastModifiedDate":"2017-02-25"},{"lineNumber":85,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-02-25"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"chaaaaun":2,"-":86}},{"path":"src/main/java/scrolls/elder/model/person/Address.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.model.person;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.util.AppUtil;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Represents a Person\u0027s address in the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidAddress(String)}","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class Address {","lastModifiedDate":"2016-09-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Addresses can take any values, and it should not be blank\";","lastModifiedDate":"2018-09-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2017-01-16"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2017-01-16"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2017-01-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d \"[^\\\\s].*\";","lastModifiedDate":"2018-09-22"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public final String value;","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Constructs an {@code Address}.","lastModifiedDate":"2017-05-30"},{"lineNumber":25,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * @param address A valid address.","lastModifiedDate":"2017-05-30"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public Address(String address) {","lastModifiedDate":"2017-05-30"},{"lineNumber":29,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-15"},{"lineNumber":30,"author":{"gitId":"chaaaaun"},"content":" AppUtil.checkArgument(isValidAddress(address), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" value \u003d address;","lastModifiedDate":"2018-08-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid email.","lastModifiedDate":"2018-04-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static boolean isValidAddress(String test) {","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" return value;","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" if (!(other instanceof Address)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" Address otherAddress \u003d (Address) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return value.equals(otherAddress.value);","lastModifiedDate":"2023-07-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return value.hashCode();","lastModifiedDate":"2016-08-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"chaaaaun":4,"-":62}},{"path":"src/main/java/scrolls/elder/model/person/Befriendee.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"CJerrong"},"content":"package scrolls.elder.model.person;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"gerteck"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"CJerrong"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-15"},{"lineNumber":4,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"CJerrong"},"content":"import scrolls.elder.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-15"},{"lineNumber":6,"author":{"gitId":"CJerrong"},"content":"import scrolls.elder.model.tag.Tag;","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"CJerrong"},"content":"/**","lastModifiedDate":"2024-03-15"},{"lineNumber":9,"author":{"gitId":"CJerrong"},"content":" * Represents a Befriendee in the address book.","lastModifiedDate":"2024-03-15"},{"lineNumber":10,"author":{"gitId":"CJerrong"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2024-03-15"},{"lineNumber":11,"author":{"gitId":"CJerrong"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":12,"author":{"gitId":"CJerrong"},"content":"public class Befriendee extends Person {","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"CJerrong"},"content":" public Befriendee(Name name, Phone phone, Email email, Address address, Set\u003cTag\u003e tags,","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"CJerrong"},"content":" Optional\u003cName\u003e pairedWithName, Optional\u003cInteger\u003e pairedWithID) {","lastModifiedDate":"2024-03-22"},{"lineNumber":15,"author":{"gitId":"CJerrong"},"content":" super(name, phone, email, address, tags, new Role(\"befriendee\"), pairedWithName, pairedWithID);","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"CJerrong"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"CJerrong"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"CJerrong"},"content":" public boolean isVolunteer() {","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"CJerrong"},"content":" return false;","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"CJerrong"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"CJerrong"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":24,"author":{"gitId":"gerteck"},"content":" public Role getRole() {","lastModifiedDate":"2024-03-15"},{"lineNumber":25,"author":{"gitId":"gerteck"},"content":" return this.role;","lastModifiedDate":"2024-03-15"},{"lineNumber":26,"author":{"gitId":"CJerrong"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":27,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":28,"author":{"gitId":"CJerrong"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"CJerrong"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"CJerrong"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"CJerrong"},"content":" return true;","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"CJerrong"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"CJerrong"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"CJerrong"},"content":" if (!(other instanceof Befriendee)) {","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"CJerrong"},"content":" return false;","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"CJerrong"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"CJerrong"},"content":" Befriendee otherBefriendee \u003d (Befriendee) other;","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"CJerrong"},"content":" return name.equals(otherBefriendee.name)","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"CJerrong"},"content":" \u0026\u0026 phone.equals(otherBefriendee.phone)","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"CJerrong"},"content":" \u0026\u0026 email.equals(otherBefriendee.email)","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"CJerrong"},"content":" \u0026\u0026 address.equals(otherBefriendee.address)","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"soons1"},"content":" \u0026\u0026 tags.equals(otherBefriendee.tags)","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"CJerrong"},"content":" \u0026\u0026 pairedWithName.equals(otherBefriendee.pairedWithName)","lastModifiedDate":"2024-03-22"},{"lineNumber":46,"author":{"gitId":"CJerrong"},"content":" \u0026\u0026 pairedWithID.equals(otherBefriendee.pairedWithID);","lastModifiedDate":"2024-03-22"},{"lineNumber":47,"author":{"gitId":"CJerrong"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":49,"author":{"gitId":"CJerrong"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":50,"author":{"gitId":"CJerrong"},"content":" public String toString() {","lastModifiedDate":"2024-03-15"},{"lineNumber":51,"author":{"gitId":"CJerrong"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-15"},{"lineNumber":52,"author":{"gitId":"CJerrong"},"content":" .add(\"name\", name)","lastModifiedDate":"2024-03-15"},{"lineNumber":53,"author":{"gitId":"CJerrong"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2024-03-15"},{"lineNumber":54,"author":{"gitId":"CJerrong"},"content":" .add(\"email\", email)","lastModifiedDate":"2024-03-15"},{"lineNumber":55,"author":{"gitId":"CJerrong"},"content":" .add(\"address\", address)","lastModifiedDate":"2024-03-15"},{"lineNumber":56,"author":{"gitId":"CJerrong"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2024-03-15"},{"lineNumber":57,"author":{"gitId":"gerteck"},"content":" .add(\"role\", role)","lastModifiedDate":"2024-03-15"},{"lineNumber":58,"author":{"gitId":"CJerrong"},"content":" .add(\"pairedWithName\", pairedWithName.orElse(Name.getNone()))","lastModifiedDate":"2024-03-22"},{"lineNumber":59,"author":{"gitId":"CJerrong"},"content":" .add(\"pairedWithID\", pairedWithID.orElse(-1))","lastModifiedDate":"2024-03-22"},{"lineNumber":60,"author":{"gitId":"CJerrong"},"content":" .toString();","lastModifiedDate":"2024-03-15"},{"lineNumber":61,"author":{"gitId":"CJerrong"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":62,"author":{"gitId":"CJerrong"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"CJerrong":57,"soons1":1,"gerteck":4}},{"path":"src/main/java/scrolls/elder/model/person/Email.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.model.person;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.util.AppUtil;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Represents a Person\u0027s email in the address book.","lastModifiedDate":"2018-02-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidEmail(String)}","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class Email {","lastModifiedDate":"2016-09-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" private static final String SPECIAL_CHARACTERS \u003d \"+_.-\";","lastModifiedDate":"2021-07-20"},{"lineNumber":14,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Emails should be of the format local-part@domain \"","lastModifiedDate":"2018-09-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":" + \"and adhere to the following constraints:\\n\"","lastModifiedDate":"2018-02-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":" + \"1. The local-part should only contain alphanumeric characters and these special characters, excluding \"","lastModifiedDate":"2018-02-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":" + \"the parentheses, (\" + SPECIAL_CHARACTERS + \"). The local-part may not start or end with any special \"","lastModifiedDate":"2021-07-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":" + \"characters.\\n\"","lastModifiedDate":"2021-07-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":" + \"2. This is followed by a \u0027@\u0027 and then a domain name. The domain name is made up of domain labels \"","lastModifiedDate":"2021-07-20"},{"lineNumber":20,"author":{"gitId":"-"},"content":" + \"separated by periods.\\n\"","lastModifiedDate":"2021-07-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":" + \"The domain name must:\\n\"","lastModifiedDate":"2018-02-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":" + \" - end with a domain label at least 2 characters long\\n\"","lastModifiedDate":"2021-07-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":" + \" - have each domain label start and end with alphanumeric characters\\n\"","lastModifiedDate":"2021-07-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":" + \" - have each domain label consist of alphanumeric characters, separated only by hyphens, if any.\";","lastModifiedDate":"2021-07-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":" // alphanumeric and special characters","lastModifiedDate":"2018-02-09"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String ALPHANUMERIC_NO_UNDERSCORE \u003d \"[^\\\\W_]+\"; // alphanumeric characters except underscore","lastModifiedDate":"2021-07-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String LOCAL_PART_REGEX \u003d \"^\" + ALPHANUMERIC_NO_UNDERSCORE + \"([\" + SPECIAL_CHARACTERS + \"]\"","lastModifiedDate":"2021-07-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":" + ALPHANUMERIC_NO_UNDERSCORE + \")*\";","lastModifiedDate":"2021-07-20"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private static final String DOMAIN_PART_REGEX \u003d ALPHANUMERIC_NO_UNDERSCORE","lastModifiedDate":"2021-07-20"},{"lineNumber":30,"author":{"gitId":"-"},"content":" + \"(-\" + ALPHANUMERIC_NO_UNDERSCORE + \")*\";","lastModifiedDate":"2021-07-20"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String DOMAIN_LAST_PART_REGEX \u003d \"(\" + DOMAIN_PART_REGEX + \"){2,}$\"; // At least two chars","lastModifiedDate":"2021-07-20"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final String DOMAIN_REGEX \u003d \"(\" + DOMAIN_PART_REGEX + \"\\\\.)*\" + DOMAIN_LAST_PART_REGEX;","lastModifiedDate":"2021-07-20"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d LOCAL_PART_REGEX + \"@\" + DOMAIN_REGEX;","lastModifiedDate":"2021-07-20"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public final String value;","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Constructs an {@code Email}.","lastModifiedDate":"2017-05-30"},{"lineNumber":39,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * @param email A valid email address.","lastModifiedDate":"2017-05-30"},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public Email(String email) {","lastModifiedDate":"2017-05-30"},{"lineNumber":43,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-15"},{"lineNumber":44,"author":{"gitId":"chaaaaun"},"content":" AppUtil.checkArgument(isValidEmail(email), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" value \u003d email;","lastModifiedDate":"2018-08-14"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Returns if a given string is a valid email.","lastModifiedDate":"2018-04-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static boolean isValidEmail(String test) {","lastModifiedDate":"2016-08-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return value;","lastModifiedDate":"2016-08-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" if (!(other instanceof Email)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" Email otherEmail \u003d (Email) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return value.equals(otherEmail.value);","lastModifiedDate":"2023-07-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return value.hashCode();","lastModifiedDate":"2016-08-24"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"chaaaaun":4,"-":76}},{"path":"src/main/java/scrolls/elder/model/person/Name.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.model.person;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.util.AppUtil;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Represents a Person\u0027s name in the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidName(String)}","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class Name {","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2018-09-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \"Names should only contain alphanumeric characters and spaces, and it should not be blank\";","lastModifiedDate":"2018-04-04"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":16,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2017-01-16"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2017-01-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2017-01-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-16"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d \"[\\\\p{Alnum}][\\\\p{Alnum} ]*\";","lastModifiedDate":"2018-09-22"},{"lineNumber":21,"author":{"gitId":"soons1"},"content":" private static final Name NONE \u003d new Name(\"None\");","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public final String fullName;","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Constructs a {@code Name}.","lastModifiedDate":"2017-05-30"},{"lineNumber":27,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * @param name A valid name.","lastModifiedDate":"2017-05-30"},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public Name(String name) {","lastModifiedDate":"2017-05-30"},{"lineNumber":31,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-15"},{"lineNumber":32,"author":{"gitId":"chaaaaun"},"content":" AppUtil.checkArgument(isValidName(name), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" fullName \u003d name;","lastModifiedDate":"2018-08-14"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid name.","lastModifiedDate":"2018-04-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static boolean isValidName(String test) {","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"soons1"},"content":" public static Name getNone() {","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"soons1"},"content":" return NONE;","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"soons1"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" return fullName;","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" if (!(other instanceof Name)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" Name otherName \u003d (Name) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return fullName.equals(otherName.fullName);","lastModifiedDate":"2023-07-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return fullName.hashCode();","lastModifiedDate":"2016-08-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":72,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"soons1":4,"chaaaaun":4,"-":64}},{"path":"src/main/java/scrolls/elder/model/person/NameContainsKeywordsPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.model.person;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":6,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.util.StringUtil;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * Tests that a {@code Person}\u0027s {@code Name} matches any of the keywords given.","lastModifiedDate":"2018-01-10"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class NameContainsKeywordsPredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2018-01-10"},{"lineNumber":13,"author":{"gitId":"-"},"content":" private final List\u003cString\u003e keywords;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public NameContainsKeywordsPredicate(List\u003cString\u003e keywords) {","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":" this.keywords \u003d keywords;","lastModifiedDate":"2017-06-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public boolean test(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":21,"author":{"gitId":"-"},"content":" return keywords.stream()","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":" .anyMatch(keyword -\u003e StringUtil.containsWordIgnoreCase(person.getName().fullName, keyword));","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" if (!(other instanceof NameContainsKeywordsPredicate)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate otherNameContainsKeywordsPredicate \u003d (NameContainsKeywordsPredicate) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" return keywords.equals(otherNameContainsKeywordsPredicate.keywords);","lastModifiedDate":"2023-07-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this).add(\"keywords\", keywords).toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"chaaaaun":3,"-":41}},{"path":"src/main/java/scrolls/elder/model/person/Person.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.model.person;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-03-07"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-03-26"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"soons1"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.util.CollectionUtil;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.tag.Tag;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Represents a Person in the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2017-12-20"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"CJerrong"},"content":"public abstract class Person {","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19"},{"lineNumber":20,"author":{"gitId":"chaaaaun"},"content":" protected int id;","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"CJerrong"},"content":" protected final Name name;","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"CJerrong"},"content":" protected final Phone phone;","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"CJerrong"},"content":" protected final Email email;","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"gerteck"},"content":" protected final Role role;","lastModifiedDate":"2024-03-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19"},{"lineNumber":27,"author":{"gitId":"CJerrong"},"content":" protected final Address address;","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"CJerrong"},"content":" protected final Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"CJerrong"},"content":" protected final Optional\u003cName\u003e pairedWithName;","lastModifiedDate":"2024-03-22"},{"lineNumber":30,"author":{"gitId":"CJerrong"},"content":" protected final Optional\u003cInteger\u003e pairedWithID;","lastModifiedDate":"2024-03-22"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"gerteck"},"content":" public Person(Name name, Phone phone, Email email, Address address, Set\u003cTag\u003e tags, Role role,","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"CJerrong"},"content":" Optional\u003cName\u003e pairedWithName, Optional\u003cInteger\u003e pairedWithID) {","lastModifiedDate":"2024-03-22"},{"lineNumber":37,"author":{"gitId":"CJerrong"},"content":" CollectionUtil.requireAllNonNull(name, phone, email, address, tags, role, pairedWithName, pairedWithID);","lastModifiedDate":"2024-03-22"},{"lineNumber":38,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20"},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20"},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-12-20"},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":43,"author":{"gitId":"gerteck"},"content":" this.role \u003d role;","lastModifiedDate":"2024-03-15"},{"lineNumber":44,"author":{"gitId":"CJerrong"},"content":" this.pairedWithName \u003d pairedWithName;","lastModifiedDate":"2024-03-22"},{"lineNumber":45,"author":{"gitId":"CJerrong"},"content":" this.pairedWithID \u003d pairedWithID;","lastModifiedDate":"2024-03-22"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"chaaaaun"},"content":" public int getId() {","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"chaaaaun"},"content":" return id;","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"chaaaaun"},"content":" public void setId(int id) {","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"chaaaaun"},"content":" this.id \u003d id;","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2017-07-12"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2017-12-20"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public Address getAddress() {","lastModifiedDate":"2017-07-12"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return address;","lastModifiedDate":"2017-12-20"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07"},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":80,"author":{"gitId":"CJerrong"},"content":" public Optional\u003cName\u003e getPairedWithName() {","lastModifiedDate":"2024-03-22"},{"lineNumber":81,"author":{"gitId":"CJerrong"},"content":" return pairedWithName;","lastModifiedDate":"2024-03-22"},{"lineNumber":82,"author":{"gitId":"soons1"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":83,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":84,"author":{"gitId":"CJerrong"},"content":" public Optional\u003cInteger\u003e getPairedWithID() {","lastModifiedDate":"2024-03-21"},{"lineNumber":85,"author":{"gitId":"CJerrong"},"content":" return pairedWithID;","lastModifiedDate":"2024-03-21"},{"lineNumber":86,"author":{"gitId":"CJerrong"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":87,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":88,"author":{"gitId":"sdevih"},"content":" public boolean isPairPresent(Person person) {","lastModifiedDate":"2024-03-20"},{"lineNumber":89,"author":{"gitId":"CJerrong"},"content":" return person.getPairedWithName().isPresent();","lastModifiedDate":"2024-03-22"},{"lineNumber":90,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":91,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":92,"author":{"gitId":"soons1"},"content":" public boolean isPaired() {","lastModifiedDate":"2024-03-20"},{"lineNumber":93,"author":{"gitId":"CJerrong"},"content":" return pairedWithName.isPresent();","lastModifiedDate":"2024-03-22"},{"lineNumber":94,"author":{"gitId":"sdevih"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":95,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":96,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same name.","lastModifiedDate":"2020-12-18"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19"},{"lineNumber":102,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":105,"author":{"gitId":"chaaaaun"},"content":" return otherPerson !\u003d null \u0026\u0026 otherPerson.getId() \u003d\u003d this.getId();","lastModifiedDate":"2024-03-17"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":108,"author":{"gitId":"CJerrong"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":109,"author":{"gitId":"CJerrong"},"content":" * Returns true if person is a volunteer, and false if person is not a volunteer","lastModifiedDate":"2024-03-14"},{"lineNumber":110,"author":{"gitId":"CJerrong"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":111,"author":{"gitId":"CJerrong"},"content":" public abstract boolean isVolunteer();","lastModifiedDate":"2024-03-14"},{"lineNumber":112,"author":{"gitId":"gerteck"},"content":" public abstract Role getRole();","lastModifiedDate":"2024-03-15"},{"lineNumber":113,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":114,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":115,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19"},{"lineNumber":116,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":117,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":118,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":119,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":120,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10"},{"lineNumber":121,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":124,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10"},{"lineNumber":126,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":129,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10"},{"lineNumber":130,"author":{"gitId":"chaaaaun"},"content":" return id \u003d\u003d otherPerson.id","lastModifiedDate":"2024-03-17"},{"lineNumber":131,"author":{"gitId":"chaaaaun"},"content":" \u0026\u0026 name.equals(otherPerson.name)","lastModifiedDate":"2024-03-17"},{"lineNumber":132,"author":{"gitId":"-"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":133,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":134,"author":{"gitId":"-"},"content":" \u0026\u0026 address.equals(otherPerson.address)","lastModifiedDate":"2023-07-13"},{"lineNumber":135,"author":{"gitId":"gerteck"},"content":" \u0026\u0026 tags.equals(otherPerson.tags)","lastModifiedDate":"2024-03-15"},{"lineNumber":136,"author":{"gitId":"soons1"},"content":" \u0026\u0026 role.equals(otherPerson.role)","lastModifiedDate":"2024-03-17"},{"lineNumber":137,"author":{"gitId":"CJerrong"},"content":" \u0026\u0026 pairedWithName.equals(otherPerson.pairedWithName)","lastModifiedDate":"2024-03-22"},{"lineNumber":138,"author":{"gitId":"CJerrong"},"content":" \u0026\u0026 pairedWithID.equals(otherPerson.pairedWithID);","lastModifiedDate":"2024-03-22"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":141,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":142,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":143,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24"},{"lineNumber":144,"author":{"gitId":"CJerrong"},"content":" return Objects.hash(id, name, phone, email, address, tags, role, pairedWithName, pairedWithID);","lastModifiedDate":"2024-03-22"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":147,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":148,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":149,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":150,"author":{"gitId":"chaaaaun"},"content":" .add(\"id\", id)","lastModifiedDate":"2024-03-17"},{"lineNumber":151,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":156,"author":{"gitId":"gerteck"},"content":" .add(\"role\", role)","lastModifiedDate":"2024-03-16"},{"lineNumber":157,"author":{"gitId":"CJerrong"},"content":" .add(\"pairedWithName\", pairedWithName.orElse(Name.getNone()))","lastModifiedDate":"2024-03-22"},{"lineNumber":158,"author":{"gitId":"CJerrong"},"content":" .add(\"pairedWithID\", pairedWithID.orElse(-1))","lastModifiedDate":"2024-03-22"},{"lineNumber":159,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":162,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"soons1":6,"CJerrong":29,"gerteck":8,"chaaaaun":15,"-":101,"sdevih":3}},{"path":"src/main/java/scrolls/elder/model/person/Phone.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.model.person;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.util.AppUtil;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Represents a Person\u0027s phone number in the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidPhone(String)}","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class Phone {","lastModifiedDate":"2016-09-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2018-09-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \"Phone numbers should only contain numbers, and it should be at least 3 digits long\";","lastModifiedDate":"2018-04-04"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d \"\\\\d{3,}\";","lastModifiedDate":"2018-09-22"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public final String value;","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Constructs a {@code Phone}.","lastModifiedDate":"2017-05-30"},{"lineNumber":21,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * @param phone A valid phone number.","lastModifiedDate":"2017-05-30"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public Phone(String phone) {","lastModifiedDate":"2017-05-30"},{"lineNumber":25,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-15"},{"lineNumber":26,"author":{"gitId":"chaaaaun"},"content":" AppUtil.checkArgument(isValidPhone(phone), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" value \u003d phone;","lastModifiedDate":"2018-08-14"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid phone number.","lastModifiedDate":"2018-04-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static boolean isValidPhone(String test) {","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" return value;","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" if (!(other instanceof Phone)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" Phone otherPhone \u003d (Phone) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return value.equals(otherPhone.value);","lastModifiedDate":"2023-07-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return value.hashCode();","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"chaaaaun":4,"-":58}},{"path":"src/main/java/scrolls/elder/model/person/Role.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"gerteck"},"content":"package scrolls.elder.model.person;","lastModifiedDate":"2024-03-15"},{"lineNumber":2,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":3,"author":{"gitId":"gerteck"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-15"},{"lineNumber":4,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":5,"author":{"gitId":"gerteck"},"content":"import scrolls.elder.commons.util.AppUtil;","lastModifiedDate":"2024-03-15"},{"lineNumber":6,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":7,"author":{"gitId":"gerteck"},"content":"/**","lastModifiedDate":"2024-03-15"},{"lineNumber":8,"author":{"gitId":"gerteck"},"content":" * Represents a Person\u0027s name in the address book.","lastModifiedDate":"2024-03-15"},{"lineNumber":9,"author":{"gitId":"gerteck"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidRole(String)}","lastModifiedDate":"2024-03-15"},{"lineNumber":10,"author":{"gitId":"gerteck"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":11,"author":{"gitId":"gerteck"},"content":"public class Role {","lastModifiedDate":"2024-03-15"},{"lineNumber":12,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":13,"author":{"gitId":"gerteck"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-15"},{"lineNumber":14,"author":{"gitId":"gerteck"},"content":" \"Role should only be either \u0027volunteer\u0027 or befriendee\u0027, and it should not be blank.\";","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":16,"author":{"gitId":"gerteck"},"content":" /*","lastModifiedDate":"2024-03-15"},{"lineNumber":17,"author":{"gitId":"gerteck"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2024-03-15"},{"lineNumber":18,"author":{"gitId":"gerteck"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2024-03-15"},{"lineNumber":19,"author":{"gitId":"gerteck"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":20,"author":{"gitId":"gerteck"},"content":" public static final String VALIDATION_REGEX \u003d \"^befriendee|volunteer$\";","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":22,"author":{"gitId":"gerteck"},"content":" public final String value;","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":24,"author":{"gitId":"gerteck"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":25,"author":{"gitId":"gerteck"},"content":" * Constructs a {@code Name}.","lastModifiedDate":"2024-03-15"},{"lineNumber":26,"author":{"gitId":"gerteck"},"content":" *","lastModifiedDate":"2024-03-15"},{"lineNumber":27,"author":{"gitId":"gerteck"},"content":" * @param role A valid name.","lastModifiedDate":"2024-03-15"},{"lineNumber":28,"author":{"gitId":"gerteck"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":29,"author":{"gitId":"gerteck"},"content":" public Role(String role) {","lastModifiedDate":"2024-03-15"},{"lineNumber":30,"author":{"gitId":"gerteck"},"content":" requireNonNull(role);","lastModifiedDate":"2024-03-15"},{"lineNumber":31,"author":{"gitId":"gerteck"},"content":" AppUtil.checkArgument(isValidRole(role), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-15"},{"lineNumber":32,"author":{"gitId":"gerteck"},"content":" this.value \u003d role.toLowerCase();","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":34,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":35,"author":{"gitId":"gerteck"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":36,"author":{"gitId":"gerteck"},"content":" * Returns true if a given string is a valid name.","lastModifiedDate":"2024-03-15"},{"lineNumber":37,"author":{"gitId":"gerteck"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":38,"author":{"gitId":"gerteck"},"content":" public static boolean isValidRole(String test) {","lastModifiedDate":"2024-03-15"},{"lineNumber":39,"author":{"gitId":"gerteck"},"content":" return test.toLowerCase().matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":41,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":42,"author":{"gitId":"gerteck"},"content":" public boolean isVolunteer() {","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"gerteck"},"content":" return this.value.equals(\"volunteer\");","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":45,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":46,"author":{"gitId":"gerteck"},"content":" public boolean isBefriendee() {","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"gerteck"},"content":" return this.value.equals(\"befriendee\");","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":49,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":50,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":51,"author":{"gitId":"gerteck"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":52,"author":{"gitId":"gerteck"},"content":" public String toString() {","lastModifiedDate":"2024-03-15"},{"lineNumber":53,"author":{"gitId":"gerteck"},"content":" return value;","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":55,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":56,"author":{"gitId":"gerteck"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":57,"author":{"gitId":"gerteck"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-15"},{"lineNumber":58,"author":{"gitId":"gerteck"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-15"},{"lineNumber":59,"author":{"gitId":"gerteck"},"content":" return true;","lastModifiedDate":"2024-03-15"},{"lineNumber":60,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":61,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":62,"author":{"gitId":"gerteck"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-15"},{"lineNumber":63,"author":{"gitId":"gerteck"},"content":" if (!(other instanceof Role)) {","lastModifiedDate":"2024-03-15"},{"lineNumber":64,"author":{"gitId":"gerteck"},"content":" return false;","lastModifiedDate":"2024-03-15"},{"lineNumber":65,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":66,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":67,"author":{"gitId":"gerteck"},"content":" Role otherName \u003d (Role) other;","lastModifiedDate":"2024-03-15"},{"lineNumber":68,"author":{"gitId":"gerteck"},"content":" return value.equals(otherName.value);","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":70,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":71,"author":{"gitId":"gerteck"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":72,"author":{"gitId":"gerteck"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-15"},{"lineNumber":73,"author":{"gitId":"gerteck"},"content":" return value.hashCode();","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":75,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":76,"author":{"gitId":"gerteck"},"content":"}","lastModifiedDate":"2024-03-15"}],"authorContributionMap":{"gerteck":76}},{"path":"src/main/java/scrolls/elder/model/person/UniquePersonList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.model.person;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Iterator;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"CJerrong"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.util.CollectionUtil;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.exceptions.PersonNotFoundException;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * A list of persons that enforces uniqueness between its elements and does not allow nulls.","lastModifiedDate":"2016-09-22"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * A person is considered unique by comparing using {@code Person#isSamePerson(Person)}. As such, adding and updating of","lastModifiedDate":"2018-04-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * persons uses Person#isSamePerson(Person) for equality so as to ensure that the person being added or updated is","lastModifiedDate":"2018-04-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * unique in terms of identity in the UniquePersonList. However, the removal of a person uses Person#equals(Object) so","lastModifiedDate":"2018-04-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * as to ensure that the person with exactly the same fields will be removed.","lastModifiedDate":"2018-04-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Supports a minimal set of list operations.","lastModifiedDate":"2016-09-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @see Person#isSamePerson(Person)","lastModifiedDate":"2018-04-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class UniquePersonList implements Iterable\u003cPerson\u003e {","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final ObservableList\u003cPerson\u003e internalList \u003d FXCollections.observableArrayList();","lastModifiedDate":"2016-10-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private final ObservableList\u003cPerson\u003e internalUnmodifiableList \u003d","lastModifiedDate":"2018-12-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":" FXCollections.unmodifiableObservableList(internalList);","lastModifiedDate":"2018-12-09"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Returns true if the list contains an equivalent person as the given argument.","lastModifiedDate":"2016-09-22"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public boolean contains(Person toCheck) {","lastModifiedDate":"2018-01-10"},{"lineNumber":36,"author":{"gitId":"-"},"content":" requireNonNull(toCheck);","lastModifiedDate":"2017-05-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":" return internalList.stream().anyMatch(toCheck::isSamePerson);","lastModifiedDate":"2018-04-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Adds a person to the list.","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * The person must not already exist in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void add(Person toAdd) {","lastModifiedDate":"2018-08-07"},{"lineNumber":45,"author":{"gitId":"-"},"content":" requireNonNull(toAdd);","lastModifiedDate":"2017-05-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" if (contains(toAdd)) {","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" internalList.add(toAdd);","lastModifiedDate":"2018-01-10"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Replaces the person {@code target} in the list with {@code editedPerson}.","lastModifiedDate":"2017-06-07"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * {@code target} must exist in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * The person identity of {@code editedPerson} must not be the same as another existing person in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-07"},{"lineNumber":58,"author":{"gitId":"chaaaaun"},"content":" CollectionUtil.requireAllNonNull(target, editedPerson);","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" int index \u003d internalList.indexOf(target);","lastModifiedDate":"2017-06-07"},{"lineNumber":61,"author":{"gitId":"-"},"content":" if (index \u003d\u003d -1) {","lastModifiedDate":"2017-06-07"},{"lineNumber":62,"author":{"gitId":"-"},"content":" throw new PersonNotFoundException();","lastModifiedDate":"2017-06-07"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-07"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-07"},{"lineNumber":65,"author":{"gitId":"-"},"content":" if (!target.isSamePerson(editedPerson) \u0026\u0026 contains(editedPerson)) {","lastModifiedDate":"2018-04-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2016-12-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" internalList.set(index, editedPerson);","lastModifiedDate":"2018-01-10"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Removes the equivalent person from the list.","lastModifiedDate":"2016-08-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * The person must exist in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void remove(Person toRemove) {","lastModifiedDate":"2018-08-07"},{"lineNumber":77,"author":{"gitId":"-"},"content":" requireNonNull(toRemove);","lastModifiedDate":"2017-05-15"},{"lineNumber":78,"author":{"gitId":"-"},"content":" if (!internalList.remove(toRemove)) {","lastModifiedDate":"2018-02-28"},{"lineNumber":79,"author":{"gitId":"-"},"content":" throw new PersonNotFoundException();","lastModifiedDate":"2016-08-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void setPersons(UniquePersonList replacement) {","lastModifiedDate":"2016-10-19"},{"lineNumber":84,"author":{"gitId":"-"},"content":" requireNonNull(replacement);","lastModifiedDate":"2018-08-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":" internalList.setAll(replacement.internalList);","lastModifiedDate":"2018-08-14"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":88,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * Replaces the contents of this list with {@code persons}.","lastModifiedDate":"2018-08-07"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * {@code persons} must not contain duplicate persons.","lastModifiedDate":"2018-08-07"},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void setPersons(List\u003cPerson\u003e persons) {","lastModifiedDate":"2018-08-07"},{"lineNumber":93,"author":{"gitId":"chaaaaun"},"content":" CollectionUtil.requireAllNonNull(persons);","lastModifiedDate":"2024-03-12"},{"lineNumber":94,"author":{"gitId":"-"},"content":" if (!personsAreUnique(persons)) {","lastModifiedDate":"2018-04-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2018-01-21"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-21"},{"lineNumber":98,"author":{"gitId":"-"},"content":" internalList.setAll(persons);","lastModifiedDate":"2018-08-14"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":101,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-09-01"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * Returns the backing list as an unmodifiable {@code ObservableList}.","lastModifiedDate":"2017-09-01"},{"lineNumber":103,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-09-01"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e asUnmodifiableObservableList() {","lastModifiedDate":"2018-04-05"},{"lineNumber":105,"author":{"gitId":"-"},"content":" return internalUnmodifiableList;","lastModifiedDate":"2018-12-09"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":107,"author":{"gitId":"CJerrong"},"content":" public Person getPersonFromID(int i) {","lastModifiedDate":"2024-03-21"},{"lineNumber":108,"author":{"gitId":"CJerrong"},"content":" FilteredList\u003cPerson\u003e listByID \u003d internalList.filtered(person -\u003e person.getId() \u003d\u003d i);","lastModifiedDate":"2024-03-22"},{"lineNumber":109,"author":{"gitId":"CJerrong"},"content":" // TODO exception for duplicate id","lastModifiedDate":"2024-03-21"},{"lineNumber":110,"author":{"gitId":"CJerrong"},"content":" if (listByID.size() !\u003d 1) {","lastModifiedDate":"2024-03-21"},{"lineNumber":111,"author":{"gitId":"CJerrong"},"content":" System.out.println(\"List has duplicate id, should not be the case\");","lastModifiedDate":"2024-03-21"},{"lineNumber":112,"author":{"gitId":"CJerrong"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":113,"author":{"gitId":"CJerrong"},"content":" return listByID.get(0);","lastModifiedDate":"2024-03-21"},{"lineNumber":114,"author":{"gitId":"CJerrong"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":116,"author":{"gitId":"-"},"content":" public Iterator\u003cPerson\u003e iterator() {","lastModifiedDate":"2016-08-24"},{"lineNumber":117,"author":{"gitId":"-"},"content":" return internalList.iterator();","lastModifiedDate":"2016-08-24"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":120,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":121,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-21"},{"lineNumber":122,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":123,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":126,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":127,"author":{"gitId":"-"},"content":" if (!(other instanceof UniquePersonList)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":128,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":131,"author":{"gitId":"-"},"content":" UniquePersonList otherUniquePersonList \u003d (UniquePersonList) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":132,"author":{"gitId":"-"},"content":" return internalList.equals(otherUniquePersonList.internalList);","lastModifiedDate":"2023-07-13"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":136,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-21"},{"lineNumber":137,"author":{"gitId":"-"},"content":" return internalList.hashCode();","lastModifiedDate":"2016-09-21"},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":140,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-24"},{"lineNumber":141,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-24"},{"lineNumber":142,"author":{"gitId":"-"},"content":" return internalList.toString();","lastModifiedDate":"2019-02-24"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-24"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-24"},{"lineNumber":145,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":146,"author":{"gitId":"-"},"content":" * Returns true if {@code persons} contains only unique persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":147,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":148,"author":{"gitId":"-"},"content":" private boolean personsAreUnique(List\u003cPerson\u003e persons) {","lastModifiedDate":"2018-04-19"},{"lineNumber":149,"author":{"gitId":"-"},"content":" for (int i \u003d 0; i \u003c persons.size() - 1; i++) {","lastModifiedDate":"2018-04-19"},{"lineNumber":150,"author":{"gitId":"-"},"content":" for (int j \u003d i + 1; j \u003c persons.size(); j++) {","lastModifiedDate":"2018-04-19"},{"lineNumber":151,"author":{"gitId":"-"},"content":" if (persons.get(i).isSamePerson(persons.get(j))) {","lastModifiedDate":"2018-04-19"},{"lineNumber":152,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-04-19"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":156,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19"},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":158,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"CJerrong":9,"chaaaaun":6,"-":143}},{"path":"src/main/java/scrolls/elder/model/person/Volunteer.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"CJerrong"},"content":"package scrolls.elder.model.person;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"gerteck"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"CJerrong"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-15"},{"lineNumber":4,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"CJerrong"},"content":"import scrolls.elder.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-15"},{"lineNumber":6,"author":{"gitId":"CJerrong"},"content":"import scrolls.elder.model.tag.Tag;","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"CJerrong"},"content":"/**","lastModifiedDate":"2024-03-15"},{"lineNumber":9,"author":{"gitId":"CJerrong"},"content":" * Represents a Volunteer in the address book.","lastModifiedDate":"2024-03-15"},{"lineNumber":10,"author":{"gitId":"CJerrong"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2024-03-15"},{"lineNumber":11,"author":{"gitId":"CJerrong"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":12,"author":{"gitId":"CJerrong"},"content":"public class Volunteer extends Person {","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"CJerrong"},"content":" public Volunteer(Name name, Phone phone, Email email, Address address, Set\u003cTag\u003e tags,","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"CJerrong"},"content":" Optional\u003cName\u003e pairedWithName, Optional\u003cInteger\u003e pairedWithID) {","lastModifiedDate":"2024-03-22"},{"lineNumber":15,"author":{"gitId":"CJerrong"},"content":" super(name, phone, email, address, tags, new Role(\"volunteer\"), pairedWithName, pairedWithID);","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"CJerrong"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"CJerrong"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"CJerrong"},"content":" public boolean isVolunteer() {","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"CJerrong"},"content":" return true;","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"CJerrong"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"CJerrong"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":24,"author":{"gitId":"gerteck"},"content":" public Role getRole() {","lastModifiedDate":"2024-03-15"},{"lineNumber":25,"author":{"gitId":"gerteck"},"content":" return this.role;","lastModifiedDate":"2024-03-15"},{"lineNumber":26,"author":{"gitId":"CJerrong"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":27,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":28,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":29,"author":{"gitId":"CJerrong"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"CJerrong"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"CJerrong"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"CJerrong"},"content":" return true;","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"CJerrong"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"CJerrong"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"CJerrong"},"content":" if (!(other instanceof Volunteer)) {","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"CJerrong"},"content":" return false;","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"CJerrong"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"CJerrong"},"content":" Volunteer otherVolunteer \u003d (Volunteer) other;","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"CJerrong"},"content":" return name.equals(otherVolunteer.name)","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"CJerrong"},"content":" \u0026\u0026 phone.equals(otherVolunteer.phone)","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"CJerrong"},"content":" \u0026\u0026 email.equals(otherVolunteer.email)","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"CJerrong"},"content":" \u0026\u0026 address.equals(otherVolunteer.address)","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"soons1"},"content":" \u0026\u0026 tags.equals(otherVolunteer.tags)","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"CJerrong"},"content":" \u0026\u0026 pairedWithName.equals(otherVolunteer.pairedWithName)","lastModifiedDate":"2024-03-22"},{"lineNumber":47,"author":{"gitId":"CJerrong"},"content":" \u0026\u0026 pairedWithID.equals(otherVolunteer.pairedWithID);","lastModifiedDate":"2024-03-22"},{"lineNumber":48,"author":{"gitId":"CJerrong"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":49,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":50,"author":{"gitId":"CJerrong"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":51,"author":{"gitId":"CJerrong"},"content":" public String toString() {","lastModifiedDate":"2024-03-15"},{"lineNumber":52,"author":{"gitId":"CJerrong"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-15"},{"lineNumber":53,"author":{"gitId":"CJerrong"},"content":" .add(\"name\", name)","lastModifiedDate":"2024-03-15"},{"lineNumber":54,"author":{"gitId":"CJerrong"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2024-03-15"},{"lineNumber":55,"author":{"gitId":"CJerrong"},"content":" .add(\"email\", email)","lastModifiedDate":"2024-03-15"},{"lineNumber":56,"author":{"gitId":"CJerrong"},"content":" .add(\"address\", address)","lastModifiedDate":"2024-03-15"},{"lineNumber":57,"author":{"gitId":"CJerrong"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2024-03-15"},{"lineNumber":58,"author":{"gitId":"gerteck"},"content":" .add(\"role\", role)","lastModifiedDate":"2024-03-15"},{"lineNumber":59,"author":{"gitId":"CJerrong"},"content":" .add(\"pairedWithName\", pairedWithName.orElse(Name.getNone()))","lastModifiedDate":"2024-03-22"},{"lineNumber":60,"author":{"gitId":"CJerrong"},"content":" .add(\"pairedWithID\", pairedWithID.orElse(-1))","lastModifiedDate":"2024-03-22"},{"lineNumber":61,"author":{"gitId":"CJerrong"},"content":" .toString();","lastModifiedDate":"2024-03-15"},{"lineNumber":62,"author":{"gitId":"CJerrong"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":63,"author":{"gitId":"CJerrong"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"CJerrong":58,"soons1":1,"gerteck":4}},{"path":"src/main/java/scrolls/elder/model/person/exceptions/DuplicatePersonException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.model.person.exceptions;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-09"},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Signals that the operation will result in duplicate Persons (Persons are considered duplicates if they have the same","lastModifiedDate":"2018-04-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":" * identity).","lastModifiedDate":"2018-04-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-09"},{"lineNumber":7,"author":{"gitId":"-"},"content":"public class DuplicatePersonException extends RuntimeException {","lastModifiedDate":"2018-08-07"},{"lineNumber":8,"author":{"gitId":"-"},"content":" public DuplicatePersonException() {","lastModifiedDate":"2017-06-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":" super(\"Operation would result in duplicate persons\");","lastModifiedDate":"2017-06-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-09"}],"authorContributionMap":{"chaaaaun":1,"-":10}},{"path":"src/main/java/scrolls/elder/model/person/exceptions/PersonNotFoundException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.model.person.exceptions;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-09"},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Signals that the operation is unable to find the specified person.","lastModifiedDate":"2017-06-09"},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-09"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class PersonNotFoundException extends RuntimeException {}","lastModifiedDate":"2018-08-07"}],"authorContributionMap":{"chaaaaun":1,"-":5}},{"path":"src/main/java/scrolls/elder/model/tag/Tag.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.model.tag;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.util.AppUtil;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Represents a Tag in the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * Guarantees: immutable; name is valid as declared in {@link #isValidTagName(String)}","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class Tag {","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Tags names should be alphanumeric\";","lastModifiedDate":"2018-09-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d \"\\\\p{Alnum}+\";","lastModifiedDate":"2018-09-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public final String tagName;","lastModifiedDate":"2016-10-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Constructs a {@code Tag}.","lastModifiedDate":"2017-05-30"},{"lineNumber":20,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * @param tagName A valid tag name.","lastModifiedDate":"2017-05-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public Tag(String tagName) {","lastModifiedDate":"2017-05-30"},{"lineNumber":24,"author":{"gitId":"-"},"content":" requireNonNull(tagName);","lastModifiedDate":"2017-05-30"},{"lineNumber":25,"author":{"gitId":"chaaaaun"},"content":" AppUtil.checkArgument(isValidTagName(tagName), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" this.tagName \u003d tagName;","lastModifiedDate":"2017-05-30"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid tag name.","lastModifiedDate":"2016-09-22"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static boolean isValidTagName(String test) {","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" if (!(other instanceof Tag)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" Tag otherTag \u003d (Tag) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" return tagName.equals(otherTag.tagName);","lastModifiedDate":"2023-07-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return tagName.hashCode();","lastModifiedDate":"2016-08-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Format state as text for viewing.","lastModifiedDate":"2016-08-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return \u0027[\u0027 + tagName + \u0027]\u0027;","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"chaaaaun":4,"-":59}},{"path":"src/main/java/scrolls/elder/model/util/SampleDataUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.model.util;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21"},{"lineNumber":4,"author":{"gitId":"gerteck"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.AddressBook;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"CJerrong"},"content":"import scrolls.elder.model.person.Address;","lastModifiedDate":"2024-03-15"},{"lineNumber":11,"author":{"gitId":"CJerrong"},"content":"import scrolls.elder.model.person.Befriendee;","lastModifiedDate":"2024-03-15"},{"lineNumber":12,"author":{"gitId":"CJerrong"},"content":"import scrolls.elder.model.person.Email;","lastModifiedDate":"2024-03-15"},{"lineNumber":13,"author":{"gitId":"CJerrong"},"content":"import scrolls.elder.model.person.Name;","lastModifiedDate":"2024-03-15"},{"lineNumber":14,"author":{"gitId":"CJerrong"},"content":"import scrolls.elder.model.person.Person;","lastModifiedDate":"2024-03-15"},{"lineNumber":15,"author":{"gitId":"CJerrong"},"content":"import scrolls.elder.model.person.Phone;","lastModifiedDate":"2024-03-15"},{"lineNumber":16,"author":{"gitId":"CJerrong"},"content":"import scrolls.elder.model.person.Volunteer;","lastModifiedDate":"2024-03-15"},{"lineNumber":17,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.tag.Tag;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20"},{"lineNumber":23,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"soons1"},"content":" private static final Optional\u003cName\u003e pairedWithNone \u003d Optional.empty();","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"soons1"},"content":" private static final Optional\u003cInteger\u003e pairedWithNoID \u003d Optional.empty();","lastModifiedDate":"2024-03-22"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static Person[] getSamplePersons() {","lastModifiedDate":"2016-12-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" return new Person[] {","lastModifiedDate":"2016-12-20"},{"lineNumber":28,"author":{"gitId":"CJerrong"},"content":" new Volunteer(new Name(\"Alex Yeoh\"), new Phone(\"87438807\"), new Email(\"alexyeoh@example.com\"),","lastModifiedDate":"2024-03-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":" new Address(\"Blk 30 Geylang Street 29, #06-40\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":30,"author":{"gitId":"CJerrong"},"content":" getTagSet(\"friends\"), pairedWithNone, pairedWithNoID),","lastModifiedDate":"2024-03-22"},{"lineNumber":31,"author":{"gitId":"CJerrong"},"content":" new Volunteer(new Name(\"Bernice Yu\"), new Phone(\"99272758\"), new Email(\"berniceyu@example.com\"),","lastModifiedDate":"2024-03-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":" new Address(\"Blk 30 Lorong 3 Serangoon Gardens, #07-18\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":33,"author":{"gitId":"CJerrong"},"content":" getTagSet(\"colleagues\", \"friends\"), pairedWithNone, pairedWithNoID),","lastModifiedDate":"2024-03-22"},{"lineNumber":34,"author":{"gitId":"CJerrong"},"content":" new Volunteer(new Name(\"Charlotte Oliveiro\"), new Phone(\"93210283\"), new Email(\"charlotte@example.com\"),","lastModifiedDate":"2024-03-15"},{"lineNumber":35,"author":{"gitId":"-"},"content":" new Address(\"Blk 11 Ang Mo Kio Street 74, #11-04\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":36,"author":{"gitId":"CJerrong"},"content":" getTagSet(\"neighbours\"), pairedWithNone, pairedWithNoID),","lastModifiedDate":"2024-03-22"},{"lineNumber":37,"author":{"gitId":"CJerrong"},"content":" new Befriendee(new Name(\"David Li\"), new Phone(\"91031282\"), new Email(\"lidavid@example.com\"),","lastModifiedDate":"2024-03-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":" new Address(\"Blk 436 Serangoon Gardens Street 26, #16-43\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":39,"author":{"gitId":"CJerrong"},"content":" getTagSet(\"family\"), pairedWithNone, pairedWithNoID),","lastModifiedDate":"2024-03-22"},{"lineNumber":40,"author":{"gitId":"CJerrong"},"content":" new Befriendee(new Name(\"Irfan Ibrahim\"), new Phone(\"92492021\"), new Email(\"irfan@example.com\"),","lastModifiedDate":"2024-03-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":" new Address(\"Blk 47 Tampines Street 20, #17-35\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":42,"author":{"gitId":"CJerrong"},"content":" getTagSet(\"classmates\"), pairedWithNone, pairedWithNoID),","lastModifiedDate":"2024-03-22"},{"lineNumber":43,"author":{"gitId":"CJerrong"},"content":" new Befriendee(new Name(\"Roy Balakrishnan\"), new Phone(\"92624417\"), new Email(\"royb@example.com\"),","lastModifiedDate":"2024-03-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" new Address(\"Blk 45 Aljunied Street 85, #11-31\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":45,"author":{"gitId":"CJerrong"},"content":" getTagSet(\"colleagues\"), pairedWithNone, pairedWithNoID)","lastModifiedDate":"2024-03-22"},{"lineNumber":46,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20"},{"lineNumber":50,"author":{"gitId":"chaaaaun"},"content":" AddressBook sampleAb \u003d new AddressBook(0);","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20"},{"lineNumber":52,"author":{"gitId":"chaaaaun"},"content":" samplePerson.setId(sampleAb.getGlobalId());","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14"},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2017-05-30"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2018-01-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20"}],"authorContributionMap":{"CJerrong":19,"soons1":2,"gerteck":2,"chaaaaun":6,"-":38}},{"path":"src/main/java/scrolls/elder/storage/AddressBookStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.storage;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2016-09-24"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-09-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":7,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.AddressBook;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-24"},{"lineNumber":12,"author":{"gitId":"chaaaaun"},"content":" * Represents a storage for {@link AddressBook}.","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public interface AddressBookStorage {","lastModifiedDate":"2016-09-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Returns the file path of the data file.","lastModifiedDate":"2016-09-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-04-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Returns AddressBook data as a {@link ReadOnlyAddressBook}.","lastModifiedDate":"2016-09-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Returns {@code Optional.empty()} if storage file is not found.","lastModifiedDate":"2016-09-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * @throws DataLoadingException if loading the data from storage failed.","lastModifiedDate":"2023-06-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" Optional\u003cReadOnlyAddressBook\u003e readAddressBook() throws DataLoadingException;","lastModifiedDate":"2023-06-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-01"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * @see #getAddressBookFilePath()","lastModifiedDate":"2016-10-01"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":" Optional\u003cReadOnlyAddressBook\u003e readAddressBook(Path filePath) throws DataLoadingException;","lastModifiedDate":"2023-06-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Saves the given {@link ReadOnlyAddressBook} to the storage.","lastModifiedDate":"2016-09-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * @param addressBook cannot be null.","lastModifiedDate":"2016-09-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * @throws IOException if there was any problem writing to the file.","lastModifiedDate":"2016-09-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" void saveAddressBook(ReadOnlyAddressBook addressBook) throws IOException;","lastModifiedDate":"2016-09-28"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-01"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * @see #saveAddressBook(ReadOnlyAddressBook)","lastModifiedDate":"2016-10-01"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-01"},{"lineNumber":44,"author":{"gitId":"-"},"content":" void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath) throws IOException;","lastModifiedDate":"2018-04-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01"},{"lineNumber":46,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-24"}],"authorContributionMap":{"chaaaaun":5,"-":41}},{"path":"src/main/java/scrolls/elder/storage/JsonAdaptedPerson.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.storage;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"sdevih"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":13,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"gerteck"},"content":"import scrolls.elder.model.person.Address;","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"gerteck"},"content":"import scrolls.elder.model.person.Befriendee;","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"gerteck"},"content":"import scrolls.elder.model.person.Email;","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"gerteck"},"content":"import scrolls.elder.model.person.Name;","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"gerteck"},"content":"import scrolls.elder.model.person.Person;","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"gerteck"},"content":"import scrolls.elder.model.person.Phone;","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"gerteck"},"content":"import scrolls.elder.model.person.Role;","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"gerteck"},"content":"import scrolls.elder.model.person.Volunteer;","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.tag.Tag;","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Jackson-friendly version of {@link Person}.","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":"class JsonAdaptedPerson {","lastModifiedDate":"2018-12-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"chaaaaun"},"content":" private final String id;","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final String name;","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final String phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private final String address;","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"gerteck"},"content":" private final String role;","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedTag\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-01-09"},{"lineNumber":38,"author":{"gitId":"CJerrong"},"content":" private final String pairedWithName;","lastModifiedDate":"2024-03-22"},{"lineNumber":39,"author":{"gitId":"CJerrong"},"content":" private final String pairedWithID;","lastModifiedDate":"2024-03-22"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given person details.","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"chaaaaun"},"content":" public JsonAdaptedPerson(","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"chaaaaun"},"content":" @JsonProperty(\"id\") String id,","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"chaaaaun"},"content":" @JsonProperty(\"name\") String name,","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"chaaaaun"},"content":" @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"gerteck"},"content":" @JsonProperty(\"email\") String email,","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"gerteck"},"content":" @JsonProperty(\"address\") String address,","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"gerteck"},"content":" @JsonProperty(\"role\") String role,","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"sdevih"},"content":" @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags,","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"CJerrong"},"content":" @JsonProperty(\"pairedWithName\") String pairedWithName,","lastModifiedDate":"2024-03-22"},{"lineNumber":54,"author":{"gitId":"CJerrong"},"content":" @JsonProperty(\"pairedWithID\") String pairedWithID) {","lastModifiedDate":"2024-03-22"},{"lineNumber":55,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"chaaaaun"},"content":" this.id \u003d id;","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2018-08-13"},{"lineNumber":61,"author":{"gitId":"gerteck"},"content":" this.role \u003d role;","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"CJerrong"},"content":" this.pairedWithName \u003d pairedWithName;","lastModifiedDate":"2024-03-22"},{"lineNumber":63,"author":{"gitId":"-"},"content":" if (tags !\u003d null) {","lastModifiedDate":"2023-01-09"},{"lineNumber":64,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2023-01-09"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":66,"author":{"gitId":"CJerrong"},"content":" this.pairedWithID \u003d pairedWithID;","lastModifiedDate":"2024-03-22"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"chaaaaun"},"content":" id \u003d String.valueOf(source.getId());","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" phone \u003d source.getPhone().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" address \u003d source.getAddress().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"gerteck"},"content":" role \u003d source.getRole().value;","lastModifiedDate":"2024-03-16"},{"lineNumber":79,"author":{"gitId":"-"},"content":" tags.addAll(source.getTags().stream()","lastModifiedDate":"2023-01-09"},{"lineNumber":80,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2018-08-13"},{"lineNumber":82,"author":{"gitId":"CJerrong"},"content":" pairedWithName \u003d source.getPairedWithName().map(p -\u003e p.fullName).orElse(null);","lastModifiedDate":"2024-03-22"},{"lineNumber":83,"author":{"gitId":"CJerrong"},"content":" pairedWithID \u003d source.getPairedWithID().map(p -\u003e p.toString()).orElse(null);","lastModifiedDate":"2024-03-22"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" final List\u003cTag\u003e personTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":" for (JsonAdaptedTag tag : tags) {","lastModifiedDate":"2023-01-09"},{"lineNumber":94,"author":{"gitId":"-"},"content":" personTags.add(tag.toModelType());","lastModifiedDate":"2018-08-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"chaaaaun"},"content":" if (id \u003d\u003d null) {","lastModifiedDate":"2024-03-17"},{"lineNumber":98,"author":{"gitId":"chaaaaun"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, int.class.getSimpleName()));","lastModifiedDate":"2024-03-17"},{"lineNumber":99,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":100,"author":{"gitId":"chaaaaun"},"content":" final int modelId \u003d Integer.parseInt(id);","lastModifiedDate":"2024-03-17"},{"lineNumber":101,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":102,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":119,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":121,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":122,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":124,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":126,"author":{"gitId":"-"},"content":" if (address \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":127,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":129,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(address)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":130,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":132,"author":{"gitId":"-"},"content":" final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2018-08-13"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":134,"author":{"gitId":"CJerrong"},"content":" final Optional\u003cName\u003e modelPairedWithName;","lastModifiedDate":"2024-03-22"},{"lineNumber":135,"author":{"gitId":"CJerrong"},"content":" modelPairedWithName \u003d Optional.ofNullable(pairedWithName).map(Name::new);","lastModifiedDate":"2024-03-22"},{"lineNumber":136,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":137,"author":{"gitId":"CJerrong"},"content":" final Optional\u003cInteger\u003e modelPairedWithID;","lastModifiedDate":"2024-03-22"},{"lineNumber":138,"author":{"gitId":"CJerrong"},"content":" modelPairedWithID \u003d Optional.ofNullable(pairedWithID).map(i -\u003e Integer.parseInt(i));","lastModifiedDate":"2024-03-22"},{"lineNumber":139,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":140,"author":{"gitId":"gerteck"},"content":" Role modelRole;","lastModifiedDate":"2024-03-16"},{"lineNumber":141,"author":{"gitId":"gerteck"},"content":" if (role \u003d\u003d null) {","lastModifiedDate":"2024-03-16"},{"lineNumber":142,"author":{"gitId":"gerteck"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Role.class.getSimpleName()));","lastModifiedDate":"2024-03-16"},{"lineNumber":143,"author":{"gitId":"gerteck"},"content":" } else if (!Role.isValidRole(role)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":144,"author":{"gitId":"gerteck"},"content":" throw new IllegalValueException(Role.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-16"},{"lineNumber":145,"author":{"gitId":"gerteck"},"content":" } else {","lastModifiedDate":"2024-03-16"},{"lineNumber":146,"author":{"gitId":"gerteck"},"content":" modelRole \u003d new Role(role);","lastModifiedDate":"2024-03-16"},{"lineNumber":147,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":148,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(personTags);","lastModifiedDate":"2018-08-13"},{"lineNumber":149,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":150,"author":{"gitId":"chaaaaun"},"content":" Person p;","lastModifiedDate":"2024-03-21"},{"lineNumber":151,"author":{"gitId":"gerteck"},"content":" if (modelRole.isVolunteer()) {","lastModifiedDate":"2024-03-16"},{"lineNumber":152,"author":{"gitId":"CJerrong"},"content":" p \u003d new Volunteer(modelName, modelPhone, modelEmail, modelAddress, modelTags,","lastModifiedDate":"2024-03-22"},{"lineNumber":153,"author":{"gitId":"CJerrong"},"content":" modelPairedWithName, modelPairedWithID);","lastModifiedDate":"2024-03-22"},{"lineNumber":154,"author":{"gitId":"gerteck"},"content":" } else {","lastModifiedDate":"2024-03-16"},{"lineNumber":155,"author":{"gitId":"gerteck"},"content":" assert modelRole.isBefriendee();","lastModifiedDate":"2024-03-16"},{"lineNumber":156,"author":{"gitId":"CJerrong"},"content":" p \u003d new Befriendee(modelName, modelPhone, modelEmail, modelAddress, modelTags,","lastModifiedDate":"2024-03-22"},{"lineNumber":157,"author":{"gitId":"CJerrong"},"content":" modelPairedWithName, modelPairedWithID);","lastModifiedDate":"2024-03-22"},{"lineNumber":158,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":159,"author":{"gitId":"chaaaaun"},"content":" p.setId(modelId);","lastModifiedDate":"2024-03-17"},{"lineNumber":160,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":161,"author":{"gitId":"chaaaaun"},"content":" return p;","lastModifiedDate":"2024-03-21"},{"lineNumber":162,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":164,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"CJerrong":17,"gerteck":28,"chaaaaun":19,"-":97,"sdevih":3}},{"path":"src/main/java/scrolls/elder/storage/JsonAdaptedTag.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.storage;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonValue;","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.tag.Tag;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * Jackson-friendly version of {@link Tag}.","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"class JsonAdaptedTag {","lastModifiedDate":"2018-12-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":" private final String tagName;","lastModifiedDate":"2018-08-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonAdaptedTag} with the given {@code tagName}.","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public JsonAdaptedTag(String tagName) {","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":" this.tagName \u003d tagName;","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Converts a given {@code Tag} into this class for Jackson use.","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public JsonAdaptedTag(Tag source) {","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" tagName \u003d source.tagName;","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @JsonValue","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public String getTagName() {","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return tagName;","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted tag object into the model\u0027s {@code Tag} object.","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted tag.","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public Tag toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(tagName)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" return new Tag(tagName);","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"chaaaaun":3,"-":45}},{"path":"src/main/java/scrolls/elder/storage/JsonAddressBookStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.storage;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.core.LogsCenter;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.util.FileUtil;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.util.JsonUtil;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * A class to access AddressBook data stored as a json file on the hard disk.","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class JsonAddressBookStorage implements AddressBookStorage {","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(JsonAddressBookStorage.class);","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private Path filePath;","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public JsonAddressBookStorage(Path filePath) {","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" return filePath;","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public Optional\u003cReadOnlyAddressBook\u003e readAddressBook() throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":36,"author":{"gitId":"-"},"content":" return readAddressBook(filePath);","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Similar to {@link #readAddressBook()}.","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * @param filePath location of the data. Cannot be null.","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * @throws DataLoadingException if loading the data from storage failed.","lastModifiedDate":"2023-06-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public Optional\u003cReadOnlyAddressBook\u003e readAddressBook(Path filePath) throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":46,"author":{"gitId":"-"},"content":" requireNonNull(filePath);","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" Optional\u003cJsonSerializableAddressBook\u003e jsonAddressBook \u003d JsonUtil.readJsonFile(","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" filePath, JsonSerializableAddressBook.class);","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"chaaaaun"},"content":" if (jsonAddressBook.isEmpty()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return Optional.of(jsonAddressBook.get().toModelType());","lastModifiedDate":"2018-08-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" logger.info(\"Illegal values found in \" + filePath + \": \" + ive.getMessage());","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" throw new DataLoadingException(ive);","lastModifiedDate":"2023-06-14"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook) throws IOException {","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" saveAddressBook(addressBook, filePath);","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" * Similar to {@link #saveAddressBook(ReadOnlyAddressBook)}.","lastModifiedDate":"2018-08-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" * @param filePath location of the data. Cannot be null.","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath) throws IOException {","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" requireNonNull(addressBook);","lastModifiedDate":"2018-08-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" requireNonNull(filePath);","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" FileUtil.createIfMissing(filePath);","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" JsonUtil.saveJsonFile(new JsonSerializableAddressBook(addressBook), filePath);","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"chaaaaun":8,"-":72}},{"path":"src/main/java/scrolls/elder/storage/JsonSerializableAddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.storage;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonRootName;","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.AddressBook;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Person;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * An Immutable AddressBook that is serializable to JSON format.","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":"@JsonRootName(value \u003d \"addressbook\")","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"class JsonSerializableAddressBook {","lastModifiedDate":"2018-12-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"Persons list contains duplicate person(s).\";","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"chaaaaun"},"content":" private final int globalId;","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedPerson\u003e persons \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonSerializableAddressBook} with the given persons.","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"chaaaaun"},"content":" public JsonSerializableAddressBook(@JsonProperty(\"globalId\") String gid,","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"chaaaaun"},"content":" @JsonProperty(\"persons\") List\u003cJsonAdaptedPerson\u003e persons) {","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"chaaaaun"},"content":" this.globalId \u003d Integer.parseInt(gid);","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"-"},"content":" this.persons.addAll(persons);","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Converts a given {@code ReadOnlyAddressBook} into this class for Jackson use.","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * @param source future changes to this will not affect the created {@code JsonSerializableAddressBook}.","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public JsonSerializableAddressBook(ReadOnlyAddressBook source) {","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"chaaaaun"},"content":" globalId \u003d source.getGlobalId();","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"-"},"content":" persons.addAll(source.getPersonList().stream().map(JsonAdaptedPerson::new).collect(Collectors.toList()));","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Converts this address book into the model\u0027s {@code AddressBook} object.","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated.","lastModifiedDate":"2018-08-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public AddressBook toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"chaaaaun"},"content":" // We subtract the number of people from the globalId, as adding them back will increment the globalId","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"chaaaaun"},"content":" AddressBook addressBook \u003d new AddressBook(globalId - persons.size());","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"-"},"content":" for (JsonAdaptedPerson jsonAdaptedPerson : persons) {","lastModifiedDate":"2018-08-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" Person person \u003d jsonAdaptedPerson.toModelType();","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" if (addressBook.hasPerson(person)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2018-08-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"chaaaaun":12,"-":53}},{"path":"src/main/java/scrolls/elder/storage/JsonUserPrefsStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.storage;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.util.JsonUtil;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.ReadOnlyUserPrefs;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.UserPrefs;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * A class to access UserPrefs stored in the hard disk as a json file","lastModifiedDate":"2016-09-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class JsonUserPrefsStorage implements UserPrefsStorage {","lastModifiedDate":"2016-10-01"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" private Path filePath;","lastModifiedDate":"2018-04-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public JsonUserPrefsStorage(Path filePath) {","lastModifiedDate":"2018-04-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2016-09-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-02-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public Path getUserPrefsFilePath() {","lastModifiedDate":"2018-04-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":" return filePath;","lastModifiedDate":"2017-02-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-15"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public Optional\u003cUserPrefs\u003e readUserPrefs() throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":" return readUserPrefs(filePath);","lastModifiedDate":"2016-09-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Similar to {@link #readUserPrefs()}","lastModifiedDate":"2016-09-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * @param prefsFilePath location of the data. Cannot be null.","lastModifiedDate":"2016-09-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * @throws DataLoadingException if the file format is not as expected.","lastModifiedDate":"2023-06-14"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public Optional\u003cUserPrefs\u003e readUserPrefs(Path prefsFilePath) throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":39,"author":{"gitId":"-"},"content":" return JsonUtil.readJsonFile(prefsFilePath, UserPrefs.class);","lastModifiedDate":"2016-10-07"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-10-07"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void saveUserPrefs(ReadOnlyUserPrefs userPrefs) throws IOException {","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" JsonUtil.saveJsonFile(userPrefs, filePath);","lastModifiedDate":"2016-10-07"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-24"}],"authorContributionMap":{"chaaaaun":5,"-":42}},{"path":"src/main/java/scrolls/elder/storage/Storage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.storage;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.ReadOnlyUserPrefs;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.UserPrefs;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * API of the Storage component","lastModifiedDate":"2016-09-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public interface Storage extends AddressBookStorage, UserPrefsStorage {","lastModifiedDate":"2016-09-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Optional\u003cUserPrefs\u003e readUserPrefs() throws DataLoadingException;","lastModifiedDate":"2023-06-15"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" void saveUserPrefs(ReadOnlyUserPrefs userPrefs) throws IOException;","lastModifiedDate":"2018-11-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-04-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" Optional\u003cReadOnlyAddressBook\u003e readAddressBook() throws DataLoadingException;","lastModifiedDate":"2023-06-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" void saveAddressBook(ReadOnlyAddressBook addressBook) throws IOException;","lastModifiedDate":"2016-09-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-26"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"chaaaaun":5,"-":27}},{"path":"src/main/java/scrolls/elder/storage/StorageManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.storage;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.core.LogsCenter;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.ReadOnlyUserPrefs;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.UserPrefs;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Manages storage of AddressBook data in local storage.","lastModifiedDate":"2016-09-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class StorageManager implements Storage {","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(StorageManager.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private AddressBookStorage addressBookStorage;","lastModifiedDate":"2016-10-01"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private UserPrefsStorage userPrefsStorage;","lastModifiedDate":"2016-10-01"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Creates a {@code StorageManager} with the given {@code AddressBookStorage} and {@code UserPrefStorage}.","lastModifiedDate":"2020-05-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public StorageManager(AddressBookStorage addressBookStorage, UserPrefsStorage userPrefsStorage) {","lastModifiedDate":"2016-10-01"},{"lineNumber":27,"author":{"gitId":"-"},"content":" this.addressBookStorage \u003d addressBookStorage;","lastModifiedDate":"2016-10-01"},{"lineNumber":28,"author":{"gitId":"-"},"content":" this.userPrefsStorage \u003d userPrefsStorage;","lastModifiedDate":"2016-10-01"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d UserPrefs methods \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2016-09-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-02-15"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public Path getUserPrefsFilePath() {","lastModifiedDate":"2018-04-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" return userPrefsStorage.getUserPrefsFilePath();","lastModifiedDate":"2017-02-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public Optional\u003cUserPrefs\u003e readUserPrefs() throws DataLoadingException {","lastModifiedDate":"2023-06-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":" return userPrefsStorage.readUserPrefs();","lastModifiedDate":"2016-10-01"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void saveUserPrefs(ReadOnlyUserPrefs userPrefs) throws IOException {","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" userPrefsStorage.saveUserPrefs(userPrefs);","lastModifiedDate":"2016-10-01"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d AddressBook methods \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2016-09-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-04-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return addressBookStorage.getAddressBookFilePath();","lastModifiedDate":"2016-09-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public Optional\u003cReadOnlyAddressBook\u003e readAddressBook() throws DataLoadingException {","lastModifiedDate":"2023-06-15"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return readAddressBook(addressBookStorage.getAddressBookFilePath());","lastModifiedDate":"2016-10-01"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-10-01"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public Optional\u003cReadOnlyAddressBook\u003e readAddressBook(Path filePath) throws DataLoadingException {","lastModifiedDate":"2023-06-15"},{"lineNumber":63,"author":{"gitId":"-"},"content":" logger.fine(\"Attempting to read data from file: \" + filePath);","lastModifiedDate":"2016-10-01"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return addressBookStorage.readAddressBook(filePath);","lastModifiedDate":"2016-10-01"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook) throws IOException {","lastModifiedDate":"2016-09-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":" saveAddressBook(addressBook, addressBookStorage.getAddressBookFilePath());","lastModifiedDate":"2016-10-01"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01"},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-10-01"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":" logger.fine(\"Attempting to write to data file: \" + filePath);","lastModifiedDate":"2016-10-01"},{"lineNumber":75,"author":{"gitId":"-"},"content":" addressBookStorage.saveAddressBook(addressBook, filePath);","lastModifiedDate":"2016-10-01"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"chaaaaun":6,"-":72}},{"path":"src/main/java/scrolls/elder/storage/UserPrefsStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.storage;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2016-09-24"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-09-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":7,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.ReadOnlyUserPrefs;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.UserPrefs;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-24"},{"lineNumber":12,"author":{"gitId":"chaaaaun"},"content":" * Represents a storage for {@link UserPrefs}.","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public interface UserPrefsStorage {","lastModifiedDate":"2016-09-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-15"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Returns the file path of the UserPrefs data file.","lastModifiedDate":"2017-02-15"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-15"},{"lineNumber":19,"author":{"gitId":"-"},"content":" Path getUserPrefsFilePath();","lastModifiedDate":"2018-04-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-15"},{"lineNumber":21,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Returns UserPrefs data from storage.","lastModifiedDate":"2016-09-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Returns {@code Optional.empty()} if storage file is not found.","lastModifiedDate":"2016-09-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * @throws DataLoadingException if the loading of data from preference file failed.","lastModifiedDate":"2023-06-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" Optional\u003cUserPrefs\u003e readUserPrefs() throws DataLoadingException;","lastModifiedDate":"2023-06-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-24"},{"lineNumber":30,"author":{"gitId":"chaaaaun"},"content":" * Saves the given {@link ReadOnlyUserPrefs} to the storage.","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * @param userPrefs cannot be null.","lastModifiedDate":"2016-09-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * @throws IOException if there was any problem writing to the file.","lastModifiedDate":"2016-09-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" void saveUserPrefs(ReadOnlyUserPrefs userPrefs) throws IOException;","lastModifiedDate":"2018-11-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":36,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-24"}],"authorContributionMap":{"chaaaaun":6,"-":30}},{"path":"src/main/java/scrolls/elder/ui/CommandBox.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.ui;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-03-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-09-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.scene.control.TextField;","lastModifiedDate":"2016-09-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24"},{"lineNumber":7,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.Logic;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.commands.CommandResult;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * The UI component that is responsible for receiving user command inputs.","lastModifiedDate":"2017-08-16"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class CommandBox extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public static final String ERROR_STYLE_CLASS \u003d \"error\";","lastModifiedDate":"2017-02-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"CommandBox.fxml\";","lastModifiedDate":"2017-04-01"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final CommandExecutor commandExecutor;","lastModifiedDate":"2018-12-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-14"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private TextField commandTextField;","lastModifiedDate":"2016-09-14"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Creates a {@code CommandBox} with the given {@code CommandExecutor}.","lastModifiedDate":"2020-05-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public CommandBox(CommandExecutor commandExecutor) {","lastModifiedDate":"2019-01-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" this.commandExecutor \u003d commandExecutor;","lastModifiedDate":"2018-12-09"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // calls #setStyleToDefault() whenever there is a change to the text of the command box.","lastModifiedDate":"2017-06-28"},{"lineNumber":32,"author":{"gitId":"-"},"content":" commandTextField.textProperty().addListener((unused1, unused2, unused3) -\u003e setStyleToDefault());","lastModifiedDate":"2017-06-28"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-14"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Handles the Enter button pressed event.","lastModifiedDate":"2017-08-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-14"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private void handleCommandEntered() {","lastModifiedDate":"2018-04-01"},{"lineNumber":40,"author":{"gitId":"-"},"content":" String commandText \u003d commandTextField.getText();","lastModifiedDate":"2020-12-04"},{"lineNumber":41,"author":{"gitId":"-"},"content":" if (commandText.equals(\"\")) {","lastModifiedDate":"2020-12-04"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return;","lastModifiedDate":"2020-12-04"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-12-04"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-12-04"},{"lineNumber":45,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-02-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":" commandExecutor.execute(commandText);","lastModifiedDate":"2020-12-04"},{"lineNumber":47,"author":{"gitId":"-"},"content":" commandTextField.setText(\"\");","lastModifiedDate":"2016-09-14"},{"lineNumber":48,"author":{"gitId":"-"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2017-03-11"},{"lineNumber":49,"author":{"gitId":"-"},"content":" setStyleToIndicateCommandFailure();","lastModifiedDate":"2017-02-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-14"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-28"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-28"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Sets the command box style to use the default style.","lastModifiedDate":"2017-06-28"},{"lineNumber":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-28"},{"lineNumber":56,"author":{"gitId":"-"},"content":" private void setStyleToDefault() {","lastModifiedDate":"2017-06-28"},{"lineNumber":57,"author":{"gitId":"-"},"content":" commandTextField.getStyleClass().remove(ERROR_STYLE_CLASS);","lastModifiedDate":"2017-02-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-28"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-28"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * Sets the command box style to indicate a failed command.","lastModifiedDate":"2017-02-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-28"},{"lineNumber":63,"author":{"gitId":"-"},"content":" private void setStyleToIndicateCommandFailure() {","lastModifiedDate":"2017-02-05"},{"lineNumber":64,"author":{"gitId":"-"},"content":" ObservableList\u003cString\u003e styleClass \u003d commandTextField.getStyleClass();","lastModifiedDate":"2017-03-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":" if (styleClass.contains(ERROR_STYLE_CLASS)) {","lastModifiedDate":"2017-03-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return;","lastModifiedDate":"2017-03-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":" styleClass.add(ERROR_STYLE_CLASS);","lastModifiedDate":"2017-03-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-14"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":73,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * Represents a function that can execute commands.","lastModifiedDate":"2018-12-09"},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @FunctionalInterface","lastModifiedDate":"2018-12-09"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public interface CommandExecutor {","lastModifiedDate":"2018-12-09"},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2018-12-09"},{"lineNumber":80,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09"},{"lineNumber":81,"author":{"gitId":"chaaaaun"},"content":" * @see Logic#execute(String)","lastModifiedDate":"2024-03-12"},{"lineNumber":82,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":83,"author":{"gitId":"-"},"content":" CommandResult execute(String commandText) throws CommandException, ParseException;","lastModifiedDate":"2018-12-09"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":86,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"}],"authorContributionMap":{"chaaaaun":6,"-":80}},{"path":"src/main/java/scrolls/elder/ui/HelpWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.ui;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-12-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2019-08-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2019-08-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.input.Clipboard;","lastModifiedDate":"2019-08-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.input.ClipboardContent;","lastModifiedDate":"2019-08-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.core.LogsCenter;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Controller for a help page","lastModifiedDate":"2016-08-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class HelpWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-12-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String USERGUIDE_URL \u003d \"https://se-education.org/addressbook-level3/UserGuide.html\";","lastModifiedDate":"2019-08-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String HELP_MESSAGE \u003d \"Refer to the user guide: \" + USERGUIDE_URL;","lastModifiedDate":"2019-08-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(HelpWindow.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"HelpWindow.fxml\";","lastModifiedDate":"2016-09-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-12-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private Button copyButton;","lastModifiedDate":"2019-08-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-08-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2019-08-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Label helpMessage;","lastModifiedDate":"2019-08-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-12-01"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-12-01"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * @param root Stage to use as the root of the HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-12-01"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public HelpWindow(Stage root) {","lastModifiedDate":"2017-12-01"},{"lineNumber":36,"author":{"gitId":"-"},"content":" super(FXML, root);","lastModifiedDate":"2017-12-01"},{"lineNumber":37,"author":{"gitId":"-"},"content":" helpMessage.setText(HELP_MESSAGE);","lastModifiedDate":"2019-08-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-12-01"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-12-01"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public HelpWindow() {","lastModifiedDate":"2017-12-01"},{"lineNumber":44,"author":{"gitId":"-"},"content":" this(new Stage());","lastModifiedDate":"2017-12-01"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-01"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-01"},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Shows the help window.","lastModifiedDate":"2017-08-16"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * @throws IllegalStateException","lastModifiedDate":"2017-08-16"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * \u003cul\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * if this method is called on a thread other than the JavaFX Application Thread.","lastModifiedDate":"2017-08-16"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * if this method is called during animation or layout processing.","lastModifiedDate":"2017-08-16"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * if this method is called on the primary stage.","lastModifiedDate":"2017-08-16"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * if {@code dialogStage} is already showing.","lastModifiedDate":"2017-08-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * \u003c/ul\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void show() {","lastModifiedDate":"2016-08-18"},{"lineNumber":66,"author":{"gitId":"-"},"content":" logger.fine(\"Showing help page about the application.\");","lastModifiedDate":"2016-12-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":" getRoot().show();","lastModifiedDate":"2018-02-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" getRoot().centerOnScreen();","lastModifiedDate":"2019-08-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-15"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * Returns true if the help window is currently being shown.","lastModifiedDate":"2018-03-15"},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-15"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public boolean isShowing() {","lastModifiedDate":"2018-03-15"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return getRoot().isShowing();","lastModifiedDate":"2018-03-15"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Hides the help window.","lastModifiedDate":"2018-12-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void hide() {","lastModifiedDate":"2018-12-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":" getRoot().hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-15"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Focuses on the help window.","lastModifiedDate":"2018-03-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void focus() {","lastModifiedDate":"2018-03-15"},{"lineNumber":89,"author":{"gitId":"-"},"content":" getRoot().requestFocus();","lastModifiedDate":"2018-03-15"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-08-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-08-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Copies the URL to the user guide to the clipboard.","lastModifiedDate":"2019-08-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-08-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2019-08-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":" private void copyUrl() {","lastModifiedDate":"2019-08-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":" final Clipboard clipboard \u003d Clipboard.getSystemClipboard();","lastModifiedDate":"2019-08-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" final ClipboardContent url \u003d new ClipboardContent();","lastModifiedDate":"2019-08-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" url.putString(USERGUIDE_URL);","lastModifiedDate":"2019-08-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":" clipboard.setContent(url);","lastModifiedDate":"2019-08-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-08-19"},{"lineNumber":102,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"chaaaaun":2,"-":100}},{"path":"src/main/java/scrolls/elder/ui/MainWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.ui;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-06-16"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.event.ActionEvent;","lastModifiedDate":"2016-12-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-08-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.MenuItem;","lastModifiedDate":"2016-08-26"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.control.TextInputControl;","lastModifiedDate":"2016-12-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyCombination;","lastModifiedDate":"2016-08-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyEvent;","lastModifiedDate":"2016-12-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.scene.layout.StackPane;","lastModifiedDate":"2017-05-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18"},{"lineNumber":13,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.core.GuiSettings;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.core.LogsCenter;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.Logic;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.commands.CommandResult;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * The Main Window. Provides the basic application layout containing","lastModifiedDate":"2016-08-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * a menu bar and space where other JavaFX elements can be placed.","lastModifiedDate":"2016-08-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class MainWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-11-29"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"MainWindow.fxml\";","lastModifiedDate":"2016-08-18"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(getClass());","lastModifiedDate":"2018-08-14"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Stage primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // Independent Ui parts residing in this Ui container","lastModifiedDate":"2016-08-18"},{"lineNumber":34,"author":{"gitId":"CJerrong"},"content":" private PersonListPanel befriendeeListPanel;","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"CJerrong"},"content":" private PersonListPanel volunteerListPanel;","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private ResultDisplay resultDisplay;","lastModifiedDate":"2018-12-09"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private HelpWindow helpWindow;","lastModifiedDate":"2018-03-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private StackPane commandBoxPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":43,"author":{"gitId":"-"},"content":" private MenuItem helpMenuItem;","lastModifiedDate":"2016-08-18"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":46,"author":{"gitId":"CJerrong"},"content":" private StackPane befriendeeListPanelPlaceholder;","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"CJerrong"},"content":" @FXML","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"CJerrong"},"content":" private StackPane volunteerListPanelPlaceholder;","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":" private StackPane resultDisplayPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":54,"author":{"gitId":"-"},"content":" private StackPane statusbarPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Creates a {@code MainWindow} with the given {@code Stage} and {@code Logic}.","lastModifiedDate":"2020-05-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public MainWindow(Stage primaryStage, Logic logic) {","lastModifiedDate":"2018-12-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" super(FXML, primaryStage);","lastModifiedDate":"2017-11-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":62,"author":{"gitId":"-"},"content":" // Set dependencies","lastModifiedDate":"2016-09-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":" this.primaryStage \u003d primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":64,"author":{"gitId":"-"},"content":" this.logic \u003d logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":" // Configure the UI","lastModifiedDate":"2016-09-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":" setWindowDefaultSize(logic.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":69,"author":{"gitId":"-"},"content":" setAccelerators();","lastModifiedDate":"2016-09-21"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":71,"author":{"gitId":"-"},"content":" helpWindow \u003d new HelpWindow();","lastModifiedDate":"2018-03-15"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public Stage getPrimaryStage() {","lastModifiedDate":"2016-12-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return primaryStage;","lastModifiedDate":"2016-12-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":78,"author":{"gitId":"-"},"content":" private void setAccelerators() {","lastModifiedDate":"2016-09-21"},{"lineNumber":79,"author":{"gitId":"-"},"content":" setAccelerator(helpMenuItem, KeyCombination.valueOf(\"F1\"));","lastModifiedDate":"2016-12-18"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":82,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-18"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * Sets the accelerator of a MenuItem.","lastModifiedDate":"2016-12-18"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * @param keyCombination the KeyCombination value of the accelerator","lastModifiedDate":"2016-12-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" private void setAccelerator(MenuItem menuItem, KeyCombination keyCombination) {","lastModifiedDate":"2016-12-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":" menuItem.setAccelerator(keyCombination);","lastModifiedDate":"2016-12-18"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-12-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * TODO: the code below can be removed once the bug reported here","lastModifiedDate":"2016-12-18"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * https://bugs.openjdk.java.net/browse/JDK-8131666","lastModifiedDate":"2016-12-18"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * is fixed in later version of SDK.","lastModifiedDate":"2016-12-18"},{"lineNumber":93,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * According to the bug report, TextInputControl (TextField, TextArea) will","lastModifiedDate":"2016-12-18"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * consume function-key events. Because CommandBox contains a TextField, and","lastModifiedDate":"2016-12-18"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * ResultDisplay contains a TextArea, thus some accelerators (e.g F1) will","lastModifiedDate":"2016-12-18"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * not work when the focus is in them because the key event is consumed by","lastModifiedDate":"2016-12-18"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * the TextInputControl(s).","lastModifiedDate":"2016-12-18"},{"lineNumber":99,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * For now, we add following event filter to capture such key events and open","lastModifiedDate":"2016-12-18"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * help window purposely so to support accelerators even when focus is","lastModifiedDate":"2016-12-18"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * in CommandBox or ResultDisplay.","lastModifiedDate":"2016-12-18"},{"lineNumber":103,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":104,"author":{"gitId":"-"},"content":" getRoot().addEventFilter(KeyEvent.KEY_PRESSED, event -\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":105,"author":{"gitId":"-"},"content":" if (event.getTarget() instanceof TextInputControl \u0026\u0026 keyCombination.match(event)) {","lastModifiedDate":"2016-12-18"},{"lineNumber":106,"author":{"gitId":"-"},"content":" menuItem.getOnAction().handle(new ActionEvent());","lastModifiedDate":"2016-12-18"},{"lineNumber":107,"author":{"gitId":"-"},"content":" event.consume();","lastModifiedDate":"2016-12-18"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":109,"author":{"gitId":"-"},"content":" });","lastModifiedDate":"2016-12-18"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":112,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":113,"author":{"gitId":"-"},"content":" * Fills up all the placeholders of this window.","lastModifiedDate":"2017-08-16"},{"lineNumber":114,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":115,"author":{"gitId":"-"},"content":" void fillInnerParts() {","lastModifiedDate":"2016-09-21"},{"lineNumber":116,"author":{"gitId":"CJerrong"},"content":" befriendeeListPanel \u003d new PersonListPanel(logic.getFilteredBefriendeeList());","lastModifiedDate":"2024-03-20"},{"lineNumber":117,"author":{"gitId":"CJerrong"},"content":" befriendeeListPanelPlaceholder.getChildren().add(befriendeeListPanel.getRoot());","lastModifiedDate":"2024-03-20"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":" resultDisplay \u003d new ResultDisplay();","lastModifiedDate":"2018-12-09"},{"lineNumber":120,"author":{"gitId":"-"},"content":" resultDisplayPlaceholder.getChildren().add(resultDisplay.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":" StatusBarFooter statusBarFooter \u003d new StatusBarFooter(logic.getAddressBookFilePath());","lastModifiedDate":"2019-01-25"},{"lineNumber":123,"author":{"gitId":"-"},"content":" statusbarPlaceholder.getChildren().add(statusBarFooter.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":" CommandBox commandBox \u003d new CommandBox(this::executeCommand);","lastModifiedDate":"2019-01-25"},{"lineNumber":126,"author":{"gitId":"-"},"content":" commandBoxPlaceholder.getChildren().add(commandBox.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":127,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":128,"author":{"gitId":"CJerrong"},"content":" volunteerListPanel \u003d new PersonListPanel(logic.getFilteredVolunteerList());","lastModifiedDate":"2024-03-20"},{"lineNumber":129,"author":{"gitId":"CJerrong"},"content":" volunteerListPanelPlaceholder.getChildren().add(volunteerListPanel.getRoot());","lastModifiedDate":"2024-03-20"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":132,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":133,"author":{"gitId":"-"},"content":" * Sets the default size based on {@code guiSettings}.","lastModifiedDate":"2018-11-27"},{"lineNumber":134,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":135,"author":{"gitId":"-"},"content":" private void setWindowDefaultSize(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":136,"author":{"gitId":"-"},"content":" primaryStage.setHeight(guiSettings.getWindowHeight());","lastModifiedDate":"2018-11-27"},{"lineNumber":137,"author":{"gitId":"-"},"content":" primaryStage.setWidth(guiSettings.getWindowWidth());","lastModifiedDate":"2018-11-27"},{"lineNumber":138,"author":{"gitId":"-"},"content":" if (guiSettings.getWindowCoordinates() !\u003d null) {","lastModifiedDate":"2018-11-27"},{"lineNumber":139,"author":{"gitId":"-"},"content":" primaryStage.setX(guiSettings.getWindowCoordinates().getX());","lastModifiedDate":"2018-11-27"},{"lineNumber":140,"author":{"gitId":"-"},"content":" primaryStage.setY(guiSettings.getWindowCoordinates().getY());","lastModifiedDate":"2018-11-27"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":144,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":145,"author":{"gitId":"-"},"content":" * Opens the help window or focuses on it if it\u0027s already opened.","lastModifiedDate":"2018-03-15"},{"lineNumber":146,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":147,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":148,"author":{"gitId":"-"},"content":" public void handleHelp() {","lastModifiedDate":"2016-08-31"},{"lineNumber":149,"author":{"gitId":"-"},"content":" if (!helpWindow.isShowing()) {","lastModifiedDate":"2018-03-15"},{"lineNumber":150,"author":{"gitId":"-"},"content":" helpWindow.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":151,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-15"},{"lineNumber":152,"author":{"gitId":"-"},"content":" helpWindow.focus();","lastModifiedDate":"2018-03-15"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":156,"author":{"gitId":"-"},"content":" void show() {","lastModifiedDate":"2016-10-15"},{"lineNumber":157,"author":{"gitId":"-"},"content":" primaryStage.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":158,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":160,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":161,"author":{"gitId":"-"},"content":" * Closes the application.","lastModifiedDate":"2016-08-18"},{"lineNumber":162,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":163,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":164,"author":{"gitId":"-"},"content":" private void handleExit() {","lastModifiedDate":"2016-08-18"},{"lineNumber":165,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(primaryStage.getWidth(), primaryStage.getHeight(),","lastModifiedDate":"2018-12-08"},{"lineNumber":166,"author":{"gitId":"-"},"content":" (int) primaryStage.getX(), (int) primaryStage.getY());","lastModifiedDate":"2018-12-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":" logic.setGuiSettings(guiSettings);","lastModifiedDate":"2018-12-08"},{"lineNumber":168,"author":{"gitId":"-"},"content":" helpWindow.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":169,"author":{"gitId":"-"},"content":" primaryStage.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":170,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-25"},{"lineNumber":172,"author":{"gitId":"CJerrong"},"content":" public PersonListPanel getBefriendeeListPanel() {","lastModifiedDate":"2024-03-20"},{"lineNumber":173,"author":{"gitId":"CJerrong"},"content":" return befriendeeListPanel;","lastModifiedDate":"2024-03-20"},{"lineNumber":174,"author":{"gitId":"CJerrong"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":175,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":176,"author":{"gitId":"CJerrong"},"content":" public PersonListPanel getVolunteerListPanel() {","lastModifiedDate":"2024-03-20"},{"lineNumber":177,"author":{"gitId":"CJerrong"},"content":" return volunteerListPanel;","lastModifiedDate":"2024-03-20"},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-25"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":180,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":181,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2018-12-09"},{"lineNumber":182,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09"},{"lineNumber":183,"author":{"gitId":"chaaaaun"},"content":" * @see Logic#execute(String)","lastModifiedDate":"2024-03-12"},{"lineNumber":184,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":185,"author":{"gitId":"-"},"content":" private CommandResult executeCommand(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2018-12-09"},{"lineNumber":186,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":187,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d logic.execute(commandText);","lastModifiedDate":"2018-12-09"},{"lineNumber":188,"author":{"gitId":"-"},"content":" logger.info(\"Result: \" + commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":189,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":191,"author":{"gitId":"-"},"content":" if (commandResult.isShowHelp()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":192,"author":{"gitId":"-"},"content":" handleHelp();","lastModifiedDate":"2018-12-09"},{"lineNumber":193,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":195,"author":{"gitId":"-"},"content":" if (commandResult.isExit()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":196,"author":{"gitId":"-"},"content":" handleExit();","lastModifiedDate":"2018-12-09"},{"lineNumber":197,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":199,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":200,"author":{"gitId":"-"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2018-12-09"},{"lineNumber":201,"author":{"gitId":"-"},"content":" logger.info(\"An error occurred while executing command: \" + commandText);","lastModifiedDate":"2023-06-13"},{"lineNumber":202,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(e.getMessage());","lastModifiedDate":"2018-12-09"},{"lineNumber":203,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2018-12-09"},{"lineNumber":204,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":205,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":206,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"CJerrong":16,"chaaaaun":8,"-":182}},{"path":"src/main/java/scrolls/elder/ui/PersonCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.ui;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Comparator;","lastModifiedDate":"2019-01-02"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-01-02"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-09-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2016-09-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2016-12-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2016-09-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Person;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * An UI component that displays information of a {@code Person}.","lastModifiedDate":"2017-08-16"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class PersonCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"PersonListCard.fxml\";","lastModifiedDate":"2016-09-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2017-03-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2017-03-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2017-03-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @see \u003ca href\u003d\"https://github.com/se-edu/addressbook-level4/issues/336\"\u003eThe issue on AddressBook level 4\u003c/a\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public final Person person;","lastModifiedDate":"2018-01-10"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private HBox cardPane;","lastModifiedDate":"2016-09-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Label name;","lastModifiedDate":"2016-09-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Label id;","lastModifiedDate":"2016-09-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private Label phone;","lastModifiedDate":"2016-09-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private Label address;","lastModifiedDate":"2016-09-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private Label email;","lastModifiedDate":"2016-09-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" private FlowPane tags;","lastModifiedDate":"2016-12-18"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":44,"author":{"gitId":"soons1"},"content":" @FXML","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"soons1"},"content":" private Label pairedWith;","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2020-05-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2017-07-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"-"},"content":" name.setText(person.getName().fullName);","lastModifiedDate":"2017-12-20"},{"lineNumber":55,"author":{"gitId":"-"},"content":" phone.setText(person.getPhone().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":56,"author":{"gitId":"-"},"content":" address.setText(person.getAddress().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" email.setText(person.getEmail().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":58,"author":{"gitId":"CJerrong"},"content":" pairedWith.setText(person.getPairedWithName().map(p -\u003e \"Paired with: \" + p.fullName).orElse(\"Not paired\"));","lastModifiedDate":"2024-03-22"},{"lineNumber":59,"author":{"gitId":"-"},"content":" person.getTags().stream()","lastModifiedDate":"2019-01-02"},{"lineNumber":60,"author":{"gitId":"-"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.tagName))","lastModifiedDate":"2019-01-02"},{"lineNumber":61,"author":{"gitId":"-"},"content":" .forEach(tag -\u003e tags.getChildren().add(new Label(tag.tagName)));","lastModifiedDate":"2019-01-02"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":63,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"soons1":3,"CJerrong":1,"chaaaaun":2,"-":57}},{"path":"src/main/java/scrolls/elder/ui/PersonListPanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.ui;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-08-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-08-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.ListCell;","lastModifiedDate":"2016-09-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.control.ListView;","lastModifiedDate":"2016-08-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.core.LogsCenter;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Person;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Panel containing the list of persons.","lastModifiedDate":"2016-09-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class PersonListPanel extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"PersonListPanel.fxml\";","lastModifiedDate":"2016-09-14"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(PersonListPanel.class);","lastModifiedDate":"2017-04-01"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private ListView\u003cPerson\u003e personListView;","lastModifiedDate":"2018-02-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Creates a {@code PersonListPanel} with the given {@code ObservableList}.","lastModifiedDate":"2020-05-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public PersonListPanel(ObservableList\u003cPerson\u003e personList) {","lastModifiedDate":"2019-01-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" personListView.setItems(personList);","lastModifiedDate":"2018-02-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" personListView.setCellFactory(listView -\u003e new PersonListViewCell());","lastModifiedDate":"2016-08-18"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Custom {@code ListCell} that displays the graphics of a {@code Person} using a {@code PersonCard}.","lastModifiedDate":"2018-02-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":" class PersonListViewCell extends ListCell\u003cPerson\u003e {","lastModifiedDate":"2018-02-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" protected void updateItem(Person person, boolean empty) {","lastModifiedDate":"2018-02-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" super.updateItem(person, empty);","lastModifiedDate":"2016-09-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" if (empty || person \u003d\u003d null) {","lastModifiedDate":"2016-09-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" setGraphic(null);","lastModifiedDate":"2016-09-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" setText(null);","lastModifiedDate":"2016-09-21"},{"lineNumber":43,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2016-09-21"},{"lineNumber":44,"author":{"gitId":"-"},"content":" setGraphic(new PersonCard(person, getIndex() + 1).getRoot());","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"chaaaaun":3,"-":46}},{"path":"src/main/java/scrolls/elder/ui/ResultDisplay.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.ui;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-12-09"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.TextArea;","lastModifiedDate":"2016-09-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * A ui for the status bar that is displayed at the header of the application.","lastModifiedDate":"2016-09-28"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class ResultDisplay extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"ResultDisplay.fxml\";","lastModifiedDate":"2016-09-14"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-10-15"},{"lineNumber":17,"author":{"gitId":"-"},"content":" private TextArea resultDisplay;","lastModifiedDate":"2016-10-15"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-15"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public ResultDisplay() {","lastModifiedDate":"2017-06-14"},{"lineNumber":20,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void setFeedbackToUser(String feedbackToUser) {","lastModifiedDate":"2018-12-09"},{"lineNumber":24,"author":{"gitId":"-"},"content":" requireNonNull(feedbackToUser);","lastModifiedDate":"2018-12-09"},{"lineNumber":25,"author":{"gitId":"-"},"content":" resultDisplay.setText(feedbackToUser);","lastModifiedDate":"2018-12-09"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"chaaaaun":1,"-":27}},{"path":"src/main/java/scrolls/elder/ui/StatusBarFooter.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.ui;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2018-12-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * A ui for the status bar that is displayed at the footer of the application.","lastModifiedDate":"2016-09-28"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class StatusBarFooter extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-14"},{"lineNumber":15,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"StatusBarFooter.fxml\";","lastModifiedDate":"2017-04-01"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-12-10"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private Label saveLocationStatus;","lastModifiedDate":"2018-12-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Creates a {@code StatusBarFooter} with the given {@code Path}.","lastModifiedDate":"2020-05-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public StatusBarFooter(Path saveLocation) {","lastModifiedDate":"2019-01-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2017-04-01"},{"lineNumber":25,"author":{"gitId":"-"},"content":" saveLocationStatus.setText(Paths.get(\".\").resolve(saveLocation).toString());","lastModifiedDate":"2018-12-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-01"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"chaaaaun":1,"-":27}},{"path":"src/main/java/scrolls/elder/ui/Ui.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.ui;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-09-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * API of UI component","lastModifiedDate":"2016-09-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public interface Ui {","lastModifiedDate":"2016-09-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":" /** Starts the UI (and the App). */","lastModifiedDate":"2016-09-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":" void start(Stage primaryStage);","lastModifiedDate":"2016-09-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"chaaaaun":1,"-":12}},{"path":"src/main/java/scrolls/elder/ui/UiManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.ui;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.application.Platform;","lastModifiedDate":"2016-08-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Alert;","lastModifiedDate":"2016-08-18"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.Alert.AlertType;","lastModifiedDate":"2016-08-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2016-08-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.MainApp;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.core.LogsCenter;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.util.StringUtil;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.Logic;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * The manager of the UI component.","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class UiManager implements Ui {","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String ALERT_DIALOG_PANE_FIELD_ID \u003d \"alertDialogPane\";","lastModifiedDate":"2017-04-01"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(UiManager.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final String ICON_APPLICATION \u003d \"/images/address_book_32.png\";","lastModifiedDate":"2016-08-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private MainWindow mainWindow;","lastModifiedDate":"2016-08-18"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Creates a {@code UiManager} with the given {@code Logic}.","lastModifiedDate":"2020-05-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public UiManager(Logic logic) {","lastModifiedDate":"2018-12-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" this.logic \u003d logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public void start(Stage primaryStage) {","lastModifiedDate":"2016-09-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" logger.info(\"Starting UI...\");","lastModifiedDate":"2016-09-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":" //Set the application icon.","lastModifiedDate":"2016-08-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":" primaryStage.getIcons().add(getImage(ICON_APPLICATION));","lastModifiedDate":"2016-08-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":42,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-08-18"},{"lineNumber":43,"author":{"gitId":"-"},"content":" mainWindow \u003d new MainWindow(primaryStage, logic);","lastModifiedDate":"2018-12-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" mainWindow.show(); //This should be called before creating other UI parts","lastModifiedDate":"2016-08-18"},{"lineNumber":45,"author":{"gitId":"-"},"content":" mainWindow.fillInnerParts();","lastModifiedDate":"2016-08-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" } catch (Throwable e) {","lastModifiedDate":"2016-08-18"},{"lineNumber":48,"author":{"gitId":"-"},"content":" logger.severe(StringUtil.getDetails(e));","lastModifiedDate":"2016-09-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":" showFatalErrorDialogAndShutdown(\"Fatal error during initializing\", e);","lastModifiedDate":"2016-08-18"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":53,"author":{"gitId":"-"},"content":" private Image getImage(String imagePath) {","lastModifiedDate":"2016-08-18"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return new Image(MainApp.class.getResourceAsStream(imagePath));","lastModifiedDate":"2016-08-18"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":57,"author":{"gitId":"-"},"content":" void showAlertDialogAndWait(Alert.AlertType type, String title, String headerText, String contentText) {","lastModifiedDate":"2016-09-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" showAlertDialogAndWait(mainWindow.getPrimaryStage(), type, title, headerText, contentText);","lastModifiedDate":"2016-08-18"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Shows an alert dialog on {@code owner} with the given parameters.","lastModifiedDate":"2017-08-16"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * This method only returns after the user has closed the alert dialog.","lastModifiedDate":"2017-08-16"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":" private static void showAlertDialogAndWait(Stage owner, AlertType type, String title, String headerText,","lastModifiedDate":"2016-09-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":" String contentText) {","lastModifiedDate":"2016-08-18"},{"lineNumber":67,"author":{"gitId":"-"},"content":" final Alert alert \u003d new Alert(type);","lastModifiedDate":"2016-08-18"},{"lineNumber":68,"author":{"gitId":"-"},"content":" alert.getDialogPane().getStylesheets().add(\"view/DarkTheme.css\");","lastModifiedDate":"2016-08-20"},{"lineNumber":69,"author":{"gitId":"-"},"content":" alert.initOwner(owner);","lastModifiedDate":"2016-08-18"},{"lineNumber":70,"author":{"gitId":"-"},"content":" alert.setTitle(title);","lastModifiedDate":"2016-08-18"},{"lineNumber":71,"author":{"gitId":"-"},"content":" alert.setHeaderText(headerText);","lastModifiedDate":"2016-08-18"},{"lineNumber":72,"author":{"gitId":"-"},"content":" alert.setContentText(contentText);","lastModifiedDate":"2016-08-18"},{"lineNumber":73,"author":{"gitId":"-"},"content":" alert.getDialogPane().setId(ALERT_DIALOG_PANE_FIELD_ID);","lastModifiedDate":"2016-10-12"},{"lineNumber":74,"author":{"gitId":"-"},"content":" alert.showAndWait();","lastModifiedDate":"2016-08-18"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * Shows an error alert dialog with {@code title} and error message, {@code e},","lastModifiedDate":"2017-08-16"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * and exits the application after the user has closed the alert dialog.","lastModifiedDate":"2017-08-16"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":81,"author":{"gitId":"-"},"content":" private void showFatalErrorDialogAndShutdown(String title, Throwable e) {","lastModifiedDate":"2016-09-21"},{"lineNumber":82,"author":{"gitId":"-"},"content":" logger.severe(title + \" \" + e.getMessage() + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-21"},{"lineNumber":83,"author":{"gitId":"-"},"content":" showAlertDialogAndWait(Alert.AlertType.ERROR, title, e.getMessage(), e.toString());","lastModifiedDate":"2016-08-18"},{"lineNumber":84,"author":{"gitId":"-"},"content":" Platform.exit();","lastModifiedDate":"2016-08-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":" System.exit(1);","lastModifiedDate":"2016-08-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-25"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"chaaaaun":5,"-":83}},{"path":"src/main/java/scrolls/elder/ui/UiPart.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.ui;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2016-12-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.net.URL;","lastModifiedDate":"2016-12-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2016-12-21"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.MainApp;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Represents a distinct part of the UI. e.g. Windows, dialogs, panels, status bars, etc.","lastModifiedDate":"2016-12-21"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * It contains a scene graph with a root node of type {@code T}.","lastModifiedDate":"2016-12-21"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public abstract class UiPart\u003cT\u003e {","lastModifiedDate":"2016-12-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":" /** Resource folder where FXML files are stored. */","lastModifiedDate":"2016-12-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String FXML_FILE_FOLDER \u003d \"/view/\";","lastModifiedDate":"2016-12-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final FXMLLoader fxmlLoader \u003d new FXMLLoader();","lastModifiedDate":"2017-11-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Constructs a UiPart with the specified FXML file URL.","lastModifiedDate":"2016-12-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * The FXML file must not specify the {@code fx:controller} attribute.","lastModifiedDate":"2016-12-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public UiPart(URL fxmlFileUrl) {","lastModifiedDate":"2016-12-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":" loadFxmlFile(fxmlFileUrl, null);","lastModifiedDate":"2017-11-29"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Constructs a UiPart using the specified FXML file within {@link #FXML_FILE_FOLDER}.","lastModifiedDate":"2016-12-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * @see #UiPart(URL)","lastModifiedDate":"2016-12-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public UiPart(String fxmlFileName) {","lastModifiedDate":"2016-12-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" this(getFxmlFileUrl(fxmlFileName));","lastModifiedDate":"2017-11-29"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-11-29"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-11-29"},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-11-29"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Constructs a UiPart with the specified FXML file URL and root object.","lastModifiedDate":"2017-11-29"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * The FXML file must not specify the {@code fx:controller} attribute.","lastModifiedDate":"2017-11-29"},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-11-29"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public UiPart(URL fxmlFileUrl, T root) {","lastModifiedDate":"2017-11-29"},{"lineNumber":43,"author":{"gitId":"-"},"content":" loadFxmlFile(fxmlFileUrl, root);","lastModifiedDate":"2017-11-29"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-11-29"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-11-29"},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-11-29"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Constructs a UiPart with the specified FXML file within {@link #FXML_FILE_FOLDER} and root object.","lastModifiedDate":"2017-11-29"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * @see #UiPart(URL, T)","lastModifiedDate":"2017-11-29"},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-11-29"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public UiPart(String fxmlFileName, T root) {","lastModifiedDate":"2017-11-29"},{"lineNumber":51,"author":{"gitId":"-"},"content":" this(getFxmlFileUrl(fxmlFileName), root);","lastModifiedDate":"2017-11-29"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * Returns the root object of the scene graph of this UiPart.","lastModifiedDate":"2016-12-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public T getRoot() {","lastModifiedDate":"2016-12-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return fxmlLoader.getRoot();","lastModifiedDate":"2016-12-21"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-21"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-11-29"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Loads the object hierarchy from a FXML document.","lastModifiedDate":"2017-11-29"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * @param location Location of the FXML document.","lastModifiedDate":"2017-11-29"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * @param root Specifies the root of the object hierarchy.","lastModifiedDate":"2017-11-29"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-11-29"},{"lineNumber":66,"author":{"gitId":"-"},"content":" private void loadFxmlFile(URL location, T root) {","lastModifiedDate":"2017-11-29"},{"lineNumber":67,"author":{"gitId":"-"},"content":" requireNonNull(location);","lastModifiedDate":"2017-11-29"},{"lineNumber":68,"author":{"gitId":"-"},"content":" fxmlLoader.setLocation(location);","lastModifiedDate":"2017-11-29"},{"lineNumber":69,"author":{"gitId":"-"},"content":" fxmlLoader.setController(this);","lastModifiedDate":"2017-11-29"},{"lineNumber":70,"author":{"gitId":"-"},"content":" fxmlLoader.setRoot(root);","lastModifiedDate":"2017-11-29"},{"lineNumber":71,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-11-29"},{"lineNumber":72,"author":{"gitId":"-"},"content":" fxmlLoader.load();","lastModifiedDate":"2017-11-29"},{"lineNumber":73,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2017-11-29"},{"lineNumber":74,"author":{"gitId":"-"},"content":" throw new AssertionError(e);","lastModifiedDate":"2017-11-29"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-11-29"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-11-29"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-11-29"},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-11-29"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Returns the FXML file URL for the specified FXML file name within {@link #FXML_FILE_FOLDER}.","lastModifiedDate":"2017-11-29"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-11-29"},{"lineNumber":81,"author":{"gitId":"-"},"content":" private static URL getFxmlFileUrl(String fxmlFileName) {","lastModifiedDate":"2017-11-29"},{"lineNumber":82,"author":{"gitId":"-"},"content":" requireNonNull(fxmlFileName);","lastModifiedDate":"2017-11-29"},{"lineNumber":83,"author":{"gitId":"-"},"content":" String fxmlFileNameWithFolder \u003d FXML_FILE_FOLDER + fxmlFileName;","lastModifiedDate":"2017-11-29"},{"lineNumber":84,"author":{"gitId":"-"},"content":" URL fxmlFileUrl \u003d MainApp.class.getResource(fxmlFileNameWithFolder);","lastModifiedDate":"2017-11-29"},{"lineNumber":85,"author":{"gitId":"-"},"content":" return requireNonNull(fxmlFileUrl);","lastModifiedDate":"2017-11-29"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-11-29"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-11-29"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"chaaaaun":2,"-":86}},{"path":"src/main/resources/view/DarkTheme.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":".background {","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":" background-color: #383838; /* Used in the default.html file */","lastModifiedDate":"2017-03-02"},{"lineNumber":4,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":".label {","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":".label-bright {","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":".label-header {","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" -fx-font-size: 32pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":".text-field {","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" -fx-font-size: 12pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":".tab-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":".tab-pane .tab-header-area {","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" -fx-min-height: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" -fx-max-height: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":".table-view {","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" -fx-base: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" -fx-control-inner-background: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" -fx-table-cell-border-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" -fx-table-header-border-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" -fx-padding: 5;","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":".table-view .column-header-background {","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":".table-view .column-header, .table-view .filler {","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" -fx-size: 35;","lastModifiedDate":"2016-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" -fx-border-width: 0 0 1 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" -fx-border-color:","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" derive(-fx-base, 80%)","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" -fx-border-insets: 0 10 1 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":".table-view .column-header .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" -fx-font-size: 20pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" -fx-alignment: center-left;","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":".table-view:focused .table-row-cell:filled:focused:selected {","lastModifiedDate":"2016-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":".split-pane:horizontal .split-pane-divider {","lastModifiedDate":"2016-08-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02"},{"lineNumber":81,"author":{"gitId":"-"},"content":" -fx-border-color: transparent transparent transparent #4d4d4d;","lastModifiedDate":"2017-03-02"},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":84,"author":{"gitId":"-"},"content":".split-pane {","lastModifiedDate":"2016-08-15"},{"lineNumber":85,"author":{"gitId":"-"},"content":" -fx-border-radius: 1;","lastModifiedDate":"2016-08-15"},{"lineNumber":86,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2016-08-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":".list-view {","lastModifiedDate":"2017-03-02"},{"lineNumber":91,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":92,"author":{"gitId":"-"},"content":" -fx-padding: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":93,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2018-01-10"},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":96,"author":{"gitId":"-"},"content":".list-cell {","lastModifiedDate":"2016-08-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":" -fx-label-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":" -fx-graphic-text-gap : 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":".list-cell:filled:even {","lastModifiedDate":"2017-03-02"},{"lineNumber":103,"author":{"gitId":"-"},"content":" -fx-background-color: #3c3e3f;","lastModifiedDate":"2017-03-02"},{"lineNumber":104,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":106,"author":{"gitId":"-"},"content":".list-cell:filled:odd {","lastModifiedDate":"2017-03-02"},{"lineNumber":107,"author":{"gitId":"-"},"content":" -fx-background-color: #515658;","lastModifiedDate":"2017-03-02"},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":110,"author":{"gitId":"-"},"content":".list-cell:filled:selected {","lastModifiedDate":"2017-03-02"},{"lineNumber":111,"author":{"gitId":"-"},"content":" -fx-background-color: #424d5f;","lastModifiedDate":"2017-03-02"},{"lineNumber":112,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":114,"author":{"gitId":"-"},"content":".list-cell:filled:selected #cardPane {","lastModifiedDate":"2017-03-02"},{"lineNumber":115,"author":{"gitId":"-"},"content":" -fx-border-color: #3e7b91;","lastModifiedDate":"2017-03-02"},{"lineNumber":116,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02"},{"lineNumber":117,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":119,"author":{"gitId":"-"},"content":".list-cell .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":121,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":".cell_big_label {","lastModifiedDate":"2016-08-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":" -fx-font-size: 16px;","lastModifiedDate":"2016-08-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":".cell_small_label {","lastModifiedDate":"2016-08-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\";","lastModifiedDate":"2022-01-13"},{"lineNumber":131,"author":{"gitId":"-"},"content":" -fx-font-size: 13px;","lastModifiedDate":"2017-03-02"},{"lineNumber":132,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":".stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":136,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":137,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":".pane-with-border {","lastModifiedDate":"2017-05-15"},{"lineNumber":140,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-05-09"},{"lineNumber":141,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 10%);","lastModifiedDate":"2017-05-09"},{"lineNumber":142,"author":{"gitId":"-"},"content":" -fx-border-top-width: 1px;","lastModifiedDate":"2017-05-09"},{"lineNumber":143,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-09"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":145,"author":{"gitId":"-"},"content":".status-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":146,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2018-12-08"},{"lineNumber":147,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":149,"author":{"gitId":"-"},"content":".result-display {","lastModifiedDate":"2016-09-14"},{"lineNumber":150,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2017-03-02"},{"lineNumber":151,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":152,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02"},{"lineNumber":153,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":154,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":156,"author":{"gitId":"-"},"content":".result-display .label {","lastModifiedDate":"2016-09-14"},{"lineNumber":157,"author":{"gitId":"-"},"content":" -fx-text-fill: black !important;","lastModifiedDate":"2016-09-14"},{"lineNumber":158,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":160,"author":{"gitId":"-"},"content":".status-bar .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":162,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":163,"author":{"gitId":"-"},"content":" -fx-padding: 4px;","lastModifiedDate":"2018-12-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":" -fx-pref-height: 30px;","lastModifiedDate":"2018-12-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":".status-bar-with-border {","lastModifiedDate":"2016-08-08"},{"lineNumber":168,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":169,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15"},{"lineNumber":170,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08"},{"lineNumber":171,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":173,"author":{"gitId":"-"},"content":".status-bar-with-border .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":174,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":175,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":177,"author":{"gitId":"-"},"content":".grid-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":178,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":179,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":180,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08"},{"lineNumber":181,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":183,"author":{"gitId":"-"},"content":".grid-pane .stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":184,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":185,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":187,"author":{"gitId":"-"},"content":".context-menu {","lastModifiedDate":"2016-08-08"},{"lineNumber":188,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15"},{"lineNumber":189,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":191,"author":{"gitId":"-"},"content":".context-menu .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":192,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":193,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":195,"author":{"gitId":"-"},"content":".menu-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":196,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":197,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":199,"author":{"gitId":"-"},"content":".menu-bar .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":200,"author":{"gitId":"-"},"content":" -fx-font-size: 14pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":201,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":202,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":203,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08"},{"lineNumber":204,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":206,"author":{"gitId":"-"},"content":".menu .left-container {","lastModifiedDate":"2016-08-08"},{"lineNumber":207,"author":{"gitId":"-"},"content":" -fx-background-color: black;","lastModifiedDate":"2016-08-08"},{"lineNumber":208,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":210,"author":{"gitId":"-"},"content":"/*","lastModifiedDate":"2016-08-08"},{"lineNumber":211,"author":{"gitId":"-"},"content":" * Metro style Push Button","lastModifiedDate":"2016-08-08"},{"lineNumber":212,"author":{"gitId":"-"},"content":" * Author: Pedro Duque Vieira","lastModifiedDate":"2016-08-08"},{"lineNumber":213,"author":{"gitId":"-"},"content":" * http://pixelduke.wordpress.com/2012/10/23/jmetro-windows-8-controls-on-java/","lastModifiedDate":"2016-08-08"},{"lineNumber":214,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":215,"author":{"gitId":"-"},"content":".button {","lastModifiedDate":"2016-08-08"},{"lineNumber":216,"author":{"gitId":"-"},"content":" -fx-padding: 5 22 5 22;","lastModifiedDate":"2016-08-08"},{"lineNumber":217,"author":{"gitId":"-"},"content":" -fx-border-color: #e2e2e2;","lastModifiedDate":"2016-08-08"},{"lineNumber":218,"author":{"gitId":"-"},"content":" -fx-border-width: 2;","lastModifiedDate":"2016-08-08"},{"lineNumber":219,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":220,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":221,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\", Helvetica, Arial, sans-serif;","lastModifiedDate":"2022-01-13"},{"lineNumber":222,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":223,"author":{"gitId":"-"},"content":" -fx-text-fill: #d8d8d8;","lastModifiedDate":"2016-08-08"},{"lineNumber":224,"author":{"gitId":"-"},"content":" -fx-background-insets: 0 0 0 0, 0, 1, 2;","lastModifiedDate":"2016-08-08"},{"lineNumber":225,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":227,"author":{"gitId":"-"},"content":".button:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":228,"author":{"gitId":"-"},"content":" -fx-background-color: #3a3a3a;","lastModifiedDate":"2016-08-08"},{"lineNumber":229,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":231,"author":{"gitId":"-"},"content":".button:pressed, .button:default:hover:pressed {","lastModifiedDate":"2016-08-08"},{"lineNumber":232,"author":{"gitId":"-"},"content":" -fx-background-color: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":233,"author":{"gitId":"-"},"content":" -fx-text-fill: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":234,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":236,"author":{"gitId":"-"},"content":".button:focused {","lastModifiedDate":"2016-08-08"},{"lineNumber":237,"author":{"gitId":"-"},"content":" -fx-border-color: white, white;","lastModifiedDate":"2016-08-08"},{"lineNumber":238,"author":{"gitId":"-"},"content":" -fx-border-width: 1, 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":239,"author":{"gitId":"-"},"content":" -fx-border-style: solid, segments(1, 1);","lastModifiedDate":"2016-08-08"},{"lineNumber":240,"author":{"gitId":"-"},"content":" -fx-border-radius: 0, 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":241,"author":{"gitId":"-"},"content":" -fx-border-insets: 1 1 1 1, 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":242,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":244,"author":{"gitId":"-"},"content":".button:disabled, .button:default:disabled {","lastModifiedDate":"2016-08-08"},{"lineNumber":245,"author":{"gitId":"-"},"content":" -fx-opacity: 0.4;","lastModifiedDate":"2016-08-08"},{"lineNumber":246,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":247,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":248,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":250,"author":{"gitId":"-"},"content":".button:default {","lastModifiedDate":"2016-08-08"},{"lineNumber":251,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08"},{"lineNumber":252,"author":{"gitId":"-"},"content":" -fx-text-fill: #ffffff;","lastModifiedDate":"2016-08-08"},{"lineNumber":253,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":255,"author":{"gitId":"-"},"content":".button:default:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":256,"author":{"gitId":"-"},"content":" -fx-background-color: derive(-fx-focus-color, 30%);","lastModifiedDate":"2016-08-08"},{"lineNumber":257,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":259,"author":{"gitId":"-"},"content":".dialog-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":260,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":261,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":263,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.button-bar \u003e *.container {","lastModifiedDate":"2016-08-08"},{"lineNumber":264,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":265,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":266,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":267,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.label.content {","lastModifiedDate":"2016-08-08"},{"lineNumber":268,"author":{"gitId":"-"},"content":" -fx-font-size: 14px;","lastModifiedDate":"2016-08-08"},{"lineNumber":269,"author":{"gitId":"-"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2016-08-08"},{"lineNumber":270,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":271,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":273,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel {","lastModifiedDate":"2016-08-08"},{"lineNumber":274,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15"},{"lineNumber":275,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":277,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel *.label {","lastModifiedDate":"2016-08-08"},{"lineNumber":278,"author":{"gitId":"-"},"content":" -fx-font-size: 18px;","lastModifiedDate":"2016-08-08"},{"lineNumber":279,"author":{"gitId":"-"},"content":" -fx-font-style: italic;","lastModifiedDate":"2016-08-08"},{"lineNumber":280,"author":{"gitId":"-"},"content":" -fx-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":281,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":282,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":284,"author":{"gitId":"-"},"content":".scroll-bar {","lastModifiedDate":"2017-03-02"},{"lineNumber":285,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02"},{"lineNumber":286,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":288,"author":{"gitId":"-"},"content":".scroll-bar .thumb {","lastModifiedDate":"2016-08-15"},{"lineNumber":289,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15"},{"lineNumber":290,"author":{"gitId":"-"},"content":" -fx-background-insets: 3;","lastModifiedDate":"2016-08-15"},{"lineNumber":291,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":293,"author":{"gitId":"-"},"content":".scroll-bar .increment-button, .scroll-bar .decrement-button {","lastModifiedDate":"2016-08-15"},{"lineNumber":294,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-15"},{"lineNumber":295,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-15"},{"lineNumber":296,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":298,"author":{"gitId":"-"},"content":".scroll-bar .increment-arrow, .scroll-bar .decrement-arrow {","lastModifiedDate":"2016-08-15"},{"lineNumber":299,"author":{"gitId":"-"},"content":" -fx-shape: \" \";","lastModifiedDate":"2016-08-15"},{"lineNumber":300,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":301,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":302,"author":{"gitId":"-"},"content":".scroll-bar:vertical .increment-arrow, .scroll-bar:vertical .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":303,"author":{"gitId":"-"},"content":" -fx-padding: 1 8 1 8;","lastModifiedDate":"2016-08-15"},{"lineNumber":304,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":306,"author":{"gitId":"-"},"content":".scroll-bar:horizontal .increment-arrow, .scroll-bar:horizontal .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":307,"author":{"gitId":"-"},"content":" -fx-padding: 8 1 8 1;","lastModifiedDate":"2016-08-18"},{"lineNumber":308,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":309,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":310,"author":{"gitId":"-"},"content":"#cardPane {","lastModifiedDate":"2016-08-08"},{"lineNumber":311,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":312,"author":{"gitId":"-"},"content":" -fx-border-width: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":313,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":314,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":315,"author":{"gitId":"-"},"content":"#commandTypeLabel {","lastModifiedDate":"2016-08-08"},{"lineNumber":316,"author":{"gitId":"-"},"content":" -fx-font-size: 11px;","lastModifiedDate":"2016-08-08"},{"lineNumber":317,"author":{"gitId":"-"},"content":" -fx-text-fill: #F70D1A;","lastModifiedDate":"2016-08-08"},{"lineNumber":318,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":319,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":320,"author":{"gitId":"-"},"content":"#commandTextField {","lastModifiedDate":"2017-03-02"},{"lineNumber":321,"author":{"gitId":"-"},"content":" -fx-background-color: transparent #383838 transparent #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":322,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":323,"author":{"gitId":"-"},"content":" -fx-border-color: #383838 #383838 #ffffff #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":324,"author":{"gitId":"-"},"content":" -fx-border-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":325,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02"},{"lineNumber":326,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":327,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02"},{"lineNumber":328,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":329,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":330,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":331,"author":{"gitId":"-"},"content":"#filterField, #personListPanel, #personWebpage {","lastModifiedDate":"2016-08-15"},{"lineNumber":332,"author":{"gitId":"-"},"content":" -fx-effect: innershadow(gaussian, black, 10, 0, 0, 0);","lastModifiedDate":"2016-08-15"},{"lineNumber":333,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":334,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":335,"author":{"gitId":"-"},"content":"#resultDisplay .content {","lastModifiedDate":"2017-03-02"},{"lineNumber":336,"author":{"gitId":"-"},"content":" -fx-background-color: transparent, #383838, transparent, #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":337,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":338,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":339,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":340,"author":{"gitId":"-"},"content":"#tags {","lastModifiedDate":"2016-12-18"},{"lineNumber":341,"author":{"gitId":"-"},"content":" -fx-hgap: 7;","lastModifiedDate":"2016-12-18"},{"lineNumber":342,"author":{"gitId":"-"},"content":" -fx-vgap: 3;","lastModifiedDate":"2016-12-18"},{"lineNumber":343,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"},{"lineNumber":344,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":345,"author":{"gitId":"-"},"content":"#tags .label {","lastModifiedDate":"2016-12-18"},{"lineNumber":346,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-12-18"},{"lineNumber":347,"author":{"gitId":"-"},"content":" -fx-background-color: #3e7b91;","lastModifiedDate":"2017-03-02"},{"lineNumber":348,"author":{"gitId":"-"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2016-12-18"},{"lineNumber":349,"author":{"gitId":"-"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2016-12-18"},{"lineNumber":350,"author":{"gitId":"-"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2016-12-18"},{"lineNumber":351,"author":{"gitId":"-"},"content":" -fx-font-size: 11;","lastModifiedDate":"2016-12-18"},{"lineNumber":352,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"}],"authorContributionMap":{"chaaaaun":1,"-":351}},{"path":"src/main/resources/view/HelpWindow.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-18"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2021-08-28"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Button?\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2017-12-01"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.stage.Stage?\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003cfx:root resizable\u003d\"false\" title\u003d\"Help\" type\u003d\"javafx.stage.Stage\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-07-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":" \u003cicons\u003e","lastModifiedDate":"2017-12-01"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cImage url\u003d\"@/images/help_icon.png\" /\u003e","lastModifiedDate":"2017-12-01"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003c/icons\u003e","lastModifiedDate":"2017-12-01"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cscene\u003e","lastModifiedDate":"2017-12-01"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cScene\u003e","lastModifiedDate":"2017-12-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2021-08-28"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@HelpWindow.css\" /\u003e","lastModifiedDate":"2021-08-28"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2021-08-28"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-08-28"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cHBox alignment\u003d\"CENTER\" fx:id\u003d\"helpMessageContainer\"\u003e","lastModifiedDate":"2022-01-02"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cchildren\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"helpMessage\" text\u003d\"Label\"\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cInsets right\u003d\"5.0\" /\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/HBox.margin\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003c/Label\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cButton fx:id\u003d\"copyButton\" mnemonicParsing\u003d\"false\" onAction\u003d\"#copyUrl\" text\u003d\"Copy URL\"\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003cInsets left\u003d\"5.0\" /\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003c/HBox.margin\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003c/Button\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003c/children\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003copaqueInsets\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003cInsets bottom\u003d\"10.0\" left\u003d\"5.0\" right\u003d\"10.0\" top\u003d\"5.0\" /\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003c/opaqueInsets\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003cInsets bottom\u003d\"10.0\" left\u003d\"5.0\" right\u003d\"10.0\" top\u003d\"5.0\" /\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2017-12-01"},{"lineNumber":42,"author":{"gitId":"-"},"content":" \u003c/scene\u003e","lastModifiedDate":"2017-12-01"},{"lineNumber":43,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-12-01"}],"authorContributionMap":{"chaaaaun":1,"-":42}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2016-08-26"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Menu?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuBar?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuItem?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"chaaaaun"},"content":"\u003c?import javafx.stage.Stage?\u003e","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"CJerrong"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"chaaaaun"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":"\u003cfx:root type\u003d\"javafx.stage.Stage\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"","lastModifiedDate":"2023-07-27"},{"lineNumber":16,"author":{"gitId":"CJerrong"},"content":" title\u003d\"Elder Scrolls\" minWidth\u003d\"700\" minHeight\u003d\"600\" onCloseRequest\u003d\"#handleExit\"\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cicons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cImage url\u003d\"@/images/address_book_32.png\" /\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003c/icons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cscene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cScene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@DarkTheme.css\" /\u003e","lastModifiedDate":"2016-08-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@Extensions.css\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cVBox\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cMenuBar fx:id\u003d\"menuBar\" VBox.vgrow\u003d\"NEVER\"\u003e","lastModifiedDate":"2017-06-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"File\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003cMenuItem mnemonicParsing\u003d\"false\" onAction\u003d\"#handleExit\" text\u003d\"Exit\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"Help\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003cMenuItem fx:id\u003d\"helpMenuItem\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleHelp\" text\u003d\"Help\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003c/MenuBar\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"commandBoxPlaceholder\" styleClass\u003d\"pane-with-border\"\u003e","lastModifiedDate":"2017-05-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":41,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"resultDisplayPlaceholder\" styleClass\u003d\"pane-with-border\"","lastModifiedDate":"2017-05-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" minHeight\u003d\"100\" prefHeight\u003d\"100\" maxHeight\u003d\"100\"\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":46,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":50,"author":{"gitId":"CJerrong"},"content":" \u003cHBox HBox.hgrow\u003d\"ALWAYS\" VBox.vgrow\u003d\"ALWAYS\" minWidth\u003d\"680\" prefWidth\u003d\"1000\"\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"CJerrong"},"content":" \u003cVBox fx:id\u003d\"befriendeeList\" styleClass\u003d\"pane-with-border\" minWidth\u003d\"340\" prefWidth\u003d\"340\" VBox.vgrow\u003d\"ALWAYS\"","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"CJerrong"},"content":" HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"10\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":56,"author":{"gitId":"chaaaaun"},"content":" \u003cLabel text\u003d\"Befriendees\"/\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"CJerrong"},"content":" \u003cStackPane fx:id\u003d\"befriendeeListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\"/\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":60,"author":{"gitId":"CJerrong"},"content":" \u003cVBox fx:id\u003d\"volunteerList\" styleClass\u003d\"pane-with-border\" minWidth\u003d\"340\" prefWidth\u003d\"340\" VBox.vgrow\u003d\"ALWAYS\"","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"CJerrong"},"content":" HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"CJerrong"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"CJerrong"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"10\" left\u003d\"10\" /\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"CJerrong"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"chaaaaun"},"content":" \u003cLabel text\u003d\"Volunteers\"/\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"CJerrong"},"content":" \u003cStackPane fx:id\u003d\"volunteerListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\"/\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"CJerrong"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"CJerrong"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"statusbarPlaceholder\" VBox.vgrow\u003d\"NEVER\" /\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":71,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":73,"author":{"gitId":"-"},"content":" \u003c/scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":74,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-11-29"}],"authorContributionMap":{"CJerrong":14,"chaaaaun":5,"-":55}},{"path":"src/main/resources/view/PersonListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003cHBox id\u003d\"cardPane\" fx:id\u003d\"cardPane\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-07-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2017-03-28"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2017-03-28"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/Label\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"name\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2016-09-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003cFlowPane fx:id\u003d\"tags\" /\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"soons1"},"content":" \u003cLabel fx:id\u003d\"pairedWith\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$pairedWith\" /\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"soons1":1,"-":35}},{"path":"src/test/java/scrolls/elder/AppParametersTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-02-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-02-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-04-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.HashMap;","lastModifiedDate":"2018-04-21"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-04-21"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Map;","lastModifiedDate":"2018-04-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import javafx.application.Application;","lastModifiedDate":"2018-04-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class AppParametersTest {","lastModifiedDate":"2018-04-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private final ParametersStub parametersStub \u003d new ParametersStub();","lastModifiedDate":"2018-04-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final AppParameters expected \u003d new AppParameters();","lastModifiedDate":"2018-04-21"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void parse_validConfigPath_success() {","lastModifiedDate":"2018-04-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":" parametersStub.namedParameters.put(\"config\", \"config.json\");","lastModifiedDate":"2018-04-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":" expected.setConfigPath(Paths.get(\"config.json\"));","lastModifiedDate":"2018-04-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":" assertEquals(expected, AppParameters.parse(parametersStub));","lastModifiedDate":"2018-04-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void parse_nullConfigPath_success() {","lastModifiedDate":"2018-04-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":" parametersStub.namedParameters.put(\"config\", null);","lastModifiedDate":"2018-04-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertEquals(expected, AppParameters.parse(parametersStub));","lastModifiedDate":"2018-04-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public void parse_invalidConfigPath_success() {","lastModifiedDate":"2018-04-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" parametersStub.namedParameters.put(\"config\", \"a\\0\");","lastModifiedDate":"2018-04-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" expected.setConfigPath(null);","lastModifiedDate":"2018-04-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertEquals(expected, AppParameters.parse(parametersStub));","lastModifiedDate":"2018-04-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" AppParameters appParameters \u003d new AppParameters();","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" String expected \u003d AppParameters.class.getCanonicalName() + \"{configPath\u003d\" + appParameters.getConfigPath() + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertEquals(expected, appParameters.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" AppParameters appParameters \u003d new AppParameters();","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertTrue(appParameters.equals(new AppParameters()));","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertTrue(appParameters.equals(appParameters));","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertFalse(appParameters.equals(null));","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertFalse(appParameters.equals(5.0f));","lastModifiedDate":"2019-02-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" // different config path -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" AppParameters otherAppParameters \u003d new AppParameters();","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" otherAppParameters.setConfigPath(Paths.get(\"configPath\"));","lastModifiedDate":"2019-02-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertFalse(appParameters.equals(otherAppParameters));","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" private static class ParametersStub extends Application.Parameters {","lastModifiedDate":"2018-04-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":" private Map\u003cString, String\u003e namedParameters \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2018-04-21"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-04-21"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public List\u003cString\u003e getRaw() {","lastModifiedDate":"2018-04-21"},{"lineNumber":76,"author":{"gitId":"-"},"content":" throw new AssertionError(\"should not be called\");","lastModifiedDate":"2018-04-21"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-04-21"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public List\u003cString\u003e getUnnamed() {","lastModifiedDate":"2018-04-21"},{"lineNumber":81,"author":{"gitId":"-"},"content":" throw new AssertionError(\"should not be called\");","lastModifiedDate":"2018-04-21"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-04-21"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public Map\u003cString, String\u003e getNamed() {","lastModifiedDate":"2018-04-21"},{"lineNumber":86,"author":{"gitId":"-"},"content":" return Collections.unmodifiableMap(namedParameters);","lastModifiedDate":"2018-04-21"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":89,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-04-21"}],"authorContributionMap":{"chaaaaun":1,"-":88}},{"path":"src/test/java/scrolls/elder/commons/core/ConfigTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.commons.core;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertNotNull;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class ConfigTest {","lastModifiedDate":"2016-09-30"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-30"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":" Config config \u003d new Config();","lastModifiedDate":"2019-02-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":" String expected \u003d Config.class.getCanonicalName() + \"{logLevel\u003d\" + config.getLogLevel()","lastModifiedDate":"2019-02-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":" + \", userPrefsFilePath\u003d\" + config.getUserPrefsFilePath() + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":" assertEquals(expected, config.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-30"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public void equalsMethod() {","lastModifiedDate":"2016-09-30"},{"lineNumber":21,"author":{"gitId":"-"},"content":" Config defaultConfig \u003d new Config();","lastModifiedDate":"2016-09-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":" assertNotNull(defaultConfig);","lastModifiedDate":"2016-10-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":" assertTrue(defaultConfig.equals(defaultConfig));","lastModifiedDate":"2016-09-30"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-30"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":27,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-30"}],"authorContributionMap":{"chaaaaun":1,"-":26}},{"path":"src/test/java/scrolls/elder/commons/core/GuiSettingsTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.commons.core;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-02-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"public class GuiSettingsTest {","lastModifiedDate":"2019-02-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings();","lastModifiedDate":"2019-02-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":" String expected \u003d GuiSettings.class.getCanonicalName() + \"{windowWidth\u003d\" + guiSettings.getWindowWidth()","lastModifiedDate":"2019-02-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":" + \", windowHeight\u003d\" + guiSettings.getWindowHeight() + \", windowCoordinates\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":" + guiSettings.getWindowCoordinates() + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":" assertEquals(expected, guiSettings.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-02-23"}],"authorContributionMap":{"chaaaaun":1,"-":15}},{"path":"src/test/java/scrolls/elder/commons/core/VersionTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.commons.core;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.Assert;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class VersionTest {","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public void versionParsing_acceptableVersionString_parsedVersionCorrectly() {","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" verifyVersionParsedCorrectly(\"V0.0.0ea\", 0, 0, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" verifyVersionParsedCorrectly(\"V3.10.2\", 3, 10, 2, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" verifyVersionParsedCorrectly(\"V100.100.100ea\", 100, 100, 100, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public void versionParsing_wrongVersionString_throwIllegalArgumentException() {","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(IllegalArgumentException.class, () -\u003e Version.fromString(\"This is not a version string\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void versionConstructor_correctParameter_valueAsExpected() {","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" Version version \u003d new Version(19, 10, 20, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertEquals(19, version.getMajor());","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertEquals(10, version.getMinor());","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertEquals(20, version.getPatch());","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertEquals(true, version.isEarlyAccess());","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public void versionToString_validVersion_correctStringRepresentation() {","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" // boundary at 0","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" Version version \u003d new Version(0, 0, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertEquals(\"V0.0.0ea\", version.toString());","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" // normal values","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":" version \u003d new Version(4, 10, 5, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertEquals(\"V4.10.5\", version.toString());","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // big numbers","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" version \u003d new Version(100, 100, 100, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertEquals(\"V100.100.100ea\", version.toString());","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void versionComparable_validVersion_compareToIsCorrect() {","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" Version one;","lastModifiedDate":"2017-09-21"},{"lineNumber":52,"author":{"gitId":"-"},"content":" Version another;","lastModifiedDate":"2017-09-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // Tests equality","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":" one \u003d new Version(0, 0, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" another \u003d new Version(0, 0, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003d\u003d 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" one \u003d new Version(11, 12, 13, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" another \u003d new Version(11, 12, 13, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003d\u003d 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" // Tests different patch","lastModifiedDate":"2016-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" one \u003d new Version(0, 0, 5, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":" another \u003d new Version(0, 0, 0, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003e 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" // Tests different minor","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" one \u003d new Version(0, 0, 0, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":" another \u003d new Version(0, 5, 0, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003c 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":" // Tests different major","lastModifiedDate":"2016-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":" one \u003d new Version(10, 0, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":" another \u003d new Version(0, 0, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003e 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":" // Tests high major vs low minor","lastModifiedDate":"2016-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":" one \u003d new Version(10, 0, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" another \u003d new Version(0, 1, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003e 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":" // Tests high patch vs low minor","lastModifiedDate":"2016-08-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":" one \u003d new Version(0, 0, 10, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":" another \u003d new Version(0, 1, 0, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003c 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":88,"author":{"gitId":"-"},"content":" // Tests same major minor different patch","lastModifiedDate":"2016-08-08"},{"lineNumber":89,"author":{"gitId":"-"},"content":" one \u003d new Version(2, 15, 0, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":" another \u003d new Version(2, 15, 5, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003c 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":93,"author":{"gitId":"-"},"content":" // Tests early access vs not early access on same version number","lastModifiedDate":"2016-08-08"},{"lineNumber":94,"author":{"gitId":"-"},"content":" one \u003d new Version(2, 15, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":95,"author":{"gitId":"-"},"content":" another \u003d new Version(2, 15, 0, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003c 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":" // Tests early access lower version vs not early access higher version compare by version number first","lastModifiedDate":"2016-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":" one \u003d new Version(2, 15, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":" another \u003d new Version(2, 15, 5, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003c 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":" // Tests early access higher version vs not early access lower version compare by version number first","lastModifiedDate":"2016-08-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":" one \u003d new Version(2, 15, 0, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":" another \u003d new Version(2, 15, 5, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003c 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-08-08"},{"lineNumber":110,"author":{"gitId":"-"},"content":" public void versionComparable_validVersion_hashCodeIsCorrect() {","lastModifiedDate":"2016-08-08"},{"lineNumber":111,"author":{"gitId":"-"},"content":" Version version \u003d new Version(100, 100, 100, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertEquals(100100100, version.hashCode());","lastModifiedDate":"2016-08-08"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":" version \u003d new Version(10, 10, 10, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertEquals(1010010010, version.hashCode());","lastModifiedDate":"2016-08-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-08-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":" public void versionComparable_validVersion_equalIsCorrect() {","lastModifiedDate":"2016-08-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" Version one;","lastModifiedDate":"2016-10-16"},{"lineNumber":121,"author":{"gitId":"-"},"content":" Version another;","lastModifiedDate":"2016-10-16"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":" one \u003d new Version(0, 0, 0, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" another \u003d new Version(0, 0, 0, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertTrue(one.equals(another));","lastModifiedDate":"2016-08-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":" one \u003d new Version(100, 191, 275, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":" another \u003d new Version(100, 191, 275, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertTrue(one.equals(another));","lastModifiedDate":"2016-08-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":132,"author":{"gitId":"-"},"content":" private void verifyVersionParsedCorrectly(String versionString,","lastModifiedDate":"2016-08-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":" int major, int minor, int patch, boolean isEarlyAccess) {","lastModifiedDate":"2016-08-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":" assertEquals(new Version(major, minor, patch, isEarlyAccess), Version.fromString(versionString));","lastModifiedDate":"2016-08-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":136,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"chaaaaun":4,"-":132}},{"path":"src/test/java/scrolls/elder/commons/core/index/IndexTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.commons.core.index;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.Assert;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class IndexTest {","lastModifiedDate":"2017-05-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" public void createOneBasedIndex() {","lastModifiedDate":"2017-05-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" // invalid index","lastModifiedDate":"2017-05-24"},{"lineNumber":16,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(IndexOutOfBoundsException.class, () -\u003e Index.fromOneBased(0));","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" // check equality using the same base","lastModifiedDate":"2017-05-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertEquals(1, Index.fromOneBased(1).getOneBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" assertEquals(5, Index.fromOneBased(5).getOneBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" // convert from one-based index to zero-based index","lastModifiedDate":"2017-05-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" assertEquals(0, Index.fromOneBased(1).getZeroBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" assertEquals(4, Index.fromOneBased(5).getZeroBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public void createZeroBasedIndex() {","lastModifiedDate":"2017-05-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" // invalid index","lastModifiedDate":"2017-05-24"},{"lineNumber":30,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(IndexOutOfBoundsException.class, () -\u003e Index.fromZeroBased(-1));","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" // check equality using the same base","lastModifiedDate":"2017-05-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertEquals(0, Index.fromZeroBased(0).getZeroBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertEquals(5, Index.fromZeroBased(5).getZeroBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" // convert from zero-based index to one-based index","lastModifiedDate":"2017-05-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertEquals(1, Index.fromZeroBased(0).getOneBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertEquals(6, Index.fromZeroBased(5).getOneBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-05-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" final Index fifthPersonIndex \u003d Index.fromOneBased(5);","lastModifiedDate":"2017-05-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(fifthPersonIndex.equals(Index.fromOneBased(5)));","lastModifiedDate":"2017-05-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertTrue(fifthPersonIndex.equals(Index.fromZeroBased(4)));","lastModifiedDate":"2017-05-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertTrue(fifthPersonIndex.equals(fifthPersonIndex));","lastModifiedDate":"2017-05-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(fifthPersonIndex.equals(null));","lastModifiedDate":"2017-05-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertFalse(fifthPersonIndex.equals(5.0f));","lastModifiedDate":"2017-05-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertFalse(fifthPersonIndex.equals(Index.fromOneBased(1)));","lastModifiedDate":"2017-05-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromZeroBased(0);","lastModifiedDate":"2019-02-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" String expected \u003d Index.class.getCanonicalName() + \"{zeroBasedIndex\u003d\" + index.getZeroBased() + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertEquals(expected, index.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"chaaaaun":5,"-":63}},{"path":"src/test/java/scrolls/elder/commons/util/AppUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.commons.util;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertNotNull;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":7,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.Assert;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class AppUtilTest {","lastModifiedDate":"2016-09-30"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-30"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void getImage_exitingImage() {","lastModifiedDate":"2016-09-30"},{"lineNumber":13,"author":{"gitId":"-"},"content":" assertNotNull(AppUtil.getImage(\"/images/address_book_32.png\"));","lastModifiedDate":"2016-09-30"},{"lineNumber":14,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-30"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void getImage_nullGiven_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":18,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e AppUtil.getImage(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-30"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-15"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public void checkArgument_true_nothingHappens() {","lastModifiedDate":"2017-05-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":" AppUtil.checkArgument(true);","lastModifiedDate":"2017-05-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":" AppUtil.checkArgument(true, \"\");","lastModifiedDate":"2017-05-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public void checkArgument_falseWithoutErrorMessage_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":29,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(IllegalArgumentException.class, () -\u003e AppUtil.checkArgument(false));","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-15"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public void checkArgument_falseWithErrorMessage_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":34,"author":{"gitId":"-"},"content":" String errorMessage \u003d \"error message\";","lastModifiedDate":"2017-05-15"},{"lineNumber":35,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(IllegalArgumentException.class, errorMessage, ()","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"chaaaaun"},"content":" -\u003e AppUtil.checkArgument(false, errorMessage));","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-30"}],"authorContributionMap":{"chaaaaun":7,"-":31}},{"path":"src/test/java/scrolls/elder/commons/util/CollectionUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.commons.util;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-22"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2016-12-22"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-01-14"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-01-14"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-22"},{"lineNumber":13,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.Assert;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class CollectionUtilTest {","lastModifiedDate":"2016-12-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-22"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void requireAllNonNullVarargs() {","lastModifiedDate":"2017-05-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":" // no arguments","lastModifiedDate":"2017-01-14"},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertNullPointerExceptionNotThrown();","lastModifiedDate":"2017-05-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-22"},{"lineNumber":21,"author":{"gitId":"-"},"content":" // any non-empty argument list","lastModifiedDate":"2017-01-14"},{"lineNumber":22,"author":{"gitId":"-"},"content":" assertNullPointerExceptionNotThrown(new Object(), new Object());","lastModifiedDate":"2017-05-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":" assertNullPointerExceptionNotThrown(\"test\");","lastModifiedDate":"2017-05-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":" assertNullPointerExceptionNotThrown(\"\");","lastModifiedDate":"2017-05-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-22"},{"lineNumber":26,"author":{"gitId":"-"},"content":" // argument lists with just one null at the beginning","lastModifiedDate":"2017-01-14"},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertNullPointerExceptionThrown((Object) null);","lastModifiedDate":"2017-05-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertNullPointerExceptionThrown(null, \"\", new Object());","lastModifiedDate":"2017-05-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertNullPointerExceptionThrown(null, new Object(), new Object());","lastModifiedDate":"2017-05-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-22"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // argument lists with nulls in the middle","lastModifiedDate":"2017-01-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertNullPointerExceptionThrown(new Object(), null, null, \"test\");","lastModifiedDate":"2017-05-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertNullPointerExceptionThrown(\"\", null, new Object());","lastModifiedDate":"2017-05-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-22"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // argument lists with one null as the last argument","lastModifiedDate":"2017-01-14"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertNullPointerExceptionThrown(\"\", new Object(), null);","lastModifiedDate":"2017-05-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertNullPointerExceptionThrown(new Object(), new Object(), null);","lastModifiedDate":"2017-05-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-19"},{"lineNumber":39,"author":{"gitId":"-"},"content":" // null reference","lastModifiedDate":"2017-05-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertNullPointerExceptionThrown((Object[]) null);","lastModifiedDate":"2017-05-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-22"},{"lineNumber":42,"author":{"gitId":"-"},"content":" // confirms nulls inside lists in the argument list are not considered","lastModifiedDate":"2017-01-14"},{"lineNumber":43,"author":{"gitId":"-"},"content":" List\u003cObject\u003e containingNull \u003d Arrays.asList((Object) null);","lastModifiedDate":"2017-01-14"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertNullPointerExceptionNotThrown(containingNull, new Object());","lastModifiedDate":"2017-05-19"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-14"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-14"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-14"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void requireAllNonNullCollection() {","lastModifiedDate":"2017-05-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" // lists containing nulls in the front","lastModifiedDate":"2017-01-14"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertNullPointerExceptionThrown(Arrays.asList((Object) null));","lastModifiedDate":"2017-05-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertNullPointerExceptionThrown(Arrays.asList(null, new Object(), \"\"));","lastModifiedDate":"2017-05-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-14"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // lists containing nulls in the middle","lastModifiedDate":"2017-01-14"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertNullPointerExceptionThrown(Arrays.asList(\"spam\", null, new Object()));","lastModifiedDate":"2017-05-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertNullPointerExceptionThrown(Arrays.asList(\"spam\", null, \"eggs\", null, new Object()));","lastModifiedDate":"2017-05-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-14"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // lists containing nulls at the end","lastModifiedDate":"2017-01-14"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertNullPointerExceptionThrown(Arrays.asList(\"spam\", new Object(), null));","lastModifiedDate":"2017-05-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertNullPointerExceptionThrown(Arrays.asList(new Object(), null));","lastModifiedDate":"2017-05-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":" // null reference","lastModifiedDate":"2017-05-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertNullPointerExceptionThrown((Collection\u003cObject\u003e) null);","lastModifiedDate":"2017-05-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-14"},{"lineNumber":64,"author":{"gitId":"-"},"content":" // empty list","lastModifiedDate":"2017-01-14"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertNullPointerExceptionNotThrown(Collections.emptyList());","lastModifiedDate":"2017-05-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":" // list with all non-null elements","lastModifiedDate":"2017-01-14"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertNullPointerExceptionNotThrown(Arrays.asList(new Object(), \"ham\", Integer.valueOf(1)));","lastModifiedDate":"2018-04-01"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertNullPointerExceptionNotThrown(Arrays.asList(new Object()));","lastModifiedDate":"2017-05-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-14"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // confirms nulls inside nested lists are not considered","lastModifiedDate":"2017-01-14"},{"lineNumber":72,"author":{"gitId":"-"},"content":" List\u003cObject\u003e containingNull \u003d Arrays.asList((Object) null);","lastModifiedDate":"2017-01-14"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertNullPointerExceptionNotThrown(Arrays.asList(containingNull, new Object()));","lastModifiedDate":"2017-05-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-22"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-21"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void isAnyNonNull() {","lastModifiedDate":"2017-06-21"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertFalse(CollectionUtil.isAnyNonNull());","lastModifiedDate":"2017-06-21"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertFalse(CollectionUtil.isAnyNonNull((Object) null));","lastModifiedDate":"2017-06-21"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertFalse(CollectionUtil.isAnyNonNull((Object[]) null));","lastModifiedDate":"2017-06-21"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertTrue(CollectionUtil.isAnyNonNull(new Object()));","lastModifiedDate":"2017-06-21"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertTrue(CollectionUtil.isAnyNonNull(new Object(), null));","lastModifiedDate":"2017-06-21"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-21"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-21"},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-20"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Asserts that {@code CollectionUtil#requireAllNonNull(Object...)} throw {@code NullPointerException}","lastModifiedDate":"2017-08-20"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * if {@code objects} or any element of {@code objects} is null.","lastModifiedDate":"2017-08-20"},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-20"},{"lineNumber":89,"author":{"gitId":"-"},"content":" private void assertNullPointerExceptionThrown(Object... objects) {","lastModifiedDate":"2017-05-19"},{"lineNumber":90,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e CollectionUtil.requireAllNonNull(objects));","lastModifiedDate":"2024-03-12"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-20"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * Asserts that {@code CollectionUtil#requireAllNonNull(Collection\u003c?\u003e)} throw {@code NullPointerException}","lastModifiedDate":"2017-08-20"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * if {@code collection} or any element of {@code collection} is null.","lastModifiedDate":"2017-08-20"},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-20"},{"lineNumber":97,"author":{"gitId":"-"},"content":" private void assertNullPointerExceptionThrown(Collection\u003c?\u003e collection) {","lastModifiedDate":"2017-05-19"},{"lineNumber":98,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e CollectionUtil.requireAllNonNull(collection));","lastModifiedDate":"2024-03-12"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":" private void assertNullPointerExceptionNotThrown(Object... objects) {","lastModifiedDate":"2017-05-19"},{"lineNumber":102,"author":{"gitId":"chaaaaun"},"content":" CollectionUtil.requireAllNonNull(objects);","lastModifiedDate":"2024-03-12"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-19"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-19"},{"lineNumber":105,"author":{"gitId":"-"},"content":" private void assertNullPointerExceptionNotThrown(Collection\u003c?\u003e collection) {","lastModifiedDate":"2017-05-19"},{"lineNumber":106,"author":{"gitId":"chaaaaun"},"content":" CollectionUtil.requireAllNonNull(collection);","lastModifiedDate":"2024-03-12"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-19"},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-22"}],"authorContributionMap":{"chaaaaun":7,"-":101}},{"path":"src/test/java/scrolls/elder/commons/util/ConfigUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.commons.util;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2016-09-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-09-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.logging.Level;","lastModifiedDate":"2016-09-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":15,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.core.Config;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.Assert;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class ConfigUtilTest {","lastModifiedDate":"2016-09-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"ConfigUtilTest\");","lastModifiedDate":"2018-04-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public Path tempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void read_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":28,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e read(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void read_missingFile_emptyResult() throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(read(\"NonExistentFile.json\").isPresent());","lastModifiedDate":"2016-09-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void read_notJsonFormat_exceptionThrown() {","lastModifiedDate":"2019-03-23"},{"lineNumber":38,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(DataLoadingException.class, () -\u003e read(\"NotJsonFormatConfig.json\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void read_fileInOrder_successfullyRead() throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" Config expected \u003d getTypicalConfig();","lastModifiedDate":"2016-09-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" Config actual \u003d read(\"TypicalConfig.json\").get();","lastModifiedDate":"2016-09-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertEquals(expected, actual);","lastModifiedDate":"2016-09-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void read_valuesMissingFromFile_defaultValuesUsed() throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":52,"author":{"gitId":"-"},"content":" Config actual \u003d read(\"EmptyConfig.json\").get();","lastModifiedDate":"2016-09-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertEquals(new Config(), actual);","lastModifiedDate":"2016-09-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void read_extraValuesInFile_extraValuesIgnored() throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":58,"author":{"gitId":"-"},"content":" Config expected \u003d getTypicalConfig();","lastModifiedDate":"2016-09-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" Config actual \u003d read(\"ExtraValuesConfig.json\").get();","lastModifiedDate":"2016-09-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertEquals(expected, actual);","lastModifiedDate":"2016-09-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":" private Config getTypicalConfig() {","lastModifiedDate":"2016-09-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":" Config config \u003d new Config();","lastModifiedDate":"2016-09-25"},{"lineNumber":66,"author":{"gitId":"-"},"content":" config.setLogLevel(Level.INFO);","lastModifiedDate":"2016-09-25"},{"lineNumber":67,"author":{"gitId":"-"},"content":" config.setUserPrefsFilePath(Paths.get(\"preferences.json\"));","lastModifiedDate":"2018-04-12"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return config;","lastModifiedDate":"2016-09-25"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":71,"author":{"gitId":"-"},"content":" private Optional\u003cConfig\u003e read(String configFileInTestDataFolder) throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":72,"author":{"gitId":"-"},"content":" Path configFilePath \u003d addToTestDataPathIfNotNull(configFileInTestDataFolder);","lastModifiedDate":"2018-04-21"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return ConfigUtil.readConfig(configFilePath);","lastModifiedDate":"2016-12-20"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void save_nullConfig_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":78,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e save(null, \"SomeFile.json\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void save_nullFile_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":83,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e save(new Config(), null));","lastModifiedDate":"2024-03-12"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void saveConfig_allInOrder_success() throws DataLoadingException, IOException {","lastModifiedDate":"2023-06-14"},{"lineNumber":88,"author":{"gitId":"-"},"content":" Config original \u003d getTypicalConfig();","lastModifiedDate":"2016-09-24"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":90,"author":{"gitId":"-"},"content":" Path configFilePath \u003d tempDir.resolve(\"TempConfig.json\");","lastModifiedDate":"2019-04-25"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":92,"author":{"gitId":"-"},"content":" //Try writing when the file doesn\u0027t exist","lastModifiedDate":"2016-09-24"},{"lineNumber":93,"author":{"gitId":"-"},"content":" ConfigUtil.saveConfig(original, configFilePath);","lastModifiedDate":"2016-12-20"},{"lineNumber":94,"author":{"gitId":"-"},"content":" Config readBack \u003d ConfigUtil.readConfig(configFilePath).get();","lastModifiedDate":"2016-12-20"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertEquals(original, readBack);","lastModifiedDate":"2016-09-24"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":97,"author":{"gitId":"-"},"content":" //Try saving when the file exists","lastModifiedDate":"2016-09-24"},{"lineNumber":98,"author":{"gitId":"-"},"content":" original.setLogLevel(Level.FINE);","lastModifiedDate":"2016-09-25"},{"lineNumber":99,"author":{"gitId":"-"},"content":" ConfigUtil.saveConfig(original, configFilePath);","lastModifiedDate":"2016-12-20"},{"lineNumber":100,"author":{"gitId":"-"},"content":" readBack \u003d ConfigUtil.readConfig(configFilePath).get();","lastModifiedDate":"2016-12-20"},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertEquals(original, readBack);","lastModifiedDate":"2016-09-24"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":104,"author":{"gitId":"-"},"content":" private void save(Config config, String configFileInTestDataFolder) throws IOException {","lastModifiedDate":"2016-09-24"},{"lineNumber":105,"author":{"gitId":"-"},"content":" Path configFilePath \u003d addToTestDataPathIfNotNull(configFileInTestDataFolder);","lastModifiedDate":"2018-04-21"},{"lineNumber":106,"author":{"gitId":"-"},"content":" ConfigUtil.saveConfig(config, configFilePath);","lastModifiedDate":"2016-12-20"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":109,"author":{"gitId":"-"},"content":" private Path addToTestDataPathIfNotNull(String configFileInTestDataFolder) {","lastModifiedDate":"2018-04-21"},{"lineNumber":110,"author":{"gitId":"-"},"content":" return configFileInTestDataFolder !\u003d null","lastModifiedDate":"2016-09-24"},{"lineNumber":111,"author":{"gitId":"-"},"content":" ? TEST_DATA_FOLDER.resolve(configFileInTestDataFolder)","lastModifiedDate":"2018-04-21"},{"lineNumber":112,"author":{"gitId":"-"},"content":" : null;","lastModifiedDate":"2016-09-24"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":116,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-24"}],"authorContributionMap":{"chaaaaun":8,"-":108}},{"path":"src/test/java/scrolls/elder/commons/util/FileUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.commons.util;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.Assert;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class FileUtilTest {","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-21"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public void isValidPath() {","lastModifiedDate":"2018-04-21"},{"lineNumber":14,"author":{"gitId":"-"},"content":" // valid path","lastModifiedDate":"2018-04-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":" assertTrue(FileUtil.isValidPath(\"valid/file/path\"));","lastModifiedDate":"2018-04-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":" // invalid path","lastModifiedDate":"2018-04-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":" assertFalse(FileUtil.isValidPath(\"a\\0\"));","lastModifiedDate":"2018-04-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":" // null path -\u003e throws NullPointerException","lastModifiedDate":"2018-04-21"},{"lineNumber":21,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e FileUtil.isValidPath(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"chaaaaun":4,"-":20}},{"path":"src/test/java/scrolls/elder/commons/util/JsonUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.commons.util;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2016-10-07"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.SerializableTestClass;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.TestUtil;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Tests JSON Read and Write","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class JsonUtilTest {","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private static final Path SERIALIZATION_FILE \u003d TestUtil.getFilePathInSandboxFolder(\"serialize.json\");","lastModifiedDate":"2018-04-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-07"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public void serializeObjectToJsonFile_noExceptionThrown() throws IOException {","lastModifiedDate":"2016-10-07"},{"lineNumber":22,"author":{"gitId":"-"},"content":" SerializableTestClass serializableTestClass \u003d new SerializableTestClass();","lastModifiedDate":"2016-10-07"},{"lineNumber":23,"author":{"gitId":"-"},"content":" serializableTestClass.setTestValues();","lastModifiedDate":"2016-10-07"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":25,"author":{"gitId":"-"},"content":" JsonUtil.serializeObjectToJsonFile(SERIALIZATION_FILE, serializableTestClass);","lastModifiedDate":"2016-10-07"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertEquals(FileUtil.readFromFile(SERIALIZATION_FILE), SerializableTestClass.JSON_STRING_REPRESENTATION);","lastModifiedDate":"2016-10-07"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-07"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-07"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void deserializeObjectFromJsonFile_noExceptionThrown() throws IOException {","lastModifiedDate":"2016-10-07"},{"lineNumber":32,"author":{"gitId":"-"},"content":" FileUtil.writeToFile(SERIALIZATION_FILE, SerializableTestClass.JSON_STRING_REPRESENTATION);","lastModifiedDate":"2016-10-07"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":34,"author":{"gitId":"-"},"content":" SerializableTestClass serializableTestClass \u003d JsonUtil","lastModifiedDate":"2016-10-07"},{"lineNumber":35,"author":{"gitId":"-"},"content":" .deserializeObjectFromJsonFile(SERIALIZATION_FILE, SerializableTestClass.class);","lastModifiedDate":"2016-10-07"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertEquals(serializableTestClass.getName(), SerializableTestClass.getNameTestValue());","lastModifiedDate":"2016-10-07"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertEquals(serializableTestClass.getListOfLocalDateTimes(), SerializableTestClass.getListTestValues());","lastModifiedDate":"2016-10-07"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertEquals(serializableTestClass.getMapOfIntegerToString(), SerializableTestClass.getHashMapTestValues());","lastModifiedDate":"2016-10-07"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-07"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":42,"author":{"gitId":"-"},"content":" //TODO: @Test jsonUtil_readJsonStringToObjectInstance_correctObject()","lastModifiedDate":"2016-09-28"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":44,"author":{"gitId":"-"},"content":" //TODO: @Test jsonUtil_writeThenReadObjectToJson_correctObject()","lastModifiedDate":"2016-09-28"},{"lineNumber":45,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"chaaaaun":3,"-":42}},{"path":"src/test/java/scrolls/elder/commons/util/StringUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.commons.util;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.Assert;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class StringUtilTest {","lastModifiedDate":"2016-09-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":" //---------------- Tests for isNonZeroUnsignedInteger --------------------------------------","lastModifiedDate":"2019-02-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-22"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void isNonZeroUnsignedInteger() {","lastModifiedDate":"2019-02-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" // EP: empty strings","lastModifiedDate":"2016-10-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.isNonZeroUnsignedInteger(\"\")); // Boundary value","lastModifiedDate":"2017-06-02"},{"lineNumber":21,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.isNonZeroUnsignedInteger(\" \"));","lastModifiedDate":"2017-06-02"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" // EP: not a number","lastModifiedDate":"2016-10-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.isNonZeroUnsignedInteger(\"a\"));","lastModifiedDate":"2017-06-02"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.isNonZeroUnsignedInteger(\"aaa\"));","lastModifiedDate":"2017-06-02"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // EP: zero","lastModifiedDate":"2016-10-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.isNonZeroUnsignedInteger(\"0\"));","lastModifiedDate":"2017-06-02"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02"},{"lineNumber":30,"author":{"gitId":"-"},"content":" // EP: zero as prefix","lastModifiedDate":"2017-06-02"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.isNonZeroUnsignedInteger(\"01\"));","lastModifiedDate":"2017-06-02"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // EP: signed numbers","lastModifiedDate":"2016-10-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.isNonZeroUnsignedInteger(\"-1\"));","lastModifiedDate":"2017-06-02"},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.isNonZeroUnsignedInteger(\"+1\"));","lastModifiedDate":"2017-06-02"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" // EP: numbers with white space","lastModifiedDate":"2016-10-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.isNonZeroUnsignedInteger(\" 10 \")); // Leading/trailing spaces","lastModifiedDate":"2017-06-02"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.isNonZeroUnsignedInteger(\"1 0\")); // Spaces in the middle","lastModifiedDate":"2017-06-02"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02"},{"lineNumber":41,"author":{"gitId":"-"},"content":" // EP: number larger than Integer.MAX_VALUE","lastModifiedDate":"2017-06-02"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.isNonZeroUnsignedInteger(Long.toString(Integer.MAX_VALUE + 1)));","lastModifiedDate":"2017-06-02"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // EP: valid numbers, should return true","lastModifiedDate":"2016-10-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.isNonZeroUnsignedInteger(\"1\")); // Boundary value","lastModifiedDate":"2017-06-02"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.isNonZeroUnsignedInteger(\"10\"));","lastModifiedDate":"2017-06-02"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" //---------------- Tests for containsWordIgnoreCase --------------------------------------","lastModifiedDate":"2016-10-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Invalid equivalence partitions for word: null, empty, multiple words","lastModifiedDate":"2016-10-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Invalid equivalence partitions for sentence: null","lastModifiedDate":"2016-10-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * The four test cases below test one invalid input at a time.","lastModifiedDate":"2016-10-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void containsWordIgnoreCase_nullWord_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":60,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, ()","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"chaaaaun"},"content":" -\u003e StringUtil.containsWordIgnoreCase(\"typical sentence\", null));","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void containsWordIgnoreCase_emptyWord_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":66,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(IllegalArgumentException.class, \"Word parameter cannot be empty\", ()","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":" -\u003e StringUtil.containsWordIgnoreCase(\"typical sentence\", \" \"));","lastModifiedDate":"2019-03-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public void containsWordIgnoreCase_multipleWords_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":72,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(IllegalArgumentException.class, \"Word parameter should be a single word\", ()","lastModifiedDate":"2024-03-12"},{"lineNumber":73,"author":{"gitId":"-"},"content":" -\u003e StringUtil.containsWordIgnoreCase(\"typical sentence\", \"aaa BBB\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void containsWordIgnoreCase_nullSentence_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":78,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e StringUtil.containsWordIgnoreCase(null, \"abc\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" * Valid equivalence partitions for word:","lastModifiedDate":"2016-10-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * - any word","lastModifiedDate":"2016-10-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * - word containing symbols/numbers","lastModifiedDate":"2016-10-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * - word with leading/trailing spaces","lastModifiedDate":"2016-10-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Valid equivalence partitions for sentence:","lastModifiedDate":"2016-10-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * - empty string","lastModifiedDate":"2016-10-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * - one word","lastModifiedDate":"2016-10-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * - multiple words","lastModifiedDate":"2016-10-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * - sentence with extra spaces","lastModifiedDate":"2016-10-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Possible scenarios returning true:","lastModifiedDate":"2016-10-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * - matches first word in sentence","lastModifiedDate":"2016-10-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * - last word in sentence","lastModifiedDate":"2016-10-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * - middle word in sentence","lastModifiedDate":"2016-10-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * - matches multiple words","lastModifiedDate":"2016-10-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * Possible scenarios returning false:","lastModifiedDate":"2016-10-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * - query word matches part of a sentence word","lastModifiedDate":"2016-10-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * - sentence word matches part of the query word","lastModifiedDate":"2016-10-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * The test method below tries to verify all above with a reasonably low number of test cases.","lastModifiedDate":"2016-10-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public void containsWordIgnoreCase_validInputs_correctResult() {","lastModifiedDate":"2016-10-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":" // Empty sentence","lastModifiedDate":"2016-10-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.containsWordIgnoreCase(\"\", \"abc\")); // Boundary case","lastModifiedDate":"2016-10-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.containsWordIgnoreCase(\" \", \"123\"));","lastModifiedDate":"2016-10-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":" // Matches a partial word only","lastModifiedDate":"2016-10-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.containsWordIgnoreCase(\"aaa bbb ccc\", \"bb\")); // Sentence word bigger than query word","lastModifiedDate":"2016-10-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.containsWordIgnoreCase(\"aaa bbb ccc\", \"bbbb\")); // Query word bigger than sentence word","lastModifiedDate":"2016-10-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":" // Matches word in the sentence, different upper/lower case letters","lastModifiedDate":"2016-10-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.containsWordIgnoreCase(\"aaa bBb ccc\", \"Bbb\")); // First word (boundary case)","lastModifiedDate":"2016-10-13"},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.containsWordIgnoreCase(\"aaa bBb ccc@1\", \"CCc@1\")); // Last word (boundary case)","lastModifiedDate":"2016-10-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.containsWordIgnoreCase(\" AAA bBb ccc \", \"aaa\")); // Sentence has extra spaces","lastModifiedDate":"2016-10-13"},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.containsWordIgnoreCase(\"Aaa\", \"aaa\")); // Only one word in sentence (boundary case)","lastModifiedDate":"2016-10-13"},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.containsWordIgnoreCase(\"aaa bbb ccc\", \" ccc \")); // Leading/trailing spaces","lastModifiedDate":"2016-10-13"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":124,"author":{"gitId":"-"},"content":" // Matches multiple words in sentence","lastModifiedDate":"2016-10-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.containsWordIgnoreCase(\"AAA bBb ccc bbb\", \"bbB\"));","lastModifiedDate":"2016-10-13"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-13"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":128,"author":{"gitId":"-"},"content":" //---------------- Tests for getDetails --------------------------------------","lastModifiedDate":"2016-10-13"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":130,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-13"},{"lineNumber":131,"author":{"gitId":"-"},"content":" * Equivalence Partitions: null, valid throwable object","lastModifiedDate":"2016-10-13"},{"lineNumber":132,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-13"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":134,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-30"},{"lineNumber":135,"author":{"gitId":"-"},"content":" public void getDetails_exceptionGiven() {","lastModifiedDate":"2016-09-30"},{"lineNumber":136,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.getDetails(new FileNotFoundException(\"file not found\"))","lastModifiedDate":"2019-03-14"},{"lineNumber":137,"author":{"gitId":"-"},"content":" .contains(\"java.io.FileNotFoundException: file not found\"));","lastModifiedDate":"2019-03-14"},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-30"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":140,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-30"},{"lineNumber":141,"author":{"gitId":"-"},"content":" public void getDetails_nullGiven_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":142,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e StringUtil.getDetails(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-30"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":145,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22"}],"authorContributionMap":{"chaaaaun":9,"-":136}},{"path":"src/test/java/scrolls/elder/logic/LogicManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.logic;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":13,"author":{"gitId":"sdevih"},"content":"import scrolls.elder.logic.commands.AddCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"sdevih"},"content":"import scrolls.elder.logic.commands.CommandResult;","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"sdevih"},"content":"import scrolls.elder.logic.commands.CommandTestUtil;","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"sdevih"},"content":"import scrolls.elder.logic.commands.DeleteCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"sdevih"},"content":"import scrolls.elder.logic.commands.ListCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.Model;","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.ModelManager;","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.UserPrefs;","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Person;","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.storage.JsonAddressBookStorage;","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.storage.JsonUserPrefsStorage;","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.storage.StorageManager;","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.Assert;","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.PersonBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.TypicalPersons;","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":"public class LogicManagerTest {","lastModifiedDate":"2016-09-22"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_IO_EXCEPTION \u003d new IOException(\"dummy IO exception\");","lastModifiedDate":"2023-06-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_AD_EXCEPTION \u003d new AccessDeniedException(\"dummy access denied exception\");","lastModifiedDate":"2023-06-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public Path temporaryFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-20"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2018-12-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2019-04-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d","lastModifiedDate":"2019-04-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(temporaryFolder.resolve(\"addressBook.json\"));","lastModifiedDate":"2019-04-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2019-04-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2018-12-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-20"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void execute_invalidCommandFormat_throwsParseException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":53,"author":{"gitId":"-"},"content":" String invalidCommand \u003d \"uicfhmowqewca\";","lastModifiedDate":"2017-06-20"},{"lineNumber":54,"author":{"gitId":"chaaaaun"},"content":" assertParseException(invalidCommand, Messages.MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-14"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void execute_commandExecutionError_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":59,"author":{"gitId":"chaaaaun"},"content":" String deleteCommand \u003d \"delete 9 r/volunteer\";","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"sdevih"},"content":" String expectedMessage \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"sdevih"},"content":" DeleteCommand.MESSAGE_DELETE_PERSON_ERROR + Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"sdevih"},"content":" assertCommandException(deleteCommand, expectedMessage);","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void execute_validCommand_success() throws Exception {","lastModifiedDate":"2019-03-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":" String listCommand \u003d ListCommand.COMMAND_WORD;","lastModifiedDate":"2017-06-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertCommandSuccess(listCommand, ListCommand.MESSAGE_SUCCESS, model);","lastModifiedDate":"2017-06-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2019-04-25"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-06-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-06-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2023-06-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":85,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredPersonList().remove(0));","lastModifiedDate":"2024-03-12"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":88,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":95,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14"},{"lineNumber":96,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14"},{"lineNumber":97,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14"},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":102,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"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"},{"lineNumber":104,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":105,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":106,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11"},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":110,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14"},{"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"},{"lineNumber":112,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":113,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14"},{"lineNumber":114,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14"},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":118,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"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"},{"lineNumber":120,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":122,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-05-31"},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":128,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":129,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":130,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":131,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":132,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":133,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":134,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":135,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":136,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31"},{"lineNumber":137,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2024-03-12"},{"lineNumber":138,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19"},{"lineNumber":141,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":142,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13"},{"lineNumber":143,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13"},{"lineNumber":144,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13"},{"lineNumber":145,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13"},{"lineNumber":146,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":147,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13"},{"lineNumber":148,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":150,"author":{"gitId":"-"},"content":" // Inject LogicManager with an AddressBookStorage that throws the IOException e when saving","lastModifiedDate":"2023-06-13"},{"lineNumber":151,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(prefPath) {","lastModifiedDate":"2023-06-13"},{"lineNumber":152,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":153,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath)","lastModifiedDate":"2023-06-13"},{"lineNumber":154,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13"},{"lineNumber":155,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13"},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":157,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":159,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":160,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13"},{"lineNumber":161,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2023-06-13"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":163,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":165,"author":{"gitId":"-"},"content":" // Triggers the saveAddressBook method by executing an add command","lastModifiedDate":"2023-06-13"},{"lineNumber":166,"author":{"gitId":"chaaaaun"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + CommandTestUtil.NAME_DESC_AMY + CommandTestUtil.PHONE_DESC_AMY","lastModifiedDate":"2024-03-12"},{"lineNumber":167,"author":{"gitId":"gerteck"},"content":" + CommandTestUtil.EMAIL_DESC_AMY + CommandTestUtil.ADDRESS_DESC_AMY","lastModifiedDate":"2024-03-16"},{"lineNumber":168,"author":{"gitId":"gerteck"},"content":" + CommandTestUtil.ROLE_DESC_VOLUNTEER;","lastModifiedDate":"2024-03-16"},{"lineNumber":169,"author":{"gitId":"chaaaaun"},"content":" Person expectedPerson \u003d new PersonBuilder(TypicalPersons.AMY).withTags().build();","lastModifiedDate":"2024-03-12"},{"lineNumber":170,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13"},{"lineNumber":171,"author":{"gitId":"-"},"content":" expectedModel.addPerson(expectedPerson);","lastModifiedDate":"2023-06-13"},{"lineNumber":172,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13"},{"lineNumber":173,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":174,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"gerteck":2,"chaaaaun":20,"-":144,"sdevih":8}},{"path":"src/test/java/scrolls/elder/logic/commands/AddCommandIntegrationTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.logic.commands;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":3,"author":{"gitId":"chaaaaun"},"content":"import static scrolls.elder.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"chaaaaun"},"content":"import static scrolls.elder.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.Messages;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.Model;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.ModelManager;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.UserPrefs;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Person;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.PersonBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.TypicalPersons;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-15"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code AddCommand}.","lastModifiedDate":"2017-06-15"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-15"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class AddCommandIntegrationTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-15"},{"lineNumber":26,"author":{"gitId":"chaaaaun"},"content":" model \u003d new ModelManager(TypicalPersons.getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void execute_newPerson_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":31,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-15"},{"lineNumber":34,"author":{"gitId":"chaaaaun"},"content":" validPerson.setId(expectedModel.getAddressBook().getGlobalId());","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"-"},"content":" expectedModel.addPerson(validPerson);","lastModifiedDate":"2017-06-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertCommandSuccess(new AddCommand(validPerson), model,","lastModifiedDate":"2019-01-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validPerson)),","lastModifiedDate":"2019-02-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" expectedModel);","lastModifiedDate":"2019-02-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(0);","lastModifiedDate":"2018-01-10"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertCommandFailure(new AddCommand(personInList), model,","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" AddCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"chaaaaun":12,"-":37}},{"path":"src/test/java/scrolls/elder/logic/commands/AddCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.logic.commands;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-01-10"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-05-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":16,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.core.GuiSettings;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.Messages;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.AddressBook;","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.Model;","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.ReadOnlyUserPrefs;","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Person;","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.Assert;","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.PersonBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.TypicalPersons;","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class AddCommandTest {","lastModifiedDate":"2017-05-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":32,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e new AddCommand(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public void execute_personAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2017-05-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" ModelStubAcceptingPersonAdded modelStub \u003d new ModelStubAcceptingPersonAdded();","lastModifiedDate":"2017-05-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new AddCommand(validPerson).execute(modelStub);","lastModifiedDate":"2019-01-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertEquals(String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validPerson)),","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(validPerson), modelStub.personsAdded);","lastModifiedDate":"2017-05-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(validPerson);","lastModifiedDate":"2018-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" ModelStub modelStub \u003d new ModelStubWithPerson(validPerson);","lastModifiedDate":"2018-08-07"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":53,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(CommandException.class, AddCommand.MESSAGE_DUPLICATE_PERSON, ()","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"chaaaaun"},"content":" -\u003e addCommand.execute(modelStub));","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-22"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":59,"author":{"gitId":"-"},"content":" Person alice \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2017-06-22"},{"lineNumber":60,"author":{"gitId":"-"},"content":" Person bob \u003d new PersonBuilder().withName(\"Bob\").build();","lastModifiedDate":"2017-06-22"},{"lineNumber":61,"author":{"gitId":"-"},"content":" AddCommand addAliceCommand \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22"},{"lineNumber":62,"author":{"gitId":"-"},"content":" AddCommand addBobCommand \u003d new AddCommand(bob);","lastModifiedDate":"2017-06-22"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":64,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommand));","lastModifiedDate":"2017-06-22"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":67,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":" AddCommand addAliceCommandCopy \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommandCopy));","lastModifiedDate":"2017-06-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(1));","lastModifiedDate":"2017-06-22"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":74,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(null));","lastModifiedDate":"2017-06-22"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":77,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(addBobCommand));","lastModifiedDate":"2017-06-22"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"chaaaaun"},"content":" AddCommand addCommand \u003d new AddCommand(TypicalPersons.ALICE);","lastModifiedDate":"2024-03-12"},{"lineNumber":84,"author":{"gitId":"chaaaaun"},"content":" String expected \u003d AddCommand.class.getCanonicalName() + \"{toAdd\u003d\" + TypicalPersons.ALICE + \"}\";","lastModifiedDate":"2024-03-12"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertEquals(expected, addCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2017-05-12"},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":91,"author":{"gitId":"-"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2017-05-12"},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":93,"author":{"gitId":"chaaaaun"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2024-03-12"},{"lineNumber":94,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":98,"author":{"gitId":"chaaaaun"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2024-03-12"},{"lineNumber":99,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":104,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":109,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":113,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":114,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":118,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27"},{"lineNumber":119,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":123,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":124,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":128,"author":{"gitId":"chaaaaun"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2024-03-12"},{"lineNumber":129,"author":{"gitId":"chaaaaun"},"content":" return new AddressBook(0);","lastModifiedDate":"2024-03-17"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":133,"author":{"gitId":"chaaaaun"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2024-03-12"},{"lineNumber":134,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":137,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":138,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06"},{"lineNumber":139,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":142,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":143,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-08"},{"lineNumber":144,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":147,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":148,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":149,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":152,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":153,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":154,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":157,"author":{"gitId":"CJerrong"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":158,"author":{"gitId":"CJerrong"},"content":" public ObservableList\u003cPerson\u003e getFilteredVolunteerList() {","lastModifiedDate":"2024-03-20"},{"lineNumber":159,"author":{"gitId":"CJerrong"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-20"},{"lineNumber":160,"author":{"gitId":"CJerrong"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":161,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":162,"author":{"gitId":"CJerrong"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":163,"author":{"gitId":"CJerrong"},"content":" public ObservableList\u003cPerson\u003e getFilteredBefriendeeList() {","lastModifiedDate":"2024-03-20"},{"lineNumber":164,"author":{"gitId":"CJerrong"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-20"},{"lineNumber":165,"author":{"gitId":"CJerrong"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":166,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":167,"author":{"gitId":"CJerrong"},"content":" @Override","lastModifiedDate":"2024-03-22"},{"lineNumber":168,"author":{"gitId":"CJerrong"},"content":" public Person getPersonFromID(int i) {","lastModifiedDate":"2024-03-22"},{"lineNumber":169,"author":{"gitId":"CJerrong"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-22"},{"lineNumber":170,"author":{"gitId":"CJerrong"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":171,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":172,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":173,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10"},{"lineNumber":174,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":178,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":179,"author":{"gitId":"-"},"content":" * A Model stub that contains a single person.","lastModifiedDate":"2018-08-07"},{"lineNumber":180,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":181,"author":{"gitId":"-"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2018-08-07"},{"lineNumber":182,"author":{"gitId":"-"},"content":" private final Person person;","lastModifiedDate":"2018-08-07"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":184,"author":{"gitId":"-"},"content":" ModelStubWithPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":185,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":186,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2018-08-07"},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":189,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":190,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":191,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":192,"author":{"gitId":"-"},"content":" return this.person.isSamePerson(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":193,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":194,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":196,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":197,"author":{"gitId":"-"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2017-05-12"},{"lineNumber":198,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":199,"author":{"gitId":"-"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2017-05-12"},{"lineNumber":200,"author":{"gitId":"-"},"content":" final ArrayList\u003cPerson\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2017-05-12"},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":202,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07"},{"lineNumber":203,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":204,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":205,"author":{"gitId":"-"},"content":" return personsAdded.stream().anyMatch(person::isSamePerson);","lastModifiedDate":"2018-08-07"},{"lineNumber":206,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":208,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":209,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-08"},{"lineNumber":210,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":211,"author":{"gitId":"-"},"content":" personsAdded.add(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":212,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":214,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":215,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04"},{"lineNumber":216,"author":{"gitId":"chaaaaun"},"content":" return new AddressBook(0);","lastModifiedDate":"2024-03-17"},{"lineNumber":217,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":218,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":220,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12"}],"authorContributionMap":{"CJerrong":15,"chaaaaun":23,"-":182}},{"path":"src/test/java/scrolls/elder/logic/commands/ClearCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.logic.commands;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":3,"author":{"gitId":"chaaaaun"},"content":"import static scrolls.elder.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":7,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.AddressBook;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.Model;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.ModelManager;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.UserPrefs;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.TypicalPersons;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class ClearCommandTest {","lastModifiedDate":"2017-06-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public void execute_emptyAddressBook_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":17,"author":{"gitId":"-"},"content":" Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2018-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ClearCommand(), model, ClearCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void execute_nonEmptyAddressBook_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":25,"author":{"gitId":"chaaaaun"},"content":" Model model \u003d new ModelManager(TypicalPersons.getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"chaaaaun"},"content":" Model expectedModel \u003d new ModelManager(TypicalPersons.getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"chaaaaun"},"content":" expectedModel.setAddressBook(new AddressBook(0));","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ClearCommand(), model, ClearCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-08"}],"authorContributionMap":{"chaaaaun":10,"-":22}},{"path":"src/test/java/scrolls/elder/logic/commands/CommandResultTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.logic.commands;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class CommandResultTest {","lastModifiedDate":"2018-12-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-12-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new CommandResult(\"feedback\");","lastModifiedDate":"2018-12-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-12-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":" assertTrue(commandResult.equals(new CommandResult(\"feedback\")));","lastModifiedDate":"2018-12-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":" assertTrue(commandResult.equals(new CommandResult(\"feedback\", false, false)));","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":" assertTrue(commandResult.equals(commandResult));","lastModifiedDate":"2018-12-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(null));","lastModifiedDate":"2018-12-09"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":25,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":26,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(0.5f));","lastModifiedDate":"2018-12-09"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":28,"author":{"gitId":"-"},"content":" // different feedbackToUser value -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(new CommandResult(\"different\")));","lastModifiedDate":"2018-12-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // different showHelp value -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(new CommandResult(\"feedback\", true, false)));","lastModifiedDate":"2018-12-09"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":" // different exit value -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(new CommandResult(\"feedback\", false, true)));","lastModifiedDate":"2018-12-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void hashcode() {","lastModifiedDate":"2018-12-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new CommandResult(\"feedback\");","lastModifiedDate":"2018-12-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":" // same values -\u003e returns same hashcode","lastModifiedDate":"2018-12-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertEquals(commandResult.hashCode(), new CommandResult(\"feedback\").hashCode());","lastModifiedDate":"2018-12-09"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // different feedbackToUser value -\u003e returns different hashcode","lastModifiedDate":"2018-12-09"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertNotEquals(commandResult.hashCode(), new CommandResult(\"different\").hashCode());","lastModifiedDate":"2018-12-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // different showHelp value -\u003e returns different hashcode","lastModifiedDate":"2018-12-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertNotEquals(commandResult.hashCode(), new CommandResult(\"feedback\", true, false).hashCode());","lastModifiedDate":"2018-12-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // different exit value -\u003e returns different hashcode","lastModifiedDate":"2018-12-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertNotEquals(commandResult.hashCode(), new CommandResult(\"feedback\", false, true).hashCode());","lastModifiedDate":"2018-12-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new CommandResult(\"feedback\");","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" String expected \u003d CommandResult.class.getCanonicalName() + \"{feedbackToUser\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" + commandResult.getFeedbackToUser() + \", showHelp\u003d\" + commandResult.isShowHelp()","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" + \", exit\u003d\" + commandResult.isExit() + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertEquals(expected, commandResult.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-12-09"}],"authorContributionMap":{"chaaaaun":1,"-":62}},{"path":"src/test/java/scrolls/elder/logic/commands/CommandTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.logic.commands;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.core.index.Index;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.parser.CliSyntax;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.AddressBook;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.Model;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Person;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.Assert;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":25,"author":{"gitId":"chaaaaun"},"content":" public static final int VALID_ID_AMY \u003d 0;","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"chaaaaun"},"content":" public static final int VALID_ID_BOB \u003d 1;","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_AMY \u003d \"11111111\";","lastModifiedDate":"2017-07-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_BOB \u003d \"22222222\";","lastModifiedDate":"2017-07-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_AMY \u003d \"Block 312, Amy Street 1\";","lastModifiedDate":"2017-07-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_BOB \u003d \"Block 123, Bobby Street 3\";","lastModifiedDate":"2017-07-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_HUSBAND \u003d \"husband\";","lastModifiedDate":"2017-07-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_FRIEND \u003d \"friend\";","lastModifiedDate":"2017-07-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":38,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":39,"author":{"gitId":"gerteck"},"content":" public static final String VALID_ROLE_VOLUNTEER \u003d \"volunteer\";","lastModifiedDate":"2024-03-15"},{"lineNumber":40,"author":{"gitId":"gerteck"},"content":" public static final String VALID_ROLE_BEFRIENDEE \u003d \"befriendee\";","lastModifiedDate":"2024-03-15"},{"lineNumber":41,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":42,"author":{"gitId":"chaaaaun"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + CliSyntax.PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"chaaaaun"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + CliSyntax.PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"chaaaaun"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + CliSyntax.PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"chaaaaun"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + CliSyntax.PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"chaaaaun"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + CliSyntax.PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"chaaaaun"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + CliSyntax.PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"chaaaaun"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + CliSyntax.PREFIX_ADDRESS + VALID_ADDRESS_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"chaaaaun"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + CliSyntax.PREFIX_ADDRESS + VALID_ADDRESS_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"chaaaaun"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + CliSyntax.PREFIX_TAG + VALID_TAG_FRIEND;","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"chaaaaun"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + CliSyntax.PREFIX_TAG + VALID_TAG_HUSBAND;","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"gerteck"},"content":" public static final String ROLE_DESC_VOLUNTEER \u003d \" \" + CliSyntax.PREFIX_ROLE + VALID_ROLE_VOLUNTEER;","lastModifiedDate":"2024-03-15"},{"lineNumber":54,"author":{"gitId":"gerteck"},"content":" public static final String ROLE_DESC_BEFRIENDEE \u003d \" \" + CliSyntax.PREFIX_ROLE + VALID_ROLE_BEFRIENDEE;","lastModifiedDate":"2024-03-15"},{"lineNumber":55,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":56,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":57,"author":{"gitId":"chaaaaun"},"content":" public static final String INVALID_NAME_DESC \u003d \" \" + CliSyntax.PREFIX_NAME + \"James\u0026\"; // \u0027\u0026\u0027 not allowed in names","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"chaaaaun"},"content":" public static final String INVALID_PHONE_DESC \u003d \" \" + CliSyntax.PREFIX_PHONE + \"911a\"; // \u0027a\u0027 not allowed in phones","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"chaaaaun"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + CliSyntax.PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"chaaaaun"},"content":" public static final String INVALID_ADDRESS_DESC \u003d \" \"","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"chaaaaun"},"content":" + CliSyntax.PREFIX_ADDRESS; // empty string not allowed for addresses","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"chaaaaun"},"content":" public static final String INVALID_TAG_DESC \u003d \" \" + CliSyntax.PREFIX_TAG + \"hubby*\"; // \u0027*\u0027 not allowed in tags","lastModifiedDate":"2024-03-12"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":64,"author":{"gitId":"gerteck"},"content":" public static final String INVALID_ROLE_DESC \u003d \" \" + CliSyntax.PREFIX_ROLE + \"person\";","lastModifiedDate":"2024-03-15"},{"lineNumber":65,"author":{"gitId":"gerteck"},"content":" // only values \u0027volunteer\u0027 and \u0027befriendee\u0027 are allowed in role","lastModifiedDate":"2024-03-15"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":70,"author":{"gitId":"gerteck"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY_VOLUNTEER;","lastModifiedDate":"2024-03-15"},{"lineNumber":71,"author":{"gitId":"gerteck"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB_BEFRIENDEE;","lastModifiedDate":"2024-03-15"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":73,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05"},{"lineNumber":74,"author":{"gitId":"gerteck"},"content":" DESC_AMY_VOLUNTEER \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2024-03-15"},{"lineNumber":75,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-07-05"},{"lineNumber":76,"author":{"gitId":"gerteck"},"content":" .withRole(VALID_ROLE_VOLUNTEER)","lastModifiedDate":"2024-03-15"},{"lineNumber":77,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05"},{"lineNumber":78,"author":{"gitId":"gerteck"},"content":" DESC_BOB_BEFRIENDEE \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2024-03-15"},{"lineNumber":79,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2017-07-05"},{"lineNumber":80,"author":{"gitId":"gerteck"},"content":" .withRole(VALID_ROLE_BEFRIENDEE)","lastModifiedDate":"2024-03-15"},{"lineNumber":81,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":84,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25"},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":89,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25"},{"lineNumber":90,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":91,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":92,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09"},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":95,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15"},{"lineNumber":96,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":100,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09"},{"lineNumber":103,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25"},{"lineNumber":105,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":106,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09"},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":110,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":111,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":112,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":113,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":114,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25"},{"lineNumber":115,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":116,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25"},{"lineNumber":117,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05"},{"lineNumber":118,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05"},{"lineNumber":119,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":120,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":122,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2024-03-12"},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":126,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20"},{"lineNumber":127,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show only the person at the given {@code targetIndex} in the","lastModifiedDate":"2018-01-31"},{"lineNumber":128,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31"},{"lineNumber":129,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20"},{"lineNumber":130,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31"},{"lineNumber":131,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31"},{"lineNumber":133,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31"},{"lineNumber":134,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20"},{"lineNumber":135,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":137,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08"},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":140,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"gerteck":16,"chaaaaun":30,"-":94}},{"path":"src/test/java/scrolls/elder/logic/commands/DeleteCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.logic.commands;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"chaaaaun"},"content":"import static scrolls.elder.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"chaaaaun"},"content":"import static scrolls.elder.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":"import static scrolls.elder.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":12,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.core.index.Index;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.Messages;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.Model;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.ModelManager;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.UserPrefs;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Person;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Role;","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.TypicalIndexes;","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.TypicalPersons;","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2020-12-16"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * {@code DeleteCommand}.","lastModifiedDate":"2018-01-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class DeleteCommandTest {","lastModifiedDate":"2017-06-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":29,"author":{"gitId":"chaaaaun"},"content":" private static final String ROLE_STRING \u003d \"volunteer\";","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"chaaaaun"},"content":" private static final Role ROLE \u003d new Role(ROLE_STRING);","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"chaaaaun"},"content":" private Model model \u003d new ModelManager(TypicalPersons.getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public void execute_validIndexUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":35,"author":{"gitId":"chaaaaun"},"content":" Person personToDelete \u003d model.getFilteredVolunteerList().get(TypicalIndexes.INDEX_SECOND_PERSON.getZeroBased());","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"chaaaaun"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(TypicalIndexes.INDEX_SECOND_PERSON, ROLE);","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2019-02-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2019-02-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":49,"author":{"gitId":"chaaaaun"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredVolunteerList().size() + 1);","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"chaaaaun"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(outOfBoundIndex, ROLE);","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"sdevih"},"content":" String expectedMessage \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"sdevih"},"content":" DeleteCommand.MESSAGE_DELETE_PERSON_ERROR + Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"sdevih"},"content":" assertCommandFailure(deleteCommand, model, expectedMessage);","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void execute_validIndexFilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":58,"author":{"gitId":"sdevih"},"content":" showPersonAtIndex(model, TypicalIndexes.INDEX_SECOND_PERSON);","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":60,"author":{"gitId":"chaaaaun"},"content":" Person personToDelete \u003d model.getFilteredVolunteerList().get(TypicalIndexes.INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"chaaaaun"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(TypicalIndexes.INDEX_FIRST_PERSON, ROLE);","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2019-02-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2019-02-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":67,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05"},{"lineNumber":68,"author":{"gitId":"-"},"content":" showNoPerson(expectedModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void execute_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":75,"author":{"gitId":"chaaaaun"},"content":" showPersonAtIndex(model, TypicalIndexes.INDEX_FIRST_PERSON);","lastModifiedDate":"2024-03-12"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":77,"author":{"gitId":"chaaaaun"},"content":" Index outOfBoundIndex \u003d TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2024-03-12"},{"lineNumber":78,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-06-05"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-06-05"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":81,"author":{"gitId":"chaaaaun"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(outOfBoundIndex, ROLE);","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"sdevih"},"content":" String expectedMessage \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":83,"author":{"gitId":"sdevih"},"content":" DeleteCommand.MESSAGE_DELETE_PERSON_ERROR + Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2024-03-21"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":85,"author":{"gitId":"sdevih"},"content":" assertCommandFailure(deleteCommand, model, expectedMessage);","lastModifiedDate":"2024-03-21"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"chaaaaun"},"content":" /* TODO: To be implemented once paired contacts are updated to use ID","lastModifiedDate":"2024-03-21"},{"lineNumber":89,"author":{"gitId":"sdevih"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":90,"author":{"gitId":"sdevih"},"content":" public void execute_personPaired_throwsCommandException() {","lastModifiedDate":"2024-03-21"},{"lineNumber":91,"author":{"gitId":"sdevih"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(TypicalIndexes.INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-03-21"},{"lineNumber":92,"author":{"gitId":"sdevih"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(TypicalIndexes.INDEX_FIRST_PERSON);","lastModifiedDate":"2024-03-21"},{"lineNumber":93,"author":{"gitId":"sdevih"},"content":" personToDelete.setPairedWith(Optional.of(TypicalIndexes.INDEX_SECOND_PERSON.getZeroBased()));","lastModifiedDate":"2024-03-21"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":95,"author":{"gitId":"sdevih"},"content":" String expectedMessage \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":96,"author":{"gitId":"sdevih"},"content":" DeleteCommand.MESSAGE_DELETE_PERSON_ERROR + Messages.MESSAGE_CONTACT_PAIRED_BEFORE_DELETE);","lastModifiedDate":"2024-03-21"},{"lineNumber":97,"author":{"gitId":"sdevih"},"content":" assertCommandFailure(deleteCommand, model, expectedMessage);","lastModifiedDate":"2024-03-21"},{"lineNumber":98,"author":{"gitId":"sdevih"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":99,"author":{"gitId":"sdevih"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":100,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":102,"author":{"gitId":"chaaaaun"},"content":" DeleteCommand deleteFirstCommand \u003d new DeleteCommand(TypicalIndexes.INDEX_FIRST_PERSON, ROLE);","lastModifiedDate":"2024-03-21"},{"lineNumber":103,"author":{"gitId":"chaaaaun"},"content":" DeleteCommand deleteSecondCommand \u003d new DeleteCommand(TypicalIndexes.INDEX_SECOND_PERSON, ROLE);","lastModifiedDate":"2024-03-21"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":105,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":108,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":109,"author":{"gitId":"chaaaaun"},"content":" DeleteCommand deleteFirstCommandCopy \u003d new DeleteCommand(TypicalIndexes.INDEX_FIRST_PERSON, ROLE);","lastModifiedDate":"2024-03-21"},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2017-06-27"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":112,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2017-06-27"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":115,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":116,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2017-06-27"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":118,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23"},{"lineNumber":125,"author":{"gitId":"chaaaaun"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(targetIndex, ROLE);","lastModifiedDate":"2024-03-21"},{"lineNumber":126,"author":{"gitId":"chaaaaun"},"content":" String expected \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":127,"author":{"gitId":"chaaaaun"},"content":" String.format(\"%s{targetIndex\u003d%s, role\u003d%s}\", DeleteCommand.class.getCanonicalName(), targetIndex,","lastModifiedDate":"2024-03-21"},{"lineNumber":128,"author":{"gitId":"chaaaaun"},"content":" ROLE_STRING);","lastModifiedDate":"2024-03-21"},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertEquals(expected, deleteCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":133,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show no one.","lastModifiedDate":"2017-06-05"},{"lineNumber":134,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":135,"author":{"gitId":"-"},"content":" private void showNoPerson(Model model) {","lastModifiedDate":"2017-06-05"},{"lineNumber":136,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(p -\u003e false);","lastModifiedDate":"2017-06-12"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":138,"author":{"gitId":"-"},"content":" assertTrue(model.getFilteredPersonList().isEmpty());","lastModifiedDate":"2018-02-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":140,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"chaaaaun":33,"-":90,"sdevih":17}},{"path":"src/test/java/scrolls/elder/logic/commands/EditCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.logic.commands;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"chaaaaun"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"chaaaaun"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"chaaaaun"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"chaaaaun"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.core.index.Index;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.Messages;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.AddressBook;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.Model;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.ModelManager;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.UserPrefs;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Person;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"soons1"},"content":"import scrolls.elder.model.person.Role;","lastModifiedDate":"2024-03-22"},{"lineNumber":17,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.PersonBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.TypicalIndexes;","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.TypicalPersons;","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"chaaaaun"},"content":"/**","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"chaaaaun"},"content":" * Contains integration tests (interaction with the Model) and unit tests for EditCommand.","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"chaaaaun"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"chaaaaun"},"content":"public class EditCommandTest {","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"chaaaaun"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"chaaaaun"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"soons1"},"content":" Person editedPerson \u003d new PersonBuilder(TypicalPersons.BENSON).build();","lastModifiedDate":"2024-03-22"},{"lineNumber":31,"author":{"gitId":"chaaaaun"},"content":" EditCommand.EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(editedPerson).build();","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"soons1"},"content":" EditCommand editCommand \u003d new EditCommand(TypicalIndexes.INDEX_SECOND_PERSON, descriptor);","lastModifiedDate":"2024-03-22"},{"lineNumber":33,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"chaaaaun"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"sdevih"},"content":" Model model \u003d new ModelManager(TypicalPersons.getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"chaaaaun"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"soons1"},"content":" expectedModel.setPerson(expectedModel.getFilteredPersonList().get(1), editedPerson);","lastModifiedDate":"2024-03-22"},{"lineNumber":39,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"chaaaaun"},"content":" CommandTestUtil.assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"chaaaaun"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"chaaaaun"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"chaaaaun"},"content":" Model model \u003d new ModelManager(TypicalPersons.getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"soons1"},"content":" Index indexSecondPerson \u003d Index.fromOneBased(2);","lastModifiedDate":"2024-03-22"},{"lineNumber":47,"author":{"gitId":"soons1"},"content":" Person secondPerson \u003d model.getFilteredVolunteerList().get(indexSecondPerson.getZeroBased());","lastModifiedDate":"2024-03-22"},{"lineNumber":48,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"soons1"},"content":" PersonBuilder personInList \u003d new PersonBuilder(secondPerson);","lastModifiedDate":"2024-03-22"},{"lineNumber":50,"author":{"gitId":"chaaaaun"},"content":" Person editedPerson \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"chaaaaun"},"content":" personInList.withName(CommandTestUtil.VALID_NAME_BOB).withPhone(CommandTestUtil.VALID_PHONE_BOB)","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"gerteck"},"content":" .withTags(CommandTestUtil.VALID_TAG_HUSBAND)","lastModifiedDate":"2024-03-15"},{"lineNumber":53,"author":{"gitId":"soons1"},"content":" .withRole(CommandTestUtil.VALID_ROLE_VOLUNTEER).build();","lastModifiedDate":"2024-03-22"},{"lineNumber":54,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"chaaaaun"},"content":" EditCommand.EditPersonDescriptor descriptor \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"chaaaaun"},"content":" new EditPersonDescriptorBuilder().withName(CommandTestUtil.VALID_NAME_BOB)","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"CJerrong"},"content":" .withPhone(CommandTestUtil.VALID_PHONE_BOB).withTags(CommandTestUtil.VALID_TAG_HUSBAND)","lastModifiedDate":"2024-03-15"},{"lineNumber":58,"author":{"gitId":"soons1"},"content":" .withRole(CommandTestUtil.VALID_ROLE_VOLUNTEER).build();","lastModifiedDate":"2024-03-22"},{"lineNumber":59,"author":{"gitId":"soons1"},"content":" EditCommand editCommand \u003d new EditCommand(indexSecondPerson, descriptor);","lastModifiedDate":"2024-03-22"},{"lineNumber":60,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"chaaaaun"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":63,"author":{"gitId":"chaaaaun"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"soons1"},"content":" expectedModel.setPerson(","lastModifiedDate":"2024-03-22"},{"lineNumber":65,"author":{"gitId":"soons1"},"content":" expectedModel.getFilteredVolunteerList().get(indexSecondPerson.getZeroBased()), editedPerson);","lastModifiedDate":"2024-03-22"},{"lineNumber":66,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"chaaaaun"},"content":" CommandTestUtil.assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-12"},{"lineNumber":68,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":69,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"chaaaaun"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":71,"author":{"gitId":"soons1"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2024-03-22"},{"lineNumber":72,"author":{"gitId":"sdevih"},"content":" Model model \u003d new ModelManager(TypicalPersons.getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"soons1"},"content":" EditCommand.EditPersonDescriptor epd \u003d new EditCommand.EditPersonDescriptor();","lastModifiedDate":"2024-03-22"},{"lineNumber":75,"author":{"gitId":"soons1"},"content":" epd.setRole(new Role(\"volunteer\"));","lastModifiedDate":"2024-03-22"},{"lineNumber":76,"author":{"gitId":"chaaaaun"},"content":" EditCommand editCommand \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":77,"author":{"gitId":"soons1"},"content":" new EditCommand(TypicalIndexes.INDEX_FIRST_PERSON, epd);","lastModifiedDate":"2024-03-22"},{"lineNumber":78,"author":{"gitId":"chaaaaun"},"content":" Person editedPerson \u003d model.getFilteredPersonList().get(TypicalIndexes.INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-03-12"},{"lineNumber":79,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":80,"author":{"gitId":"chaaaaun"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2024-03-12"},{"lineNumber":81,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":82,"author":{"gitId":"chaaaaun"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-03-12"},{"lineNumber":83,"author":{"gitId":"chaaaaun"},"content":" CommandTestUtil.assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-12"},{"lineNumber":84,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":85,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":86,"author":{"gitId":"chaaaaun"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":87,"author":{"gitId":"chaaaaun"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2024-03-12"},{"lineNumber":88,"author":{"gitId":"sdevih"},"content":" Model model \u003d new ModelManager(TypicalPersons.getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-21"},{"lineNumber":89,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":90,"author":{"gitId":"soons1"},"content":" CommandTestUtil.showPersonAtIndex(model, TypicalIndexes.INDEX_SECOND_PERSON);","lastModifiedDate":"2024-03-22"},{"lineNumber":91,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":92,"author":{"gitId":"chaaaaun"},"content":" Person personInFilteredList \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":93,"author":{"gitId":"chaaaaun"},"content":" model.getFilteredPersonList().get(TypicalIndexes.INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-03-12"},{"lineNumber":94,"author":{"gitId":"chaaaaun"},"content":" Person editedPerson \u003d new PersonBuilder(personInFilteredList).withName(CommandTestUtil.VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-12"},{"lineNumber":95,"author":{"gitId":"chaaaaun"},"content":" EditCommand editCommand \u003d new EditCommand(TypicalIndexes.INDEX_FIRST_PERSON,","lastModifiedDate":"2024-03-12"},{"lineNumber":96,"author":{"gitId":"soons1"},"content":" new EditPersonDescriptorBuilder().withName(CommandTestUtil.VALID_NAME_BOB)","lastModifiedDate":"2024-03-22"},{"lineNumber":97,"author":{"gitId":"soons1"},"content":" .withRole(\"volunteer\").build());","lastModifiedDate":"2024-03-22"},{"lineNumber":98,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":99,"author":{"gitId":"chaaaaun"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2024-03-12"},{"lineNumber":100,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":101,"author":{"gitId":"chaaaaun"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-03-12"},{"lineNumber":102,"author":{"gitId":"soons1"},"content":" expectedModel.setPerson(expectedModel.getFilteredPersonList().get(1), editedPerson);","lastModifiedDate":"2024-03-22"},{"lineNumber":103,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":104,"author":{"gitId":"chaaaaun"},"content":" CommandTestUtil.assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-12"},{"lineNumber":105,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":106,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":107,"author":{"gitId":"chaaaaun"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":108,"author":{"gitId":"chaaaaun"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2024-03-12"},{"lineNumber":109,"author":{"gitId":"sdevih"},"content":" Model model \u003d new ModelManager(TypicalPersons.getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-21"},{"lineNumber":110,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":111,"author":{"gitId":"chaaaaun"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2024-03-12"},{"lineNumber":112,"author":{"gitId":"chaaaaun"},"content":" EditCommand.EditPersonDescriptor descriptor \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":113,"author":{"gitId":"soons1"},"content":" new EditPersonDescriptorBuilder().withName(CommandTestUtil.VALID_NAME_BOB)","lastModifiedDate":"2024-03-22"},{"lineNumber":114,"author":{"gitId":"soons1"},"content":" .withRole(\"befriendee\").build();","lastModifiedDate":"2024-03-22"},{"lineNumber":115,"author":{"gitId":"chaaaaun"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2024-03-12"},{"lineNumber":116,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":117,"author":{"gitId":"chaaaaun"},"content":" CommandTestUtil.assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-12"},{"lineNumber":118,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":119,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":120,"author":{"gitId":"chaaaaun"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":121,"author":{"gitId":"chaaaaun"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2024-03-12"},{"lineNumber":122,"author":{"gitId":"chaaaaun"},"content":" * but smaller than size of address book","lastModifiedDate":"2024-03-12"},{"lineNumber":123,"author":{"gitId":"chaaaaun"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":124,"author":{"gitId":"chaaaaun"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":125,"author":{"gitId":"chaaaaun"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2024-03-12"},{"lineNumber":126,"author":{"gitId":"sdevih"},"content":" Model model \u003d new ModelManager(TypicalPersons.getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-21"},{"lineNumber":127,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":128,"author":{"gitId":"chaaaaun"},"content":" CommandTestUtil.showPersonAtIndex(model, TypicalIndexes.INDEX_FIRST_PERSON);","lastModifiedDate":"2024-03-12"},{"lineNumber":129,"author":{"gitId":"chaaaaun"},"content":" Index outOfBoundIndex \u003d TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2024-03-12"},{"lineNumber":130,"author":{"gitId":"chaaaaun"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2024-03-12"},{"lineNumber":131,"author":{"gitId":"chaaaaun"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2024-03-12"},{"lineNumber":132,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":133,"author":{"gitId":"chaaaaun"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex,","lastModifiedDate":"2024-03-12"},{"lineNumber":134,"author":{"gitId":"soons1"},"content":" new EditPersonDescriptorBuilder().withName(CommandTestUtil.VALID_NAME_BOB)","lastModifiedDate":"2024-03-22"},{"lineNumber":135,"author":{"gitId":"soons1"},"content":" .withRole(\"volunteer\").build());","lastModifiedDate":"2024-03-22"},{"lineNumber":136,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":137,"author":{"gitId":"chaaaaun"},"content":" CommandTestUtil.assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-12"},{"lineNumber":138,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":139,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":140,"author":{"gitId":"chaaaaun"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":141,"author":{"gitId":"chaaaaun"},"content":" public void equals() {","lastModifiedDate":"2024-03-12"},{"lineNumber":142,"author":{"gitId":"chaaaaun"},"content":" final EditCommand standardCommand \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":143,"author":{"gitId":"gerteck"},"content":" new EditCommand(TypicalIndexes.INDEX_FIRST_PERSON, CommandTestUtil.DESC_AMY_VOLUNTEER);","lastModifiedDate":"2024-03-15"},{"lineNumber":144,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":145,"author":{"gitId":"chaaaaun"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-12"},{"lineNumber":146,"author":{"gitId":"chaaaaun"},"content":" EditCommand.EditPersonDescriptor copyDescriptor \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":147,"author":{"gitId":"gerteck"},"content":" new EditCommand.EditPersonDescriptor(CommandTestUtil.DESC_AMY_VOLUNTEER);","lastModifiedDate":"2024-03-15"},{"lineNumber":148,"author":{"gitId":"chaaaaun"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(TypicalIndexes.INDEX_FIRST_PERSON, copyDescriptor);","lastModifiedDate":"2024-03-12"},{"lineNumber":149,"author":{"gitId":"chaaaaun"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2024-03-12"},{"lineNumber":150,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":151,"author":{"gitId":"chaaaaun"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-12"},{"lineNumber":152,"author":{"gitId":"chaaaaun"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2024-03-12"},{"lineNumber":153,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":154,"author":{"gitId":"chaaaaun"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":155,"author":{"gitId":"chaaaaun"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":156,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":157,"author":{"gitId":"chaaaaun"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":158,"author":{"gitId":"chaaaaun"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2024-03-12"},{"lineNumber":159,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":160,"author":{"gitId":"chaaaaun"},"content":" // different index -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":161,"author":{"gitId":"chaaaaun"},"content":" assertFalse(","lastModifiedDate":"2024-03-12"},{"lineNumber":162,"author":{"gitId":"gerteck"},"content":" standardCommand.equals(new EditCommand(TypicalIndexes.INDEX_SECOND_PERSON,","lastModifiedDate":"2024-03-15"},{"lineNumber":163,"author":{"gitId":"gerteck"},"content":" CommandTestUtil.DESC_AMY_VOLUNTEER)));","lastModifiedDate":"2024-03-15"},{"lineNumber":164,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":165,"author":{"gitId":"chaaaaun"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":166,"author":{"gitId":"chaaaaun"},"content":" assertFalse(","lastModifiedDate":"2024-03-12"},{"lineNumber":167,"author":{"gitId":"gerteck"},"content":" standardCommand.equals(new EditCommand(TypicalIndexes.INDEX_FIRST_PERSON,","lastModifiedDate":"2024-03-15"},{"lineNumber":168,"author":{"gitId":"gerteck"},"content":" CommandTestUtil.DESC_BOB_BEFRIENDEE)));","lastModifiedDate":"2024-03-15"},{"lineNumber":169,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":170,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":171,"author":{"gitId":"chaaaaun"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":172,"author":{"gitId":"chaaaaun"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-12"},{"lineNumber":173,"author":{"gitId":"chaaaaun"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-03-12"},{"lineNumber":174,"author":{"gitId":"chaaaaun"},"content":" EditCommand.EditPersonDescriptor editPersonDescriptor \u003d new EditCommand.EditPersonDescriptor();","lastModifiedDate":"2024-03-12"},{"lineNumber":175,"author":{"gitId":"chaaaaun"},"content":" EditCommand editCommand \u003d new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2024-03-12"},{"lineNumber":176,"author":{"gitId":"chaaaaun"},"content":" String expected \u003d EditCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", editPersonDescriptor\u003d\"","lastModifiedDate":"2024-03-12"},{"lineNumber":177,"author":{"gitId":"chaaaaun"},"content":" + editPersonDescriptor + \"}\";","lastModifiedDate":"2024-03-12"},{"lineNumber":178,"author":{"gitId":"chaaaaun"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2024-03-12"},{"lineNumber":179,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":180,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":181,"author":{"gitId":"chaaaaun"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"soons1":24,"CJerrong":1,"gerteck":7,"chaaaaun":140,"sdevih":9}},{"path":"src/test/java/scrolls/elder/logic/commands/EditPersonDescriptorTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.logic.commands;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"gerteck"},"content":"import static scrolls.elder.logic.commands.CommandTestUtil.DESC_AMY_VOLUNTEER;","lastModifiedDate":"2024-03-15"},{"lineNumber":7,"author":{"gitId":"gerteck"},"content":"import static scrolls.elder.logic.commands.CommandTestUtil.DESC_BOB_BEFRIENDEE;","lastModifiedDate":"2024-03-15"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":"import static scrolls.elder.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":"import static scrolls.elder.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":"import static scrolls.elder.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":"import static scrolls.elder.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"chaaaaun"},"content":"import static scrolls.elder.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":16,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorTest {","lastModifiedDate":"2017-05-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":22,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-05"},{"lineNumber":23,"author":{"gitId":"gerteck"},"content":" EditCommand.EditPersonDescriptor descriptorWithSameValues \u003d","lastModifiedDate":"2024-03-15"},{"lineNumber":24,"author":{"gitId":"gerteck"},"content":" new EditCommand.EditPersonDescriptor(DESC_AMY_VOLUNTEER);","lastModifiedDate":"2024-03-15"},{"lineNumber":25,"author":{"gitId":"gerteck"},"content":" assertTrue(DESC_AMY_VOLUNTEER.equals(descriptorWithSameValues));","lastModifiedDate":"2024-03-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-05"},{"lineNumber":28,"author":{"gitId":"gerteck"},"content":" assertTrue(DESC_AMY_VOLUNTEER.equals(DESC_AMY_VOLUNTEER));","lastModifiedDate":"2024-03-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":31,"author":{"gitId":"gerteck"},"content":" assertFalse(DESC_AMY_VOLUNTEER.equals(null));","lastModifiedDate":"2024-03-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":34,"author":{"gitId":"gerteck"},"content":" assertFalse(DESC_AMY_VOLUNTEER.equals(5));","lastModifiedDate":"2024-03-15"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":37,"author":{"gitId":"gerteck"},"content":" assertFalse(DESC_AMY_VOLUNTEER.equals(DESC_BOB_BEFRIENDEE));","lastModifiedDate":"2024-03-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":40,"author":{"gitId":"chaaaaun"},"content":" EditCommand.EditPersonDescriptor editedAmy \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"gerteck"},"content":" new EditPersonDescriptorBuilder(DESC_AMY_VOLUNTEER).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-15"},{"lineNumber":42,"author":{"gitId":"gerteck"},"content":" assertFalse(DESC_AMY_VOLUNTEER.equals(editedAmy));","lastModifiedDate":"2024-03-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":45,"author":{"gitId":"gerteck"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY_VOLUNTEER).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2024-03-15"},{"lineNumber":46,"author":{"gitId":"gerteck"},"content":" assertFalse(DESC_AMY_VOLUNTEER.equals(editedAmy));","lastModifiedDate":"2024-03-15"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":49,"author":{"gitId":"gerteck"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY_VOLUNTEER).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2024-03-15"},{"lineNumber":50,"author":{"gitId":"gerteck"},"content":" assertFalse(DESC_AMY_VOLUNTEER.equals(editedAmy));","lastModifiedDate":"2024-03-15"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":53,"author":{"gitId":"gerteck"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY_VOLUNTEER).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2024-03-15"},{"lineNumber":54,"author":{"gitId":"gerteck"},"content":" assertFalse(DESC_AMY_VOLUNTEER.equals(editedAmy));","lastModifiedDate":"2024-03-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":57,"author":{"gitId":"gerteck"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY_VOLUNTEER).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-03-15"},{"lineNumber":58,"author":{"gitId":"gerteck"},"content":" assertFalse(DESC_AMY_VOLUNTEER.equals(editedAmy));","lastModifiedDate":"2024-03-15"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":63,"author":{"gitId":"chaaaaun"},"content":" EditCommand.EditPersonDescriptor editPersonDescriptor \u003d new EditCommand.EditPersonDescriptor();","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"chaaaaun"},"content":" String expected \u003d EditCommand.EditPersonDescriptor.class.getCanonicalName() + \"{name\u003d\"","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getName().orElse(null) + \", phone\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getPhone().orElse(null) + \", email\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getEmail().orElse(null) + \", address\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getAddress().orElse(null) + \", tags\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"CJerrong"},"content":" + editPersonDescriptor.getTags().orElse(null) + \", role\u003d\"","lastModifiedDate":"2024-03-15"},{"lineNumber":70,"author":{"gitId":"gerteck"},"content":" + editPersonDescriptor.getRole().orElse(null) + \"}\";","lastModifiedDate":"2024-03-15"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertEquals(expected, editPersonDescriptor.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"CJerrong":1,"gerteck":20,"chaaaaun":10,"-":42}},{"path":"src/test/java/scrolls/elder/logic/commands/ExitCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.logic.commands;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"chaaaaun"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.Model;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.ModelManager;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":"public class ExitCommandTest {","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":" private Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"chaaaaun"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"chaaaaun"},"content":" public void execute_exit_success() {","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"chaaaaun"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(ExitCommand.MESSAGE_EXIT_ACKNOWLEDGEMENT, false, true);","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"chaaaaun"},"content":" CommandTestUtil.assertCommandSuccess(new ExitCommand(), model, expectedCommandResult, expectedModel);","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"chaaaaun"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"chaaaaun":17}},{"path":"src/test/java/scrolls/elder/logic/commands/FindCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.logic.commands;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"chaaaaun"},"content":"import static scrolls.elder.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.Messages;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.Model;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.ModelManager;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.UserPrefs;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.TypicalPersons;","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code FindCommand}.","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class FindCommandTest {","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"chaaaaun"},"content":" private Model model \u003d new ModelManager(TypicalPersons.getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"chaaaaun"},"content":" private Model expectedModel \u003d new ModelManager(TypicalPersons.getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicate \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"first\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate secondPredicate \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"second\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" FindCommand findFirstCommand \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" FindCommand findSecondCommand \u003d new FindCommand(secondPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" FindCommand findFirstCommandCopy \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommandCopy));","lastModifiedDate":"2017-06-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(1));","lastModifiedDate":"2017-06-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(null));","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(findSecondCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void execute_zeroKeywords_noPersonFound() {","lastModifiedDate":"2017-08-15"},{"lineNumber":56,"author":{"gitId":"chaaaaun"},"content":" String expectedMessage \u003d String.format(Messages.MESSAGE_PERSONS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\" \");","lastModifiedDate":"2018-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void execute_multipleKeywords_multiplePersonsFound() {","lastModifiedDate":"2017-08-15"},{"lineNumber":66,"author":{"gitId":"chaaaaun"},"content":" String expectedMessage \u003d String.format(Messages.MESSAGE_PERSONS_LISTED_OVERVIEW, 3);","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\"Kurz Elle Kunz\");","lastModifiedDate":"2018-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":71,"author":{"gitId":"chaaaaun"},"content":" assertEquals(Arrays.asList(TypicalPersons.CARL, TypicalPersons.ELLE, TypicalPersons.FIONA),","lastModifiedDate":"2024-03-12"},{"lineNumber":72,"author":{"gitId":"chaaaaun"},"content":" model.getFilteredPersonList());","lastModifiedDate":"2024-03-12"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"keyword\"));","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":" FindCommand findCommand \u003d new FindCommand(predicate);","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" String expected \u003d FindCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertEquals(expected, findCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-12"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * Parses {@code userInput} into a {@code NameContainsKeywordsPredicate}.","lastModifiedDate":"2018-08-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":86,"author":{"gitId":"-"},"content":" private NameContainsKeywordsPredicate preparePredicate(String userInput) {","lastModifiedDate":"2018-08-08"},{"lineNumber":87,"author":{"gitId":"-"},"content":" return new NameContainsKeywordsPredicate(Arrays.asList(userInput.split(\"\\\\s+\")));","lastModifiedDate":"2018-08-08"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":89,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"chaaaaun":14,"-":75}},{"path":"src/test/java/scrolls/elder/logic/commands/HelpCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.logic.commands;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"chaaaaun"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.Model;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.ModelManager;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":"public class HelpCommandTest {","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":" private Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"chaaaaun"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"chaaaaun"},"content":" public void execute_help_success() {","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"chaaaaun"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(HelpCommand.SHOWING_HELP_MESSAGE, true, false);","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"chaaaaun"},"content":" CommandTestUtil.assertCommandSuccess(new HelpCommand(), model, expectedCommandResult, expectedModel);","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"chaaaaun"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"chaaaaun":17}},{"path":"src/test/java/scrolls/elder/logic/commands/ListCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.logic.commands;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"chaaaaun"},"content":"import static scrolls.elder.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"chaaaaun"},"content":"import static scrolls.elder.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.Model;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.ModelManager;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.UserPrefs;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.TypicalIndexes;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.TypicalPersons;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for ListCommand.","lastModifiedDate":"2017-06-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class ListCommandTest {","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private Model expectedModel;","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"chaaaaun"},"content":" model \u003d new ModelManager(TypicalPersons.getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void execute_listIsNotFiltered_showsSameList() {","lastModifiedDate":"2017-08-15"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ListCommand(), model, ListCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public void execute_listIsFiltered_showsEverything() {","lastModifiedDate":"2017-08-15"},{"lineNumber":36,"author":{"gitId":"chaaaaun"},"content":" showPersonAtIndex(model, TypicalIndexes.INDEX_FIRST_PERSON);","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ListCommand(), model, ListCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"chaaaaun":10,"-":29}},{"path":"src/test/java/scrolls/elder/logic/commands/PairCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"soons1"},"content":"package scrolls.elder.logic.commands;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"soons1"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"chaaaaun"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-22"},{"lineNumber":5,"author":{"gitId":"CJerrong"},"content":"import static scrolls.elder.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"CJerrong"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"soons1"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"CJerrong"},"content":"import scrolls.elder.logic.Messages;","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"soons1"},"content":"import scrolls.elder.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"CJerrong"},"content":"import scrolls.elder.model.AddressBook;","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"soons1"},"content":"import scrolls.elder.model.Model;","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"soons1"},"content":"import scrolls.elder.model.ModelManager;","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"soons1"},"content":"import scrolls.elder.model.UserPrefs;","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"CJerrong"},"content":"import scrolls.elder.model.person.Person;","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"soons1"},"content":"import scrolls.elder.testutil.Assert;","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"CJerrong"},"content":"import scrolls.elder.testutil.PersonBuilder;","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"soons1"},"content":"import scrolls.elder.testutil.TypicalIndexes;","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"soons1"},"content":"import scrolls.elder.testutil.TypicalPersons;","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"soons1"},"content":"class PairCommandTest {","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"soons1"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"soons1"},"content":" void execute_pairFilteredPersonList_pairSuccessful() {","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"soons1"},"content":" Model model \u003d new ModelManager(TypicalPersons.getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"chaaaaun"},"content":" Person befriendeeToPair \u003d","lastModifiedDate":"2024-03-22"},{"lineNumber":29,"author":{"gitId":"chaaaaun"},"content":" model.getFilteredBefriendeeList().get(TypicalIndexes.INDEX_SECOND_PERSON.getZeroBased());","lastModifiedDate":"2024-03-22"},{"lineNumber":30,"author":{"gitId":"chaaaaun"},"content":" Person volunteerToPair \u003d","lastModifiedDate":"2024-03-22"},{"lineNumber":31,"author":{"gitId":"chaaaaun"},"content":" model.getFilteredVolunteerList().get(TypicalIndexes.INDEX_SECOND_PERSON.getZeroBased());","lastModifiedDate":"2024-03-22"},{"lineNumber":32,"author":{"gitId":"chaaaaun"},"content":" PairCommand pairCommand \u003d","lastModifiedDate":"2024-03-22"},{"lineNumber":33,"author":{"gitId":"chaaaaun"},"content":" new PairCommand(TypicalIndexes.INDEX_SECOND_PERSON, TypicalIndexes.INDEX_SECOND_PERSON);","lastModifiedDate":"2024-03-22"},{"lineNumber":34,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"soons1"},"content":" String expectedMessage \u003d String.format(PairCommand.MESSAGE_PAIR_SUCCESS,","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"chaaaaun"},"content":" Messages.format(befriendeeToPair), Messages.format(volunteerToPair));","lastModifiedDate":"2024-03-22"},{"lineNumber":37,"author":{"gitId":"chaaaaun"},"content":" Person afterPairingPerson1 \u003d new PersonBuilder(befriendeeToPair)","lastModifiedDate":"2024-03-22"},{"lineNumber":38,"author":{"gitId":"CJerrong"},"content":" .withPairedWithName(Optional.of(volunteerToPair.getName()))","lastModifiedDate":"2024-03-22"},{"lineNumber":39,"author":{"gitId":"CJerrong"},"content":" .withPairedWithID(Optional.of(volunteerToPair.getId())).build();","lastModifiedDate":"2024-03-22"},{"lineNumber":40,"author":{"gitId":"chaaaaun"},"content":" Person afterPairingPerson2 \u003d new PersonBuilder(volunteerToPair)","lastModifiedDate":"2024-03-22"},{"lineNumber":41,"author":{"gitId":"CJerrong"},"content":" .withPairedWithName(Optional.of(befriendeeToPair.getName()))","lastModifiedDate":"2024-03-22"},{"lineNumber":42,"author":{"gitId":"CJerrong"},"content":" .withPairedWithID(Optional.of(befriendeeToPair.getId())).build();","lastModifiedDate":"2024-03-22"},{"lineNumber":43,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"soons1"},"content":" ModelManager expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"soons1"},"content":" expectedModel.setPerson(","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"CJerrong"},"content":" expectedModel.getFilteredBefriendeeList().get(TypicalIndexes.INDEX_SECOND_PERSON.getZeroBased()),","lastModifiedDate":"2024-03-22"},{"lineNumber":47,"author":{"gitId":"soons1"},"content":" afterPairingPerson1);","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"soons1"},"content":" expectedModel.setPerson(","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"CJerrong"},"content":" expectedModel.getFilteredVolunteerList().get(TypicalIndexes.INDEX_SECOND_PERSON.getZeroBased()),","lastModifiedDate":"2024-03-22"},{"lineNumber":50,"author":{"gitId":"soons1"},"content":" afterPairingPerson2);","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"soons1"},"content":" assertCommandSuccess(pairCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"soons1"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"soons1"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"soons1"},"content":" void execute_alreadyPaired_throwsCommandException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"soons1"},"content":" Model model \u003d new ModelManager(new AddressBook(TypicalPersons.getTypicalAddressBook()), new UserPrefs());","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"soons1"},"content":" PairCommand pairCommand \u003d new PairCommand(TypicalIndexes.INDEX_FIRST_PERSON,","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"CJerrong"},"content":" TypicalIndexes.INDEX_FIRST_PERSON);","lastModifiedDate":"2024-03-22"},{"lineNumber":60,"author":{"gitId":"soons1"},"content":" Assert.assertThrows(","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"soons1"},"content":" CommandException.class, PairCommand.MESSAGE_ALREADY_PAIRED, () -\u003e pairCommand.execute(model));","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"soons1"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"soons1"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"soons1"},"content":" public void equals() {","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"soons1"},"content":" PairCommand pairCommand1 \u003d new PairCommand(TypicalIndexes.INDEX_FIRST_PERSON,","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"soons1"},"content":" TypicalIndexes.INDEX_FIFTH_PERSON);","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"soons1"},"content":" PairCommand pairCommand2 \u003d new PairCommand(TypicalIndexes.INDEX_SECOND_PERSON,","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"soons1"},"content":" TypicalIndexes.INDEX_FOURTH_PERSON);","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"soons1"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"chaaaaun"},"content":" assertEquals(pairCommand1, pairCommand1);","lastModifiedDate":"2024-03-22"},{"lineNumber":73,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"soons1"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"soons1"},"content":" PairCommand pairCommand1Copy \u003d new PairCommand(TypicalIndexes.INDEX_FIRST_PERSON,","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"soons1"},"content":" TypicalIndexes.INDEX_FIFTH_PERSON);","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"chaaaaun"},"content":" assertEquals(pairCommand1, pairCommand1Copy);","lastModifiedDate":"2024-03-22"},{"lineNumber":78,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"soons1"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":80,"author":{"gitId":"chaaaaun"},"content":" assertNotEquals(1, pairCommand1);","lastModifiedDate":"2024-03-22"},{"lineNumber":81,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":82,"author":{"gitId":"soons1"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":83,"author":{"gitId":"chaaaaun"},"content":" assertNotEquals(null, pairCommand1);","lastModifiedDate":"2024-03-22"},{"lineNumber":84,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":85,"author":{"gitId":"soons1"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":86,"author":{"gitId":"chaaaaun"},"content":" assertNotEquals(pairCommand1, pairCommand2);","lastModifiedDate":"2024-03-22"},{"lineNumber":87,"author":{"gitId":"soons1"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":88,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":89,"author":{"gitId":"soons1"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":90,"author":{"gitId":"soons1"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-18"},{"lineNumber":91,"author":{"gitId":"soons1"},"content":" PairCommand pairCommand \u003d new PairCommand(TypicalIndexes.INDEX_FIRST_PERSON, TypicalIndexes.INDEX_FIFTH_PERSON);","lastModifiedDate":"2024-03-18"},{"lineNumber":92,"author":{"gitId":"soons1"},"content":" String expected \u003d PairCommand.class.getCanonicalName()","lastModifiedDate":"2024-03-18"},{"lineNumber":93,"author":{"gitId":"soons1"},"content":" + \"{index1\u003d\" + TypicalIndexes.INDEX_FIRST_PERSON","lastModifiedDate":"2024-03-18"},{"lineNumber":94,"author":{"gitId":"soons1"},"content":" + \", index2\u003d\" + TypicalIndexes.INDEX_FIFTH_PERSON + \"}\";","lastModifiedDate":"2024-03-18"},{"lineNumber":95,"author":{"gitId":"soons1"},"content":" assertEquals(expected, pairCommand.toString());","lastModifiedDate":"2024-03-18"},{"lineNumber":96,"author":{"gitId":"soons1"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":97,"author":{"gitId":"soons1"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"soons1":67,"CJerrong":14,"chaaaaun":16}},{"path":"src/test/java/scrolls/elder/logic/commands/UnpairCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sdevih"},"content":"package scrolls.elder.logic.commands;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"sdevih"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"sdevih"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"sdevih"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"sdevih"},"content":"import static scrolls.elder.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"sdevih"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"sdevih"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"sdevih"},"content":"import scrolls.elder.logic.Messages;","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"sdevih"},"content":"import scrolls.elder.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"sdevih"},"content":"import scrolls.elder.model.AddressBook;","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"sdevih"},"content":"import scrolls.elder.model.Model;","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"sdevih"},"content":"import scrolls.elder.model.ModelManager;","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"sdevih"},"content":"import scrolls.elder.model.UserPrefs;","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"sdevih"},"content":"import scrolls.elder.model.person.Person;","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"sdevih"},"content":"import scrolls.elder.testutil.Assert;","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"sdevih"},"content":"import scrolls.elder.testutil.PersonBuilder;","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"sdevih"},"content":"import scrolls.elder.testutil.TypicalIndexes;","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"sdevih"},"content":"import scrolls.elder.testutil.TypicalPersons;","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"sdevih"},"content":"class UnpairCommandTest {","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"sdevih"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"sdevih"},"content":" void execute_unpairFilteredPersonList_unpairSuccessful() {","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"sdevih"},"content":" Model model \u003d new ModelManager(TypicalPersons.getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"CJerrong"},"content":" Person personToUnpair1 \u003d model.getFilteredBefriendeeList()","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"CJerrong"},"content":" .get(TypicalIndexes.INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"CJerrong"},"content":" Person personToUnpair2 \u003d model.getFilteredVolunteerList().get(TypicalIndexes.INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"sdevih"},"content":" UnpairCommand unpairCommand \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"CJerrong"},"content":" new UnpairCommand(TypicalIndexes.INDEX_FIRST_PERSON, TypicalIndexes.INDEX_FIRST_PERSON);","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"sdevih"},"content":" String expectedMessage \u003d String.format(UnpairCommand.MESSAGE_UNPAIR_SUCCESS,","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"sdevih"},"content":" Messages.format(personToUnpair1), Messages.format(personToUnpair2));","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"CJerrong"},"content":" Person afterUnpairingPerson1 \u003d new PersonBuilder(personToUnpair1)","lastModifiedDate":"2024-03-22"},{"lineNumber":39,"author":{"gitId":"CJerrong"},"content":" .withPairedWithName(Optional.empty()).withPairedWithID(Optional.empty()).build();","lastModifiedDate":"2024-03-22"},{"lineNumber":40,"author":{"gitId":"CJerrong"},"content":" Person afterUnpairingPerson2 \u003d new PersonBuilder(personToUnpair2)","lastModifiedDate":"2024-03-22"},{"lineNumber":41,"author":{"gitId":"CJerrong"},"content":" .withPairedWithName(Optional.empty()).withPairedWithID(Optional.empty()).build();","lastModifiedDate":"2024-03-22"},{"lineNumber":42,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"sdevih"},"content":" ModelManager expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"CJerrong"},"content":" expectedModel.setPerson(model.getFilteredBefriendeeList().get(TypicalIndexes.INDEX_FIRST_PERSON.getZeroBased()),","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"sdevih"},"content":" afterUnpairingPerson1);","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"CJerrong"},"content":" expectedModel.setPerson(model.getFilteredVolunteerList().get(TypicalIndexes.INDEX_FIRST_PERSON.getZeroBased()),","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"sdevih"},"content":" afterUnpairingPerson2);","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"sdevih"},"content":" assertCommandSuccess(unpairCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"sdevih"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"sdevih"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"sdevih"},"content":" void execute_contactsNotPaired_throwsCommandException() {","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"sdevih"},"content":" Model model \u003d new ModelManager(TypicalPersons.getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"sdevih"},"content":" UnpairCommand unpairCommand \u003d new UnpairCommand(TypicalIndexes.INDEX_SECOND_PERSON,","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"sdevih"},"content":" TypicalIndexes.INDEX_THIRD_PERSON);","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"sdevih"},"content":" Assert.assertThrows(","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"sdevih"},"content":" CommandException.class, UnpairCommand.MESSAGE_NOT_PAIRED, () -\u003e unpairCommand.execute(model));","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"sdevih"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"sdevih"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"sdevih"},"content":" public void equals() {","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"sdevih"},"content":" UnpairCommand unpairCommand1 \u003d new UnpairCommand(TypicalIndexes.INDEX_FIRST_PERSON,","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"sdevih"},"content":" TypicalIndexes.INDEX_FIFTH_PERSON);","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"sdevih"},"content":" UnpairCommand unpairCommand2 \u003d new UnpairCommand(TypicalIndexes.INDEX_SECOND_PERSON,","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"sdevih"},"content":" TypicalIndexes.INDEX_FOURTH_PERSON);","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"sdevih"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"sdevih"},"content":" assertTrue(unpairCommand1.equals(unpairCommand1));","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"sdevih"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"sdevih"},"content":" UnpairCommand unpairCommand1Copy \u003d new UnpairCommand(TypicalIndexes.INDEX_FIRST_PERSON,","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"sdevih"},"content":" TypicalIndexes.INDEX_FIFTH_PERSON);","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"sdevih"},"content":" assertTrue(unpairCommand1.equals(unpairCommand1Copy));","lastModifiedDate":"2024-03-21"},{"lineNumber":75,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":76,"author":{"gitId":"sdevih"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":77,"author":{"gitId":"sdevih"},"content":" assertFalse(unpairCommand1.equals(1));","lastModifiedDate":"2024-03-21"},{"lineNumber":78,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":79,"author":{"gitId":"sdevih"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"sdevih"},"content":" assertFalse(unpairCommand1.equals(null));","lastModifiedDate":"2024-03-21"},{"lineNumber":81,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"sdevih"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":83,"author":{"gitId":"sdevih"},"content":" assertFalse(unpairCommand1.equals(unpairCommand2));","lastModifiedDate":"2024-03-21"},{"lineNumber":84,"author":{"gitId":"sdevih"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":85,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":86,"author":{"gitId":"sdevih"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":87,"author":{"gitId":"sdevih"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"sdevih"},"content":" UnpairCommand unpairCommand \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":89,"author":{"gitId":"sdevih"},"content":" new UnpairCommand(TypicalIndexes.INDEX_FIRST_PERSON, TypicalIndexes.INDEX_FIFTH_PERSON);","lastModifiedDate":"2024-03-21"},{"lineNumber":90,"author":{"gitId":"sdevih"},"content":" String expected \u003d UnpairCommand.class.getCanonicalName()","lastModifiedDate":"2024-03-21"},{"lineNumber":91,"author":{"gitId":"sdevih"},"content":" + \"{index1\u003d\" + TypicalIndexes.INDEX_FIRST_PERSON","lastModifiedDate":"2024-03-21"},{"lineNumber":92,"author":{"gitId":"sdevih"},"content":" + \", index2\u003d\" + TypicalIndexes.INDEX_FIFTH_PERSON + \"}\";","lastModifiedDate":"2024-03-21"},{"lineNumber":93,"author":{"gitId":"sdevih"},"content":" assertEquals(expected, unpairCommand.toString());","lastModifiedDate":"2024-03-21"},{"lineNumber":94,"author":{"gitId":"sdevih"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":95,"author":{"gitId":"sdevih"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"CJerrong":10,"sdevih":85}},{"path":"src/test/java/scrolls/elder/logic/parser/AddCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.logic.parser;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"chaaaaun"},"content":"import static scrolls.elder.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"chaaaaun"},"content":"import static scrolls.elder.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"chaaaaun"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.Messages;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.commands.AddCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.commands.CommandTestUtil;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Address;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Email;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Name;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Person;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Phone;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"gerteck"},"content":"import scrolls.elder.model.person.Role;","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.tag.Tag;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.PersonBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.TypicalPersons;","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"chaaaaun"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"chaaaaun"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"chaaaaun"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"chaaaaun"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"chaaaaun"},"content":" Person expectedPerson \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"chaaaaun"},"content":" new PersonBuilder(TypicalPersons.BOB).withTags(CommandTestUtil.VALID_TAG_FRIEND).build();","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"chaaaaun"},"content":" // whitespace only preamble","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"chaaaaun"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"gerteck"},"content":" CommandTestUtil.PREAMBLE_WHITESPACE + CommandTestUtil.NAME_DESC_BOB","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"gerteck"},"content":" + CommandTestUtil.PHONE_DESC_BOB","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"chaaaaun"},"content":" + CommandTestUtil.EMAIL_DESC_BOB + CommandTestUtil.ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"gerteck"},"content":" + CommandTestUtil.TAG_DESC_FRIEND + CommandTestUtil.ROLE_DESC_BEFRIENDEE,","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"gerteck"},"content":" new AddCommand(expectedPerson));","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"chaaaaun"},"content":" // multiple tags - all accepted","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"chaaaaun"},"content":" Person expectedPersonMultipleTags \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"chaaaaun"},"content":" new PersonBuilder(TypicalPersons.BOB).withTags(CommandTestUtil.VALID_TAG_FRIEND,","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"chaaaaun"},"content":" CommandTestUtil.VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"chaaaaun"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"gerteck"},"content":" CommandTestUtil.NAME_DESC_BOB + CommandTestUtil.PHONE_DESC_BOB","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"gerteck"},"content":" + CommandTestUtil.EMAIL_DESC_BOB","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"chaaaaun"},"content":" + CommandTestUtil.ADDRESS_DESC_BOB + CommandTestUtil.TAG_DESC_HUSBAND","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"gerteck"},"content":" + CommandTestUtil.TAG_DESC_FRIEND + CommandTestUtil.ROLE_DESC_BEFRIENDEE,","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"gerteck"},"content":" new AddCommand(expectedPersonMultipleTags));","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"chaaaaun"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"chaaaaun"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"chaaaaun"},"content":" String validExpectedPersonString \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"chaaaaun"},"content":" CommandTestUtil.NAME_DESC_BOB + CommandTestUtil.PHONE_DESC_BOB + CommandTestUtil.EMAIL_DESC_BOB","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"gerteck"},"content":" + CommandTestUtil.ADDRESS_DESC_BOB + CommandTestUtil.TAG_DESC_FRIEND","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"gerteck"},"content":" + CommandTestUtil.ROLE_DESC_BEFRIENDEE;","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"chaaaaun"},"content":" // multiple names","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"chaaaaun"},"content":" assertParseFailure(parser, CommandTestUtil.NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"chaaaaun"},"content":" Messages.getErrorMessageForDuplicatePrefixes(CliSyntax.PREFIX_NAME));","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"chaaaaun"},"content":" // multiple phones","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"chaaaaun"},"content":" assertParseFailure(parser, CommandTestUtil.PHONE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-03-12"},{"lineNumber":63,"author":{"gitId":"chaaaaun"},"content":" Messages.getErrorMessageForDuplicatePrefixes(CliSyntax.PREFIX_PHONE));","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"chaaaaun"},"content":" // multiple emails","lastModifiedDate":"2024-03-12"},{"lineNumber":66,"author":{"gitId":"chaaaaun"},"content":" assertParseFailure(parser, CommandTestUtil.EMAIL_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"chaaaaun"},"content":" Messages.getErrorMessageForDuplicatePrefixes(CliSyntax.PREFIX_EMAIL));","lastModifiedDate":"2024-03-12"},{"lineNumber":68,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":69,"author":{"gitId":"chaaaaun"},"content":" // multiple addresses","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"chaaaaun"},"content":" assertParseFailure(parser, CommandTestUtil.ADDRESS_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-03-12"},{"lineNumber":71,"author":{"gitId":"chaaaaun"},"content":" Messages.getErrorMessageForDuplicatePrefixes(CliSyntax.PREFIX_ADDRESS));","lastModifiedDate":"2024-03-12"},{"lineNumber":72,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":73,"author":{"gitId":"chaaaaun"},"content":" // multiple fields repeated","lastModifiedDate":"2024-03-12"},{"lineNumber":74,"author":{"gitId":"chaaaaun"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-03-12"},{"lineNumber":75,"author":{"gitId":"chaaaaun"},"content":" validExpectedPersonString + CommandTestUtil.PHONE_DESC_AMY + CommandTestUtil.EMAIL_DESC_AMY","lastModifiedDate":"2024-03-12"},{"lineNumber":76,"author":{"gitId":"chaaaaun"},"content":" + CommandTestUtil.NAME_DESC_AMY + CommandTestUtil.ADDRESS_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-03-12"},{"lineNumber":77,"author":{"gitId":"chaaaaun"},"content":" Messages.getErrorMessageForDuplicatePrefixes(CliSyntax.PREFIX_NAME, CliSyntax.PREFIX_ADDRESS,","lastModifiedDate":"2024-03-12"},{"lineNumber":78,"author":{"gitId":"gerteck"},"content":" CliSyntax.PREFIX_EMAIL, CliSyntax.PREFIX_PHONE, CliSyntax.PREFIX_ROLE));","lastModifiedDate":"2024-03-16"},{"lineNumber":79,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":80,"author":{"gitId":"chaaaaun"},"content":" // invalid value followed by valid value","lastModifiedDate":"2024-03-12"},{"lineNumber":81,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":82,"author":{"gitId":"chaaaaun"},"content":" // invalid name","lastModifiedDate":"2024-03-12"},{"lineNumber":83,"author":{"gitId":"chaaaaun"},"content":" assertParseFailure(parser, CommandTestUtil.INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2024-03-12"},{"lineNumber":84,"author":{"gitId":"chaaaaun"},"content":" Messages.getErrorMessageForDuplicatePrefixes(CliSyntax.PREFIX_NAME));","lastModifiedDate":"2024-03-12"},{"lineNumber":85,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":86,"author":{"gitId":"chaaaaun"},"content":" // invalid email","lastModifiedDate":"2024-03-12"},{"lineNumber":87,"author":{"gitId":"chaaaaun"},"content":" assertParseFailure(parser, CommandTestUtil.INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2024-03-12"},{"lineNumber":88,"author":{"gitId":"chaaaaun"},"content":" Messages.getErrorMessageForDuplicatePrefixes(CliSyntax.PREFIX_EMAIL));","lastModifiedDate":"2024-03-12"},{"lineNumber":89,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":90,"author":{"gitId":"chaaaaun"},"content":" // invalid phone","lastModifiedDate":"2024-03-12"},{"lineNumber":91,"author":{"gitId":"chaaaaun"},"content":" assertParseFailure(parser, CommandTestUtil.INVALID_PHONE_DESC + validExpectedPersonString,","lastModifiedDate":"2024-03-12"},{"lineNumber":92,"author":{"gitId":"chaaaaun"},"content":" Messages.getErrorMessageForDuplicatePrefixes(CliSyntax.PREFIX_PHONE));","lastModifiedDate":"2024-03-12"},{"lineNumber":93,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":94,"author":{"gitId":"chaaaaun"},"content":" // invalid address","lastModifiedDate":"2024-03-12"},{"lineNumber":95,"author":{"gitId":"chaaaaun"},"content":" assertParseFailure(parser, CommandTestUtil.INVALID_ADDRESS_DESC + validExpectedPersonString,","lastModifiedDate":"2024-03-12"},{"lineNumber":96,"author":{"gitId":"chaaaaun"},"content":" Messages.getErrorMessageForDuplicatePrefixes(CliSyntax.PREFIX_ADDRESS));","lastModifiedDate":"2024-03-12"},{"lineNumber":97,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":98,"author":{"gitId":"gerteck"},"content":" // invalid role","lastModifiedDate":"2024-03-16"},{"lineNumber":99,"author":{"gitId":"gerteck"},"content":" assertParseFailure(parser, CommandTestUtil.INVALID_ROLE_DESC + validExpectedPersonString,","lastModifiedDate":"2024-03-16"},{"lineNumber":100,"author":{"gitId":"gerteck"},"content":" Messages.getErrorMessageForDuplicatePrefixes(CliSyntax.PREFIX_ROLE));","lastModifiedDate":"2024-03-16"},{"lineNumber":101,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":102,"author":{"gitId":"chaaaaun"},"content":" // valid value followed by invalid value","lastModifiedDate":"2024-03-12"},{"lineNumber":103,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":104,"author":{"gitId":"chaaaaun"},"content":" // invalid name","lastModifiedDate":"2024-03-12"},{"lineNumber":105,"author":{"gitId":"chaaaaun"},"content":" assertParseFailure(parser, validExpectedPersonString + CommandTestUtil.INVALID_NAME_DESC,","lastModifiedDate":"2024-03-12"},{"lineNumber":106,"author":{"gitId":"chaaaaun"},"content":" Messages.getErrorMessageForDuplicatePrefixes(CliSyntax.PREFIX_NAME));","lastModifiedDate":"2024-03-12"},{"lineNumber":107,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":108,"author":{"gitId":"chaaaaun"},"content":" // invalid email","lastModifiedDate":"2024-03-12"},{"lineNumber":109,"author":{"gitId":"chaaaaun"},"content":" assertParseFailure(parser, validExpectedPersonString + CommandTestUtil.INVALID_EMAIL_DESC,","lastModifiedDate":"2024-03-12"},{"lineNumber":110,"author":{"gitId":"chaaaaun"},"content":" Messages.getErrorMessageForDuplicatePrefixes(CliSyntax.PREFIX_EMAIL));","lastModifiedDate":"2024-03-12"},{"lineNumber":111,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":112,"author":{"gitId":"chaaaaun"},"content":" // invalid phone","lastModifiedDate":"2024-03-12"},{"lineNumber":113,"author":{"gitId":"chaaaaun"},"content":" assertParseFailure(parser, validExpectedPersonString + CommandTestUtil.INVALID_PHONE_DESC,","lastModifiedDate":"2024-03-12"},{"lineNumber":114,"author":{"gitId":"chaaaaun"},"content":" Messages.getErrorMessageForDuplicatePrefixes(CliSyntax.PREFIX_PHONE));","lastModifiedDate":"2024-03-12"},{"lineNumber":115,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":116,"author":{"gitId":"chaaaaun"},"content":" // invalid address","lastModifiedDate":"2024-03-12"},{"lineNumber":117,"author":{"gitId":"chaaaaun"},"content":" assertParseFailure(parser, validExpectedPersonString + CommandTestUtil.INVALID_ADDRESS_DESC,","lastModifiedDate":"2024-03-12"},{"lineNumber":118,"author":{"gitId":"chaaaaun"},"content":" Messages.getErrorMessageForDuplicatePrefixes(CliSyntax.PREFIX_ADDRESS));","lastModifiedDate":"2024-03-12"},{"lineNumber":119,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":120,"author":{"gitId":"gerteck"},"content":" // invalid role","lastModifiedDate":"2024-03-16"},{"lineNumber":121,"author":{"gitId":"gerteck"},"content":" assertParseFailure(parser, validExpectedPersonString + CommandTestUtil.INVALID_ROLE_DESC,","lastModifiedDate":"2024-03-16"},{"lineNumber":122,"author":{"gitId":"gerteck"},"content":" Messages.getErrorMessageForDuplicatePrefixes(CliSyntax.PREFIX_ROLE));","lastModifiedDate":"2024-03-16"},{"lineNumber":123,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":124,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":125,"author":{"gitId":"chaaaaun"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":126,"author":{"gitId":"chaaaaun"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2024-03-12"},{"lineNumber":127,"author":{"gitId":"chaaaaun"},"content":" // zero tags","lastModifiedDate":"2024-03-12"},{"lineNumber":128,"author":{"gitId":"chaaaaun"},"content":" Person expectedPerson \u003d new PersonBuilder(TypicalPersons.AMY).withTags().build();","lastModifiedDate":"2024-03-12"},{"lineNumber":129,"author":{"gitId":"chaaaaun"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2024-03-12"},{"lineNumber":130,"author":{"gitId":"chaaaaun"},"content":" CommandTestUtil.NAME_DESC_AMY + CommandTestUtil.PHONE_DESC_AMY + CommandTestUtil.EMAIL_DESC_AMY","lastModifiedDate":"2024-03-12"},{"lineNumber":131,"author":{"gitId":"gerteck"},"content":" + CommandTestUtil.ADDRESS_DESC_AMY + CommandTestUtil.ROLE_DESC_VOLUNTEER,","lastModifiedDate":"2024-03-16"},{"lineNumber":132,"author":{"gitId":"gerteck"},"content":" new AddCommand(expectedPerson));","lastModifiedDate":"2024-03-16"},{"lineNumber":133,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":134,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":135,"author":{"gitId":"chaaaaun"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":136,"author":{"gitId":"chaaaaun"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2024-03-12"},{"lineNumber":137,"author":{"gitId":"chaaaaun"},"content":" String expectedMessage \u003d String.format(Messages.MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-03-12"},{"lineNumber":138,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":139,"author":{"gitId":"chaaaaun"},"content":" // missing name prefix","lastModifiedDate":"2024-03-12"},{"lineNumber":140,"author":{"gitId":"chaaaaun"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-03-12"},{"lineNumber":141,"author":{"gitId":"gerteck"},"content":" CommandTestUtil.VALID_NAME_BOB + CommandTestUtil.PHONE_DESC_BOB","lastModifiedDate":"2024-03-16"},{"lineNumber":142,"author":{"gitId":"gerteck"},"content":" + CommandTestUtil.EMAIL_DESC_BOB","lastModifiedDate":"2024-03-16"},{"lineNumber":143,"author":{"gitId":"chaaaaun"},"content":" + CommandTestUtil.ADDRESS_DESC_BOB, expectedMessage);","lastModifiedDate":"2024-03-12"},{"lineNumber":144,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":145,"author":{"gitId":"chaaaaun"},"content":" // missing phone prefix","lastModifiedDate":"2024-03-12"},{"lineNumber":146,"author":{"gitId":"chaaaaun"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-03-12"},{"lineNumber":147,"author":{"gitId":"gerteck"},"content":" CommandTestUtil.NAME_DESC_BOB + CommandTestUtil.VALID_PHONE_BOB","lastModifiedDate":"2024-03-16"},{"lineNumber":148,"author":{"gitId":"gerteck"},"content":" + CommandTestUtil.EMAIL_DESC_BOB","lastModifiedDate":"2024-03-16"},{"lineNumber":149,"author":{"gitId":"chaaaaun"},"content":" + CommandTestUtil.ADDRESS_DESC_BOB, expectedMessage);","lastModifiedDate":"2024-03-12"},{"lineNumber":150,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":151,"author":{"gitId":"chaaaaun"},"content":" // missing email prefix","lastModifiedDate":"2024-03-12"},{"lineNumber":152,"author":{"gitId":"chaaaaun"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-03-12"},{"lineNumber":153,"author":{"gitId":"gerteck"},"content":" CommandTestUtil.NAME_DESC_BOB + CommandTestUtil.PHONE_DESC_BOB","lastModifiedDate":"2024-03-16"},{"lineNumber":154,"author":{"gitId":"gerteck"},"content":" + CommandTestUtil.VALID_EMAIL_BOB","lastModifiedDate":"2024-03-16"},{"lineNumber":155,"author":{"gitId":"chaaaaun"},"content":" + CommandTestUtil.ADDRESS_DESC_BOB, expectedMessage);","lastModifiedDate":"2024-03-12"},{"lineNumber":156,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":157,"author":{"gitId":"chaaaaun"},"content":" // missing address prefix","lastModifiedDate":"2024-03-12"},{"lineNumber":158,"author":{"gitId":"chaaaaun"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-03-12"},{"lineNumber":159,"author":{"gitId":"chaaaaun"},"content":" CommandTestUtil.NAME_DESC_BOB + CommandTestUtil.PHONE_DESC_BOB + CommandTestUtil.EMAIL_DESC_BOB","lastModifiedDate":"2024-03-12"},{"lineNumber":160,"author":{"gitId":"chaaaaun"},"content":" + CommandTestUtil.VALID_ADDRESS_BOB, expectedMessage);","lastModifiedDate":"2024-03-12"},{"lineNumber":161,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":162,"author":{"gitId":"chaaaaun"},"content":" // all prefixes missing","lastModifiedDate":"2024-03-12"},{"lineNumber":163,"author":{"gitId":"chaaaaun"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-03-12"},{"lineNumber":164,"author":{"gitId":"gerteck"},"content":" CommandTestUtil.VALID_NAME_BOB + CommandTestUtil.VALID_PHONE_BOB","lastModifiedDate":"2024-03-16"},{"lineNumber":165,"author":{"gitId":"gerteck"},"content":" + CommandTestUtil.VALID_EMAIL_BOB","lastModifiedDate":"2024-03-16"},{"lineNumber":166,"author":{"gitId":"chaaaaun"},"content":" + CommandTestUtil.VALID_ADDRESS_BOB, expectedMessage);","lastModifiedDate":"2024-03-12"},{"lineNumber":167,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":168,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":169,"author":{"gitId":"chaaaaun"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":170,"author":{"gitId":"chaaaaun"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2024-03-12"},{"lineNumber":171,"author":{"gitId":"chaaaaun"},"content":" // invalid name","lastModifiedDate":"2024-03-12"},{"lineNumber":172,"author":{"gitId":"chaaaaun"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-03-12"},{"lineNumber":173,"author":{"gitId":"gerteck"},"content":" CommandTestUtil.INVALID_NAME_DESC + CommandTestUtil.PHONE_DESC_BOB","lastModifiedDate":"2024-03-16"},{"lineNumber":174,"author":{"gitId":"gerteck"},"content":" + CommandTestUtil.EMAIL_DESC_BOB","lastModifiedDate":"2024-03-16"},{"lineNumber":175,"author":{"gitId":"chaaaaun"},"content":" + CommandTestUtil.ADDRESS_DESC_BOB + CommandTestUtil.TAG_DESC_HUSBAND","lastModifiedDate":"2024-03-12"},{"lineNumber":176,"author":{"gitId":"gerteck"},"content":" + CommandTestUtil.ROLE_DESC_BEFRIENDEE","lastModifiedDate":"2024-03-16"},{"lineNumber":177,"author":{"gitId":"chaaaaun"},"content":" + CommandTestUtil.TAG_DESC_FRIEND, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":178,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":179,"author":{"gitId":"chaaaaun"},"content":" // invalid phone","lastModifiedDate":"2024-03-12"},{"lineNumber":180,"author":{"gitId":"chaaaaun"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-03-12"},{"lineNumber":181,"author":{"gitId":"gerteck"},"content":" CommandTestUtil.NAME_DESC_BOB + CommandTestUtil.INVALID_PHONE_DESC","lastModifiedDate":"2024-03-16"},{"lineNumber":182,"author":{"gitId":"gerteck"},"content":" + CommandTestUtil.EMAIL_DESC_BOB","lastModifiedDate":"2024-03-16"},{"lineNumber":183,"author":{"gitId":"chaaaaun"},"content":" + CommandTestUtil.ADDRESS_DESC_BOB + CommandTestUtil.TAG_DESC_HUSBAND","lastModifiedDate":"2024-03-12"},{"lineNumber":184,"author":{"gitId":"gerteck"},"content":" + CommandTestUtil.ROLE_DESC_BEFRIENDEE","lastModifiedDate":"2024-03-16"},{"lineNumber":185,"author":{"gitId":"chaaaaun"},"content":" + CommandTestUtil.TAG_DESC_FRIEND, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":186,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":187,"author":{"gitId":"chaaaaun"},"content":" // invalid email","lastModifiedDate":"2024-03-12"},{"lineNumber":188,"author":{"gitId":"chaaaaun"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-03-12"},{"lineNumber":189,"author":{"gitId":"gerteck"},"content":" CommandTestUtil.NAME_DESC_BOB + CommandTestUtil.PHONE_DESC_BOB","lastModifiedDate":"2024-03-16"},{"lineNumber":190,"author":{"gitId":"gerteck"},"content":" + CommandTestUtil.INVALID_EMAIL_DESC","lastModifiedDate":"2024-03-16"},{"lineNumber":191,"author":{"gitId":"chaaaaun"},"content":" + CommandTestUtil.ADDRESS_DESC_BOB + CommandTestUtil.TAG_DESC_HUSBAND","lastModifiedDate":"2024-03-12"},{"lineNumber":192,"author":{"gitId":"gerteck"},"content":" + CommandTestUtil.ROLE_DESC_BEFRIENDEE","lastModifiedDate":"2024-03-16"},{"lineNumber":193,"author":{"gitId":"chaaaaun"},"content":" + CommandTestUtil.TAG_DESC_FRIEND, Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":194,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":195,"author":{"gitId":"chaaaaun"},"content":" // invalid address","lastModifiedDate":"2024-03-12"},{"lineNumber":196,"author":{"gitId":"chaaaaun"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-03-12"},{"lineNumber":197,"author":{"gitId":"chaaaaun"},"content":" CommandTestUtil.NAME_DESC_BOB + CommandTestUtil.PHONE_DESC_BOB + CommandTestUtil.EMAIL_DESC_BOB","lastModifiedDate":"2024-03-12"},{"lineNumber":198,"author":{"gitId":"chaaaaun"},"content":" + CommandTestUtil.INVALID_ADDRESS_DESC + CommandTestUtil.TAG_DESC_HUSBAND","lastModifiedDate":"2024-03-12"},{"lineNumber":199,"author":{"gitId":"gerteck"},"content":" + CommandTestUtil.ROLE_DESC_BEFRIENDEE","lastModifiedDate":"2024-03-16"},{"lineNumber":200,"author":{"gitId":"chaaaaun"},"content":" + CommandTestUtil.TAG_DESC_FRIEND, Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":201,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":202,"author":{"gitId":"chaaaaun"},"content":" // invalid tag","lastModifiedDate":"2024-03-12"},{"lineNumber":203,"author":{"gitId":"chaaaaun"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-03-12"},{"lineNumber":204,"author":{"gitId":"chaaaaun"},"content":" CommandTestUtil.NAME_DESC_BOB + CommandTestUtil.PHONE_DESC_BOB + CommandTestUtil.EMAIL_DESC_BOB","lastModifiedDate":"2024-03-12"},{"lineNumber":205,"author":{"gitId":"gerteck"},"content":" + CommandTestUtil.ROLE_DESC_BEFRIENDEE","lastModifiedDate":"2024-03-16"},{"lineNumber":206,"author":{"gitId":"chaaaaun"},"content":" + CommandTestUtil.ADDRESS_DESC_BOB + CommandTestUtil.INVALID_TAG_DESC","lastModifiedDate":"2024-03-12"},{"lineNumber":207,"author":{"gitId":"chaaaaun"},"content":" + CommandTestUtil.VALID_TAG_FRIEND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":208,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":209,"author":{"gitId":"gerteck"},"content":" // invalid role","lastModifiedDate":"2024-03-16"},{"lineNumber":210,"author":{"gitId":"gerteck"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-03-16"},{"lineNumber":211,"author":{"gitId":"gerteck"},"content":" CommandTestUtil.NAME_DESC_BOB + CommandTestUtil.PHONE_DESC_BOB + CommandTestUtil.EMAIL_DESC_BOB","lastModifiedDate":"2024-03-16"},{"lineNumber":212,"author":{"gitId":"gerteck"},"content":" + CommandTestUtil.ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-16"},{"lineNumber":213,"author":{"gitId":"gerteck"},"content":" + CommandTestUtil.INVALID_ROLE_DESC","lastModifiedDate":"2024-03-16"},{"lineNumber":214,"author":{"gitId":"gerteck"},"content":" + CommandTestUtil.VALID_TAG_FRIEND, Role.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-16"},{"lineNumber":215,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":216,"author":{"gitId":"chaaaaun"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2024-03-12"},{"lineNumber":217,"author":{"gitId":"chaaaaun"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-03-12"},{"lineNumber":218,"author":{"gitId":"gerteck"},"content":" CommandTestUtil.INVALID_NAME_DESC + CommandTestUtil.PHONE_DESC_BOB","lastModifiedDate":"2024-03-16"},{"lineNumber":219,"author":{"gitId":"gerteck"},"content":" + CommandTestUtil.EMAIL_DESC_BOB","lastModifiedDate":"2024-03-16"},{"lineNumber":220,"author":{"gitId":"gerteck"},"content":" + CommandTestUtil.ROLE_DESC_BEFRIENDEE","lastModifiedDate":"2024-03-16"},{"lineNumber":221,"author":{"gitId":"chaaaaun"},"content":" + CommandTestUtil.INVALID_ADDRESS_DESC, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":222,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":223,"author":{"gitId":"chaaaaun"},"content":" // non-empty preamble","lastModifiedDate":"2024-03-12"},{"lineNumber":224,"author":{"gitId":"chaaaaun"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-03-12"},{"lineNumber":225,"author":{"gitId":"gerteck"},"content":" CommandTestUtil.PREAMBLE_NON_EMPTY + CommandTestUtil.NAME_DESC_BOB","lastModifiedDate":"2024-03-16"},{"lineNumber":226,"author":{"gitId":"gerteck"},"content":" + CommandTestUtil.PHONE_DESC_BOB","lastModifiedDate":"2024-03-16"},{"lineNumber":227,"author":{"gitId":"chaaaaun"},"content":" + CommandTestUtil.EMAIL_DESC_BOB + CommandTestUtil.ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-12"},{"lineNumber":228,"author":{"gitId":"gerteck"},"content":" + CommandTestUtil.ROLE_DESC_BEFRIENDEE","lastModifiedDate":"2024-03-16"},{"lineNumber":229,"author":{"gitId":"chaaaaun"},"content":" + CommandTestUtil.TAG_DESC_HUSBAND + CommandTestUtil.TAG_DESC_FRIEND,","lastModifiedDate":"2024-03-12"},{"lineNumber":230,"author":{"gitId":"chaaaaun"},"content":" String.format(Messages.MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-12"},{"lineNumber":231,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":232,"author":{"gitId":"chaaaaun"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"gerteck":54,"chaaaaun":178}},{"path":"src/test/java/scrolls/elder/logic/parser/AddressBookParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.logic.parser;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-06-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":12,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.Messages;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.commands.AddCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.commands.ClearCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.commands.DeleteCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.commands.EditCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.commands.ExitCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.commands.FindCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.commands.HelpCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.commands.ListCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Person;","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Role;","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.Assert;","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.PersonBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.PersonUtil;","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.TypicalIndexes;","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":33,"author":{"gitId":"chaaaaun"},"content":" private static final String ROLE_STRING \u003d \"volunteer\";","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(PersonUtil.getAddCommand(person));","lastModifiedDate":"2017-06-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertEquals(new AddCommand(person), command);","lastModifiedDate":"2017-06-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"sdevih"},"content":" public void parseCommand_delete1() throws Exception {","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"chaaaaun"},"content":" String userInput \u003d String.format(\"%s %d r/%s\", DeleteCommand.COMMAND_WORD_DELETE,","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"chaaaaun"},"content":" TypicalIndexes.INDEX_FIRST_PERSON.getOneBased(), ROLE_STRING);","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"chaaaaun"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(userInput);","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"chaaaaun"},"content":" assertEquals(new DeleteCommand(TypicalIndexes.INDEX_FIRST_PERSON, new Role(ROLE_STRING)), command);","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"sdevih"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"sdevih"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"sdevih"},"content":" public void parseCommand_delete2() throws Exception {","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"chaaaaun"},"content":" String userInput \u003d String.format(\"%s %d r/%s\", DeleteCommand.COMMAND_WORD_DEL,","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"chaaaaun"},"content":" TypicalIndexes.INDEX_FIRST_PERSON.getOneBased(), ROLE_STRING);","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"chaaaaun"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(userInput);","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"chaaaaun"},"content":" assertEquals(new DeleteCommand(TypicalIndexes.INDEX_FIRST_PERSON, new Role(ROLE_STRING)), command);","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"sdevih"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"sdevih"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"sdevih"},"content":" public void parseCommand_delete3() throws Exception {","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"chaaaaun"},"content":" String userInput \u003d String.format(\"%s %d r/%s\", DeleteCommand.COMMAND_WORD_RM,","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"chaaaaun"},"content":" TypicalIndexes.INDEX_FIRST_PERSON.getOneBased(), ROLE_STRING);","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"chaaaaun"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(userInput);","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"chaaaaun"},"content":" assertEquals(new DeleteCommand(TypicalIndexes.INDEX_FIRST_PERSON, new Role(ROLE_STRING)), command);","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"sdevih"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"sdevih"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"sdevih"},"content":" public void parseCommand_delete4() throws Exception {","lastModifiedDate":"2024-03-21"},{"lineNumber":75,"author":{"gitId":"chaaaaun"},"content":" String userInput \u003d String.format(\"%s %d r/%s\", DeleteCommand.COMMAND_WORD_REMOVE,","lastModifiedDate":"2024-03-21"},{"lineNumber":76,"author":{"gitId":"chaaaaun"},"content":" TypicalIndexes.INDEX_FIRST_PERSON.getOneBased(), ROLE_STRING);","lastModifiedDate":"2024-03-21"},{"lineNumber":77,"author":{"gitId":"chaaaaun"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(userInput);","lastModifiedDate":"2024-03-21"},{"lineNumber":78,"author":{"gitId":"chaaaaun"},"content":" assertEquals(new DeleteCommand(TypicalIndexes.INDEX_FIRST_PERSON, new Role(ROLE_STRING)), command);","lastModifiedDate":"2024-03-21"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":84,"author":{"gitId":"chaaaaun"},"content":" EditCommand.EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(person).build();","lastModifiedDate":"2024-03-12"},{"lineNumber":85,"author":{"gitId":"-"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-27"},{"lineNumber":86,"author":{"gitId":"gerteck"},"content":" + TypicalIndexes.INDEX_FIRST_PERSON.getOneBased()","lastModifiedDate":"2024-03-16"},{"lineNumber":87,"author":{"gitId":"gerteck"},"content":" + \" \"","lastModifiedDate":"2024-03-16"},{"lineNumber":88,"author":{"gitId":"gerteck"},"content":" + PersonUtil.getEditPersonDescriptorDetails(descriptor));","lastModifiedDate":"2024-03-16"},{"lineNumber":89,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":90,"author":{"gitId":"chaaaaun"},"content":" assertEquals(new EditCommand(TypicalIndexes.INDEX_FIRST_PERSON, descriptor), command);","lastModifiedDate":"2024-03-12"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":101,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2017-06-12"},{"lineNumber":102,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":" FindCommand.COMMAND_WORD + \" \" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2017-06-27"},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertEquals(new FindCommand(new NameContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2017-06-12"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":114,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD) instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":116,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" 3\") instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":119,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":120,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":121,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(ParseException.class,","lastModifiedDate":"2024-03-12"},{"lineNumber":122,"author":{"gitId":"chaaaaun"},"content":" String.format(Messages.MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2024-03-12"},{"lineNumber":123,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":127,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":128,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(ParseException.class, Messages.MESSAGE_UNKNOWN_COMMAND, ()","lastModifiedDate":"2024-03-12"},{"lineNumber":129,"author":{"gitId":"chaaaaun"},"content":" -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":131,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"gerteck":4,"chaaaaun":42,"-":72,"sdevih":13}},{"path":"src/test/java/scrolls/elder/logic/parser/ArgumentTokenizerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.logic.parser;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class ArgumentTokenizerTest {","lastModifiedDate":"2016-10-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":12,"author":{"gitId":"-"},"content":" private final Prefix unknownPrefix \u003d new Prefix(\"--u\");","lastModifiedDate":"2016-10-16"},{"lineNumber":13,"author":{"gitId":"-"},"content":" private final Prefix pSlash \u003d new Prefix(\"p/\");","lastModifiedDate":"2017-03-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":" private final Prefix dashT \u003d new Prefix(\"-t\");","lastModifiedDate":"2016-10-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":" private final Prefix hatQ \u003d new Prefix(\"^Q\");","lastModifiedDate":"2016-10-16"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public void tokenize_emptyArgsString_noValues() {","lastModifiedDate":"2016-10-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":" String argsString \u003d \" \";","lastModifiedDate":"2016-10-16"},{"lineNumber":20,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash);","lastModifiedDate":"2017-03-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":22,"author":{"gitId":"-"},"content":" assertPreambleEmpty(argMultimap);","lastModifiedDate":"2017-03-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" assertArgumentAbsent(argMultimap, pSlash);","lastModifiedDate":"2017-03-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private void assertPreamblePresent(ArgumentMultimap argMultimap, String expectedPreamble) {","lastModifiedDate":"2017-03-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertEquals(expectedPreamble, argMultimap.getPreamble());","lastModifiedDate":"2017-03-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private void assertPreambleEmpty(ArgumentMultimap argMultimap) {","lastModifiedDate":"2017-03-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertTrue(argMultimap.getPreamble().isEmpty());","lastModifiedDate":"2017-03-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-20"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Asserts all the arguments in {@code argMultimap} with {@code prefix} match the {@code expectedValues}","lastModifiedDate":"2017-08-20"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * and only the last value is returned upon calling {@code ArgumentMultimap#getValue(Prefix)}.","lastModifiedDate":"2017-08-20"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-20"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private void assertArgumentPresent(ArgumentMultimap argMultimap, Prefix prefix, String... expectedValues) {","lastModifiedDate":"2017-03-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":40,"author":{"gitId":"-"},"content":" // Verify the last value is returned","lastModifiedDate":"2016-10-16"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertEquals(expectedValues[expectedValues.length - 1], argMultimap.getValue(prefix).get());","lastModifiedDate":"2017-06-07"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":43,"author":{"gitId":"-"},"content":" // Verify the number of values returned is as expected","lastModifiedDate":"2016-10-16"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertEquals(expectedValues.length, argMultimap.getAllValues(prefix).size());","lastModifiedDate":"2017-03-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":46,"author":{"gitId":"-"},"content":" // Verify all values returned are as expected and in order","lastModifiedDate":"2016-10-16"},{"lineNumber":47,"author":{"gitId":"-"},"content":" for (int i \u003d 0; i \u003c expectedValues.length; i++) {","lastModifiedDate":"2016-10-16"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertEquals(expectedValues[i], argMultimap.getAllValues(prefix).get(i));","lastModifiedDate":"2017-03-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":52,"author":{"gitId":"-"},"content":" private void assertArgumentAbsent(ArgumentMultimap argMultimap, Prefix prefix) {","lastModifiedDate":"2017-03-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(argMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void tokenize_noPrefixes_allTakenAsPreamble() {","lastModifiedDate":"2016-10-16"},{"lineNumber":58,"author":{"gitId":"-"},"content":" String argsString \u003d \" some random string /t tag with leading and trailing spaces \";","lastModifiedDate":"2016-10-16"},{"lineNumber":59,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argsString);","lastModifiedDate":"2017-03-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":61,"author":{"gitId":"-"},"content":" // Same string expected as preamble, but leading/trailing spaces should be trimmed","lastModifiedDate":"2016-10-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertPreamblePresent(argMultimap, argsString.trim());","lastModifiedDate":"2017-03-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void tokenize_oneArgument() {","lastModifiedDate":"2016-10-16"},{"lineNumber":68,"author":{"gitId":"-"},"content":" // Preamble present","lastModifiedDate":"2016-10-16"},{"lineNumber":69,"author":{"gitId":"-"},"content":" String argsString \u003d \" Some preamble string p/ Argument value \";","lastModifiedDate":"2017-03-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash);","lastModifiedDate":"2017-03-20"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertPreamblePresent(argMultimap, \"Some preamble string\");","lastModifiedDate":"2017-03-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, pSlash, \"Argument value\");","lastModifiedDate":"2017-03-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":74,"author":{"gitId":"-"},"content":" // No preamble","lastModifiedDate":"2016-10-16"},{"lineNumber":75,"author":{"gitId":"-"},"content":" argsString \u003d \" p/ Argument value \";","lastModifiedDate":"2017-03-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash);","lastModifiedDate":"2017-03-20"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertPreambleEmpty(argMultimap);","lastModifiedDate":"2017-03-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, pSlash, \"Argument value\");","lastModifiedDate":"2017-03-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void tokenize_multipleArguments() {","lastModifiedDate":"2016-10-16"},{"lineNumber":84,"author":{"gitId":"-"},"content":" // Only two arguments are present","lastModifiedDate":"2016-10-16"},{"lineNumber":85,"author":{"gitId":"-"},"content":" String argsString \u003d \"SomePreambleString -t dashT-Value p/pSlash value\";","lastModifiedDate":"2017-03-08"},{"lineNumber":86,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash, dashT, hatQ);","lastModifiedDate":"2017-03-20"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertPreamblePresent(argMultimap, \"SomePreambleString\");","lastModifiedDate":"2017-03-08"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, pSlash, \"pSlash value\");","lastModifiedDate":"2017-03-08"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, dashT, \"dashT-Value\");","lastModifiedDate":"2017-03-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertArgumentAbsent(argMultimap, hatQ);","lastModifiedDate":"2017-03-08"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":92,"author":{"gitId":"-"},"content":" // All three arguments are present","lastModifiedDate":"2017-05-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":" argsString \u003d \"Different Preamble String ^Q111 -t dashT-Value p/pSlash value\";","lastModifiedDate":"2017-03-08"},{"lineNumber":94,"author":{"gitId":"-"},"content":" argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash, dashT, hatQ);","lastModifiedDate":"2017-03-20"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertPreamblePresent(argMultimap, \"Different Preamble String\");","lastModifiedDate":"2017-03-08"},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, pSlash, \"pSlash value\");","lastModifiedDate":"2017-03-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, dashT, \"dashT-Value\");","lastModifiedDate":"2017-03-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, hatQ, \"111\");","lastModifiedDate":"2017-03-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":100,"author":{"gitId":"-"},"content":" /* Also covers: Reusing of the tokenizer multiple times */","lastModifiedDate":"2016-10-16"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":102,"author":{"gitId":"-"},"content":" // Reuse tokenizer on an empty string to ensure ArgumentMultimap is correctly reset","lastModifiedDate":"2017-03-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":" // (i.e. no stale values from the previous tokenizing remain)","lastModifiedDate":"2017-03-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":" argsString \u003d \"\";","lastModifiedDate":"2017-03-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":" argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash, dashT, hatQ);","lastModifiedDate":"2017-03-20"},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertPreambleEmpty(argMultimap);","lastModifiedDate":"2017-03-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertArgumentAbsent(argMultimap, pSlash);","lastModifiedDate":"2017-03-08"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":109,"author":{"gitId":"-"},"content":" /* Also covers: testing for prefixes not specified as a prefix */","lastModifiedDate":"2020-05-27"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":111,"author":{"gitId":"-"},"content":" // Prefixes not previously given to the tokenizer should not return any values","lastModifiedDate":"2016-10-16"},{"lineNumber":112,"author":{"gitId":"-"},"content":" argsString \u003d unknownPrefix + \"some value\";","lastModifiedDate":"2017-05-09"},{"lineNumber":113,"author":{"gitId":"-"},"content":" argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash, dashT, hatQ);","lastModifiedDate":"2017-03-20"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertArgumentAbsent(argMultimap, unknownPrefix);","lastModifiedDate":"2017-03-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertPreamblePresent(argMultimap, argsString); // Unknown prefix is taken as part of preamble","lastModifiedDate":"2017-03-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":118,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16"},{"lineNumber":119,"author":{"gitId":"-"},"content":" public void tokenize_multipleArgumentsWithRepeats() {","lastModifiedDate":"2016-10-16"},{"lineNumber":120,"author":{"gitId":"-"},"content":" // Two arguments repeated, some have empty values","lastModifiedDate":"2016-10-16"},{"lineNumber":121,"author":{"gitId":"-"},"content":" String argsString \u003d \"SomePreambleString -t dashT-Value ^Q ^Q -t another dashT value p/ pSlash value -t\";","lastModifiedDate":"2017-03-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash, dashT, hatQ);","lastModifiedDate":"2017-03-20"},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertPreamblePresent(argMultimap, \"SomePreambleString\");","lastModifiedDate":"2017-03-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, pSlash, \"pSlash value\");","lastModifiedDate":"2017-03-08"},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, dashT, \"dashT-Value\", \"another dashT value\", \"\");","lastModifiedDate":"2017-03-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, hatQ, \"\", \"\");","lastModifiedDate":"2017-03-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":129,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-19"},{"lineNumber":130,"author":{"gitId":"-"},"content":" public void tokenize_multipleArgumentsJoined() {","lastModifiedDate":"2017-05-19"},{"lineNumber":131,"author":{"gitId":"-"},"content":" String argsString \u003d \"SomePreambleStringp/ pSlash joined-tjoined -t not joined^Qjoined\";","lastModifiedDate":"2017-05-19"},{"lineNumber":132,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash, dashT, hatQ);","lastModifiedDate":"2017-05-19"},{"lineNumber":133,"author":{"gitId":"-"},"content":" assertPreamblePresent(argMultimap, \"SomePreambleStringp/ pSlash joined-tjoined\");","lastModifiedDate":"2017-05-19"},{"lineNumber":134,"author":{"gitId":"-"},"content":" assertArgumentAbsent(argMultimap, pSlash);","lastModifiedDate":"2017-05-19"},{"lineNumber":135,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, dashT, \"not joined^Qjoined\");","lastModifiedDate":"2017-05-19"},{"lineNumber":136,"author":{"gitId":"-"},"content":" assertArgumentAbsent(argMultimap, hatQ);","lastModifiedDate":"2017-05-19"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-19"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-19"},{"lineNumber":139,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16"},{"lineNumber":140,"author":{"gitId":"-"},"content":" public void equalsMethod() {","lastModifiedDate":"2016-10-16"},{"lineNumber":141,"author":{"gitId":"-"},"content":" Prefix aaa \u003d new Prefix(\"aaa\");","lastModifiedDate":"2016-10-16"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":143,"author":{"gitId":"-"},"content":" assertEquals(aaa, aaa);","lastModifiedDate":"2016-10-16"},{"lineNumber":144,"author":{"gitId":"-"},"content":" assertEquals(aaa, new Prefix(\"aaa\"));","lastModifiedDate":"2016-10-16"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertNotEquals(aaa, \"aaa\");","lastModifiedDate":"2016-10-16"},{"lineNumber":147,"author":{"gitId":"-"},"content":" assertNotEquals(aaa, new Prefix(\"aab\"));","lastModifiedDate":"2016-10-16"},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":150,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-10-16"}],"authorContributionMap":{"chaaaaun":1,"-":149}},{"path":"src/test/java/scrolls/elder/logic/parser/CommandParserTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.logic.parser;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06"},{"lineNumber":5,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.commands.Command;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06"},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-07-06"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * Contains helper methods for testing command parsers.","lastModifiedDate":"2017-07-06"},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-06"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class CommandParserTestUtil {","lastModifiedDate":"2017-07-06"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06"},{"lineNumber":13,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-06"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Asserts that the parsing of {@code userInput} by {@code parser} is successful and the command created","lastModifiedDate":"2017-07-06"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * equals to {@code expectedCommand}.","lastModifiedDate":"2017-07-06"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-06"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public static void assertParseSuccess(Parser\u003c? extends Command\u003e parser, String userInput,","lastModifiedDate":"2022-02-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Command expectedCommand) {","lastModifiedDate":"2022-02-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":20,"author":{"gitId":"-"},"content":" Command command \u003d parser.parse(userInput);","lastModifiedDate":"2017-07-06"},{"lineNumber":21,"author":{"gitId":"-"},"content":" assertEquals(expectedCommand, command);","lastModifiedDate":"2017-07-06"},{"lineNumber":22,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2017-08-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":" throw new IllegalArgumentException(\"Invalid userInput.\", pe);","lastModifiedDate":"2017-08-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Asserts that the parsing of {@code userInput} by {@code parser} is unsuccessful and the error message","lastModifiedDate":"2017-07-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * equals to {@code expectedMessage}.","lastModifiedDate":"2017-07-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static void assertParseFailure(Parser\u003c? extends Command\u003e parser, String userInput, String expectedMessage) {","lastModifiedDate":"2022-02-20"},{"lineNumber":32,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-07-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":" parser.parse(userInput);","lastModifiedDate":"2017-07-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":" throw new AssertionError(\"The expected ParseException was not thrown.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":35,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2017-07-06"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, pe.getMessage());","lastModifiedDate":"2017-07-06"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-06"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-06"},{"lineNumber":39,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-07-06"}],"authorContributionMap":{"chaaaaun":3,"-":36}},{"path":"src/test/java/scrolls/elder/logic/parser/DeleteCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.logic.parser;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":3,"author":{"gitId":"chaaaaun"},"content":"import static scrolls.elder.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"chaaaaun"},"content":"import static scrolls.elder.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.Messages;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.commands.DeleteCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Role;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.TypicalIndexes;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * As we are only doing white-box testing, our test cases do not cover path variations","lastModifiedDate":"2017-06-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * outside of the DeleteCommand code. For example, inputs \"1\" and \"1 abc\" take the","lastModifiedDate":"2017-06-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * same path through the DeleteCommand, and therefore we test only one of them.","lastModifiedDate":"2017-06-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * The path variation for those two cases occur inside the ParserUtil, and","lastModifiedDate":"2017-06-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * therefore should be covered by the ParserUtilTest.","lastModifiedDate":"2017-06-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class DeleteCommandParserTest {","lastModifiedDate":"2017-06-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":22,"author":{"gitId":"chaaaaun"},"content":" private static final String ROLE_STRING \u003d \"volunteer\";","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private DeleteCommandParser parser \u003d new DeleteCommandParser();","lastModifiedDate":"2017-06-09"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void parse_validArgs_returnsDeleteCommand() {","lastModifiedDate":"2017-08-15"},{"lineNumber":27,"author":{"gitId":"chaaaaun"},"content":" assertParseSuccess(parser, \"1 r/\" + ROLE_STRING,","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"chaaaaun"},"content":" new DeleteCommand(TypicalIndexes.INDEX_FIRST_PERSON, new Role(ROLE_STRING)));","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":33,"author":{"gitId":"chaaaaun"},"content":" assertParseFailure(parser, \"a\",","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"chaaaaun"},"content":" String.format(Messages.MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-09"}],"authorContributionMap":{"chaaaaun":12,"-":24}},{"path":"src/test/java/scrolls/elder/logic/parser/EditCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.logic.parser;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"chaaaaun"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.core.index.Index;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.Messages;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.commands.CommandTestUtil;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.commands.EditCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Address;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Email;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Name;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Phone;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.tag.Tag;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.TypicalIndexes;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"chaaaaun"},"content":"public class EditCommandParserTest {","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"chaaaaun"},"content":" private static final String TAG_EMPTY \u003d \" \" + CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"chaaaaun"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"chaaaaun"},"content":" String.format(Messages.MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"chaaaaun"},"content":" private EditCommandParser parser \u003d new EditCommandParser();","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"chaaaaun"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"chaaaaun"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"chaaaaun"},"content":" // no index specified","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"chaaaaun"},"content":" CommandParserTestUtil.assertParseFailure(parser, CommandTestUtil.VALID_NAME_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"chaaaaun"},"content":" // no field specified","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"chaaaaun"},"content":" CommandParserTestUtil.assertParseFailure(parser, \"1\", EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"chaaaaun"},"content":" // no index and no field specified","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"chaaaaun"},"content":" CommandParserTestUtil.assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"chaaaaun"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"chaaaaun"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"chaaaaun"},"content":" // negative index","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"chaaaaun"},"content":" CommandParserTestUtil.assertParseFailure(parser, \"-5\" + CommandTestUtil.NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"chaaaaun"},"content":" // zero index","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"chaaaaun"},"content":" CommandParserTestUtil.assertParseFailure(parser, \"0\" + CommandTestUtil.NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"chaaaaun"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"chaaaaun"},"content":" CommandParserTestUtil.assertParseFailure(parser, \"1 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"chaaaaun"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"chaaaaun"},"content":" CommandParserTestUtil.assertParseFailure(parser, \"1 i/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"chaaaaun"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"chaaaaun"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"chaaaaun"},"content":" CommandParserTestUtil.assertParseFailure(parser, \"1\" + CommandTestUtil.INVALID_NAME_DESC,","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"chaaaaun"},"content":" Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"chaaaaun"},"content":" CommandParserTestUtil.assertParseFailure(parser, \"1\" + CommandTestUtil.INVALID_PHONE_DESC,","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"chaaaaun"},"content":" Phone.MESSAGE_CONSTRAINTS); // invalid phone","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"chaaaaun"},"content":" CommandParserTestUtil.assertParseFailure(parser, \"1\" + CommandTestUtil.INVALID_EMAIL_DESC,","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"chaaaaun"},"content":" Email.MESSAGE_CONSTRAINTS); // invalid email","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"chaaaaun"},"content":" CommandParserTestUtil.assertParseFailure(parser, \"1\" + CommandTestUtil.INVALID_ADDRESS_DESC,","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"chaaaaun"},"content":" Address.MESSAGE_CONSTRAINTS); // invalid address","lastModifiedDate":"2024-03-12"},{"lineNumber":63,"author":{"gitId":"chaaaaun"},"content":" CommandParserTestUtil.assertParseFailure(parser, \"1\" + CommandTestUtil.INVALID_TAG_DESC,","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"chaaaaun"},"content":" Tag.MESSAGE_CONSTRAINTS); // invalid tag","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":66,"author":{"gitId":"chaaaaun"},"content":" // invalid phone followed by valid email","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"chaaaaun"},"content":" CommandParserTestUtil.assertParseFailure(parser,","lastModifiedDate":"2024-03-12"},{"lineNumber":68,"author":{"gitId":"chaaaaun"},"content":" \"1\" + CommandTestUtil.INVALID_PHONE_DESC + CommandTestUtil.EMAIL_DESC_AMY, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":69,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"chaaaaun"},"content":" // while parsing {@code PREFIX_TAG} alone will reset the tags of the {@code Person} being edited,","lastModifiedDate":"2024-03-12"},{"lineNumber":71,"author":{"gitId":"chaaaaun"},"content":" // parsing it together with a valid tag results in error","lastModifiedDate":"2024-03-12"},{"lineNumber":72,"author":{"gitId":"chaaaaun"},"content":" CommandParserTestUtil.assertParseFailure(parser,","lastModifiedDate":"2024-03-12"},{"lineNumber":73,"author":{"gitId":"chaaaaun"},"content":" \"1\" + CommandTestUtil.TAG_DESC_FRIEND + CommandTestUtil.TAG_DESC_HUSBAND + TAG_EMPTY,","lastModifiedDate":"2024-03-12"},{"lineNumber":74,"author":{"gitId":"chaaaaun"},"content":" Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":75,"author":{"gitId":"chaaaaun"},"content":" CommandParserTestUtil.assertParseFailure(parser,","lastModifiedDate":"2024-03-12"},{"lineNumber":76,"author":{"gitId":"chaaaaun"},"content":" \"1\" + CommandTestUtil.TAG_DESC_FRIEND + TAG_EMPTY + CommandTestUtil.TAG_DESC_HUSBAND,","lastModifiedDate":"2024-03-12"},{"lineNumber":77,"author":{"gitId":"chaaaaun"},"content":" Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":78,"author":{"gitId":"chaaaaun"},"content":" CommandParserTestUtil.assertParseFailure(parser,","lastModifiedDate":"2024-03-12"},{"lineNumber":79,"author":{"gitId":"chaaaaun"},"content":" \"1\" + TAG_EMPTY + CommandTestUtil.TAG_DESC_FRIEND + CommandTestUtil.TAG_DESC_HUSBAND,","lastModifiedDate":"2024-03-12"},{"lineNumber":80,"author":{"gitId":"chaaaaun"},"content":" Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":81,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":82,"author":{"gitId":"chaaaaun"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2024-03-12"},{"lineNumber":83,"author":{"gitId":"chaaaaun"},"content":" CommandParserTestUtil.assertParseFailure(parser,","lastModifiedDate":"2024-03-12"},{"lineNumber":84,"author":{"gitId":"chaaaaun"},"content":" \"1\" + CommandTestUtil.INVALID_NAME_DESC + CommandTestUtil.INVALID_EMAIL_DESC","lastModifiedDate":"2024-03-12"},{"lineNumber":85,"author":{"gitId":"chaaaaun"},"content":" + CommandTestUtil.VALID_ADDRESS_AMY + CommandTestUtil.VALID_PHONE_AMY,","lastModifiedDate":"2024-03-12"},{"lineNumber":86,"author":{"gitId":"chaaaaun"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":87,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":88,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":89,"author":{"gitId":"chaaaaun"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":90,"author":{"gitId":"chaaaaun"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2024-03-12"},{"lineNumber":91,"author":{"gitId":"chaaaaun"},"content":" Index targetIndex \u003d TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2024-03-12"},{"lineNumber":92,"author":{"gitId":"chaaaaun"},"content":" String userInput \u003d targetIndex.getOneBased() + CommandTestUtil.PHONE_DESC_BOB + CommandTestUtil.TAG_DESC_HUSBAND","lastModifiedDate":"2024-03-12"},{"lineNumber":93,"author":{"gitId":"chaaaaun"},"content":" + CommandTestUtil.EMAIL_DESC_AMY + CommandTestUtil.ADDRESS_DESC_AMY + CommandTestUtil.NAME_DESC_AMY","lastModifiedDate":"2024-03-12"},{"lineNumber":94,"author":{"gitId":"chaaaaun"},"content":" + CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2024-03-12"},{"lineNumber":95,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":96,"author":{"gitId":"chaaaaun"},"content":" EditCommand.EditPersonDescriptor descriptor \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":97,"author":{"gitId":"chaaaaun"},"content":" new EditPersonDescriptorBuilder().withName(CommandTestUtil.VALID_NAME_AMY)","lastModifiedDate":"2024-03-12"},{"lineNumber":98,"author":{"gitId":"chaaaaun"},"content":" .withPhone(CommandTestUtil.VALID_PHONE_BOB)","lastModifiedDate":"2024-03-12"},{"lineNumber":99,"author":{"gitId":"chaaaaun"},"content":" .withEmail(CommandTestUtil.VALID_EMAIL_AMY)","lastModifiedDate":"2024-03-12"},{"lineNumber":100,"author":{"gitId":"chaaaaun"},"content":" .withAddress(CommandTestUtil.VALID_ADDRESS_AMY)","lastModifiedDate":"2024-03-12"},{"lineNumber":101,"author":{"gitId":"chaaaaun"},"content":" .withTags(CommandTestUtil.VALID_TAG_HUSBAND, CommandTestUtil.VALID_TAG_FRIEND)","lastModifiedDate":"2024-03-12"},{"lineNumber":102,"author":{"gitId":"chaaaaun"},"content":" .build();","lastModifiedDate":"2024-03-12"},{"lineNumber":103,"author":{"gitId":"chaaaaun"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-12"},{"lineNumber":104,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":105,"author":{"gitId":"chaaaaun"},"content":" CommandParserTestUtil.assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-12"},{"lineNumber":106,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":107,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":108,"author":{"gitId":"chaaaaun"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":109,"author":{"gitId":"chaaaaun"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2024-03-12"},{"lineNumber":110,"author":{"gitId":"chaaaaun"},"content":" Index targetIndex \u003d TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-12"},{"lineNumber":111,"author":{"gitId":"chaaaaun"},"content":" String userInput \u003d targetIndex.getOneBased() + CommandTestUtil.PHONE_DESC_BOB + CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":112,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":113,"author":{"gitId":"chaaaaun"},"content":" EditCommand.EditPersonDescriptor descriptor \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":114,"author":{"gitId":"chaaaaun"},"content":" new EditPersonDescriptorBuilder().withPhone(CommandTestUtil.VALID_PHONE_BOB)","lastModifiedDate":"2024-03-12"},{"lineNumber":115,"author":{"gitId":"chaaaaun"},"content":" .withEmail(CommandTestUtil.VALID_EMAIL_AMY).build();","lastModifiedDate":"2024-03-12"},{"lineNumber":116,"author":{"gitId":"chaaaaun"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-12"},{"lineNumber":117,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":118,"author":{"gitId":"chaaaaun"},"content":" CommandParserTestUtil.assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-12"},{"lineNumber":119,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":120,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":121,"author":{"gitId":"chaaaaun"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":122,"author":{"gitId":"chaaaaun"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2024-03-12"},{"lineNumber":123,"author":{"gitId":"chaaaaun"},"content":" // name","lastModifiedDate":"2024-03-12"},{"lineNumber":124,"author":{"gitId":"chaaaaun"},"content":" Index targetIndex \u003d TypicalIndexes.INDEX_THIRD_PERSON;","lastModifiedDate":"2024-03-12"},{"lineNumber":125,"author":{"gitId":"chaaaaun"},"content":" String userInput \u003d targetIndex.getOneBased() + CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":126,"author":{"gitId":"chaaaaun"},"content":" EditCommand.EditPersonDescriptor descriptor \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":127,"author":{"gitId":"chaaaaun"},"content":" new EditPersonDescriptorBuilder().withName(CommandTestUtil.VALID_NAME_AMY).build();","lastModifiedDate":"2024-03-12"},{"lineNumber":128,"author":{"gitId":"chaaaaun"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-12"},{"lineNumber":129,"author":{"gitId":"chaaaaun"},"content":" CommandParserTestUtil.assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-12"},{"lineNumber":130,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":131,"author":{"gitId":"chaaaaun"},"content":" // phone","lastModifiedDate":"2024-03-12"},{"lineNumber":132,"author":{"gitId":"chaaaaun"},"content":" userInput \u003d targetIndex.getOneBased() + CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":133,"author":{"gitId":"chaaaaun"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withPhone(CommandTestUtil.VALID_PHONE_AMY).build();","lastModifiedDate":"2024-03-12"},{"lineNumber":134,"author":{"gitId":"chaaaaun"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-12"},{"lineNumber":135,"author":{"gitId":"chaaaaun"},"content":" CommandParserTestUtil.assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-12"},{"lineNumber":136,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":137,"author":{"gitId":"chaaaaun"},"content":" // email","lastModifiedDate":"2024-03-12"},{"lineNumber":138,"author":{"gitId":"chaaaaun"},"content":" userInput \u003d targetIndex.getOneBased() + CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":139,"author":{"gitId":"chaaaaun"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withEmail(CommandTestUtil.VALID_EMAIL_AMY).build();","lastModifiedDate":"2024-03-12"},{"lineNumber":140,"author":{"gitId":"chaaaaun"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-12"},{"lineNumber":141,"author":{"gitId":"chaaaaun"},"content":" CommandParserTestUtil.assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-12"},{"lineNumber":142,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":143,"author":{"gitId":"chaaaaun"},"content":" // address","lastModifiedDate":"2024-03-12"},{"lineNumber":144,"author":{"gitId":"chaaaaun"},"content":" userInput \u003d targetIndex.getOneBased() + CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":145,"author":{"gitId":"chaaaaun"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withAddress(CommandTestUtil.VALID_ADDRESS_AMY).build();","lastModifiedDate":"2024-03-12"},{"lineNumber":146,"author":{"gitId":"chaaaaun"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-12"},{"lineNumber":147,"author":{"gitId":"chaaaaun"},"content":" CommandParserTestUtil.assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-12"},{"lineNumber":148,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":149,"author":{"gitId":"chaaaaun"},"content":" // tags","lastModifiedDate":"2024-03-12"},{"lineNumber":150,"author":{"gitId":"chaaaaun"},"content":" userInput \u003d targetIndex.getOneBased() + CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2024-03-12"},{"lineNumber":151,"author":{"gitId":"chaaaaun"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withTags(CommandTestUtil.VALID_TAG_FRIEND).build();","lastModifiedDate":"2024-03-12"},{"lineNumber":152,"author":{"gitId":"chaaaaun"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-12"},{"lineNumber":153,"author":{"gitId":"chaaaaun"},"content":" CommandParserTestUtil.assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-12"},{"lineNumber":154,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":155,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":156,"author":{"gitId":"chaaaaun"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":157,"author":{"gitId":"chaaaaun"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2024-03-12"},{"lineNumber":158,"author":{"gitId":"chaaaaun"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2024-03-12"},{"lineNumber":159,"author":{"gitId":"chaaaaun"},"content":" // AddCommandParserTest#parse_repeatedNonTagValue_failure()","lastModifiedDate":"2024-03-12"},{"lineNumber":160,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":161,"author":{"gitId":"chaaaaun"},"content":" // valid followed by invalid","lastModifiedDate":"2024-03-12"},{"lineNumber":162,"author":{"gitId":"chaaaaun"},"content":" Index targetIndex \u003d TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-12"},{"lineNumber":163,"author":{"gitId":"chaaaaun"},"content":" String userInput \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":164,"author":{"gitId":"chaaaaun"},"content":" targetIndex.getOneBased() + CommandTestUtil.INVALID_PHONE_DESC + CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":165,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":166,"author":{"gitId":"chaaaaun"},"content":" CommandParserTestUtil.assertParseFailure(parser, userInput,","lastModifiedDate":"2024-03-12"},{"lineNumber":167,"author":{"gitId":"chaaaaun"},"content":" Messages.getErrorMessageForDuplicatePrefixes(CliSyntax.PREFIX_PHONE));","lastModifiedDate":"2024-03-12"},{"lineNumber":168,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":169,"author":{"gitId":"chaaaaun"},"content":" // invalid followed by valid","lastModifiedDate":"2024-03-12"},{"lineNumber":170,"author":{"gitId":"chaaaaun"},"content":" userInput \u003d targetIndex.getOneBased() + CommandTestUtil.PHONE_DESC_BOB + CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2024-03-12"},{"lineNumber":171,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":172,"author":{"gitId":"chaaaaun"},"content":" CommandParserTestUtil.assertParseFailure(parser, userInput,","lastModifiedDate":"2024-03-12"},{"lineNumber":173,"author":{"gitId":"chaaaaun"},"content":" Messages.getErrorMessageForDuplicatePrefixes(CliSyntax.PREFIX_PHONE));","lastModifiedDate":"2024-03-12"},{"lineNumber":174,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":175,"author":{"gitId":"chaaaaun"},"content":" // mulltiple valid fields repeated","lastModifiedDate":"2024-03-12"},{"lineNumber":176,"author":{"gitId":"chaaaaun"},"content":" userInput \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":177,"author":{"gitId":"chaaaaun"},"content":" targetIndex.getOneBased() + CommandTestUtil.PHONE_DESC_AMY + CommandTestUtil.ADDRESS_DESC_AMY","lastModifiedDate":"2024-03-12"},{"lineNumber":178,"author":{"gitId":"chaaaaun"},"content":" + CommandTestUtil.EMAIL_DESC_AMY","lastModifiedDate":"2024-03-12"},{"lineNumber":179,"author":{"gitId":"chaaaaun"},"content":" + CommandTestUtil.TAG_DESC_FRIEND + CommandTestUtil.PHONE_DESC_AMY","lastModifiedDate":"2024-03-12"},{"lineNumber":180,"author":{"gitId":"chaaaaun"},"content":" + CommandTestUtil.ADDRESS_DESC_AMY + CommandTestUtil.EMAIL_DESC_AMY","lastModifiedDate":"2024-03-12"},{"lineNumber":181,"author":{"gitId":"chaaaaun"},"content":" + CommandTestUtil.TAG_DESC_FRIEND","lastModifiedDate":"2024-03-12"},{"lineNumber":182,"author":{"gitId":"chaaaaun"},"content":" + CommandTestUtil.PHONE_DESC_BOB + CommandTestUtil.ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-12"},{"lineNumber":183,"author":{"gitId":"chaaaaun"},"content":" + CommandTestUtil.EMAIL_DESC_BOB + CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2024-03-12"},{"lineNumber":184,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":185,"author":{"gitId":"chaaaaun"},"content":" CommandParserTestUtil.assertParseFailure(parser, userInput,","lastModifiedDate":"2024-03-12"},{"lineNumber":186,"author":{"gitId":"chaaaaun"},"content":" Messages.getErrorMessageForDuplicatePrefixes(CliSyntax.PREFIX_PHONE, CliSyntax.PREFIX_EMAIL,","lastModifiedDate":"2024-03-12"},{"lineNumber":187,"author":{"gitId":"chaaaaun"},"content":" CliSyntax.PREFIX_ADDRESS));","lastModifiedDate":"2024-03-12"},{"lineNumber":188,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":189,"author":{"gitId":"chaaaaun"},"content":" // multiple invalid values","lastModifiedDate":"2024-03-12"},{"lineNumber":190,"author":{"gitId":"chaaaaun"},"content":" userInput \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":191,"author":{"gitId":"chaaaaun"},"content":" targetIndex.getOneBased() + CommandTestUtil.INVALID_PHONE_DESC + CommandTestUtil.INVALID_ADDRESS_DESC","lastModifiedDate":"2024-03-12"},{"lineNumber":192,"author":{"gitId":"chaaaaun"},"content":" + CommandTestUtil.INVALID_EMAIL_DESC","lastModifiedDate":"2024-03-12"},{"lineNumber":193,"author":{"gitId":"chaaaaun"},"content":" + CommandTestUtil.INVALID_PHONE_DESC + CommandTestUtil.INVALID_ADDRESS_DESC","lastModifiedDate":"2024-03-12"},{"lineNumber":194,"author":{"gitId":"chaaaaun"},"content":" + CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2024-03-12"},{"lineNumber":195,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":196,"author":{"gitId":"chaaaaun"},"content":" CommandParserTestUtil.assertParseFailure(parser, userInput,","lastModifiedDate":"2024-03-12"},{"lineNumber":197,"author":{"gitId":"chaaaaun"},"content":" Messages.getErrorMessageForDuplicatePrefixes(CliSyntax.PREFIX_PHONE, CliSyntax.PREFIX_EMAIL,","lastModifiedDate":"2024-03-12"},{"lineNumber":198,"author":{"gitId":"chaaaaun"},"content":" CliSyntax.PREFIX_ADDRESS));","lastModifiedDate":"2024-03-12"},{"lineNumber":199,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":200,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":201,"author":{"gitId":"chaaaaun"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":202,"author":{"gitId":"chaaaaun"},"content":" public void parse_resetTags_success() {","lastModifiedDate":"2024-03-12"},{"lineNumber":203,"author":{"gitId":"chaaaaun"},"content":" Index targetIndex \u003d TypicalIndexes.INDEX_THIRD_PERSON;","lastModifiedDate":"2024-03-12"},{"lineNumber":204,"author":{"gitId":"chaaaaun"},"content":" String userInput \u003d targetIndex.getOneBased() + TAG_EMPTY;","lastModifiedDate":"2024-03-12"},{"lineNumber":205,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":206,"author":{"gitId":"chaaaaun"},"content":" EditCommand.EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withTags().build();","lastModifiedDate":"2024-03-12"},{"lineNumber":207,"author":{"gitId":"chaaaaun"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-12"},{"lineNumber":208,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":209,"author":{"gitId":"chaaaaun"},"content":" CommandParserTestUtil.assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-12"},{"lineNumber":210,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":211,"author":{"gitId":"chaaaaun"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"chaaaaun":211}},{"path":"src/test/java/scrolls/elder/logic/parser/FindCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.logic.parser;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":3,"author":{"gitId":"chaaaaun"},"content":"import static scrolls.elder.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"chaaaaun"},"content":"import static scrolls.elder.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.Messages;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.commands.FindCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class FindCommandParserTest {","lastModifiedDate":"2017-06-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":" private FindCommandParser parser \u003d new FindCommandParser();","lastModifiedDate":"2017-06-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public void parse_emptyArg_throwsParseException() {","lastModifiedDate":"2017-06-27"},{"lineNumber":20,"author":{"gitId":"chaaaaun"},"content":" assertParseFailure(parser, \" \",","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"chaaaaun"},"content":" String.format(Messages.MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void parse_validArgs_returnsFindCommand() {","lastModifiedDate":"2017-08-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2017-06-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" FindCommand expectedFindCommand \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" new FindCommand(new NameContainsKeywordsPredicate(Arrays.asList(\"Alice\", \"Bob\")));","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, \"Alice Bob\", expectedFindCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // multiple whitespaces between keywords","lastModifiedDate":"2017-06-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, \" \\n Alice \\n \\t Bob \\t\", expectedFindCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-27"}],"authorContributionMap":{"chaaaaun":8,"-":27}},{"path":"src/test/java/scrolls/elder/logic/parser/PairCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"soons1"},"content":"package scrolls.elder.logic.parser;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"soons1"},"content":"import static scrolls.elder.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"soons1"},"content":"import static scrolls.elder.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"soons1"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"soons1"},"content":"import scrolls.elder.logic.Messages;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"soons1"},"content":"import scrolls.elder.logic.commands.PairCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"soons1"},"content":"import scrolls.elder.testutil.TypicalIndexes;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"soons1"},"content":"class PairCommandParserTest {","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"soons1"},"content":" private PairCommandParser parser \u003d new PairCommandParser();","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"soons1"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"soons1"},"content":" void parse_validArgs_returnsPairCommand() {","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"soons1"},"content":" assertParseSuccess(parser, \"1 5\",","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"soons1"},"content":" new PairCommand(TypicalIndexes.INDEX_FIRST_PERSON, TypicalIndexes.INDEX_FIFTH_PERSON));","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"soons1"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"soons1"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"soons1"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"soons1"},"content":" assertParseFailure(parser, \"pe\",","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"soons1"},"content":" String.format(Messages.MESSAGE_INVALID_COMMAND_FORMAT, PairCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"soons1"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"soons1"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"soons1":27}},{"path":"src/test/java/scrolls/elder/logic/parser/ParserUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.logic.parser;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-22"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-05-22"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-05-22"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-05-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":"import org.junit.jupiter.api.Assertions;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":14,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Address;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Email;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Name;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Phone;","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.tag.Tag;","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.Assert;","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.TypicalIndexes;","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class ParserUtilTest {","lastModifiedDate":"2017-05-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2017-05-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2017-05-22"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2017-05-22"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2017-05-22"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2017-05-22"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d \"Rachel Walker\";","lastModifiedDate":"2017-05-22"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d \"123456\";","lastModifiedDate":"2017-05-22"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d \"123 Main Street #0505\";","lastModifiedDate":"2017-05-22"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d \"rachel@example.com\";","lastModifiedDate":"2017-05-22"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_1 \u003d \"friend\";","lastModifiedDate":"2017-05-22"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_2 \u003d \"neighbour\";","lastModifiedDate":"2017-05-22"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final String WHITESPACE \u003d \" \\t\\r\\n\";","lastModifiedDate":"2017-05-29"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void parseIndex_invalidInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":41,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(ParseException.class, () -\u003e ParserUtil.parseIndex(\"10 a\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void parseIndex_outOfRangeInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":46,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(ParseException.class, ParserUtil.MESSAGE_INVALID_INDEX, ()","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":" -\u003e ParserUtil.parseIndex(Long.toString(Integer.MAX_VALUE + 1)));","lastModifiedDate":"2019-03-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void parseIndex_validInput_success() throws Exception {","lastModifiedDate":"2017-05-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // No whitespaces","lastModifiedDate":"2017-05-26"},{"lineNumber":53,"author":{"gitId":"chaaaaun"},"content":" Assertions.assertEquals(TypicalIndexes.INDEX_FIRST_PERSON, ParserUtil.parseIndex(\"1\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // Leading and trailing whitespaces","lastModifiedDate":"2017-05-26"},{"lineNumber":56,"author":{"gitId":"chaaaaun"},"content":" Assertions.assertEquals(TypicalIndexes.INDEX_FIRST_PERSON, ParserUtil.parseIndex(\" 1 \"));","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void parseName_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-29"},{"lineNumber":61,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseName((String) null));","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void parseName_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":66,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(ParseException.class, () -\u003e ParserUtil.parseName(INVALID_NAME));","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void parseName_validValueWithoutWhitespace_returnsName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":71,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-22"},{"lineNumber":72,"author":{"gitId":"chaaaaun"},"content":" Assertions.assertEquals(expectedName, ParserUtil.parseName(VALID_NAME));","lastModifiedDate":"2024-03-12"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-29"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void parseName_validValueWithWhitespace_returnsTrimmedName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":77,"author":{"gitId":"-"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_NAME + WHITESPACE;","lastModifiedDate":"2017-05-29"},{"lineNumber":78,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-29"},{"lineNumber":79,"author":{"gitId":"chaaaaun"},"content":" Assertions.assertEquals(expectedName, ParserUtil.parseName(nameWithWhitespace));","lastModifiedDate":"2024-03-12"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void parsePhone_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":84,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e ParserUtil.parsePhone((String) null));","lastModifiedDate":"2024-03-12"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void parsePhone_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":89,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(ParseException.class, () -\u003e ParserUtil.parsePhone(INVALID_PHONE));","lastModifiedDate":"2024-03-12"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithoutWhitespace_returnsPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":94,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-22"},{"lineNumber":95,"author":{"gitId":"chaaaaun"},"content":" Assertions.assertEquals(expectedPhone, ParserUtil.parsePhone(VALID_PHONE));","lastModifiedDate":"2024-03-12"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":99,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithWhitespace_returnsTrimmedPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":100,"author":{"gitId":"-"},"content":" String phoneWithWhitespace \u003d WHITESPACE + VALID_PHONE + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":101,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-30"},{"lineNumber":102,"author":{"gitId":"chaaaaun"},"content":" Assertions.assertEquals(expectedPhone, ParserUtil.parsePhone(phoneWithWhitespace));","lastModifiedDate":"2024-03-12"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":106,"author":{"gitId":"-"},"content":" public void parseAddress_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":107,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseAddress((String) null));","lastModifiedDate":"2024-03-12"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":111,"author":{"gitId":"-"},"content":" public void parseAddress_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":112,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(ParseException.class, () -\u003e ParserUtil.parseAddress(INVALID_ADDRESS));","lastModifiedDate":"2024-03-12"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":116,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithoutWhitespace_returnsAddress() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":117,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-22"},{"lineNumber":118,"author":{"gitId":"chaaaaun"},"content":" Assertions.assertEquals(expectedAddress, ParserUtil.parseAddress(VALID_ADDRESS));","lastModifiedDate":"2024-03-12"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":122,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithWhitespace_returnsTrimmedAddress() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":123,"author":{"gitId":"-"},"content":" String addressWithWhitespace \u003d WHITESPACE + VALID_ADDRESS + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":124,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-30"},{"lineNumber":125,"author":{"gitId":"chaaaaun"},"content":" Assertions.assertEquals(expectedAddress, ParserUtil.parseAddress(addressWithWhitespace));","lastModifiedDate":"2024-03-12"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":129,"author":{"gitId":"-"},"content":" public void parseEmail_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":130,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseEmail((String) null));","lastModifiedDate":"2024-03-12"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":133,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":134,"author":{"gitId":"-"},"content":" public void parseEmail_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":135,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(ParseException.class, () -\u003e ParserUtil.parseEmail(INVALID_EMAIL));","lastModifiedDate":"2024-03-12"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":138,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":139,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithoutWhitespace_returnsEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":140,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-22"},{"lineNumber":141,"author":{"gitId":"chaaaaun"},"content":" Assertions.assertEquals(expectedEmail, ParserUtil.parseEmail(VALID_EMAIL));","lastModifiedDate":"2024-03-12"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":144,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":145,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithWhitespace_returnsTrimmedEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":146,"author":{"gitId":"-"},"content":" String emailWithWhitespace \u003d WHITESPACE + VALID_EMAIL + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":147,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-30"},{"lineNumber":148,"author":{"gitId":"chaaaaun"},"content":" Assertions.assertEquals(expectedEmail, ParserUtil.parseEmail(emailWithWhitespace));","lastModifiedDate":"2024-03-12"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":151,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":152,"author":{"gitId":"-"},"content":" public void parseTag_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":153,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTag(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":156,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":157,"author":{"gitId":"-"},"content":" public void parseTag_invalidValue_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":158,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(ParseException.class, () -\u003e ParserUtil.parseTag(INVALID_TAG));","lastModifiedDate":"2024-03-12"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":161,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":162,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithoutWhitespace_returnsTag() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":163,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30"},{"lineNumber":164,"author":{"gitId":"chaaaaun"},"content":" Assertions.assertEquals(expectedTag, ParserUtil.parseTag(VALID_TAG_1));","lastModifiedDate":"2024-03-12"},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":167,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":168,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithWhitespace_returnsTrimmedTag() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":169,"author":{"gitId":"-"},"content":" String tagWithWhitespace \u003d WHITESPACE + VALID_TAG_1 + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":170,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30"},{"lineNumber":171,"author":{"gitId":"chaaaaun"},"content":" Assertions.assertEquals(expectedTag, ParserUtil.parseTag(tagWithWhitespace));","lastModifiedDate":"2024-03-12"},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":174,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":175,"author":{"gitId":"-"},"content":" public void parseTags_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":176,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTags(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":179,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":180,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithInvalidTags_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":181,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(ParseException.class, () -\u003e ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, INVALID_TAG)));","lastModifiedDate":"2024-03-12"},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":184,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":185,"author":{"gitId":"-"},"content":" public void parseTags_emptyCollection_returnsEmptySet() throws Exception {","lastModifiedDate":"2017-05-22"},{"lineNumber":186,"author":{"gitId":"-"},"content":" assertTrue(ParserUtil.parseTags(Collections.emptyList()).isEmpty());","lastModifiedDate":"2017-05-22"},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":189,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":190,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithValidTags_returnsTagSet() throws Exception {","lastModifiedDate":"2017-05-22"},{"lineNumber":191,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e actualTagSet \u003d ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, VALID_TAG_2));","lastModifiedDate":"2017-05-22"},{"lineNumber":192,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e expectedTagSet \u003d new HashSet\u003cTag\u003e(Arrays.asList(new Tag(VALID_TAG_1), new Tag(VALID_TAG_2)));","lastModifiedDate":"2017-05-22"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":194,"author":{"gitId":"-"},"content":" assertEquals(expectedTagSet, actualTagSet);","lastModifiedDate":"2017-05-22"},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":196,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-22"}],"authorContributionMap":{"chaaaaun":36,"-":160}},{"path":"src/test/java/scrolls/elder/logic/parser/UnpairCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"soons1"},"content":"package scrolls.elder.logic.parser;","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":3,"author":{"gitId":"soons1"},"content":"import static scrolls.elder.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-22"},{"lineNumber":4,"author":{"gitId":"soons1"},"content":"import static scrolls.elder.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-22"},{"lineNumber":5,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":6,"author":{"gitId":"soons1"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-22"},{"lineNumber":7,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":8,"author":{"gitId":"soons1"},"content":"import scrolls.elder.logic.Messages;","lastModifiedDate":"2024-03-22"},{"lineNumber":9,"author":{"gitId":"soons1"},"content":"import scrolls.elder.logic.commands.UnpairCommand;","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"soons1"},"content":"import scrolls.elder.testutil.TypicalIndexes;","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"soons1"},"content":"class UnpairCommandParserTest {","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"soons1"},"content":" private UnpairCommandParser parser \u003d new UnpairCommandParser();","lastModifiedDate":"2024-03-22"},{"lineNumber":15,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"soons1"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":17,"author":{"gitId":"soons1"},"content":" void parse_validArgs_returnsUnpairCommand() {","lastModifiedDate":"2024-03-22"},{"lineNumber":18,"author":{"gitId":"soons1"},"content":" assertParseSuccess(parser, \"1 5\",","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"author":{"gitId":"soons1"},"content":" new UnpairCommand(TypicalIndexes.INDEX_FIRST_PERSON, TypicalIndexes.INDEX_FIFTH_PERSON));","lastModifiedDate":"2024-03-22"},{"lineNumber":20,"author":{"gitId":"soons1"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":21,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":22,"author":{"gitId":"soons1"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"soons1"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2024-03-22"},{"lineNumber":24,"author":{"gitId":"soons1"},"content":" assertParseFailure(parser, \"pe\",","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"soons1"},"content":" String.format(Messages.MESSAGE_INVALID_COMMAND_FORMAT, UnpairCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-22"},{"lineNumber":26,"author":{"gitId":"soons1"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":27,"author":{"gitId":"soons1"},"content":"}","lastModifiedDate":"2024-03-22"}],"authorContributionMap":{"soons1":27}},{"path":"src/test/java/scrolls/elder/model/AddressBookTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.model;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"chaaaaun"},"content":"import static scrolls.elder.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"chaaaaun"},"content":"import static scrolls.elder.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2016-12-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2016-12-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2016-12-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2016-12-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-12-24"},{"lineNumber":18,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Person;","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.Assert;","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.PersonBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.TypicalPersons;","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class AddressBookTest {","lastModifiedDate":"2016-12-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":26,"author":{"gitId":"chaaaaun"},"content":" private final AddressBook addressBook \u003d new AddressBook(0);","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2016-12-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), addressBook.getPersonList());","lastModifiedDate":"2016-12-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public void resetData_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":35,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e addressBook.resetData(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void resetData_withValidReadOnlyAddressBook_replacesData() {","lastModifiedDate":"2016-12-24"},{"lineNumber":40,"author":{"gitId":"chaaaaun"},"content":" AddressBook newData \u003d TypicalPersons.getTypicalAddressBook();","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":" addressBook.resetData(newData);","lastModifiedDate":"2016-12-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertEquals(newData, addressBook);","lastModifiedDate":"2016-12-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void resetData_withDuplicatePersons_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-07"},{"lineNumber":47,"author":{"gitId":"-"},"content":" // Two persons with the same identity fields","lastModifiedDate":"2018-04-19"},{"lineNumber":48,"author":{"gitId":"chaaaaun"},"content":" Person editedAlice \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"chaaaaun"},"content":" new PersonBuilder(TypicalPersons.ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-04-19"},{"lineNumber":51,"author":{"gitId":"chaaaaun"},"content":" List\u003cPerson\u003e newPersons \u003d Arrays.asList(TypicalPersons.ALICE, editedAlice);","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":" AddressBookStub newData \u003d new AddressBookStub(newPersons);","lastModifiedDate":"2018-03-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":54,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(DuplicatePersonException.class, () -\u003e addressBook.resetData(newData));","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void hasPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-06"},{"lineNumber":59,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e addressBook.hasPerson(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void hasPerson_personNotInAddressBook_returnsFalse() {","lastModifiedDate":"2018-08-06"},{"lineNumber":64,"author":{"gitId":"chaaaaun"},"content":" assertFalse(addressBook.hasPerson(TypicalPersons.ALICE));","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void hasPerson_personInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07"},{"lineNumber":69,"author":{"gitId":"chaaaaun"},"content":" addressBook.addPerson(TypicalPersons.ALICE);","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"chaaaaun"},"content":" assertTrue(addressBook.hasPerson(TypicalPersons.ALICE));","lastModifiedDate":"2024-03-12"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void hasPerson_personWithSameIdentityFieldsInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07"},{"lineNumber":75,"author":{"gitId":"chaaaaun"},"content":" addressBook.addPerson(TypicalPersons.ALICE);","lastModifiedDate":"2024-03-12"},{"lineNumber":76,"author":{"gitId":"chaaaaun"},"content":" Person editedAlice \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":77,"author":{"gitId":"chaaaaun"},"content":" new PersonBuilder(TypicalPersons.ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-03-12"},{"lineNumber":78,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-06"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertTrue(addressBook.hasPerson(editedAlice));","lastModifiedDate":"2018-08-06"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void getPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":84,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(UnsupportedOperationException.class, () -\u003e addressBook.getPersonList().remove(0));","lastModifiedDate":"2024-03-12"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":" String expected \u003d AddressBook.class.getCanonicalName() + \"{persons\u003d\" + addressBook.getPersonList() + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertEquals(expected, addressBook.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-24"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * A stub ReadOnlyAddressBook whose persons list can violate interface constraints.","lastModifiedDate":"2018-03-29"},{"lineNumber":95,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-24"},{"lineNumber":96,"author":{"gitId":"-"},"content":" private static class AddressBookStub implements ReadOnlyAddressBook {","lastModifiedDate":"2016-12-24"},{"lineNumber":97,"author":{"gitId":"chaaaaun"},"content":" private int globalId \u003d 0;","lastModifiedDate":"2024-03-17"},{"lineNumber":98,"author":{"gitId":"-"},"content":" private final ObservableList\u003cPerson\u003e persons \u003d FXCollections.observableArrayList();","lastModifiedDate":"2018-01-10"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":100,"author":{"gitId":"-"},"content":" AddressBookStub(Collection\u003cPerson\u003e persons) {","lastModifiedDate":"2018-03-29"},{"lineNumber":101,"author":{"gitId":"-"},"content":" this.persons.setAll(persons);","lastModifiedDate":"2016-12-24"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":104,"author":{"gitId":"chaaaaun"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":105,"author":{"gitId":"chaaaaun"},"content":" public int getGlobalId() {","lastModifiedDate":"2024-03-17"},{"lineNumber":106,"author":{"gitId":"chaaaaun"},"content":" return globalId;","lastModifiedDate":"2024-03-17"},{"lineNumber":107,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":108,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-24"},{"lineNumber":110,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":111,"author":{"gitId":"-"},"content":" return persons;","lastModifiedDate":"2016-12-24"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":115,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-24"}],"authorContributionMap":{"chaaaaun":29,"-":86}},{"path":"src/test/java/scrolls/elder/model/ModelManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.model;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-31"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":"import org.junit.jupiter.api.Assertions;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":14,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.core.GuiSettings;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.AddressBookBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.Assert;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.TypicalPersons;","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class ModelManagerTest {","lastModifiedDate":"2017-05-31"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private ModelManager modelManager \u003d new ModelManager();","lastModifiedDate":"2018-08-06"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2018-11-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" assertEquals(new UserPrefs(), modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27"},{"lineNumber":27,"author":{"gitId":"chaaaaun"},"content":" Assertions.assertEquals(new GuiSettings(), modelManager.getGuiSettings());","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"chaaaaun"},"content":" assertEquals(new AddressBook(0), new AddressBook(modelManager.getAddressBook()));","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void setUserPrefs_nullUserPrefs_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":33,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e modelManager.setUserPrefs(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void setUserPrefs_validUserPrefs_copiesUserPrefs() {","lastModifiedDate":"2018-12-06"},{"lineNumber":38,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"address/book/file/path\"));","lastModifiedDate":"2018-11-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(new GuiSettings(1, 2, 3, 4));","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" modelManager.setUserPrefs(userPrefs);","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertEquals(userPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // Modifying userPrefs should not modify modelManager\u0027s userPrefs","lastModifiedDate":"2018-12-06"},{"lineNumber":45,"author":{"gitId":"-"},"content":" UserPrefs oldUserPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":46,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"new/address/book/file/path\"));","lastModifiedDate":"2018-12-06"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertEquals(oldUserPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-12-06"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void setGuiSettings_nullGuiSettings_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e modelManager.setGuiSettings(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void setGuiSettings_validGuiSettings_setsGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(1, 2, 3, 4);","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" modelManager.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertEquals(guiSettings, modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":64,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e modelManager.setAddressBookFilePath(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_validPath_setsAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" Path path \u003d Paths.get(\"address/book/file/path\");","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" modelManager.setAddressBookFilePath(path);","lastModifiedDate":"2018-11-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertEquals(path, modelManager.getAddressBookFilePath());","lastModifiedDate":"2018-11-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void hasPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-06"},{"lineNumber":76,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e modelManager.hasPerson(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public void hasPerson_personNotInAddressBook_returnsFalse() {","lastModifiedDate":"2018-08-06"},{"lineNumber":81,"author":{"gitId":"chaaaaun"},"content":" assertFalse(modelManager.hasPerson(TypicalPersons.ALICE));","lastModifiedDate":"2024-03-12"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void hasPerson_personInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07"},{"lineNumber":86,"author":{"gitId":"chaaaaun"},"content":" modelManager.addPerson(TypicalPersons.ALICE);","lastModifiedDate":"2024-03-12"},{"lineNumber":87,"author":{"gitId":"chaaaaun"},"content":" assertTrue(modelManager.hasPerson(TypicalPersons.ALICE));","lastModifiedDate":"2024-03-12"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":92,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(UnsupportedOperationException.class, () -\u003e modelManager.getFilteredPersonList().remove(0));","lastModifiedDate":"2024-03-12"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-31"},{"lineNumber":96,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":97,"author":{"gitId":"chaaaaun"},"content":" AddressBook addressBook \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":98,"author":{"gitId":"chaaaaun"},"content":" new AddressBookBuilder().withPerson(TypicalPersons.ALICE).withPerson(TypicalPersons.BENSON).build();","lastModifiedDate":"2024-03-12"},{"lineNumber":99,"author":{"gitId":"chaaaaun"},"content":" AddressBook differentAddressBook \u003d new AddressBook(0);","lastModifiedDate":"2024-03-17"},{"lineNumber":100,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":102,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":103,"author":{"gitId":"-"},"content":" modelManager \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2018-08-06"},{"lineNumber":104,"author":{"gitId":"-"},"content":" ModelManager modelManagerCopy \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2017-05-31"},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManagerCopy));","lastModifiedDate":"2017-05-31"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":107,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManager));","lastModifiedDate":"2017-05-31"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":110,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(null));","lastModifiedDate":"2017-05-31"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":113,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(5));","lastModifiedDate":"2017-05-31"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":116,"author":{"gitId":"-"},"content":" // different addressBook -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(differentAddressBook, userPrefs)));","lastModifiedDate":"2017-05-31"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":119,"author":{"gitId":"-"},"content":" // different filteredList -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":120,"author":{"gitId":"chaaaaun"},"content":" String[] keywords \u003d TypicalPersons.ALICE.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2024-03-12"},{"lineNumber":121,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(keywords)));","lastModifiedDate":"2017-06-12"},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, userPrefs)));","lastModifiedDate":"2017-05-31"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":124,"author":{"gitId":"-"},"content":" // resets modelManager to initial state for upcoming tests","lastModifiedDate":"2017-08-05"},{"lineNumber":125,"author":{"gitId":"chaaaaun"},"content":" modelManager.updateFilteredPersonList(Model.PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-12"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":127,"author":{"gitId":"-"},"content":" // different userPrefs -\u003e returns false","lastModifiedDate":"2018-11-27"},{"lineNumber":128,"author":{"gitId":"-"},"content":" UserPrefs differentUserPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":129,"author":{"gitId":"-"},"content":" differentUserPrefs.setAddressBookFilePath(Paths.get(\"differentFilePath\"));","lastModifiedDate":"2018-08-09"},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, differentUserPrefs)));","lastModifiedDate":"2018-11-27"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":132,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-31"}],"authorContributionMap":{"chaaaaun":22,"-":110}},{"path":"src/test/java/scrolls/elder/model/UserPrefsTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.model;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":5,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.Assert;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"public class UserPrefsTest {","lastModifiedDate":"2018-11-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public void setGuiSettings_nullGuiSettings_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":" UserPrefs userPref \u003d new UserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":12,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e userPref.setGuiSettings(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":18,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e userPrefs.setAddressBookFilePath(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-11-27"}],"authorContributionMap":{"chaaaaun":5,"-":16}},{"path":"src/test/java/scrolls/elder/model/person/AddressTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.model.person;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.Assert;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class AddressTest {","lastModifiedDate":"2017-01-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":12,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04"},{"lineNumber":14,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e new Address(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public void constructor_invalidAddress_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":" String invalidAddress \u003d \"\";","lastModifiedDate":"2017-05-30"},{"lineNumber":20,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(IllegalArgumentException.class, () -\u003e new Address(invalidAddress));","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void isValidAddress() {","lastModifiedDate":"2017-01-16"},{"lineNumber":25,"author":{"gitId":"-"},"content":" // null address","lastModifiedDate":"2017-12-04"},{"lineNumber":26,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e Address.isValidAddress(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":28,"author":{"gitId":"-"},"content":" // invalid addresses","lastModifiedDate":"2017-01-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(Address.isValidAddress(\"\")); // empty string","lastModifiedDate":"2017-01-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertFalse(Address.isValidAddress(\" \")); // spaces only","lastModifiedDate":"2017-01-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":" // valid addresses","lastModifiedDate":"2017-01-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertTrue(Address.isValidAddress(\"Blk 456, Den Road, #01-355\"));","lastModifiedDate":"2017-01-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertTrue(Address.isValidAddress(\"-\")); // one character","lastModifiedDate":"2017-01-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertTrue(Address.isValidAddress(\"Leng Inc; 1234 Market St; San Francisco CA 2349879; USA\")); // long address","lastModifiedDate":"2017-01-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" Address address \u003d new Address(\"Valid Address\");","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertTrue(address.equals(new Address(\"Valid Address\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(address.equals(address));","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(address.equals(null));","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(address.equals(5.0f));","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertFalse(address.equals(new Address(\"Other Valid Address\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16"}],"authorContributionMap":{"chaaaaun":6,"-":51}},{"path":"src/test/java/scrolls/elder/model/person/EmailTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.model.person;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.Assert;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class EmailTest {","lastModifiedDate":"2017-01-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":12,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04"},{"lineNumber":14,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e new Email(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public void constructor_invalidEmail_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":" String invalidEmail \u003d \"\";","lastModifiedDate":"2017-05-30"},{"lineNumber":20,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(IllegalArgumentException.class, () -\u003e new Email(invalidEmail));","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void isValidEmail() {","lastModifiedDate":"2017-01-16"},{"lineNumber":25,"author":{"gitId":"-"},"content":" // null email","lastModifiedDate":"2017-12-04"},{"lineNumber":26,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e Email.isValidEmail(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":28,"author":{"gitId":"-"},"content":" // blank email","lastModifiedDate":"2017-01-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"\")); // empty string","lastModifiedDate":"2017-01-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\" \")); // spaces only","lastModifiedDate":"2017-01-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":" // missing parts","lastModifiedDate":"2017-01-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"@example.com\")); // missing local part","lastModifiedDate":"2017-04-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjackexample.com\")); // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-04-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@\")); // missing domain name","lastModifiedDate":"2017-01-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" // invalid parts","lastModifiedDate":"2017-01-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@-\")); // invalid domain name","lastModifiedDate":"2017-01-16"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@exam_ple.com\")); // underscore in domain name","lastModifiedDate":"2018-02-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peter jack@example.com\")); // spaces in local part","lastModifiedDate":"2017-04-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@exam ple.com\")); // spaces in domain name","lastModifiedDate":"2017-04-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\" peterjack@example.com\")); // leading space","lastModifiedDate":"2018-02-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.com \")); // trailing space","lastModifiedDate":"2018-02-09"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@@example.com\")); // double \u0027@\u0027 symbol","lastModifiedDate":"2017-04-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peter@jack@example.com\")); // \u0027@\u0027 symbol in local part","lastModifiedDate":"2017-04-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"-peterjack@example.com\")); // local part starts with a hyphen","lastModifiedDate":"2021-07-20"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack-@example.com\")); // local part ends with a hyphen","lastModifiedDate":"2021-07-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peter..jack@example.com\")); // local part has two consecutive periods","lastModifiedDate":"2021-07-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example@com\")); // \u0027@\u0027 symbol in domain name","lastModifiedDate":"2017-04-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@.example.com\")); // domain name starts with a period","lastModifiedDate":"2018-02-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.com.\")); // domain name ends with a period","lastModifiedDate":"2018-02-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@-example.com\")); // domain name starts with a hyphen","lastModifiedDate":"2018-02-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.com-\")); // domain name ends with a hyphen","lastModifiedDate":"2018-02-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.c\")); // top level domain has less than two chars","lastModifiedDate":"2021-07-20"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // valid email","lastModifiedDate":"2017-01-16"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack_1190@example.com\")); // underscore in local part","lastModifiedDate":"2021-07-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack.1190@example.com\")); // period in local part","lastModifiedDate":"2021-07-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack+1190@example.com\")); // \u0027+\u0027 symbol in local part","lastModifiedDate":"2021-07-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack-1190@example.com\")); // hyphen in local part","lastModifiedDate":"2021-07-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"a@bc\")); // minimal","lastModifiedDate":"2018-02-09"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"test@localhost\")); // alphabets only","lastModifiedDate":"2017-01-16"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"123@145\")); // numeric local part and domain name","lastModifiedDate":"2017-01-16"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"a1+be.d@example1.com\")); // mixture of alphanumeric and special characters","lastModifiedDate":"2021-07-20"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"peter_jack@very-very-very-long-example.com\")); // long domain name","lastModifiedDate":"2018-02-09"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"if.you.dream.it_you.can.do.it@example.com\")); // long local part","lastModifiedDate":"2017-04-05"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"e1234567@u.nus.edu\")); // more than one period in domain","lastModifiedDate":"2021-07-20"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":" Email email \u003d new Email(\"valid@email\");","lastModifiedDate":"2019-02-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertTrue(email.equals(new Email(\"valid@email\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertTrue(email.equals(email));","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertFalse(email.equals(null));","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertFalse(email.equals(5.0f));","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertFalse(email.equals(new Email(\"other.valid@email\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16"}],"authorContributionMap":{"chaaaaun":6,"-":83}},{"path":"src/test/java/scrolls/elder/model/person/NameContainsKeywordsPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.model.person;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.PersonBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class NameContainsKeywordsPredicateTest {","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" List\u003cString\u003e firstPredicateKeywordList \u003d Collections.singletonList(\"first\");","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":" List\u003cString\u003e secondPredicateKeywordList \u003d Arrays.asList(\"first\", \"second\");","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicate \u003d new NameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate secondPredicate \u003d new NameContainsKeywordsPredicate(secondPredicateKeywordList);","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" assertTrue(firstPredicate.equals(firstPredicate));","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicateCopy \u003d new NameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertTrue(firstPredicate.equals(firstPredicateCopy));","lastModifiedDate":"2017-06-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(1));","lastModifiedDate":"2017-06-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(null));","lastModifiedDate":"2017-06-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(secondPredicate));","lastModifiedDate":"2017-06-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void test_nameContainsKeywords_returnsTrue() {","lastModifiedDate":"2017-08-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // One keyword","lastModifiedDate":"2017-06-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Collections.singletonList(\"Alice\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // Multiple keywords","lastModifiedDate":"2017-06-12"},{"lineNumber":49,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Alice\", \"Bob\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // Only one matching keyword","lastModifiedDate":"2017-06-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Bob\", \"Carol\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Carol\").build()));","lastModifiedDate":"2017-06-12"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // Mixed-case keywords","lastModifiedDate":"2017-06-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"aLIce\", \"bOB\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void test_nameDoesNotContainKeywords_returnsFalse() {","lastModifiedDate":"2017-08-15"},{"lineNumber":63,"author":{"gitId":"-"},"content":" // Zero keywords","lastModifiedDate":"2017-06-12"},{"lineNumber":64,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Collections.emptyList());","lastModifiedDate":"2017-06-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice\").build()));","lastModifiedDate":"2017-06-12"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":" // Non-matching keyword","lastModifiedDate":"2017-06-12"},{"lineNumber":68,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Carol\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // Keywords match phone, email and address, but does not match name","lastModifiedDate":"2017-06-12"},{"lineNumber":72,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"12345\", \"alice@email.com\", \"Main\", \"Street\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice\").withPhone(\"12345\")","lastModifiedDate":"2017-06-12"},{"lineNumber":74,"author":{"gitId":"-"},"content":" .withEmail(\"alice@email.com\").withAddress(\"Main Street\").build()));","lastModifiedDate":"2017-06-12"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d List.of(\"keyword1\", \"keyword2\");","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(keywords);","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" String expected \u003d NameContainsKeywordsPredicate.class.getCanonicalName() + \"{keywords\u003d\" + keywords + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"chaaaaun":2,"-":83}},{"path":"src/test/java/scrolls/elder/model/person/NameTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.model.person;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.Assert;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class NameTest {","lastModifiedDate":"2017-01-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":12,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04"},{"lineNumber":14,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e new Name(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public void constructor_invalidName_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":" String invalidName \u003d \"\";","lastModifiedDate":"2017-05-30"},{"lineNumber":20,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(IllegalArgumentException.class, () -\u003e new Name(invalidName));","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void isValidName() {","lastModifiedDate":"2017-01-16"},{"lineNumber":25,"author":{"gitId":"-"},"content":" // null name","lastModifiedDate":"2017-12-04"},{"lineNumber":26,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e Name.isValidName(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":28,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-01-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"\")); // empty string","lastModifiedDate":"2017-01-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\" \")); // spaces only","lastModifiedDate":"2017-01-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"^\")); // only non-alphanumeric characters","lastModifiedDate":"2017-01-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"peter*\")); // contains non-alphanumeric characters","lastModifiedDate":"2017-01-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":" // valid name","lastModifiedDate":"2017-01-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"peter jack\")); // alphabets only","lastModifiedDate":"2017-01-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"12345\")); // numbers only","lastModifiedDate":"2017-01-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"peter the 2nd\")); // alphanumeric characters","lastModifiedDate":"2017-01-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"Capital Tan\")); // with capital letters","lastModifiedDate":"2017-01-16"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"David Roger Jackson Ray Jr 2nd\")); // long names","lastModifiedDate":"2017-01-16"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" Name name \u003d new Name(\"Valid Name\");","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertTrue(name.equals(new Name(\"Valid Name\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertTrue(name.equals(name));","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(name.equals(null));","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertFalse(name.equals(5.0f));","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertFalse(name.equals(new Name(\"Other Valid Name\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16"}],"authorContributionMap":{"chaaaaun":6,"-":55}},{"path":"src/test/java/scrolls/elder/model/person/PersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.model.person;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"chaaaaun"},"content":"import static scrolls.elder.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"chaaaaun"},"content":"import static scrolls.elder.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"chaaaaun"},"content":"import static scrolls.elder.logic.commands.CommandTestUtil.VALID_ID_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"chaaaaun"},"content":"import static scrolls.elder.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"chaaaaun"},"content":"import static scrolls.elder.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":"import static scrolls.elder.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":"import org.junit.jupiter.api.Assertions;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.Assert;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.PersonBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.TypicalPersons;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"chaaaaun"},"content":"public class PersonTest {","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"chaaaaun"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"chaaaaun"},"content":" public void asObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"chaaaaun"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(UnsupportedOperationException.class, () -\u003e person.getTags().remove(0));","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"chaaaaun"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"chaaaaun"},"content":" public void isSamePerson() {","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"chaaaaun"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"chaaaaun"},"content":" Assertions.assertTrue(TypicalPersons.ALICE.isSamePerson(TypicalPersons.ALICE));","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"chaaaaun"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"chaaaaun"},"content":" Assertions.assertFalse(TypicalPersons.ALICE.isSamePerson(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"chaaaaun"},"content":" // same id, all other attributes different -\u003e returns true","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"chaaaaun"},"content":" Person editedAlice \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"chaaaaun"},"content":" new PersonBuilder(TypicalPersons.ALICE).withName(VALID_NAME_BOB)","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"chaaaaun"},"content":" .withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"chaaaaun"},"content":" .withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"chaaaaun"},"content":" .withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"chaaaaun"},"content":" .withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"chaaaaun"},"content":" .build();","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"chaaaaun"},"content":" Assertions.assertTrue(TypicalPersons.ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"chaaaaun"},"content":" // different id, all other attributes same -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"chaaaaun"},"content":" editedAlice \u003d new PersonBuilder(TypicalPersons.ALICE).withId(VALID_ID_BOB).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"chaaaaun"},"content":" Assertions.assertFalse(TypicalPersons.ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"chaaaaun"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"chaaaaun"},"content":" public void equals() {","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"chaaaaun"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"chaaaaun"},"content":" Person aliceCopy \u003d new PersonBuilder(TypicalPersons.ALICE).build();","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"chaaaaun"},"content":" Assertions.assertEquals(TypicalPersons.ALICE, aliceCopy);","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"chaaaaun"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"chaaaaun"},"content":" Assertions.assertEquals(TypicalPersons.ALICE, TypicalPersons.ALICE);","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"chaaaaun"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"chaaaaun"},"content":" Assertions.assertNotEquals(null, TypicalPersons.ALICE);","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"chaaaaun"},"content":" // different type -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"chaaaaun"},"content":" Assertions.assertNotEquals(5, TypicalPersons.ALICE);","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":63,"author":{"gitId":"chaaaaun"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"chaaaaun"},"content":" Assertions.assertNotEquals(TypicalPersons.ALICE, TypicalPersons.BOB);","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":66,"author":{"gitId":"chaaaaun"},"content":" // different name -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"chaaaaun"},"content":" Person editedAlice \u003d new PersonBuilder(TypicalPersons.ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-12"},{"lineNumber":68,"author":{"gitId":"chaaaaun"},"content":" Assertions.assertNotEquals(TypicalPersons.ALICE, editedAlice);","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"chaaaaun"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":71,"author":{"gitId":"chaaaaun"},"content":" editedAlice \u003d new PersonBuilder(TypicalPersons.ALICE).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2024-03-12"},{"lineNumber":72,"author":{"gitId":"chaaaaun"},"content":" Assertions.assertNotEquals(TypicalPersons.ALICE, editedAlice);","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":74,"author":{"gitId":"chaaaaun"},"content":" // different email -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":75,"author":{"gitId":"chaaaaun"},"content":" editedAlice \u003d new PersonBuilder(TypicalPersons.ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2024-03-12"},{"lineNumber":76,"author":{"gitId":"chaaaaun"},"content":" Assertions.assertNotEquals(TypicalPersons.ALICE, editedAlice);","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":78,"author":{"gitId":"chaaaaun"},"content":" // different address -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":79,"author":{"gitId":"chaaaaun"},"content":" editedAlice \u003d new PersonBuilder(TypicalPersons.ALICE).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2024-03-12"},{"lineNumber":80,"author":{"gitId":"chaaaaun"},"content":" Assertions.assertNotEquals(TypicalPersons.ALICE, editedAlice);","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":82,"author":{"gitId":"chaaaaun"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":83,"author":{"gitId":"chaaaaun"},"content":" editedAlice \u003d new PersonBuilder(TypicalPersons.ALICE).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-03-12"},{"lineNumber":84,"author":{"gitId":"chaaaaun"},"content":" Assertions.assertNotEquals(TypicalPersons.ALICE, editedAlice);","lastModifiedDate":"2024-03-17"},{"lineNumber":85,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":86,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":87,"author":{"gitId":"chaaaaun"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":88,"author":{"gitId":"chaaaaun"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-12"},{"lineNumber":89,"author":{"gitId":"CJerrong"},"content":" String expected \u003d Volunteer.class.getCanonicalName() + \"{name\u003d\" + TypicalPersons.ALICE.getName() + \", phone\u003d\"","lastModifiedDate":"2024-03-15"},{"lineNumber":90,"author":{"gitId":"chaaaaun"},"content":" + TypicalPersons.ALICE.getPhone()","lastModifiedDate":"2024-03-12"},{"lineNumber":91,"author":{"gitId":"chaaaaun"},"content":" + \", email\u003d\" + TypicalPersons.ALICE.getEmail() + \", address\u003d\" + TypicalPersons.ALICE.getAddress()","lastModifiedDate":"2024-03-12"},{"lineNumber":92,"author":{"gitId":"soons1"},"content":" + \", tags\u003d\" + TypicalPersons.ALICE.getTags() + \", role\u003d\" + TypicalPersons.ALICE.getRole()","lastModifiedDate":"2024-03-18"},{"lineNumber":93,"author":{"gitId":"CJerrong"},"content":" + \", pairedWithName\u003d\" + (TypicalPersons.ALICE.getPairedWithName().orElse(Name.getNone()))","lastModifiedDate":"2024-03-22"},{"lineNumber":94,"author":{"gitId":"CJerrong"},"content":" + \", pairedWithID\u003d\" + (TypicalPersons.ALICE.getPairedWithID().orElse(-1)) + \"}\";","lastModifiedDate":"2024-03-22"},{"lineNumber":95,"author":{"gitId":"chaaaaun"},"content":" Assertions.assertEquals(expected, TypicalPersons.ALICE.toString());","lastModifiedDate":"2024-03-12"},{"lineNumber":96,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":97,"author":{"gitId":"chaaaaun"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"CJerrong":3,"soons1":1,"chaaaaun":93}},{"path":"src/test/java/scrolls/elder/model/person/PhoneTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.model.person;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.Assert;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class PhoneTest {","lastModifiedDate":"2017-01-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":12,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04"},{"lineNumber":14,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e new Phone(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public void constructor_invalidPhone_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":" String invalidPhone \u003d \"\";","lastModifiedDate":"2017-05-30"},{"lineNumber":20,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(IllegalArgumentException.class, () -\u003e new Phone(invalidPhone));","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void isValidPhone() {","lastModifiedDate":"2017-01-16"},{"lineNumber":25,"author":{"gitId":"-"},"content":" // null phone number","lastModifiedDate":"2017-12-04"},{"lineNumber":26,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e Phone.isValidPhone(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":28,"author":{"gitId":"-"},"content":" // invalid phone numbers","lastModifiedDate":"2017-01-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"\")); // empty string","lastModifiedDate":"2017-01-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\" \")); // spaces only","lastModifiedDate":"2017-01-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"91\")); // less than 3 numbers","lastModifiedDate":"2017-05-04"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"phone\")); // non-numeric","lastModifiedDate":"2017-01-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"9011p041\")); // alphabets within digits","lastModifiedDate":"2017-01-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"9312 1534\")); // spaces within digits","lastModifiedDate":"2017-01-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" // valid phone numbers","lastModifiedDate":"2017-01-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertTrue(Phone.isValidPhone(\"911\")); // exactly 3 numbers","lastModifiedDate":"2017-05-04"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertTrue(Phone.isValidPhone(\"93121534\"));","lastModifiedDate":"2017-01-16"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertTrue(Phone.isValidPhone(\"124293842033123\")); // long phone numbers","lastModifiedDate":"2017-01-16"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" Phone phone \u003d new Phone(\"999\");","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertTrue(phone.equals(new Phone(\"999\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertTrue(phone.equals(phone));","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(phone.equals(null));","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertFalse(phone.equals(5.0f));","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertFalse(phone.equals(new Phone(\"995\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16"}],"authorContributionMap":{"chaaaaun":6,"-":55}},{"path":"src/test/java/scrolls/elder/model/person/UniquePersonListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.model.person;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"chaaaaun"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"chaaaaun"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"chaaaaun"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"chaaaaun"},"content":"import static scrolls.elder.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"chaaaaun"},"content":"import static scrolls.elder.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":"import java.util.List;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"chaaaaun"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.exceptions.PersonNotFoundException;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.Assert;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.PersonBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.TypicalPersons;","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"chaaaaun"},"content":"public class UniquePersonListTest {","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"chaaaaun"},"content":" private final UniquePersonList uniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"chaaaaun"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"chaaaaun"},"content":" public void contains_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e uniquePersonList.contains(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"chaaaaun"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"chaaaaun"},"content":" public void contains_personNotInList_returnsFalse() {","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"chaaaaun"},"content":" assertFalse(uniquePersonList.contains(TypicalPersons.ALICE));","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"chaaaaun"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"chaaaaun"},"content":" public void contains_personInList_returnsTrue() {","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"chaaaaun"},"content":" uniquePersonList.add(TypicalPersons.ALICE);","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"chaaaaun"},"content":" assertTrue(uniquePersonList.contains(TypicalPersons.ALICE));","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"chaaaaun"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"chaaaaun"},"content":" public void contains_personWithSameIdentityFieldsInList_returnsTrue() {","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"chaaaaun"},"content":" uniquePersonList.add(TypicalPersons.ALICE);","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"chaaaaun"},"content":" Person editedAlice \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"chaaaaun"},"content":" new PersonBuilder(TypicalPersons.ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"chaaaaun"},"content":" .build();","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"chaaaaun"},"content":" assertTrue(uniquePersonList.contains(editedAlice));","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"chaaaaun"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"chaaaaun"},"content":" public void add_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e uniquePersonList.add(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"chaaaaun"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"chaaaaun"},"content":" public void add_duplicatePerson_throwsDuplicatePersonException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"chaaaaun"},"content":" uniquePersonList.add(TypicalPersons.ALICE);","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.add(TypicalPersons.ALICE));","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"chaaaaun"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"chaaaaun"},"content":" public void setPerson_nullTargetPerson_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":63,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPerson(null, TypicalPersons.ALICE));","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":66,"author":{"gitId":"chaaaaun"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"chaaaaun"},"content":" public void setPerson_nullEditedPerson_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":68,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPerson(TypicalPersons.ALICE, null));","lastModifiedDate":"2024-03-12"},{"lineNumber":69,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":71,"author":{"gitId":"chaaaaun"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":72,"author":{"gitId":"chaaaaun"},"content":" public void setPerson_targetPersonNotInList_throwsPersonNotFoundException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":73,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(PersonNotFoundException.class, ()","lastModifiedDate":"2024-03-12"},{"lineNumber":74,"author":{"gitId":"chaaaaun"},"content":" -\u003e uniquePersonList.setPerson(TypicalPersons.ALICE, TypicalPersons.ALICE));","lastModifiedDate":"2024-03-12"},{"lineNumber":75,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":76,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":77,"author":{"gitId":"chaaaaun"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":78,"author":{"gitId":"chaaaaun"},"content":" public void setPerson_editedPersonIsSamePerson_success() {","lastModifiedDate":"2024-03-12"},{"lineNumber":79,"author":{"gitId":"chaaaaun"},"content":" uniquePersonList.add(TypicalPersons.ALICE);","lastModifiedDate":"2024-03-12"},{"lineNumber":80,"author":{"gitId":"chaaaaun"},"content":" uniquePersonList.setPerson(TypicalPersons.ALICE, TypicalPersons.ALICE);","lastModifiedDate":"2024-03-12"},{"lineNumber":81,"author":{"gitId":"chaaaaun"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2024-03-12"},{"lineNumber":82,"author":{"gitId":"chaaaaun"},"content":" expectedUniquePersonList.add(TypicalPersons.ALICE);","lastModifiedDate":"2024-03-12"},{"lineNumber":83,"author":{"gitId":"chaaaaun"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2024-03-12"},{"lineNumber":84,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":85,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":86,"author":{"gitId":"chaaaaun"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":87,"author":{"gitId":"chaaaaun"},"content":" public void setPerson_editedPersonHasSameIdentity_success() {","lastModifiedDate":"2024-03-12"},{"lineNumber":88,"author":{"gitId":"chaaaaun"},"content":" uniquePersonList.add(TypicalPersons.ALICE);","lastModifiedDate":"2024-03-12"},{"lineNumber":89,"author":{"gitId":"chaaaaun"},"content":" Person editedAlice \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":90,"author":{"gitId":"chaaaaun"},"content":" new PersonBuilder(TypicalPersons.ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-03-12"},{"lineNumber":91,"author":{"gitId":"chaaaaun"},"content":" .build();","lastModifiedDate":"2024-03-12"},{"lineNumber":92,"author":{"gitId":"chaaaaun"},"content":" uniquePersonList.setPerson(TypicalPersons.ALICE, editedAlice);","lastModifiedDate":"2024-03-12"},{"lineNumber":93,"author":{"gitId":"chaaaaun"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2024-03-12"},{"lineNumber":94,"author":{"gitId":"chaaaaun"},"content":" expectedUniquePersonList.add(editedAlice);","lastModifiedDate":"2024-03-12"},{"lineNumber":95,"author":{"gitId":"chaaaaun"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2024-03-12"},{"lineNumber":96,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":97,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":98,"author":{"gitId":"chaaaaun"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":99,"author":{"gitId":"chaaaaun"},"content":" public void setPerson_editedPersonHasDifferentIdentity_success() {","lastModifiedDate":"2024-03-12"},{"lineNumber":100,"author":{"gitId":"chaaaaun"},"content":" uniquePersonList.add(TypicalPersons.ALICE);","lastModifiedDate":"2024-03-12"},{"lineNumber":101,"author":{"gitId":"chaaaaun"},"content":" uniquePersonList.setPerson(TypicalPersons.ALICE, TypicalPersons.BOB);","lastModifiedDate":"2024-03-12"},{"lineNumber":102,"author":{"gitId":"chaaaaun"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2024-03-12"},{"lineNumber":103,"author":{"gitId":"chaaaaun"},"content":" expectedUniquePersonList.add(TypicalPersons.BOB);","lastModifiedDate":"2024-03-12"},{"lineNumber":104,"author":{"gitId":"chaaaaun"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2024-03-12"},{"lineNumber":105,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":106,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":107,"author":{"gitId":"chaaaaun"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":108,"author":{"gitId":"chaaaaun"},"content":" public void setPerson_editedPersonHasNonUniqueIdentity_throwsDuplicatePersonException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":109,"author":{"gitId":"chaaaaun"},"content":" uniquePersonList.add(TypicalPersons.ALICE);","lastModifiedDate":"2024-03-12"},{"lineNumber":110,"author":{"gitId":"chaaaaun"},"content":" uniquePersonList.add(TypicalPersons.BENSON);","lastModifiedDate":"2024-03-17"},{"lineNumber":111,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(DuplicatePersonException.class, ()","lastModifiedDate":"2024-03-12"},{"lineNumber":112,"author":{"gitId":"chaaaaun"},"content":" -\u003e uniquePersonList.setPerson(TypicalPersons.ALICE, TypicalPersons.BENSON));","lastModifiedDate":"2024-03-17"},{"lineNumber":113,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":114,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":115,"author":{"gitId":"chaaaaun"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":116,"author":{"gitId":"chaaaaun"},"content":" public void remove_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":117,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e uniquePersonList.remove(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":118,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":119,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":120,"author":{"gitId":"chaaaaun"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":121,"author":{"gitId":"chaaaaun"},"content":" public void remove_personDoesNotExist_throwsPersonNotFoundException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":122,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(PersonNotFoundException.class, () -\u003e uniquePersonList.remove(TypicalPersons.ALICE));","lastModifiedDate":"2024-03-12"},{"lineNumber":123,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":124,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":125,"author":{"gitId":"chaaaaun"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":126,"author":{"gitId":"chaaaaun"},"content":" public void remove_existingPerson_removesPerson() {","lastModifiedDate":"2024-03-12"},{"lineNumber":127,"author":{"gitId":"chaaaaun"},"content":" uniquePersonList.add(TypicalPersons.ALICE);","lastModifiedDate":"2024-03-12"},{"lineNumber":128,"author":{"gitId":"chaaaaun"},"content":" uniquePersonList.remove(TypicalPersons.ALICE);","lastModifiedDate":"2024-03-12"},{"lineNumber":129,"author":{"gitId":"chaaaaun"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2024-03-12"},{"lineNumber":130,"author":{"gitId":"chaaaaun"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2024-03-12"},{"lineNumber":131,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":132,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":133,"author":{"gitId":"chaaaaun"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":134,"author":{"gitId":"chaaaaun"},"content":" public void setPersons_nullUniquePersonList_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":135,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPersons((UniquePersonList) null));","lastModifiedDate":"2024-03-12"},{"lineNumber":136,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":137,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":138,"author":{"gitId":"chaaaaun"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":139,"author":{"gitId":"chaaaaun"},"content":" public void setPersons_uniquePersonList_replacesOwnListWithProvidedUniquePersonList() {","lastModifiedDate":"2024-03-12"},{"lineNumber":140,"author":{"gitId":"chaaaaun"},"content":" uniquePersonList.add(TypicalPersons.ALICE);","lastModifiedDate":"2024-03-12"},{"lineNumber":141,"author":{"gitId":"chaaaaun"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2024-03-12"},{"lineNumber":142,"author":{"gitId":"chaaaaun"},"content":" expectedUniquePersonList.add(TypicalPersons.BOB);","lastModifiedDate":"2024-03-12"},{"lineNumber":143,"author":{"gitId":"chaaaaun"},"content":" uniquePersonList.setPersons(expectedUniquePersonList);","lastModifiedDate":"2024-03-12"},{"lineNumber":144,"author":{"gitId":"chaaaaun"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2024-03-12"},{"lineNumber":145,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":146,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":147,"author":{"gitId":"chaaaaun"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":148,"author":{"gitId":"chaaaaun"},"content":" public void setPersons_nullList_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":149,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPersons((List\u003cPerson\u003e) null));","lastModifiedDate":"2024-03-12"},{"lineNumber":150,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":151,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":152,"author":{"gitId":"chaaaaun"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":153,"author":{"gitId":"chaaaaun"},"content":" public void setPersons_list_replacesOwnListWithProvidedList() {","lastModifiedDate":"2024-03-12"},{"lineNumber":154,"author":{"gitId":"chaaaaun"},"content":" uniquePersonList.add(TypicalPersons.ALICE);","lastModifiedDate":"2024-03-12"},{"lineNumber":155,"author":{"gitId":"chaaaaun"},"content":" List\u003cPerson\u003e personList \u003d Collections.singletonList(TypicalPersons.BOB);","lastModifiedDate":"2024-03-12"},{"lineNumber":156,"author":{"gitId":"chaaaaun"},"content":" uniquePersonList.setPersons(personList);","lastModifiedDate":"2024-03-12"},{"lineNumber":157,"author":{"gitId":"chaaaaun"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2024-03-12"},{"lineNumber":158,"author":{"gitId":"chaaaaun"},"content":" expectedUniquePersonList.add(TypicalPersons.BOB);","lastModifiedDate":"2024-03-12"},{"lineNumber":159,"author":{"gitId":"chaaaaun"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2024-03-12"},{"lineNumber":160,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":161,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":162,"author":{"gitId":"chaaaaun"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":163,"author":{"gitId":"chaaaaun"},"content":" public void setPersons_listWithDuplicatePersons_throwsDuplicatePersonException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":164,"author":{"gitId":"chaaaaun"},"content":" List\u003cPerson\u003e listWithDuplicatePersons \u003d Arrays.asList(TypicalPersons.ALICE, TypicalPersons.ALICE);","lastModifiedDate":"2024-03-12"},{"lineNumber":165,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(DuplicatePersonException.class, ()","lastModifiedDate":"2024-03-12"},{"lineNumber":166,"author":{"gitId":"chaaaaun"},"content":" -\u003e uniquePersonList.setPersons(listWithDuplicatePersons));","lastModifiedDate":"2024-03-12"},{"lineNumber":167,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":168,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":169,"author":{"gitId":"chaaaaun"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":170,"author":{"gitId":"chaaaaun"},"content":" public void asUnmodifiableObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":171,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(UnsupportedOperationException.class, ()","lastModifiedDate":"2024-03-12"},{"lineNumber":172,"author":{"gitId":"chaaaaun"},"content":" -\u003e uniquePersonList.asUnmodifiableObservableList().remove(0));","lastModifiedDate":"2024-03-12"},{"lineNumber":173,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":174,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":175,"author":{"gitId":"chaaaaun"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":176,"author":{"gitId":"chaaaaun"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-12"},{"lineNumber":177,"author":{"gitId":"chaaaaun"},"content":" assertEquals(uniquePersonList.asUnmodifiableObservableList().toString(), uniquePersonList.toString());","lastModifiedDate":"2024-03-12"},{"lineNumber":178,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":179,"author":{"gitId":"chaaaaun"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"chaaaaun":179}},{"path":"src/test/java/scrolls/elder/model/tag/TagTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.model.tag;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-03-14"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":5,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.Assert;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"public class TagTest {","lastModifiedDate":"2017-12-04"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":9,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e new Tag(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":14,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public void constructor_invalidTagName_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":16,"author":{"gitId":"-"},"content":" String invalidTagName \u003d \"\";","lastModifiedDate":"2017-05-30"},{"lineNumber":17,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(IllegalArgumentException.class, () -\u003e new Tag(invalidTagName));","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public void isValidTagName() {","lastModifiedDate":"2017-12-04"},{"lineNumber":22,"author":{"gitId":"-"},"content":" // null tag name","lastModifiedDate":"2017-12-04"},{"lineNumber":23,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e Tag.isValidTagName(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":26,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-12-04"}],"authorContributionMap":{"chaaaaun":6,"-":20}},{"path":"src/test/java/scrolls/elder/storage/JsonAdaptedPersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.storage;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"chaaaaun"},"content":"import org.junit.jupiter.api.Assertions;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Address;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Email;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Name;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Phone;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"gerteck"},"content":"import scrolls.elder.model.person.Role;","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.Assert;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.TypicalPersons;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class JsonAdaptedPersonTest {","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"gerteck"},"content":" private static final String INVALID_ROLE \u003d \"friend\";","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"chaaaaun"},"content":" private static final String VALID_ID \u003d String.valueOf(TypicalPersons.BENSON.getId());","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"chaaaaun"},"content":" private static final String VALID_NAME \u003d TypicalPersons.BENSON.getName().toString();","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"chaaaaun"},"content":" private static final String VALID_PHONE \u003d TypicalPersons.BENSON.getPhone().toString();","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"chaaaaun"},"content":" private static final String VALID_EMAIL \u003d TypicalPersons.BENSON.getEmail().toString();","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"chaaaaun"},"content":" private static final String VALID_ADDRESS \u003d TypicalPersons.BENSON.getAddress().toString();","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"gerteck"},"content":" private static final String VALID_ROLE \u003d TypicalPersons.BENSON.getRole().toString();","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"CJerrong"},"content":" private static final String VALID_PAIRED_WITH \u003d TypicalPersons.HOON.getPairedWithName().get().toString();","lastModifiedDate":"2024-03-22"},{"lineNumber":34,"author":{"gitId":"CJerrong"},"content":" private static final String VALID_PAIRED_WITH_ID \u003d TypicalPersons.HOON.getPairedWithID().get().toString();","lastModifiedDate":"2024-03-22"},{"lineNumber":35,"author":{"gitId":"chaaaaun"},"content":" private static final List\u003cJsonAdaptedTag\u003e VALID_TAGS \u003d TypicalPersons.BENSON.getTags().stream()","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void toModelType_validPersonDetails_returnsPerson() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"chaaaaun"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(TypicalPersons.BENSON);","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"chaaaaun"},"content":" Assertions.assertEquals(TypicalPersons.BENSON, person.toModelType());","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"chaaaaun"},"content":" new JsonAdaptedPerson(VALID_ID, INVALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_ROLE,","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"CJerrong"},"content":" VALID_TAGS, VALID_PAIRED_WITH, VALID_PAIRED_WITH_ID);","lastModifiedDate":"2024-03-22"},{"lineNumber":50,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":51,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"chaaaaun"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_ID, null, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"CJerrong"},"content":" VALID_ADDRESS, VALID_ROLE, VALID_TAGS, VALID_PAIRED_WITH, VALID_PAIRED_WITH_ID);","lastModifiedDate":"2024-03-22"},{"lineNumber":59,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"chaaaaun"},"content":" String expectedMessage \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"chaaaaun"},"content":" String.format(JsonAdaptedPerson.MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-12"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void toModelType_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":68,"author":{"gitId":"chaaaaun"},"content":" new JsonAdaptedPerson(VALID_ID, VALID_NAME, INVALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"CJerrong"},"content":" VALID_ROLE, VALID_TAGS, VALID_PAIRED_WITH, VALID_PAIRED_WITH_ID);","lastModifiedDate":"2024-03-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Phone.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-12"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void toModelType_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"chaaaaun"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_ID, VALID_NAME, null, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"CJerrong"},"content":" VALID_ROLE, VALID_TAGS, VALID_PAIRED_WITH, VALID_PAIRED_WITH_ID);","lastModifiedDate":"2024-03-22"},{"lineNumber":78,"author":{"gitId":"chaaaaun"},"content":" String expectedMessage \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":79,"author":{"gitId":"chaaaaun"},"content":" String.format(JsonAdaptedPerson.MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","lastModifiedDate":"2024-03-12"},{"lineNumber":80,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-12"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"chaaaaun"},"content":" new JsonAdaptedPerson(VALID_ID, VALID_NAME, VALID_PHONE, INVALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-17"},{"lineNumber":87,"author":{"gitId":"CJerrong"},"content":" VALID_ROLE, VALID_TAGS, VALID_PAIRED_WITH, VALID_PAIRED_WITH_ID);","lastModifiedDate":"2024-03-22"},{"lineNumber":88,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-12"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":94,"author":{"gitId":"chaaaaun"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_ID, VALID_NAME, VALID_PHONE, null, VALID_ADDRESS,","lastModifiedDate":"2024-03-17"},{"lineNumber":95,"author":{"gitId":"CJerrong"},"content":" VALID_ROLE, VALID_TAGS, VALID_PAIRED_WITH, VALID_PAIRED_WITH_ID);","lastModifiedDate":"2024-03-22"},{"lineNumber":96,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":97,"author":{"gitId":"chaaaaun"},"content":" String expectedMessage \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":98,"author":{"gitId":"chaaaaun"},"content":" String.format(JsonAdaptedPerson.MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2024-03-12"},{"lineNumber":99,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-12"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":" public void toModelType_invalidAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":105,"author":{"gitId":"chaaaaun"},"content":" new JsonAdaptedPerson(VALID_ID, VALID_NAME, VALID_PHONE, VALID_EMAIL, INVALID_ADDRESS,","lastModifiedDate":"2024-03-17"},{"lineNumber":106,"author":{"gitId":"CJerrong"},"content":" VALID_ROLE, VALID_TAGS, VALID_PAIRED_WITH, VALID_PAIRED_WITH_ID);","lastModifiedDate":"2024-03-22"},{"lineNumber":107,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":108,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Address.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":109,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-12"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":" public void toModelType_nullAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":114,"author":{"gitId":"chaaaaun"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_ID, VALID_NAME, VALID_PHONE, VALID_EMAIL, null,","lastModifiedDate":"2024-03-17"},{"lineNumber":115,"author":{"gitId":"CJerrong"},"content":" VALID_ROLE, VALID_TAGS, VALID_PAIRED_WITH, VALID_PAIRED_WITH_ID);","lastModifiedDate":"2024-03-22"},{"lineNumber":116,"author":{"gitId":"chaaaaun"},"content":" String expectedMessage \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":117,"author":{"gitId":"chaaaaun"},"content":" String.format(JsonAdaptedPerson.MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName());","lastModifiedDate":"2024-03-12"},{"lineNumber":118,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-12"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":121,"author":{"gitId":"gerteck"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":122,"author":{"gitId":"gerteck"},"content":" public void toModelType_invalidRole_throwsIllegalValueException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":123,"author":{"gitId":"chaaaaun"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_ID, VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-17"},{"lineNumber":124,"author":{"gitId":"CJerrong"},"content":" INVALID_ROLE, VALID_TAGS, VALID_PAIRED_WITH, VALID_PAIRED_WITH_ID);","lastModifiedDate":"2024-03-22"},{"lineNumber":125,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":126,"author":{"gitId":"gerteck"},"content":" String expectedMessage \u003d Role.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-16"},{"lineNumber":127,"author":{"gitId":"gerteck"},"content":" Assert.assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-16"},{"lineNumber":128,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":129,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":130,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":131,"author":{"gitId":"gerteck"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":132,"author":{"gitId":"gerteck"},"content":" public void toModelType_nullRole_throwsIllegalValueException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":133,"author":{"gitId":"chaaaaun"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_ID, VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-17"},{"lineNumber":134,"author":{"gitId":"CJerrong"},"content":" null, VALID_TAGS, VALID_PAIRED_WITH, VALID_PAIRED_WITH_ID);","lastModifiedDate":"2024-03-22"},{"lineNumber":135,"author":{"gitId":"gerteck"},"content":" String expectedMessage \u003d","lastModifiedDate":"2024-03-16"},{"lineNumber":136,"author":{"gitId":"gerteck"},"content":" String.format(JsonAdaptedPerson.MISSING_FIELD_MESSAGE_FORMAT, Role.class.getSimpleName());","lastModifiedDate":"2024-03-16"},{"lineNumber":137,"author":{"gitId":"gerteck"},"content":" Assert.assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-16"},{"lineNumber":138,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":139,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":140,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":141,"author":{"gitId":"-"},"content":" public void toModelType_invalidTags_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":142,"author":{"gitId":"-"},"content":" List\u003cJsonAdaptedTag\u003e invalidTags \u003d new ArrayList\u003c\u003e(VALID_TAGS);","lastModifiedDate":"2018-08-13"},{"lineNumber":143,"author":{"gitId":"-"},"content":" invalidTags.add(new JsonAdaptedTag(INVALID_TAG));","lastModifiedDate":"2018-08-13"},{"lineNumber":144,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":145,"author":{"gitId":"chaaaaun"},"content":" new JsonAdaptedPerson(VALID_ID, VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-17"},{"lineNumber":146,"author":{"gitId":"CJerrong"},"content":" VALID_ROLE, invalidTags, VALID_PAIRED_WITH, VALID_PAIRED_WITH_ID);","lastModifiedDate":"2024-03-22"},{"lineNumber":147,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2024-03-12"},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":150,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"CJerrong":13,"gerteck":22,"chaaaaun":45,"-":70}},{"path":"src/test/java/scrolls/elder/storage/JsonAddressBookStorageTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.storage;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":13,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.AddressBook;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Person;","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.Assert;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.TypicalPersons;","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class JsonAddressBookStorageTest {","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonAddressBookStorageTest\");","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public Path testFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void readAddressBook_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":28,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e readAddressBook(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private java.util.Optional\u003cReadOnlyAddressBook\u003e readAddressBook(String filePath) throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" return new JsonAddressBookStorage(Paths.get(filePath)).readAddressBook(addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private Path addToTestDataPathIfNotNull(String prefsFileInTestDataFolder) {","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" return prefsFileInTestDataFolder !\u003d null","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" ? TEST_DATA_FOLDER.resolve(prefsFileInTestDataFolder)","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" : null;","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void read_missingFile_emptyResult() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertFalse(readAddressBook(\"NonExistentFile.json\").isPresent());","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public void read_notJsonFormat_exceptionThrown() {","lastModifiedDate":"2019-03-23"},{"lineNumber":48,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(DataLoadingException.class, () -\u003e readAddressBook(\"notJsonFormatAddressBook.json\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void readAddressBook_invalidPersonAddressBook_throwDataLoadingException() {","lastModifiedDate":"2023-06-14"},{"lineNumber":53,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(DataLoadingException.class, () -\u003e readAddressBook(\"invalidPersonAddressBook.json\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void readAddressBook_invalidAndValidPersonAddressBook_throwDataLoadingException() {","lastModifiedDate":"2023-06-14"},{"lineNumber":58,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(DataLoadingException.class, () -\u003e readAddressBook(\"invalidAndValidPersonAddressBook.json\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void readAndSaveAddressBook_allInOrder_success() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" Path filePath \u003d testFolder.resolve(\"TempAddressBook.json\");","lastModifiedDate":"2019-04-25"},{"lineNumber":64,"author":{"gitId":"chaaaaun"},"content":" AddressBook original \u003d TypicalPersons.getTypicalAddressBook();","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":" JsonAddressBookStorage jsonAddressBookStorage \u003d new JsonAddressBookStorage(filePath);","lastModifiedDate":"2018-08-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" // Save in new file and read back","lastModifiedDate":"2018-08-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" jsonAddressBookStorage.saveAddressBook(original, filePath);","lastModifiedDate":"2018-08-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook readBack \u003d jsonAddressBookStorage.readAddressBook(filePath).get();","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(readBack));","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" // Modify data, overwrite exiting file, and read back","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"chaaaaun"},"content":" Person hoon \u003d TypicalPersons.HOON;","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"chaaaaun"},"content":" original.addPerson(hoon);","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"chaaaaun"},"content":" original.removePerson(TypicalPersons.ALICE);","lastModifiedDate":"2024-03-12"},{"lineNumber":76,"author":{"gitId":"-"},"content":" jsonAddressBookStorage.saveAddressBook(original, filePath);","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" readBack \u003d jsonAddressBookStorage.readAddressBook(filePath).get();","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(readBack));","lastModifiedDate":"2018-08-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" // Save and read without specifying file path","lastModifiedDate":"2018-08-13"},{"lineNumber":81,"author":{"gitId":"chaaaaun"},"content":" Person ida \u003d TypicalPersons.IDA;","lastModifiedDate":"2024-03-17"},{"lineNumber":82,"author":{"gitId":"chaaaaun"},"content":" original.addPerson(ida);","lastModifiedDate":"2024-03-17"},{"lineNumber":83,"author":{"gitId":"-"},"content":" jsonAddressBookStorage.saveAddressBook(original); // file path not specified","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" readBack \u003d jsonAddressBookStorage.readAddressBook().get(); // file path not specified","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(readBack));","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void saveAddressBook_nullAddressBook_throwsNullPointerException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":90,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e saveAddressBook(null, \"SomeFile.json\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * Saves {@code addressBook} at the specified {@code filePath}.","lastModifiedDate":"2018-08-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" private void saveAddressBook(ReadOnlyAddressBook addressBook, String filePath) {","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-08-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(Paths.get(filePath))","lastModifiedDate":"2018-08-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":" .saveAddressBook(addressBook, addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2018-08-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":" throw new AssertionError(\"There should not be an error writing to the file.\", ioe);","lastModifiedDate":"2018-08-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":" public void saveAddressBook_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":107,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e saveAddressBook(new AddressBook(0), null));","lastModifiedDate":"2024-03-17"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"chaaaaun":19,"-":90}},{"path":"src/test/java/scrolls/elder/storage/JsonSerializableAddressBookTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.storage;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.util.JsonUtil;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.AddressBook;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.Assert;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.TypicalPersons;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class JsonSerializableAddressBookTest {","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonSerializableAddressBookTest\");","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private static final Path TYPICAL_PERSONS_FILE \u003d TEST_DATA_FOLDER.resolve(\"typicalPersonsAddressBook.json\");","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final Path INVALID_PERSON_FILE \u003d TEST_DATA_FOLDER.resolve(\"invalidPersonAddressBook.json\");","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final Path DUPLICATE_PERSON_FILE \u003d TEST_DATA_FOLDER.resolve(\"duplicatePersonAddressBook.json\");","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void toModelType_typicalPersonsFile_success() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(TYPICAL_PERSONS_FILE,","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook.class).get();","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" AddressBook addressBookFromFile \u003d dataFromFile.toModelType();","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" AddressBook typicalPersonsAddressBook \u003d TypicalPersons.getTypicalAddressBook();","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertEquals(addressBookFromFile, typicalPersonsAddressBook);","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public void toModelType_invalidPersonFile_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(INVALID_PERSON_FILE,","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook.class).get();","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(IllegalValueException.class, dataFromFile::toModelType);","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void toModelType_duplicatePersons_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(DUPLICATE_PERSON_FILE,","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook.class).get();","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(IllegalValueException.class, JsonSerializableAddressBook.MESSAGE_DUPLICATE_PERSON,","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":" dataFromFile::toModelType);","lastModifiedDate":"2019-03-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"chaaaaun":8,"-":39}},{"path":"src/test/java/scrolls/elder/storage/JsonUserPrefsStorageTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.storage;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":14,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.core.GuiSettings;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.UserPrefs;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.Assert;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class JsonUserPrefsStorageTest {","lastModifiedDate":"2016-10-01"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonUserPrefsStorageTest\");","lastModifiedDate":"2018-04-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public Path testFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void readUserPrefs_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":28,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e readUserPrefs(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Optional\u003cUserPrefs\u003e readUserPrefs(String userPrefsFileInTestDataFolder) throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":" Path prefsFilePath \u003d addToTestDataPathIfNotNull(userPrefsFileInTestDataFolder);","lastModifiedDate":"2018-04-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return new JsonUserPrefsStorage(prefsFilePath).readUserPrefs(prefsFilePath);","lastModifiedDate":"2016-10-01"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void readUserPrefs_missingFile_emptyResult() throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertFalse(readUserPrefs(\"NonExistentFile.json\").isPresent());","lastModifiedDate":"2016-09-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void readUserPrefs_notJsonFormat_exceptionThrown() {","lastModifiedDate":"2019-03-23"},{"lineNumber":43,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(DataLoadingException.class, () -\u003e readUserPrefs(\"NotJsonFormatUserPrefs.json\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" private Path addToTestDataPathIfNotNull(String userPrefsFileInTestDataFolder) {","lastModifiedDate":"2018-04-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" return userPrefsFileInTestDataFolder !\u003d null","lastModifiedDate":"2016-09-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" ? TEST_DATA_FOLDER.resolve(userPrefsFileInTestDataFolder)","lastModifiedDate":"2018-04-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":" : null;","lastModifiedDate":"2016-09-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void readUserPrefs_fileInOrder_successfullyRead() throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":54,"author":{"gitId":"-"},"content":" UserPrefs expected \u003d getTypicalUserPrefs();","lastModifiedDate":"2017-02-25"},{"lineNumber":55,"author":{"gitId":"-"},"content":" UserPrefs actual \u003d readUserPrefs(\"TypicalUserPref.json\").get();","lastModifiedDate":"2016-09-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertEquals(expected, actual);","lastModifiedDate":"2016-09-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void readUserPrefs_valuesMissingFromFile_defaultValuesUsed() throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":61,"author":{"gitId":"-"},"content":" UserPrefs actual \u003d readUserPrefs(\"EmptyUserPrefs.json\").get();","lastModifiedDate":"2016-09-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertEquals(new UserPrefs(), actual);","lastModifiedDate":"2016-09-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void readUserPrefs_extraValuesInFile_extraValuesIgnored() throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":" UserPrefs expected \u003d getTypicalUserPrefs();","lastModifiedDate":"2017-02-25"},{"lineNumber":68,"author":{"gitId":"-"},"content":" UserPrefs actual \u003d readUserPrefs(\"ExtraValuesUserPref.json\").get();","lastModifiedDate":"2016-09-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertEquals(expected, actual);","lastModifiedDate":"2016-09-24"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":" private UserPrefs getTypicalUserPrefs() {","lastModifiedDate":"2017-02-25"},{"lineNumber":74,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-02-25"},{"lineNumber":75,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(new GuiSettings(1000, 500, 300, 100));","lastModifiedDate":"2018-11-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"addressbook.json\"));","lastModifiedDate":"2018-11-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return userPrefs;","lastModifiedDate":"2017-02-25"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-25"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void savePrefs_nullPrefs_throwsNullPointerException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":82,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e saveUserPrefs(null, \"SomeFile.json\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void saveUserPrefs_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":87,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e saveUserPrefs(new UserPrefs(), null));","lastModifiedDate":"2024-03-12"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":90,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-15"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * Saves {@code userPrefs} at the specified {@code prefsFileInTestDataFolder} filepath.","lastModifiedDate":"2017-08-15"},{"lineNumber":92,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-15"},{"lineNumber":93,"author":{"gitId":"-"},"content":" private void saveUserPrefs(UserPrefs userPrefs, String prefsFileInTestDataFolder) {","lastModifiedDate":"2017-08-15"},{"lineNumber":94,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":95,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(addToTestDataPathIfNotNull(prefsFileInTestDataFolder))","lastModifiedDate":"2016-10-12"},{"lineNumber":96,"author":{"gitId":"-"},"content":" .saveUserPrefs(userPrefs);","lastModifiedDate":"2016-10-12"},{"lineNumber":97,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2017-08-15"},{"lineNumber":98,"author":{"gitId":"-"},"content":" throw new AssertionError(\"There should not be an error writing to the file\", ioe);","lastModifiedDate":"2017-08-15"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":103,"author":{"gitId":"-"},"content":" public void saveUserPrefs_allInOrder_success() throws DataLoadingException, IOException {","lastModifiedDate":"2023-06-14"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":105,"author":{"gitId":"-"},"content":" UserPrefs original \u003d new UserPrefs();","lastModifiedDate":"2016-09-24"},{"lineNumber":106,"author":{"gitId":"-"},"content":" original.setGuiSettings(new GuiSettings(1200, 200, 0, 2));","lastModifiedDate":"2018-11-27"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":108,"author":{"gitId":"-"},"content":" Path pefsFilePath \u003d testFolder.resolve(\"TempPrefs.json\");","lastModifiedDate":"2019-04-25"},{"lineNumber":109,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage jsonUserPrefsStorage \u003d new JsonUserPrefsStorage(pefsFilePath);","lastModifiedDate":"2016-10-01"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":111,"author":{"gitId":"-"},"content":" //Try writing when the file doesn\u0027t exist","lastModifiedDate":"2016-09-24"},{"lineNumber":112,"author":{"gitId":"-"},"content":" jsonUserPrefsStorage.saveUserPrefs(original);","lastModifiedDate":"2016-10-01"},{"lineNumber":113,"author":{"gitId":"-"},"content":" UserPrefs readBack \u003d jsonUserPrefsStorage.readUserPrefs().get();","lastModifiedDate":"2016-10-01"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertEquals(original, readBack);","lastModifiedDate":"2016-09-24"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":116,"author":{"gitId":"-"},"content":" //Try saving when the file exists","lastModifiedDate":"2016-09-24"},{"lineNumber":117,"author":{"gitId":"-"},"content":" original.setGuiSettings(new GuiSettings(5, 5, 5, 5));","lastModifiedDate":"2018-11-27"},{"lineNumber":118,"author":{"gitId":"-"},"content":" jsonUserPrefsStorage.saveUserPrefs(original);","lastModifiedDate":"2016-10-01"},{"lineNumber":119,"author":{"gitId":"-"},"content":" readBack \u003d jsonUserPrefsStorage.readUserPrefs().get();","lastModifiedDate":"2016-10-01"},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertEquals(original, readBack);","lastModifiedDate":"2016-09-24"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":123,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-24"}],"authorContributionMap":{"chaaaaun":9,"-":114}},{"path":"src/test/java/scrolls/elder/storage/StorageManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.storage;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertNotNull;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":12,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.core.GuiSettings;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.AddressBook;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.UserPrefs;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.TypicalPersons;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class StorageManagerTest {","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public Path testFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private StorageManager storageManager;","lastModifiedDate":"2017-04-01"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2016-10-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(getTempFilePath(\"ab\"));","lastModifiedDate":"2018-11-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(getTempFilePath(\"prefs\"));","lastModifiedDate":"2017-02-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" storageManager \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2017-02-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Path getTempFilePath(String fileName) {","lastModifiedDate":"2018-04-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return testFolder.resolve(fileName);","lastModifiedDate":"2019-04-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void prefsReadSave() throws Exception {","lastModifiedDate":"2016-10-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-09-28"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Note: This is an integration test that verifies the StorageManager is properly wired to the","lastModifiedDate":"2016-09-28"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * {@link JsonUserPrefsStorage} class.","lastModifiedDate":"2016-10-01"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * More extensive testing of UserPref saving/reading is done in {@link JsonUserPrefsStorageTest} class.","lastModifiedDate":"2016-10-01"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-28"},{"lineNumber":43,"author":{"gitId":"-"},"content":" UserPrefs original \u003d new UserPrefs();","lastModifiedDate":"2016-09-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" original.setGuiSettings(new GuiSettings(300, 600, 4, 6));","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" storageManager.saveUserPrefs(original);","lastModifiedDate":"2016-09-28"},{"lineNumber":46,"author":{"gitId":"-"},"content":" UserPrefs retrieved \u003d storageManager.readUserPrefs().get();","lastModifiedDate":"2016-09-28"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertEquals(original, retrieved);","lastModifiedDate":"2016-09-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void addressBookReadSave() throws Exception {","lastModifiedDate":"2016-09-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-16"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Note: This is an integration test that verifies the StorageManager is properly wired to the","lastModifiedDate":"2016-10-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * {@link JsonAddressBookStorage} class.","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * More extensive testing of UserPref saving/reading is done in {@link JsonAddressBookStorageTest} class.","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":57,"author":{"gitId":"chaaaaun"},"content":" AddressBook original \u003d TypicalPersons.getTypicalAddressBook();","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":" storageManager.saveAddressBook(original);","lastModifiedDate":"2016-09-28"},{"lineNumber":59,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook retrieved \u003d storageManager.readAddressBook().get();","lastModifiedDate":"2016-09-28"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(retrieved));","lastModifiedDate":"2016-09-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-01"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void getAddressBookFilePath() {","lastModifiedDate":"2016-10-01"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertNotNull(storageManager.getAddressBookFilePath());","lastModifiedDate":"2016-10-01"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01"},{"lineNumber":68,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"chaaaaun":7,"-":61}},{"path":"src/test/java/scrolls/elder/testutil/AddressBookBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.testutil;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.AddressBook;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Person;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * A utility class to help with building Addressbook objects.","lastModifiedDate":"2016-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Example usage: \u003cbr\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * {@code AddressBook ab \u003d new AddressBookBuilder().withPerson(\"John\", \"Doe\").build();}","lastModifiedDate":"2018-03-29"},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class AddressBookBuilder {","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" private AddressBook addressBook;","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public AddressBookBuilder() {","lastModifiedDate":"2017-05-31"},{"lineNumber":16,"author":{"gitId":"chaaaaun"},"content":" addressBook \u003d new AddressBook(0);","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public AddressBookBuilder(AddressBook addressBook) {","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" this.addressBook \u003d addressBook;","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Adds a new {@code Person} to the {@code AddressBook} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public AddressBookBuilder withPerson(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":27,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2016-09-01"},{"lineNumber":28,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public AddressBook build() {","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"chaaaaun":4,"-":30}},{"path":"src/test/java/scrolls/elder/testutil/Assert.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.testutil;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-17"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Assertions;","lastModifiedDate":"2019-03-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.function.Executable;","lastModifiedDate":"2019-03-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-03-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-07-17"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * A set of assertion methods useful for writing tests.","lastModifiedDate":"2017-07-17"},{"lineNumber":8,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-17"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class Assert {","lastModifiedDate":"2017-07-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Asserts that the {@code executable} throws the {@code expectedType} Exception.","lastModifiedDate":"2019-03-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * This is a wrapper method that invokes {@link Assertions#assertThrows(Class, Executable)}, to maintain consistency","lastModifiedDate":"2019-03-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * with our custom {@link #assertThrows(Class, String, Executable)} method.","lastModifiedDate":"2019-03-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * To standardize API calls in this project, users should use this method instead of","lastModifiedDate":"2019-03-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * {@link Assertions#assertThrows(Class, Executable)}.","lastModifiedDate":"2019-03-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static void assertThrows(Class\u003c? extends Throwable\u003e expectedType, Executable executable) {","lastModifiedDate":"2019-03-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":" Assertions.assertThrows(expectedType, executable);","lastModifiedDate":"2019-03-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-02-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-02-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-02-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Asserts that the {@code executable} throws the {@code expectedType} Exception with the {@code expectedMessage}.","lastModifiedDate":"2019-03-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * If there\u0027s no need for the verification of the exception\u0027s error message, call","lastModifiedDate":"2018-02-09"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * {@link #assertThrows(Class, Executable)} instead.","lastModifiedDate":"2019-03-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2019-03-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * @see #assertThrows(Class, Executable)","lastModifiedDate":"2019-03-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-02-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public static void assertThrows(Class\u003c? extends Throwable\u003e expectedType, String expectedMessage,","lastModifiedDate":"2019-03-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" Executable executable) {","lastModifiedDate":"2019-03-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" Throwable thrownException \u003d Assertions.assertThrows(expectedType, executable);","lastModifiedDate":"2019-03-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" Assertions.assertEquals(expectedMessage, thrownException.getMessage());","lastModifiedDate":"2019-03-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-17"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-07-17"}],"authorContributionMap":{"chaaaaun":1,"-":33}},{"path":"src/test/java/scrolls/elder/testutil/EditPersonDescriptorBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.testutil;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-12-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-12-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-12-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":7,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.commands.EditCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Address;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Email;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Name;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Person;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Phone;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"gerteck"},"content":"import scrolls.elder.model.person.Role;","lastModifiedDate":"2024-03-15"},{"lineNumber":14,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.tag.Tag;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * A utility class to help with building EditPersonDescriptor objects.","lastModifiedDate":"2017-05-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorBuilder {","lastModifiedDate":"2017-05-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":21,"author":{"gitId":"chaaaaun"},"content":" private EditCommand.EditPersonDescriptor descriptor;","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder() {","lastModifiedDate":"2017-05-05"},{"lineNumber":24,"author":{"gitId":"chaaaaun"},"content":" descriptor \u003d new EditCommand.EditPersonDescriptor();","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":27,"author":{"gitId":"chaaaaun"},"content":" public EditPersonDescriptorBuilder(EditCommand.EditPersonDescriptor descriptor) {","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"chaaaaun"},"content":" this.descriptor \u003d new EditCommand.EditPersonDescriptor(descriptor);","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Returns an {@code EditPersonDescriptor} with fields containing {@code person}\u0027s details","lastModifiedDate":"2017-06-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":35,"author":{"gitId":"chaaaaun"},"content":" descriptor \u003d new EditCommand.EditPersonDescriptor();","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" descriptor.setName(person.getName());","lastModifiedDate":"2017-06-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" descriptor.setPhone(person.getPhone());","lastModifiedDate":"2017-06-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" descriptor.setEmail(person.getEmail());","lastModifiedDate":"2017-06-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" descriptor.setAddress(person.getAddress());","lastModifiedDate":"2017-06-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" descriptor.setTags(person.getTags());","lastModifiedDate":"2017-06-21"},{"lineNumber":41,"author":{"gitId":"gerteck"},"content":" descriptor.setRole(person.getRole());","lastModifiedDate":"2024-03-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withName(String name) {","lastModifiedDate":"2017-08-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":" descriptor.setName(new Name(name));","lastModifiedDate":"2017-12-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":" descriptor.setPhone(new Phone(phone));","lastModifiedDate":"2017-12-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15"},{"lineNumber":64,"author":{"gitId":"-"},"content":" descriptor.setEmail(new Email(email));","lastModifiedDate":"2017-12-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":68,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":69,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":70,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15"},{"lineNumber":72,"author":{"gitId":"-"},"content":" descriptor.setAddress(new Address(address));","lastModifiedDate":"2017-12-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":76,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":77,"author":{"gitId":"-"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code EditPersonDescriptor}","lastModifiedDate":"2017-07-26"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":79,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withTags(String... tags) {","lastModifiedDate":"2017-08-15"},{"lineNumber":81,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagSet \u003d Stream.of(tags).map(Tag::new).collect(Collectors.toSet());","lastModifiedDate":"2017-12-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" descriptor.setTags(tagSet);","lastModifiedDate":"2017-12-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":86,"author":{"gitId":"CJerrong"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":87,"author":{"gitId":"CJerrong"},"content":" * Sets the {@code role} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-03-15"},{"lineNumber":88,"author":{"gitId":"CJerrong"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":89,"author":{"gitId":"gerteck"},"content":" public EditPersonDescriptorBuilder withRole(String roleString) {","lastModifiedDate":"2024-03-15"},{"lineNumber":90,"author":{"gitId":"gerteck"},"content":" descriptor.setRole(new Role(roleString));","lastModifiedDate":"2024-03-15"},{"lineNumber":91,"author":{"gitId":"CJerrong"},"content":" return this;","lastModifiedDate":"2024-03-15"},{"lineNumber":92,"author":{"gitId":"CJerrong"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":93,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":94,"author":{"gitId":"chaaaaun"},"content":" public EditCommand.EditPersonDescriptor build() {","lastModifiedDate":"2024-03-12"},{"lineNumber":95,"author":{"gitId":"-"},"content":" return descriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":97,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"CJerrong":6,"gerteck":4,"chaaaaun":14,"-":73}},{"path":"src/test/java/scrolls/elder/testutil/PersonBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.testutil;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-12-20"},{"lineNumber":4,"author":{"gitId":"soons1"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-04-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":7,"author":{"gitId":"CJerrong"},"content":"import scrolls.elder.model.person.Address;","lastModifiedDate":"2024-03-15"},{"lineNumber":8,"author":{"gitId":"CJerrong"},"content":"import scrolls.elder.model.person.Befriendee;","lastModifiedDate":"2024-03-15"},{"lineNumber":9,"author":{"gitId":"CJerrong"},"content":"import scrolls.elder.model.person.Email;","lastModifiedDate":"2024-03-15"},{"lineNumber":10,"author":{"gitId":"CJerrong"},"content":"import scrolls.elder.model.person.Name;","lastModifiedDate":"2024-03-15"},{"lineNumber":11,"author":{"gitId":"CJerrong"},"content":"import scrolls.elder.model.person.Person;","lastModifiedDate":"2024-03-15"},{"lineNumber":12,"author":{"gitId":"CJerrong"},"content":"import scrolls.elder.model.person.Phone;","lastModifiedDate":"2024-03-15"},{"lineNumber":13,"author":{"gitId":"gerteck"},"content":"import scrolls.elder.model.person.Role;","lastModifiedDate":"2024-03-15"},{"lineNumber":14,"author":{"gitId":"CJerrong"},"content":"import scrolls.elder.model.person.Volunteer;","lastModifiedDate":"2024-03-15"},{"lineNumber":15,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.tag.Tag;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.util.SampleDataUtil;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * A utility class to help with building Person objects.","lastModifiedDate":"2017-04-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class PersonBuilder {","lastModifiedDate":"2016-09-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":23,"author":{"gitId":"chaaaaun"},"content":" public static final String DEFAULT_ID \u003d \"0\";","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2020-12-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2017-04-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2020-12-18"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2017-04-05"},{"lineNumber":28,"author":{"gitId":"gerteck"},"content":" public static final String DEFAULT_VOLUNTEER_ROLE_STRING \u003d \"volunteer\";","lastModifiedDate":"2024-03-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":30,"author":{"gitId":"chaaaaun"},"content":" private int id;","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-12-20"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-12-20"},{"lineNumber":36,"author":{"gitId":"gerteck"},"content":" private Role role;","lastModifiedDate":"2024-03-15"},{"lineNumber":37,"author":{"gitId":"CJerrong"},"content":" private Optional\u003cName\u003e pairedWithName;","lastModifiedDate":"2024-03-22"},{"lineNumber":38,"author":{"gitId":"CJerrong"},"content":" private Optional\u003cInteger\u003e pairedWithID;","lastModifiedDate":"2024-03-22"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2020-05-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public PersonBuilder() {","lastModifiedDate":"2017-08-15"},{"lineNumber":44,"author":{"gitId":"chaaaaun"},"content":" id \u003d 0;","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2017-12-20"},{"lineNumber":47,"author":{"gitId":"-"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2017-12-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2017-12-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26"},{"lineNumber":50,"author":{"gitId":"gerteck"},"content":" role \u003d new Role(DEFAULT_VOLUNTEER_ROLE_STRING);","lastModifiedDate":"2024-03-15"},{"lineNumber":51,"author":{"gitId":"CJerrong"},"content":" pairedWithName \u003d Optional.empty();","lastModifiedDate":"2024-03-22"},{"lineNumber":52,"author":{"gitId":"CJerrong"},"content":" pairedWithID \u003d Optional.empty();","lastModifiedDate":"2024-03-22"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Initializes the PersonBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2016-12-11"},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public PersonBuilder(Person personToCopy) {","lastModifiedDate":"2018-01-10"},{"lineNumber":59,"author":{"gitId":"chaaaaun"},"content":" id \u003d personToCopy.getId();","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"-"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2017-12-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2017-12-20"},{"lineNumber":62,"author":{"gitId":"-"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2017-12-20"},{"lineNumber":63,"author":{"gitId":"-"},"content":" address \u003d personToCopy.getAddress();","lastModifiedDate":"2017-12-20"},{"lineNumber":64,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e(personToCopy.getTags());","lastModifiedDate":"2017-12-20"},{"lineNumber":65,"author":{"gitId":"gerteck"},"content":" role \u003d personToCopy.getRole();","lastModifiedDate":"2024-03-15"},{"lineNumber":66,"author":{"gitId":"CJerrong"},"content":" pairedWithName \u003d personToCopy.getPairedWithName();","lastModifiedDate":"2024-03-22"},{"lineNumber":67,"author":{"gitId":"CJerrong"},"content":" pairedWithID \u003d personToCopy.getPairedWithID();","lastModifiedDate":"2024-03-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11"},{"lineNumber":70,"author":{"gitId":"chaaaaun"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"chaaaaun"},"content":" * Sets the {@code id} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"chaaaaun"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"chaaaaun"},"content":" public PersonBuilder withId(int id) {","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"chaaaaun"},"content":" this.id \u003d id;","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"chaaaaun"},"content":" return this;","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public PersonBuilder withName(String name) {","lastModifiedDate":"2017-08-15"},{"lineNumber":82,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20"},{"lineNumber":83,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":86,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":89,"author":{"gitId":"-"},"content":" public PersonBuilder withTags(String ... tags) {","lastModifiedDate":"2017-08-15"},{"lineNumber":90,"author":{"gitId":"-"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2017-12-20"},{"lineNumber":91,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":94,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public PersonBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15"},{"lineNumber":98,"author":{"gitId":"-"},"content":" this.address \u003d new Address(address);","lastModifiedDate":"2017-12-20"},{"lineNumber":99,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":102,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":105,"author":{"gitId":"-"},"content":" public PersonBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15"},{"lineNumber":106,"author":{"gitId":"-"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2017-12-20"},{"lineNumber":107,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":110,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":111,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":112,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":113,"author":{"gitId":"-"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15"},{"lineNumber":114,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2017-12-20"},{"lineNumber":115,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":118,"author":{"gitId":"CJerrong"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":119,"author":{"gitId":"CJerrong"},"content":" * Sets the {@code isVolunteer} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-15"},{"lineNumber":120,"author":{"gitId":"CJerrong"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":121,"author":{"gitId":"gerteck"},"content":" public PersonBuilder withRole(String roleString) {","lastModifiedDate":"2024-03-15"},{"lineNumber":122,"author":{"gitId":"gerteck"},"content":" this.role \u003d new Role(roleString);","lastModifiedDate":"2024-03-15"},{"lineNumber":123,"author":{"gitId":"CJerrong"},"content":" return this;","lastModifiedDate":"2024-03-15"},{"lineNumber":124,"author":{"gitId":"CJerrong"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":125,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":126,"author":{"gitId":"soons1"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":127,"author":{"gitId":"CJerrong"},"content":" * Sets the {@code pairedWithName} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-22"},{"lineNumber":128,"author":{"gitId":"soons1"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":129,"author":{"gitId":"CJerrong"},"content":" public PersonBuilder withPairedWithName(Optional\u003cName\u003e pairedWithName) {","lastModifiedDate":"2024-03-22"},{"lineNumber":130,"author":{"gitId":"CJerrong"},"content":" this.pairedWithName \u003d pairedWithName;","lastModifiedDate":"2024-03-22"},{"lineNumber":131,"author":{"gitId":"CJerrong"},"content":" return this;","lastModifiedDate":"2024-03-22"},{"lineNumber":132,"author":{"gitId":"CJerrong"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":133,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":134,"author":{"gitId":"CJerrong"},"content":" /**","lastModifiedDate":"2024-03-22"},{"lineNumber":135,"author":{"gitId":"CJerrong"},"content":" * Sets the {@code pairedWithID} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-22"},{"lineNumber":136,"author":{"gitId":"CJerrong"},"content":" */","lastModifiedDate":"2024-03-22"},{"lineNumber":137,"author":{"gitId":"CJerrong"},"content":" public PersonBuilder withPairedWithID(Optional\u003cInteger\u003e pairedWithID) {","lastModifiedDate":"2024-03-22"},{"lineNumber":138,"author":{"gitId":"CJerrong"},"content":" this.pairedWithID \u003d pairedWithID;","lastModifiedDate":"2024-03-22"},{"lineNumber":139,"author":{"gitId":"soons1"},"content":" return this;","lastModifiedDate":"2024-03-18"},{"lineNumber":140,"author":{"gitId":"soons1"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":141,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":142,"author":{"gitId":"CJerrong"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":143,"author":{"gitId":"CJerrong"},"content":" * Builds a Person based on the fields in the person builder","lastModifiedDate":"2024-03-15"},{"lineNumber":144,"author":{"gitId":"CJerrong"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":145,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05"},{"lineNumber":146,"author":{"gitId":"CJerrong"},"content":" Person person;","lastModifiedDate":"2024-03-15"},{"lineNumber":147,"author":{"gitId":"gerteck"},"content":" if (role.isVolunteer()) {","lastModifiedDate":"2024-03-16"},{"lineNumber":148,"author":{"gitId":"CJerrong"},"content":" person \u003d new Volunteer(name, phone, email, address, tags, pairedWithName, pairedWithID);","lastModifiedDate":"2024-03-22"},{"lineNumber":149,"author":{"gitId":"CJerrong"},"content":" } else {","lastModifiedDate":"2024-03-15"},{"lineNumber":150,"author":{"gitId":"CJerrong"},"content":" person \u003d new Befriendee(name, phone, email, address, tags, pairedWithName, pairedWithID);","lastModifiedDate":"2024-03-22"},{"lineNumber":151,"author":{"gitId":"CJerrong"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":152,"author":{"gitId":"chaaaaun"},"content":" person.setId(id);","lastModifiedDate":"2024-03-17"},{"lineNumber":153,"author":{"gitId":"CJerrong"},"content":" return person;","lastModifiedDate":"2024-03-15"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":156,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03"}],"authorContributionMap":{"soons1":6,"CJerrong":39,"gerteck":8,"chaaaaun":16,"-":87}},{"path":"src/test/java/scrolls/elder/testutil/PersonUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.testutil;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"chaaaaun"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.commands.AddCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.commands.EditCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.parser.CliSyntax;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Person;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.tag.Tag;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":"/**","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"chaaaaun"},"content":" * A utility class for Person.","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"chaaaaun"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"chaaaaun"},"content":"public class PersonUtil {","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"chaaaaun"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"chaaaaun"},"content":" * Returns an add command string for adding the {@code person}.","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"chaaaaun"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"chaaaaun"},"content":" public static String getAddCommand(Person person) {","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"chaaaaun"},"content":" return AddCommand.COMMAND_WORD + \" \" + getPersonDetails(person);","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"chaaaaun"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"chaaaaun"},"content":" * Returns the part of command string for the given {@code person}\u0027s details.","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"chaaaaun"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"chaaaaun"},"content":" public static String getPersonDetails(Person person) {","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"chaaaaun"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"chaaaaun"},"content":" sb.append(CliSyntax.PREFIX_NAME + person.getName().fullName + \" \");","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"chaaaaun"},"content":" sb.append(CliSyntax.PREFIX_PHONE + person.getPhone().value + \" \");","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"chaaaaun"},"content":" sb.append(CliSyntax.PREFIX_EMAIL + person.getEmail().value + \" \");","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"chaaaaun"},"content":" sb.append(CliSyntax.PREFIX_ADDRESS + person.getAddress().value + \" \");","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"gerteck"},"content":" sb.append(CliSyntax.PREFIX_ROLE + person.getRole().value + \" \");","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"chaaaaun"},"content":" person.getTags().stream().forEach(","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"chaaaaun"},"content":" s -\u003e sb.append(CliSyntax.PREFIX_TAG + s.tagName + \" \")","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"chaaaaun"},"content":" );","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"chaaaaun"},"content":" return sb.toString();","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"chaaaaun"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"chaaaaun"},"content":" * Returns the part of command string for the given {@code EditPersonDescriptor}\u0027s details.","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"chaaaaun"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"chaaaaun"},"content":" public static String getEditPersonDescriptorDetails(EditCommand.EditPersonDescriptor descriptor) {","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"chaaaaun"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"chaaaaun"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(CliSyntax.PREFIX_NAME).append(name.fullName).append(\" \"));","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"chaaaaun"},"content":" descriptor.getPhone().ifPresent(phone -\u003e sb.append(CliSyntax.PREFIX_PHONE).append(phone.value).append(\" \"));","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"chaaaaun"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(CliSyntax.PREFIX_EMAIL).append(email.value).append(\" \"));","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"chaaaaun"},"content":" descriptor.getAddress().ifPresent(address -\u003e","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"chaaaaun"},"content":" sb.append(CliSyntax.PREFIX_ADDRESS).append(address.value).append(\" \"));","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"gerteck"},"content":" descriptor.getRole().ifPresent(role -\u003e sb.append(CliSyntax.PREFIX_ROLE).append(role.value).append(\" \"));","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"chaaaaun"},"content":" if (descriptor.getTags().isPresent()) {","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"chaaaaun"},"content":" Set\u003cTag\u003e tags \u003d descriptor.getTags().get();","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"chaaaaun"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"chaaaaun"},"content":" sb.append(CliSyntax.PREFIX_TAG);","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"chaaaaun"},"content":" } else {","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"chaaaaun"},"content":" tags.forEach(s -\u003e sb.append(CliSyntax.PREFIX_TAG).append(s.tagName).append(\" \"));","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"chaaaaun"},"content":" return sb.toString();","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"chaaaaun"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"gerteck":3,"chaaaaun":58}},{"path":"src/test/java/scrolls/elder/testutil/SerializableTestClass.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.testutil;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2016-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2016-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.HashMap;","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * A class used to test serialization and deserialization","lastModifiedDate":"2016-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class SerializableTestClass {","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final String JSON_STRING_REPRESENTATION \u003d String.format(\"{%n\"","lastModifiedDate":"2016-10-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":" + \" \\\"name\\\" : \\\"This is a test class\\\",%n\"","lastModifiedDate":"2016-10-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":" + \" \\\"listOfLocalDateTimes\\\" : \"","lastModifiedDate":"2016-10-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":" + \"[ \\\"-999999999-01-01T00:00:00\\\", \\\"+999999999-12-31T23:59:59.999999999\\\", \"","lastModifiedDate":"2016-10-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":" + \"\\\"0001-01-01T01:01:00\\\" ],%n\"","lastModifiedDate":"2016-10-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":" + \" \\\"mapOfIntegerToString\\\" : {%n\"","lastModifiedDate":"2016-10-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":" + \" \\\"1\\\" : \\\"One\\\",%n\"","lastModifiedDate":"2016-10-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" + \" \\\"2\\\" : \\\"Two\\\",%n\"","lastModifiedDate":"2016-10-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":" + \" \\\"3\\\" : \\\"Three\\\"%n\"","lastModifiedDate":"2016-10-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":" + \" }%n\"","lastModifiedDate":"2016-10-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":" + \"}\");","lastModifiedDate":"2016-10-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String NAME_TEST_VALUE \u003d \"This is a test class\";","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private String name;","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private List\u003cLocalDateTime\u003e listOfLocalDateTimes;","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private HashMap\u003cInteger, String\u003e mapOfIntegerToString;","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static String getNameTestValue() {","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" return NAME_TEST_VALUE;","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static List\u003cLocalDateTime\u003e getListTestValues() {","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" List\u003cLocalDateTime\u003e listOfLocalDateTimes \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" listOfLocalDateTimes.add(LocalDateTime.MIN);","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" listOfLocalDateTimes.add(LocalDateTime.MAX);","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" listOfLocalDateTimes.add(LocalDateTime.of(1, 1, 1, 1, 1));","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return listOfLocalDateTimes;","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static HashMap\u003cInteger, String\u003e getHashMapTestValues() {","lastModifiedDate":"2016-08-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":" HashMap\u003cInteger, String\u003e mapOfIntegerToString \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" mapOfIntegerToString.put(1, \"One\");","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" mapOfIntegerToString.put(2, \"Two\");","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":" mapOfIntegerToString.put(3, \"Three\");","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" return mapOfIntegerToString;","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void setTestValues() {","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" name \u003d getNameTestValue();","lastModifiedDate":"2016-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" listOfLocalDateTimes \u003d getListTestValues();","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" mapOfIntegerToString \u003d getHashMapTestValues();","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public String getName() {","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public List\u003cLocalDateTime\u003e getListOfLocalDateTimes() {","lastModifiedDate":"2016-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return listOfLocalDateTimes;","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public HashMap\u003cInteger, String\u003e getMapOfIntegerToString() {","lastModifiedDate":"2016-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return mapOfIntegerToString;","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"chaaaaun":1,"-":71}},{"path":"src/test/java/scrolls/elder/testutil/TestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.testutil;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Files;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.core.index.Index;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.Model;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Person;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * A utility class for test cases.","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class TestUtil {","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Folder used for temp files created during testing. Ignored by Git.","lastModifiedDate":"2016-10-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final Path SANDBOX_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"sandbox\");","lastModifiedDate":"2018-04-21"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Appends {@code fileName} to the sandbox folder path and returns the resulting path.","lastModifiedDate":"2018-04-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Creates the sandbox folder if it doesn\u0027t exist.","lastModifiedDate":"2016-09-28"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static Path getFilePathInSandboxFolder(String fileName) {","lastModifiedDate":"2018-04-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-28"},{"lineNumber":28,"author":{"gitId":"-"},"content":" Files.createDirectories(SANDBOX_FOLDER);","lastModifiedDate":"2018-04-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-28"},{"lineNumber":30,"author":{"gitId":"-"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2016-09-28"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-28"},{"lineNumber":32,"author":{"gitId":"-"},"content":" return SANDBOX_FOLDER.resolve(fileName);","lastModifiedDate":"2018-04-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-30"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Returns the middle index of the person in the {@code model}\u0027s person list.","lastModifiedDate":"2017-07-30"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-30"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static Index getMidIndex(Model model) {","lastModifiedDate":"2017-07-30"},{"lineNumber":39,"author":{"gitId":"-"},"content":" return Index.fromOneBased(model.getFilteredPersonList().size() / 2);","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-30"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-30"},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-30"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Returns the last index of the person in the {@code model}\u0027s person list.","lastModifiedDate":"2017-07-30"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-30"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static Index getLastIndex(Model model) {","lastModifiedDate":"2017-07-30"},{"lineNumber":46,"author":{"gitId":"-"},"content":" return Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-30"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-30"},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-30"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * Returns the person in the {@code model}\u0027s person list at {@code index}.","lastModifiedDate":"2017-07-30"},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-30"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static Person getPerson(Model model, Index index) {","lastModifiedDate":"2018-01-10"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return model.getFilteredPersonList().get(index.getZeroBased());","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-30"},{"lineNumber":55,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"chaaaaun":4,"-":51}},{"path":"src/test/java/scrolls/elder/testutil/TypicalIndexes.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.testutil;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":3,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.core.index.Index;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Index} objects to be used in tests.","lastModifiedDate":"2017-08-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class TypicalIndexes {","lastModifiedDate":"2017-08-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static final Index INDEX_FIRST_PERSON \u003d Index.fromOneBased(1);","lastModifiedDate":"2017-08-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final Index INDEX_SECOND_PERSON \u003d Index.fromOneBased(2);","lastModifiedDate":"2017-08-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final Index INDEX_THIRD_PERSON \u003d Index.fromOneBased(3);","lastModifiedDate":"2017-08-05"},{"lineNumber":12,"author":{"gitId":"soons1"},"content":" public static final Index INDEX_FOURTH_PERSON \u003d Index.fromOneBased(4);","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"soons1"},"content":" public static final Index INDEX_FIFTH_PERSON \u003d Index.fromOneBased(5);","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"sdevih"},"content":" public static final Index INDEX_SIXTH_PERSON \u003d Index.fromOneBased(6);","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"sdevih"},"content":" public static final Index INDEX_SEVENTH_PERSON \u003d Index.fromOneBased(7);","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"sdevih"},"content":" public static final Index INDEX_EIGHTH_PERSON \u003d Index.fromOneBased(8);","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"sdevih"},"content":" public static final Index INDEX_NINTH_PERSON \u003d Index.fromOneBased(9);","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-08-05"}],"authorContributionMap":{"soons1":2,"chaaaaun":2,"-":10,"sdevih":4}},{"path":"src/test/java/scrolls/elder/testutil/TypicalPersons.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.testutil;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":3,"author":{"gitId":"gerteck"},"content":"import static scrolls.elder.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"gerteck"},"content":"import static scrolls.elder.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"gerteck"},"content":"import static scrolls.elder.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"gerteck"},"content":"import static scrolls.elder.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"gerteck"},"content":"import static scrolls.elder.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"gerteck"},"content":"import static scrolls.elder.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"gerteck"},"content":"import static scrolls.elder.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"gerteck"},"content":"import static scrolls.elder.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"gerteck"},"content":"import static scrolls.elder.logic.commands.CommandTestUtil.VALID_ROLE_BEFRIENDEE;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"gerteck"},"content":"import static scrolls.elder.logic.commands.CommandTestUtil.VALID_ROLE_VOLUNTEER;","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"gerteck"},"content":"import static scrolls.elder.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"gerteck"},"content":"import static scrolls.elder.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07"},{"lineNumber":19,"author":{"gitId":"sdevih"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-07"},{"lineNumber":21,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.AddressBook;","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"sdevih"},"content":"import scrolls.elder.model.person.Name;","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Person;","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Person} objects to be used in tests.","lastModifiedDate":"2017-08-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class TypicalPersons {","lastModifiedDate":"2017-04-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":30,"author":{"gitId":"chaaaaun"},"content":" public static final Person ALICE \u003d new PersonBuilder().withId(0).withName(\"Alice Pauline\")","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"-"},"content":" .withAddress(\"123, Jurong West Ave 6, #08-111\").withEmail(\"alice@example.com\")","lastModifiedDate":"2017-04-05"},{"lineNumber":32,"author":{"gitId":"gerteck"},"content":" .withPhone(\"94351253\").withRole(\"volunteer\")","lastModifiedDate":"2024-03-15"},{"lineNumber":33,"author":{"gitId":"CJerrong"},"content":" .withTags(\"friends\").withPairedWithName(Optional.of(new Name(\"Elle Meyer\")))","lastModifiedDate":"2024-03-22"},{"lineNumber":34,"author":{"gitId":"CJerrong"},"content":" .withPairedWithID(Optional.of(4)).build();","lastModifiedDate":"2024-03-22"},{"lineNumber":35,"author":{"gitId":"chaaaaun"},"content":" public static final Person BENSON \u003d new PersonBuilder().withId(1).withName(\"Benson Meier\")","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"gerteck"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\").withRole(\"volunteer\")","lastModifiedDate":"2024-03-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":" .withEmail(\"johnd@example.com\").withPhone(\"98765432\")","lastModifiedDate":"2017-04-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" .withTags(\"owesMoney\", \"friends\").build();","lastModifiedDate":"2016-09-13"},{"lineNumber":39,"author":{"gitId":"chaaaaun"},"content":" public static final Person CARL \u003d new PersonBuilder().withId(2).withName(\"Carl Kurz\").withPhone(\"95352563\")","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"gerteck"},"content":" .withEmail(\"heinz@example.com\").withAddress(\"wall street\").withRole(\"volunteer\").build();","lastModifiedDate":"2024-03-15"},{"lineNumber":41,"author":{"gitId":"chaaaaun"},"content":" public static final Person DANIEL \u003d new PersonBuilder().withId(3).withName(\"Daniel Meier\").withPhone(\"87652533\")","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"gerteck"},"content":" .withEmail(\"cornelia@example.com\").withAddress(\"10th street\").withTags(\"friends\")","lastModifiedDate":"2024-03-15"},{"lineNumber":43,"author":{"gitId":"gerteck"},"content":" .withRole(\"volunteer\").build();","lastModifiedDate":"2024-03-15"},{"lineNumber":44,"author":{"gitId":"chaaaaun"},"content":" public static final Person ELLE \u003d new PersonBuilder().withId(4).withName(\"Elle Meyer\").withPhone(\"9482224\")","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"sdevih"},"content":" .withEmail(\"werner@example.com\").withAddress(\"michegan ave\").withRole(\"befriendee\")","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"CJerrong"},"content":" .withPairedWithName(Optional.of(ALICE.getName())).withPairedWithID(Optional.of(0)).build();","lastModifiedDate":"2024-03-22"},{"lineNumber":47,"author":{"gitId":"chaaaaun"},"content":" public static final Person FIONA \u003d new PersonBuilder().withId(5).withName(\"Fiona Kunz\").withPhone(\"9482427\")","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"gerteck"},"content":" .withEmail(\"lydia@example.com\").withAddress(\"little tokyo\").withRole(\"befriendee\").build();","lastModifiedDate":"2024-03-15"},{"lineNumber":49,"author":{"gitId":"chaaaaun"},"content":" public static final Person GEORGE \u003d new PersonBuilder().withId(6).withName(\"George Best\").withPhone(\"9482442\")","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"gerteck"},"content":" .withEmail(\"anna@example.com\").withAddress(\"4th street\").withRole(\"befriendee\").build();","lastModifiedDate":"2024-03-15"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13"},{"lineNumber":53,"author":{"gitId":"sdevih"},"content":" public static final Person HOON \u003d new PersonBuilder().withId(7).withName(\"Hoon Meier\").withPhone(\"8482424\")","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"sdevih"},"content":" .withEmail(\"stefan@example.com\").withAddress(\"little india\").withRole(\"volunteer\")","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"CJerrong"},"content":" .withPairedWithName(Optional.of(new Name(\"Ida Mueller\"))).withPairedWithID(Optional.of(8)).build();","lastModifiedDate":"2024-03-22"},{"lineNumber":56,"author":{"gitId":"sdevih"},"content":" public static final Person IDA \u003d new PersonBuilder().withId(8).withName(\"Ida Mueller\").withPhone(\"8482131\")","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"sdevih"},"content":" .withEmail(\"hans@example.com\").withAddress(\"chicago ave\").withRole(\"befriendee\")","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"CJerrong"},"content":" .withPairedWithName(Optional.of(HOON.getName())).withPairedWithID(Optional.of(7)).build();","lastModifiedDate":"2024-03-22"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2017-08-22"},{"lineNumber":60,"author":{"gitId":"gerteck"},"content":" // AMY has role VOLUNTEER","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static final Person AMY \u003d new PersonBuilder().withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2018-01-10"},{"lineNumber":62,"author":{"gitId":"gerteck"},"content":" .withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY).withTags(VALID_TAG_FRIEND)","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"gerteck"},"content":" .withRole(VALID_ROLE_VOLUNTEER).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"gerteck"},"content":" // BOB has role BEFRIENDEE","lastModifiedDate":"2024-03-16"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public static final Person BOB \u003d new PersonBuilder().withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2018-01-10"},{"lineNumber":67,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND)","lastModifiedDate":"2017-09-21"},{"lineNumber":68,"author":{"gitId":"gerteck"},"content":" .withRole(VALID_ROLE_BEFRIENDEE).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" private TypicalPersons() {} // prevents instantiation","lastModifiedDate":"2017-07-20"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":74,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":75,"author":{"gitId":"-"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2017-08-05"},{"lineNumber":76,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2017-08-05"},{"lineNumber":78,"author":{"gitId":"chaaaaun"},"content":" AddressBook ab \u003d new AddressBook(0);","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"-"},"content":" for (Person person : getTypicalPersons()) {","lastModifiedDate":"2018-01-10"},{"lineNumber":80,"author":{"gitId":"chaaaaun"},"content":" person.setId(ab.getGlobalId());","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"-"},"content":" ab.addPerson(person);","lastModifiedDate":"2017-08-05"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public static List\u003cPerson\u003e getTypicalPersons() {","lastModifiedDate":"2018-01-10"},{"lineNumber":87,"author":{"gitId":"sdevih"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04"},{"lineNumber":89,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13"}],"authorContributionMap":{"CJerrong":5,"gerteck":26,"chaaaaun":12,"-":38,"sdevih":8}},{"path":"src/test/java/scrolls/elder/ui/TestFxmlObject.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.ui;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.beans.DefaultProperty;","lastModifiedDate":"2016-12-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * A test object which can be constructed via an FXML file.","lastModifiedDate":"2016-12-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * Unlike other JavaFX classes, this class can be constructed without the JavaFX toolkit being initialized.","lastModifiedDate":"2016-12-21"},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-21"},{"lineNumber":11,"author":{"gitId":"-"},"content":"@DefaultProperty(\"text\")","lastModifiedDate":"2016-12-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class TestFxmlObject {","lastModifiedDate":"2016-12-21"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":14,"author":{"gitId":"-"},"content":" private String text;","lastModifiedDate":"2016-12-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public TestFxmlObject() {}","lastModifiedDate":"2016-12-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public TestFxmlObject(String text) {","lastModifiedDate":"2016-12-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":" setText(text);","lastModifiedDate":"2016-12-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-21"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public String getText() {","lastModifiedDate":"2016-12-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":" return text;","lastModifiedDate":"2016-12-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void setText(String text) {","lastModifiedDate":"2016-12-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":" this.text \u003d text;","lastModifiedDate":"2016-12-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-12-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" if (!(other instanceof TestFxmlObject)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" TestFxmlObject otherTestFxmlObject \u003d (TestFxmlObject) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return Objects.equals(text, otherTestFxmlObject.text);","lastModifiedDate":"2023-07-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-21"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-21"}],"authorContributionMap":{"chaaaaun":1,"-":44}},{"path":"src/test/java/scrolls/elder/ui/UiPartTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.ui;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertNotNull;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.net.URL;","lastModifiedDate":"2016-12-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2019-04-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-12-21"},{"lineNumber":13,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.MainApp;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.Assert;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class UiPartTest {","lastModifiedDate":"2016-12-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private static final String MISSING_FILE_PATH \u003d \"UiPartTest/missingFile.fxml\";","lastModifiedDate":"2016-12-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private static final String INVALID_FILE_PATH \u003d \"UiPartTest/invalidFile.fxml\";","lastModifiedDate":"2016-12-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final String VALID_FILE_PATH \u003d \"UiPartTest/validFile.fxml\";","lastModifiedDate":"2016-12-21"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final String VALID_FILE_WITH_FX_ROOT_PATH \u003d \"UiPartTest/validFileWithFxRoot.fxml\";","lastModifiedDate":"2017-11-29"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final TestFxmlObject VALID_FILE_ROOT \u003d new TestFxmlObject(\"Hello World!\");","lastModifiedDate":"2016-12-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public Path testFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public void constructor_nullFileUrl_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":29,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e new TestUiPart\u003cObject\u003e((URL) null));","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e new TestUiPart\u003cObject\u003e((URL) null, new Object()));","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public void constructor_missingFileUrl_throwsAssertionError() throws Exception {","lastModifiedDate":"2016-12-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" URL missingFileUrl \u003d new URL(testFolder.toUri().toURL(), MISSING_FILE_PATH);","lastModifiedDate":"2019-04-25"},{"lineNumber":36,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(AssertionError.class, () -\u003e new TestUiPart\u003cObject\u003e(missingFileUrl));","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(AssertionError.class, () -\u003e new TestUiPart\u003cObject\u003e(missingFileUrl, new Object()));","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public void constructor_invalidFileUrl_throwsAssertionError() {","lastModifiedDate":"2016-12-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" URL invalidFileUrl \u003d getTestFileUrl(INVALID_FILE_PATH);","lastModifiedDate":"2016-12-21"},{"lineNumber":43,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(AssertionError.class, () -\u003e new TestUiPart\u003cObject\u003e(invalidFileUrl));","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(AssertionError.class, () -\u003e new TestUiPart\u003cObject\u003e(invalidFileUrl, new Object()));","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-21"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-21"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void constructor_validFileUrl_loadsFile() {","lastModifiedDate":"2016-12-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":" URL validFileUrl \u003d getTestFileUrl(VALID_FILE_PATH);","lastModifiedDate":"2016-12-21"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertEquals(VALID_FILE_ROOT, new TestUiPart\u003cTestFxmlObject\u003e(validFileUrl).getRoot());","lastModifiedDate":"2016-12-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-21"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-11-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void constructor_validFileWithFxRootUrl_loadsFile() {","lastModifiedDate":"2017-11-29"},{"lineNumber":55,"author":{"gitId":"-"},"content":" URL validFileUrl \u003d getTestFileUrl(VALID_FILE_WITH_FX_ROOT_PATH);","lastModifiedDate":"2017-11-29"},{"lineNumber":56,"author":{"gitId":"-"},"content":" TestFxmlObject root \u003d new TestFxmlObject();","lastModifiedDate":"2017-11-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertEquals(VALID_FILE_ROOT, new TestUiPart\u003cTestFxmlObject\u003e(validFileUrl, root).getRoot());","lastModifiedDate":"2017-11-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-11-29"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-11-29"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-21"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void constructor_nullFileName_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":62,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e new TestUiPart\u003cObject\u003e((String) null));","lastModifiedDate":"2024-03-12"},{"lineNumber":63,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e new TestUiPart\u003cObject\u003e((String) null, new Object()));","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void constructor_missingFileName_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":68,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e new TestUiPart\u003cObject\u003e(MISSING_FILE_PATH));","lastModifiedDate":"2024-03-12"},{"lineNumber":69,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e new TestUiPart\u003cObject\u003e(MISSING_FILE_PATH, new Object()));","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-21"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-21"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void constructor_invalidFileName_throwsAssertionError() {","lastModifiedDate":"2016-12-21"},{"lineNumber":74,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(AssertionError.class, () -\u003e new TestUiPart\u003cObject\u003e(INVALID_FILE_PATH));","lastModifiedDate":"2024-03-12"},{"lineNumber":75,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(AssertionError.class, () -\u003e new TestUiPart\u003cObject\u003e(INVALID_FILE_PATH, new Object()));","lastModifiedDate":"2024-03-12"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-21"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":78,"author":{"gitId":"-"},"content":" private URL getTestFileUrl(String testFilePath) {","lastModifiedDate":"2016-12-21"},{"lineNumber":79,"author":{"gitId":"-"},"content":" String testFilePathInView \u003d \"/view/\" + testFilePath;","lastModifiedDate":"2016-12-21"},{"lineNumber":80,"author":{"gitId":"-"},"content":" URL testFileUrl \u003d MainApp.class.getResource(testFilePathInView);","lastModifiedDate":"2016-12-21"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertNotNull(testFileUrl, testFilePathInView + \" does not exist.\");","lastModifiedDate":"2019-03-15"},{"lineNumber":82,"author":{"gitId":"-"},"content":" return testFileUrl;","lastModifiedDate":"2016-12-21"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-21"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-21"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * UiPart used for testing.","lastModifiedDate":"2016-12-21"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * It should only be used with invalid FXML files or the valid file located at {@link VALID_FILE_PATH}.","lastModifiedDate":"2016-12-21"},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-21"},{"lineNumber":89,"author":{"gitId":"-"},"content":" private static class TestUiPart\u003cT\u003e extends UiPart\u003cT\u003e {","lastModifiedDate":"2016-12-21"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-12-21"},{"lineNumber":92,"author":{"gitId":"-"},"content":" private TestFxmlObject validFileRoot; // Check that @FXML annotations work","lastModifiedDate":"2016-12-21"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":94,"author":{"gitId":"-"},"content":" TestUiPart(URL fxmlFileUrl, T root) {","lastModifiedDate":"2017-11-29"},{"lineNumber":95,"author":{"gitId":"-"},"content":" super(fxmlFileUrl, root);","lastModifiedDate":"2017-11-29"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-11-29"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-11-29"},{"lineNumber":98,"author":{"gitId":"-"},"content":" TestUiPart(String fxmlFileName, T root) {","lastModifiedDate":"2017-11-29"},{"lineNumber":99,"author":{"gitId":"-"},"content":" super(fxmlFileName, root);","lastModifiedDate":"2017-11-29"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-11-29"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-11-29"},{"lineNumber":102,"author":{"gitId":"-"},"content":" TestUiPart(URL fxmlFileUrl) {","lastModifiedDate":"2016-12-21"},{"lineNumber":103,"author":{"gitId":"-"},"content":" super(fxmlFileUrl);","lastModifiedDate":"2016-12-21"},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertEquals(VALID_FILE_ROOT, validFileRoot);","lastModifiedDate":"2016-12-21"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-21"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":107,"author":{"gitId":"-"},"content":" TestUiPart(String fxmlFileName) {","lastModifiedDate":"2016-12-21"},{"lineNumber":108,"author":{"gitId":"-"},"content":" super(fxmlFileName);","lastModifiedDate":"2016-12-21"},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertEquals(VALID_FILE_ROOT, validFileRoot);","lastModifiedDate":"2016-12-21"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-21"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-21"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":114,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-21"}],"authorContributionMap":{"chaaaaun":15,"-":99}},{"path":"src/test/resources/view/UiPartTest/validFile.fxml","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-12-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":3,"author":{"gitId":"chaaaaun"},"content":"\u003c?import scrolls.elder.ui.TestFxmlObject?\u003e","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003cTestFxmlObject xmlns:fx\u003d\"http://javafx.com/fxml/1\" fx:id\u003d\"validFileRoot\"\u003eHello World!\u003c/TestFxmlObject\u003e","lastModifiedDate":"2016-12-21"}],"authorContributionMap":{"chaaaaun":1,"-":3}},{"path":"src/test/resources/view/UiPartTest/validFileWithFxRoot.fxml","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-11-29"},{"lineNumber":3,"author":{"gitId":"chaaaaun"},"content":"\u003c?import scrolls.elder.ui.TestFxmlObject?\u003e","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"chaaaaun"},"content":"\u003cfx:root type\u003d\"TestFxmlObject\" xmlns\u003d\"http://javafx.com/javafx/17\"","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-07-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":" \u003ctext\u003eHello World!\u003c/text\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-11-29"}],"authorContributionMap":{"chaaaaun":2,"-":5}}] +[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"[![CI Status](https://github.com/AY2324S2-CS2103T-T09-3/tp/actions/workflows/gradle.yml/badge.svg)](https://github.com/AY2324S2-CS2103T-T09-3/tp/actions)","lastModifiedDate":"2024-02-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"[![codecov](https://codecov.io/gh/AY2324S2-CS2103-T09-3/tp/graph/badge.svg?token\u003d7N2EZAM58I)](https://codecov.io/gh/AY2324S2-CS2103-T09-3/tp)","lastModifiedDate":"2024-02-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"chaaaaun"},"content":"**Elder Scrolls is a desktop volunteer management system application for managing both volunteers, and befriendees.** While it has a GUI, most of the user interactions happen using a CLI (Command Line Interface).","lastModifiedDate":"2024-03-03"},{"lineNumber":7,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":"* If you are interested in using Elder Scrolls, head over to the [_Quick Start_ section of the **User Guide**](UserGuide.html#quick-start).","lastModifiedDate":"2024-03-03"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":"* If you are interested about developing Elder Scrolls, the [**Developer Guide**](DeveloperGuide.html) is a good place to start.","lastModifiedDate":"2024-03-03"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":12,"author":{"gitId":"chaaaaun"},"content":"**Acknowledgements**","lastModifiedDate":"2024-03-03"},{"lineNumber":13,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":14,"author":{"gitId":"chaaaaun"},"content":"* Libraries used: [JavaFX](https://openjfx.io/), [Jackson](https://github.com/FasterXML/jackson), [JUnit5](https://github.com/junit-team/junit5)","lastModifiedDate":"2024-03-03"},{"lineNumber":15,"author":{"gitId":"chaaaaun"},"content":"* This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-03-03"}],"authorContributionMap":{"chaaaaun":10,"-":5}},{"path":"build.gradle","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2016-08-29"},{"lineNumber":2,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2017-12-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2017-12-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2022-06-17"},{"lineNumber":5,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2016-12-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":" id \u0027jacoco\u0027","lastModifiedDate":"2020-08-07"},{"lineNumber":7,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-29"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":"mainClassName \u003d \u0027scrolls.elder.Main\u0027","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"sourceCompatibility \u003d JavaVersion.VERSION_11","lastModifiedDate":"2019-02-20"},{"lineNumber":12,"author":{"gitId":"-"},"content":"targetCompatibility \u003d JavaVersion.VERSION_11","lastModifiedDate":"2019-02-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" maven { url \u0027https://oss.sonatype.org/content/repositories/snapshots/\u0027 }","lastModifiedDate":"2018-04-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"checkstyle {","lastModifiedDate":"2016-10-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2022-04-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-10-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2018-03-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2018-03-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":" finalizedBy jacocoTestReport","lastModifiedDate":"2020-08-07"},{"lineNumber":26,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-08-07"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-08-07"},{"lineNumber":28,"author":{"gitId":"-"},"content":"task coverage(type: JacocoReport) {","lastModifiedDate":"2020-08-07"},{"lineNumber":29,"author":{"gitId":"-"},"content":" sourceDirectories.from files(sourceSets.main.allSource.srcDirs)","lastModifiedDate":"2020-08-07"},{"lineNumber":30,"author":{"gitId":"-"},"content":" classDirectories.from files(sourceSets.main.output)","lastModifiedDate":"2020-08-07"},{"lineNumber":31,"author":{"gitId":"-"},"content":" executionData.from files(jacocoTestReport.executionData)","lastModifiedDate":"2020-08-07"},{"lineNumber":32,"author":{"gitId":"-"},"content":" afterEvaluate {","lastModifiedDate":"2020-08-07"},{"lineNumber":33,"author":{"gitId":"-"},"content":" classDirectories.from files(classDirectories.files.collect {","lastModifiedDate":"2020-08-07"},{"lineNumber":34,"author":{"gitId":"-"},"content":" fileTree(dir: it, exclude: [\u0027**/*.jar\u0027])","lastModifiedDate":"2020-08-07"},{"lineNumber":35,"author":{"gitId":"-"},"content":" })","lastModifiedDate":"2020-08-07"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07"},{"lineNumber":37,"author":{"gitId":"-"},"content":" reports {","lastModifiedDate":"2020-08-07"},{"lineNumber":38,"author":{"gitId":"-"},"content":" html.required \u003d true","lastModifiedDate":"2022-06-17"},{"lineNumber":39,"author":{"gitId":"-"},"content":" xml.required \u003d true","lastModifiedDate":"2022-06-17"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07"},{"lineNumber":41,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-03-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" String jUnitVersion \u003d \u00275.4.0\u0027","lastModifiedDate":"2019-02-10"},{"lineNumber":45,"author":{"gitId":"-"},"content":" String javaFxVersion \u003d \u002717.0.7\u0027","lastModifiedDate":"2023-07-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":48,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":" implementation group: \u0027com.fasterxml.jackson.core\u0027, name: \u0027jackson-databind\u0027, version: \u00272.7.0\u0027","lastModifiedDate":"2018-03-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":" implementation group: \u0027com.fasterxml.jackson.datatype\u0027, name: \u0027jackson-datatype-jsr310\u0027, version: \u00272.7.4\u0027","lastModifiedDate":"2018-03-29"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-29"},{"lineNumber":68,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2016-08-29"},{"lineNumber":69,"author":{"gitId":"chaaaaun"},"content":" archiveFileName \u003d \u0027elderscrolls.jar\u0027","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":"defaultTasks \u0027clean\u0027, \u0027test\u0027","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"chaaaaun":2,"-":70}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: About Us","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"We are a team based in the [School of Computing, National University of Singapore](http://www.comp.nus.edu.sg).","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"You can reach us at the email `seer[at]comp.nus.edu.sg`","lastModifiedDate":"2020-06-17"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"chaaaaun"},"content":"### Tu Jia En","lastModifiedDate":"2024-03-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"chaaaaun"},"content":"\u003cimg src\u003d\"images/chaaaaun.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"chaaaaun"},"content":"[[github](https://github.com/chaaaaun)]","lastModifiedDate":"2024-03-03"},{"lineNumber":17,"author":{"gitId":"chaaaaun"},"content":"[[portfolio](team/chaaaaun.md)]","lastModifiedDate":"2024-03-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"chaaaaun"},"content":"* Role: Developer","lastModifiedDate":"2024-03-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"soons1"},"content":"### Soh Soon Wei","lastModifiedDate":"2024-03-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"soons1"},"content":"\u003cimg src\u003d\"images/soons1.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-03"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"soons1"},"content":"[[github](http://github.com/soons1)]","lastModifiedDate":"2024-03-03"},{"lineNumber":26,"author":{"gitId":"soons1"},"content":"[[portfolio](team/soons1.md)]","lastModifiedDate":"2024-03-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"soons1"},"content":"* Role: Developer","lastModifiedDate":"2024-03-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"* Responsibilities: UI","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"sdevih"},"content":"### S Devi Harshitha","lastModifiedDate":"2024-03-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"sdevih"},"content":"\u003cimg src\u003d\"images/sdevih.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"chaaaaun"},"content":"[[github](http://github.com/sdevih)]","lastModifiedDate":"2024-03-03"},{"lineNumber":36,"author":{"gitId":"chaaaaun"},"content":"[[portfolio](team/sdevih.md)]","lastModifiedDate":"2024-03-03"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"* Responsibilities: Data","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"CJerrong"},"content":"### Chong Jer Rong","lastModifiedDate":"2024-03-03"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"CJerrong"},"content":"\u003cimg src\u003d\"images/cjerrong.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-03"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"CJerrong"},"content":"[[github](http://github.com/CJerrong)]","lastModifiedDate":"2024-03-03"},{"lineNumber":46,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"gerteck"},"content":"### Chan Ger Teck","lastModifiedDate":"2024-03-03"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"gerteck"},"content":"\u003cimg src\u003d\"images/gerteck.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-03"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"gerteck"},"content":"[[github](https://github.com/gerteck)]","lastModifiedDate":"2024-03-03"},{"lineNumber":55,"author":{"gitId":"gerteck"},"content":"[[portfolio](team/gerteck.md)]","lastModifiedDate":"2024-03-03"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"soons1":5,"CJerrong":3,"gerteck":4,"chaaaaun":7,"-":36,"sdevih":2}},{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: Developer Guide","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"{:toc}","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":10,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":12,"author":{"gitId":"-"},"content":"* {list here sources of all reused/adapted ideas, code, documentation, and third-party libraries -- include links to the original source as well}","lastModifiedDate":"2021-07-30"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":14,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":":bulb: **Tip:** The `.puml` files used to create diagrams in this document `docs/diagrams` folder. Refer to the [_PlantUML Tutorial_ at se-edu/guides](https://se-education.org/guides/tutorials/plantUml.html) to learn how to create and edit diagrams.","lastModifiedDate":"2023-09-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureDiagram.png\" width\u003d\"280\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":"The ***Architecture Diagram*** given above explains the high-level design of the App.","lastModifiedDate":"2021-07-31"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"Given below is a quick overview of main components and how they interact with each other.","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"**`Main`** (consisting of classes [`Main`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/Main.java) and [`MainApp`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/MainApp.java)) is in charge of the app launch and shut down.","lastModifiedDate":"2023-09-03"},{"lineNumber":40,"author":{"gitId":"-"},"content":"* At app launch, it initializes the other components in the correct sequence, and connects them up with each other.","lastModifiedDate":"2023-09-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":"* At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2023-09-03"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"* [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"* [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"The *Sequence Diagram* below shows how the components interact with each other for the scenario where the user issues the command `delete 1`.","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureSequenceDiagram.png\" width\u003d\"574\" /\u003e","lastModifiedDate":"2020-06-07"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":60,"author":{"gitId":"-"},"content":"* defines its *API* in an `interface` with the same name as the Component.","lastModifiedDate":"2021-07-31"},{"lineNumber":61,"author":{"gitId":"-"},"content":"* implements its functionality using a concrete `{Component Name}Manager` class (which follows the corresponding API `interface` mentioned in the previous point.","lastModifiedDate":"2021-07-31"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":63,"author":{"gitId":"-"},"content":"For example, the `Logic` component defines its API in the `Logic.java` interface and implements its functionality using the `LogicManager.java` class which follows the `Logic` interface. Other components interact with a given component through its interface rather than the concrete class (reason: to prevent outside component\u0027s being coupled to the implementation of a component), as illustrated in the (partial) class diagram below.","lastModifiedDate":"2021-07-31"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":65,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ComponentManagers.png\" width\u003d\"300\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":67,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"The **API** of this component is specified in [`Ui.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/Ui.java)","lastModifiedDate":"2021-07-31"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"![Structure of the UI Component](images/UiClassDiagram.png)","lastModifiedDate":"2021-07-31"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"The UI consists of a `MainWindow` that is made up of parts e.g.`CommandBox`, `ResultDisplay`, `PersonListPanel`, `StatusBarFooter` etc. All these, including the `MainWindow`, inherit from the abstract `UiPart` class which captures the commonalities between classes that represent parts of the visible GUI.","lastModifiedDate":"2021-07-31"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":"The `UI` component uses the JavaFx UI framework. The layout of these UI parts are defined in matching `.fxml` files that are in the `src/main/resources/view` folder. For example, the layout of the [`MainWindow`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/MainWindow.java) is specified in [`MainWindow.fxml`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/resources/view/MainWindow.fxml)","lastModifiedDate":"2021-07-31"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"* executes user commands using the `Logic` component.","lastModifiedDate":"2021-07-31"},{"lineNumber":82,"author":{"gitId":"-"},"content":"* listens for changes to `Model` data so that the UI can be updated with the modified data.","lastModifiedDate":"2021-07-31"},{"lineNumber":83,"author":{"gitId":"-"},"content":"* keeps a reference to the `Logic` component, because the `UI` relies on the `Logic` to execute commands.","lastModifiedDate":"2021-07-31"},{"lineNumber":84,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component, as it displays `Person` object residing in the `Model`.","lastModifiedDate":"2021-07-31"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"**API** : [`Logic.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/logic/Logic.java)","lastModifiedDate":"2021-07-31"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/LogicClassDiagram.png\" width\u003d\"550\"/\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":"The sequence diagram below illustrates the interactions within the `Logic` component, taking `execute(\"delete 1\")` API call as an example.","lastModifiedDate":"2023-09-03"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"![Interactions Inside the Logic Component for the `delete 1` Command](images/DeleteSequenceDiagram.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** The lifeline for `DeleteCommandParser` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline continues till the end of diagram.","lastModifiedDate":"2024-02-09"},{"lineNumber":99,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":103,"author":{"gitId":"-"},"content":"1. When `Logic` is called upon to execute a command, it is passed to an `AddressBookParser` object which in turn creates a parser that matches the command (e.g., `DeleteCommandParser`) and uses it to parse the command.","lastModifiedDate":"2023-09-03"},{"lineNumber":104,"author":{"gitId":"-"},"content":"1. This results in a `Command` object (more precisely, an object of one of its subclasses e.g., `DeleteCommand`) which is executed by the `LogicManager`.","lastModifiedDate":"2023-09-03"},{"lineNumber":105,"author":{"gitId":"-"},"content":"1. The command can communicate with the `Model` when it is executed (e.g. to delete a person).\u003cbr\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":106,"author":{"gitId":"-"},"content":" Note that although this is shown as a single step in the diagram above (for simplicity), in the code it can take several interactions (between the command object and the `Model`) to achieve.","lastModifiedDate":"2024-02-09"},{"lineNumber":107,"author":{"gitId":"-"},"content":"1. The result of the command execution is encapsulated as a `CommandResult` object which is returned back from `Logic`.","lastModifiedDate":"2023-09-03"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":109,"author":{"gitId":"-"},"content":"Here are the other classes in `Logic` (omitted from the class diagram above) that are used for parsing a user command:","lastModifiedDate":"2021-07-31"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":111,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ParserClasses.png\" width\u003d\"600\"/\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31"},{"lineNumber":114,"author":{"gitId":"-"},"content":"* When called upon to parse a user command, the `AddressBookParser` class creates an `XYZCommandParser` (`XYZ` is a placeholder for the specific command name e.g., `AddCommandParser`) which uses the other classes shown above to parse the user command and create a `XYZCommand` object (e.g., `AddCommand`) which the `AddressBookParser` returns back as a `Command` object.","lastModifiedDate":"2021-07-31"},{"lineNumber":115,"author":{"gitId":"-"},"content":"* All `XYZCommandParser` classes (e.g., `AddCommandParser`, `DeleteCommandParser`, ...) inherit from the `Parser` interface so that they can be treated similarly where possible e.g, during testing.","lastModifiedDate":"2021-07-31"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31"},{"lineNumber":118,"author":{"gitId":"-"},"content":"**API** : [`Model.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/model/Model.java)","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":"* stores the address book data i.e., all `Person` objects (which are contained in a `UniquePersonList` object).","lastModifiedDate":"2021-07-31"},{"lineNumber":126,"author":{"gitId":"-"},"content":"* stores the currently \u0027selected\u0027 `Person` objects (e.g., results of a search query) as a separate _filtered_ list which is exposed to outsiders as an unmodifiable `ObservableList\u003cPerson\u003e` that can be \u0027observed\u0027 e.g. the UI can be bound to this list so that the UI automatically updates when the data in the list change.","lastModifiedDate":"2021-07-31"},{"lineNumber":127,"author":{"gitId":"-"},"content":"* stores a `UserPref` object that represents the user’s preferences. This is exposed to the outside as a `ReadOnlyUserPref` objects.","lastModifiedDate":"2021-07-31"},{"lineNumber":128,"author":{"gitId":"-"},"content":"* does not depend on any of the other three components (as the `Model` represents data entities of the domain, they should make sense on their own without depending on other components)","lastModifiedDate":"2021-07-31"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":130,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** An alternative (arguably, a more OOP) model is given below. It has a `Tag` list in the `AddressBook`, which `Person` references. This allows `AddressBook` to only require one `Tag` object per unique tag, instead of each `Person` needing their own `Tag` objects.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":132,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/BetterModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"**API** : [`Storage.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/storage/Storage.java)","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/StorageClassDiagram.png\" width\u003d\"550\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":143,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"* can save both address book data and user preference data in JSON format, and read them back into corresponding objects.","lastModifiedDate":"2023-09-03"},{"lineNumber":145,"author":{"gitId":"-"},"content":"* inherits from both `AddressBookStorage` and `UserPrefStorage`, which means it can be treated as either one (if only the functionality of only one is needed).","lastModifiedDate":"2021-07-31"},{"lineNumber":146,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component (because the `Storage` component\u0027s job is to save/retrieve objects that belong to the `Model`)","lastModifiedDate":"2021-07-21"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.addressbook.commons` package.","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":"The proposed undo/redo mechanism is facilitated by `VersionedAddressBook`. It extends `AddressBook` with an undo/redo history, stored internally as an `addressBookStateList` and `currentStatePointer`. Additionally, it implements the following operations:","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":"These operations are exposed in the `Model` interface as `Model#commitAddressBook()`, `Model#undoAddressBook()` and `Model#redoAddressBook()` respectively.","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"Given below is an example usage scenario and how the undo/redo mechanism behaves at each step.","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":"Step 1. The user launches the application for the first time. The `VersionedAddressBook` will be initialized with the initial address book state, and the `currentStatePointer` pointing to that single address book state.","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":"![UndoRedoState0](images/UndoRedoState0.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":"Step 2. The user executes `delete 5` command to delete the 5th person in the address book. The `delete` command calls `Model#commitAddressBook()`, causing the modified state of the address book after the `delete 5` command executes to be saved in the `addressBookStateList`, and the `currentStatePointer` is shifted to the newly inserted address book state.","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":"![UndoRedoState1](images/UndoRedoState1.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":"Step 3. The user executes `add n/David …​` to add a new person. The `add` command also calls `Model#commitAddressBook()`, causing another modified address book state to be saved into the `addressBookStateList`.","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":"![UndoRedoState2](images/UndoRedoState2.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If a command fails its execution, it will not call `Model#commitAddressBook()`, so the address book state will not be saved into the `addressBookStateList`.","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":"Step 4. The user now decides that adding the person was a mistake, and decides to undo that action by executing the `undo` command. The `undo` command will call `Model#undoAddressBook()`, which will shift the `currentStatePointer` once to the left, pointing it to the previous address book state, and restores the address book to that state.","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":190,"author":{"gitId":"-"},"content":"![UndoRedoState3](images/UndoRedoState3.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":192,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If the `currentStatePointer` is at index 0, pointing to the initial AddressBook state, then there are no previous AddressBook states to restore. The `undo` command uses `Model#canUndoAddressBook()` to check if this is the case. If so, it will return an error to the user rather","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-Logic.png)","lastModifiedDate":"2024-02-09"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":201,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** The lifeline for `UndoCommand` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":207,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-Model.png)","lastModifiedDate":"2024-02-09"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":209,"author":{"gitId":"-"},"content":"The `redo` command does the opposite — it calls `Model#redoAddressBook()`, which shifts the `currentStatePointer` once to the right, pointing to the previously undone state, and restores the address book to that state.","lastModifiedDate":"2020-05-23"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If the `currentStatePointer` is at index `addressBookStateList.size() - 1`, pointing to the latest address book state, then there are no undone AddressBook states to restore. The `redo` command uses `Model#canRedoAddressBook()` to check if this is the case. If so, it will return an error to the user rather than attempting to perform the redo.","lastModifiedDate":"2020-05-23"},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":213,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":"Step 5. The user then decides to execute the command `list`. Commands that do not modify the address book, such as `list`, will usually not call `Model#commitAddressBook()`, `Model#undoAddressBook()` or `Model#redoAddressBook()`. Thus, the `addressBookStateList` remains unchanged.","lastModifiedDate":"2020-05-23"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":217,"author":{"gitId":"-"},"content":"![UndoRedoState4](images/UndoRedoState4.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":219,"author":{"gitId":"-"},"content":"Step 6. The user executes `clear`, which calls `Model#commitAddressBook()`. Since the `currentStatePointer` is not pointing at the end of the `addressBookStateList`, all address book states after the `currentStatePointer` will be purged. Reason: It no longer makes sense to redo the `add n/David …​` command. This is the behavior that most modern desktop applications follow.","lastModifiedDate":"2020-05-23"},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":221,"author":{"gitId":"-"},"content":"![UndoRedoState5](images/UndoRedoState5.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":223,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/CommitActivityDiagram.png\" width\u003d\"250\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31"},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":247,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":248,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":249,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07"},{"lineNumber":250,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":252,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":253,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":254,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":255,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":256,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":257,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":259,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23"},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23"},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":265,"author":{"gitId":"chaaaaun"},"content":"* is a manager of a befriending volunteer organisation","lastModifiedDate":"2024-03-03"},{"lineNumber":266,"author":{"gitId":"chaaaaun"},"content":"* has a need to keep track of many befriendees/elderly of the volunteer programme","lastModifiedDate":"2024-03-03"},{"lineNumber":267,"author":{"gitId":"chaaaaun"},"content":"* has a need to keep track of volunteers in the organisation","lastModifiedDate":"2024-03-03"},{"lineNumber":268,"author":{"gitId":"-"},"content":"* prefer desktop apps over other types","lastModifiedDate":"2020-05-23"},{"lineNumber":269,"author":{"gitId":"-"},"content":"* can type fast","lastModifiedDate":"2020-05-23"},{"lineNumber":270,"author":{"gitId":"-"},"content":"* prefers typing to mouse interactions","lastModifiedDate":"2020-05-26"},{"lineNumber":271,"author":{"gitId":"-"},"content":"* is reasonably comfortable using CLI apps","lastModifiedDate":"2020-05-23"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":273,"author":{"gitId":"chaaaaun"},"content":"**Value proposition**: manage the volunteer organisation faster than a typical mouse/GUI driven app","lastModifiedDate":"2024-03-03"},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":275,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":276,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07"},{"lineNumber":277,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":278,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23"},{"lineNumber":279,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":280,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23"},{"lineNumber":281,"author":{"gitId":"gerteck"},"content":"|-----|-----------|----------------------------------------------------------------------------------------|---------------------------------------------------------------|","lastModifiedDate":"2024-03-04"},{"lineNumber":282,"author":{"gitId":"soons1"},"content":"| `* * *` | manager | add volunteers’ and elderly befriendees’ contacts | |","lastModifiedDate":"2024-03-03"},{"lineNumber":283,"author":{"gitId":"soons1"},"content":"| `* * *` | manager | edit volunteers’ and elderly befriendees’ details | |","lastModifiedDate":"2024-03-03"},{"lineNumber":284,"author":{"gitId":"soons1"},"content":"| `* * *` | manager | delete volunteer and elderly befriendee contacts | |","lastModifiedDate":"2024-03-03"},{"lineNumber":285,"author":{"gitId":"gerteck"},"content":"| `* * *` | manager | view list of volunteers and elderly befriendees | keep track of the roster |","lastModifiedDate":"2024-03-04"},{"lineNumber":286,"author":{"gitId":"soons1"},"content":"| `* * *` | manager | tag elderly befriendees with relevant details | accommodate for any special circumstances |","lastModifiedDate":"2024-03-03"},{"lineNumber":287,"author":{"gitId":"soons1"},"content":"| `* * *` | manager | pair volunteers with befriendee contacts | assign the pairings |","lastModifiedDate":"2024-03-03"},{"lineNumber":288,"author":{"gitId":"gerteck"},"content":"| `* * *` | manager | view details of elderly befriendee | know the address and case details |","lastModifiedDate":"2024-03-04"},{"lineNumber":289,"author":{"gitId":"gerteck"},"content":"| `* * *` | manager | view details of volunteer befriender | know the details of the volunteer |","lastModifiedDate":"2024-03-04"},{"lineNumber":290,"author":{"gitId":"soons1"},"content":"| `* *` | first-time user | access a help page | refer to the features that come along with the application |","lastModifiedDate":"2024-03-03"},{"lineNumber":291,"author":{"gitId":"soons1"},"content":"| `* *` | manager | have a one-stop view of all the important information about the elderly and volunteers | contact each person easily |","lastModifiedDate":"2024-03-03"},{"lineNumber":292,"author":{"gitId":"soons1"},"content":"| `* *` | manager | see a timetable with meeting details | quickly see the planned meeting sessions |","lastModifiedDate":"2024-03-03"},{"lineNumber":293,"author":{"gitId":"soons1"},"content":"| `* *` | manager | search for specific contact based on keywords | quickly see contact details of specific people |","lastModifiedDate":"2024-03-03"},{"lineNumber":294,"author":{"gitId":"gerteck"},"content":"| `* *` | manager | add details directly to pairings | add information specific to pairings |","lastModifiedDate":"2024-03-04"},{"lineNumber":295,"author":{"gitId":"gerteck"},"content":"| `* *` | manager | search for specific contact based on keywords | quickly see contact details of specific people |","lastModifiedDate":"2024-03-04"},{"lineNumber":296,"author":{"gitId":"soons1"},"content":"| `*` | first-time user | see sample befriendee and volunteer profiles | try out the features with pre-loaded data |","lastModifiedDate":"2024-03-03"},{"lineNumber":297,"author":{"gitId":"soons1"},"content":"| `*` | first-time user | follow a guided tour | be aware of how to use and access features in the application |","lastModifiedDate":"2024-03-03"},{"lineNumber":298,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":299,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":300,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":301,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07"},{"lineNumber":302,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":303,"author":{"gitId":"sdevih"},"content":"(For all use cases below, the **System** is the `Elder Scrolls` and the **Actor** is the","lastModifiedDate":"2024-03-15"},{"lineNumber":304,"author":{"gitId":"sdevih"},"content":"`volunteer organisation manager`, unless specified otherwise)","lastModifiedDate":"2024-03-15"},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":306,"author":{"gitId":"sdevih"},"content":"**Use case: UC01 - Add a contact**","lastModifiedDate":"2024-03-15"},{"lineNumber":307,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":308,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23"},{"lineNumber":309,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":310,"author":{"gitId":"CJerrong"},"content":"1. User requests to add contact, entering contact information","lastModifiedDate":"2024-03-03"},{"lineNumber":311,"author":{"gitId":"CJerrong"},"content":"2. Elder Scrolls adds the contact","lastModifiedDate":"2024-03-03"},{"lineNumber":312,"author":{"gitId":"CJerrong"},"content":"3. Elder Scrolls displays the details of the contact added","lastModifiedDate":"2024-03-03"},{"lineNumber":313,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":314,"author":{"gitId":"CJerrong"},"content":" Use case ends.","lastModifiedDate":"2024-03-03"},{"lineNumber":315,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":316,"author":{"gitId":"CJerrong"},"content":"**Extensions**","lastModifiedDate":"2024-03-03"},{"lineNumber":317,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":318,"author":{"gitId":"CJerrong"},"content":"* 2a. The given contact details are invalid.","lastModifiedDate":"2024-03-03"},{"lineNumber":319,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":320,"author":{"gitId":"CJerrong"},"content":" * 2a1. Elder Scrolls shows an error message.","lastModifiedDate":"2024-03-03"},{"lineNumber":321,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":322,"author":{"gitId":"CJerrong"},"content":" Use case ends.","lastModifiedDate":"2024-03-03"},{"lineNumber":323,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":324,"author":{"gitId":"CJerrong"},"content":"* 3a. The given contact details are already in the contact book","lastModifiedDate":"2024-03-03"},{"lineNumber":325,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":326,"author":{"gitId":"CJerrong"},"content":" * 3a1. Elder scrolls shows an error message.","lastModifiedDate":"2024-03-03"},{"lineNumber":327,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":328,"author":{"gitId":"CJerrong"},"content":" Use case ends.","lastModifiedDate":"2024-03-03"},{"lineNumber":329,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":330,"author":{"gitId":"sdevih"},"content":"**Use case: UC02 - Delete a contact**","lastModifiedDate":"2024-03-15"},{"lineNumber":331,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":332,"author":{"gitId":"CJerrong"},"content":"**MSS**","lastModifiedDate":"2024-03-03"},{"lineNumber":333,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":334,"author":{"gitId":"CJerrong"},"content":"1. User requests to list all contacts","lastModifiedDate":"2024-03-03"},{"lineNumber":335,"author":{"gitId":"CJerrong"},"content":"2. Elder Scrolls shows a list of all contacts","lastModifiedDate":"2024-03-03"},{"lineNumber":336,"author":{"gitId":"CJerrong"},"content":"3. User requests to delete a specific contact using its unique ID (UID)","lastModifiedDate":"2024-03-03"},{"lineNumber":337,"author":{"gitId":"CJerrong"},"content":"4. Elder Scrolls deletes the contact based on its UID","lastModifiedDate":"2024-03-03"},{"lineNumber":338,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":339,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":340,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":341,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23"},{"lineNumber":342,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":343,"author":{"gitId":"-"},"content":"* 2a. The list is empty.","lastModifiedDate":"2020-05-23"},{"lineNumber":344,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":345,"author":{"gitId":"CJerrong"},"content":" * 2a1. Elder Scrolls shows an error message.","lastModifiedDate":"2024-03-03"},{"lineNumber":346,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":347,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":348,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":349,"author":{"gitId":"CJerrong"},"content":"* 3a. The given UID is invalid.","lastModifiedDate":"2024-03-03"},{"lineNumber":350,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":351,"author":{"gitId":"CJerrong"},"content":" * 3a1. Elder Scrolls shows an error message.","lastModifiedDate":"2024-03-03"},{"lineNumber":352,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":353,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2020-05-23"},{"lineNumber":354,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":355,"author":{"gitId":"CJerrong"},"content":"* 4a. The contact requested to be deleted is still paired.","lastModifiedDate":"2024-03-03"},{"lineNumber":356,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":357,"author":{"gitId":"CJerrong"},"content":" * 4a1. Elder Scrolls shows an error message.","lastModifiedDate":"2024-03-03"},{"lineNumber":358,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":359,"author":{"gitId":"CJerrong"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-03"},{"lineNumber":360,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":361,"author":{"gitId":"sdevih"},"content":"**Use case: UC03 - List all contacts**","lastModifiedDate":"2024-03-15"},{"lineNumber":362,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":363,"author":{"gitId":"CJerrong"},"content":"**MSS**","lastModifiedDate":"2024-03-03"},{"lineNumber":364,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":365,"author":{"gitId":"CJerrong"},"content":"1. User requests to list all contacts","lastModifiedDate":"2024-03-03"},{"lineNumber":366,"author":{"gitId":"CJerrong"},"content":"2. Elder Scrolls shows a list of all contacts","lastModifiedDate":"2024-03-03"},{"lineNumber":367,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":368,"author":{"gitId":"CJerrong"},"content":" Use case ends.","lastModifiedDate":"2024-03-03"},{"lineNumber":369,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":370,"author":{"gitId":"CJerrong"},"content":"**Extensions**","lastModifiedDate":"2024-03-03"},{"lineNumber":371,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":372,"author":{"gitId":"CJerrong"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-03-03"},{"lineNumber":373,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":374,"author":{"gitId":"CJerrong"},"content":" * 2a1. Elder Scrolls shows an error message.","lastModifiedDate":"2024-03-03"},{"lineNumber":375,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":376,"author":{"gitId":"CJerrong"},"content":" Use case ends.","lastModifiedDate":"2024-03-03"},{"lineNumber":377,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":378,"author":{"gitId":"sdevih"},"content":"**Use case: UC04 - List all volunteer contacts**","lastModifiedDate":"2024-03-15"},{"lineNumber":379,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":380,"author":{"gitId":"CJerrong"},"content":"**MSS**","lastModifiedDate":"2024-03-03"},{"lineNumber":381,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":382,"author":{"gitId":"CJerrong"},"content":"1. User requests to list all volunteer contacts","lastModifiedDate":"2024-03-03"},{"lineNumber":383,"author":{"gitId":"CJerrong"},"content":"2. Elder Scrolls shows a list of all volunteer contacts","lastModifiedDate":"2024-03-03"},{"lineNumber":384,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":385,"author":{"gitId":"CJerrong"},"content":" Use case ends.","lastModifiedDate":"2024-03-03"},{"lineNumber":386,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":387,"author":{"gitId":"CJerrong"},"content":"**Extensions**","lastModifiedDate":"2024-03-03"},{"lineNumber":388,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":389,"author":{"gitId":"CJerrong"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-03-03"},{"lineNumber":390,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":391,"author":{"gitId":"CJerrong"},"content":" * 2a1. Elder Scrolls shows an error message.","lastModifiedDate":"2024-03-03"},{"lineNumber":392,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":393,"author":{"gitId":"CJerrong"},"content":" Use case ends.","lastModifiedDate":"2024-03-03"},{"lineNumber":394,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":395,"author":{"gitId":"CJerrong"},"content":"* 3a. The incorrect filtering parameter used, ie. \u0027vol\u0027 not used","lastModifiedDate":"2024-03-03"},{"lineNumber":396,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":397,"author":{"gitId":"CJerrong"},"content":" * 3a1. Elder Scrolls shows an error message.","lastModifiedDate":"2024-03-03"},{"lineNumber":398,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":399,"author":{"gitId":"CJerrong"},"content":" Use case ends.","lastModifiedDate":"2024-03-03"},{"lineNumber":400,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":401,"author":{"gitId":"sdevih"},"content":"**Use case: UC05 - List all befriendee contacts**","lastModifiedDate":"2024-03-15"},{"lineNumber":402,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":403,"author":{"gitId":"CJerrong"},"content":"**MSS**","lastModifiedDate":"2024-03-03"},{"lineNumber":404,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":405,"author":{"gitId":"CJerrong"},"content":"1. User requests to list all befriendee contacts","lastModifiedDate":"2024-03-03"},{"lineNumber":406,"author":{"gitId":"CJerrong"},"content":"2. Elder Scrolls shows a list of all befriendee contacts","lastModifiedDate":"2024-03-03"},{"lineNumber":407,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":408,"author":{"gitId":"CJerrong"},"content":" Use case ends.","lastModifiedDate":"2024-03-03"},{"lineNumber":409,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":410,"author":{"gitId":"CJerrong"},"content":"**Extensions**","lastModifiedDate":"2024-03-03"},{"lineNumber":411,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":412,"author":{"gitId":"CJerrong"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-03-03"},{"lineNumber":413,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":414,"author":{"gitId":"CJerrong"},"content":" * 2a1. Elder Scrolls shows an error message.","lastModifiedDate":"2024-03-03"},{"lineNumber":415,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":416,"author":{"gitId":"CJerrong"},"content":" Use case ends.","lastModifiedDate":"2024-03-03"},{"lineNumber":417,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":418,"author":{"gitId":"CJerrong"},"content":"* 3a. The incorrect filtering parameter used, ie. \u0027bef\u0027 is not used","lastModifiedDate":"2024-03-03"},{"lineNumber":419,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":420,"author":{"gitId":"CJerrong"},"content":" * 3a1. Elder Scrolls shows an error message.","lastModifiedDate":"2024-03-03"},{"lineNumber":421,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":422,"author":{"gitId":"CJerrong"},"content":" Use case ends.","lastModifiedDate":"2024-03-03"},{"lineNumber":423,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":424,"author":{"gitId":"sdevih"},"content":"**Use case: UC06 - Pair a volunteer and befriendee**","lastModifiedDate":"2024-03-15"},{"lineNumber":425,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":426,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23"},{"lineNumber":427,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":428,"author":{"gitId":"sdevih"},"content":"1. User \u003cu\u003erequests to list all contacts (UC03)\u003c/u\u003e.","lastModifiedDate":"2024-03-15"},{"lineNumber":429,"author":{"gitId":"sdevih"},"content":"2. Elder Scrolls shows a list of contacts.","lastModifiedDate":"2024-03-15"},{"lineNumber":430,"author":{"gitId":"sdevih"},"content":"3. User requests to pair a specific volunteer and befriendee in the list.","lastModifiedDate":"2024-03-03"},{"lineNumber":431,"author":{"gitId":"sdevih"},"content":"4. Elder Scrolls pairs the specified volunteer and befriendee.","lastModifiedDate":"2024-03-03"},{"lineNumber":432,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":433,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":434,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":435,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23"},{"lineNumber":436,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":437,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":438,"author":{"gitId":"sdevih"},"content":"* 3a. The given UID is invalid.","lastModifiedDate":"2024-03-03"},{"lineNumber":439,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":440,"author":{"gitId":"sdevih"},"content":" * 3a1. Elder Scrolls shows an error message indicating that the given UID is invalid.","lastModifiedDate":"2024-03-15"},{"lineNumber":441,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":442,"author":{"gitId":"sdevih"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-03"},{"lineNumber":443,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":444,"author":{"gitId":"sdevih"},"content":"* 3b. The given UIDs are both volunteers or both befriendees.","lastModifiedDate":"2024-03-03"},{"lineNumber":445,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":446,"author":{"gitId":"sdevih"},"content":" * 3b1. Elder Scrolls shows an error message indicating that the given UIDs are not of different types.","lastModifiedDate":"2024-03-15"},{"lineNumber":447,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":448,"author":{"gitId":"sdevih"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-03"},{"lineNumber":449,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":450,"author":{"gitId":"sdevih"},"content":"* 3b. One or both given UIDs are already paired.","lastModifiedDate":"2024-03-15"},{"lineNumber":451,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":452,"author":{"gitId":"sdevih"},"content":" * 3b1. Elder Scrolls shows an error message indicating that the given UID(s) are already paired.","lastModifiedDate":"2024-03-15"},{"lineNumber":453,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":454,"author":{"gitId":"sdevih"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-15"},{"lineNumber":455,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":456,"author":{"gitId":"sdevih"},"content":"**Use case: UC07 - Tag contacts**","lastModifiedDate":"2024-03-15"},{"lineNumber":457,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":458,"author":{"gitId":"sdevih"},"content":"**MSS**","lastModifiedDate":"2024-03-03"},{"lineNumber":459,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":460,"author":{"gitId":"sdevih"},"content":"1. User \u003cu\u003erequests to list all contacts (UC03)\u003c/u\u003e.","lastModifiedDate":"2024-03-15"},{"lineNumber":461,"author":{"gitId":"sdevih"},"content":"2. Elder Scrolls shows a list of contacts.","lastModifiedDate":"2024-03-15"},{"lineNumber":462,"author":{"gitId":"sdevih"},"content":"3. User requests to tag a specific person with a property.","lastModifiedDate":"2024-03-03"},{"lineNumber":463,"author":{"gitId":"sdevih"},"content":"4. Elder Scrolls tags the specified person in the list with that specified property.","lastModifiedDate":"2024-03-03"},{"lineNumber":464,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":465,"author":{"gitId":"sdevih"},"content":" Use case ends.","lastModifiedDate":"2024-03-03"},{"lineNumber":466,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":467,"author":{"gitId":"sdevih"},"content":"**Extensions**","lastModifiedDate":"2024-03-03"},{"lineNumber":468,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":469,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":470,"author":{"gitId":"sdevih"},"content":"* 3a. The given UID is invalid.","lastModifiedDate":"2024-03-03"},{"lineNumber":471,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":472,"author":{"gitId":"sdevih"},"content":" * 3a1. Elder Scrolls shows an error message.","lastModifiedDate":"2024-03-03"},{"lineNumber":473,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":474,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2020-05-23"},{"lineNumber":475,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":476,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2024-03-03"},{"lineNumber":477,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23"},{"lineNumber":478,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":479,"author":{"gitId":"-"},"content":"1. Should work on any _mainstream OS_ as long as it has Java `11` or above installed.","lastModifiedDate":"2020-05-23"},{"lineNumber":480,"author":{"gitId":"-"},"content":"2. Should be able to hold up to 1000 persons without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":481,"author":{"gitId":"-"},"content":"3. A user with above average typing speed for regular English text (i.e. not code, not system admin commands) should be able to accomplish most of the tasks faster using commands than using the mouse.","lastModifiedDate":"2020-05-23"},{"lineNumber":482,"author":{"gitId":"chaaaaun"},"content":"4. Should have a simple menu structure with clear labels, guiding users to key actions without extensive tutorials.","lastModifiedDate":"2024-03-03"},{"lineNumber":483,"author":{"gitId":"soons1"},"content":"5. Should have graceful error handling with clear human-readable messages to the user to guide them in fixing their command.","lastModifiedDate":"2024-03-15"},{"lineNumber":484,"author":{"gitId":"chaaaaun"},"content":"6. Ability to filter contacts based on relevant criteria (location, demographics, skills, availability) to aid in pairing.","lastModifiedDate":"2024-03-03"},{"lineNumber":485,"author":{"gitId":"chaaaaun"},"content":"7. Should have a robust data storage mechanism that can handle data corruption and large data sets.","lastModifiedDate":"2024-03-03"},{"lineNumber":486,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":487,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23"},{"lineNumber":488,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":489,"author":{"gitId":"soons1"},"content":"* **Befriendee**: Elderly person seeking companionship","lastModifiedDate":"2024-03-03"},{"lineNumber":490,"author":{"gitId":"soons1"},"content":"* **Befriending Volunteer Organisations**: An organisation that aims to provide companionship to seniors by pairing them with volunteers","lastModifiedDate":"2024-03-03"},{"lineNumber":491,"author":{"gitId":"soons1"},"content":"* **Pairing**: Assigning of a volunteer to a befriendee and a befriendee to a volunteer (one-to-one)) so that they become a pair","lastModifiedDate":"2024-03-15"},{"lineNumber":492,"author":{"gitId":"soons1"},"content":"* **Tagging**: Adding an arbitrary detail(s) to a volunteer or befriendee profile to aid in identifying special conditions","lastModifiedDate":"2024-03-15"},{"lineNumber":493,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":494,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":495,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":496,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23"},{"lineNumber":497,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":498,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":499,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":500,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2020-05-23"},{"lineNumber":501,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":502,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":503,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":504,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":505,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":506,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":507,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":508,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":509,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23"},{"lineNumber":510,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":511,"author":{"gitId":"-"},"content":" 1. Double-click the jar file Expected: Shows the GUI with a set of sample contacts. The window size may not be optimum.","lastModifiedDate":"2020-05-23"},{"lineNumber":512,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":513,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23"},{"lineNumber":514,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":515,"author":{"gitId":"-"},"content":" 1. Resize the window to an optimum size. Move the window to a different location. Close the window.","lastModifiedDate":"2020-05-23"},{"lineNumber":516,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":517,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":518,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23"},{"lineNumber":519,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":520,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":521,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":522,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23"},{"lineNumber":523,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":524,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23"},{"lineNumber":525,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":526,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23"},{"lineNumber":527,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":528,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":529,"author":{"gitId":"-"},"content":" Expected: First contact is deleted from the list. Details of the deleted contact shown in the status message. Timestamp in the status bar is updated.","lastModifiedDate":"2020-05-23"},{"lineNumber":530,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":531,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":532,"author":{"gitId":"-"},"content":" Expected: No person is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2020-05-23"},{"lineNumber":533,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":534,"author":{"gitId":"-"},"content":" 1. Other incorrect delete commands to try: `delete`, `delete x`, `...` (where x is larger than the list size)\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":535,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":536,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":537,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":538,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":539,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":540,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":541,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":542,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":543,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23"},{"lineNumber":544,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":545,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"soons1":16,"CJerrong":93,"gerteck":6,"chaaaaun":7,"-":377,"sdevih":46}},{"path":"docs/SettingUp.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: Setting up and getting started","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"{:toc}","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"## Setting up the project in your computer","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-warning\"\u003e:exclamation: **Caution:**","lastModifiedDate":"2020-06-07"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"Follow the steps in the following guide precisely. Things will not work out if you deviate in some steps.","lastModifiedDate":"2020-06-07"},{"lineNumber":17,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"First, **fork** this repo, and **clone** the fork into your computer.","lastModifiedDate":"2020-06-07"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-07"},{"lineNumber":21,"author":{"gitId":"-"},"content":"If you plan to use Intellij IDEA (highly recommended):","lastModifiedDate":"2020-06-07"},{"lineNumber":22,"author":{"gitId":"-"},"content":"1. **Configure the JDK**: Follow the guide [_[se-edu/guides] IDEA: Configuring the JDK_](https://se-education.org/guides/tutorials/intellijJdk.html) to to ensure Intellij is configured to use **JDK 11**.","lastModifiedDate":"2020-06-07"},{"lineNumber":23,"author":{"gitId":"-"},"content":"1. **Import the project as a Gradle project**: Follow the guide [_[se-edu/guides] IDEA: Importing a Gradle project_](https://se-education.org/guides/tutorials/intellijImportGradleProject.html) to import the project into IDEA.\u003cbr\u003e","lastModifiedDate":"2020-06-07"},{"lineNumber":24,"author":{"gitId":"-"},"content":" :exclamation: Note: Importing a Gradle project is slightly different from importing a normal Java project.","lastModifiedDate":"2020-06-07"},{"lineNumber":25,"author":{"gitId":"-"},"content":"1. **Verify the setup**:","lastModifiedDate":"2020-06-07"},{"lineNumber":26,"author":{"gitId":"chaaaaun"},"content":" 1. Run the `scrolls.elder.Main` and try a few commands.","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" 1. [Run the tests](Testing.md) to ensure they all pass.","lastModifiedDate":"2020-06-07"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-07"},{"lineNumber":29,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":"## Before writing code","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":"1. **Configure the coding style**","lastModifiedDate":"2020-06-07"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" If using IDEA, follow the guide [_[se-edu/guides] IDEA: Configuring the code style_](https://se-education.org/guides/tutorials/intellijCodeStyle.html) to set up IDEA\u0027s coding style to match ours.","lastModifiedDate":"2020-09-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e:bulb: **Tip:**","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" Optionally, you can follow the guide [_[se-edu/guides] Using Checkstyle_](https://se-education.org/guides/tutorials/checkstyle.html) to find how to use the CheckStyle within IDEA e.g., to report problems _as_ you write code.","lastModifiedDate":"2020-06-07"},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"1. **Set up CI**","lastModifiedDate":"2020-06-07"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" This project comes with a GitHub Actions config files (in `.github/workflows` folder). When GitHub detects those files, it will run the CI for your project automatically at each push to the `master` branch or to any PR. No set up required.","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"1. **Learn the design**","lastModifiedDate":"2020-06-07"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" When you are ready to start coding, we recommend that you get some sense of the overall design by reading about [AddressBook’s architecture](DeveloperGuide.md#architecture).","lastModifiedDate":"2020-06-07"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"1. **Do the tutorials**","lastModifiedDate":"2020-06-07"},{"lineNumber":51,"author":{"gitId":"-"},"content":" These tutorials will help you get acquainted with the codebase.","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * [Tracing code](tutorials/TracingCode.md)","lastModifiedDate":"2020-07-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * [Adding a new command](tutorials/AddRemark.md)","lastModifiedDate":"2020-07-29"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * [Removing fields](tutorials/RemovingFields.md)","lastModifiedDate":"2021-08-01"}],"authorContributionMap":{"chaaaaun":1,"-":54}},{"path":"docs/Testing.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: Testing guide","lastModifiedDate":"2020-06-07"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"{:toc}","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"## Running tests","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"There are two ways to run tests.","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"* **Method 1: Using IntelliJ JUnit test runner**","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * To run all tests, right-click on the `src/test/java` folder and choose `Run \u0027All Tests\u0027`","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * To run a subset of tests, you can right-click on a test package,","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":" test class, or a test and choose `Run \u0027ABC\u0027`","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"* **Method 2: Using Gradle**","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Open a console and run the command `gradlew clean test` (Mac/Linux: `./gradlew clean test`)","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-secondary\"\u003e:link: **Link**: Read [this Gradle Tutorial from the se-edu/guides](https://se-education.org/guides/tutorials/gradle.html) to learn more about using Gradle.","lastModifiedDate":"2020-06-07"},{"lineNumber":23,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":"## Types of tests","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"This project has three types of tests:","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":"1. *Unit tests* targeting the lowest level methods/classes.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":" e.g. `seedu.address.commons.StringUtilTest`","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":"1. *Integration tests* that are checking the integration of multiple code units (those code units are assumed to be working).\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"chaaaaun"},"content":" e.g. `storage.scrolls.elder.StorageManagerTest`","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":"1. Hybrids of unit and integration tests. These test are checking multiple code units as well as how the are connected together.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"chaaaaun"},"content":" e.g. `logic.scrolls.elder.LogicManagerTest`","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"chaaaaun":2,"-":34}},{"path":"docs/UserGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: User Guide","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"AddressBook Level 3 (AB3) is a **desktop app for managing contacts, optimized for use via a Command Line Interface** (CLI) while still having the benefits of a Graphical User Interface (GUI). If you can type fast, AB3 can get your contact management tasks done faster than traditional GUI apps.","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"{:toc}","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"## Quick start","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"1. Ensure you have Java `11` or above installed in your Computer.","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"1. Download the latest `addressbook.jar` from [here](https://github.com/se-edu/addressbook-level3/releases).","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"1. Copy the file to the folder you want to use as the _home folder_ for your AddressBook.","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"1. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar addressbook.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2023-01-01"},{"lineNumber":22,"author":{"gitId":"-"},"content":" A GUI similar to the below should appear in a few seconds. Note how the app contains some sample data.\u003cbr\u003e","lastModifiedDate":"2023-01-01"},{"lineNumber":23,"author":{"gitId":"-"},"content":" ![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"1. Type the command in the command box and press Enter to execute it. e.g. typing **`help`** and pressing Enter will open the help window.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":" Some example commands you can try:","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * `list` : Lists all contacts.","lastModifiedDate":"2023-01-01"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01` : Adds a contact named `John Doe` to the Address Book.","lastModifiedDate":"2023-01-01"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * `delete 3` : Deletes the 3rd contact shown in the current list.","lastModifiedDate":"2023-01-01"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * `clear` : Deletes all contacts.","lastModifiedDate":"2023-01-01"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * `exit` : Exits the app.","lastModifiedDate":"2023-01-01"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"1. Refer to the [Features](#features) below for details of each command.","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"block\" class\u003d\"alert alert-info\"\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"**:information_source: Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"* Words in `UPPER_CASE` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" e.g. in `add n/NAME`, `NAME` is a parameter which can be used as `add n/John Doe`.","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"* Items in square brackets are optional.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" e.g `n/NAME [t/TAG]` can be used as `n/John Doe t/friend` or as `n/John Doe`.","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"* Items with `…`​ after them can be used multiple times including zero times.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" e.g. `[t/TAG]…​` can be used as ` ` (i.e. 0 times), `t/friend`, `t/friend t/family` etc.","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"* Parameters can be in any order.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" e.g. if the command specifies `n/NAME p/PHONE_NUMBER`, `p/PHONE_NUMBER n/NAME` is also acceptable.","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"* Extraneous parameters for commands that do not take in parameters (such as `help`, `list`, `exit` and `clear`) will be ignored.\u003cbr\u003e","lastModifiedDate":"2021-02-03"},{"lineNumber":61,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2021-02-03"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03"},{"lineNumber":63,"author":{"gitId":"-"},"content":"* If you are using a PDF version of this document, be careful when copying and pasting commands that span multiple lines as space characters surrounding line-breaks may be omitted when copied over to the application.","lastModifiedDate":"2023-06-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"### Viewing help : `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"Shows a message explaning how to access the help page.","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"Format: `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"CJerrong"},"content":"### Adding a volunteer: `add`","lastModifiedDate":"2024-03-15"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"CJerrong"},"content":"Adds a volunteer to the address book.","lastModifiedDate":"2024-03-15"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"CJerrong"},"content":"Format: `add n/NAME r/ROLE p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]…​`","lastModifiedDate":"2024-03-15"},{"lineNumber":80,"author":{"gitId":"CJerrong"},"content":"Where `ROLE` must be `volunteer` to add volunteer.","lastModifiedDate":"2024-03-15"},{"lineNumber":81,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e:bulb: **Tip:**","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"A person can have any number of tags (including 0)","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"CJerrong"},"content":"* `add n/John Doe r/volunteer p/98765432 e/johnd@example.com a/John street, block 123, #01-01`","lastModifiedDate":"2024-03-15"},{"lineNumber":87,"author":{"gitId":"CJerrong"},"content":"* `add n/Betsy Crowe r/volunteer t/friend e/betsycrowe@example.com a/Newgate Prison p/1234567 t/criminal`","lastModifiedDate":"2024-03-15"},{"lineNumber":88,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":89,"author":{"gitId":"CJerrong"},"content":"### Adding a befriendee: `add`","lastModifiedDate":"2024-03-15"},{"lineNumber":90,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":91,"author":{"gitId":"CJerrong"},"content":"Adds a befriendee to the address book.","lastModifiedDate":"2024-03-15"},{"lineNumber":92,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":93,"author":{"gitId":"CJerrong"},"content":"Format: `add n/NAME r/ROLE p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]…​`","lastModifiedDate":"2024-03-15"},{"lineNumber":94,"author":{"gitId":"CJerrong"},"content":"Where `ROLE` must be `befriendee` to add befriendee.","lastModifiedDate":"2024-03-15"},{"lineNumber":95,"author":{"gitId":"CJerrong"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e:bulb: **Tip:**","lastModifiedDate":"2024-03-15"},{"lineNumber":96,"author":{"gitId":"CJerrong"},"content":"A person can have any number of tags (including 0)","lastModifiedDate":"2024-03-15"},{"lineNumber":97,"author":{"gitId":"CJerrong"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"CJerrong"},"content":"Examples:","lastModifiedDate":"2024-03-15"},{"lineNumber":100,"author":{"gitId":"CJerrong"},"content":"* `add n/John Doe r/befriendee p/98765432 e/johnd@example.com a/John street, block 123, #01-01`","lastModifiedDate":"2024-03-15"},{"lineNumber":101,"author":{"gitId":"CJerrong"},"content":"* `add n/Betsy Crowe r/befriendee t/friend e/betsycrowe@example.com a/Newgate Prison p/1234567 t/criminal`","lastModifiedDate":"2024-03-15"},{"lineNumber":102,"author":{"gitId":"-"},"content":"### Listing all persons : `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":"Shows a list of all persons in the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":"Format: `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":"### Editing a person : `edit`","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":"Edits an existing person in the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":"Format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAG]…​`","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":"* Edits the person at the specified `INDEX`. The index refers to the index number shown in the displayed person list. The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2020-05-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":"* At least one of the optional fields must be provided.","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":"* Existing values will be updated to the input values.","lastModifiedDate":"2020-05-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":"* When editing tags, the existing tags of the person will be removed i.e adding of tags is not cumulative.","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":"* You can remove all the person’s tags by typing `t/` without","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":" specifying any tags after it.","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":"* `edit 1 p/91234567 e/johndoe@example.com` Edits the phone number and email address of the 1st person to be `91234567` and `johndoe@example.com` respectively.","lastModifiedDate":"2020-05-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":"* `edit 2 n/Betsy Crower t/` Edits the name of the 2nd person to be `Betsy Crower` and clears all existing tags.","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":"### Locating persons by name: `find`","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":"Finds persons whose names contain any of the given keywords.","lastModifiedDate":"2020-05-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":"Format: `find KEYWORD [MORE_KEYWORDS]`","lastModifiedDate":"2020-05-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":"* The search is case-insensitive. e.g `hans` will match `Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":"* The order of the keywords does not matter. e.g. `Hans Bo` will match `Bo Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":"* Only the name is searched.","lastModifiedDate":"2020-05-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":"* Only full words will be matched e.g. `Han` will not match `Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":"* Persons matching at least one keyword will be returned (i.e. `OR` search).","lastModifiedDate":"2020-05-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":" e.g. `Hans Bo` will return `Hans Gruber`, `Bo Yang`","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"* `find John` returns `john` and `John Doe`","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"* `find alex david` returns `Alex Yeoh`, `David Li`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":" ![result for \u0027find alex david\u0027](images/findAlexDavidResult.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":"### Deleting a person : `delete`","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":"Deletes the specified person from the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":"Format: `delete INDEX`","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":"* Deletes the person at the specified `INDEX`.","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":"* The index refers to the index number shown in the displayed person list.","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":"* `list` followed by `delete 2` deletes the 2nd person in the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"* `find Betsy` followed by `delete 1` deletes the 1st person in the results of the `find` command.","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"### Clearing all entries : `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":"Clears all entries from the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"Format: `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":"AddressBook data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":175,"author":{"gitId":"-"},"content":"AddressBook data are saved automatically as a JSON file `[JAR file location]/data/addressbook.json`. Advanced users are welcome to update data directly by editing that data file.","lastModifiedDate":"2023-09-08"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":177,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-warning\"\u003e:exclamation: **Caution:**","lastModifiedDate":"2021-02-04"},{"lineNumber":178,"author":{"gitId":"-"},"content":"If your changes to the data file makes its format invalid, AddressBook will discard all data and start with an empty data file at the next run. Hence, it is recommended to take a backup of the file before editing it.\u003cbr\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":179,"author":{"gitId":"-"},"content":"Furthermore, certain edits can cause the AddressBook to behave in unexpected ways (e.g., if a value entered is outside of the acceptable range). Therefore, edit the data file only if you are confident that you can update it correctly.","lastModifiedDate":"2024-02-09"},{"lineNumber":180,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-02-04"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":182,"author":{"gitId":"-"},"content":"### Archiving data files `[coming in v2.0]`","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"_Details coming soon ..._","lastModifiedDate":"2021-02-04"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":190,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":"**A**: Install the app in the other computer and overwrite the empty data file it creates with the file that contains the data of your previous AddressBook home folder.","lastModifiedDate":"2020-05-23"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":"## Known issues","lastModifiedDate":"2023-09-08"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":197,"author":{"gitId":"-"},"content":"1. **When using multiple screens**, if you move the application to a secondary screen, and later switch to using only the primary screen, the GUI will open off-screen. The remedy is to delete the `preferences.json` file created by the application before running the application again.","lastModifiedDate":"2023-09-08"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":199,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":201,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":"Action | Format, Examples","lastModifiedDate":"2020-05-23"},{"lineNumber":204,"author":{"gitId":"-"},"content":"--------|------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":"**Add** | `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]…​` \u003cbr\u003e e.g., `add n/James Ho p/22224444 e/jamesho@example.com a/123, Clementi Rd, 1234665 t/friend t/colleague`","lastModifiedDate":"2020-05-23"},{"lineNumber":206,"author":{"gitId":"-"},"content":"**Clear** | `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":"**Delete** | `delete INDEX`\u003cbr\u003e e.g., `delete 3`","lastModifiedDate":"2020-05-23"},{"lineNumber":208,"author":{"gitId":"-"},"content":"**Edit** | `edit INDEX [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [t/TAG]…​`\u003cbr\u003e e.g.,`edit 2 n/James Lee e/jameslee@example.com`","lastModifiedDate":"2020-05-23"},{"lineNumber":209,"author":{"gitId":"-"},"content":"**Find** | `find KEYWORD [MORE_KEYWORDS]`\u003cbr\u003e e.g., `find James Jake`","lastModifiedDate":"2020-05-23"},{"lineNumber":210,"author":{"gitId":"-"},"content":"**List** | `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":"**Help** | `help`","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"CJerrong":19,"-":192}},{"path":"docs/_sass/minima/_base.scss","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"html {","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":" font-size: $base-font-size;","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * Reset some basic elements","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"body, h1, h2, h3, h4, h5, h6,","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"p, blockquote, pre, hr,","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"dl, dd, ol, ul, figure {","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":" margin: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":" padding: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Basic styling","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"body {","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":" font: $base-font-weight #{$base-font-size}/#{$base-line-height} $base-font-family;","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":" color: $text-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":" background-color: $background-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":" -webkit-text-size-adjust: 100%;","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":" -webkit-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":" -moz-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":" -o-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":" font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":" font-kerning: normal;","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" display: flex;","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":" min-height: 100vh;","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":" flex-direction: column;","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":" overflow-wrap: break-word;","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Set `margin-bottom` to maintain vertical rhythm","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"h1, h2, h3, h4, h5, h6,","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"p, blockquote, pre,","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"ul, ol, dl, figure,","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"%vertical-rhythm {","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit / 2;","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"hr {","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" margin-top: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * `main` element","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"main {","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" display: block; /* Default value of `display` of `main` element is \u0027inline\u0027 in IE 11. */","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Images","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"img {","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" max-width: 100%;","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" vertical-align: middle;","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * Figures","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"figure \u003e img {","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"figcaption {","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" font-size: $small-font-size;","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Lists","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"ul, ol {","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" margin-left: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"li {","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":" \u003e ul,","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":" \u003e ol {","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":" margin-bottom: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Headings","lastModifiedDate":"2020-05-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":"h1, h2, h3, h4, h5, h6 {","lastModifiedDate":"2020-05-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":" font-weight: $base-font-weight;","lastModifiedDate":"2020-05-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":" * Links","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":"a {","lastModifiedDate":"2020-05-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":" color: $link-base-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":" text-decoration: none;","lastModifiedDate":"2020-05-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":" \u0026:visited {","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":" color: $link-visited-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":" \u0026:hover {","lastModifiedDate":"2020-05-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":" color: $text-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":" text-decoration: underline;","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":" .social-media-list \u0026:hover {","lastModifiedDate":"2020-05-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":" text-decoration: none;","lastModifiedDate":"2020-05-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":" .username {","lastModifiedDate":"2020-05-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":" text-decoration: underline;","lastModifiedDate":"2020-05-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":" * Blockquotes","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"blockquote {","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":" color: $brand-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":" border-left: 4px solid $brand-color-light;","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit / 2;","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":" @include relative-font-size(1.125);","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":" font-style: italic;","lastModifiedDate":"2020-05-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":" \u003e :last-child {","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":" margin-bottom: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":" i, em {","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":" font-style: normal;","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":" * Code formatting","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"pre,","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":"code {","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":" font-family: $code-font-family;","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":" font-size: 0.9375em;","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":" border: 1px solid $brand-color-light;","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":" border-radius: 3px;","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":" background-color: $code-background-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"code {","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":" padding: 1px 5px;","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":"pre {","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":" padding: 8px 12px;","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":" overflow-x: auto;","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":" \u003e code {","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":" border: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":" padding-right: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":" padding-left: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":".highlight {","lastModifiedDate":"2020-05-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":" border-radius: 3px;","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":" background: $code-background-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":" @extend %vertical-rhythm;","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":190,"author":{"gitId":"-"},"content":" .highlighter-rouge \u0026 {","lastModifiedDate":"2020-05-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":" background: $code-background-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":198,"author":{"gitId":"-"},"content":" * Wrapper","lastModifiedDate":"2020-05-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"author":{"gitId":"-"},"content":".wrapper {","lastModifiedDate":"2020-05-23"},{"lineNumber":201,"author":{"gitId":"-"},"content":" max-width: calc(#{$content-width} - (#{$spacing-unit}));","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":" margin-right: auto;","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":" margin-left: auto;","lastModifiedDate":"2020-05-23"},{"lineNumber":204,"author":{"gitId":"-"},"content":" padding-right: $spacing-unit / 2;","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit / 2;","lastModifiedDate":"2020-05-23"},{"lineNumber":206,"author":{"gitId":"-"},"content":" @extend %clearfix;","lastModifiedDate":"2020-05-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":208,"author":{"gitId":"-"},"content":" @media screen and (min-width: $on-large) {","lastModifiedDate":"2020-05-23"},{"lineNumber":209,"author":{"gitId":"-"},"content":" max-width: calc(#{$content-width} - (#{$spacing-unit} * 2));","lastModifiedDate":"2020-05-23"},{"lineNumber":210,"author":{"gitId":"-"},"content":" padding-right: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":212,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":213,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":217,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":218,"author":{"gitId":"-"},"content":" * Clearfix","lastModifiedDate":"2020-05-23"},{"lineNumber":219,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":220,"author":{"gitId":"-"},"content":"%clearfix:after {","lastModifiedDate":"2020-05-23"},{"lineNumber":221,"author":{"gitId":"-"},"content":" content: \"\";","lastModifiedDate":"2020-05-23"},{"lineNumber":222,"author":{"gitId":"-"},"content":" display: table;","lastModifiedDate":"2020-05-23"},{"lineNumber":223,"author":{"gitId":"-"},"content":" clear: both;","lastModifiedDate":"2020-05-23"},{"lineNumber":224,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":228,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":" * Icons","lastModifiedDate":"2020-05-23"},{"lineNumber":230,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":".orange {","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":" color: #f66a0a;","lastModifiedDate":"2020-05-23"},{"lineNumber":234,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":".grey {","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":" color: #828282;","lastModifiedDate":"2020-05-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":" * Tables","lastModifiedDate":"2020-05-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":"table {","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":" width: 100%;","lastModifiedDate":"2020-05-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":" text-align: $table-text-align;","lastModifiedDate":"2020-05-23"},{"lineNumber":247,"author":{"gitId":"-"},"content":" color: $table-text-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":248,"author":{"gitId":"-"},"content":" border-collapse: collapse;","lastModifiedDate":"2020-05-23"},{"lineNumber":249,"author":{"gitId":"-"},"content":" border: 1px solid $table-border-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":250,"author":{"gitId":"-"},"content":" tr {","lastModifiedDate":"2020-05-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":" \u0026:nth-child(even) {","lastModifiedDate":"2020-05-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":" background-color: $table-zebra-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":254,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":" th, td {","lastModifiedDate":"2020-05-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":" padding: ($spacing-unit / 3) ($spacing-unit / 2);","lastModifiedDate":"2020-05-23"},{"lineNumber":257,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":258,"author":{"gitId":"-"},"content":" th {","lastModifiedDate":"2020-05-23"},{"lineNumber":259,"author":{"gitId":"-"},"content":" background-color: $table-header-bg-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"-"},"content":" border: 1px solid $table-header-border;","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":262,"author":{"gitId":"-"},"content":" td {","lastModifiedDate":"2020-05-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":" border: 1px solid $table-border-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":264,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":266,"author":{"gitId":"-"},"content":" @include media-query($on-laptop) {","lastModifiedDate":"2020-05-23"},{"lineNumber":267,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2020-05-23"},{"lineNumber":268,"author":{"gitId":"-"},"content":" overflow-x: auto;","lastModifiedDate":"2020-05-23"},{"lineNumber":269,"author":{"gitId":"-"},"content":" -webkit-overflow-scrolling: touch;","lastModifiedDate":"2020-05-23"},{"lineNumber":270,"author":{"gitId":"-"},"content":" -ms-overflow-style: -ms-autohiding-scrollbar;","lastModifiedDate":"2020-05-23"},{"lineNumber":271,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":272,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-01-11"},{"lineNumber":274,"author":{"gitId":"-"},"content":"@media print {","lastModifiedDate":"2021-01-12"},{"lineNumber":275,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2021-01-11"},{"lineNumber":276,"author":{"gitId":"-"},"content":" * Prevents page break from cutting through content when printing","lastModifiedDate":"2021-01-12"},{"lineNumber":277,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2021-01-11"},{"lineNumber":278,"author":{"gitId":"-"},"content":" body {","lastModifiedDate":"2021-01-11"},{"lineNumber":279,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2021-01-11"},{"lineNumber":280,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-11"},{"lineNumber":281,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2021-01-12"},{"lineNumber":282,"author":{"gitId":"-"},"content":" * Replaces the top navigation menu with the project name when printing","lastModifiedDate":"2021-01-12"},{"lineNumber":283,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2021-01-12"},{"lineNumber":284,"author":{"gitId":"-"},"content":" .site-header .wrapper {","lastModifiedDate":"2021-01-12"},{"lineNumber":285,"author":{"gitId":"-"},"content":" display: none;","lastModifiedDate":"2021-01-12"},{"lineNumber":286,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-12"},{"lineNumber":287,"author":{"gitId":"-"},"content":" .site-header {","lastModifiedDate":"2021-01-12"},{"lineNumber":288,"author":{"gitId":"-"},"content":" text-align: center;","lastModifiedDate":"2021-01-12"},{"lineNumber":289,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-12"},{"lineNumber":290,"author":{"gitId":"-"},"content":" .site-header:before {","lastModifiedDate":"2021-01-12"},{"lineNumber":291,"author":{"gitId":"gerteck"},"content":" content: \"Elder Scrolls\";","lastModifiedDate":"2024-03-03"},{"lineNumber":292,"author":{"gitId":"-"},"content":" font-size: 32px;","lastModifiedDate":"2021-01-12"},{"lineNumber":293,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-11"},{"lineNumber":294,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-01-12"},{"lineNumber":295,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-01-12"}],"authorContributionMap":{"gerteck":1,"-":294}},{"path":"docs/diagrams/ArchitectureSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2023-07-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"Actor User as user USER_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"Participant \":UI\" as ui UI_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Participant \":Logic\" as logic LOGIC_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":8,"author":{"gitId":"-"},"content":"Participant \":Model\" as model MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"Participant \":Storage\" as storage STORAGE_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":11,"author":{"gitId":"sdevih"},"content":"user -[USER_COLOR]\u003e ui : \"delete 1 r/volunteer\"","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"activate ui UI_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"sdevih"},"content":"ui -[UI_COLOR]\u003e logic : execute(\"delete 1 r/volunteer\")","lastModifiedDate":"2024-03-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":"activate logic LOGIC_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"logic -[LOGIC_COLOR]\u003e model : deletePerson(p)","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"activate model MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"model -[MODEL_COLOR]-\u003e logic","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"deactivate model","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"logic -[LOGIC_COLOR]\u003e storage : saveAddressBook(addressBook)","lastModifiedDate":"2019-07-03"},{"lineNumber":24,"author":{"gitId":"-"},"content":"activate storage STORAGE_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":"storage -[STORAGE_COLOR]\u003e storage : Save to file","lastModifiedDate":"2019-07-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":"activate storage STORAGE_COLOR_T1","lastModifiedDate":"2019-07-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"storage --[STORAGE_COLOR]\u003e storage","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"deactivate storage","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"storage --[STORAGE_COLOR]\u003e logic","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"deactivate storage","lastModifiedDate":"2019-07-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":"logic --[LOGIC_COLOR]\u003e ui","lastModifiedDate":"2019-07-03"},{"lineNumber":35,"author":{"gitId":"-"},"content":"deactivate logic","lastModifiedDate":"2019-07-03"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":37,"author":{"gitId":"-"},"content":"ui--[UI_COLOR]\u003e user","lastModifiedDate":"2019-07-03"},{"lineNumber":38,"author":{"gitId":"-"},"content":"deactivate ui","lastModifiedDate":"2019-07-03"},{"lineNumber":39,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"-":37,"sdevih":2}},{"path":"docs/diagrams/BetterModelClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam arrowColor MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam classBackgroundColor MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"AddressBook *-right-\u003e \"1\" UniquePersonList","lastModifiedDate":"2019-07-30"},{"lineNumber":8,"author":{"gitId":"-"},"content":"AddressBook *-right-\u003e \"1\" UniqueTagList","lastModifiedDate":"2019-07-30"},{"lineNumber":9,"author":{"gitId":"-"},"content":"UniqueTagList -[hidden]down- UniquePersonList","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"-"},"content":"UniqueTagList -[hidden]down- UniquePersonList","lastModifiedDate":"2019-07-03"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"UniqueTagList -right-\u003e \"*\" Tag","lastModifiedDate":"2023-01-01"},{"lineNumber":13,"author":{"gitId":"-"},"content":"UniquePersonList -right-\u003e Person","lastModifiedDate":"2021-07-31"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"Person -up-\u003e \"*\" Tag","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"CJerrong"},"content":"Volunteer .left.|\u003e Person","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"CJerrong"},"content":"Befriendee .left.|\u003e Person","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Person *--\u003e Name","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"Person *--\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"Person *--\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"Person *--\u003e Address","lastModifiedDate":"2019-07-03"},{"lineNumber":24,"author":{"gitId":"soons1"},"content":"Person *--\u003e \"0..1\" pairedWith","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"soons1"},"content":"Person *--\u003e Role","lastModifiedDate":"2024-03-22"},{"lineNumber":26,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"CJerrong":3,"soons1":2,"-":21}},{"path":"docs/diagrams/DeleteSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2023-07-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"participant \":AddressBookParser\" as AddressBookParser LOGIC_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":8,"author":{"gitId":"-"},"content":"participant \":DeleteCommandParser\" as DeleteCommandParser LOGIC_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"participant \"d:DeleteCommand\" as DeleteCommand LOGIC_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"-"},"content":"participant \"r:CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-02-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"end box","lastModifiedDate":"2019-07-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"participant \"m:Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-02-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":"end box","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"sdevih"},"content":"[-\u003e LogicManager : execute(\"delete 1 r/volunteer\")","lastModifiedDate":"2024-03-22"},{"lineNumber":18,"author":{"gitId":"-"},"content":"activate LogicManager","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"sdevih"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(\"delete 1 r/volunteer\")","lastModifiedDate":"2024-03-22"},{"lineNumber":21,"author":{"gitId":"-"},"content":"activate AddressBookParser","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"create DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":24,"author":{"gitId":"-"},"content":"AddressBookParser -\u003e DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":25,"author":{"gitId":"-"},"content":"activate DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":"DeleteCommandParser --\u003e AddressBookParser","lastModifiedDate":"2019-07-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"deactivate DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"sdevih"},"content":"AddressBookParser -\u003e DeleteCommandParser : parse(\"1 r/volunteer\")","lastModifiedDate":"2024-03-22"},{"lineNumber":31,"author":{"gitId":"-"},"content":"activate DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":"create DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":"DeleteCommandParser -\u003e DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":35,"author":{"gitId":"-"},"content":"activate DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":37,"author":{"gitId":"-"},"content":"DeleteCommand --\u003e DeleteCommandParser :","lastModifiedDate":"2024-02-09"},{"lineNumber":38,"author":{"gitId":"-"},"content":"deactivate DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":40,"author":{"gitId":"-"},"content":"DeleteCommandParser --\u003e AddressBookParser : d","lastModifiedDate":"2019-07-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":"deactivate DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":42,"author":{"gitId":"-"},"content":"\u0027Hidden arrow to position the destroy marker below the end of the activation bar.","lastModifiedDate":"2019-07-03"},{"lineNumber":43,"author":{"gitId":"-"},"content":"DeleteCommandParser -[hidden]-\u003e AddressBookParser","lastModifiedDate":"2019-07-03"},{"lineNumber":44,"author":{"gitId":"-"},"content":"destroy DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":46,"author":{"gitId":"-"},"content":"AddressBookParser --\u003e LogicManager : d","lastModifiedDate":"2019-07-03"},{"lineNumber":47,"author":{"gitId":"-"},"content":"deactivate AddressBookParser","lastModifiedDate":"2019-07-03"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":49,"author":{"gitId":"-"},"content":"LogicManager -\u003e DeleteCommand : execute(m)","lastModifiedDate":"2024-02-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":"activate DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":52,"author":{"gitId":"-"},"content":"DeleteCommand -\u003e Model : deletePerson(1)","lastModifiedDate":"2019-07-03"},{"lineNumber":53,"author":{"gitId":"-"},"content":"activate Model","lastModifiedDate":"2019-07-03"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":55,"author":{"gitId":"-"},"content":"Model --\u003e DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":56,"author":{"gitId":"-"},"content":"deactivate Model","lastModifiedDate":"2019-07-03"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":58,"author":{"gitId":"-"},"content":"create CommandResult","lastModifiedDate":"2019-07-03"},{"lineNumber":59,"author":{"gitId":"-"},"content":"DeleteCommand -\u003e CommandResult","lastModifiedDate":"2019-07-03"},{"lineNumber":60,"author":{"gitId":"-"},"content":"activate CommandResult","lastModifiedDate":"2019-07-03"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":62,"author":{"gitId":"-"},"content":"CommandResult --\u003e DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":63,"author":{"gitId":"-"},"content":"deactivate CommandResult","lastModifiedDate":"2019-07-03"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":65,"author":{"gitId":"-"},"content":"DeleteCommand --\u003e LogicManager : r","lastModifiedDate":"2024-02-09"},{"lineNumber":66,"author":{"gitId":"-"},"content":"deactivate DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":68,"author":{"gitId":"-"},"content":"[\u003c--LogicManager","lastModifiedDate":"2019-07-03"},{"lineNumber":69,"author":{"gitId":"-"},"content":"deactivate LogicManager","lastModifiedDate":"2019-07-03"},{"lineNumber":70,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"-":67,"sdevih":3}},{"path":"docs/diagrams/ModelClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam arrowColor MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam classBackgroundColor MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Package Model as ModelPackage \u003c\u003cRectangle\u003e\u003e{","lastModifiedDate":"2023-07-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nReadOnlyAddressBook\" as ReadOnlyAddressBook","lastModifiedDate":"2022-01-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nReadOnlyUserPrefs\" as ReadOnlyUserPrefs","lastModifiedDate":"2022-01-03"},{"lineNumber":10,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nModel\" as Model","lastModifiedDate":"2022-01-03"},{"lineNumber":11,"author":{"gitId":"-"},"content":"Class AddressBook","lastModifiedDate":"2019-07-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"Class ModelManager","lastModifiedDate":"2019-07-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"Class UserPrefs","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":15,"author":{"gitId":"-"},"content":"Class UniquePersonList","lastModifiedDate":"2021-07-31"},{"lineNumber":16,"author":{"gitId":"gerteck"},"content":"Class \"{abstract}\\nPerson\" as Person","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":"Class Address","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"Class Email","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"Class Name","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Class Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"Class Tag","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"gerteck"},"content":"Class Role","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"gerteck"},"content":"Class \"Optional\u003cName\u003e\"","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"gerteck"},"content":"Class Volunteer","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"gerteck"},"content":"Class Befriendee","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":28,"author":{"gitId":"-"},"content":"Class I #FFFFFF","lastModifiedDate":"2023-07-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":"AddressBook .up.|\u003e ReadOnlyAddressBook","lastModifiedDate":"2019-07-03"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":36,"author":{"gitId":"-"},"content":"ModelManager .up.|\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":37,"author":{"gitId":"-"},"content":"Model .right.\u003e ReadOnlyUserPrefs","lastModifiedDate":"2021-07-31"},{"lineNumber":38,"author":{"gitId":"-"},"content":"Model .left.\u003e ReadOnlyAddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":39,"author":{"gitId":"-"},"content":"ModelManager -left-\u003e \"1\" AddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":40,"author":{"gitId":"-"},"content":"ModelManager -right-\u003e \"1\" UserPrefs","lastModifiedDate":"2021-07-31"},{"lineNumber":41,"author":{"gitId":"-"},"content":"UserPrefs .up.|\u003e ReadOnlyUserPrefs","lastModifiedDate":"2019-07-03"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":43,"author":{"gitId":"-"},"content":"AddressBook *--\u003e \"1\" UniquePersonList","lastModifiedDate":"2019-07-30"},{"lineNumber":44,"author":{"gitId":"-"},"content":"UniquePersonList --\u003e \"~* all\" Person","lastModifiedDate":"2021-07-31"},{"lineNumber":45,"author":{"gitId":"-"},"content":"Person *--\u003e Name","lastModifiedDate":"2019-07-03"},{"lineNumber":46,"author":{"gitId":"-"},"content":"Person *--\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":47,"author":{"gitId":"-"},"content":"Person *--\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":48,"author":{"gitId":"-"},"content":"Person *--\u003e Address","lastModifiedDate":"2019-07-03"},{"lineNumber":49,"author":{"gitId":"soons1"},"content":"Person *--\u003e \"0..1\" pairedWith","lastModifiedDate":"2024-03-22"},{"lineNumber":50,"author":{"gitId":"soons1"},"content":"Person -up-\u003e \"*\" Tag","lastModifiedDate":"2024-03-22"},{"lineNumber":51,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":52,"author":{"gitId":"gerteck"},"content":"Person *--\u003e Role","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":55,"author":{"gitId":"gerteck"},"content":"Volunteer .up.|\u003e Person","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"gerteck"},"content":"Befriendee .up.|\u003e Person","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"gerteck"},"content":"Person -[hidden]down--\u003e Volunteer","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"gerteck"},"content":"Person -[hidden]down--\u003e Befriendee","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":62,"author":{"gitId":"-"},"content":"Person -[hidden]up--\u003e I","lastModifiedDate":"2023-07-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":"UniquePersonList -[hidden]right-\u003e I","lastModifiedDate":"2023-07-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":"Name -[hidden]right-\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":66,"author":{"gitId":"-"},"content":"Phone -[hidden]right-\u003e Address","lastModifiedDate":"2019-07-03"},{"lineNumber":67,"author":{"gitId":"-"},"content":"Address -[hidden]right-\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":69,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"-"},"content":"ModelManager --\u003e \"~* filtered\" Person","lastModifiedDate":"2021-07-31"},{"lineNumber":72,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"soons1":4,"gerteck":16,"-":52}},{"path":"docs/diagrams/UiClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam arrowColor UI_COLOR_T4","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam classBackgroundColor UI_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"package UI \u003c\u003cRectangle\u003e\u003e{","lastModifiedDate":"2019-07-03"},{"lineNumber":8,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nUi\" as Ui","lastModifiedDate":"2022-01-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"Class \"{abstract}\\nUiPart\" as UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"-"},"content":"Class UiManager","lastModifiedDate":"2019-07-03"},{"lineNumber":11,"author":{"gitId":"-"},"content":"Class MainWindow","lastModifiedDate":"2019-07-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"Class HelpWindow","lastModifiedDate":"2019-07-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"Class ResultDisplay","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"Class PersonListPanel","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"Class PersonCard","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"Class StatusBarFooter","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"Class CommandBox","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"package Model \u003c\u003cRectangle\u003e\u003e {","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"Class HiddenModel #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":24,"author":{"gitId":"-"},"content":"package Logic \u003c\u003cRectangle\u003e\u003e {","lastModifiedDate":"2019-07-03"},{"lineNumber":25,"author":{"gitId":"-"},"content":"Class HiddenLogic #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Ui","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"UiManager .left.|\u003e Ui","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"UiManager -down-\u003e \"1\" MainWindow","lastModifiedDate":"2021-07-31"},{"lineNumber":33,"author":{"gitId":"-"},"content":"MainWindow *-down-\u003e \"1\" CommandBox","lastModifiedDate":"2021-07-31"},{"lineNumber":34,"author":{"gitId":"-"},"content":"MainWindow *-down-\u003e \"1\" ResultDisplay","lastModifiedDate":"2021-07-31"},{"lineNumber":35,"author":{"gitId":"CJerrong"},"content":"MainWindow *-down-\u003e \"2\" PersonListPanel","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":"MainWindow *-down-\u003e \"1\" StatusBarFooter","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"MainWindow --\u003e \"0..1\" HelpWindow","lastModifiedDate":"2021-07-31"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":39,"author":{"gitId":"-"},"content":"PersonListPanel -down-\u003e \"*\" PersonCard","lastModifiedDate":"2021-07-31"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":"MainWindow -left-|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":43,"author":{"gitId":"-"},"content":"ResultDisplay --|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":44,"author":{"gitId":"-"},"content":"CommandBox --|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":45,"author":{"gitId":"-"},"content":"PersonListPanel --|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":46,"author":{"gitId":"-"},"content":"PersonCard --|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":47,"author":{"gitId":"-"},"content":"StatusBarFooter --|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":48,"author":{"gitId":"-"},"content":"HelpWindow --|\u003e UiPart","lastModifiedDate":"2021-07-31"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":50,"author":{"gitId":"-"},"content":"PersonCard ..\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":51,"author":{"gitId":"-"},"content":"UiManager -right-\u003e Logic","lastModifiedDate":"2019-07-03"},{"lineNumber":52,"author":{"gitId":"-"},"content":"MainWindow -left-\u003e Logic","lastModifiedDate":"2019-07-03"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":54,"author":{"gitId":"-"},"content":"PersonListPanel -[hidden]left- HelpWindow","lastModifiedDate":"2019-07-03"},{"lineNumber":55,"author":{"gitId":"-"},"content":"HelpWindow -[hidden]left- CommandBox","lastModifiedDate":"2019-07-03"},{"lineNumber":56,"author":{"gitId":"-"},"content":"CommandBox -[hidden]left- ResultDisplay","lastModifiedDate":"2019-07-03"},{"lineNumber":57,"author":{"gitId":"-"},"content":"ResultDisplay -[hidden]left- StatusBarFooter","lastModifiedDate":"2019-07-30"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":59,"author":{"gitId":"-"},"content":"MainWindow -[hidden]-|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":60,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"CJerrong":1,"-":59}},{"path":"docs/index.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"gerteck"},"content":"title: Elder Scrolls","lastModifiedDate":"2024-03-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"[![CI Status](https://github.com/se-edu/addressbook-level3/workflows/Java%20CI/badge.svg)](https://github.com/se-edu/addressbook-level3/actions)","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"[![codecov](https://codecov.io/gh/se-edu/addressbook-level3/branch/master/graph/badge.svg)](https://codecov.io/gh/se-edu/addressbook-level3)","lastModifiedDate":"2020-08-07"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"gerteck"},"content":"**Elder Scrolls is a desktop volunteer management system application for managing both volunteers, and befriendees.** While it has a GUI, most of the user interactions happen using a CLI (Command Line Interface).","lastModifiedDate":"2024-03-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"gerteck"},"content":"* If you are interested in using Elder Scrolls, head over to the [_Quick Start_ section of the **User Guide**](UserGuide.html#quick-start).","lastModifiedDate":"2024-03-03"},{"lineNumber":14,"author":{"gitId":"gerteck"},"content":"* If you are interested about developing Elder Scrolls, the [**Developer Guide**](DeveloperGuide.html) is a good place to start.","lastModifiedDate":"2024-03-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"**Acknowledgements**","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"* Libraries used: [JavaFX](https://openjfx.io/), [Jackson](https://github.com/FasterXML/jackson), [JUnit5](https://github.com/junit-team/junit5)","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"gerteck"},"content":"* This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-03-03"}],"authorContributionMap":{"gerteck":5,"-":15}},{"path":"docs/team/chaaaaun.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"---","lastModifiedDate":"2024-03-03"},{"lineNumber":2,"author":{"gitId":"chaaaaun"},"content":"layout: page","lastModifiedDate":"2024-03-03"},{"lineNumber":3,"author":{"gitId":"chaaaaun"},"content":"title: Tu Jia En\u0027s Project Portfolio Page","lastModifiedDate":"2024-03-03"},{"lineNumber":4,"author":{"gitId":"chaaaaun"},"content":"---","lastModifiedDate":"2024-03-03"},{"lineNumber":5,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":6,"author":{"gitId":"chaaaaun"},"content":"### Project: Elder Scrolls","lastModifiedDate":"2024-03-03"}],"authorContributionMap":{"chaaaaun":6}},{"path":"docs/team/cjerrong.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"CJerrong"},"content":" ---","lastModifiedDate":"2024-03-03"},{"lineNumber":2,"author":{"gitId":"CJerrong"},"content":"layout: page","lastModifiedDate":"2024-03-03"},{"lineNumber":3,"author":{"gitId":"CJerrong"},"content":"title: CJerrong\u0027s Project Portfolio Page","lastModifiedDate":"2024-03-03"},{"lineNumber":4,"author":{"gitId":"CJerrong"},"content":"---","lastModifiedDate":"2024-03-03"},{"lineNumber":5,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":6,"author":{"gitId":"CJerrong"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-03-03"},{"lineNumber":7,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":8,"author":{"gitId":"CJerrong"},"content":"AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2024-03-03"},{"lineNumber":9,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":10,"author":{"gitId":"CJerrong"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-03-03"},{"lineNumber":11,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":12,"author":{"gitId":"CJerrong"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-03-03"},{"lineNumber":13,"author":{"gitId":"CJerrong"},"content":" * What it does: allows the user to undo all previous commands one at a time. Preceding undo commands can be reversed by using the redo command.","lastModifiedDate":"2024-03-03"},{"lineNumber":14,"author":{"gitId":"CJerrong"},"content":" * Justification: This feature improves the product significantly because a user can make mistakes in commands and the app should provide a convenient way to rectify them.","lastModifiedDate":"2024-03-03"},{"lineNumber":15,"author":{"gitId":"CJerrong"},"content":" * Highlights: This enhancement affects existing commands and commands to be added in future. It required an in-depth analysis of design alternatives. The implementation too was challenging as it required changes to existing commands.","lastModifiedDate":"2024-03-03"},{"lineNumber":16,"author":{"gitId":"CJerrong"},"content":" * Credits: *{mention here if you reused any code/ideas from elsewhere or if a third-party library is heavily used in the feature so that a reader can make a more accurate judgement of how much effort went into the feature}*","lastModifiedDate":"2024-03-03"},{"lineNumber":17,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":18,"author":{"gitId":"CJerrong"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-03-03"},{"lineNumber":19,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":20,"author":{"gitId":"CJerrong"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-03-03"},{"lineNumber":21,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":22,"author":{"gitId":"CJerrong"},"content":"* **Project management**:","lastModifiedDate":"2024-03-03"},{"lineNumber":23,"author":{"gitId":"CJerrong"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-03-03"},{"lineNumber":24,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":25,"author":{"gitId":"CJerrong"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-03-03"},{"lineNumber":26,"author":{"gitId":"CJerrong"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-03-03"},{"lineNumber":27,"author":{"gitId":"CJerrong"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-03-03"},{"lineNumber":28,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":29,"author":{"gitId":"CJerrong"},"content":"* **Documentation**:","lastModifiedDate":"2024-03-03"},{"lineNumber":30,"author":{"gitId":"CJerrong"},"content":" * User Guide:","lastModifiedDate":"2024-03-03"},{"lineNumber":31,"author":{"gitId":"CJerrong"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-03-03"},{"lineNumber":32,"author":{"gitId":"CJerrong"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-03-03"},{"lineNumber":33,"author":{"gitId":"CJerrong"},"content":" * Developer Guide:","lastModifiedDate":"2024-03-03"},{"lineNumber":34,"author":{"gitId":"CJerrong"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-03-03"},{"lineNumber":35,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":36,"author":{"gitId":"CJerrong"},"content":"* **Community**:","lastModifiedDate":"2024-03-03"},{"lineNumber":37,"author":{"gitId":"CJerrong"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-03-03"},{"lineNumber":38,"author":{"gitId":"CJerrong"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-03-03"},{"lineNumber":39,"author":{"gitId":"CJerrong"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-03-03"},{"lineNumber":40,"author":{"gitId":"CJerrong"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-03-03"},{"lineNumber":41,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":42,"author":{"gitId":"CJerrong"},"content":"* **Tools**:","lastModifiedDate":"2024-03-03"},{"lineNumber":43,"author":{"gitId":"CJerrong"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-03-03"},{"lineNumber":44,"author":{"gitId":"CJerrong"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-03-03"},{"lineNumber":45,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":46,"author":{"gitId":"CJerrong"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-03-03"}],"authorContributionMap":{"CJerrong":46}},{"path":"docs/team/gerteck.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"gerteck"},"content":"---","lastModifiedDate":"2024-03-03"},{"lineNumber":2,"author":{"gitId":"gerteck"},"content":"layout: page","lastModifiedDate":"2024-03-03"},{"lineNumber":3,"author":{"gitId":"gerteck"},"content":"title: Ger Teck\u0027s Project Portfolio Page","lastModifiedDate":"2024-03-03"},{"lineNumber":4,"author":{"gitId":"gerteck"},"content":"---","lastModifiedDate":"2024-03-03"},{"lineNumber":5,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":6,"author":{"gitId":"gerteck"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-03-03"},{"lineNumber":7,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":8,"author":{"gitId":"gerteck"},"content":"AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2024-03-03"},{"lineNumber":9,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":10,"author":{"gitId":"gerteck"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-03-03"},{"lineNumber":11,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":12,"author":{"gitId":"gerteck"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-03-03"},{"lineNumber":13,"author":{"gitId":"gerteck"},"content":" * What it does: allows the user to undo all previous commands one at a time. Preceding undo commands can be reversed by using the redo command.","lastModifiedDate":"2024-03-03"},{"lineNumber":14,"author":{"gitId":"gerteck"},"content":" * Justification: This feature improves the product significantly because a user can make mistakes in commands and the app should provide a convenient way to rectify them.","lastModifiedDate":"2024-03-03"},{"lineNumber":15,"author":{"gitId":"gerteck"},"content":" * Highlights: This enhancement affects existing commands and commands to be added in future. It required an in-depth analysis of design alternatives. The implementation too was challenging as it required changes to existing commands.","lastModifiedDate":"2024-03-03"},{"lineNumber":16,"author":{"gitId":"gerteck"},"content":" * Credits: *{mention here if you reused any code/ideas from elsewhere or if a third-party library is heavily used in the feature so that a reader can make a more accurate judgement of how much effort went into the feature}*","lastModifiedDate":"2024-03-03"},{"lineNumber":17,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":18,"author":{"gitId":"gerteck"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-03-03"},{"lineNumber":19,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":20,"author":{"gitId":"gerteck"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-03-03"},{"lineNumber":21,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":22,"author":{"gitId":"gerteck"},"content":"* **Project management**:","lastModifiedDate":"2024-03-03"},{"lineNumber":23,"author":{"gitId":"gerteck"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-03-03"},{"lineNumber":24,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":25,"author":{"gitId":"gerteck"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-03-03"},{"lineNumber":26,"author":{"gitId":"gerteck"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-03-03"},{"lineNumber":27,"author":{"gitId":"gerteck"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-03-03"},{"lineNumber":28,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":29,"author":{"gitId":"gerteck"},"content":"* **Documentation**:","lastModifiedDate":"2024-03-03"},{"lineNumber":30,"author":{"gitId":"gerteck"},"content":" * User Guide:","lastModifiedDate":"2024-03-03"},{"lineNumber":31,"author":{"gitId":"gerteck"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-03-03"},{"lineNumber":32,"author":{"gitId":"gerteck"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-03-03"},{"lineNumber":33,"author":{"gitId":"gerteck"},"content":" * Developer Guide:","lastModifiedDate":"2024-03-03"},{"lineNumber":34,"author":{"gitId":"gerteck"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-03-03"},{"lineNumber":35,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":36,"author":{"gitId":"gerteck"},"content":"* **Community**:","lastModifiedDate":"2024-03-03"},{"lineNumber":37,"author":{"gitId":"gerteck"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-03-03"},{"lineNumber":38,"author":{"gitId":"gerteck"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-03-03"},{"lineNumber":39,"author":{"gitId":"gerteck"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-03-03"},{"lineNumber":40,"author":{"gitId":"gerteck"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-03-03"},{"lineNumber":41,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":42,"author":{"gitId":"gerteck"},"content":"* **Tools**:","lastModifiedDate":"2024-03-03"},{"lineNumber":43,"author":{"gitId":"gerteck"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-03-03"},{"lineNumber":44,"author":{"gitId":"gerteck"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-03-03"},{"lineNumber":45,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":46,"author":{"gitId":"gerteck"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-03-03"}],"authorContributionMap":{"gerteck":46}},{"path":"docs/team/johndoe.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"CJerrong"},"content":"_---","lastModifiedDate":"2024-03-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: John Doe\u0027s Project Portfolio Page","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2021-07-30"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * What it does: allows the user to undo all previous commands one at a time. Preceding undo commands can be reversed by using the redo command.","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Justification: This feature improves the product significantly because a user can make mistakes in commands and the app should provide a convenient way to rectify them.","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Highlights: This enhancement affects existing commands and commands to be added in future. It required an in-depth analysis of design alternatives. The implementation too was challenging as it required changes to existing commands.","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Credits: *{mention here if you reused any code/ideas from elsewhere or if a third-party library is heavily used in the feature so that a reader can make a more accurate judgement of how much effort went into the feature}*","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"* **Project management**:","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"* **Documentation**:","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * User Guide:","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Developer Guide:","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":"* **Community**:","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"* **Tools**:","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"CJerrong"},"content":"* _{you can add/remove categories in the list above}__","lastModifiedDate":"2024-03-03"}],"authorContributionMap":{"CJerrong":2,"-":44}},{"path":"docs/team/sdevih.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"sdevih"},"content":"---","lastModifiedDate":"2024-03-03"},{"lineNumber":2,"author":{"gitId":"sdevih"},"content":"layout: page","lastModifiedDate":"2024-03-03"},{"lineNumber":3,"author":{"gitId":"sdevih"},"content":"title: S Devi Harshitha\u0027s Project Portfolio Page","lastModifiedDate":"2024-03-03"},{"lineNumber":4,"author":{"gitId":"sdevih"},"content":"---","lastModifiedDate":"2024-03-03"},{"lineNumber":5,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":6,"author":{"gitId":"sdevih"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-03-03"},{"lineNumber":7,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":8,"author":{"gitId":"sdevih"},"content":"AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2024-03-03"},{"lineNumber":9,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":10,"author":{"gitId":"sdevih"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-03-03"},{"lineNumber":11,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":12,"author":{"gitId":"sdevih"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-03-03"},{"lineNumber":13,"author":{"gitId":"sdevih"},"content":" * What it does: allows the user to undo all previous commands one at a time. Preceding undo commands can be reversed by using the redo command.","lastModifiedDate":"2024-03-03"},{"lineNumber":14,"author":{"gitId":"sdevih"},"content":" * Justification: This feature improves the product significantly because a user can make mistakes in commands and the app should provide a convenient way to rectify them.","lastModifiedDate":"2024-03-03"},{"lineNumber":15,"author":{"gitId":"sdevih"},"content":" * Highlights: This enhancement affects existing commands and commands to be added in future. It required an in-depth analysis of design alternatives. The implementation too was challenging as it required changes to existing commands.","lastModifiedDate":"2024-03-03"},{"lineNumber":16,"author":{"gitId":"sdevih"},"content":" * Credits: *{mention here if you reused any code/ideas from elsewhere or if a third-party library is heavily used in the feature so that a reader can make a more accurate judgement of how much effort went into the feature}*","lastModifiedDate":"2024-03-03"},{"lineNumber":17,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":18,"author":{"gitId":"sdevih"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-03-03"},{"lineNumber":19,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":20,"author":{"gitId":"sdevih"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-03-03"},{"lineNumber":21,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":22,"author":{"gitId":"sdevih"},"content":"* **Project management**:","lastModifiedDate":"2024-03-03"},{"lineNumber":23,"author":{"gitId":"sdevih"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-03-03"},{"lineNumber":24,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":25,"author":{"gitId":"sdevih"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-03-03"},{"lineNumber":26,"author":{"gitId":"sdevih"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-03-03"},{"lineNumber":27,"author":{"gitId":"sdevih"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-03-03"},{"lineNumber":28,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":29,"author":{"gitId":"sdevih"},"content":"* **Documentation**:","lastModifiedDate":"2024-03-03"},{"lineNumber":30,"author":{"gitId":"sdevih"},"content":" * User Guide:","lastModifiedDate":"2024-03-03"},{"lineNumber":31,"author":{"gitId":"sdevih"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-03-03"},{"lineNumber":32,"author":{"gitId":"sdevih"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-03-03"},{"lineNumber":33,"author":{"gitId":"sdevih"},"content":" * Developer Guide:","lastModifiedDate":"2024-03-03"},{"lineNumber":34,"author":{"gitId":"sdevih"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-03-03"},{"lineNumber":35,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":36,"author":{"gitId":"sdevih"},"content":"* **Community**:","lastModifiedDate":"2024-03-03"},{"lineNumber":37,"author":{"gitId":"sdevih"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-03-03"},{"lineNumber":38,"author":{"gitId":"sdevih"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-03-03"},{"lineNumber":39,"author":{"gitId":"sdevih"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-03-03"},{"lineNumber":40,"author":{"gitId":"sdevih"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-03-03"},{"lineNumber":41,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":42,"author":{"gitId":"sdevih"},"content":"* **Tools**:","lastModifiedDate":"2024-03-03"},{"lineNumber":43,"author":{"gitId":"sdevih"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-03-03"},{"lineNumber":44,"author":{"gitId":"sdevih"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-03-03"},{"lineNumber":45,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":46,"author":{"gitId":"sdevih"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-03-03"}],"authorContributionMap":{"sdevih":46}},{"path":"docs/team/soons1.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"soons1"},"content":"---","lastModifiedDate":"2024-03-03"},{"lineNumber":2,"author":{"gitId":"soons1"},"content":"layout: page","lastModifiedDate":"2024-03-03"},{"lineNumber":3,"author":{"gitId":"soons1"},"content":"title: John Doe\u0027s Project Portfolio Page","lastModifiedDate":"2024-03-03"},{"lineNumber":4,"author":{"gitId":"soons1"},"content":"---","lastModifiedDate":"2024-03-03"},{"lineNumber":5,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":6,"author":{"gitId":"soons1"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-03-03"},{"lineNumber":7,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":8,"author":{"gitId":"soons1"},"content":"AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2024-03-03"},{"lineNumber":9,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":10,"author":{"gitId":"soons1"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-03-03"},{"lineNumber":11,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":12,"author":{"gitId":"soons1"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-03-03"},{"lineNumber":13,"author":{"gitId":"soons1"},"content":" * What it does: allows the user to undo all previous commands one at a time. Preceding undo commands can be reversed by using the redo command.","lastModifiedDate":"2024-03-03"},{"lineNumber":14,"author":{"gitId":"soons1"},"content":" * Justification: This feature improves the product significantly because a user can make mistakes in commands and the app should provide a convenient way to rectify them.","lastModifiedDate":"2024-03-03"},{"lineNumber":15,"author":{"gitId":"soons1"},"content":" * Highlights: This enhancement affects existing commands and commands to be added in future. It required an in-depth analysis of design alternatives. The implementation too was challenging as it required changes to existing commands.","lastModifiedDate":"2024-03-03"},{"lineNumber":16,"author":{"gitId":"soons1"},"content":" * Credits: *{mention here if you reused any code/ideas from elsewhere or if a third-party library is heavily used in the feature so that a reader can make a more accurate judgement of how much effort went into the feature}*","lastModifiedDate":"2024-03-03"},{"lineNumber":17,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":18,"author":{"gitId":"soons1"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-03-03"},{"lineNumber":19,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":20,"author":{"gitId":"soons1"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-03-03"},{"lineNumber":21,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":22,"author":{"gitId":"soons1"},"content":"* **Project management**:","lastModifiedDate":"2024-03-03"},{"lineNumber":23,"author":{"gitId":"soons1"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-03-03"},{"lineNumber":24,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":25,"author":{"gitId":"soons1"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-03-03"},{"lineNumber":26,"author":{"gitId":"soons1"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-03-03"},{"lineNumber":27,"author":{"gitId":"soons1"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-03-03"},{"lineNumber":28,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":29,"author":{"gitId":"soons1"},"content":"* **Documentation**:","lastModifiedDate":"2024-03-03"},{"lineNumber":30,"author":{"gitId":"soons1"},"content":" * User Guide:","lastModifiedDate":"2024-03-03"},{"lineNumber":31,"author":{"gitId":"soons1"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-03-03"},{"lineNumber":32,"author":{"gitId":"soons1"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-03-03"},{"lineNumber":33,"author":{"gitId":"soons1"},"content":" * Developer Guide:","lastModifiedDate":"2024-03-03"},{"lineNumber":34,"author":{"gitId":"soons1"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-03-03"},{"lineNumber":35,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":36,"author":{"gitId":"soons1"},"content":"* **Community**:","lastModifiedDate":"2024-03-03"},{"lineNumber":37,"author":{"gitId":"soons1"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-03-03"},{"lineNumber":38,"author":{"gitId":"soons1"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-03-03"},{"lineNumber":39,"author":{"gitId":"soons1"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-03-03"},{"lineNumber":40,"author":{"gitId":"soons1"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-03-03"},{"lineNumber":41,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":42,"author":{"gitId":"soons1"},"content":"* **Tools**:","lastModifiedDate":"2024-03-03"},{"lineNumber":43,"author":{"gitId":"soons1"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-03-03"},{"lineNumber":44,"author":{"gitId":"soons1"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-03-03"},{"lineNumber":45,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":46,"author":{"gitId":"soons1"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-03-03"}],"authorContributionMap":{"soons1":46}},{"path":"docs/tutorials/AddRemark.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-07-29"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-07-29"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: \"Tutorial: Adding a command\"","lastModifiedDate":"2020-07-29"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-07-29"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":6,"author":{"gitId":"-"},"content":"Let\u0027s walk you through the implementation of a new command — `remark`.","lastModifiedDate":"2020-07-29"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":8,"author":{"gitId":"-"},"content":"This command allows users of the AddressBook application to add optional remarks to people in their address book and edit it if required. The command should have the following format:","lastModifiedDate":"2020-07-29"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":10,"author":{"gitId":"-"},"content":"`remark INDEX r/REMARK` (e.g., `remark 2 r/Likes baseball`)","lastModifiedDate":"2020-07-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":12,"author":{"gitId":"-"},"content":"We’ll assume that you have already set up the development environment as outlined in the Developer’s Guide.","lastModifiedDate":"2020-07-29"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":"## Create a new `remark` command","lastModifiedDate":"2020-07-29"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":"Looking in the `logic.command` package, you will notice that each existing command have their own class. All the commands inherit from the abstract class `Command` which means that they must override `execute()`. Each `Command` returns an instance of `CommandResult` upon success and `CommandResult#feedbackToUser` is printed to the `ResultDisplay`.","lastModifiedDate":"2020-07-29"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":19,"author":{"gitId":"-"},"content":"Let’s start by creating a new `RemarkCommand` class in the `src/main/java/seedu/address/logic/command` directory.","lastModifiedDate":"2020-07-29"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":"For now, let’s keep `RemarkCommand` as simple as possible and print some output. We accomplish that by returning a `CommandResult` with an accompanying message.","lastModifiedDate":"2020-07-29"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":23,"author":{"gitId":"-"},"content":"**`RemarkCommand.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":25,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":26,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2020-07-29"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":28,"author":{"gitId":"chaaaaun"},"content":"import model.scrolls.elder.Model;","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":30,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-07-29"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Changes the remark of an existing person in the address book.","lastModifiedDate":"2020-07-29"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":33,"author":{"gitId":"-"},"content":"public class RemarkCommand extends Command {","lastModifiedDate":"2020-07-29"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"remark\";","lastModifiedDate":"2020-07-29"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2020-07-29"},{"lineNumber":39,"author":{"gitId":"-"},"content":" return new CommandResult(\"Hello from remark\");","lastModifiedDate":"2020-07-29"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":41,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":42,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":44,"author":{"gitId":"-"},"content":"### Hook `RemarkCommand` into the application","lastModifiedDate":"2020-07-29"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":46,"author":{"gitId":"-"},"content":"Now that we have our `RemarkCommand` ready to be executed, we need to update `AddressBookParser#parseCommand()` to recognize the `remark` keyword. Add the new command to the `switch` block by creating a new `case` that returns a new instance of `RemarkCommand`.","lastModifiedDate":"2020-07-29"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":48,"author":{"gitId":"-"},"content":"You can refer to the changes in this [diff](https://github.com/se-edu/addressbook-level3/commit/35eb7286f18a029d39cb7a29df8f172a001e4fd8#diff-399c284cb892c20b7c04a69116fcff6ccc0666c5230a1db8e4a9145def8fa4ee).","lastModifiedDate":"2022-01-02"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":50,"author":{"gitId":"-"},"content":"### Run the application","lastModifiedDate":"2020-07-29"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":52,"author":{"gitId":"-"},"content":"Run `Main#main` and try out your new `RemarkCommand`. If everything went well, you should see something like this:","lastModifiedDate":"2020-07-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":"![Output displayed](../images/add-remark/RemarkHello.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":56,"author":{"gitId":"-"},"content":"## Change `RemarkCommand` to throw an exception","lastModifiedDate":"2020-07-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":"While we have successfully printed a message to `ResultDisplay`, the command does not do what it is supposed to do. Let’s change the command to throw a `CommandException` to accurately reflect that our command is still a work in progress.","lastModifiedDate":"2020-12-12"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":60,"author":{"gitId":"-"},"content":"![The relationship between RemarkCommand and Command](../images/add-remark/RemarkCommandClass.png)","lastModifiedDate":"2023-09-12"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":62,"author":{"gitId":"-"},"content":"Following the convention in other commands, we add relevant messages as constants and use them.","lastModifiedDate":"2020-07-29"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":64,"author":{"gitId":"-"},"content":"**`RemarkCommand.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":66,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2021-08-01"},{"lineNumber":68,"author":{"gitId":"-"},"content":" + \": Edits the remark of the person identified \"","lastModifiedDate":"2021-08-01"},{"lineNumber":69,"author":{"gitId":"-"},"content":" + \"by the index number used in the last person listing. \"","lastModifiedDate":"2020-07-29"},{"lineNumber":70,"author":{"gitId":"-"},"content":" + \"Existing remark will be overwritten by the input.\\n\"","lastModifiedDate":"2020-07-29"},{"lineNumber":71,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2020-07-29"},{"lineNumber":72,"author":{"gitId":"-"},"content":" + \"r/ [REMARK]\\n\"","lastModifiedDate":"2020-07-29"},{"lineNumber":73,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2020-07-29"},{"lineNumber":74,"author":{"gitId":"-"},"content":" + \"r/ Likes to swim.\";","lastModifiedDate":"2020-07-29"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_IMPLEMENTED_YET \u003d","lastModifiedDate":"2021-08-01"},{"lineNumber":77,"author":{"gitId":"-"},"content":" \"Remark command not implemented yet\";","lastModifiedDate":"2021-08-01"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2020-07-29"},{"lineNumber":81,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_NOT_IMPLEMENTED_YET);","lastModifiedDate":"2020-07-29"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":83,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":85,"author":{"gitId":"-"},"content":"## Enhancing `RemarkCommand`","lastModifiedDate":"2020-07-29"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":87,"author":{"gitId":"-"},"content":"Let’s change `RemarkCommand` to parse input from the user.","lastModifiedDate":"2020-07-29"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":89,"author":{"gitId":"-"},"content":"### Make the command accept parameters","lastModifiedDate":"2020-07-29"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":91,"author":{"gitId":"-"},"content":"We start by modifying the constructor of `RemarkCommand` to accept an `Index` and a `String`. While we are at it, let’s change the error message to echo the values. While this is not a replacement for tests, it is an obvious way to tell if our code is functioning as intended.","lastModifiedDate":"2020-07-29"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":93,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":94,"author":{"gitId":"chaaaaun"},"content":"import static util.commons.scrolls.elder.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-12"},{"lineNumber":95,"author":{"gitId":"-"},"content":"//...","lastModifiedDate":"2020-07-29"},{"lineNumber":96,"author":{"gitId":"-"},"content":"public class RemarkCommand extends Command {","lastModifiedDate":"2020-07-29"},{"lineNumber":97,"author":{"gitId":"-"},"content":" //...","lastModifiedDate":"2020-07-29"},{"lineNumber":98,"author":{"gitId":"-"},"content":" public static final String MESSAGE_ARGUMENTS \u003d \"Index: %1$d, Remark: %2$s\";","lastModifiedDate":"2020-07-29"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":100,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2020-07-29"},{"lineNumber":101,"author":{"gitId":"-"},"content":" private final String remark;","lastModifiedDate":"2020-07-29"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":103,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-07-29"},{"lineNumber":104,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit the remark","lastModifiedDate":"2020-07-29"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * @param remark of the person to be updated to","lastModifiedDate":"2020-07-29"},{"lineNumber":106,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public RemarkCommand(Index index, String remark) {","lastModifiedDate":"2020-07-29"},{"lineNumber":108,"author":{"gitId":"-"},"content":" requireAllNonNull(index, remark);","lastModifiedDate":"2020-07-29"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":110,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2020-07-29"},{"lineNumber":111,"author":{"gitId":"-"},"content":" this.remark \u003d remark;","lastModifiedDate":"2020-07-29"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":114,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2020-07-29"},{"lineNumber":115,"author":{"gitId":"-"},"content":" throw new CommandException(","lastModifiedDate":"2021-08-01"},{"lineNumber":116,"author":{"gitId":"-"},"content":" String.format(MESSAGE_ARGUMENTS, index.getOneBased(), remark));","lastModifiedDate":"2021-08-01"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":119,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":120,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2020-07-29"},{"lineNumber":121,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2020-07-29"},{"lineNumber":122,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2020-07-29"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":125,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2020-07-29"},{"lineNumber":126,"author":{"gitId":"-"},"content":" if (!(other instanceof RemarkCommand)) {","lastModifiedDate":"2020-07-29"},{"lineNumber":127,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2020-07-29"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":130,"author":{"gitId":"-"},"content":" RemarkCommand e \u003d (RemarkCommand) other;","lastModifiedDate":"2020-07-29"},{"lineNumber":131,"author":{"gitId":"-"},"content":" return index.equals(e.index)","lastModifiedDate":"2020-07-29"},{"lineNumber":132,"author":{"gitId":"-"},"content":" \u0026\u0026 remark.equals(e.remark);","lastModifiedDate":"2020-07-29"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":134,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":135,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":137,"author":{"gitId":"-"},"content":"Your code should look something like [this](https://github.com/se-edu/addressbook-level3/commit/dc6d5139d08f6403da0ec624ea32bd79a2ae0cbf#diff-a8e35af8f9c251525063fae36c9852922a7e7195763018eacec60f3a4d87c594) after you are done.","lastModifiedDate":"2022-01-02"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":139,"author":{"gitId":"-"},"content":"### Parse user input","lastModifiedDate":"2020-07-29"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":141,"author":{"gitId":"-"},"content":"Now let’s move on to writing a parser that will extract the index and remark from the input provided by the user.","lastModifiedDate":"2020-07-29"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":143,"author":{"gitId":"-"},"content":"Create a `RemarkCommandParser` class in the `seedu.address.logic.parser` package. The class must extend the `Parser` interface.","lastModifiedDate":"2020-07-29"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":145,"author":{"gitId":"-"},"content":"![The relationship between Parser and RemarkCommandParser](../images/add-remark/RemarkCommandParserClass.png)","lastModifiedDate":"2023-09-12"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":147,"author":{"gitId":"-"},"content":"Thankfully, `ArgumentTokenizer#tokenize()` makes it trivial to parse user input. Let’s take a look at the JavaDoc provided for the function to understand what it does.","lastModifiedDate":"2020-07-29"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":149,"author":{"gitId":"-"},"content":"**`ArgumentTokenizer.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":151,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":152,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-07-29"},{"lineNumber":153,"author":{"gitId":"-"},"content":" * Tokenizes an arguments string and returns an {@code ArgumentMultimap}","lastModifiedDate":"2020-07-29"},{"lineNumber":154,"author":{"gitId":"-"},"content":" * object that maps prefixes to their respective argument values. Only the","lastModifiedDate":"2020-07-29"},{"lineNumber":155,"author":{"gitId":"-"},"content":" * given prefixes will be recognized in the arguments string.","lastModifiedDate":"2020-07-29"},{"lineNumber":156,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2020-07-29"},{"lineNumber":157,"author":{"gitId":"-"},"content":" * @param argsString Arguments string of the form:","lastModifiedDate":"2020-07-29"},{"lineNumber":158,"author":{"gitId":"-"},"content":" * {@code preamble \u003cprefix\u003evalue \u003cprefix\u003evalue ...}","lastModifiedDate":"2020-07-29"},{"lineNumber":159,"author":{"gitId":"-"},"content":" * @param prefixes Prefixes to tokenize the arguments string with","lastModifiedDate":"2020-07-29"},{"lineNumber":160,"author":{"gitId":"-"},"content":" * @return ArgumentMultimap object that maps prefixes to their","lastModifiedDate":"2020-07-29"},{"lineNumber":161,"author":{"gitId":"-"},"content":" * arguments","lastModifiedDate":"2020-07-29"},{"lineNumber":162,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":163,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":165,"author":{"gitId":"-"},"content":"We can tell `ArgumentTokenizer#tokenize()` to look out for our new prefix `r/` and it will return us an instance of `ArgumentMultimap`. Now let’s find out what we need to do in order to obtain the Index and String that we need. Let’s look through `ArgumentMultimap` :","lastModifiedDate":"2020-07-29"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":167,"author":{"gitId":"-"},"content":"**`ArgumentMultimap.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":169,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":170,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-07-29"},{"lineNumber":171,"author":{"gitId":"-"},"content":" * Returns the last value of {@code prefix}.","lastModifiedDate":"2020-07-29"},{"lineNumber":172,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":173,"author":{"gitId":"-"},"content":"public Optional\u003cString\u003e getValue(Prefix prefix) {","lastModifiedDate":"2020-07-29"},{"lineNumber":174,"author":{"gitId":"-"},"content":" List\u003cString\u003e values \u003d getAllValues(prefix);","lastModifiedDate":"2020-07-29"},{"lineNumber":175,"author":{"gitId":"-"},"content":" return values.isEmpty() ? Optional.empty() :","lastModifiedDate":"2020-07-29"},{"lineNumber":176,"author":{"gitId":"-"},"content":" Optional.of(values.get(values.size() - 1));","lastModifiedDate":"2020-07-29"},{"lineNumber":177,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":178,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":180,"author":{"gitId":"-"},"content":"This appears to be what we need to get a String of the remark. But what about the Index? Let\u0027s take a quick peek at existing `Command` that uses an index to see how it is done.","lastModifiedDate":"2020-07-29"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":182,"author":{"gitId":"-"},"content":"**`DeleteCommandParser.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":184,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":185,"author":{"gitId":"-"},"content":"Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2020-07-29"},{"lineNumber":186,"author":{"gitId":"-"},"content":"return new DeleteCommand(index);","lastModifiedDate":"2020-07-29"},{"lineNumber":187,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":189,"author":{"gitId":"-"},"content":"There appears to be another utility class that obtains an `Index` from the input provided by the user.","lastModifiedDate":"2020-07-29"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":191,"author":{"gitId":"-"},"content":"Now that we have the know-how to extract the data that we need from the user’s input, we can parse the user command and create a new instance of `RemarkCommand`, as given below.","lastModifiedDate":"2020-07-29"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":193,"author":{"gitId":"-"},"content":"**`RemarkCommandParser.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":195,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":196,"author":{"gitId":"-"},"content":"public RemarkCommand parse(String args) throws ParseException {","lastModifiedDate":"2020-07-29"},{"lineNumber":197,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2020-07-29"},{"lineNumber":198,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args,","lastModifiedDate":"2020-07-29"},{"lineNumber":199,"author":{"gitId":"-"},"content":" PREFIX_REMARK);","lastModifiedDate":"2020-07-29"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":201,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2020-07-29"},{"lineNumber":202,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2020-07-29"},{"lineNumber":203,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2020-07-29"},{"lineNumber":204,"author":{"gitId":"-"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2020-07-29"},{"lineNumber":205,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2020-07-29"},{"lineNumber":206,"author":{"gitId":"-"},"content":" RemarkCommand.MESSAGE_USAGE), ive);","lastModifiedDate":"2020-07-29"},{"lineNumber":207,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":209,"author":{"gitId":"-"},"content":" String remark \u003d argMultimap.getValue(PREFIX_REMARK).orElse(\"\");","lastModifiedDate":"2020-07-29"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":211,"author":{"gitId":"-"},"content":" return new RemarkCommand(index, remark);","lastModifiedDate":"2020-07-29"},{"lineNumber":212,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":213,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":215,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2020-07-29"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":217,"author":{"gitId":"-"},"content":":information_source: Don’t forget to update `AddressBookParser` to use our new `RemarkCommandParser`!","lastModifiedDate":"2020-07-29"},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":219,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-07-29"},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":221,"author":{"gitId":"-"},"content":"If you are stuck, check out the sample","lastModifiedDate":"2020-07-29"},{"lineNumber":222,"author":{"gitId":"-"},"content":"[here](https://github.com/se-edu/addressbook-level3/commit/dc6d5139d08f6403da0ec624ea32bd79a2ae0cbf#diff-8bf239e8e9529369b577701303ddd96af93178b4ed6735f91c2d8488b20c6b4a).","lastModifiedDate":"2022-01-02"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":224,"author":{"gitId":"-"},"content":"## Add `Remark` to the model","lastModifiedDate":"2020-07-29"},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":226,"author":{"gitId":"-"},"content":"Now that we have all the information that we need, let’s lay the groundwork for propagating the remarks added into the in-memory storage of person data. We achieve that by working with the `Person` model. Each field in a Person is implemented as a separate class (e.g. a `Name` object represents the person’s name). That means we should add a `Remark` class so that we can use a `Remark` object to represent a remark given to a person.","lastModifiedDate":"2020-07-29"},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":228,"author":{"gitId":"-"},"content":"### Add a new `Remark` class","lastModifiedDate":"2020-07-29"},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":230,"author":{"gitId":"-"},"content":"Create a new `Remark` in `seedu.address.model.person`. Since a `Remark` is a field that is similar to `Address`, we can reuse a significant bit of code.","lastModifiedDate":"2020-07-29"},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":232,"author":{"gitId":"-"},"content":"A copy-paste and search-replace later, you should have something like [this](https://github.com/se-edu/addressbook-level3/commit/4516e099699baa9e2d51801bd26f016d812dedcc#diff-41bb13c581e280c686198251ad6cc337cd5e27032772f06ed9bf7f1440995ece). Note how `Remark` has no constrains and thus does not require input","lastModifiedDate":"2022-01-02"},{"lineNumber":233,"author":{"gitId":"-"},"content":"validation.","lastModifiedDate":"2020-07-29"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":235,"author":{"gitId":"-"},"content":"### Make use of `Remark`","lastModifiedDate":"2020-07-29"},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":237,"author":{"gitId":"-"},"content":"Let’s change `RemarkCommand` and `RemarkCommandParser` to use the new `Remark` class instead of plain `String`. These should be relatively simple changes.","lastModifiedDate":"2020-07-29"},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":239,"author":{"gitId":"-"},"content":"## Add a placeholder element for remark to the UI","lastModifiedDate":"2020-07-29"},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":241,"author":{"gitId":"-"},"content":"Without getting too deep into `fxml`, let’s go on a 5 minute adventure to get some placeholder text to show up for each person.","lastModifiedDate":"2020-07-29"},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":243,"author":{"gitId":"chaaaaun"},"content":"Simply add the following to [`ui.scrolls.elder.PersonCard`](https://github.com/se-edu/addressbook-level3/commit/850b78879582f38accb05dd20c245963c65ea599#diff-639834f1e05afe2276a86372adf0fe5f69314642c2d93cfa543d614ce5a76688).","lastModifiedDate":"2024-03-12"},{"lineNumber":244,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":245,"author":{"gitId":"-"},"content":"**`PersonCard.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":247,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":248,"author":{"gitId":"-"},"content":"@FXML","lastModifiedDate":"2020-07-29"},{"lineNumber":249,"author":{"gitId":"-"},"content":"private Label remark;","lastModifiedDate":"2020-07-29"},{"lineNumber":250,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":251,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":252,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":253,"author":{"gitId":"-"},"content":"`@FXML` is an annotation that marks a private or protected field and makes it accessible to FXML. It might sound like Greek to you right now, don’t worry — we will get back to it later.","lastModifiedDate":"2020-07-29"},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":255,"author":{"gitId":"-"},"content":"Then insert the following into [`main/resources/view/PersonListCard.fxml`](https://github.com/se-edu/addressbook-level3/commit/850b78879582f38accb05dd20c245963c65ea599#diff-d44c4f51c24f6253c277a2bb9bc440b8064d9c15ad7cb7ceda280bca032efce9).","lastModifiedDate":"2022-01-02"},{"lineNumber":256,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":257,"author":{"gitId":"-"},"content":"**`PersonListCard.fxml`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":259,"author":{"gitId":"-"},"content":"``` xml","lastModifiedDate":"2020-07-29"},{"lineNumber":260,"author":{"gitId":"-"},"content":"\u003cLabel fx:id\u003d\"remark\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$remark\" /\u003e","lastModifiedDate":"2020-07-29"},{"lineNumber":261,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":263,"author":{"gitId":"-"},"content":"That’s it! Fire up the application again and you should see something like this:","lastModifiedDate":"2020-07-29"},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":265,"author":{"gitId":"-"},"content":"![$remark shows up in each entry](../images/add-remark/$Remark.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":266,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":267,"author":{"gitId":"-"},"content":"## Modify `Person` to support a `Remark` field","lastModifiedDate":"2020-07-29"},{"lineNumber":268,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":269,"author":{"gitId":"-"},"content":"Since `PersonCard` displays data from a `Person`, we need to update `Person` to get our `Remark` displayed!","lastModifiedDate":"2020-07-29"},{"lineNumber":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":271,"author":{"gitId":"-"},"content":"### Modify `Person`","lastModifiedDate":"2020-07-29"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":273,"author":{"gitId":"-"},"content":"We change the constructor of `Person` to take a `Remark`. We will also need to define new fields and accessors accordingly to store our new addition.","lastModifiedDate":"2020-07-29"},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":275,"author":{"gitId":"-"},"content":"### Update other usages of `Person`","lastModifiedDate":"2020-07-29"},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":277,"author":{"gitId":"-"},"content":"Unfortunately, a change to `Person` will cause other commands to break, you will have to modify these commands to use the updated `Person`!","lastModifiedDate":"2020-07-29"},{"lineNumber":278,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":279,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2020-07-29"},{"lineNumber":280,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":281,"author":{"gitId":"-"},"content":":bulb: Use the `Find Usages` feature in IntelliJ IDEA on the `Person` class to find these commands.","lastModifiedDate":"2020-07-29"},{"lineNumber":282,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":283,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-07-29"},{"lineNumber":284,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":285,"author":{"gitId":"-"},"content":"Refer to [this commit](https://github.com/se-edu/addressbook-level3/commit/ce998c37e65b92d35c91d28c7822cd139c2c0a5c) and check that you have got everything in order!","lastModifiedDate":"2020-07-29"},{"lineNumber":286,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":288,"author":{"gitId":"-"},"content":"## Updating Storage","lastModifiedDate":"2020-07-29"},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":290,"author":{"gitId":"-"},"content":"AddressBook stores data by serializing `JsonAdaptedPerson` into `json` with the help of an external library — Jackson. Let’s update `JsonAdaptedPerson` to work with our new `Person`!","lastModifiedDate":"2020-07-29"},{"lineNumber":291,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":292,"author":{"gitId":"-"},"content":"While the changes to code may be minimal, the test data will have to be updated as well.","lastModifiedDate":"2020-07-29"},{"lineNumber":293,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":294,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-warning\"\u003e","lastModifiedDate":"2020-07-29"},{"lineNumber":295,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":296,"author":{"gitId":"-"},"content":":exclamation: You must delete AddressBook’s storage file located at `/data/addressbook.json` before running it! Not doing so will cause AddressBook to default to an empty address book!","lastModifiedDate":"2020-07-29"},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":298,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-07-29"},{"lineNumber":299,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":300,"author":{"gitId":"-"},"content":"Check out [this commit](https://github.com/se-edu/addressbook-level3/commit/556cbd0e03ff224d7a68afba171ad2eb0ce56bbf)","lastModifiedDate":"2020-07-29"},{"lineNumber":301,"author":{"gitId":"-"},"content":"to see what the changes entail.","lastModifiedDate":"2020-07-29"},{"lineNumber":302,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":303,"author":{"gitId":"-"},"content":"## Finalizing the UI","lastModifiedDate":"2020-07-29"},{"lineNumber":304,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":305,"author":{"gitId":"-"},"content":"Now that we have finalized the `Person` class and its dependencies, we can now bind the `Remark` field to the UI.","lastModifiedDate":"2020-07-29"},{"lineNumber":306,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":307,"author":{"gitId":"-"},"content":"Just add [this one line of code!](https://github.com/se-edu/addressbook-level3/commit/5b98fee11b6b3f5749b6b943c4f3bd3aa049b692)","lastModifiedDate":"2020-07-29"},{"lineNumber":308,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":309,"author":{"gitId":"-"},"content":"**`PersonCard.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":310,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":311,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":312,"author":{"gitId":"-"},"content":"public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2020-07-29"},{"lineNumber":313,"author":{"gitId":"-"},"content":" //...","lastModifiedDate":"2020-07-29"},{"lineNumber":314,"author":{"gitId":"-"},"content":" remark.setText(person.getRemark().value);","lastModifiedDate":"2020-07-29"},{"lineNumber":315,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":316,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":317,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":318,"author":{"gitId":"-"},"content":"![The remark label is bound properly!](../images/add-remark/RemarkBound.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":319,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":320,"author":{"gitId":"-"},"content":"## Putting everything together","lastModifiedDate":"2020-07-29"},{"lineNumber":321,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":322,"author":{"gitId":"-"},"content":"After the previous step, we notice a peculiar regression — we went from displaying something to nothing at all. However, this is expected behavior as we are yet to update the `RemarkCommand` to make use of the code we\u0027ve been adding in the last few steps.","lastModifiedDate":"2020-07-29"},{"lineNumber":323,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":324,"author":{"gitId":"-"},"content":"### Update `RemarkCommand` and `RemarkCommandParser`","lastModifiedDate":"2020-07-29"},{"lineNumber":325,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":326,"author":{"gitId":"-"},"content":"In this last step, we modify `RemarkCommand#execute()` to change the `Remark` of a `Person`. Since all fields in a `Person` are immutable, we create a new instance of a `Person` with the values that we want and","lastModifiedDate":"2020-07-29"},{"lineNumber":327,"author":{"gitId":"-"},"content":"save it with `Model#setPerson()`.","lastModifiedDate":"2020-07-29"},{"lineNumber":328,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":329,"author":{"gitId":"-"},"content":"**`RemarkCommand.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":330,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":331,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":332,"author":{"gitId":"-"},"content":"//...","lastModifiedDate":"2020-07-29"},{"lineNumber":333,"author":{"gitId":"-"},"content":" public static final String MESSAGE_ADD_REMARK_SUCCESS \u003d \"Added remark to Person: %1$s\";","lastModifiedDate":"2020-07-29"},{"lineNumber":334,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DELETE_REMARK_SUCCESS \u003d \"Removed remark from Person: %1$s\";","lastModifiedDate":"2020-07-29"},{"lineNumber":335,"author":{"gitId":"-"},"content":"//...","lastModifiedDate":"2020-07-29"},{"lineNumber":336,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":337,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2020-07-29"},{"lineNumber":338,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2020-07-29"},{"lineNumber":339,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":340,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2020-07-29"},{"lineNumber":341,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2020-07-29"},{"lineNumber":342,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":343,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":344,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2020-07-29"},{"lineNumber":345,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new Person(","lastModifiedDate":"2021-08-01"},{"lineNumber":346,"author":{"gitId":"-"},"content":" personToEdit.getName(), personToEdit.getPhone(), personToEdit.getEmail(),","lastModifiedDate":"2021-08-01"},{"lineNumber":347,"author":{"gitId":"-"},"content":" personToEdit.getAddress(), remark, personToEdit.getTags());","lastModifiedDate":"2020-07-29"},{"lineNumber":348,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":349,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2020-07-29"},{"lineNumber":350,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2020-07-29"},{"lineNumber":351,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":352,"author":{"gitId":"-"},"content":" return new CommandResult(generateSuccessMessage(editedPerson));","lastModifiedDate":"2020-07-29"},{"lineNumber":353,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":354,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":355,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-07-29"},{"lineNumber":356,"author":{"gitId":"-"},"content":" * Generates a command execution success message based on whether","lastModifiedDate":"2021-08-01"},{"lineNumber":357,"author":{"gitId":"-"},"content":" * the remark is added to or removed from","lastModifiedDate":"2021-08-01"},{"lineNumber":358,"author":{"gitId":"-"},"content":" * {@code personToEdit}.","lastModifiedDate":"2020-07-29"},{"lineNumber":359,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":360,"author":{"gitId":"-"},"content":" private String generateSuccessMessage(Person personToEdit) {","lastModifiedDate":"2020-07-29"},{"lineNumber":361,"author":{"gitId":"-"},"content":" String message \u003d !remark.value.isEmpty() ? MESSAGE_ADD_REMARK_SUCCESS : MESSAGE_DELETE_REMARK_SUCCESS;","lastModifiedDate":"2020-07-29"},{"lineNumber":362,"author":{"gitId":"-"},"content":" return String.format(message, personToEdit);","lastModifiedDate":"2020-07-29"},{"lineNumber":363,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":364,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":365,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":366,"author":{"gitId":"-"},"content":"![Congratulations!](../images/add-remark/RemarkComplete.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":367,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":368,"author":{"gitId":"-"},"content":"## Writing tests","lastModifiedDate":"2020-07-29"},{"lineNumber":369,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":370,"author":{"gitId":"-"},"content":"Tests are crucial to ensuring that bugs don’t slip into the codebase unnoticed. This is especially true for large code bases where a change might lead to unintended behavior.","lastModifiedDate":"2020-07-29"},{"lineNumber":371,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":372,"author":{"gitId":"-"},"content":"Let’s verify the correctness of our code by writing some tests!","lastModifiedDate":"2020-07-29"},{"lineNumber":373,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":374,"author":{"gitId":"-"},"content":"Of course you can simply add the test cases manually, like you\u0027ve been doing all along this tutorial. The result would be like the test cases in [here](https://github.com/se-edu/addressbook-level3/commit/fac8f3fd855d55831ca0cc73313b5943d49d4d6e#diff-ff58f7c10338b34f76645df49b71ecb2bafaf7611b20e7ff59ebc98475538a01). Alternatively, you can get the help of IntelliJ to generate the skeletons of the test cases, as explained in the next section.","lastModifiedDate":"2022-01-02"},{"lineNumber":375,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-08-01"},{"lineNumber":376,"author":{"gitId":"-"},"content":"### Automatically generating tests","lastModifiedDate":"2020-07-29"},{"lineNumber":377,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":378,"author":{"gitId":"-"},"content":"The goal is to write effective and efficient tests to ensure that `RemarkCommand#execute()` behaves as expected.","lastModifiedDate":"2020-07-29"},{"lineNumber":379,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":380,"author":{"gitId":"-"},"content":"The convention for test names is `methodName_testScenario_expectedResult`. An example would be","lastModifiedDate":"2020-07-29"},{"lineNumber":381,"author":{"gitId":"-"},"content":"`execute_filteredList_success`.","lastModifiedDate":"2020-07-29"},{"lineNumber":382,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":383,"author":{"gitId":"-"},"content":"Let’s create a test for `RemarkCommand#execute()` to test that adding a remark works. On `IntelliJ IDEA` you can bring up the context menu and choose to `Go To` \\\u003e `Test` or use the appropriate keyboard shortcut.","lastModifiedDate":"2020-07-29"},{"lineNumber":384,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":385,"author":{"gitId":"-"},"content":"![Using the context menu to jump to tests](../images/add-remark/ContextMenu.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":386,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":387,"author":{"gitId":"-"},"content":"Then, create a test for the `execute` method.","lastModifiedDate":"2020-07-29"},{"lineNumber":388,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":389,"author":{"gitId":"-"},"content":"![Creating a test for `execute`.](../images/add-remark/CreateTest.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":390,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":391,"author":{"gitId":"-"},"content":"Following convention, let’s change the name of the generated method to `execute_addRemarkUnfilteredList_success`.","lastModifiedDate":"2020-07-29"},{"lineNumber":392,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":393,"author":{"gitId":"-"},"content":"Let’s use the utility functions provided in `CommandTestUtil`. The functions ensure that commands produce the expected `CommandResult` and output the correct message. In this case, `CommandTestUtil#assertCommandSuccess` is the best fit as we are testing that a `RemarkCommand` will successfully add a `Remark`.","lastModifiedDate":"2020-07-29"},{"lineNumber":394,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":395,"author":{"gitId":"-"},"content":"You should end up with a test that looks something like [this](https://github.com/se-edu/addressbook-level3/commit/fac8f3fd855d55831ca0cc73313b5943d49d4d6e#diff-ff58f7c10338b34f76645df49b71ecb2bafaf7611b20e7ff59ebc98475538a01R36-R49).","lastModifiedDate":"2022-01-02"},{"lineNumber":396,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":397,"author":{"gitId":"-"},"content":"## Conclusion","lastModifiedDate":"2020-07-29"},{"lineNumber":398,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":399,"author":{"gitId":"-"},"content":"This concludes the tutorial for adding a new `Command` to AddressBook.","lastModifiedDate":"2020-07-29"}],"authorContributionMap":{"chaaaaun":3,"-":396}},{"path":"docs/tutorials/RemovingFields.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: \"Tutorial: Removing Fields\"","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003e Perfection is achieved, not when there is nothing more to add, but when there is nothing left to take away.","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003e — Antoine de Saint-Exupery","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"When working on an existing code base, you will most likely find that some features that are no longer necessary.","lastModifiedDate":"2021-08-01"},{"lineNumber":11,"author":{"gitId":"-"},"content":"This tutorial aims to give you some practice on such a code \u0027removal\u0027 activity by removing the `address` field from `Person` class.","lastModifiedDate":"2021-08-01"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-08-01"},{"lineNumber":13,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-success\"\u003e","lastModifiedDate":"2021-08-01"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-08-01"},{"lineNumber":15,"author":{"gitId":"-"},"content":"**If you have done the [Add `remark` command tutorial](AddRemark.html) already**, you should know where the code had to be updated to add the field `remark`. From that experience, you can deduce where the code needs to be changed to _remove_ that field too. The removing of the `address` field can be done similarly.","lastModifiedDate":"2021-08-01"},{"lineNumber":16,"author":{"gitId":"-"},"content":"\u003cbr\u003e","lastModifiedDate":"2021-08-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":"\u003cbr\u003e","lastModifiedDate":"2021-08-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":"However, if you have no such prior knowledge, removing a field can take a quite a bit of detective work. This tutorial takes you through that process. **At least have a read even if you don\u0027t actually do the steps yourself.**","lastModifiedDate":"2021-08-01"},{"lineNumber":19,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-08-01"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"{:toc}","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"## Safely deleting `Address`","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":"IntelliJ IDEA provides a refactoring tool that can identify *most* parts of a removal easily. Let’s try to use it as much as we can.","lastModifiedDate":"2021-08-01"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"### Assisted refactoring","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"chaaaaun"},"content":"The `address` field in `Person` is actually an instance of the `person.model.scrolls.elder.Address` class. Since removing the `Address` class will break the application, we start by identifying `Address`\u0027s usages. This allows us to see code that depends on `Address` to function properly and edit them on a case-by-case basis. Right-click the `Address` class and select `Refactor` \\\u003e `Safe Delete` through the menu.","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":"* :bulb: To make things simpler, you can unselect the options `Search in comments and strings` and `Search for text occurrences`","lastModifiedDate":"2021-08-01"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":"![Usages detected](../images/remove/UnsafeDelete.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":"Choose to `View Usages` and you should be presented with a list of `Safe Delete Conflicts`. These conflicts describe locations in which the `Address` class is used.","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"![List of conflicts](../images/remove/SafeDeleteConflicts.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"Remove usages of `Address` by performing `Safe Delete`s on each entry i.e., double-click on the entry (which takes you to the code in concern, right-click on that entity, and choose `Refactor` -\u003e `Safe delete` as before). You will need to exercise discretion when removing usages of `Address`. Functions like `ParserUtil#parseAddress()` can be safely removed but its usages must be removed as well. Other usages like in `EditPersonDescriptor` may require more careful inspection.","lastModifiedDate":"2021-08-01"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"Let’s try removing references to `Address` in `EditPersonDescriptor`.","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"1. Safe delete the field `address` in `EditPersonDescriptor`.","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"1. Select `Yes` when prompted to remove getters and setters.","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"1. Select `View Usages` again.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" ![UnsafeDeleteOnField](../images/remove/UnsafeDeleteOnField.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"1. Remove the usages of `address` and select `Do refactor` when you are done.","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" :bulb: **Tip:** Removing usages may result in errors. Exercise discretion and fix them. For example, removing the `address` field from the `Person` class will require you to modify its constructor.","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"1. Repeat the steps for the remaining usages of `Address`","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"After you are done, verify that the application still works by compiling and running it again.","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":"### Manual refactoring","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":"Unfortunately, there are usages of `Address` that IntelliJ IDEA cannot identify. You can find them by searching for instances of the word `address` in your code (`Edit` \\\u003e `Find` \\\u003e `Find in path`).","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"Places of interest to look out for would be resources used by the application. `main/resources` contains images and `fxml` files used by the application and `test/resources` contains test data. For example, there is a `$address` in each `PersonCard` that has not been removed nor identified.","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"![$address](../images/remove/$address.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"A quick look at the `PersonCard` class and its `fxml` file quickly reveals why it slipped past the automated refactoring.","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"**`PersonCard.java`**","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"@FXML","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":"private Label address;","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"**`PersonCard.fxml`**","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"``` xml","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"\u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"\u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" /\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"\u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"After removing the `Label`, we can proceed to formally test our code. If everything went well, you should have most of your tests pass. Fix any remaining errors until the tests all pass.","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"## Tidying up","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":"At this point, your application is working as intended and all your tests are passing. What’s left to do is to clean up references to `Address` in test data and documentation.","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":"In `src/test/data/`, data meant for testing purposes are stored. While keeping the `address` field in the json files does not cause the tests to fail, it is not good practice to let cruft from old features accumulate.","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"**`invalidPersonAddressBook.json`:**","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"```json","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"{","lastModifiedDate":"2020-05-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":" \"persons\": [ {","lastModifiedDate":"2020-05-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":" \"name\": \"Person with invalid name field: Ha!ns Mu@ster\",","lastModifiedDate":"2020-05-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":" \"phone\": \"9482424\",","lastModifiedDate":"2020-05-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":" \"email\": \"hans@example.com\",","lastModifiedDate":"2020-05-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":" \"address\": \"4th street\"","lastModifiedDate":"2020-05-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":" } ]","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-05-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":"You can go through each individual `json` file and manually remove the `address` field.","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"chaaaaun":1,"-":111}},{"path":"docs/tutorials/TracingCode.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: \"Tutorial: Tracing code\"","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003e Indeed, the ratio of time spent reading versus writing is well over 10 to 1. We are constantly reading old code as part of the effort to write new code. …​\\[Therefore,\\] making it easy to read makes it easier to write.","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003e — Robert C. Martin Clean Code: A Handbook of Agile Software Craftsmanship","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"When trying to understand an unfamiliar code base, one common strategy used is to trace some representative execution path through the code base. One easy way to trace an execution path is to use a debugger to step through the code. In this tutorial, you will be using the IntelliJ IDEA’s debugger to trace the execution path of a specific user command.","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"{:toc}","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"## Before we start","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"Before we jump into the code, it is useful to get an idea of the overall structure and the high-level behavior of the application. This is provided in the \u0027Architecture\u0027 section of the developer guide. In particular, the architecture diagram (reproduced below), tells us that the App consists of several components.","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"![ArchitectureDiagram](../images/ArchitectureDiagram.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"It also has a sequence diagram (reproduced below) that tells us how a command propagates through the App.","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"../images/ArchitectureSequenceDiagram.png\" width\u003d\"550\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"Note how the diagram shows only the execution flows _between_ the main components. That is, it does not show details of the execution path *inside* each component. By hiding those details, the diagram aims to inform the reader about the overall execution path of a command without overwhelming the reader with too much details. In this tutorial, you aim to find those omitted details so that you get a more in-depth understanding of how the code works.","lastModifiedDate":"2021-07-31"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":"Before we proceed, ensure that you have done the following:","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":"1. Read the [*Architecture* section of the DG](../DeveloperGuide.md#architecture)","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"1. Set up the project in Intellij IDEA","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"1. Learn basic debugging features of Intellij IDEA","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * If you are using a different IDE, we\u0027ll leave it to you to figure out the equivalent feature to use in your IDE.","lastModifiedDate":"2021-07-31"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * If you are not using an IDE, we\u0027ll let you figure out how to achieve the same using your coding toolchain.","lastModifiedDate":"2021-07-31"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":"## Setting a breakpoint","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":"As you know, the first step of debugging is to put in a breakpoint where you want the debugger to pause the execution. For example, if you are trying to understand how the App starts up, you would put a breakpoint in the first statement of the `main` method.","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"In our case, we would want to begin the tracing at the very point where the App start processing user input (i.e., somewhere in the UI component), and then trace through how the execution proceeds through the UI component. However, the execution path through a GUI is often somewhat obscure due to various *event-driven mechanisms* used by GUI frameworks, which happens to be the case here too. Therefore, let us put the breakpoint where the `UI` transfers control to the `Logic` component.","lastModifiedDate":"2021-07-31"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"../images/ArchitectureSequenceDiagram.png\" width\u003d\"550\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":42,"author":{"gitId":"chaaaaun"},"content":"According to the sequence diagram you saw earlier (and repeated above for reference), the `UI` component yields control to the `Logic` component through a method named `execute`. Searching through the code base for an `execute()` method that belongs to the `Logic` component yields a promising candidate in `logic.scrolls.elder.Logic`.","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":44,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"../images/tracing/searchResultsForExecuteMethod.png\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":46,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":48,"author":{"gitId":"-"},"content":":bulb: **Intellij Tip:** The [\u0027**Search Everywhere**\u0027 feature](https://www.jetbrains.com/help/idea/searching-everywhere.html) can be used here. In particular, the \u0027**Find Symbol**\u0027 (\u0027Symbol\u0027 here refers to methods, variables, classes etc.) variant of that feature is quite useful here as we are looking for a _method_ named `execute`, not simply the text `execute`.","lastModifiedDate":"2021-07-31"},{"lineNumber":49,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":51,"author":{"gitId":"chaaaaun"},"content":"A quick look at the `logic.scrolls.elder.Logic` (an extract given below) confirms that this indeed might be what we’re looking for.","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":53,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2021-07-31"},{"lineNumber":54,"author":{"gitId":"-"},"content":"public interface Logic {","lastModifiedDate":"2021-07-31"},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2021-07-31"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2021-07-31"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * @param commandText The command as entered by the user.","lastModifiedDate":"2021-07-31"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * @return the result of the command execution.","lastModifiedDate":"2021-07-31"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2021-07-31"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * @throws ParseException If an error occurs during parsing.","lastModifiedDate":"2021-07-31"},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2021-07-31"},{"lineNumber":62,"author":{"gitId":"-"},"content":" CommandResult execute(String commandText) throws CommandException, ParseException;","lastModifiedDate":"2021-07-31"},{"lineNumber":63,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2021-07-31"},{"lineNumber":64,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-07-31"},{"lineNumber":65,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2021-07-31"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":67,"author":{"gitId":"-"},"content":"But apparently, this is an interface, not a concrete implementation.","lastModifiedDate":"2021-07-31"},{"lineNumber":68,"author":{"gitId":"-"},"content":"That should be fine because the [Architecture section of the Developer Guide](../DeveloperGuide.html#architecture) tells us that components interact through interfaces. Here\u0027s the relevant diagram:","lastModifiedDate":"2021-07-31"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":70,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"../images/ComponentManagers.png\" width\u003d\"300\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":72,"author":{"gitId":"-"},"content":"Next, let\u0027s find out which statement(s) in the `UI` code is calling this method, thus transferring control from the `UI` to the `Logic`.","lastModifiedDate":"2021-07-31"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":74,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":76,"author":{"gitId":"-"},"content":":bulb: **Intellij Tip:** The [\u0027**Find Usages**\u0027 feature](https://www.jetbrains.com/help/idea/find-highlight-usages.html#find-usages) can find from which parts of the code a class/method/variable is being used.","lastModifiedDate":"2021-07-31"},{"lineNumber":77,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"![`Find Usages` tool window. `Edit` \\\u003e `Find` \\\u003e `Find Usages`.](../images/tracing/FindUsages.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"Bingo\\! `MainWindow#executeCommand()` seems to be exactly what we’re looking for\\!","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"Now let’s set the breakpoint. First, double-click the item to reach the corresponding code. Once there, click on the left gutter to set a breakpoint, as shown below.","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" ![LeftGutter](../images/tracing/LeftGutter.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"## Tracing the execution path","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"Recall from the User Guide that the `edit` command has the format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAG]…​` For this tutorial we will be issuing the command `edit 1 n/Alice Yeoh`.","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":":bulb: **Tip:** Over the course of the debugging session, you will encounter every major component in the application. Try to keep track of what happens inside the component and where the execution transfers to another component.","lastModifiedDate":"2021-07-31"},{"lineNumber":93,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":"1. To start the debugging session, simply `Run` \\\u003e `Debug Main`","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":"1. When the GUI appears, enter `edit 1 n/Alice Yeoh` into the command box and press `Enter`.","lastModifiedDate":"2021-07-31"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"1. The Debugger tool window should show up and show something like this:\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":100,"author":{"gitId":"-"},"content":" ![DebuggerStep1](../images/tracing/DebuggerStep1.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"1. Use the _Show execution point_ feature to jump to the line of code that we stopped at:\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":103,"author":{"gitId":"-"},"content":" ![ShowExecutionPoint](../images/tracing/ShowExecutionPoint.png)\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":104,"author":{"gitId":"-"},"content":" `CommandResult commandResult \u003d logic.execute(commandText);` is the line that you end up at (i.e., the place where we put the breakpoint).","lastModifiedDate":"2021-07-31"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":"1. We are interested in the `logic.execute(commandText)` portion of that line so let’s _Step in_ into that method call:\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":107,"author":{"gitId":"-"},"content":" ![StepInto](../images/tracing/StepInto.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":"1. We end up in `LogicManager#execute()` (not `Logic#execute` -- but this is expected because we know the `execute()` method in the `Logic` interface is actually implemented by the `LogicManager` class). Let’s take a look at the body of the method. Given below is the same code, with additional explanatory comments.","lastModifiedDate":"2021-07-31"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":" **LogicManager\\#execute().**","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":" ``` java","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-05-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":" public CommandResult execute(String commandText)","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":" throws CommandException, ParseException {","lastModifiedDate":"2020-05-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":" //Logging, safe to ignore","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":" logger.info(\"----------------[USER COMMAND][\" + commandText + \"]\");","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":" CommandResult commandResult;","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":" //Parse user input from String to a Command","lastModifiedDate":"2020-05-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":" Command command \u003d addressBookParser.parseCommand(commandText);","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":" //Executes the Command and stores the result","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":" commandResult \u003d command.execute(model);","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2020-05-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":" //We can deduce that the previous line of code modifies model in some way","lastModifiedDate":"2020-05-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":" // since it\u0027s being stored here.","lastModifiedDate":"2020-05-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":" storage.saveAddressBook(model.getAddressBook());","lastModifiedDate":"2020-05-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2020-05-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":" throw new CommandException(FILE_OPS_ERROR_MESSAGE + ioe, ioe);","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2020-05-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"1. `LogicManager#execute()` appears to delegate most of the heavy lifting to other components. Let’s take a closer look at each one.","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":"1. _Step over_ the logging code since it is of no interest to us now.","lastModifiedDate":"2021-07-31"},{"lineNumber":142,"author":{"gitId":"-"},"content":" ![StepOver](../images/tracing/StepOver.png)","lastModifiedDate":"2021-07-31"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"1. _Step into_ the line where user input in parsed from a String to a Command, which should bring you to the `AddressBookParser#parseCommand()` method (partial code given below):","lastModifiedDate":"2021-07-31"},{"lineNumber":145,"author":{"gitId":"-"},"content":" ``` java","lastModifiedDate":"2020-05-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":"1. _Step over_ the statements in that method until you reach the `switch` statement. The \u0027Variables\u0027 window now shows the value of both `commandWord` and `arguments`:\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":154,"author":{"gitId":"-"},"content":" ![Variables](../images/tracing/Variables.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"1. We see that the value of `commandWord` is now `edit` but `arguments` is still not processed in any meaningful way.","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"1. Stepping through the `switch` block, we end up at a call to `EditCommandParser().parse()` as expected (because the command we typed is an edit command).","lastModifiedDate":"2021-07-31"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":" ``` java","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"1. Let’s see what `EditCommandParser#parse()` does by stepping into it. You might have to click the \u0027step into\u0027 button multiple times here because there are two method calls in that statement: `EditCommandParser()` and `parse()`.","lastModifiedDate":"2021-07-31"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":" \u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e:bulb: **Intellij Tip:** Sometimes, you might end up stepping into functions that are not of interest. Simply use the `step out` button to get out of them!","lastModifiedDate":"2021-07-31"},{"lineNumber":170,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":"1. Stepping through the method shows that it calls `ArgumentTokenizer#tokenize()` and `ParserUtil#parseIndex()` to obtain the arguments and index required.","lastModifiedDate":"2021-07-31"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":174,"author":{"gitId":"-"},"content":"1. The rest of the method seems to exhaustively check for the existence of each possible parameter of the `edit` command and store any possible changes in an `EditPersonDescriptor`. Recall that we can verify the contents of `editPersonDesciptor` through the \u0027Variables\u0027 window.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":175,"author":{"gitId":"-"},"content":" ![EditCommand](../images/tracing/EditCommand.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":"1. As you just traced through some code involved in parsing a command, you can take a look at this class diagram to see where the various parsing-related classes you encountered fit into the design of the `Logic` component.","lastModifiedDate":"2021-07-31"},{"lineNumber":178,"author":{"gitId":"-"},"content":" \u003cimg src\u003d\"../images/ParserClasses.png\" width\u003d\"600\"/\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":180,"author":{"gitId":"-"},"content":"1. Let’s continue stepping through until we return to `LogicManager#execute()`.","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":" The sequence diagram below shows the details of the execution path through the Logic component. Does the execution path you traced in the code so far match the diagram?\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":183,"author":{"gitId":"-"},"content":" ![Tracing an `edit` command through the Logic component](../images/tracing/LogicSequenceDiagram.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":"1. Now, step over until you read the statement that calls the `execute()` method of the `EditCommand` object received, and step into that `execute()` method (partial code given below):","lastModifiedDate":"2021-07-31"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":" **`EditCommand#execute()`:**","lastModifiedDate":"2021-07-31"},{"lineNumber":188,"author":{"gitId":"-"},"content":" ``` java","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-05-23"},{"lineNumber":190,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2020-05-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2020-05-23"},{"lineNumber":192,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2020-05-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2020-05-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2020-05-23"},{"lineNumber":198,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2020-05-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, editedPerson));","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":201,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":"1. As suspected, `command#execute()` does indeed make changes to the `model` object. Specifically,","lastModifiedDate":"2021-07-31"},{"lineNumber":204,"author":{"gitId":"-"},"content":" * it uses the `setPerson()` method (defined in the interface `Model` and implemented in `ModelManager` as per the usual pattern) to update the person data.","lastModifiedDate":"2021-07-31"},{"lineNumber":205,"author":{"gitId":"-"},"content":" * it uses the `updateFilteredPersonList` method to ask the `Model` to populate the \u0027filtered list\u0027 with _all_ persons.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":206,"author":{"gitId":"-"},"content":" FYI, The \u0027filtered list\u0027 is the list of persons resulting from the most recent operation that will be shown to the user immediately after. For the `edit` command, we populate it with all the persons so that the user can see the edited person along with all other persons. If this was a `find` command, we would be setting that list to contain the search results instead.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":207,"author":{"gitId":"-"},"content":" To provide some context, given below is the class diagram of the `Model` component. See if you can figure out where the \u0027filtered list\u0027 of persons is being tracked.","lastModifiedDate":"2021-07-31"},{"lineNumber":208,"author":{"gitId":"-"},"content":" \u003cimg src\u003d\"../images/ModelClassDiagram.png\" width\u003d\"450\" /\u003e\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":209,"author":{"gitId":"-"},"content":" * :bulb: This may be a good time to read through the [`Model` component section of the DG](../DeveloperGuide.html#model-component)","lastModifiedDate":"2021-07-31"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":"1. As you step through the rest of the statements in the `EditCommand#execute()` method, you\u0027ll see that it creates a `CommandResult` object (containing information about the result of the execution) and returns it.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":212,"author":{"gitId":"-"},"content":" Advancing the debugger by one more step should take you back to the middle of the `LogicManager#execute()` method.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":214,"author":{"gitId":"-"},"content":"1. Given that you have already seen quite a few classes in the `Logic` component in action, see if you can identify in this partial class diagram some of the classes you\u0027ve encountered so far, and see how they fit into the class structure of the `Logic` component:","lastModifiedDate":"2021-07-31"},{"lineNumber":215,"author":{"gitId":"-"},"content":" \u003cimg src\u003d\"../images/LogicClassDiagram.png\" width\u003d\"550\"/\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":216,"author":{"gitId":"-"},"content":" * :bulb: This may be a good time to read through the [`Logic` component section of the DG](../DeveloperGuide.html#logic-component)","lastModifiedDate":"2021-07-31"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":218,"author":{"gitId":"-"},"content":"1. Similar to before, you can step over/into statements in the `LogicManager#execute()` method to examine how the control is transferred to the `Storage` component and what happens inside that component.","lastModifiedDate":"2021-07-31"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":220,"author":{"gitId":"-"},"content":" \u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e:bulb: **Intellij Tip:** When trying to step into a statement such as `storage.saveAddressBook(model.getAddressBook())` which contains multiple method calls, Intellij will let you choose (by clicking) which one you want to step into.","lastModifiedDate":"2021-07-31"},{"lineNumber":221,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":223,"author":{"gitId":"-"},"content":"1. As you step through the code inside the `Storage` component, you will eventually arrive at the `JsonAddressBook#saveAddressBook()` method which calls the `JsonSerializableAddressBook` constructor, to create an object that can be _serialized_ (i.e., stored in storage medium) in JSON format. That constructor is given below (with added line breaks for easier readability):","lastModifiedDate":"2021-07-31"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":225,"author":{"gitId":"-"},"content":" **`JsonSerializableAddressBook` constructor:**","lastModifiedDate":"2021-07-31"},{"lineNumber":226,"author":{"gitId":"-"},"content":" ``` java","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-23"},{"lineNumber":228,"author":{"gitId":"-"},"content":" * Converts a given {@code ReadOnlyAddressBook} into this class for Jackson use.","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2020-05-23"},{"lineNumber":230,"author":{"gitId":"-"},"content":" * @param source future changes to this will not affect the created","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"author":{"gitId":"-"},"content":" * {@code JsonSerializableAddressBook}.","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":" public JsonSerializableAddressBook(ReadOnlyAddressBook source) {","lastModifiedDate":"2020-05-23"},{"lineNumber":234,"author":{"gitId":"-"},"content":" persons.addAll(","lastModifiedDate":"2020-05-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":" source.getPersonList()","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":" .stream()","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":" .map(JsonAdaptedPerson::new)","lastModifiedDate":"2020-05-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":"1. It appears that a `JsonAdaptedPerson` is created for each `Person` and then added to the `JsonSerializableAddressBook`.","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":" This is because regular Java objects need to go through an _adaptation_ for them to be suitable to be saved in JSON format.","lastModifiedDate":"2021-07-31"},{"lineNumber":244,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":"1. While you are stepping through the classes in the `Storage` component, here is the component\u0027s class diagram to help you understand how those classes fit into the structure of the component.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":246,"author":{"gitId":"-"},"content":" \u003cimg src\u003d\"../images/StorageClassDiagram.png\" width\u003d\"550\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":247,"author":{"gitId":"-"},"content":" * :bulb: This may be a good time to read through the [`Storage` component section of the DG](../DeveloperGuide.html#storage-component)","lastModifiedDate":"2021-07-31"},{"lineNumber":248,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":249,"author":{"gitId":"-"},"content":"1. We can continue to step through until you reach the end of the `LogicManager#execute()` method and return to the `MainWindow#executeCommand()` method (the place where we put the original breakpoint).","lastModifiedDate":"2021-07-31"},{"lineNumber":250,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":"1. Stepping into `resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser());`, we end up in:","lastModifiedDate":"2021-07-31"},{"lineNumber":252,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":" **`ResultDisplay#setFeedbackToUser()`**","lastModifiedDate":"2021-07-31"},{"lineNumber":254,"author":{"gitId":"-"},"content":" ``` java","lastModifiedDate":"2020-05-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":" public void setFeedbackToUser(String feedbackToUser) {","lastModifiedDate":"2020-05-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":" requireNonNull(feedbackToUser);","lastModifiedDate":"2020-05-23"},{"lineNumber":257,"author":{"gitId":"-"},"content":" resultDisplay.setText(feedbackToUser);","lastModifiedDate":"2020-05-23"},{"lineNumber":258,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":259,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":"1. Finally, you can step through until you reach the end of`MainWindow#executeCommand()`.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":262,"author":{"gitId":"-"},"content":" :bulb: This may be a good time to read through the [`UI` component section of the DG](../DeveloperGuide.html#ui-component)","lastModifiedDate":"2021-07-31"},{"lineNumber":263,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":265,"author":{"gitId":"-"},"content":"## Conclusion","lastModifiedDate":"2020-05-23"},{"lineNumber":266,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":267,"author":{"gitId":"-"},"content":"In this tutorial, we traced a valid edit command from raw user input to the result being displayed to the user. From this tutorial, you learned more about how the various components work together to produce a response to a user command.","lastModifiedDate":"2021-07-31"},{"lineNumber":268,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":269,"author":{"gitId":"-"},"content":"Here are some quick questions you can try to answer based on your execution path tracing. In some cases, you can do further tracing for the given commands to find exactly what happens.","lastModifiedDate":"2021-07-31"},{"lineNumber":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":271,"author":{"gitId":"-"},"content":"1. In this tutorial, we traced the \"happy path\" (i.e., no errors). What","lastModifiedDate":"2020-05-23"},{"lineNumber":272,"author":{"gitId":"-"},"content":" do you think will happen if we traced the following commands","lastModifiedDate":"2020-05-23"},{"lineNumber":273,"author":{"gitId":"-"},"content":" instead? What exceptions do you think will be thrown (if any), where","lastModifiedDate":"2020-05-23"},{"lineNumber":274,"author":{"gitId":"-"},"content":" will the exceptions be thrown and where will they be handled?","lastModifiedDate":"2020-05-23"},{"lineNumber":275,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":276,"author":{"gitId":"-"},"content":" 1. `redit 1 n/Alice Yu`","lastModifiedDate":"2020-05-23"},{"lineNumber":277,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":278,"author":{"gitId":"-"},"content":" 2. `edit 0 n/Alice Yu`","lastModifiedDate":"2020-05-23"},{"lineNumber":279,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":280,"author":{"gitId":"-"},"content":" 3. `edit 1 n/Alex Yeoh`","lastModifiedDate":"2020-05-23"},{"lineNumber":281,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":282,"author":{"gitId":"-"},"content":" 4. `edit 1`","lastModifiedDate":"2020-05-23"},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":284,"author":{"gitId":"-"},"content":" 5. `edit 1 n/アリス ユー`","lastModifiedDate":"2020-05-23"},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":286,"author":{"gitId":"-"},"content":" 6. `edit 1 t/one t/two t/three t/one`","lastModifiedDate":"2020-05-23"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":288,"author":{"gitId":"-"},"content":"2. What components will you have to modify to perform the following","lastModifiedDate":"2020-05-23"},{"lineNumber":289,"author":{"gitId":"-"},"content":" enhancements to the application?","lastModifiedDate":"2020-05-23"},{"lineNumber":290,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":291,"author":{"gitId":"-"},"content":" 1. Make command words case-insensitive","lastModifiedDate":"2020-05-23"},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":293,"author":{"gitId":"-"},"content":" 2. Allow `delete` to remove more than one index at a time","lastModifiedDate":"2020-05-23"},{"lineNumber":294,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":295,"author":{"gitId":"-"},"content":" 3. Save the address book in the CSV format instead","lastModifiedDate":"2020-05-23"},{"lineNumber":296,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":297,"author":{"gitId":"-"},"content":" 4. Add a new command","lastModifiedDate":"2020-05-23"},{"lineNumber":298,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":299,"author":{"gitId":"-"},"content":" 5. Add a new field to `Person`","lastModifiedDate":"2020-05-23"},{"lineNumber":300,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":301,"author":{"gitId":"-"},"content":" 6. Add a new entity to the address book","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"chaaaaun":2,"-":299}},{"path":"src/main/java/scrolls/elder/AppParameters.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Map;","lastModifiedDate":"2018-04-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2018-04-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2018-04-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.application.Application;","lastModifiedDate":"2018-04-21"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.core.LogsCenter;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.util.FileUtil;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-04-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Represents the parsed command-line parameters given to the application.","lastModifiedDate":"2018-04-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class AppParameters {","lastModifiedDate":"2018-04-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AppParameters.class);","lastModifiedDate":"2018-04-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private Path configPath;","lastModifiedDate":"2018-04-21"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public Path getConfigPath() {","lastModifiedDate":"2018-04-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":" return configPath;","lastModifiedDate":"2018-04-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void setConfigPath(Path configPath) {","lastModifiedDate":"2018-04-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":" this.configPath \u003d configPath;","lastModifiedDate":"2018-04-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Parses the application command-line parameters.","lastModifiedDate":"2018-04-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static AppParameters parse(Application.Parameters parameters) {","lastModifiedDate":"2018-04-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" AppParameters appParameters \u003d new AppParameters();","lastModifiedDate":"2018-04-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" Map\u003cString, String\u003e namedParameters \u003d parameters.getNamed();","lastModifiedDate":"2018-04-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" String configPathParameter \u003d namedParameters.get(\"config\");","lastModifiedDate":"2018-04-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" if (configPathParameter !\u003d null \u0026\u0026 !FileUtil.isValidPath(configPathParameter)) {","lastModifiedDate":"2018-04-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" logger.warning(\"Invalid config path \" + configPathParameter + \". Using default config path.\");","lastModifiedDate":"2018-04-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" configPathParameter \u003d null;","lastModifiedDate":"2018-04-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" appParameters.setConfigPath(configPathParameter !\u003d null ? Paths.get(configPathParameter) : null);","lastModifiedDate":"2018-04-21"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":44,"author":{"gitId":"-"},"content":" return appParameters;","lastModifiedDate":"2018-04-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-04-21"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2018-04-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-04-21"},{"lineNumber":50,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (!(other instanceof AppParameters)) {","lastModifiedDate":"2018-04-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-04-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" AppParameters otherAppParameters \u003d (AppParameters) other;","lastModifiedDate":"2018-04-21"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return Objects.equals(configPath, otherAppParameters.configPath);","lastModifiedDate":"2023-07-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-04-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2018-04-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return configPath.hashCode();","lastModifiedDate":"2018-04-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":" .add(\"configPath\", configPath)","lastModifiedDate":"2019-02-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-04-21"}],"authorContributionMap":{"chaaaaun":4,"-":69}},{"path":"src/main/java/scrolls/elder/Main.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-07-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-27"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.application.Application;","lastModifiedDate":"2019-02-08"},{"lineNumber":6,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.core.LogsCenter;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2019-02-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * The main entry point to the application.","lastModifiedDate":"2019-02-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2019-02-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * This is a workaround for the following error when MainApp is made the","lastModifiedDate":"2019-02-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * entry point of the application:","lastModifiedDate":"2019-02-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2019-02-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Error: JavaFX runtime components are missing, and are required to run this application","lastModifiedDate":"2019-02-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2019-02-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * The reason is that MainApp extends Application. In that case, the","lastModifiedDate":"2019-02-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * LauncherHelper will check for the javafx.graphics module to be present","lastModifiedDate":"2019-02-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * as a named module. We don\u0027t use JavaFX via the module system so it can\u0027t","lastModifiedDate":"2019-02-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * find the javafx.graphics module, and so the launch is aborted.","lastModifiedDate":"2019-02-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2019-02-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * By having a separate main class (Main) that doesn\u0027t extend Application","lastModifiedDate":"2019-02-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * to be the entry point of the application, we avoid this issue.","lastModifiedDate":"2019-02-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class Main {","lastModifiedDate":"2019-02-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static Logger logger \u003d LogsCenter.getLogger(Main.class);","lastModifiedDate":"2023-07-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-02-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" // As per https://github.com/openjdk/jfx/blob/master/doc-files/release-notes-16.md","lastModifiedDate":"2023-07-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" // JavaFX 16 (or later) runtime logs a warning at startup if JavaFX classes are loaded from","lastModifiedDate":"2023-07-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // the classpath instead of a module.","lastModifiedDate":"2023-07-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" // Our application does not use Java modules yet. Even if it did, modules are ignored when","lastModifiedDate":"2023-07-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // packed into a FAT Jar file (as we do), which means this warning will persist even then.","lastModifiedDate":"2023-07-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" // The warning however, can be safely ignored. Thus, the following log informs","lastModifiedDate":"2023-07-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // the user (if looking at the log output) that the said warning appearing in the log","lastModifiedDate":"2023-07-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":" // can be ignored.","lastModifiedDate":"2023-07-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" logger.warning(\"The warning about Unsupported JavaFX configuration below can be ignored.\");","lastModifiedDate":"2023-07-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" Application.launch(MainApp.class, args);","lastModifiedDate":"2019-02-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-02-08"}],"authorContributionMap":{"chaaaaun":2,"-":39}},{"path":"src/main/java/scrolls/elder/MainApp.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.application.Application;","lastModifiedDate":"2016-08-26"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-26"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.core.Config;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.core.LogsCenter;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.core.Version;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.util.ConfigUtil;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.util.StringUtil;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.Logic;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.LogicManager;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.AddressBook;","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.Model;","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.ModelManager;","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.ReadOnlyUserPrefs;","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.UserPrefs;","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.util.SampleDataUtil;","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.storage.AddressBookStorage;","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.storage.JsonAddressBookStorage;","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.storage.JsonUserPrefsStorage;","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.storage.Storage;","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.storage.StorageManager;","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.storage.UserPrefsStorage;","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.ui.Ui;","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.ui.UiManager;","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Runs the application.","lastModifiedDate":"2019-02-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":"public class MainApp extends Application {","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final Version VERSION \u003d new Version(0, 2, 2, true);","lastModifiedDate":"2023-08-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(MainApp.class);","lastModifiedDate":"2017-04-01"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":43,"author":{"gitId":"-"},"content":" protected Ui ui;","lastModifiedDate":"2016-09-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" protected Logic logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":" protected Storage storage;","lastModifiedDate":"2016-09-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":" protected Model model;","lastModifiedDate":"2016-09-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" protected Config config;","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void init() throws Exception {","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"chaaaaun"},"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 Elder Scrolls ]\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\");","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":" super.init();","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" AppParameters appParameters \u003d AppParameters.parse(getParameters());","lastModifiedDate":"2018-04-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" config \u003d initConfig(appParameters.getConfigPath());","lastModifiedDate":"2018-04-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":" initLogging(config);","lastModifiedDate":"2023-07-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25"},{"lineNumber":58,"author":{"gitId":"-"},"content":" UserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(config.getUserPrefsFilePath());","lastModifiedDate":"2017-02-25"},{"lineNumber":59,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d initPrefs(userPrefsStorage);","lastModifiedDate":"2018-12-06"},{"lineNumber":60,"author":{"gitId":"-"},"content":" AddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(userPrefs.getAddressBookFilePath());","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2017-02-25"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" model \u003d initModelManager(storage, userPrefs);","lastModifiedDate":"2016-09-25"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":" ui \u003d new UiManager(logic);","lastModifiedDate":"2018-12-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Returns a {@code ModelManager} with the data from {@code storage}\u0027s address book and {@code userPrefs}. \u003cbr\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * The data from the sample address book will be used instead if {@code storage}\u0027s address book is not found,","lastModifiedDate":"2017-08-16"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * or an empty address book will be used instead if errors occur when reading {@code storage}\u0027s address book.","lastModifiedDate":"2017-08-16"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":75,"author":{"gitId":"-"},"content":" private Model initModelManager(Storage storage, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":76,"author":{"gitId":"-"},"content":" logger.info(\"Using data file : \" + storage.getAddressBookFilePath());","lastModifiedDate":"2023-07-29"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":78,"author":{"gitId":"-"},"content":" Optional\u003cReadOnlyAddressBook\u003e addressBookOptional;","lastModifiedDate":"2016-09-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook initialData;","lastModifiedDate":"2016-09-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":" addressBookOptional \u003d storage.readAddressBook();","lastModifiedDate":"2016-09-25"},{"lineNumber":82,"author":{"gitId":"-"},"content":" if (!addressBookOptional.isPresent()) {","lastModifiedDate":"2016-09-24"},{"lineNumber":83,"author":{"gitId":"-"},"content":" logger.info(\"Creating a new data file \" + storage.getAddressBookFilePath()","lastModifiedDate":"2023-05-15"},{"lineNumber":84,"author":{"gitId":"-"},"content":" + \" populated with a sample AddressBook.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":86,"author":{"gitId":"-"},"content":" initialData \u003d addressBookOptional.orElseGet(SampleDataUtil::getSampleAddressBook);","lastModifiedDate":"2016-12-20"},{"lineNumber":87,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14"},{"lineNumber":88,"author":{"gitId":"-"},"content":" logger.warning(\"Data file at \" + storage.getAddressBookFilePath() + \" could not be loaded.\"","lastModifiedDate":"2023-06-15"},{"lineNumber":89,"author":{"gitId":"-"},"content":" + \" Will be starting with an empty AddressBook.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":90,"author":{"gitId":"chaaaaun"},"content":" initialData \u003d new AddressBook(0);","lastModifiedDate":"2024-03-17"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":93,"author":{"gitId":"-"},"content":" return new ModelManager(initialData, userPrefs);","lastModifiedDate":"2016-09-25"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":96,"author":{"gitId":"-"},"content":" private void initLogging(Config config) {","lastModifiedDate":"2016-09-24"},{"lineNumber":97,"author":{"gitId":"-"},"content":" LogsCenter.init(config);","lastModifiedDate":"2016-09-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":100,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * Returns a {@code Config} using the file at {@code configFilePath}. \u003cbr\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * The default file path {@code Config#DEFAULT_CONFIG_FILE} will be used instead","lastModifiedDate":"2017-08-16"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * if {@code configFilePath} is null.","lastModifiedDate":"2017-08-16"},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":105,"author":{"gitId":"-"},"content":" protected Config initConfig(Path configFilePath) {","lastModifiedDate":"2018-04-21"},{"lineNumber":106,"author":{"gitId":"-"},"content":" Config initializedConfig;","lastModifiedDate":"2016-09-24"},{"lineNumber":107,"author":{"gitId":"-"},"content":" Path configFilePathUsed;","lastModifiedDate":"2018-04-21"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":109,"author":{"gitId":"-"},"content":" configFilePathUsed \u003d Config.DEFAULT_CONFIG_FILE;","lastModifiedDate":"2016-09-24"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":111,"author":{"gitId":"-"},"content":" if (configFilePath !\u003d null) {","lastModifiedDate":"2016-09-24"},{"lineNumber":112,"author":{"gitId":"-"},"content":" logger.info(\"Custom Config file specified \" + configFilePath);","lastModifiedDate":"2016-09-24"},{"lineNumber":113,"author":{"gitId":"-"},"content":" configFilePathUsed \u003d configFilePath;","lastModifiedDate":"2016-09-24"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":" logger.info(\"Using config file : \" + configFilePathUsed);","lastModifiedDate":"2016-09-24"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":118,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":119,"author":{"gitId":"-"},"content":" Optional\u003cConfig\u003e configOptional \u003d ConfigUtil.readConfig(configFilePathUsed);","lastModifiedDate":"2016-09-24"},{"lineNumber":120,"author":{"gitId":"-"},"content":" if (!configOptional.isPresent()) {","lastModifiedDate":"2023-01-03"},{"lineNumber":121,"author":{"gitId":"-"},"content":" logger.info(\"Creating new config file \" + configFilePathUsed);","lastModifiedDate":"2023-05-15"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-01-03"},{"lineNumber":123,"author":{"gitId":"-"},"content":" initializedConfig \u003d configOptional.orElse(new Config());","lastModifiedDate":"2016-09-24"},{"lineNumber":124,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":" logger.warning(\"Config file at \" + configFilePathUsed + \" could not be loaded.\"","lastModifiedDate":"2023-06-15"},{"lineNumber":126,"author":{"gitId":"-"},"content":" + \" Using default config properties.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":127,"author":{"gitId":"-"},"content":" initializedConfig \u003d new Config();","lastModifiedDate":"2016-09-24"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":130,"author":{"gitId":"-"},"content":" //Update config file in case it was missing to begin with or there are new/unused fields","lastModifiedDate":"2016-09-24"},{"lineNumber":131,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":132,"author":{"gitId":"-"},"content":" ConfigUtil.saveConfig(initializedConfig, configFilePathUsed);","lastModifiedDate":"2016-09-24"},{"lineNumber":133,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24"},{"lineNumber":134,"author":{"gitId":"-"},"content":" logger.warning(\"Failed to save config file : \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":136,"author":{"gitId":"-"},"content":" return initializedConfig;","lastModifiedDate":"2016-09-24"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":140,"author":{"gitId":"-"},"content":" * Returns a {@code UserPrefs} using the file at {@code storage}\u0027s user prefs file path,","lastModifiedDate":"2017-08-16"},{"lineNumber":141,"author":{"gitId":"-"},"content":" * or a new {@code UserPrefs} with default configuration if errors occur when","lastModifiedDate":"2017-08-16"},{"lineNumber":142,"author":{"gitId":"-"},"content":" * reading from the file.","lastModifiedDate":"2017-08-16"},{"lineNumber":143,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":144,"author":{"gitId":"-"},"content":" protected UserPrefs initPrefs(UserPrefsStorage storage) {","lastModifiedDate":"2017-02-25"},{"lineNumber":145,"author":{"gitId":"-"},"content":" Path prefsFilePath \u003d storage.getUserPrefsFilePath();","lastModifiedDate":"2018-04-21"},{"lineNumber":146,"author":{"gitId":"-"},"content":" logger.info(\"Using preference file : \" + prefsFilePath);","lastModifiedDate":"2023-05-15"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":148,"author":{"gitId":"-"},"content":" UserPrefs initializedPrefs;","lastModifiedDate":"2016-09-24"},{"lineNumber":149,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":150,"author":{"gitId":"-"},"content":" Optional\u003cUserPrefs\u003e prefsOptional \u003d storage.readUserPrefs();","lastModifiedDate":"2016-09-25"},{"lineNumber":151,"author":{"gitId":"-"},"content":" if (!prefsOptional.isPresent()) {","lastModifiedDate":"2023-01-03"},{"lineNumber":152,"author":{"gitId":"-"},"content":" logger.info(\"Creating new preference file \" + prefsFilePath);","lastModifiedDate":"2023-05-15"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-01-03"},{"lineNumber":154,"author":{"gitId":"-"},"content":" initializedPrefs \u003d prefsOptional.orElse(new UserPrefs());","lastModifiedDate":"2016-09-24"},{"lineNumber":155,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14"},{"lineNumber":156,"author":{"gitId":"-"},"content":" logger.warning(\"Preference file at \" + prefsFilePath + \" could not be loaded.\"","lastModifiedDate":"2023-06-15"},{"lineNumber":157,"author":{"gitId":"-"},"content":" + \" Using default preferences.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":158,"author":{"gitId":"-"},"content":" initializedPrefs \u003d new UserPrefs();","lastModifiedDate":"2016-09-24"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":" //Update prefs file in case it was missing to begin with or there are new/unused fields","lastModifiedDate":"2016-09-24"},{"lineNumber":162,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":163,"author":{"gitId":"-"},"content":" storage.saveUserPrefs(initializedPrefs);","lastModifiedDate":"2016-09-25"},{"lineNumber":164,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24"},{"lineNumber":165,"author":{"gitId":"-"},"content":" logger.warning(\"Failed to save config file : \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24"},{"lineNumber":166,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":168,"author":{"gitId":"-"},"content":" return initializedPrefs;","lastModifiedDate":"2016-09-24"},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":171,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":172,"author":{"gitId":"-"},"content":" public void start(Stage primaryStage) {","lastModifiedDate":"2016-08-08"},{"lineNumber":173,"author":{"gitId":"chaaaaun"},"content":" logger.info(\"Starting Elder Scrolls \" + MainApp.VERSION);","lastModifiedDate":"2024-03-12"},{"lineNumber":174,"author":{"gitId":"-"},"content":" ui.start(primaryStage);","lastModifiedDate":"2016-09-25"},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":177,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":178,"author":{"gitId":"-"},"content":" public void stop() {","lastModifiedDate":"2016-08-08"},{"lineNumber":179,"author":{"gitId":"chaaaaun"},"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 Elder Scrolls ] \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\");","lastModifiedDate":"2024-03-12"},{"lineNumber":180,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":181,"author":{"gitId":"-"},"content":" storage.saveUserPrefs(model.getUserPrefs());","lastModifiedDate":"2018-12-06"},{"lineNumber":182,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24"},{"lineNumber":183,"author":{"gitId":"-"},"content":" logger.severe(\"Failed to save preferences \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24"},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":185,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26"},{"lineNumber":186,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"chaaaaun":28,"-":158}},{"path":"src/main/java/scrolls/elder/commons/core/Config.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.commons.core;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2016-09-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Level;","lastModifiedDate":"2016-09-09"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Config values used by the app","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class Config {","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final Path DEFAULT_CONFIG_FILE \u003d Paths.get(\"config.json\");","lastModifiedDate":"2018-04-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" // Config values customizable through config file","lastModifiedDate":"2016-09-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private Level logLevel \u003d Level.INFO;","lastModifiedDate":"2016-09-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private Path userPrefsFilePath \u003d Paths.get(\"preferences.json\");","lastModifiedDate":"2018-04-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public Level getLogLevel() {","lastModifiedDate":"2016-09-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" return logLevel;","lastModifiedDate":"2016-09-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void setLogLevel(Level logLevel) {","lastModifiedDate":"2016-09-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" this.logLevel \u003d logLevel;","lastModifiedDate":"2016-09-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public Path getUserPrefsFilePath() {","lastModifiedDate":"2018-04-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":" return userPrefsFilePath;","lastModifiedDate":"2016-09-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public void setUserPrefsFilePath(Path userPrefsFilePath) {","lastModifiedDate":"2018-04-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" this.userPrefsFilePath \u003d userPrefsFilePath;","lastModifiedDate":"2016-09-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2016-09-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2016-09-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" if (!(other instanceof Config)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2016-09-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" Config otherConfig \u003d (Config) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" return Objects.equals(logLevel, otherConfig.logLevel)","lastModifiedDate":"2023-07-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(userPrefsFilePath, otherConfig.userPrefsFilePath);","lastModifiedDate":"2023-07-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return Objects.hash(logLevel, userPrefsFilePath);","lastModifiedDate":"2018-12-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-09-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" .add(\"logLevel\", logLevel)","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":" .add(\"userPrefsFilePath\", userPrefsFilePath)","lastModifiedDate":"2019-02-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"chaaaaun":2,"-":64}},{"path":"src/main/java/scrolls/elder/commons/core/GuiSettings.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.commons.core;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.awt.Point;","lastModifiedDate":"2017-01-18"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.io.Serializable;","lastModifiedDate":"2016-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2016-09-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * A Serializable class that contains the GUI settings.","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Guarantees: immutable.","lastModifiedDate":"2018-11-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class GuiSettings implements Serializable {","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" private static final double DEFAULT_HEIGHT \u003d 600;","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"CJerrong"},"content":" private static final double DEFAULT_WIDTH \u003d 1000;","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private final double windowWidth;","lastModifiedDate":"2018-11-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private final double windowHeight;","lastModifiedDate":"2018-11-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final Point windowCoordinates;","lastModifiedDate":"2018-11-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Constructs a {@code GuiSettings} with the default height, width and position.","lastModifiedDate":"2020-05-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public GuiSettings() {","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" windowWidth \u003d DEFAULT_WIDTH;","lastModifiedDate":"2018-08-14"},{"lineNumber":27,"author":{"gitId":"-"},"content":" windowHeight \u003d DEFAULT_HEIGHT;","lastModifiedDate":"2018-08-14"},{"lineNumber":28,"author":{"gitId":"-"},"content":" windowCoordinates \u003d null; // null represent no coordinates","lastModifiedDate":"2018-08-14"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Constructs a {@code GuiSettings} with the specified height, width and position.","lastModifiedDate":"2020-05-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public GuiSettings(double windowWidth, double windowHeight, int xPosition, int yPosition) {","lastModifiedDate":"2018-11-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.windowWidth \u003d windowWidth;","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.windowHeight \u003d windowHeight;","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" windowCoordinates \u003d new Point(xPosition, yPosition);","lastModifiedDate":"2018-08-14"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public double getWindowWidth() {","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" return windowWidth;","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public double getWindowHeight() {","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" return windowHeight;","lastModifiedDate":"2016-08-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public Point getWindowCoordinates() {","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" return windowCoordinates !\u003d null ? new Point(windowCoordinates) : null;","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2016-09-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2016-09-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" if (!(other instanceof GuiSettings)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2016-09-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" GuiSettings otherGuiSettings \u003d (GuiSettings) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return windowWidth \u003d\u003d otherGuiSettings.windowWidth","lastModifiedDate":"2023-07-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" \u0026\u0026 windowHeight \u003d\u003d otherGuiSettings.windowHeight","lastModifiedDate":"2023-07-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(windowCoordinates, otherGuiSettings.windowCoordinates);","lastModifiedDate":"2023-07-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-24"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return Objects.hash(windowWidth, windowHeight, windowCoordinates);","lastModifiedDate":"2016-09-24"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-09-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" .add(\"windowWidth\", windowWidth)","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":" .add(\"windowHeight\", windowHeight)","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" .add(\"windowCoordinates\", windowCoordinates)","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"CJerrong":1,"chaaaaun":2,"-":79}},{"path":"src/main/java/scrolls/elder/commons/core/LogsCenter.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.commons.core;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-05-20"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-05-20"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2016-09-09"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.logging.ConsoleHandler;","lastModifiedDate":"2017-01-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.logging.FileHandler;","lastModifiedDate":"2017-01-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.logging.Level;","lastModifiedDate":"2017-01-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.logging.SimpleFormatter;","lastModifiedDate":"2017-01-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Configures and manages loggers and handlers, including their logging level","lastModifiedDate":"2016-09-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Named {@link Logger}s can be obtained from this class\u003cbr\u003e","lastModifiedDate":"2016-09-29"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * These loggers have been configured to output messages to the console and a {@code .log} file by default,","lastModifiedDate":"2016-09-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * at the {@code INFO} level. A new {@code .log} file with a new numbering will be created after the log","lastModifiedDate":"2016-09-29"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * file reaches 5MB big, up to a maximum of 5 files.\u003cbr\u003e","lastModifiedDate":"2016-09-29"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class LogsCenter {","lastModifiedDate":"2016-09-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final int MAX_FILE_COUNT \u003d 5;","lastModifiedDate":"2016-09-28"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final int MAX_FILE_SIZE_IN_BYTES \u003d (int) (Math.pow(2, 20) * 5); // 5MB","lastModifiedDate":"2016-09-28"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final String LOG_FILE \u003d \"addressbook.log\";","lastModifiedDate":"2016-09-28"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final Logger logger; // logger for this class","lastModifiedDate":"2023-07-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static Logger baseLogger; // to be used as the parent of all other loggers created by this class.","lastModifiedDate":"2023-07-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static Level currentLogLevel \u003d Level.INFO;","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" // This static block ensures essential loggers are created early","lastModifiedDate":"2023-07-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2023-07-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":" setBaseLogger();","lastModifiedDate":"2023-07-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":" logger \u003d LogsCenter.getLogger(LogsCenter.class);","lastModifiedDate":"2023-07-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-29"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Initializes loggers with the log level specified in the {@code config} object. Applies to all loggers created","lastModifiedDate":"2023-07-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * using {@link #getLogger(String)} and {@link #getLogger(Class)} methods except for those that are manually set.","lastModifiedDate":"2023-07-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-29"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static void init(Config config) {","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" currentLogLevel \u003d config.getLogLevel();","lastModifiedDate":"2016-09-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" logger.info(\"Log level will be set as: \" + currentLogLevel);","lastModifiedDate":"2023-07-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":" // set the level of the baseLogger which will be inherited by other loggers","lastModifiedDate":"2023-07-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":" baseLogger.setLevel(currentLogLevel);","lastModifiedDate":"2023-07-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-29"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Creates a logger with the given name prefixed by the {@code baseLogger}\u0027s name so that the created logger","lastModifiedDate":"2023-07-19"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * becomes a descendant of the {@code baseLogger}. Furthermore, the returned logger will have the same log handlers","lastModifiedDate":"2023-07-19"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * as the {@code baseLogger}.","lastModifiedDate":"2023-07-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-29"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static Logger getLogger(String name) {","lastModifiedDate":"2016-09-28"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // Java organizes loggers into a hierarchy based on their names (using \u0027.\u0027 as a separator, similar to how Java","lastModifiedDate":"2023-07-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // packages form a hierarchy). Furthermore, loggers without a level inherit the level of their parent logger.","lastModifiedDate":"2023-07-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // By prefixing names of all loggers with baseLogger\u0027s name + \".\", we make the baseLogger the parent of all","lastModifiedDate":"2023-07-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // loggers. This allows us to change the level of all loggers simply by changing the baseLogger level.","lastModifiedDate":"2023-07-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" Logger logger \u003d Logger.getLogger(baseLogger.getName() + \".\" + name);","lastModifiedDate":"2023-07-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" removeHandlers(logger);","lastModifiedDate":"2016-09-28"},{"lineNumber":57,"author":{"gitId":"-"},"content":" logger.setUseParentHandlers(true);","lastModifiedDate":"2023-07-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return logger;","lastModifiedDate":"2023-07-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Creates a Logger for the given class name.","lastModifiedDate":"2017-01-16"},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-16"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public static \u003cT\u003e Logger getLogger(Class\u003cT\u003e clazz) {","lastModifiedDate":"2017-01-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":" requireNonNull(clazz);","lastModifiedDate":"2023-05-20"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return getLogger(clazz.getSimpleName());","lastModifiedDate":"2017-01-16"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":69,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Removes all handlers from the {@code logger}.","lastModifiedDate":"2023-07-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":72,"author":{"gitId":"-"},"content":" private static void removeHandlers(Logger logger) {","lastModifiedDate":"2016-09-28"},{"lineNumber":73,"author":{"gitId":"-"},"content":" Arrays.stream(logger.getHandlers())","lastModifiedDate":"2018-01-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":" .forEach(logger::removeHandler);","lastModifiedDate":"2018-01-21"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-28"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * Creates a logger named \u0027ab3\u0027, containing a {@code ConsoleHandler} and a {@code FileHandler}.","lastModifiedDate":"2023-07-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Sets it as the {@code baseLogger}, to be used as the parent logger of all other loggers.","lastModifiedDate":"2023-07-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":81,"author":{"gitId":"-"},"content":" private static void setBaseLogger() {","lastModifiedDate":"2023-07-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":" baseLogger \u003d Logger.getLogger(\"ab3\");","lastModifiedDate":"2023-07-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":" baseLogger.setUseParentHandlers(false);","lastModifiedDate":"2023-07-19"},{"lineNumber":84,"author":{"gitId":"-"},"content":" removeHandlers(baseLogger);","lastModifiedDate":"2023-07-19"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":" // Level.ALL is used as the level for the handlers because the baseLogger filters the log messages by level","lastModifiedDate":"2023-07-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":" // already; there is no need to control log message level of the handlers.","lastModifiedDate":"2023-07-19"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-19"},{"lineNumber":89,"author":{"gitId":"-"},"content":" // add a ConsoleHandler to log to the console","lastModifiedDate":"2023-07-19"},{"lineNumber":90,"author":{"gitId":"-"},"content":" ConsoleHandler consoleHandler \u003d new ConsoleHandler();","lastModifiedDate":"2023-07-19"},{"lineNumber":91,"author":{"gitId":"-"},"content":" consoleHandler.setLevel(Level.ALL);","lastModifiedDate":"2023-07-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":" baseLogger.addHandler(consoleHandler);","lastModifiedDate":"2023-07-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":" // add a FileHandler to log to a file","lastModifiedDate":"2023-07-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-09"},{"lineNumber":96,"author":{"gitId":"-"},"content":" FileHandler fileHandler \u003d new FileHandler(LOG_FILE, MAX_FILE_SIZE_IN_BYTES, MAX_FILE_COUNT, true);","lastModifiedDate":"2023-07-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":" fileHandler.setFormatter(new SimpleFormatter());","lastModifiedDate":"2023-07-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" fileHandler.setLevel(Level.ALL);","lastModifiedDate":"2023-07-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" baseLogger.addHandler(fileHandler);","lastModifiedDate":"2023-07-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-09"},{"lineNumber":101,"author":{"gitId":"-"},"content":" logger.warning(\"Error adding file handler for logger.\");","lastModifiedDate":"2016-09-09"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"chaaaaun":1,"-":105}},{"path":"src/main/java/scrolls/elder/commons/core/Version.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.commons.core;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2016-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2016-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonValue;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * Represents a version with major, minor and patch number","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class Version implements Comparable\u003cVersion\u003e {","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" public static final String VERSION_REGEX \u003d \"V(\\\\d+)\\\\.(\\\\d+)\\\\.(\\\\d+)(ea)?\";","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" private static final String EXCEPTION_STRING_NOT_VERSION \u003d \"String is not a valid Version. %s\";","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private static final Pattern VERSION_PATTERN \u003d Pattern.compile(VERSION_REGEX);","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final int major;","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private final int minor;","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final int patch;","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final boolean isEarlyAccess;","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Constructs a {@code Version} with the given version details.","lastModifiedDate":"2020-05-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public Version(int major, int minor, int patch, boolean isEarlyAccess) {","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" this.major \u003d major;","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" this.minor \u003d minor;","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" this.patch \u003d patch;","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" this.isEarlyAccess \u003d isEarlyAccess;","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public int getMajor() {","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" return major;","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public int getMinor() {","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" return minor;","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public int getPatch() {","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" return patch;","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public boolean isEarlyAccess() {","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" return isEarlyAccess;","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Parses a version number string in the format V1.2.3.","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * @param versionString version number string","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * @return a Version object","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2016-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static Version fromString(String versionString) throws IllegalArgumentException {","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" Matcher versionMatcher \u003d VERSION_PATTERN.matcher(versionString);","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" if (!versionMatcher.find()) {","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" throw new IllegalArgumentException(String.format(EXCEPTION_STRING_NOT_VERSION, versionString));","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return new Version(Integer.parseInt(versionMatcher.group(1)),","lastModifiedDate":"2016-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":" Integer.parseInt(versionMatcher.group(2)),","lastModifiedDate":"2016-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":" Integer.parseInt(versionMatcher.group(3)),","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":" versionMatcher.group(4) \u003d\u003d null ? false : true);","lastModifiedDate":"2016-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":" @JsonValue","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return String.format(\"V%d.%d.%d%s\", major, minor, patch, isEarlyAccess ? \"ea\" : \"\");","lastModifiedDate":"2016-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public int compareTo(Version other) {","lastModifiedDate":"2016-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":" if (major !\u003d other.major) {","lastModifiedDate":"2018-08-14"},{"lineNumber":78,"author":{"gitId":"-"},"content":" return major - other.major;","lastModifiedDate":"2018-08-14"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":80,"author":{"gitId":"-"},"content":" if (minor !\u003d other.minor) {","lastModifiedDate":"2018-08-14"},{"lineNumber":81,"author":{"gitId":"-"},"content":" return minor - other.minor;","lastModifiedDate":"2018-08-14"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":83,"author":{"gitId":"-"},"content":" if (patch !\u003d other.patch) {","lastModifiedDate":"2018-08-14"},{"lineNumber":84,"author":{"gitId":"-"},"content":" return patch - other.patch;","lastModifiedDate":"2018-08-14"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":86,"author":{"gitId":"-"},"content":" if (isEarlyAccess \u003d\u003d other.isEarlyAccess()) {","lastModifiedDate":"2018-08-14"},{"lineNumber":87,"author":{"gitId":"-"},"content":" return 0;","lastModifiedDate":"2017-05-22"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":89,"author":{"gitId":"-"},"content":" if (isEarlyAccess) {","lastModifiedDate":"2018-08-14"},{"lineNumber":90,"author":{"gitId":"-"},"content":" return -1;","lastModifiedDate":"2017-05-22"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":92,"author":{"gitId":"-"},"content":" return 1;","lastModifiedDate":"2017-05-22"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":96,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":" if (!(other instanceof Version)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2016-08-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":" Version otherVersion \u003d (Version) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":" return major \u003d\u003d otherVersion.major","lastModifiedDate":"2023-07-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" \u0026\u0026 minor \u003d\u003d otherVersion.minor","lastModifiedDate":"2023-07-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":" \u0026\u0026 patch \u003d\u003d otherVersion.patch","lastModifiedDate":"2023-07-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":" \u0026\u0026 isEarlyAccess \u003d\u003d otherVersion.isEarlyAccess;","lastModifiedDate":"2023-07-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":" String hash \u003d String.format(\"%03d%03d%03d\", major, minor, patch);","lastModifiedDate":"2016-08-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":" if (!isEarlyAccess) {","lastModifiedDate":"2016-08-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":" hash \u003d \"1\" + hash;","lastModifiedDate":"2016-08-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":" return Integer.parseInt(hash);","lastModifiedDate":"2016-08-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":121,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"chaaaaun":1,"-":120}},{"path":"src/main/java/scrolls/elder/commons/core/index/Index.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.commons.core.index;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":3,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * Represents a zero-based or one-based index.","lastModifiedDate":"2017-05-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * {@code Index} should be used right from the start (when parsing in a new user input), so that if the current","lastModifiedDate":"2017-05-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * component wants to communicate with another component, it can send an {@code Index} to avoid having to know what","lastModifiedDate":"2017-05-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * base the other component is using for its index. However, after receiving the {@code Index}, that component can","lastModifiedDate":"2017-05-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * convert it back to an int if the index will not be passed to a different component again.","lastModifiedDate":"2017-05-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class Index {","lastModifiedDate":"2017-05-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" private int zeroBasedIndex;","lastModifiedDate":"2017-05-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Index can only be created by calling {@link Index#fromZeroBased(int)} or","lastModifiedDate":"2017-05-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * {@link Index#fromOneBased(int)}.","lastModifiedDate":"2017-05-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private Index(int zeroBasedIndex) {","lastModifiedDate":"2017-05-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" if (zeroBasedIndex \u003c 0) {","lastModifiedDate":"2017-05-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" throw new IndexOutOfBoundsException();","lastModifiedDate":"2017-05-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" this.zeroBasedIndex \u003d zeroBasedIndex;","lastModifiedDate":"2017-05-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public int getZeroBased() {","lastModifiedDate":"2017-05-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" return zeroBasedIndex;","lastModifiedDate":"2017-05-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public int getOneBased() {","lastModifiedDate":"2017-05-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return zeroBasedIndex + 1;","lastModifiedDate":"2017-05-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Creates a new {@code Index} using a zero-based index.","lastModifiedDate":"2017-05-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static Index fromZeroBased(int zeroBasedIndex) {","lastModifiedDate":"2017-05-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" return new Index(zeroBasedIndex);","lastModifiedDate":"2017-05-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Creates a new {@code Index} using a one-based index.","lastModifiedDate":"2017-05-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static Index fromOneBased(int oneBasedIndex) {","lastModifiedDate":"2017-05-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" return new Index(oneBasedIndex - 1);","lastModifiedDate":"2017-05-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" if (!(other instanceof Index)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" Index otherIndex \u003d (Index) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return zeroBasedIndex \u003d\u003d otherIndex.zeroBasedIndex;","lastModifiedDate":"2023-07-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this).add(\"zeroBasedIndex\", zeroBasedIndex).toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"chaaaaun":2,"-":67}},{"path":"src/main/java/scrolls/elder/commons/exceptions/DataLoadingException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.commons.exceptions;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-14"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2023-06-14"},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Represents an error during loading of data from a file.","lastModifiedDate":"2023-06-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-06-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class DataLoadingException extends Exception {","lastModifiedDate":"2023-06-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":" public DataLoadingException(Exception cause) {","lastModifiedDate":"2023-06-14"},{"lineNumber":8,"author":{"gitId":"-"},"content":" super(cause);","lastModifiedDate":"2023-06-14"},{"lineNumber":9,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-06-14"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-14"},{"lineNumber":11,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2023-06-14"}],"authorContributionMap":{"chaaaaun":1,"-":10}},{"path":"src/main/java/scrolls/elder/commons/exceptions/IllegalValueException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.commons.exceptions;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Signals that some given data does not fulfill some constraints.","lastModifiedDate":"2016-08-24"},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class IllegalValueException extends Exception {","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * @param message should contain relevant information on the failed constraint(s)","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public IllegalValueException(String message) {","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" super(message);","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":14,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * @param message should contain relevant information on the failed constraint(s)","lastModifiedDate":"2017-03-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * @param cause of the main exception","lastModifiedDate":"2017-03-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public IllegalValueException(String message, Throwable cause) {","lastModifiedDate":"2017-03-11"},{"lineNumber":19,"author":{"gitId":"-"},"content":" super(message, cause);","lastModifiedDate":"2017-03-11"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"chaaaaun":1,"-":20}},{"path":"src/main/java/scrolls/elder/commons/util/AppUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.commons.util;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2016-08-18"},{"lineNumber":6,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.MainApp;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * A container for App specific utility functions","lastModifiedDate":"2016-08-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class AppUtil {","lastModifiedDate":"2016-08-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Gets an {@code Image} from the specified path.","lastModifiedDate":"2020-05-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static Image getImage(String imagePath) {","lastModifiedDate":"2016-08-18"},{"lineNumber":17,"author":{"gitId":"-"},"content":" requireNonNull(imagePath);","lastModifiedDate":"2017-05-15"},{"lineNumber":18,"author":{"gitId":"-"},"content":" return new Image(MainApp.class.getResourceAsStream(imagePath));","lastModifiedDate":"2016-08-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-15"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Checks that {@code condition} is true. Used for validating arguments to methods.","lastModifiedDate":"2017-05-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @throws IllegalArgumentException if {@code condition} is false.","lastModifiedDate":"2017-05-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static void checkArgument(Boolean condition) {","lastModifiedDate":"2017-05-15"},{"lineNumber":27,"author":{"gitId":"-"},"content":" if (!condition) {","lastModifiedDate":"2017-05-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":" throw new IllegalArgumentException();","lastModifiedDate":"2017-05-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-15"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Checks that {@code condition} is true. Used for validating arguments to methods.","lastModifiedDate":"2017-05-15"},{"lineNumber":34,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-15"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * @throws IllegalArgumentException with {@code errorMessage} if {@code condition} is false.","lastModifiedDate":"2017-05-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static void checkArgument(Boolean condition, String errorMessage) {","lastModifiedDate":"2017-05-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":" if (!condition) {","lastModifiedDate":"2017-05-15"},{"lineNumber":39,"author":{"gitId":"-"},"content":" throw new IllegalArgumentException(errorMessage);","lastModifiedDate":"2017-05-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"chaaaaun":2,"-":40}},{"path":"src/main/java/scrolls/elder/commons/util/CollectionUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.commons.util;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-06-21"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2017-01-30"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2016-12-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Utility methods related to Collections","lastModifiedDate":"2016-09-30"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class CollectionUtil {","lastModifiedDate":"2016-09-21"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" /** @see #requireAllNonNull(Collection) */","lastModifiedDate":"2017-05-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static void requireAllNonNull(Object... items) {","lastModifiedDate":"2017-05-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":" requireNonNull(items);","lastModifiedDate":"2017-06-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Stream.of(items).forEach(Objects::requireNonNull);","lastModifiedDate":"2017-05-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Throws NullPointerException if {@code items} or any element of {@code items} is null.","lastModifiedDate":"2017-05-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static void requireAllNonNull(Collection\u003c?\u003e items) {","lastModifiedDate":"2017-05-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" requireNonNull(items);","lastModifiedDate":"2017-06-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":" items.forEach(Objects::requireNonNull);","lastModifiedDate":"2017-05-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Returns true if {@code items} contain any elements that are non-null.","lastModifiedDate":"2017-06-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static boolean isAnyNonNull(Object... items) {","lastModifiedDate":"2017-06-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return items !\u003d null \u0026\u0026 Arrays.stream(items).anyMatch(Objects::nonNull);","lastModifiedDate":"2017-06-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"chaaaaun":1,"-":34}},{"path":"src/main/java/scrolls/elder/commons/util/ConfigUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.commons.util;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2016-09-24"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-09-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":7,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.core.Config;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * A class for accessing the Config File.","lastModifiedDate":"2016-09-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class ConfigUtil {","lastModifiedDate":"2016-09-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static Optional\u003cConfig\u003e readConfig(Path configFilePath) throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":16,"author":{"gitId":"-"},"content":" return JsonUtil.readJsonFile(configFilePath, Config.class);","lastModifiedDate":"2016-10-07"},{"lineNumber":17,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static void saveConfig(Config config, Path configFilePath) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":" JsonUtil.saveJsonFile(config, configFilePath);","lastModifiedDate":"2016-10-07"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-24"}],"authorContributionMap":{"chaaaaun":3,"-":20}},{"path":"src/main/java/scrolls/elder/commons/util/FileUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.commons.util;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2016-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Files;","lastModifiedDate":"2016-08-26"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.InvalidPathException;","lastModifiedDate":"2018-04-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * Writes and reads files","lastModifiedDate":"2016-10-07"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class FileUtil {","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":14,"author":{"gitId":"-"},"content":" private static final String CHARSET \u003d \"UTF-8\";","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static boolean isFileExists(Path file) {","lastModifiedDate":"2018-04-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":" return Files.exists(file) \u0026\u0026 Files.isRegularFile(file);","lastModifiedDate":"2018-04-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-21"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Returns true if {@code path} can be converted into a {@code Path} via {@link Paths#get(String)},","lastModifiedDate":"2018-04-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * otherwise returns false.","lastModifiedDate":"2018-04-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * @param path A string representing the file path. Cannot be null.","lastModifiedDate":"2018-04-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static boolean isValidPath(String path) {","lastModifiedDate":"2018-04-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-04-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":" Paths.get(path);","lastModifiedDate":"2018-04-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":" } catch (InvalidPathException ipe) {","lastModifiedDate":"2018-04-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-04-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Creates a file if it does not exist along with its missing parent directories.","lastModifiedDate":"2017-08-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * @throws IOException if the file or directory cannot be created.","lastModifiedDate":"2017-08-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static void createIfMissing(Path file) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" if (!isFileExists(file)) {","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" createFile(file);","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * Creates a file if it does not exist along with its missing parent directories.","lastModifiedDate":"2018-04-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static void createFile(Path file) throws IOException {","lastModifiedDate":"2018-04-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":" if (Files.exists(file)) {","lastModifiedDate":"2018-04-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":" return;","lastModifiedDate":"2018-04-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" createParentDirsOfFile(file);","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":" Files.createFile(file);","lastModifiedDate":"2018-04-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * Creates parent directories of file if it has a parent directory","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static void createParentDirsOfFile(Path file) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":61,"author":{"gitId":"-"},"content":" Path parentDir \u003d file.getParent();","lastModifiedDate":"2018-04-21"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" if (parentDir !\u003d null) {","lastModifiedDate":"2016-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" Files.createDirectories(parentDir);","lastModifiedDate":"2018-04-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" * Assumes file exists","lastModifiedDate":"2016-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public static String readFromFile(Path file) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return new String(Files.readAllBytes(file), CHARSET);","lastModifiedDate":"2018-04-21"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" * Writes given string to a file.","lastModifiedDate":"2016-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":" * Will create the file if it does not exist yet.","lastModifiedDate":"2016-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public static void writeToFile(Path file, String content) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":80,"author":{"gitId":"-"},"content":" Files.write(file, content.getBytes(CHARSET));","lastModifiedDate":"2018-04-21"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"chaaaaun":1,"-":82}},{"path":"src/main/java/scrolls/elder/commons/util/JsonUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.commons.util;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Files;","lastModifiedDate":"2018-04-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.logging.Level;","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonAutoDetect;","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.PropertyAccessor;","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.core.JsonProcessingException;","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.databind.DeserializationContext;","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.databind.DeserializationFeature;","lastModifiedDate":"2016-09-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.databind.ObjectMapper;","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.databind.SerializationFeature;","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.databind.deser.std.FromStringDeserializer;","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.databind.module.SimpleModule;","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":23,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.core.LogsCenter;","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Converts a Java object instance to JSON and vice versa","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class JsonUtil {","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(JsonUtil.class);","lastModifiedDate":"2016-10-07"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static ObjectMapper objectMapper \u003d new ObjectMapper().findAndRegisterModules()","lastModifiedDate":"2016-10-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":" .configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false)","lastModifiedDate":"2016-10-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":" .configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)","lastModifiedDate":"2016-10-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":" .setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.NONE)","lastModifiedDate":"2016-10-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":" .setVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY)","lastModifiedDate":"2016-10-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":" .registerModule(new SimpleModule(\"SimpleModule\")","lastModifiedDate":"2016-10-19"},{"lineNumber":39,"author":{"gitId":"-"},"content":" .addSerializer(Level.class, new ToStringSerializer())","lastModifiedDate":"2016-10-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":" .addDeserializer(Level.class, new LevelDeserializer(Level.class)));","lastModifiedDate":"2016-10-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":" static \u003cT\u003e void serializeObjectToJsonFile(Path jsonFile, T objectToSerialize) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":43,"author":{"gitId":"-"},"content":" FileUtil.writeToFile(jsonFile, toJsonString(objectToSerialize));","lastModifiedDate":"2016-10-07"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-07"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":46,"author":{"gitId":"-"},"content":" static \u003cT\u003e T deserializeObjectFromJsonFile(Path jsonFile, Class\u003cT\u003e classOfObjectToDeserialize)","lastModifiedDate":"2018-04-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2016-10-07"},{"lineNumber":48,"author":{"gitId":"-"},"content":" return fromJsonString(FileUtil.readFromFile(jsonFile), classOfObjectToDeserialize);","lastModifiedDate":"2016-10-07"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-07"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-07"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Returns the JSON object from the given file or {@code Optional.empty()} object if the file is not found.","lastModifiedDate":"2023-06-15"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * If any values are missing from the file, default values will be used, as long as the file is a valid JSON file.","lastModifiedDate":"2023-06-15"},{"lineNumber":54,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * @param filePath cannot be null.","lastModifiedDate":"2016-10-07"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * @param classOfObjectToDeserialize JSON file has to correspond to the structure in the class given here.","lastModifiedDate":"2023-06-15"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * @throws DataLoadingException if loading of the JSON file failed.","lastModifiedDate":"2023-06-15"},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-07"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static \u003cT\u003e Optional\u003cT\u003e readJsonFile(","lastModifiedDate":"2016-10-07"},{"lineNumber":60,"author":{"gitId":"-"},"content":" Path filePath, Class\u003cT\u003e classOfObjectToDeserialize) throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":61,"author":{"gitId":"-"},"content":" requireNonNull(filePath);","lastModifiedDate":"2017-05-15"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":63,"author":{"gitId":"-"},"content":" if (!Files.exists(filePath)) {","lastModifiedDate":"2018-04-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2016-10-07"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-07"},{"lineNumber":66,"author":{"gitId":"-"},"content":" logger.info(\"JSON file \" + filePath + \" found.\");","lastModifiedDate":"2023-01-03"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":68,"author":{"gitId":"-"},"content":" T jsonFile;","lastModifiedDate":"2016-10-07"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":70,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-10-07"},{"lineNumber":71,"author":{"gitId":"-"},"content":" jsonFile \u003d deserializeObjectFromJsonFile(filePath, classOfObjectToDeserialize);","lastModifiedDate":"2018-04-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-10-07"},{"lineNumber":73,"author":{"gitId":"-"},"content":" logger.warning(\"Error reading from jsonFile file \" + filePath + \": \" + e);","lastModifiedDate":"2018-04-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":" throw new DataLoadingException(e);","lastModifiedDate":"2023-06-14"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-07"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return Optional.of(jsonFile);","lastModifiedDate":"2016-10-07"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-07"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":80,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-07"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * Saves the Json object to the specified file.","lastModifiedDate":"2016-10-07"},{"lineNumber":82,"author":{"gitId":"-"},"content":" * Overwrites existing file if it exists, creates a new file if it doesn\u0027t.","lastModifiedDate":"2016-10-07"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * @param jsonFile cannot be null","lastModifiedDate":"2016-10-07"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * @param filePath cannot be null","lastModifiedDate":"2016-10-07"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * @throws IOException if there was an error during writing to the file","lastModifiedDate":"2016-10-07"},{"lineNumber":86,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-07"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public static \u003cT\u003e void saveJsonFile(T jsonFile, Path filePath) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":88,"author":{"gitId":"-"},"content":" requireNonNull(filePath);","lastModifiedDate":"2017-05-15"},{"lineNumber":89,"author":{"gitId":"-"},"content":" requireNonNull(jsonFile);","lastModifiedDate":"2017-05-15"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":91,"author":{"gitId":"-"},"content":" serializeObjectToJsonFile(filePath, jsonFile);","lastModifiedDate":"2018-04-21"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-07"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * Converts a given string representation of a JSON data to instance of a class","lastModifiedDate":"2016-10-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * @param \u003cT\u003e The generic type to create an instance of","lastModifiedDate":"2016-10-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * @return The instance of T with the specified values in the JSON string","lastModifiedDate":"2016-10-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public static \u003cT\u003e T fromJsonString(String json, Class\u003cT\u003e instanceClass) throws IOException {","lastModifiedDate":"2016-10-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":" return objectMapper.readValue(json, instanceClass);","lastModifiedDate":"2016-10-19"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":104,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-19"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * Converts a given instance of a class into its JSON data string representation","lastModifiedDate":"2016-10-19"},{"lineNumber":106,"author":{"gitId":"-"},"content":" * @param instance The T object to be converted into the JSON string","lastModifiedDate":"2016-10-19"},{"lineNumber":107,"author":{"gitId":"-"},"content":" * @param \u003cT\u003e The generic type to create an instance of","lastModifiedDate":"2016-10-19"},{"lineNumber":108,"author":{"gitId":"-"},"content":" * @return JSON data representation of the given class instance, in string","lastModifiedDate":"2016-10-19"},{"lineNumber":109,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-19"},{"lineNumber":110,"author":{"gitId":"-"},"content":" public static \u003cT\u003e String toJsonString(T instance) throws JsonProcessingException {","lastModifiedDate":"2016-10-19"},{"lineNumber":111,"author":{"gitId":"-"},"content":" return objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(instance);","lastModifiedDate":"2016-10-19"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":114,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":115,"author":{"gitId":"-"},"content":" * Contains methods that retrieve logging level from serialized string.","lastModifiedDate":"2017-08-16"},{"lineNumber":116,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":117,"author":{"gitId":"-"},"content":" private static class LevelDeserializer extends FromStringDeserializer\u003cLevel\u003e {","lastModifiedDate":"2016-08-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":" protected LevelDeserializer(Class\u003c?\u003e vc) {","lastModifiedDate":"2016-08-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" super(vc);","lastModifiedDate":"2016-08-08"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" protected Level _deserialize(String value, DeserializationContext ctxt) {","lastModifiedDate":"2018-08-08"},{"lineNumber":125,"author":{"gitId":"-"},"content":" return getLoggingLevel(value);","lastModifiedDate":"2016-08-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":" * Gets the logging level that matches loggingLevelString","lastModifiedDate":"2016-08-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" * \u003cp\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":131,"author":{"gitId":"-"},"content":" * Returns null if there are no matches","lastModifiedDate":"2016-08-08"},{"lineNumber":132,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":" private Level getLoggingLevel(String loggingLevelString) {","lastModifiedDate":"2016-08-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":" return Level.parse(loggingLevelString);","lastModifiedDate":"2016-09-09"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":138,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":" public Class\u003cLevel\u003e handledType() {","lastModifiedDate":"2016-08-08"},{"lineNumber":140,"author":{"gitId":"-"},"content":" return Level.class;","lastModifiedDate":"2016-08-08"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":144,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"chaaaaun":3,"-":141}},{"path":"src/main/java/scrolls/elder/commons/util/StringUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.commons.util;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"chaaaaun"},"content":"import static scrolls.elder.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.io.PrintWriter;","lastModifiedDate":"2016-09-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.io.StringWriter;","lastModifiedDate":"2016-09-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Helper functions for handling strings.","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class StringUtil {","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Returns true if the {@code sentence} contains the {@code word}.","lastModifiedDate":"2016-10-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Ignores case, but a full word match is required.","lastModifiedDate":"2016-10-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * \u003cbr\u003eexamples:\u003cpre\u003e","lastModifiedDate":"2016-10-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * containsWordIgnoreCase(\"ABc def\", \"abc\") \u003d\u003d true","lastModifiedDate":"2016-10-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * containsWordIgnoreCase(\"ABc def\", \"DEF\") \u003d\u003d true","lastModifiedDate":"2016-10-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * containsWordIgnoreCase(\"ABc def\", \"AB\") \u003d\u003d false //not a full word match","lastModifiedDate":"2016-10-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * \u003c/pre\u003e","lastModifiedDate":"2016-10-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * @param sentence cannot be null","lastModifiedDate":"2016-10-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @param word cannot be null, cannot be empty, must be a single word","lastModifiedDate":"2016-10-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static boolean containsWordIgnoreCase(String sentence, String word) {","lastModifiedDate":"2016-10-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" requireNonNull(sentence);","lastModifiedDate":"2017-05-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":" requireNonNull(word);","lastModifiedDate":"2017-05-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" String preppedWord \u003d word.trim();","lastModifiedDate":"2016-10-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" checkArgument(!preppedWord.isEmpty(), \"Word parameter cannot be empty\");","lastModifiedDate":"2017-05-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":" checkArgument(preppedWord.split(\"\\\\s+\").length \u003d\u003d 1, \"Word parameter should be a single word\");","lastModifiedDate":"2017-05-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" String preppedSentence \u003d sentence;","lastModifiedDate":"2016-10-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" String[] wordsInPreppedSentence \u003d preppedSentence.split(\"\\\\s+\");","lastModifiedDate":"2016-10-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" return Arrays.stream(wordsInPreppedSentence)","lastModifiedDate":"2018-01-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" .anyMatch(preppedWord::equalsIgnoreCase);","lastModifiedDate":"2018-01-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Returns a detailed message of the t, including the stack trace.","lastModifiedDate":"2016-09-21"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static String getDetails(Throwable t) {","lastModifiedDate":"2016-09-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":" requireNonNull(t);","lastModifiedDate":"2017-05-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" StringWriter sw \u003d new StringWriter();","lastModifiedDate":"2016-09-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" t.printStackTrace(new PrintWriter(sw));","lastModifiedDate":"2016-09-21"},{"lineNumber":48,"author":{"gitId":"-"},"content":" return t.getMessage() + \"\\n\" + sw.toString();","lastModifiedDate":"2016-09-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-22"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Returns true if {@code s} represents a non-zero unsigned integer","lastModifiedDate":"2017-06-02"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * e.g. 1, 2, 3, ..., {@code Integer.MAX_VALUE} \u003cbr\u003e","lastModifiedDate":"2017-06-02"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Will return false for any other non-null string input","lastModifiedDate":"2017-06-02"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * e.g. empty string, \"-1\", \"0\", \"+1\", and \" 2 \" (untrimmed), \"3 0\" (contains whitespace), \"1 a\" (contains letters)","lastModifiedDate":"2017-06-02"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code s} is null.","lastModifiedDate":"2017-06-02"},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static boolean isNonZeroUnsignedInteger(String s) {","lastModifiedDate":"2017-06-02"},{"lineNumber":59,"author":{"gitId":"-"},"content":" requireNonNull(s);","lastModifiedDate":"2017-06-02"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02"},{"lineNumber":61,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-06-02"},{"lineNumber":62,"author":{"gitId":"-"},"content":" int value \u003d Integer.parseInt(s);","lastModifiedDate":"2017-06-02"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return value \u003e 0 \u0026\u0026 !s.startsWith(\"+\"); // \"+1\" is successfully parsed by Integer#parseInt(String)","lastModifiedDate":"2017-06-02"},{"lineNumber":64,"author":{"gitId":"-"},"content":" } catch (NumberFormatException nfe) {","lastModifiedDate":"2017-06-02"},{"lineNumber":65,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-06-02"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-02"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"chaaaaun":2,"-":66}},{"path":"src/main/java/scrolls/elder/commons/util/ToStringBuilder.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.commons.util;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Builds a string representation of an object that is suitable as the return value of {@link Object#toString()}.","lastModifiedDate":"2019-02-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class ToStringBuilder {","lastModifiedDate":"2019-02-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":" private static final String OBJECT_PREFIX \u003d \"{\";","lastModifiedDate":"2019-02-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":" private static final String OBJECT_SUFFIX \u003d \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":" private static final String FIELD_SEPARATOR \u003d \", \";","lastModifiedDate":"2019-02-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":" private static final String FIELD_NAME_VALUE_SEPARATOR \u003d \"\u003d\";","lastModifiedDate":"2019-02-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":" private final StringBuilder stringBuilder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":" private boolean hasField;","lastModifiedDate":"2019-02-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Constructs a {@code ToStringBuilder} whose formatted output will be prefixed with {@code objectName}.","lastModifiedDate":"2019-02-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public ToStringBuilder(String objectName) {","lastModifiedDate":"2019-02-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":" stringBuilder.append(objectName).append(OBJECT_PREFIX);","lastModifiedDate":"2019-02-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Constructs a {@code ToStringBuilder} whose formatted output will be prefixed with the","lastModifiedDate":"2019-02-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * canonical class name of {@code object}.","lastModifiedDate":"2019-02-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public ToStringBuilder(Object object) {","lastModifiedDate":"2019-02-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":" this(object.getClass().getCanonicalName());","lastModifiedDate":"2019-02-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Adds a field name/value pair to the output string.","lastModifiedDate":"2019-02-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2019-02-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * @param fieldName The name of the field.","lastModifiedDate":"2019-02-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * @param fieldValue The value of the field.","lastModifiedDate":"2019-02-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * @return A reference to this {@code ToStringBuilder} object, allowing method calls to be chained.","lastModifiedDate":"2019-02-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public ToStringBuilder add(String fieldName, Object fieldValue) {","lastModifiedDate":"2019-02-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" if (hasField) {","lastModifiedDate":"2019-02-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" stringBuilder.append(FIELD_SEPARATOR);","lastModifiedDate":"2019-02-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" stringBuilder.append(fieldName).append(FIELD_NAME_VALUE_SEPARATOR).append(fieldValue);","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" hasField \u003d true;","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Returns the built formatted string representation.","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return stringBuilder.toString() + OBJECT_SUFFIX;","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-02-23"}],"authorContributionMap":{"chaaaaun":1,"-":52}},{"path":"src/main/java/scrolls/elder/logic/Logic.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.logic;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-25"},{"lineNumber":6,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.core.GuiSettings;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.commands.CommandResult;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.Model;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Person;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * API of the Logic component","lastModifiedDate":"2016-09-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public interface Logic {","lastModifiedDate":"2016-09-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2016-09-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * @param commandText The command as entered by the user.","lastModifiedDate":"2016-09-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * @return the result of the command execution.","lastModifiedDate":"2016-09-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2017-02-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * @throws ParseException If an error occurs during parsing.","lastModifiedDate":"2017-03-11"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" CommandResult execute(String commandText) throws CommandException, ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Returns the AddressBook.","lastModifiedDate":"2018-12-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-03"},{"lineNumber":30,"author":{"gitId":"chaaaaun"},"content":" * @see Model#getAddressBook()","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2018-12-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /** Returns an unmodifiable view of the filtered list of persons */","lastModifiedDate":"2017-09-01"},{"lineNumber":35,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-26"},{"lineNumber":37,"author":{"gitId":"CJerrong"},"content":" /** Returns an unmodifiable view of the filtered list of persons */","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"CJerrong"},"content":" ObservableList\u003cPerson\u003e getFilteredVolunteerList();","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"CJerrong"},"content":" /** Returns an unmodifiable view of the filtered list of persons */","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"CJerrong"},"content":" ObservableList\u003cPerson\u003e getFilteredBefriendeeList();","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Set the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"CJerrong":6,"chaaaaun":9,"-":42}},{"path":"src/main/java/scrolls/elder/logic/LogicManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.logic;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-24"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.core.GuiSettings;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.core.LogsCenter;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.commands.Command;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.commands.CommandResult;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.parser.AddressBookParser;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.Model;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Person;","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.storage.Storage;","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * The main LogicManager of the app.","lastModifiedDate":"2016-09-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class LogicManager implements Logic {","lastModifiedDate":"2018-12-09"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_ERROR_FORMAT \u003d \"Could not save data due to the following error: %s\";","lastModifiedDate":"2023-06-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_PERMISSION_ERROR_FORMAT \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \"Could not save data to file %s due to insufficient permissions to write to the file or the folder.\";","lastModifiedDate":"2023-06-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(LogicManager.class);","lastModifiedDate":"2016-09-29"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final Model model;","lastModifiedDate":"2016-09-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final Storage storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final AddressBookParser addressBookParser;","lastModifiedDate":"2017-07-07"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Constructs a {@code LogicManager} with the given {@code Model} and {@code Storage}.","lastModifiedDate":"2020-05-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public LogicManager(Model model, Storage storage) {","lastModifiedDate":"2018-12-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.model \u003d model;","lastModifiedDate":"2016-09-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.storage \u003d storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":" addressBookParser \u003d new AddressBookParser();","lastModifiedDate":"2018-01-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public CommandResult execute(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":47,"author":{"gitId":"-"},"content":" logger.info(\"----------------[USER COMMAND][\" + commandText + \"]\");","lastModifiedDate":"2016-09-29"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":" CommandResult commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":" Command command \u003d addressBookParser.parseCommand(commandText);","lastModifiedDate":"2017-07-07"},{"lineNumber":51,"author":{"gitId":"-"},"content":" commandResult \u003d command.execute(model);","lastModifiedDate":"2019-01-25"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":" storage.saveAddressBook(model.getAddressBook());","lastModifiedDate":"2018-12-09"},{"lineNumber":55,"author":{"gitId":"-"},"content":" } catch (AccessDeniedException e) {","lastModifiedDate":"2023-06-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_PERMISSION_ERROR_FORMAT, e.getMessage()), e);","lastModifiedDate":"2023-06-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2018-12-09"},{"lineNumber":58,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_ERROR_FORMAT, ioe.getMessage()), ioe);","lastModifiedDate":"2023-06-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-03"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2018-12-03"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return model.getAddressBook();","lastModifiedDate":"2018-12-03"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-03"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return model.getFilteredPersonList();","lastModifiedDate":"2016-09-25"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-29"},{"lineNumber":74,"author":{"gitId":"CJerrong"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"CJerrong"},"content":" public ObservableList\u003cPerson\u003e getFilteredVolunteerList() {","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"CJerrong"},"content":" return model.getFilteredVolunteerList();","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"CJerrong"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"CJerrong"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"CJerrong"},"content":" public ObservableList\u003cPerson\u003e getFilteredBefriendeeList() {","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"CJerrong"},"content":" return model.getFilteredBefriendeeList();","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"CJerrong"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":" return model.getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":" return model.getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":" model.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"CJerrong":10,"chaaaaun":12,"-":76}},{"path":"src/main/java/scrolls/elder/logic/Messages.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.logic;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-07-14"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-07-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":7,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.parser.Prefix;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Person;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Container for user visible messages.","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class Messages {","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2016-09-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_PERSON_DISPLAYED_INDEX \u003d \"The person index provided is invalid\";","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String MESSAGE_PERSONS_LISTED_OVERVIEW \u003d \"%1$d persons listed!\";","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2023-07-14"},{"lineNumber":21,"author":{"gitId":"sdevih"},"content":" public static final String MESSAGE_CONTACT_PAIRED_BEFORE_DELETE \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"sdevih"},"content":" \"Contact is paired. Please unpair before deleting.\";","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-07-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2023-07-14"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2023-07-14"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":31,"author":{"gitId":"-"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-07-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Formats the {@code person} for display to the user.","lastModifiedDate":"2019-02-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static String format(Person person) {","lastModifiedDate":"2019-02-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" builder.append(person.getName())","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"gerteck"},"content":" .append(\"; Role: \")","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"gerteck"},"content":" .append(person.getRole())","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"-"},"content":" .append(\"; Phone: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" .append(person.getPhone())","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" .append(\"; Email: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" .append(person.getEmail())","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" .append(\"; Address: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" .append(person.getAddress())","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" .append(\"; Tags: \");","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" person.getTags().forEach(builder::append);","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"gerteck":2,"chaaaaun":3,"-":48,"sdevih":2}},{"path":"src/main/java/scrolls/elder/logic/commands/AddCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.logic.commands;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"gerteck"},"content":"import static scrolls.elder.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"gerteck"},"content":"import static scrolls.elder.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"gerteck"},"content":"import static scrolls.elder.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"gerteck"},"content":"import static scrolls.elder.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"gerteck"},"content":"import static scrolls.elder.logic.parser.CliSyntax.PREFIX_ROLE;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"gerteck"},"content":"import static scrolls.elder.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.Messages;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.Model;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Person;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"add\";","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a person to the address book. \"","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2017-06-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2017-06-06"},{"lineNumber":27,"author":{"gitId":"gerteck"},"content":" + PREFIX_ROLE + \"{VOLUNTEER or BEFRIENDEE} \"","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2017-05-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2017-05-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"ADDRESS \"","lastModifiedDate":"2017-05-09"},{"lineNumber":31,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09"},{"lineNumber":32,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2017-06-06"},{"lineNumber":34,"author":{"gitId":"gerteck"},"content":" + PREFIX_ROLE + \"volunteer \"","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2017-05-09"},{"lineNumber":37,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"311, Clementi Ave 2, #02-25 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":38,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"friends \"","lastModifiedDate":"2017-05-09"},{"lineNumber":39,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"owesMoney\";","lastModifiedDate":"2017-05-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New person added: %1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book\";","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" private final Person toAdd;","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2018-01-10"},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public AddCommand(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":50,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":51,"author":{"gitId":"-"},"content":" toAdd \u003d person;","lastModifiedDate":"2018-01-10"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":58,"author":{"gitId":"chaaaaun"},"content":" int gid \u003d model.getAddressBook().getGlobalId();","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"chaaaaun"},"content":" toAdd.setId(gid);","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"-"},"content":" if (model.hasPerson(toAdd)) {","lastModifiedDate":"2018-08-07"},{"lineNumber":61,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":64,"author":{"gitId":"-"},"content":" model.addPerson(toAdd);","lastModifiedDate":"2016-09-25"},{"lineNumber":65,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2019-02-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-22"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" if (!(other instanceof AddCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" AddCommand otherAddCommand \u003d (AddCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2023-07-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"gerteck":8,"chaaaaun":8,"-":73}},{"path":"src/main/java/scrolls/elder/logic/commands/ClearCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.logic.commands;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.AddressBook;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.Model;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * Clears the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class ClearCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"clear\";","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Address book has been cleared!\";","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15"},{"lineNumber":20,"author":{"gitId":"chaaaaun"},"content":" model.setAddressBook(new AddressBook(0));","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"-"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"chaaaaun":4,"-":19}},{"path":"src/main/java/scrolls/elder/logic/commands/Command.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.logic.commands;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.Model;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * Represents a command with hidden internal logic and the ability to be executed.","lastModifiedDate":"2016-08-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public abstract class Command {","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Executes the command and returns the result message.","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * @param model {@code Model} which the command should operate on.","lastModifiedDate":"2018-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * @return feedback message of the operation result for display","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2017-02-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public abstract CommandResult execute(Model model) throws CommandException;","lastModifiedDate":"2019-01-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"chaaaaun":3,"-":17}},{"path":"src/main/java/scrolls/elder/logic/commands/CommandResult.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.logic.commands;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2018-12-09"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":7,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * Represents the result of a command execution.","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class CommandResult {","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":14,"author":{"gitId":"-"},"content":" private final String feedbackToUser;","lastModifiedDate":"2018-12-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" /** Help information should be shown to the user. */","lastModifiedDate":"2018-12-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":" private final boolean showHelp;","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":" /** The application should exit. */","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final boolean exit;","lastModifiedDate":"2018-12-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Constructs a {@code CommandResult} with the specified fields.","lastModifiedDate":"2018-12-09"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public CommandResult(String feedbackToUser, boolean showHelp, boolean exit) {","lastModifiedDate":"2018-12-09"},{"lineNumber":26,"author":{"gitId":"-"},"content":" this.feedbackToUser \u003d requireNonNull(feedbackToUser);","lastModifiedDate":"2017-05-15"},{"lineNumber":27,"author":{"gitId":"-"},"content":" this.showHelp \u003d showHelp;","lastModifiedDate":"2018-12-09"},{"lineNumber":28,"author":{"gitId":"-"},"content":" this.exit \u003d exit;","lastModifiedDate":"2018-12-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Constructs a {@code CommandResult} with the specified {@code feedbackToUser},","lastModifiedDate":"2018-12-09"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * and other fields set to their default value.","lastModifiedDate":"2018-12-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public CommandResult(String feedbackToUser) {","lastModifiedDate":"2018-12-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":" this(feedbackToUser, false, false);","lastModifiedDate":"2018-12-09"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public String getFeedbackToUser() {","lastModifiedDate":"2018-12-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":" return feedbackToUser;","lastModifiedDate":"2018-12-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public boolean isShowHelp() {","lastModifiedDate":"2018-12-09"},{"lineNumber":44,"author":{"gitId":"-"},"content":" return showHelp;","lastModifiedDate":"2018-12-09"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public boolean isExit() {","lastModifiedDate":"2018-12-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":" return exit;","lastModifiedDate":"2018-12-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2018-12-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-12-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-12-09"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2018-12-09"},{"lineNumber":58,"author":{"gitId":"-"},"content":" if (!(other instanceof CommandResult)) {","lastModifiedDate":"2018-12-09"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-12-09"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":62,"author":{"gitId":"-"},"content":" CommandResult otherCommandResult \u003d (CommandResult) other;","lastModifiedDate":"2018-12-09"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return feedbackToUser.equals(otherCommandResult.feedbackToUser)","lastModifiedDate":"2018-12-09"},{"lineNumber":64,"author":{"gitId":"-"},"content":" \u0026\u0026 showHelp \u003d\u003d otherCommandResult.showHelp","lastModifiedDate":"2018-12-09"},{"lineNumber":65,"author":{"gitId":"-"},"content":" \u0026\u0026 exit \u003d\u003d otherCommandResult.exit;","lastModifiedDate":"2018-12-09"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2018-12-09"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return Objects.hash(feedbackToUser, showHelp, exit);","lastModifiedDate":"2018-12-09"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":" .add(\"feedbackToUser\", feedbackToUser)","lastModifiedDate":"2019-02-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" .add(\"showHelp\", showHelp)","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":" .add(\"exit\", exit)","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"chaaaaun":2,"-":80}},{"path":"src/main/java/scrolls/elder/logic/commands/DeleteCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.logic.commands;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"sdevih"},"content":"import static scrolls.elder.logic.parser.CliSyntax.PREFIX_ROLE;","lastModifiedDate":"2024-03-22"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-09-01"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.core.index.Index;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.Messages;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.Model;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Person;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Role;","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"sdevih"},"content":" * Deletes a person identified using its displayed index from the address book.","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"sdevih"},"content":" public static final String COMMAND_WORD_DELETE \u003d \"delete\";","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"sdevih"},"content":" public static final String COMMAND_WORD_DEL \u003d \"del\";","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"sdevih"},"content":" public static final String COMMAND_WORD_RM \u003d \"rm\";","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"sdevih"},"content":" public static final String COMMAND_WORD_REMOVE \u003d \"remove\";","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"sdevih"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD_DELETE","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"sdevih"},"content":" + \": Deletes the person identified by the index number used in the displayed person list and their type.\\n\"","lastModifiedDate":"2024-03-22"},{"lineNumber":28,"author":{"gitId":"sdevih"},"content":" + \"Parameters: INDEX (must be a positive integer), TYPE (volunteer or befriendee)\\n\"","lastModifiedDate":"2024-03-22"},{"lineNumber":29,"author":{"gitId":"sdevih"},"content":" + \"Example: \" + COMMAND_WORD_DELETE + \" 1 \"","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"sdevih"},"content":" + PREFIX_ROLE","lastModifiedDate":"2024-03-22"},{"lineNumber":31,"author":{"gitId":"sdevih"},"content":" + \"{VOLUNTEER or BEFRIENDEE}\\n\"","lastModifiedDate":"2024-03-22"},{"lineNumber":32,"author":{"gitId":"sdevih"},"content":" + \"Alternatively, you can also delete a person using the following commands as well.\\n\"","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"sdevih"},"content":" + \"Example: \" + COMMAND_WORD_DEL + \" 1\\n\"","lastModifiedDate":"2024-03-22"},{"lineNumber":34,"author":{"gitId":"sdevih"},"content":" + PREFIX_ROLE","lastModifiedDate":"2024-03-22"},{"lineNumber":35,"author":{"gitId":"sdevih"},"content":" + \"{VOLUNTEER or BEFRIENDEE}\\n\"","lastModifiedDate":"2024-03-22"},{"lineNumber":36,"author":{"gitId":"sdevih"},"content":" + \"Example: \" + COMMAND_WORD_RM + \" 1\\n\"","lastModifiedDate":"2024-03-22"},{"lineNumber":37,"author":{"gitId":"sdevih"},"content":" + PREFIX_ROLE","lastModifiedDate":"2024-03-22"},{"lineNumber":38,"author":{"gitId":"sdevih"},"content":" + \"{VOLUNTEER or BEFRIENDEE}\\n\"","lastModifiedDate":"2024-03-22"},{"lineNumber":39,"author":{"gitId":"sdevih"},"content":" + \"Example: \" + COMMAND_WORD_REMOVE + \" 1\"","lastModifiedDate":"2024-03-22"},{"lineNumber":40,"author":{"gitId":"sdevih"},"content":" + PREFIX_ROLE","lastModifiedDate":"2024-03-22"},{"lineNumber":41,"author":{"gitId":"sdevih"},"content":" + \"{VOLUNTEER or BEFRIENDEE}\\n\";","lastModifiedDate":"2024-03-22"},{"lineNumber":42,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DELETE_PERSON_SUCCESS \u003d \"Deleted Person: %1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"sdevih"},"content":" public static final String MESSAGE_DELETE_PERSON_ERROR \u003d \"Unable to delete contact: \";","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"sdevih"},"content":" public static final String MESSAGE_CONFIRM_DELETE \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"sdevih"},"content":" \"Valid contact inputted. Are you sure you want to delete this contact?\";","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"chaaaaun"},"content":" public static final String MESSAGE_NO_ROLE \u003d \"Role must be specified when editing a person.\";","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" private final Index targetIndex;","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"chaaaaun"},"content":" private final Role role;","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"chaaaaun"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"chaaaaun"},"content":" * Creates a DeleteCommand to delete the person at the specified {@code targetIndex}.","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"chaaaaun"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"chaaaaun"},"content":" public DeleteCommand(Index targetIndex, Role role) {","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"-"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2016-09-22"},{"lineNumber":58,"author":{"gitId":"chaaaaun"},"content":" this.role \u003d role;","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":63,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":64,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"chaaaaun"},"content":" List\u003cPerson\u003e lastShownList;","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"chaaaaun"},"content":" if (role.isVolunteer()) {","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"chaaaaun"},"content":" lastShownList \u003d model.getFilteredVolunteerList();","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"chaaaaun"},"content":" } else {","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"chaaaaun"},"content":" lastShownList \u003d model.getFilteredBefriendeeList();","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19"},{"lineNumber":73,"author":{"gitId":"sdevih"},"content":" throw new CommandException(MESSAGE_DELETE_PERSON_ERROR + Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":" Person personToDelete \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2018-04-19"},{"lineNumber":77,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"sdevih"},"content":" //Check if the person to be deleted is paired with another person.","lastModifiedDate":"2024-03-21"},{"lineNumber":79,"author":{"gitId":"sdevih"},"content":" if (personToDelete.isPairPresent(personToDelete)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"sdevih"},"content":" throw new CommandException(MESSAGE_DELETE_PERSON_ERROR + Messages.MESSAGE_CONTACT_PAIRED_BEFORE_DELETE);","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"sdevih"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"-"},"content":" model.deletePerson(personToDelete);","lastModifiedDate":"2016-09-25"},{"lineNumber":84,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_PERSON_SUCCESS, Messages.format(personToDelete)));","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":" if (!(other instanceof DeleteCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":" DeleteCommand otherDeleteCommand \u003d (DeleteCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":" return targetIndex.equals(otherDeleteCommand.targetIndex);","lastModifiedDate":"2023-07-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2019-02-23"},{"lineNumber":106,"author":{"gitId":"chaaaaun"},"content":" .add(\"role\", role)","lastModifiedDate":"2024-03-21"},{"lineNumber":107,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"chaaaaun":23,"-":52,"sdevih":34}},{"path":"src/main/java/scrolls/elder/logic/commands/EditCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.logic.commands;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"chaaaaun"},"content":"import static scrolls.elder.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"chaaaaun"},"content":"import static scrolls.elder.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"chaaaaun"},"content":"import static scrolls.elder.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"chaaaaun"},"content":"import static scrolls.elder.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":"import static scrolls.elder.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-01-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-01-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":17,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.core.index.Index;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.util.CollectionUtil;","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.Messages;","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.Model;","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"CJerrong"},"content":"import scrolls.elder.model.person.Address;","lastModifiedDate":"2024-03-15"},{"lineNumber":24,"author":{"gitId":"CJerrong"},"content":"import scrolls.elder.model.person.Befriendee;","lastModifiedDate":"2024-03-15"},{"lineNumber":25,"author":{"gitId":"CJerrong"},"content":"import scrolls.elder.model.person.Email;","lastModifiedDate":"2024-03-15"},{"lineNumber":26,"author":{"gitId":"CJerrong"},"content":"import scrolls.elder.model.person.Name;","lastModifiedDate":"2024-03-15"},{"lineNumber":27,"author":{"gitId":"CJerrong"},"content":"import scrolls.elder.model.person.Person;","lastModifiedDate":"2024-03-15"},{"lineNumber":28,"author":{"gitId":"CJerrong"},"content":"import scrolls.elder.model.person.Phone;","lastModifiedDate":"2024-03-15"},{"lineNumber":29,"author":{"gitId":"gerteck"},"content":"import scrolls.elder.model.person.Role;","lastModifiedDate":"2024-03-15"},{"lineNumber":30,"author":{"gitId":"CJerrong"},"content":"import scrolls.elder.model.person.Volunteer;","lastModifiedDate":"2024-03-15"},{"lineNumber":31,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.tag.Tag;","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":34,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Edits the details of an existing person in the address book.","lastModifiedDate":"2016-12-26"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":37,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2016-12-26"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the person identified \"","lastModifiedDate":"2016-12-26"},{"lineNumber":42,"author":{"gitId":"-"},"content":" + \"by the index number used in the displayed person list. \"","lastModifiedDate":"2018-04-01"},{"lineNumber":43,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26"},{"lineNumber":44,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2017-06-06"},{"lineNumber":45,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06"},{"lineNumber":46,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"91234567 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2017-05-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Person: %1$s\";","lastModifiedDate":"2016-12-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2016-12-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book.\";","lastModifiedDate":"2016-12-26"},{"lineNumber":57,"author":{"gitId":"chaaaaun"},"content":" public static final String MESSAGE_NO_ROLE \u003d \"Role must be specified when editing a person.\";","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2017-05-25"},{"lineNumber":60,"author":{"gitId":"-"},"content":" private final EditPersonDescriptor editPersonDescriptor;","lastModifiedDate":"2016-12-26"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit","lastModifiedDate":"2017-05-25"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * @param editPersonDescriptor details to edit the person with","lastModifiedDate":"2016-12-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public EditCommand(Index index, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2017-05-25"},{"lineNumber":67,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25"},{"lineNumber":68,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2017-05-15"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":70,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25"},{"lineNumber":71,"author":{"gitId":"-"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2016-12-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":74,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":75,"author":{"gitId":"-"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2016-12-26"},{"lineNumber":76,"author":{"gitId":"-"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2016-12-26"},{"lineNumber":77,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":78,"author":{"gitId":"-"},"content":" private static Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2018-01-10"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2016-12-26"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":81,"author":{"gitId":"-"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(personToEdit.getName());","lastModifiedDate":"2017-06-21"},{"lineNumber":82,"author":{"gitId":"-"},"content":" Phone updatedPhone \u003d editPersonDescriptor.getPhone().orElse(personToEdit.getPhone());","lastModifiedDate":"2017-06-21"},{"lineNumber":83,"author":{"gitId":"-"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2017-06-21"},{"lineNumber":84,"author":{"gitId":"-"},"content":" Address updatedAddress \u003d editPersonDescriptor.getAddress().orElse(personToEdit.getAddress());","lastModifiedDate":"2017-06-21"},{"lineNumber":85,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e updatedTags \u003d editPersonDescriptor.getTags().orElse(personToEdit.getTags());","lastModifiedDate":"2017-06-21"},{"lineNumber":86,"author":{"gitId":"gerteck"},"content":" Role role \u003d editPersonDescriptor.getRole().orElse(personToEdit.getRole());","lastModifiedDate":"2024-03-15"},{"lineNumber":87,"author":{"gitId":"CJerrong"},"content":" Optional\u003cName\u003e pairedWithName \u003d personToEdit.getPairedWithName();","lastModifiedDate":"2024-03-22"},{"lineNumber":88,"author":{"gitId":"CJerrong"},"content":" Optional\u003cInteger\u003e pairedWithID \u003d personToEdit.getPairedWithID();","lastModifiedDate":"2024-03-22"},{"lineNumber":89,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":90,"author":{"gitId":"chaaaaun"},"content":" Person p;","lastModifiedDate":"2024-03-21"},{"lineNumber":91,"author":{"gitId":"gerteck"},"content":" if (role.isVolunteer()) {","lastModifiedDate":"2024-03-16"},{"lineNumber":92,"author":{"gitId":"CJerrong"},"content":" p \u003d new Volunteer(updatedName, updatedPhone, updatedEmail, updatedAddress, updatedTags,","lastModifiedDate":"2024-03-22"},{"lineNumber":93,"author":{"gitId":"CJerrong"},"content":" pairedWithName, pairedWithID);","lastModifiedDate":"2024-03-22"},{"lineNumber":94,"author":{"gitId":"gerteck"},"content":" } else {","lastModifiedDate":"2024-03-15"},{"lineNumber":95,"author":{"gitId":"CJerrong"},"content":" p \u003d new Befriendee(updatedName, updatedPhone, updatedEmail, updatedAddress, updatedTags,","lastModifiedDate":"2024-03-22"},{"lineNumber":96,"author":{"gitId":"CJerrong"},"content":" pairedWithName, pairedWithID);","lastModifiedDate":"2024-03-22"},{"lineNumber":97,"author":{"gitId":"CJerrong"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":98,"author":{"gitId":"chaaaaun"},"content":" p.setId(personToEdit.getId());","lastModifiedDate":"2024-03-21"},{"lineNumber":99,"author":{"gitId":"CJerrong"},"content":" return p;","lastModifiedDate":"2024-03-21"},{"lineNumber":100,"author":{"gitId":"CJerrong"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":101,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":102,"author":{"gitId":"CJerrong"},"content":" private static Person createEditedPair(Person editedPerson, Person originalPair) {","lastModifiedDate":"2024-03-21"},{"lineNumber":103,"author":{"gitId":"CJerrong"},"content":" assert editedPerson !\u003d null;","lastModifiedDate":"2024-03-21"},{"lineNumber":104,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":105,"author":{"gitId":"CJerrong"},"content":" // Will check before calling this function that the editedPerson is paired","lastModifiedDate":"2024-03-21"},{"lineNumber":106,"author":{"gitId":"CJerrong"},"content":" Name updatedName \u003d originalPair.getName();","lastModifiedDate":"2024-03-21"},{"lineNumber":107,"author":{"gitId":"CJerrong"},"content":" Phone updatedPhone \u003d originalPair.getPhone();","lastModifiedDate":"2024-03-21"},{"lineNumber":108,"author":{"gitId":"CJerrong"},"content":" Email updatedEmail \u003d originalPair.getEmail();","lastModifiedDate":"2024-03-21"},{"lineNumber":109,"author":{"gitId":"CJerrong"},"content":" Address updatedAddress \u003d originalPair.getAddress();","lastModifiedDate":"2024-03-21"},{"lineNumber":110,"author":{"gitId":"CJerrong"},"content":" Set\u003cTag\u003e updatedTags \u003d originalPair.getTags();","lastModifiedDate":"2024-03-21"},{"lineNumber":111,"author":{"gitId":"CJerrong"},"content":" Role role \u003d originalPair.getRole();","lastModifiedDate":"2024-03-21"},{"lineNumber":112,"author":{"gitId":"CJerrong"},"content":" Optional\u003cName\u003e updatedPairedWithName \u003d Optional.of(editedPerson.getName());","lastModifiedDate":"2024-03-22"},{"lineNumber":113,"author":{"gitId":"CJerrong"},"content":" Optional\u003cInteger\u003e updatedPairedWithID \u003d Optional.of(editedPerson.getId());","lastModifiedDate":"2024-03-22"},{"lineNumber":114,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":115,"author":{"gitId":"CJerrong"},"content":" Person p;","lastModifiedDate":"2024-03-21"},{"lineNumber":116,"author":{"gitId":"CJerrong"},"content":" if (role.isVolunteer()) {","lastModifiedDate":"2024-03-21"},{"lineNumber":117,"author":{"gitId":"CJerrong"},"content":" p \u003d new Volunteer(updatedName, updatedPhone, updatedEmail, updatedAddress, updatedTags,","lastModifiedDate":"2024-03-22"},{"lineNumber":118,"author":{"gitId":"CJerrong"},"content":" updatedPairedWithName, updatedPairedWithID);","lastModifiedDate":"2024-03-22"},{"lineNumber":119,"author":{"gitId":"CJerrong"},"content":" } else {","lastModifiedDate":"2024-03-21"},{"lineNumber":120,"author":{"gitId":"CJerrong"},"content":" p \u003d new Befriendee(updatedName, updatedPhone, updatedEmail, updatedAddress, updatedTags,","lastModifiedDate":"2024-03-22"},{"lineNumber":121,"author":{"gitId":"CJerrong"},"content":" updatedPairedWithName, updatedPairedWithID);","lastModifiedDate":"2024-03-22"},{"lineNumber":122,"author":{"gitId":"CJerrong"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":123,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":124,"author":{"gitId":"CJerrong"},"content":" p.setId(originalPair.getId());","lastModifiedDate":"2024-03-21"},{"lineNumber":125,"author":{"gitId":"chaaaaun"},"content":" return p;","lastModifiedDate":"2024-03-21"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":129,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-21"},{"lineNumber":130,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-21"},{"lineNumber":131,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":132,"author":{"gitId":"chaaaaun"},"content":" if (editPersonDescriptor.getRole().isEmpty()) {","lastModifiedDate":"2024-03-21"},{"lineNumber":133,"author":{"gitId":"chaaaaun"},"content":" throw new CommandException(MESSAGE_NO_ROLE);","lastModifiedDate":"2024-03-21"},{"lineNumber":134,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":135,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":136,"author":{"gitId":"chaaaaun"},"content":" List\u003cPerson\u003e lastShownList;","lastModifiedDate":"2024-03-21"},{"lineNumber":137,"author":{"gitId":"chaaaaun"},"content":" if (editPersonDescriptor.getRole().get().isVolunteer()) {","lastModifiedDate":"2024-03-21"},{"lineNumber":138,"author":{"gitId":"chaaaaun"},"content":" lastShownList \u003d model.getFilteredVolunteerList();","lastModifiedDate":"2024-03-21"},{"lineNumber":139,"author":{"gitId":"chaaaaun"},"content":" } else {","lastModifiedDate":"2024-03-21"},{"lineNumber":140,"author":{"gitId":"chaaaaun"},"content":" lastShownList \u003d model.getFilteredBefriendeeList();","lastModifiedDate":"2024-03-21"},{"lineNumber":141,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":143,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-03-21"},{"lineNumber":144,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-21"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":147,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-03-21"},{"lineNumber":148,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2024-03-21"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":150,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2024-03-22"},{"lineNumber":151,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2024-03-21"},{"lineNumber":152,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":154,"author":{"gitId":"CJerrong"},"content":" if (editedPerson.isPaired()) {","lastModifiedDate":"2024-03-21"},{"lineNumber":155,"author":{"gitId":"CJerrong"},"content":" Person pairedWith \u003d model.getPersonFromID(editedPerson.getPairedWithID().get());","lastModifiedDate":"2024-03-21"},{"lineNumber":156,"author":{"gitId":"CJerrong"},"content":" Person pairedWithUpdated \u003d createEditedPair(editedPerson, pairedWith);","lastModifiedDate":"2024-03-21"},{"lineNumber":157,"author":{"gitId":"CJerrong"},"content":" model.setPerson(pairedWith, pairedWithUpdated);","lastModifiedDate":"2024-03-21"},{"lineNumber":158,"author":{"gitId":"CJerrong"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":159,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":160,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2024-03-21"},{"lineNumber":161,"author":{"gitId":"chaaaaun"},"content":" model.updateFilteredPersonList(Model.PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-21"},{"lineNumber":162,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson)));","lastModifiedDate":"2024-03-21"},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":165,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08"},{"lineNumber":166,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08"},{"lineNumber":168,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08"},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":171,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08"},{"lineNumber":172,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08"},{"lineNumber":173,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08"},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":176,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":177,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13"},{"lineNumber":178,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13"},{"lineNumber":179,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":181,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":190,"author":{"gitId":"-"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2016-12-26"},{"lineNumber":191,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26"},{"lineNumber":192,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":193,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26"},{"lineNumber":194,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21"},{"lineNumber":195,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":196,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21"},{"lineNumber":197,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-06-21"},{"lineNumber":198,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21"},{"lineNumber":199,"author":{"gitId":"gerteck"},"content":" private Role role;","lastModifiedDate":"2024-03-15"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":201,"author":{"gitId":"chaaaaun"},"content":" public EditPersonDescriptor() {","lastModifiedDate":"2024-03-21"},{"lineNumber":202,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":204,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":205,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11"},{"lineNumber":206,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":207,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":208,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26"},{"lineNumber":209,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15"},{"lineNumber":210,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15"},{"lineNumber":211,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15"},{"lineNumber":212,"author":{"gitId":"-"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2018-01-15"},{"lineNumber":213,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11"},{"lineNumber":214,"author":{"gitId":"gerteck"},"content":" setRole(toCopy.role);","lastModifiedDate":"2024-03-15"},{"lineNumber":215,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":217,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":218,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26"},{"lineNumber":219,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":220,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26"},{"lineNumber":221,"author":{"gitId":"-"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, address, tags);","lastModifiedDate":"2018-08-14"},{"lineNumber":222,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":224,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26"},{"lineNumber":225,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21"},{"lineNumber":226,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":228,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2024-03-21"},{"lineNumber":229,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2024-03-21"},{"lineNumber":230,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":232,"author":{"gitId":"-"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26"},{"lineNumber":233,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2017-06-21"},{"lineNumber":234,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":236,"author":{"gitId":"-"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2024-03-21"},{"lineNumber":237,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2024-03-21"},{"lineNumber":238,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":240,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26"},{"lineNumber":241,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21"},{"lineNumber":242,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":244,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2024-03-21"},{"lineNumber":245,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2024-03-21"},{"lineNumber":246,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":247,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":248,"author":{"gitId":"-"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2016-12-26"},{"lineNumber":249,"author":{"gitId":"-"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2017-06-21"},{"lineNumber":250,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":251,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":252,"author":{"gitId":"-"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2024-03-21"},{"lineNumber":253,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2024-03-21"},{"lineNumber":254,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":256,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":257,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11"},{"lineNumber":258,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11"},{"lineNumber":259,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11"},{"lineNumber":260,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":261,"author":{"gitId":"-"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":262,"author":{"gitId":"-"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2018-01-11"},{"lineNumber":263,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":265,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":266,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2024-03-21"},{"lineNumber":267,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2024-03-21"},{"lineNumber":268,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":269,"author":{"gitId":"-"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2024-03-21"},{"lineNumber":270,"author":{"gitId":"-"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2024-03-21"},{"lineNumber":271,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":273,"author":{"gitId":"gerteck"},"content":" public Optional\u003cRole\u003e getRole() {","lastModifiedDate":"2024-03-15"},{"lineNumber":274,"author":{"gitId":"gerteck"},"content":" return Optional.ofNullable(role);","lastModifiedDate":"2024-03-15"},{"lineNumber":275,"author":{"gitId":"CJerrong"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":276,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":277,"author":{"gitId":"chaaaaun"},"content":" public void setRole(Role role) {","lastModifiedDate":"2024-03-21"},{"lineNumber":278,"author":{"gitId":"chaaaaun"},"content":" this.role \u003d role;","lastModifiedDate":"2024-03-21"},{"lineNumber":279,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":280,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":281,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05"},{"lineNumber":282,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05"},{"lineNumber":283,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05"},{"lineNumber":284,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05"},{"lineNumber":285,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":286,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":287,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05"},{"lineNumber":288,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05"},{"lineNumber":289,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05"},{"lineNumber":290,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":291,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":292,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":293,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":294,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":295,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":296,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(address, otherEditPersonDescriptor.address)","lastModifiedDate":"2023-07-13"},{"lineNumber":297,"author":{"gitId":"CJerrong"},"content":" \u0026\u0026 Objects.equals(tags, otherEditPersonDescriptor.tags)","lastModifiedDate":"2024-03-15"},{"lineNumber":298,"author":{"gitId":"gerteck"},"content":" \u0026\u0026 Objects.equals(role, otherEditPersonDescriptor.role);","lastModifiedDate":"2024-03-15"},{"lineNumber":299,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":300,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":301,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":302,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":303,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":304,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":305,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":306,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":307,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":308,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":309,"author":{"gitId":"CJerrong"},"content":" .add(\"role\", role)","lastModifiedDate":"2024-03-15"},{"lineNumber":310,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":311,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":312,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":313,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26"}],"authorContributionMap":{"CJerrong":50,"gerteck":10,"chaaaaun":33,"-":220}},{"path":"src/main/java/scrolls/elder/logic/commands/ExitCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.logic.commands;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":3,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.Model;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-22"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * Terminates the program.","lastModifiedDate":"2016-09-22"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2016-09-22"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"exit\";","lastModifiedDate":"2016-09-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final String MESSAGE_EXIT_ACKNOWLEDGEMENT \u003d \"Exiting Address Book as requested ...\";","lastModifiedDate":"2016-09-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":" return new CommandResult(MESSAGE_EXIT_ACKNOWLEDGEMENT, false, true);","lastModifiedDate":"2018-12-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":19,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22"}],"authorContributionMap":{"chaaaaun":2,"-":17}},{"path":"src/main/java/scrolls/elder/logic/commands/FindCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.logic.commands;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":5,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.Messages;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.Model;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Finds and lists all persons in address book whose name contains any of the argument keywords.","lastModifiedDate":"2016-09-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Keyword matching is case insensitive.","lastModifiedDate":"2018-04-01"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class FindCommand extends Command {","lastModifiedDate":"2016-09-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"find\";","lastModifiedDate":"2016-09-22"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Finds all persons whose names contain any of \"","lastModifiedDate":"2016-09-22"},{"lineNumber":19,"author":{"gitId":"-"},"content":" + \"the specified keywords (case-insensitive) and displays them as a list with index numbers.\\n\"","lastModifiedDate":"2018-04-01"},{"lineNumber":20,"author":{"gitId":"-"},"content":" + \"Parameters: KEYWORD [MORE_KEYWORDS]...\\n\"","lastModifiedDate":"2016-09-22"},{"lineNumber":21,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" alice bob charlie\";","lastModifiedDate":"2016-09-22"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final NameContainsKeywordsPredicate predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public FindCommand(NameContainsKeywordsPredicate predicate) {","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-22"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(predicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return new CommandResult(","lastModifiedDate":"2018-04-01"},{"lineNumber":34,"author":{"gitId":"-"},"content":" String.format(Messages.MESSAGE_PERSONS_LISTED_OVERVIEW, model.getFilteredPersonList().size()));","lastModifiedDate":"2018-04-01"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" if (!(other instanceof FindCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" FindCommand otherFindCommand \u003d (FindCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" return predicate.equals(otherFindCommand.predicate);","lastModifiedDate":"2023-07-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" .add(\"predicate\", predicate)","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22"}],"authorContributionMap":{"chaaaaun":5,"-":53}},{"path":"src/main/java/scrolls/elder/logic/commands/HelpCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.logic.commands;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.Model;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-31"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * Format full help instructions for every command for display.","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class HelpCommand extends Command {","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"help\";","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Shows program usage instructions.\\n\"","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD;","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String SHOWING_HELP_MESSAGE \u003d \"Opened help window.\";","lastModifiedDate":"2016-08-31"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-31"},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" return new CommandResult(SHOWING_HELP_MESSAGE, true, false);","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"chaaaaun":2,"-":19}},{"path":"src/main/java/scrolls/elder/logic/commands/ListCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.logic.commands;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":5,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.Model;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Lists all persons in the address book to the user.","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2016-09-21"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"list\";","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Listed all persons\";","lastModifiedDate":"2016-09-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":20,"author":{"gitId":"chaaaaun"},"content":" model.updateFilteredPersonList(Model.PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2016-09-22"},{"lineNumber":22,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"chaaaaun":3,"-":20}},{"path":"src/main/java/scrolls/elder/logic/commands/PairCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"soons1"},"content":"package scrolls.elder.logic.commands;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"soons1"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"gerteck"},"content":"import java.util.List;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"gerteck"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"gerteck"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"soons1"},"content":"import scrolls.elder.commons.core.index.Index;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"soons1"},"content":"import scrolls.elder.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"soons1"},"content":"import scrolls.elder.logic.Messages;","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"soons1"},"content":"import scrolls.elder.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"soons1"},"content":"import scrolls.elder.model.Model;","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"gerteck"},"content":"import scrolls.elder.model.person.Address;","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"gerteck"},"content":"import scrolls.elder.model.person.Befriendee;","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"gerteck"},"content":"import scrolls.elder.model.person.Email;","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"gerteck"},"content":"import scrolls.elder.model.person.Name;","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"soons1"},"content":"import scrolls.elder.model.person.Person;","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"gerteck"},"content":"import scrolls.elder.model.person.Phone;","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"gerteck"},"content":"import scrolls.elder.model.person.Role;","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"gerteck"},"content":"import scrolls.elder.model.person.Volunteer;","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"gerteck"},"content":"import scrolls.elder.model.tag.Tag;","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"soons1"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"soons1"},"content":" * Pairs a volunteer and a befriendee in the address book.","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"soons1"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"soons1"},"content":"public class PairCommand extends Command {","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"soons1"},"content":" public static final String COMMAND_WORD \u003d \"pair\";","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"soons1"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Pairs a volunteer and a befriendee specified \"","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"soons1"},"content":" + \"by their index numbers used in the displayed person list.\\n\"","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"soons1"},"content":" + \"Parameters: INDEX1 INDEX2 (both must be a positive integers)\\n\"","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"soons1"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 2\";","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"soons1"},"content":" public static final String MESSAGE_PAIR_SUCCESS \u003d \"Paired: %1$s and %2$s\";","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"soons1"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"Cannot pair the same person with themselves.\";","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"soons1"},"content":" public static final String MESSAGE_DIFFERENT_PERSON_TYPE \u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"soons1"},"content":" \"Pairing can only be done between a volunteer and a befriendee.\";","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"soons1"},"content":" public static final String MESSAGE_ALREADY_PAIRED \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"soons1"},"content":" \"One or both of the persons are already paired, unpair and try again.\";","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"soons1"},"content":" private final Index index1;","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"soons1"},"content":" private final Index index2;","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"soons1"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"soons1"},"content":" * @param index1 of the first person to be paired","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"soons1"},"content":" * @param index2 of the second person to be paired with","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"soons1"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"soons1"},"content":" public PairCommand(Index index1, Index index2) {","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"soons1"},"content":" requireNonNull(index1);","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"soons1"},"content":" requireNonNull(index2);","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"soons1"},"content":" this.index1 \u003d index1;","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"soons1"},"content":" this.index2 \u003d index2;","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"soons1"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"soons1"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"soons1"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"soons1"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"chaaaaun"},"content":" List\u003cPerson\u003e lastShownBList \u003d model.getFilteredBefriendeeList();","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"chaaaaun"},"content":" List\u003cPerson\u003e lastShownVList \u003d model.getFilteredVolunteerList();","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"chaaaaun"},"content":" if (index1.getZeroBased() \u003e\u003d lastShownBList.size() || index2.getZeroBased() \u003e\u003d lastShownVList.size()) {","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"soons1"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"soons1"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"chaaaaun"},"content":" Person personToPair1 \u003d lastShownBList.get(index1.getZeroBased());","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"chaaaaun"},"content":" Person personToPair2 \u003d lastShownVList.get(index2.getZeroBased());","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"soons1"},"content":" // Check if the two persons are the same person","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"soons1"},"content":" if (personToPair1.isSamePerson(personToPair2)","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"soons1"},"content":" \u0026\u0026 model.hasPerson(personToPair1)","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"soons1"},"content":" \u0026\u0026 model.hasPerson(personToPair2)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"soons1"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"soons1"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":80,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":81,"author":{"gitId":"soons1"},"content":" // Check if the two persons are of different types (eg. volunteer and befriendee)","lastModifiedDate":"2024-03-18"},{"lineNumber":82,"author":{"gitId":"soons1"},"content":" if (personToPair1.getRole().equals(personToPair2.getRole())) {","lastModifiedDate":"2024-03-18"},{"lineNumber":83,"author":{"gitId":"soons1"},"content":" throw new CommandException(MESSAGE_DIFFERENT_PERSON_TYPE);","lastModifiedDate":"2024-03-18"},{"lineNumber":84,"author":{"gitId":"soons1"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":85,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":86,"author":{"gitId":"soons1"},"content":" // Check if any of the persons are already paired","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"soons1"},"content":" if (personToPair1.isPaired() || personToPair2.isPaired()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":88,"author":{"gitId":"soons1"},"content":" throw new CommandException(MESSAGE_ALREADY_PAIRED);","lastModifiedDate":"2024-03-20"},{"lineNumber":89,"author":{"gitId":"soons1"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":90,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":91,"author":{"gitId":"CJerrong"},"content":" Person newPerson1 \u003d createEditedPairedPerson(personToPair1, Optional.of(personToPair2.getName()),","lastModifiedDate":"2024-03-22"},{"lineNumber":92,"author":{"gitId":"CJerrong"},"content":" Optional.of(personToPair2.getId()));","lastModifiedDate":"2024-03-22"},{"lineNumber":93,"author":{"gitId":"CJerrong"},"content":" Person newPerson2 \u003d createEditedPairedPerson(personToPair2, Optional.of(personToPair1.getName()),","lastModifiedDate":"2024-03-22"},{"lineNumber":94,"author":{"gitId":"CJerrong"},"content":" Optional.of(personToPair1.getId()));","lastModifiedDate":"2024-03-22"},{"lineNumber":95,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":96,"author":{"gitId":"gerteck"},"content":" // TODO: REMOVE DEAD CODE","lastModifiedDate":"2024-03-21"},{"lineNumber":97,"author":{"gitId":"gerteck"},"content":" // No longer needed since we are using new Person objects","lastModifiedDate":"2024-03-21"},{"lineNumber":98,"author":{"gitId":"gerteck"},"content":" // model.setPerson(lastShownBList.get(index1.getZeroBased()), personToPair1);","lastModifiedDate":"2024-03-21"},{"lineNumber":99,"author":{"gitId":"gerteck"},"content":" // model.setPerson(lastShownVList.get(index2.getZeroBased()), personToPair2);","lastModifiedDate":"2024-03-21"},{"lineNumber":100,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":101,"author":{"gitId":"gerteck"},"content":" model.setPerson(personToPair1, newPerson1);","lastModifiedDate":"2024-03-21"},{"lineNumber":102,"author":{"gitId":"gerteck"},"content":" model.setPerson(personToPair2, newPerson2);","lastModifiedDate":"2024-03-21"},{"lineNumber":103,"author":{"gitId":"soons1"},"content":" model.updateFilteredPersonList(Model.PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-18"},{"lineNumber":104,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":105,"author":{"gitId":"soons1"},"content":" return new CommandResult(","lastModifiedDate":"2024-03-18"},{"lineNumber":106,"author":{"gitId":"soons1"},"content":" String.format(MESSAGE_PAIR_SUCCESS, Messages.format(personToPair1), Messages.format(personToPair2)));","lastModifiedDate":"2024-03-18"},{"lineNumber":107,"author":{"gitId":"soons1"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":108,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":109,"author":{"gitId":"soons1"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":110,"author":{"gitId":"soons1"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-18"},{"lineNumber":111,"author":{"gitId":"soons1"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-18"},{"lineNumber":112,"author":{"gitId":"soons1"},"content":" return true;","lastModifiedDate":"2024-03-18"},{"lineNumber":113,"author":{"gitId":"soons1"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":114,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":115,"author":{"gitId":"soons1"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-18"},{"lineNumber":116,"author":{"gitId":"soons1"},"content":" if (!(other instanceof PairCommand)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":117,"author":{"gitId":"soons1"},"content":" return false;","lastModifiedDate":"2024-03-18"},{"lineNumber":118,"author":{"gitId":"soons1"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":119,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":120,"author":{"gitId":"soons1"},"content":" PairCommand otherPairCommand \u003d (PairCommand) other;","lastModifiedDate":"2024-03-18"},{"lineNumber":121,"author":{"gitId":"soons1"},"content":" return index1.equals(otherPairCommand.index1)","lastModifiedDate":"2024-03-18"},{"lineNumber":122,"author":{"gitId":"soons1"},"content":" \u0026\u0026 index2.equals(otherPairCommand.index2);","lastModifiedDate":"2024-03-18"},{"lineNumber":123,"author":{"gitId":"soons1"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":124,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":125,"author":{"gitId":"soons1"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":126,"author":{"gitId":"soons1"},"content":" public String toString() {","lastModifiedDate":"2024-03-18"},{"lineNumber":127,"author":{"gitId":"soons1"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-18"},{"lineNumber":128,"author":{"gitId":"soons1"},"content":" .add(\"index1\", index1)","lastModifiedDate":"2024-03-18"},{"lineNumber":129,"author":{"gitId":"soons1"},"content":" .add(\"index2\", index2)","lastModifiedDate":"2024-03-18"},{"lineNumber":130,"author":{"gitId":"soons1"},"content":" .toString();","lastModifiedDate":"2024-03-18"},{"lineNumber":131,"author":{"gitId":"soons1"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":132,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":133,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":134,"author":{"gitId":"gerteck"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":135,"author":{"gitId":"gerteck"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2024-03-21"},{"lineNumber":136,"author":{"gitId":"gerteck"},"content":" * edited with {@code editPairedPersonDescriptor}.","lastModifiedDate":"2024-03-21"},{"lineNumber":137,"author":{"gitId":"gerteck"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":138,"author":{"gitId":"CJerrong"},"content":" private static Person createEditedPairedPerson(Person personToEdit, Optional\u003cName\u003e updatedPairName,","lastModifiedDate":"2024-03-22"},{"lineNumber":139,"author":{"gitId":"CJerrong"},"content":" Optional\u003cInteger\u003e updatedPairID) {","lastModifiedDate":"2024-03-22"},{"lineNumber":140,"author":{"gitId":"gerteck"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2024-03-21"},{"lineNumber":141,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":142,"author":{"gitId":"gerteck"},"content":" Name updatedName \u003d personToEdit.getName();","lastModifiedDate":"2024-03-21"},{"lineNumber":143,"author":{"gitId":"gerteck"},"content":" Phone updatedPhone \u003d personToEdit.getPhone();","lastModifiedDate":"2024-03-21"},{"lineNumber":144,"author":{"gitId":"gerteck"},"content":" Email updatedEmail \u003d personToEdit.getEmail();","lastModifiedDate":"2024-03-21"},{"lineNumber":145,"author":{"gitId":"gerteck"},"content":" Address updatedAddress \u003d personToEdit.getAddress();","lastModifiedDate":"2024-03-21"},{"lineNumber":146,"author":{"gitId":"gerteck"},"content":" Set\u003cTag\u003e updatedTags \u003d personToEdit.getTags();","lastModifiedDate":"2024-03-21"},{"lineNumber":147,"author":{"gitId":"gerteck"},"content":" Role role \u003d personToEdit.getRole();","lastModifiedDate":"2024-03-21"},{"lineNumber":148,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":149,"author":{"gitId":"gerteck"},"content":" Person p;","lastModifiedDate":"2024-03-21"},{"lineNumber":150,"author":{"gitId":"gerteck"},"content":" if (role.isVolunteer()) {","lastModifiedDate":"2024-03-21"},{"lineNumber":151,"author":{"gitId":"CJerrong"},"content":" p \u003d new Volunteer(updatedName, updatedPhone, updatedEmail, updatedAddress, updatedTags,","lastModifiedDate":"2024-03-22"},{"lineNumber":152,"author":{"gitId":"CJerrong"},"content":" updatedPairName, updatedPairID);","lastModifiedDate":"2024-03-22"},{"lineNumber":153,"author":{"gitId":"gerteck"},"content":" } else {","lastModifiedDate":"2024-03-21"},{"lineNumber":154,"author":{"gitId":"CJerrong"},"content":" p \u003d new Befriendee(updatedName, updatedPhone, updatedEmail, updatedAddress, updatedTags,","lastModifiedDate":"2024-03-22"},{"lineNumber":155,"author":{"gitId":"CJerrong"},"content":" updatedPairName, updatedPairID);","lastModifiedDate":"2024-03-22"},{"lineNumber":156,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":157,"author":{"gitId":"gerteck"},"content":" p.setId(personToEdit.getId());","lastModifiedDate":"2024-03-21"},{"lineNumber":158,"author":{"gitId":"gerteck"},"content":" return p;","lastModifiedDate":"2024-03-21"},{"lineNumber":159,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":160,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":161,"author":{"gitId":"soons1"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"soons1":104,"CJerrong":10,"gerteck":42,"chaaaaun":5}},{"path":"src/main/java/scrolls/elder/logic/commands/UnpairCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sdevih"},"content":"package scrolls.elder.logic.commands;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"sdevih"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"sdevih"},"content":"import java.util.List;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"sdevih"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"gerteck"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"sdevih"},"content":"import scrolls.elder.commons.core.index.Index;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"sdevih"},"content":"import scrolls.elder.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"sdevih"},"content":"import scrolls.elder.logic.Messages;","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"sdevih"},"content":"import scrolls.elder.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"sdevih"},"content":"import scrolls.elder.model.Model;","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"gerteck"},"content":"import scrolls.elder.model.person.Address;","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"gerteck"},"content":"import scrolls.elder.model.person.Befriendee;","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"gerteck"},"content":"import scrolls.elder.model.person.Email;","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"gerteck"},"content":"import scrolls.elder.model.person.Name;","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"gerteck"},"content":"import scrolls.elder.model.person.Person;","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"gerteck"},"content":"import scrolls.elder.model.person.Phone;","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"gerteck"},"content":"import scrolls.elder.model.person.Role;","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"gerteck"},"content":"import scrolls.elder.model.person.Volunteer;","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"gerteck"},"content":"import scrolls.elder.model.tag.Tag;","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"sdevih"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"sdevih"},"content":" * Unpairs a volunteer and a befriendee who were paired in the address book.","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"sdevih"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"sdevih"},"content":"public class UnpairCommand extends Command {","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"sdevih"},"content":" public static final String COMMAND_WORD \u003d \"unpair\";","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"sdevih"},"content":" public static final String MESSAGE_USAGE \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"sdevih"},"content":" COMMAND_WORD + \": Unpairs a volunteer and a befriendee specified \"","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"sdevih"},"content":" + \"by their index numbers used in the displayed person list.\\n\"","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"sdevih"},"content":" + \"Parameters: INDEX1 INDEX2 (both must be a positive integers)\\n\"","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"sdevih"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 2\";","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"sdevih"},"content":" public static final String MESSAGE_UNPAIR_SUCCESS \u003d \"Unpaired: %1$s and %2$s\";","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"sdevih"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"Cannot unpair the same person from themselves.\";","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"sdevih"},"content":" public static final String MESSAGE_NOT_PAIRED \u003d \"The two persons are not paired, so unpairing is not possible.\";","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"sdevih"},"content":" private final Index index1;","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"sdevih"},"content":" private final Index index2;","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"sdevih"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"sdevih"},"content":" * @param index1 of the first person to be paired","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"sdevih"},"content":" * @param index2 of the second person to be paired with","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"sdevih"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"sdevih"},"content":" public UnpairCommand(Index index1, Index index2) {","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"sdevih"},"content":" requireNonNull(index1);","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"sdevih"},"content":" requireNonNull(index2);","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"sdevih"},"content":" this.index1 \u003d index1;","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"sdevih"},"content":" this.index2 \u003d index2;","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"sdevih"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"sdevih"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"sdevih"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"sdevih"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"chaaaaun"},"content":" List\u003cPerson\u003e lastShownBList \u003d model.getFilteredBefriendeeList();","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"chaaaaun"},"content":" List\u003cPerson\u003e lastShownVList \u003d model.getFilteredVolunteerList();","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"chaaaaun"},"content":" if (index1.getZeroBased() \u003e\u003d lastShownBList.size() || index2.getZeroBased() \u003e\u003d lastShownVList.size()) {","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"sdevih"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"sdevih"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"chaaaaun"},"content":" Person personToUnpair1 \u003d lastShownBList.get(index1.getZeroBased());","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"chaaaaun"},"content":" Person personToUnpair2 \u003d lastShownVList.get(index2.getZeroBased());","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"sdevih"},"content":" // Check if the two persons are the same person","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"sdevih"},"content":" if (personToUnpair1.isSamePerson(personToUnpair2)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"sdevih"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"sdevih"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"sdevih"},"content":" // Check if the two persons are paired","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"CJerrong"},"content":" if (!personToUnpair1.getPairedWithName().equals(Optional.of(personToUnpair2.getName()))","lastModifiedDate":"2024-03-22"},{"lineNumber":75,"author":{"gitId":"CJerrong"},"content":" || !personToUnpair2.getPairedWithName().equals(Optional.of(personToUnpair1.getName()))) {","lastModifiedDate":"2024-03-22"},{"lineNumber":76,"author":{"gitId":"sdevih"},"content":" throw new CommandException(MESSAGE_NOT_PAIRED);","lastModifiedDate":"2024-03-21"},{"lineNumber":77,"author":{"gitId":"sdevih"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":78,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":79,"author":{"gitId":"sdevih"},"content":" // Unset the pairedWith attribute of the befriendee and volunteer","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"CJerrong"},"content":" Person newPerson1 \u003d createEditedPairedPerson(personToUnpair1, Optional.empty(), Optional.empty());","lastModifiedDate":"2024-03-22"},{"lineNumber":81,"author":{"gitId":"CJerrong"},"content":" Person newPerson2 \u003d createEditedPairedPerson(personToUnpair2, Optional.empty(), Optional.empty());","lastModifiedDate":"2024-03-22"},{"lineNumber":82,"author":{"gitId":"gerteck"},"content":" model.setPerson(personToUnpair1, newPerson1);","lastModifiedDate":"2024-03-21"},{"lineNumber":83,"author":{"gitId":"gerteck"},"content":" model.setPerson(personToUnpair2, newPerson2);","lastModifiedDate":"2024-03-21"},{"lineNumber":84,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":85,"author":{"gitId":"gerteck"},"content":" // TODO: REMOVE DEAD CODE","lastModifiedDate":"2024-03-21"},{"lineNumber":86,"author":{"gitId":"gerteck"},"content":" // No longer needed since we are using new Person objects","lastModifiedDate":"2024-03-21"},{"lineNumber":87,"author":{"gitId":"gerteck"},"content":" // personToUnpair1.setPairedWith(Optional.empty());","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"gerteck"},"content":" // personToUnpair2.setPairedWith(Optional.empty());","lastModifiedDate":"2024-03-21"},{"lineNumber":89,"author":{"gitId":"gerteck"},"content":" // model.setPerson(lastShownBList.get(index1.getZeroBased()), personToUnpair1);","lastModifiedDate":"2024-03-21"},{"lineNumber":90,"author":{"gitId":"gerteck"},"content":" // model.setPerson(lastShownVList.get(index2.getZeroBased()), personToUnpair2);","lastModifiedDate":"2024-03-21"},{"lineNumber":91,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":92,"author":{"gitId":"sdevih"},"content":" model.updateFilteredPersonList(Model.PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-21"},{"lineNumber":93,"author":{"gitId":"sdevih"},"content":" return new CommandResult(","lastModifiedDate":"2024-03-21"},{"lineNumber":94,"author":{"gitId":"sdevih"},"content":" String.format(","lastModifiedDate":"2024-03-21"},{"lineNumber":95,"author":{"gitId":"sdevih"},"content":" MESSAGE_UNPAIR_SUCCESS, Messages.format(personToUnpair1), Messages.format(personToUnpair2)));","lastModifiedDate":"2024-03-21"},{"lineNumber":96,"author":{"gitId":"sdevih"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":97,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":98,"author":{"gitId":"sdevih"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":99,"author":{"gitId":"sdevih"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-21"},{"lineNumber":100,"author":{"gitId":"sdevih"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-21"},{"lineNumber":101,"author":{"gitId":"sdevih"},"content":" return true;","lastModifiedDate":"2024-03-21"},{"lineNumber":102,"author":{"gitId":"sdevih"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":103,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":104,"author":{"gitId":"sdevih"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-21"},{"lineNumber":105,"author":{"gitId":"sdevih"},"content":" if (!(other instanceof UnpairCommand)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":106,"author":{"gitId":"sdevih"},"content":" return false;","lastModifiedDate":"2024-03-21"},{"lineNumber":107,"author":{"gitId":"sdevih"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":108,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":109,"author":{"gitId":"sdevih"},"content":" UnpairCommand otherUnpairCommand \u003d (UnpairCommand) other;","lastModifiedDate":"2024-03-21"},{"lineNumber":110,"author":{"gitId":"sdevih"},"content":" return index1.equals(otherUnpairCommand.index1)","lastModifiedDate":"2024-03-21"},{"lineNumber":111,"author":{"gitId":"sdevih"},"content":" \u0026\u0026 index2.equals(otherUnpairCommand.index2);","lastModifiedDate":"2024-03-21"},{"lineNumber":112,"author":{"gitId":"sdevih"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":113,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":114,"author":{"gitId":"sdevih"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":115,"author":{"gitId":"sdevih"},"content":" public String toString() {","lastModifiedDate":"2024-03-21"},{"lineNumber":116,"author":{"gitId":"sdevih"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-21"},{"lineNumber":117,"author":{"gitId":"sdevih"},"content":" .add(\"index1\", index1)","lastModifiedDate":"2024-03-21"},{"lineNumber":118,"author":{"gitId":"sdevih"},"content":" .add(\"index2\", index2)","lastModifiedDate":"2024-03-21"},{"lineNumber":119,"author":{"gitId":"sdevih"},"content":" .toString();","lastModifiedDate":"2024-03-21"},{"lineNumber":120,"author":{"gitId":"sdevih"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":121,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":122,"author":{"gitId":"gerteck"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":123,"author":{"gitId":"gerteck"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2024-03-21"},{"lineNumber":124,"author":{"gitId":"gerteck"},"content":" * edited with {@code editPairedPersonDescriptor}.","lastModifiedDate":"2024-03-21"},{"lineNumber":125,"author":{"gitId":"gerteck"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":126,"author":{"gitId":"CJerrong"},"content":" private static Person createEditedPairedPerson(Person personToEdit,","lastModifiedDate":"2024-03-22"},{"lineNumber":127,"author":{"gitId":"CJerrong"},"content":" Optional\u003cName\u003e updatedPairName, Optional\u003cInteger\u003e updatedPairID) {","lastModifiedDate":"2024-03-22"},{"lineNumber":128,"author":{"gitId":"gerteck"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2024-03-21"},{"lineNumber":129,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":130,"author":{"gitId":"gerteck"},"content":" Name updatedName \u003d personToEdit.getName();","lastModifiedDate":"2024-03-21"},{"lineNumber":131,"author":{"gitId":"gerteck"},"content":" Phone updatedPhone \u003d personToEdit.getPhone();","lastModifiedDate":"2024-03-21"},{"lineNumber":132,"author":{"gitId":"gerteck"},"content":" Email updatedEmail \u003d personToEdit.getEmail();","lastModifiedDate":"2024-03-21"},{"lineNumber":133,"author":{"gitId":"gerteck"},"content":" Address updatedAddress \u003d personToEdit.getAddress();","lastModifiedDate":"2024-03-21"},{"lineNumber":134,"author":{"gitId":"gerteck"},"content":" Set\u003cTag\u003e updatedTags \u003d personToEdit.getTags();","lastModifiedDate":"2024-03-21"},{"lineNumber":135,"author":{"gitId":"gerteck"},"content":" Role role \u003d personToEdit.getRole();","lastModifiedDate":"2024-03-21"},{"lineNumber":136,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":137,"author":{"gitId":"gerteck"},"content":" Person p;","lastModifiedDate":"2024-03-21"},{"lineNumber":138,"author":{"gitId":"gerteck"},"content":" if (role.isVolunteer()) {","lastModifiedDate":"2024-03-21"},{"lineNumber":139,"author":{"gitId":"CJerrong"},"content":" p \u003d new Volunteer(updatedName, updatedPhone, updatedEmail, updatedAddress, updatedTags,","lastModifiedDate":"2024-03-22"},{"lineNumber":140,"author":{"gitId":"CJerrong"},"content":" updatedPairName, updatedPairID);","lastModifiedDate":"2024-03-22"},{"lineNumber":141,"author":{"gitId":"gerteck"},"content":" } else {","lastModifiedDate":"2024-03-21"},{"lineNumber":142,"author":{"gitId":"CJerrong"},"content":" p \u003d new Befriendee(updatedName, updatedPhone, updatedEmail, updatedAddress, updatedTags,","lastModifiedDate":"2024-03-22"},{"lineNumber":143,"author":{"gitId":"CJerrong"},"content":" updatedPairName, updatedPairID);","lastModifiedDate":"2024-03-22"},{"lineNumber":144,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":145,"author":{"gitId":"gerteck"},"content":" p.setId(personToEdit.getId());","lastModifiedDate":"2024-03-21"},{"lineNumber":146,"author":{"gitId":"gerteck"},"content":" return p;","lastModifiedDate":"2024-03-21"},{"lineNumber":147,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":148,"author":{"gitId":"sdevih"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"CJerrong":10,"gerteck":40,"chaaaaun":5,"sdevih":93}},{"path":"src/main/java/scrolls/elder/logic/commands/exceptions/CommandException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.logic.commands.exceptions;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Represents an error which occurs during execution of a {@link Command}.","lastModifiedDate":"2017-02-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CommandException extends Exception {","lastModifiedDate":"2017-02-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":" public CommandException(String message) {","lastModifiedDate":"2017-02-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":" super(message);","lastModifiedDate":"2017-02-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":11,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Constructs a new {@code CommandException} with the specified detail {@code message} and {@code cause}.","lastModifiedDate":"2018-08-06"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":14,"author":{"gitId":"-"},"content":" public CommandException(String message, Throwable cause) {","lastModifiedDate":"2018-08-06"},{"lineNumber":15,"author":{"gitId":"-"},"content":" super(message, cause);","lastModifiedDate":"2018-08-06"},{"lineNumber":16,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05"}],"authorContributionMap":{"chaaaaun":1,"-":16}},{"path":"src/main/java/scrolls/elder/logic/parser/AddCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.logic.parser;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":3,"author":{"gitId":"chaaaaun"},"content":"import static scrolls.elder.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":5,"author":{"gitId":"gerteck"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-17"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.commands.AddCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"CJerrong"},"content":"import scrolls.elder.model.person.Address;","lastModifiedDate":"2024-03-15"},{"lineNumber":12,"author":{"gitId":"gerteck"},"content":"import scrolls.elder.model.person.Befriendee;","lastModifiedDate":"2024-03-15"},{"lineNumber":13,"author":{"gitId":"CJerrong"},"content":"import scrolls.elder.model.person.Email;","lastModifiedDate":"2024-03-15"},{"lineNumber":14,"author":{"gitId":"CJerrong"},"content":"import scrolls.elder.model.person.Name;","lastModifiedDate":"2024-03-15"},{"lineNumber":15,"author":{"gitId":"CJerrong"},"content":"import scrolls.elder.model.person.Person;","lastModifiedDate":"2024-03-15"},{"lineNumber":16,"author":{"gitId":"CJerrong"},"content":"import scrolls.elder.model.person.Phone;","lastModifiedDate":"2024-03-15"},{"lineNumber":17,"author":{"gitId":"gerteck"},"content":"import scrolls.elder.model.person.Role;","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"CJerrong"},"content":"import scrolls.elder.model.person.Volunteer;","lastModifiedDate":"2024-03-15"},{"lineNumber":19,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.tag.Tag;","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":26,"author":{"gitId":"chaaaaun"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"chaaaaun"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"chaaaaun"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"chaaaaun"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"chaaaaun"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"chaaaaun"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05"},{"lineNumber":37,"author":{"gitId":"chaaaaun"},"content":" *","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":41,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":42,"author":{"gitId":"gerteck"},"content":" ArgumentTokenizer.tokenize(args,","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"gerteck"},"content":" CliSyntax.PREFIX_ROLE,","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"gerteck"},"content":" CliSyntax.PREFIX_PHONE,","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"gerteck"},"content":" CliSyntax.PREFIX_EMAIL,","lastModifiedDate":"2024-03-14"},{"lineNumber":46,"author":{"gitId":"gerteck"},"content":" CliSyntax.PREFIX_ADDRESS,","lastModifiedDate":"2024-03-14"},{"lineNumber":47,"author":{"gitId":"gerteck"},"content":" CliSyntax.PREFIX_TAG,","lastModifiedDate":"2024-03-15"},{"lineNumber":48,"author":{"gitId":"gerteck"},"content":" CliSyntax.PREFIX_NAME);","lastModifiedDate":"2024-03-15"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":50,"author":{"gitId":"gerteck"},"content":" // Check for all Prefixes present","lastModifiedDate":"2024-03-15"},{"lineNumber":51,"author":{"gitId":"gerteck"},"content":" if (!arePrefixesPresent(argMultimap,","lastModifiedDate":"2024-03-15"},{"lineNumber":52,"author":{"gitId":"gerteck"},"content":" CliSyntax.PREFIX_ROLE, CliSyntax.PREFIX_NAME,","lastModifiedDate":"2024-03-15"},{"lineNumber":53,"author":{"gitId":"gerteck"},"content":" CliSyntax.PREFIX_ADDRESS, CliSyntax.PREFIX_PHONE,","lastModifiedDate":"2024-03-15"},{"lineNumber":54,"author":{"gitId":"gerteck"},"content":" CliSyntax.PREFIX_EMAIL) || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-03-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":58,"author":{"gitId":"gerteck"},"content":" // Check No duplicates for PREFIXES","lastModifiedDate":"2024-03-15"},{"lineNumber":59,"author":{"gitId":"gerteck"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(CliSyntax.PREFIX_ROLE,","lastModifiedDate":"2024-03-15"},{"lineNumber":60,"author":{"gitId":"gerteck"},"content":" CliSyntax.PREFIX_PHONE,","lastModifiedDate":"2024-03-15"},{"lineNumber":61,"author":{"gitId":"gerteck"},"content":" CliSyntax.PREFIX_EMAIL,","lastModifiedDate":"2024-03-15"},{"lineNumber":62,"author":{"gitId":"gerteck"},"content":" CliSyntax.PREFIX_ADDRESS,","lastModifiedDate":"2024-03-15"},{"lineNumber":63,"author":{"gitId":"gerteck"},"content":" CliSyntax.PREFIX_NAME);","lastModifiedDate":"2024-03-15"},{"lineNumber":64,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":65,"author":{"gitId":"gerteck"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(CliSyntax.PREFIX_NAME).get());","lastModifiedDate":"2024-03-15"},{"lineNumber":66,"author":{"gitId":"chaaaaun"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(CliSyntax.PREFIX_PHONE).get());","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"chaaaaun"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(CliSyntax.PREFIX_EMAIL).get());","lastModifiedDate":"2024-03-12"},{"lineNumber":68,"author":{"gitId":"chaaaaun"},"content":" Address address \u003d ParserUtil.parseAddress(argMultimap.getValue(CliSyntax.PREFIX_ADDRESS).get());","lastModifiedDate":"2024-03-12"},{"lineNumber":69,"author":{"gitId":"chaaaaun"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(CliSyntax.PREFIX_TAG));","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"gerteck"},"content":" Role role \u003d ParserUtil.parseRole(argMultimap.getValue(CliSyntax.PREFIX_ROLE).get());","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"gerteck"},"content":" Optional\u003cName\u003e pairedWithNone \u003d Optional.empty();","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"CJerrong"},"content":" Optional\u003cInteger\u003e pairedWithNoID \u003d Optional.empty();","lastModifiedDate":"2024-03-22"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":74,"author":{"gitId":"CJerrong"},"content":" // temporary solution, delete after merging","lastModifiedDate":"2024-03-15"},{"lineNumber":75,"author":{"gitId":"gerteck"},"content":" Person person \u003d null;","lastModifiedDate":"2024-03-15"},{"lineNumber":76,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":77,"author":{"gitId":"gerteck"},"content":" if (role.isVolunteer()) {","lastModifiedDate":"2024-03-16"},{"lineNumber":78,"author":{"gitId":"CJerrong"},"content":" person \u003d new Volunteer(name, phone, email, address, tagList, pairedWithNone, pairedWithNoID);","lastModifiedDate":"2024-03-22"},{"lineNumber":79,"author":{"gitId":"gerteck"},"content":" } else {","lastModifiedDate":"2024-03-16"},{"lineNumber":80,"author":{"gitId":"gerteck"},"content":" assert role.isBefriendee();","lastModifiedDate":"2024-03-16"},{"lineNumber":81,"author":{"gitId":"CJerrong"},"content":" person \u003d new Befriendee(name, phone, email, address, tagList, pairedWithNone, pairedWithNoID);","lastModifiedDate":"2024-03-22"},{"lineNumber":82,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":83,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":84,"author":{"gitId":"-"},"content":" return new AddCommand(person);","lastModifiedDate":"2017-03-17"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":87,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05"}],"authorContributionMap":{"CJerrong":10,"gerteck":32,"chaaaaun":18,"-":27}},{"path":"src/main/java/scrolls/elder/logic/parser/AddressBookParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.logic.parser;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"chaaaaun"},"content":"import static scrolls.elder.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"chaaaaun"},"content":"import static scrolls.elder.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-07-29"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.core.LogsCenter;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.commands.AddCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.commands.ClearCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.commands.Command;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.commands.DeleteCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.commands.EditCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.commands.ExitCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.commands.FindCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.commands.HelpCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.commands.ListCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"soons1"},"content":"import scrolls.elder.logic.commands.PairCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"sdevih"},"content":"import scrolls.elder.logic.commands.UnpairCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":43,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // Note to developers: Change the log level in config.json to enable lower level (i.e., FINE, FINER and lower)","lastModifiedDate":"2023-07-29"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":56,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":64,"author":{"gitId":"sdevih"},"content":" case DeleteCommand.COMMAND_WORD_DELETE:","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"sdevih"},"content":" case DeleteCommand.COMMAND_WORD_DEL:","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"sdevih"},"content":" case DeleteCommand.COMMAND_WORD_RM:","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"sdevih"},"content":" case DeleteCommand.COMMAND_WORD_REMOVE:","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return new ListCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":82,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26"},{"lineNumber":83,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":85,"author":{"gitId":"soons1"},"content":" case PairCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-18"},{"lineNumber":86,"author":{"gitId":"soons1"},"content":" return new PairCommandParser().parse(arguments);","lastModifiedDate":"2024-03-18"},{"lineNumber":87,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":88,"author":{"gitId":"sdevih"},"content":" case UnpairCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-21"},{"lineNumber":89,"author":{"gitId":"sdevih"},"content":" return new UnpairCommandParser().parse(arguments);","lastModifiedDate":"2024-03-21"},{"lineNumber":90,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":91,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26"},{"lineNumber":92,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29"},{"lineNumber":93,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":97,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"soons1":4,"chaaaaun":14,"-":71,"sdevih":8}},{"path":"src/main/java/scrolls/elder/logic/parser/ArgumentMultimap.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.logic.parser;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-03-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashMap;","lastModifiedDate":"2017-03-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-03-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Map;","lastModifiedDate":"2017-03-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-03-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.Messages;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-03-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Stores mapping of prefixes to their respective arguments.","lastModifiedDate":"2017-03-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Each key may be associated with multiple argument values.","lastModifiedDate":"2017-03-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Values for a given key are stored in a list, and the insertion ordering is maintained.","lastModifiedDate":"2017-03-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Keys are unique, but the list of argument values may contain duplicate argument values, i.e. the same argument value","lastModifiedDate":"2017-03-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * can be inserted multiple times for the same prefix.","lastModifiedDate":"2017-03-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class ArgumentMultimap {","lastModifiedDate":"2017-03-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /** Prefixes mapped to their respective arguments**/","lastModifiedDate":"2017-03-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final Map\u003cPrefix, List\u003cString\u003e\u003e argMultimap \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2017-03-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Associates the specified argument value with {@code prefix} key in this map.","lastModifiedDate":"2017-03-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * If the map previously contained a mapping for the key, the new value is appended to the list of existing values.","lastModifiedDate":"2017-03-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * @param prefix Prefix key with which the specified argument value is to be associated","lastModifiedDate":"2017-03-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * @param argValue Argument value to be associated with the specified prefix key","lastModifiedDate":"2017-03-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void put(Prefix prefix, String argValue) {","lastModifiedDate":"2017-03-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" List\u003cString\u003e argValues \u003d getAllValues(prefix);","lastModifiedDate":"2017-03-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" argValues.add(argValue);","lastModifiedDate":"2017-03-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" argMultimap.put(prefix, argValues);","lastModifiedDate":"2017-03-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Returns the last value of {@code prefix}.","lastModifiedDate":"2017-03-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public Optional\u003cString\u003e getValue(Prefix prefix) {","lastModifiedDate":"2017-03-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" List\u003cString\u003e values \u003d getAllValues(prefix);","lastModifiedDate":"2017-03-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" return values.isEmpty() ? Optional.empty() : Optional.of(values.get(values.size() - 1));","lastModifiedDate":"2017-03-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Returns all values of {@code prefix}.","lastModifiedDate":"2017-03-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * If the prefix does not exist or has no values, this will return an empty list.","lastModifiedDate":"2017-03-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Modifying the returned list will not affect the underlying data structure of the ArgumentMultimap.","lastModifiedDate":"2017-03-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public List\u003cString\u003e getAllValues(Prefix prefix) {","lastModifiedDate":"2017-03-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" if (!argMultimap.containsKey(prefix)) {","lastModifiedDate":"2017-03-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e();","lastModifiedDate":"2017-03-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(argMultimap.get(prefix));","lastModifiedDate":"2017-03-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * Returns the preamble (text before the first valid prefix). Trims any leading/trailing spaces.","lastModifiedDate":"2017-03-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public String getPreamble() {","lastModifiedDate":"2017-03-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return getValue(new Prefix(\"\")).orElse(\"\");","lastModifiedDate":"2017-03-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":65,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14"},{"lineNumber":66,"author":{"gitId":"-"},"content":" * Throws a {@code ParseException} if any of the prefixes given in {@code prefixes} appeared more than","lastModifiedDate":"2023-07-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":" * once among the arguments.","lastModifiedDate":"2023-07-14"},{"lineNumber":68,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void verifyNoDuplicatePrefixesFor(Prefix... prefixes) throws ParseException {","lastModifiedDate":"2023-07-14"},{"lineNumber":70,"author":{"gitId":"-"},"content":" Prefix[] duplicatedPrefixes \u003d Stream.of(prefixes).distinct()","lastModifiedDate":"2023-07-14"},{"lineNumber":71,"author":{"gitId":"-"},"content":" .filter(prefix -\u003e argMultimap.containsKey(prefix) \u0026\u0026 argMultimap.get(prefix).size() \u003e 1)","lastModifiedDate":"2023-07-14"},{"lineNumber":72,"author":{"gitId":"-"},"content":" .toArray(Prefix[]::new);","lastModifiedDate":"2023-07-14"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":74,"author":{"gitId":"-"},"content":" if (duplicatedPrefixes.length \u003e 0) {","lastModifiedDate":"2023-07-14"},{"lineNumber":75,"author":{"gitId":"-"},"content":" throw new ParseException(Messages.getErrorMessageForDuplicatePrefixes(duplicatedPrefixes));","lastModifiedDate":"2023-07-14"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":78,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-08"}],"authorContributionMap":{"chaaaaun":3,"-":75}},{"path":"src/main/java/scrolls/elder/logic/parser/ArgumentTokenizer.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.logic.parser;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-01-18"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-01-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-10-16"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * Tokenizes arguments string of the form: {@code preamble \u003cprefix\u003evalue \u003cprefix\u003evalue ...}\u003cbr\u003e","lastModifiedDate":"2016-10-16"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * e.g. {@code some preamble text t/ 11.00 t/12.00 k/ m/ July} where prefixes are {@code t/ k/ m/}.\u003cbr\u003e","lastModifiedDate":"2017-05-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * 1. An argument\u0027s value can be an empty string e.g. the value of {@code k/} in the above example.\u003cbr\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * 2. Leading and trailing whitespaces of an argument value will be discarded.\u003cbr\u003e","lastModifiedDate":"2016-10-16"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * 3. An argument may be repeated and all its values will be accumulated e.g. the value of {@code t/}","lastModifiedDate":"2017-05-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * in the above example.\u003cbr\u003e","lastModifiedDate":"2016-10-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class ArgumentTokenizer {","lastModifiedDate":"2016-10-16"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Tokenizes an arguments string and returns an {@code ArgumentMultimap} object that maps prefixes to their","lastModifiedDate":"2017-03-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * respective argument values. Only the given prefixes will be recognized in the arguments string.","lastModifiedDate":"2017-03-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * @param argsString Arguments string of the form: {@code preamble \u003cprefix\u003evalue \u003cprefix\u003evalue ...}","lastModifiedDate":"2017-03-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * @param prefixes Prefixes to tokenize the arguments string with","lastModifiedDate":"2017-03-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @return ArgumentMultimap object that maps prefixes to their arguments","lastModifiedDate":"2017-03-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static ArgumentMultimap tokenize(String argsString, Prefix... prefixes) {","lastModifiedDate":"2017-03-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" List\u003cPrefixPosition\u003e positions \u003d findAllPrefixPositions(argsString, prefixes);","lastModifiedDate":"2017-03-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":" return extractArguments(argsString, positions);","lastModifiedDate":"2017-03-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Finds all zero-based prefix positions in the given arguments string.","lastModifiedDate":"2017-03-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * @param argsString Arguments string of the form: {@code preamble \u003cprefix\u003evalue \u003cprefix\u003evalue ...}","lastModifiedDate":"2017-03-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * @param prefixes Prefixes to find in the arguments string","lastModifiedDate":"2017-03-20"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * @return List of zero-based prefix positions in the given arguments string","lastModifiedDate":"2017-03-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private static List\u003cPrefixPosition\u003e findAllPrefixPositions(String argsString, Prefix... prefixes) {","lastModifiedDate":"2017-03-20"},{"lineNumber":39,"author":{"gitId":"-"},"content":" return Arrays.stream(prefixes)","lastModifiedDate":"2018-01-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" .flatMap(prefix -\u003e findPrefixPositions(argsString, prefix).stream())","lastModifiedDate":"2018-01-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-01-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * {@see findAllPrefixPositions}","lastModifiedDate":"2017-03-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":47,"author":{"gitId":"-"},"content":" private static List\u003cPrefixPosition\u003e findPrefixPositions(String argsString, Prefix prefix) {","lastModifiedDate":"2017-03-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":" List\u003cPrefixPosition\u003e positions \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2016-10-16"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":50,"author":{"gitId":"-"},"content":" int prefixPosition \u003d findPrefixPosition(argsString, prefix.getPrefix(), 0);","lastModifiedDate":"2017-05-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" while (prefixPosition !\u003d -1) {","lastModifiedDate":"2017-05-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" PrefixPosition extendedPrefix \u003d new PrefixPosition(prefix, prefixPosition);","lastModifiedDate":"2017-05-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" positions.add(extendedPrefix);","lastModifiedDate":"2016-10-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":" prefixPosition \u003d findPrefixPosition(argsString, prefix.getPrefix(), prefixPosition);","lastModifiedDate":"2017-05-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return positions;","lastModifiedDate":"2016-10-16"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * Returns the index of the first occurrence of {@code prefix} in","lastModifiedDate":"2017-05-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * {@code argsString} starting from index {@code fromIndex}. An occurrence","lastModifiedDate":"2017-05-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * is valid if there is a whitespace before {@code prefix}. Returns -1 if no","lastModifiedDate":"2017-05-19"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * such occurrence can be found.","lastModifiedDate":"2017-05-19"},{"lineNumber":65,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":" * E.g if {@code argsString} \u003d \"e/hip/900\", {@code prefix} \u003d \"p/\" and","lastModifiedDate":"2017-05-19"},{"lineNumber":67,"author":{"gitId":"-"},"content":" * {@code fromIndex} \u003d 0, this method returns -1 as there are no valid","lastModifiedDate":"2017-05-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":" * occurrences of \"p/\" with whitespace before it. However, if","lastModifiedDate":"2017-05-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" * {@code argsString} \u003d \"e/hi p/900\", {@code prefix} \u003d \"p/\" and","lastModifiedDate":"2017-05-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":" * {@code fromIndex} \u003d 0, this method returns 5.","lastModifiedDate":"2017-05-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" private static int findPrefixPosition(String argsString, String prefix, int fromIndex) {","lastModifiedDate":"2017-05-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":" int prefixIndex \u003d argsString.indexOf(\" \" + prefix, fromIndex);","lastModifiedDate":"2017-05-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" return prefixIndex \u003d\u003d -1 ? -1","lastModifiedDate":"2017-05-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":" : prefixIndex + 1; // +1 as offset for whitespace","lastModifiedDate":"2017-05-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-19"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Extracts prefixes and their argument values, and returns an {@code ArgumentMultimap} object that maps the","lastModifiedDate":"2017-03-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * extracted prefixes to their respective arguments. Prefixes are extracted based on their zero-based positions in","lastModifiedDate":"2017-03-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * {@code argsString}.","lastModifiedDate":"2017-03-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * @param argsString Arguments string of the form: {@code preamble \u003cprefix\u003evalue \u003cprefix\u003evalue ...}","lastModifiedDate":"2017-03-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * @param prefixPositions Zero-based positions of all prefixes in {@code argsString}","lastModifiedDate":"2017-03-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * @return ArgumentMultimap object that maps prefixes to their arguments","lastModifiedDate":"2017-03-08"},{"lineNumber":86,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":87,"author":{"gitId":"-"},"content":" private static ArgumentMultimap extractArguments(String argsString, List\u003cPrefixPosition\u003e prefixPositions) {","lastModifiedDate":"2017-03-20"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":89,"author":{"gitId":"-"},"content":" // Sort by start position","lastModifiedDate":"2016-10-16"},{"lineNumber":90,"author":{"gitId":"-"},"content":" prefixPositions.sort((prefix1, prefix2) -\u003e prefix1.getStartPosition() - prefix2.getStartPosition());","lastModifiedDate":"2016-10-16"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":92,"author":{"gitId":"-"},"content":" // Insert a PrefixPosition to represent the preamble","lastModifiedDate":"2016-10-16"},{"lineNumber":93,"author":{"gitId":"-"},"content":" PrefixPosition preambleMarker \u003d new PrefixPosition(new Prefix(\"\"), 0);","lastModifiedDate":"2016-10-16"},{"lineNumber":94,"author":{"gitId":"-"},"content":" prefixPositions.add(0, preambleMarker);","lastModifiedDate":"2016-10-16"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":96,"author":{"gitId":"-"},"content":" // Add a dummy PrefixPosition to represent the end of the string","lastModifiedDate":"2016-10-16"},{"lineNumber":97,"author":{"gitId":"-"},"content":" PrefixPosition endPositionMarker \u003d new PrefixPosition(new Prefix(\"\"), argsString.length());","lastModifiedDate":"2016-10-16"},{"lineNumber":98,"author":{"gitId":"-"},"content":" prefixPositions.add(endPositionMarker);","lastModifiedDate":"2016-10-16"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":100,"author":{"gitId":"-"},"content":" // Map prefixes to their argument values (if any)","lastModifiedDate":"2017-03-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d new ArgumentMultimap();","lastModifiedDate":"2017-03-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":" for (int i \u003d 0; i \u003c prefixPositions.size() - 1; i++) {","lastModifiedDate":"2016-10-16"},{"lineNumber":103,"author":{"gitId":"-"},"content":" // Extract and store prefixes and their arguments","lastModifiedDate":"2017-03-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":" Prefix argPrefix \u003d prefixPositions.get(i).getPrefix();","lastModifiedDate":"2017-03-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":" String argValue \u003d extractArgumentValue(argsString, prefixPositions.get(i), prefixPositions.get(i + 1));","lastModifiedDate":"2016-10-16"},{"lineNumber":106,"author":{"gitId":"-"},"content":" argMultimap.put(argPrefix, argValue);","lastModifiedDate":"2017-03-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":109,"author":{"gitId":"-"},"content":" return argMultimap;","lastModifiedDate":"2017-03-08"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":112,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":113,"author":{"gitId":"-"},"content":" * Returns the trimmed value of the argument in the arguments string specified by {@code currentPrefixPosition}.","lastModifiedDate":"2017-03-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":" * The end position of the value is determined by {@code nextPrefixPosition}.","lastModifiedDate":"2017-03-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":116,"author":{"gitId":"-"},"content":" private static String extractArgumentValue(String argsString,","lastModifiedDate":"2017-03-20"},{"lineNumber":117,"author":{"gitId":"-"},"content":" PrefixPosition currentPrefixPosition,","lastModifiedDate":"2016-10-16"},{"lineNumber":118,"author":{"gitId":"-"},"content":" PrefixPosition nextPrefixPosition) {","lastModifiedDate":"2016-10-16"},{"lineNumber":119,"author":{"gitId":"-"},"content":" Prefix prefix \u003d currentPrefixPosition.getPrefix();","lastModifiedDate":"2016-10-16"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":121,"author":{"gitId":"-"},"content":" int valueStartPos \u003d currentPrefixPosition.getStartPosition() + prefix.getPrefix().length();","lastModifiedDate":"2016-10-16"},{"lineNumber":122,"author":{"gitId":"-"},"content":" String value \u003d argsString.substring(valueStartPos, nextPrefixPosition.getStartPosition());","lastModifiedDate":"2016-10-16"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":124,"author":{"gitId":"-"},"content":" return value.trim();","lastModifiedDate":"2016-10-16"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":127,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":128,"author":{"gitId":"-"},"content":" * Represents a prefix\u0027s position in an arguments string.","lastModifiedDate":"2017-03-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-19"},{"lineNumber":130,"author":{"gitId":"-"},"content":" private static class PrefixPosition {","lastModifiedDate":"2017-03-20"},{"lineNumber":131,"author":{"gitId":"-"},"content":" private int startPosition;","lastModifiedDate":"2016-10-19"},{"lineNumber":132,"author":{"gitId":"-"},"content":" private final Prefix prefix;","lastModifiedDate":"2016-10-19"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":134,"author":{"gitId":"-"},"content":" PrefixPosition(Prefix prefix, int startPosition) {","lastModifiedDate":"2016-10-19"},{"lineNumber":135,"author":{"gitId":"-"},"content":" this.prefix \u003d prefix;","lastModifiedDate":"2016-10-19"},{"lineNumber":136,"author":{"gitId":"-"},"content":" this.startPosition \u003d startPosition;","lastModifiedDate":"2016-10-19"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":139,"author":{"gitId":"-"},"content":" int getStartPosition() {","lastModifiedDate":"2016-10-19"},{"lineNumber":140,"author":{"gitId":"-"},"content":" return startPosition;","lastModifiedDate":"2018-08-14"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":143,"author":{"gitId":"-"},"content":" Prefix getPrefix() {","lastModifiedDate":"2016-10-19"},{"lineNumber":144,"author":{"gitId":"-"},"content":" return prefix;","lastModifiedDate":"2018-08-14"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":148,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-10-16"}],"authorContributionMap":{"chaaaaun":1,"-":147}},{"path":"src/main/java/scrolls/elder/logic/parser/CliSyntax.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.logic.parser;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11"},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":" /* Prefix definitions */","lastModifiedDate":"2017-02-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"n/\");","lastModifiedDate":"2017-06-06"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"p/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"e/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_ADDRESS \u003d new Prefix(\"a/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"t/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":15,"author":{"gitId":"gerteck"},"content":" public static final Prefix PREFIX_ROLE \u003d new Prefix(\"r/\");","lastModifiedDate":"2024-03-15"},{"lineNumber":16,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":17,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"gerteck":4,"chaaaaun":1,"-":14}},{"path":"src/main/java/scrolls/elder/logic/parser/DeleteCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.logic.parser;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"chaaaaun"},"content":"import static scrolls.elder.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"chaaaaun"},"content":"import static scrolls.elder.logic.parser.CliSyntax.PREFIX_ROLE;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":6,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.core.index.Index;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.commands.DeleteCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new DeleteCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class DeleteCommandParser implements Parser\u003cDeleteCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the DeleteCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * and returns a DeleteCommand object for execution.","lastModifiedDate":"2019-05-11"},{"lineNumber":18,"author":{"gitId":"chaaaaun"},"content":" *","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public DeleteCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":22,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15"},{"lineNumber":23,"author":{"gitId":"chaaaaun"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_ROLE);","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"chaaaaun"},"content":" Index index;","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"chaaaaun"},"content":" try {","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"chaaaaun"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"chaaaaun"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"chaaaaun"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE),","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"chaaaaun"},"content":" pe);","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"chaaaaun"},"content":" return new DeleteCommand(index, ParserUtil.parseRole(argMultimap.getValue(PREFIX_ROLE).get()));","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10"},{"lineNumber":33,"author":{"gitId":"-"},"content":" throw new ParseException(","lastModifiedDate":"2017-03-11"},{"lineNumber":34,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2018-08-06"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":38,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"chaaaaun":16,"-":22}},{"path":"src/main/java/scrolls/elder/logic/parser/EditCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.logic.parser;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"chaaaaun"},"content":"import static scrolls.elder.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"gerteck"},"content":"import static scrolls.elder.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"gerteck"},"content":"import static scrolls.elder.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"gerteck"},"content":"import static scrolls.elder.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"gerteck"},"content":"import static scrolls.elder.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"gerteck"},"content":"import static scrolls.elder.logic.parser.CliSyntax.PREFIX_ROLE;","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"gerteck"},"content":"import static scrolls.elder.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-01-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-01-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":17,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.core.index.Index;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.commands.EditCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.tag.Tag;","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new EditCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class EditCommandParser implements Parser\u003cEditCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the EditCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * and returns an EditCommand object for execution.","lastModifiedDate":"2017-01-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public EditCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":33,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2017-05-15"},{"lineNumber":34,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":35,"author":{"gitId":"gerteck"},"content":" ArgumentTokenizer.tokenize(args,","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"gerteck"},"content":" PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_TAG, PREFIX_ROLE);","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2017-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2017-06-06"},{"lineNumber":42,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10"},{"lineNumber":43,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2018-08-06"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":46,"author":{"gitId":"-"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS);","lastModifiedDate":"2023-07-14"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":48,"author":{"gitId":"chaaaaun"},"content":" EditCommand.EditPersonDescriptor editPersonDescriptor \u003d new EditCommand.EditPersonDescriptor();","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":50,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":51,"author":{"gitId":"-"},"content":" editPersonDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":53,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":54,"author":{"gitId":"-"},"content":" editPersonDescriptor.setPhone(ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":56,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":57,"author":{"gitId":"-"},"content":" editPersonDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":59,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_ADDRESS).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":60,"author":{"gitId":"-"},"content":" editPersonDescriptor.setAddress(ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":62,"author":{"gitId":"gerteck"},"content":" if (argMultimap.getValue(PREFIX_ROLE).isPresent()) {","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"gerteck"},"content":" editPersonDescriptor.setRole(ParserUtil.parseRole(argMultimap.getValue(PREFIX_ROLE).get()));","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":66,"author":{"gitId":"-"},"content":" parseTagsForEdit(argMultimap.getAllValues(PREFIX_TAG)).ifPresent(editPersonDescriptor::setTags);","lastModifiedDate":"2017-06-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":68,"author":{"gitId":"-"},"content":" if (!editPersonDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2017-01-26"},{"lineNumber":69,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-03-11"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2017-05-15"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":75,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":76,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e} if {@code tags} is non-empty.","lastModifiedDate":"2017-03-07"},{"lineNumber":77,"author":{"gitId":"-"},"content":" * If {@code tags} contain only one element which is an empty string, it will be parsed into a","lastModifiedDate":"2017-01-26"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * {@code Set\u003cTag\u003e} containing zero tags.","lastModifiedDate":"2017-03-07"},{"lineNumber":79,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":80,"author":{"gitId":"-"},"content":" private Optional\u003cSet\u003cTag\u003e\u003e parseTagsForEdit(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assert tags !\u003d null;","lastModifiedDate":"2017-01-26"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":83,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2017-01-26"},{"lineNumber":84,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2017-01-26"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":86,"author":{"gitId":"-"},"content":" Collection\u003cString\u003e tagSet \u003d tags.size() \u003d\u003d 1 \u0026\u0026 tags.contains(\"\") ? Collections.emptySet() : tags;","lastModifiedDate":"2017-01-26"},{"lineNumber":87,"author":{"gitId":"-"},"content":" return Optional.of(ParserUtil.parseTags(tagSet));","lastModifiedDate":"2017-01-26"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":90,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"gerteck":12,"chaaaaun":7,"-":71}},{"path":"src/main/java/scrolls/elder/logic/parser/FindCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.logic.parser;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"chaaaaun"},"content":"import static scrolls.elder.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-01-26"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":7,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.commands.FindCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new FindCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class FindCommandParser implements Parser\u003cFindCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the FindCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * and returns a FindCommand object for execution.","lastModifiedDate":"2019-05-11"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public FindCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":22,"author":{"gitId":"-"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2017-02-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2017-02-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":" throw new ParseException(","lastModifiedDate":"2017-03-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-01-26"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":" String[] nameKeywords \u003d trimmedArgs.split(\"\\\\s+\");","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" return new FindCommand(new NameContainsKeywordsPredicate(Arrays.asList(nameKeywords)));","lastModifiedDate":"2017-06-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"chaaaaun":5,"-":28}},{"path":"src/main/java/scrolls/elder/logic/parser/PairCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"soons1"},"content":"package scrolls.elder.logic.parser;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"soons1"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"soons1"},"content":"import static scrolls.elder.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"soons1"},"content":"import scrolls.elder.commons.core.index.Index;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"soons1"},"content":"import scrolls.elder.logic.commands.PairCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"soons1"},"content":"import scrolls.elder.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"soons1"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"soons1"},"content":" * Parses input arguments and creates a new PairCommand object","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"soons1"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"soons1"},"content":"public class PairCommandParser implements Parser\u003cPairCommand\u003e {","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"soons1"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"soons1"},"content":" * Parses the given {@code String} of arguments in the context of the PairCommand","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"soons1"},"content":" * and returns an PairCommand object for execution.","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"soons1"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"soons1"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"soons1"},"content":" public PairCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"soons1"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"soons1"},"content":" String[] pairIndexes \u003d args.trim().split(\" \");","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"soons1"},"content":" Index index1;","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"soons1"},"content":" Index index2;","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"soons1"},"content":" try {","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"soons1"},"content":" index1 \u003d ParserUtil.parseIndex(pairIndexes[0]);","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"soons1"},"content":" index2 \u003d ParserUtil.parseIndex(pairIndexes[1]);","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"soons1"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"soons1"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, PairCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"soons1"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"soons1"},"content":" return new PairCommand(index1, index2);","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"soons1"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"soons1"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"soons1":35}},{"path":"src/main/java/scrolls/elder/logic/parser/Parser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.logic.parser;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06"},{"lineNumber":3,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.commands.Command;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-07-06"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * Represents a Parser that is able to parse user input into a {@code Command} of type {@code T}.","lastModifiedDate":"2017-07-06"},{"lineNumber":8,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-06"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public interface Parser\u003cT extends Command\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06"},{"lineNumber":11,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-06"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Parses {@code userInput} into a command and returns it.","lastModifiedDate":"2017-07-06"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * @throws ParseException if {@code userInput} does not conform the expected format","lastModifiedDate":"2017-07-06"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-06"},{"lineNumber":15,"author":{"gitId":"-"},"content":" T parse(String userInput) throws ParseException;","lastModifiedDate":"2017-07-06"},{"lineNumber":16,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-07-06"}],"authorContributionMap":{"chaaaaun":3,"-":13}},{"path":"src/main/java/scrolls/elder/logic/parser/ParserUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.logic.parser;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-02-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-02-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-02-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.core.index.Index;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.util.StringUtil;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Address;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Email;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Name;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Phone;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"gerteck"},"content":"import scrolls.elder.model.person.Role;","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.tag.Tag;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02"},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2017-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":32,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02"},{"lineNumber":34,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":36,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29"},{"lineNumber":42,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":46,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29"},{"lineNumber":47,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29"},{"lineNumber":48,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":49,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":57,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":61,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30"},{"lineNumber":62,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":63,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":64,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","lastModifiedDate":"2017-05-30"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":69,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30"},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":72,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":76,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-30"},{"lineNumber":77,"author":{"gitId":"-"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":78,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(trimmedAddress)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":79,"author":{"gitId":"-"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":81,"author":{"gitId":"-"},"content":" return new Address(trimmedAddress);","lastModifiedDate":"2017-05-30"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":84,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":87,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":89,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":90,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":91,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30"},{"lineNumber":92,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":93,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":94,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":96,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","lastModifiedDate":"2017-05-30"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":99,"author":{"gitId":"gerteck"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":100,"author":{"gitId":"gerteck"},"content":" * Parses a {@code String role} into an {@code Role}.","lastModifiedDate":"2024-03-16"},{"lineNumber":101,"author":{"gitId":"gerteck"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-16"},{"lineNumber":102,"author":{"gitId":"gerteck"},"content":" *","lastModifiedDate":"2024-03-16"},{"lineNumber":103,"author":{"gitId":"gerteck"},"content":" * @throws ParseException if the given {@code role} is invalid.","lastModifiedDate":"2024-03-16"},{"lineNumber":104,"author":{"gitId":"gerteck"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":105,"author":{"gitId":"gerteck"},"content":" public static Role parseRole(String role) throws ParseException {","lastModifiedDate":"2024-03-16"},{"lineNumber":106,"author":{"gitId":"gerteck"},"content":" requireNonNull(role);","lastModifiedDate":"2024-03-16"},{"lineNumber":107,"author":{"gitId":"gerteck"},"content":" String trimmedRole \u003d role.trim();","lastModifiedDate":"2024-03-16"},{"lineNumber":108,"author":{"gitId":"gerteck"},"content":" if (!Role.isValidRole(trimmedRole)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":109,"author":{"gitId":"gerteck"},"content":" throw new ParseException(Role.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-16"},{"lineNumber":110,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":111,"author":{"gitId":"gerteck"},"content":" return new Role(trimmedRole);","lastModifiedDate":"2024-03-16"},{"lineNumber":112,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":113,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":114,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":115,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30"},{"lineNumber":116,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":117,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":118,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":119,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":120,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":121,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30"},{"lineNumber":122,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":123,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":124,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":126,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","lastModifiedDate":"2017-05-30"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":129,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":130,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2017-03-07"},{"lineNumber":131,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":132,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":133,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15"},{"lineNumber":134,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11"},{"lineNumber":135,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11"},{"lineNumber":136,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":138,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":140,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"gerteck":16,"chaaaaun":9,"-":115}},{"path":"src/main/java/scrolls/elder/logic/parser/Prefix.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.logic.parser;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-03-11"},{"lineNumber":4,"author":{"gitId":"-"},"content":" * A prefix that marks the beginning of an argument in an arguments string.","lastModifiedDate":"2017-03-11"},{"lineNumber":5,"author":{"gitId":"-"},"content":" * E.g. \u0027t/\u0027 in \u0027add James t/ friend\u0027.","lastModifiedDate":"2017-03-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"public class Prefix {","lastModifiedDate":"2017-03-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":" private final String prefix;","lastModifiedDate":"2017-03-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public Prefix(String prefix) {","lastModifiedDate":"2017-03-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":" this.prefix \u003d prefix;","lastModifiedDate":"2017-03-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":14,"author":{"gitId":"-"},"content":" public String getPrefix() {","lastModifiedDate":"2017-03-11"},{"lineNumber":15,"author":{"gitId":"-"},"content":" return prefix;","lastModifiedDate":"2017-03-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":18,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2017-05-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" return getPrefix();","lastModifiedDate":"2017-05-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-03-11"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2017-03-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":" return prefix \u003d\u003d null ? 0 : prefix.hashCode();","lastModifiedDate":"2017-03-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-03-11"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-03-11"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":34,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" if (!(other instanceof Prefix)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" Prefix otherPrefix \u003d (Prefix) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" return prefix.equals(otherPrefix.prefix);","lastModifiedDate":"2023-07-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-11"}],"authorContributionMap":{"chaaaaun":1,"-":41}},{"path":"src/main/java/scrolls/elder/logic/parser/UnpairCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sdevih"},"content":"package scrolls.elder.logic.parser;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"sdevih"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"sdevih"},"content":"import static scrolls.elder.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"sdevih"},"content":"import scrolls.elder.commons.core.index.Index;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"sdevih"},"content":"import scrolls.elder.logic.commands.UnpairCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"sdevih"},"content":"import scrolls.elder.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"sdevih"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"sdevih"},"content":" * Parses input arguments and creates a new UnpairCommand object","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"sdevih"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"sdevih"},"content":"public class UnpairCommandParser implements Parser\u003cUnpairCommand\u003e {","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"sdevih"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"sdevih"},"content":" * Parses the given {@code String} of arguments in the context of the PairCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"sdevih"},"content":" * and returns an PairCommand object for execution.","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"sdevih"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"sdevih"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"sdevih"},"content":" public UnpairCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"sdevih"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"sdevih"},"content":" String[] pairIndexes \u003d args.trim().split(\" \");","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"sdevih"},"content":" Index index1;","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"sdevih"},"content":" Index index2;","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"sdevih"},"content":" try {","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"sdevih"},"content":" index1 \u003d ParserUtil.parseIndex(pairIndexes[0]);","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"sdevih"},"content":" index2 \u003d ParserUtil.parseIndex(pairIndexes[1]);","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"sdevih"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"sdevih"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, UnpairCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"sdevih"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"sdevih"},"content":" return new UnpairCommand(index1, index2);","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"sdevih"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"sdevih"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"sdevih":35}},{"path":"src/main/java/scrolls/elder/logic/parser/exceptions/ParseException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.logic.parser.exceptions;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":3,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-03-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * Represents a parse error encountered by a parser.","lastModifiedDate":"2017-03-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class ParseException extends IllegalValueException {","lastModifiedDate":"2017-03-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public ParseException(String message) {","lastModifiedDate":"2017-03-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":" super(message);","lastModifiedDate":"2017-03-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":14,"author":{"gitId":"-"},"content":" public ParseException(String message, Throwable cause) {","lastModifiedDate":"2017-03-11"},{"lineNumber":15,"author":{"gitId":"-"},"content":" super(message, cause);","lastModifiedDate":"2017-03-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-11"}],"authorContributionMap":{"chaaaaun":2,"-":15}},{"path":"src/main/java/scrolls/elder/model/AddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.model;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Person;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.UniquePersonList;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * Wraps all data at the address-book level","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Duplicates are not allowed (by .isSamePerson comparison)","lastModifiedDate":"2018-04-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class AddressBook implements ReadOnlyAddressBook {","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"chaaaaun"},"content":" private int globalId;","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private final UniquePersonList persons;","lastModifiedDate":"2016-08-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-19"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * The \u0027unusual\u0027 code block below is a non-static initialization block, sometimes used to avoid duplication","lastModifiedDate":"2019-05-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * between constructors. See https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html","lastModifiedDate":"2016-10-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Note that non-static init blocks are not recommended to use. There are other ways to avoid duplication","lastModifiedDate":"2016-10-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * among constructors.","lastModifiedDate":"2016-10-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" {","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" persons \u003d new UniquePersonList();","lastModifiedDate":"2016-08-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"chaaaaun"},"content":" public AddressBook(int gid) {","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"chaaaaun"},"content":" this.globalId \u003d gid;","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Creates an AddressBook using the Persons in the {@code toBeCopied}","lastModifiedDate":"2018-03-29"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public AddressBook(ReadOnlyAddressBook toBeCopied) {","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"chaaaaun"},"content":" this(toBeCopied.getGlobalId());","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"-"},"content":" resetData(toBeCopied);","lastModifiedDate":"2016-12-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":44,"author":{"gitId":"-"},"content":" //// list overwrite operations","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":46,"author":{"gitId":"chaaaaun"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"chaaaaun"},"content":" public int getGlobalId() {","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"chaaaaun"},"content":" return globalId;","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Replaces the contents of the person list with {@code persons}.","lastModifiedDate":"2018-08-07"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * {@code persons} must not contain duplicate persons.","lastModifiedDate":"2018-08-07"},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void setPersons(List\u003cPerson\u003e persons) {","lastModifiedDate":"2018-08-07"},{"lineNumber":56,"author":{"gitId":"-"},"content":" this.persons.setPersons(persons);","lastModifiedDate":"2016-10-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * Resets the existing data of this {@code AddressBook} with {@code newData}.","lastModifiedDate":"2017-08-16"},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void resetData(ReadOnlyAddressBook newData) {","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" requireNonNull(newData);","lastModifiedDate":"2017-05-15"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-20"},{"lineNumber":65,"author":{"gitId":"chaaaaun"},"content":" this.globalId \u003d newData.getGlobalId();","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"-"},"content":" setPersons(newData.getPersonList());","lastModifiedDate":"2018-03-29"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" //// person-level operations","lastModifiedDate":"2016-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * Returns true if a person with the same identity as {@code person} exists in the address book.","lastModifiedDate":"2018-08-06"},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06"},{"lineNumber":75,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return persons.contains(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":79,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-09-21"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * The person must not already exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":82,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void addPerson(Person p) {","lastModifiedDate":"2018-08-07"},{"lineNumber":84,"author":{"gitId":"chaaaaun"},"content":" globalId +\u003d 1;","lastModifiedDate":"2024-03-17"},{"lineNumber":85,"author":{"gitId":"-"},"content":" persons.add(p);","lastModifiedDate":"2018-03-29"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":88,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * Replaces the given person {@code target} in the list with {@code editedPerson}.","lastModifiedDate":"2018-01-10"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * The person identity of {@code editedPerson} must not be the same as another existing person in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":92,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":94,"author":{"gitId":"-"},"content":" requireNonNull(editedPerson);","lastModifiedDate":"2018-01-10"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" persons.setPerson(target, editedPerson);","lastModifiedDate":"2018-03-29"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":99,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * Removes {@code key} from this {@code AddressBook}.","lastModifiedDate":"2017-08-16"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * {@code key} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":102,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":103,"author":{"gitId":"-"},"content":" public void removePerson(Person key) {","lastModifiedDate":"2018-08-07"},{"lineNumber":104,"author":{"gitId":"-"},"content":" persons.remove(key);","lastModifiedDate":"2018-02-28"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":" //// util methods","lastModifiedDate":"2016-08-08"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":110,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-08"},{"lineNumber":111,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":" .add(\"persons\", persons)","lastModifiedDate":"2019-02-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":118,"author":{"gitId":"-"},"content":" return persons.asUnmodifiableObservableList();","lastModifiedDate":"2018-04-05"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-01"},{"lineNumber":120,"author":{"gitId":"CJerrong"},"content":" public Person getPersonFromID(int i) {","lastModifiedDate":"2024-03-21"},{"lineNumber":121,"author":{"gitId":"CJerrong"},"content":" return persons.getPersonFromID(i);","lastModifiedDate":"2024-03-21"},{"lineNumber":122,"author":{"gitId":"CJerrong"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-01"},{"lineNumber":124,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":125,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-21"},{"lineNumber":126,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":127,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":130,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":131,"author":{"gitId":"-"},"content":" if (!(other instanceof AddressBook)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":132,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":135,"author":{"gitId":"-"},"content":" AddressBook otherAddressBook \u003d (AddressBook) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":136,"author":{"gitId":"-"},"content":" return persons.equals(otherAddressBook.persons);","lastModifiedDate":"2023-07-13"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":139,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":140,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-21"},{"lineNumber":141,"author":{"gitId":"-"},"content":" return persons.hashCode();","lastModifiedDate":"2018-03-29"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":143,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"CJerrong":3,"chaaaaun":16,"-":124}},{"path":"src/main/java/scrolls/elder/model/Model.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.model;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":7,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.core.GuiSettings;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Person;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * The API of the Model component.","lastModifiedDate":"2016-09-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public interface Model {","lastModifiedDate":"2016-09-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":" /** {@code Predicate} that always evaluate to true */","lastModifiedDate":"2017-08-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":" Predicate\u003cPerson\u003e PREDICATE_SHOW_ALL_PERSONS \u003d unused -\u003e true;","lastModifiedDate":"2018-01-10"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Replaces user prefs data with the data in {@code userPrefs}.","lastModifiedDate":"2018-12-06"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":" void setUserPrefs(ReadOnlyUserPrefs userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Returns the user prefs.","lastModifiedDate":"2018-11-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" ReadOnlyUserPrefs getUserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" void setAddressBookFilePath(Path addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Replaces address book data with the data in {@code addressBook}.","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" void setAddressBook(ReadOnlyAddressBook addressBook);","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":52,"author":{"gitId":"-"},"content":" /** Returns the AddressBook */","lastModifiedDate":"2016-09-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2016-09-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Returns true if a person with the same identity as {@code person} exists in the address book.","lastModifiedDate":"2018-08-06"},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":58,"author":{"gitId":"-"},"content":" boolean hasPerson(Person person);","lastModifiedDate":"2018-08-06"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * Deletes the given person.","lastModifiedDate":"2018-08-07"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * The person must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":64,"author":{"gitId":"-"},"content":" void deletePerson(Person target);","lastModifiedDate":"2018-08-07"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":66,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":67,"author":{"gitId":"-"},"content":" * Adds the given person.","lastModifiedDate":"2018-08-07"},{"lineNumber":68,"author":{"gitId":"-"},"content":" * {@code person} must not already exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":69,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":70,"author":{"gitId":"-"},"content":" void addPerson(Person person);","lastModifiedDate":"2018-08-07"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Replaces the given person {@code target} with {@code editedPerson}.","lastModifiedDate":"2017-06-07"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":75,"author":{"gitId":"-"},"content":" * The person identity of {@code editedPerson} must not be the same as another existing person in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":76,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" void setPerson(Person target, Person editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" /** Returns an unmodifiable view of the filtered person list */","lastModifiedDate":"2017-09-01"},{"lineNumber":80,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":82,"author":{"gitId":"CJerrong"},"content":" ObservableList\u003cPerson\u003e getFilteredVolunteerList();","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"CJerrong"},"content":" ObservableList\u003cPerson\u003e getFilteredBefriendeeList();","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"CJerrong"},"content":" Person getPersonFromID(int i);","lastModifiedDate":"2024-03-21"},{"lineNumber":86,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-05"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * Updates the filter of the filtered person list to filter by the given {@code predicate}.","lastModifiedDate":"2017-08-05"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2017-08-05"},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05"},{"lineNumber":91,"author":{"gitId":"-"},"content":" void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate);","lastModifiedDate":"2018-01-10"},{"lineNumber":92,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"CJerrong":5,"chaaaaun":3,"-":84}},{"path":"src/main/java/scrolls/elder/model/ModelManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.model;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-08-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2016-08-26"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.core.GuiSettings;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.core.LogsCenter;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.util.CollectionUtil;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Person;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Represents the in-memory model of the address book data.","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class ModelManager implements Model {","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ModelManager.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final AddressBook addressBook;","lastModifiedDate":"2019-01-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final UserPrefs userPrefs;","lastModifiedDate":"2018-12-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final FilteredList\u003cPerson\u003e filteredPersons;","lastModifiedDate":"2018-01-10"},{"lineNumber":25,"author":{"gitId":"CJerrong"},"content":" private final FilteredList\u003cPerson\u003e filteredVolunteers;","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"CJerrong"},"content":" private final FilteredList\u003cPerson\u003e filteredBefriendees;","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Initializes a ModelManager with the given addressBook and userPrefs.","lastModifiedDate":"2016-12-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public ModelManager(ReadOnlyAddressBook addressBook, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":32,"author":{"gitId":"chaaaaun"},"content":" CollectionUtil.requireAllNonNull(addressBook, userPrefs);","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" logger.fine(\"Initializing with address book: \" + addressBook + \" and user prefs \" + userPrefs);","lastModifiedDate":"2016-12-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.addressBook \u003d new AddressBook(addressBook);","lastModifiedDate":"2019-01-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":38,"author":{"gitId":"-"},"content":" filteredPersons \u003d new FilteredList\u003c\u003e(this.addressBook.getPersonList());","lastModifiedDate":"2019-01-25"},{"lineNumber":39,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"CJerrong"},"content":" filteredVolunteers \u003d new FilteredList\u003c\u003e(this.addressBook.getPersonList(), person -\u003e person.isVolunteer());","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"CJerrong"},"content":" filteredBefriendees \u003d new FilteredList\u003c\u003e(this.addressBook.getPersonList(), person -\u003e !(person.isVolunteer()));","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public ModelManager() {","lastModifiedDate":"2016-09-22"},{"lineNumber":46,"author":{"gitId":"chaaaaun"},"content":" this(new AddressBook(0), new UserPrefs());","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d UserPrefs \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":53,"author":{"gitId":"-"},"content":" requireNonNull(userPrefs);","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" this.userPrefs.resetData(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return userPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return userPrefs.getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return userPrefs.getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d AddressBook \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook addressBook) {","lastModifiedDate":"2018-11-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" this.addressBook.resetData(addressBook);","lastModifiedDate":"2019-01-25"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2016-09-21"},{"lineNumber":93,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2019-01-25"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":98,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":99,"author":{"gitId":"-"},"content":" return addressBook.hasPerson(person);","lastModifiedDate":"2019-01-25"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":103,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-15"},{"lineNumber":104,"author":{"gitId":"-"},"content":" addressBook.removePerson(target);","lastModifiedDate":"2019-01-25"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":109,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2019-01-25"},{"lineNumber":110,"author":{"gitId":"-"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26"},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":115,"author":{"gitId":"chaaaaun"},"content":" CollectionUtil.requireAllNonNull(target, editedPerson);","lastModifiedDate":"2024-03-12"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":" addressBook.setPerson(target, editedPerson);","lastModifiedDate":"2019-01-25"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Filtered Person List Accessors \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2016-10-12"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19"},{"lineNumber":123,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the list of {@code Person} backed by the internal list of","lastModifiedDate":"2018-01-10"},{"lineNumber":124,"author":{"gitId":"-"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2018-06-11"},{"lineNumber":125,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19"},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":127,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":128,"author":{"gitId":"-"},"content":" return filteredPersons;","lastModifiedDate":"2018-12-09"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":131,"author":{"gitId":"CJerrong"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":132,"author":{"gitId":"CJerrong"},"content":" public ObservableList\u003cPerson\u003e getFilteredVolunteerList() {","lastModifiedDate":"2024-03-20"},{"lineNumber":133,"author":{"gitId":"CJerrong"},"content":" return filteredVolunteers;","lastModifiedDate":"2024-03-20"},{"lineNumber":134,"author":{"gitId":"CJerrong"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":135,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":136,"author":{"gitId":"CJerrong"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":137,"author":{"gitId":"CJerrong"},"content":" public ObservableList\u003cPerson\u003e getFilteredBefriendeeList() {","lastModifiedDate":"2024-03-20"},{"lineNumber":138,"author":{"gitId":"CJerrong"},"content":" return filteredBefriendees;","lastModifiedDate":"2024-03-20"},{"lineNumber":139,"author":{"gitId":"CJerrong"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":140,"author":{"gitId":"CJerrong"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":141,"author":{"gitId":"CJerrong"},"content":" public Person getPersonFromID(int i) {","lastModifiedDate":"2024-03-21"},{"lineNumber":142,"author":{"gitId":"CJerrong"},"content":" return addressBook.getPersonFromID(i);","lastModifiedDate":"2024-03-21"},{"lineNumber":143,"author":{"gitId":"CJerrong"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":144,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":145,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":146,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10"},{"lineNumber":147,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05"},{"lineNumber":148,"author":{"gitId":"-"},"content":" filteredPersons.setPredicate(predicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":149,"author":{"gitId":"CJerrong"},"content":" filteredVolunteers.setPredicate(person -\u003e predicate.test(person) \u0026\u0026 person.isVolunteer());","lastModifiedDate":"2024-03-20"},{"lineNumber":150,"author":{"gitId":"CJerrong"},"content":" filteredBefriendees.setPredicate(person -\u003e predicate.test(person) \u0026\u0026 !(person.isVolunteer()));","lastModifiedDate":"2024-03-20"},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":153,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-31"},{"lineNumber":154,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13"},{"lineNumber":155,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":156,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31"},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":159,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31"},{"lineNumber":160,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":161,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-31"},{"lineNumber":162,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":164,"author":{"gitId":"-"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":165,"author":{"gitId":"-"},"content":" return addressBook.equals(otherModelManager.addressBook)","lastModifiedDate":"2023-07-13"},{"lineNumber":166,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13"},{"lineNumber":167,"author":{"gitId":"-"},"content":" \u0026\u0026 filteredPersons.equals(otherModelManager.filteredPersons);","lastModifiedDate":"2023-07-13"},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":170,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"CJerrong":22,"chaaaaun":8,"-":140}},{"path":"src/main/java/scrolls/elder/model/ReadOnlyAddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.model;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Person;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * Unmodifiable view of an address book","lastModifiedDate":"2016-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public interface ReadOnlyAddressBook {","lastModifiedDate":"2019-01-25"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":" * Returns the current ID counter.","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"chaaaaun"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"chaaaaun"},"content":" int getGlobalId();","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the persons list.","lastModifiedDate":"2016-12-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * This list will not contain any duplicate persons.","lastModifiedDate":"2016-12-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getPersonList();","lastModifiedDate":"2018-01-10"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"chaaaaun":6,"-":15}},{"path":"src/main/java/scrolls/elder/model/ReadOnlyUserPrefs.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.model;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":5,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.core.GuiSettings;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-11-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Unmodifiable view of user prefs.","lastModifiedDate":"2018-11-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public interface ReadOnlyUserPrefs {","lastModifiedDate":"2018-11-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-11-27"}],"authorContributionMap":{"chaaaaun":2,"-":14}},{"path":"src/main/java/scrolls/elder/model/UserPrefs.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.model;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2016-09-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.core.GuiSettings;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Represents User\u0027s preferences.","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class UserPrefs implements ReadOnlyUserPrefs {","lastModifiedDate":"2018-11-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" private GuiSettings guiSettings \u003d new GuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":" private Path addressBookFilePath \u003d Paths.get(\"data\" , \"addressbook.json\");","lastModifiedDate":"2018-11-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-06"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Creates a {@code UserPrefs} with default values.","lastModifiedDate":"2018-12-06"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-06"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public UserPrefs() {}","lastModifiedDate":"2018-12-06"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Creates a {@code UserPrefs} with the prefs in {@code userPrefs}.","lastModifiedDate":"2018-12-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public UserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":" this();","lastModifiedDate":"2018-12-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":" resetData(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Resets the existing data of this {@code UserPrefs} with {@code newUserPrefs}.","lastModifiedDate":"2018-12-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-06"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public void resetData(ReadOnlyUserPrefs newUserPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":36,"author":{"gitId":"-"},"content":" requireNonNull(newUserPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":37,"author":{"gitId":"-"},"content":" setGuiSettings(newUserPrefs.getGuiSettings());","lastModifiedDate":"2018-12-06"},{"lineNumber":38,"author":{"gitId":"-"},"content":" setAddressBookFilePath(newUserPrefs.getAddressBookFilePath());","lastModifiedDate":"2018-12-06"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-06"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return guiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" this.guiSettings \u003d guiSettings;","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-04-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return addressBookFilePath;","lastModifiedDate":"2017-02-25"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-04-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" this.addressBookFilePath \u003d addressBookFilePath;","lastModifiedDate":"2017-02-25"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-25"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2016-09-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2016-09-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" if (!(other instanceof UserPrefs)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2016-09-24"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":" UserPrefs otherUserPrefs \u003d (UserPrefs) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return guiSettings.equals(otherUserPrefs.guiSettings)","lastModifiedDate":"2023-07-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" \u0026\u0026 addressBookFilePath.equals(otherUserPrefs.addressBookFilePath);","lastModifiedDate":"2023-07-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return Objects.hash(guiSettings, addressBookFilePath);","lastModifiedDate":"2018-08-09"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-09-24"},{"lineNumber":82,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-02-25"},{"lineNumber":83,"author":{"gitId":"-"},"content":" sb.append(\"Gui Settings : \" + guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":" sb.append(\"\\nLocal data file location : \" + addressBookFilePath);","lastModifiedDate":"2017-02-25"},{"lineNumber":85,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-02-25"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"chaaaaun":2,"-":86}},{"path":"src/main/java/scrolls/elder/model/person/Address.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.model.person;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.util.AppUtil;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Represents a Person\u0027s address in the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidAddress(String)}","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class Address {","lastModifiedDate":"2016-09-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Addresses can take any values, and it should not be blank\";","lastModifiedDate":"2018-09-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2017-01-16"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2017-01-16"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2017-01-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d \"[^\\\\s].*\";","lastModifiedDate":"2018-09-22"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public final String value;","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Constructs an {@code Address}.","lastModifiedDate":"2017-05-30"},{"lineNumber":25,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * @param address A valid address.","lastModifiedDate":"2017-05-30"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public Address(String address) {","lastModifiedDate":"2017-05-30"},{"lineNumber":29,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-15"},{"lineNumber":30,"author":{"gitId":"chaaaaun"},"content":" AppUtil.checkArgument(isValidAddress(address), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" value \u003d address;","lastModifiedDate":"2018-08-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid email.","lastModifiedDate":"2018-04-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static boolean isValidAddress(String test) {","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" return value;","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" if (!(other instanceof Address)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" Address otherAddress \u003d (Address) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return value.equals(otherAddress.value);","lastModifiedDate":"2023-07-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return value.hashCode();","lastModifiedDate":"2016-08-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"chaaaaun":4,"-":62}},{"path":"src/main/java/scrolls/elder/model/person/Befriendee.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"CJerrong"},"content":"package scrolls.elder.model.person;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"gerteck"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"CJerrong"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-15"},{"lineNumber":4,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"CJerrong"},"content":"import scrolls.elder.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-15"},{"lineNumber":6,"author":{"gitId":"CJerrong"},"content":"import scrolls.elder.model.tag.Tag;","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"CJerrong"},"content":"/**","lastModifiedDate":"2024-03-15"},{"lineNumber":9,"author":{"gitId":"CJerrong"},"content":" * Represents a Befriendee in the address book.","lastModifiedDate":"2024-03-15"},{"lineNumber":10,"author":{"gitId":"CJerrong"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2024-03-15"},{"lineNumber":11,"author":{"gitId":"CJerrong"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":12,"author":{"gitId":"CJerrong"},"content":"public class Befriendee extends Person {","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"CJerrong"},"content":" public Befriendee(Name name, Phone phone, Email email, Address address, Set\u003cTag\u003e tags,","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"CJerrong"},"content":" Optional\u003cName\u003e pairedWithName, Optional\u003cInteger\u003e pairedWithID) {","lastModifiedDate":"2024-03-22"},{"lineNumber":15,"author":{"gitId":"CJerrong"},"content":" super(name, phone, email, address, tags, new Role(\"befriendee\"), pairedWithName, pairedWithID);","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"CJerrong"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"CJerrong"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"CJerrong"},"content":" public boolean isVolunteer() {","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"CJerrong"},"content":" return false;","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"CJerrong"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"CJerrong"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":24,"author":{"gitId":"gerteck"},"content":" public Role getRole() {","lastModifiedDate":"2024-03-15"},{"lineNumber":25,"author":{"gitId":"gerteck"},"content":" return this.role;","lastModifiedDate":"2024-03-15"},{"lineNumber":26,"author":{"gitId":"CJerrong"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":27,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":28,"author":{"gitId":"CJerrong"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"CJerrong"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"CJerrong"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"CJerrong"},"content":" return true;","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"CJerrong"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"CJerrong"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"CJerrong"},"content":" if (!(other instanceof Befriendee)) {","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"CJerrong"},"content":" return false;","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"CJerrong"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"CJerrong"},"content":" Befriendee otherBefriendee \u003d (Befriendee) other;","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"CJerrong"},"content":" return name.equals(otherBefriendee.name)","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"CJerrong"},"content":" \u0026\u0026 phone.equals(otherBefriendee.phone)","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"CJerrong"},"content":" \u0026\u0026 email.equals(otherBefriendee.email)","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"CJerrong"},"content":" \u0026\u0026 address.equals(otherBefriendee.address)","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"soons1"},"content":" \u0026\u0026 tags.equals(otherBefriendee.tags)","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"CJerrong"},"content":" \u0026\u0026 pairedWithName.equals(otherBefriendee.pairedWithName)","lastModifiedDate":"2024-03-22"},{"lineNumber":46,"author":{"gitId":"CJerrong"},"content":" \u0026\u0026 pairedWithID.equals(otherBefriendee.pairedWithID);","lastModifiedDate":"2024-03-22"},{"lineNumber":47,"author":{"gitId":"CJerrong"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":49,"author":{"gitId":"CJerrong"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":50,"author":{"gitId":"CJerrong"},"content":" public String toString() {","lastModifiedDate":"2024-03-15"},{"lineNumber":51,"author":{"gitId":"CJerrong"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-15"},{"lineNumber":52,"author":{"gitId":"CJerrong"},"content":" .add(\"name\", name)","lastModifiedDate":"2024-03-15"},{"lineNumber":53,"author":{"gitId":"CJerrong"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2024-03-15"},{"lineNumber":54,"author":{"gitId":"CJerrong"},"content":" .add(\"email\", email)","lastModifiedDate":"2024-03-15"},{"lineNumber":55,"author":{"gitId":"CJerrong"},"content":" .add(\"address\", address)","lastModifiedDate":"2024-03-15"},{"lineNumber":56,"author":{"gitId":"CJerrong"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2024-03-15"},{"lineNumber":57,"author":{"gitId":"gerteck"},"content":" .add(\"role\", role)","lastModifiedDate":"2024-03-15"},{"lineNumber":58,"author":{"gitId":"CJerrong"},"content":" .add(\"pairedWithName\", pairedWithName.orElse(Name.getNone()))","lastModifiedDate":"2024-03-22"},{"lineNumber":59,"author":{"gitId":"CJerrong"},"content":" .add(\"pairedWithID\", pairedWithID.orElse(-1))","lastModifiedDate":"2024-03-22"},{"lineNumber":60,"author":{"gitId":"CJerrong"},"content":" .toString();","lastModifiedDate":"2024-03-15"},{"lineNumber":61,"author":{"gitId":"CJerrong"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":62,"author":{"gitId":"CJerrong"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"CJerrong":57,"soons1":1,"gerteck":4}},{"path":"src/main/java/scrolls/elder/model/person/Email.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.model.person;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.util.AppUtil;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Represents a Person\u0027s email in the address book.","lastModifiedDate":"2018-02-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidEmail(String)}","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class Email {","lastModifiedDate":"2016-09-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" private static final String SPECIAL_CHARACTERS \u003d \"+_.-\";","lastModifiedDate":"2021-07-20"},{"lineNumber":14,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Emails should be of the format local-part@domain \"","lastModifiedDate":"2018-09-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":" + \"and adhere to the following constraints:\\n\"","lastModifiedDate":"2018-02-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":" + \"1. The local-part should only contain alphanumeric characters and these special characters, excluding \"","lastModifiedDate":"2018-02-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":" + \"the parentheses, (\" + SPECIAL_CHARACTERS + \"). The local-part may not start or end with any special \"","lastModifiedDate":"2021-07-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":" + \"characters.\\n\"","lastModifiedDate":"2021-07-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":" + \"2. This is followed by a \u0027@\u0027 and then a domain name. The domain name is made up of domain labels \"","lastModifiedDate":"2021-07-20"},{"lineNumber":20,"author":{"gitId":"-"},"content":" + \"separated by periods.\\n\"","lastModifiedDate":"2021-07-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":" + \"The domain name must:\\n\"","lastModifiedDate":"2018-02-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":" + \" - end with a domain label at least 2 characters long\\n\"","lastModifiedDate":"2021-07-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":" + \" - have each domain label start and end with alphanumeric characters\\n\"","lastModifiedDate":"2021-07-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":" + \" - have each domain label consist of alphanumeric characters, separated only by hyphens, if any.\";","lastModifiedDate":"2021-07-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":" // alphanumeric and special characters","lastModifiedDate":"2018-02-09"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String ALPHANUMERIC_NO_UNDERSCORE \u003d \"[^\\\\W_]+\"; // alphanumeric characters except underscore","lastModifiedDate":"2021-07-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String LOCAL_PART_REGEX \u003d \"^\" + ALPHANUMERIC_NO_UNDERSCORE + \"([\" + SPECIAL_CHARACTERS + \"]\"","lastModifiedDate":"2021-07-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":" + ALPHANUMERIC_NO_UNDERSCORE + \")*\";","lastModifiedDate":"2021-07-20"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private static final String DOMAIN_PART_REGEX \u003d ALPHANUMERIC_NO_UNDERSCORE","lastModifiedDate":"2021-07-20"},{"lineNumber":30,"author":{"gitId":"-"},"content":" + \"(-\" + ALPHANUMERIC_NO_UNDERSCORE + \")*\";","lastModifiedDate":"2021-07-20"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String DOMAIN_LAST_PART_REGEX \u003d \"(\" + DOMAIN_PART_REGEX + \"){2,}$\"; // At least two chars","lastModifiedDate":"2021-07-20"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final String DOMAIN_REGEX \u003d \"(\" + DOMAIN_PART_REGEX + \"\\\\.)*\" + DOMAIN_LAST_PART_REGEX;","lastModifiedDate":"2021-07-20"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d LOCAL_PART_REGEX + \"@\" + DOMAIN_REGEX;","lastModifiedDate":"2021-07-20"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public final String value;","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Constructs an {@code Email}.","lastModifiedDate":"2017-05-30"},{"lineNumber":39,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * @param email A valid email address.","lastModifiedDate":"2017-05-30"},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public Email(String email) {","lastModifiedDate":"2017-05-30"},{"lineNumber":43,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-15"},{"lineNumber":44,"author":{"gitId":"chaaaaun"},"content":" AppUtil.checkArgument(isValidEmail(email), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" value \u003d email;","lastModifiedDate":"2018-08-14"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Returns if a given string is a valid email.","lastModifiedDate":"2018-04-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static boolean isValidEmail(String test) {","lastModifiedDate":"2016-08-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return value;","lastModifiedDate":"2016-08-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" if (!(other instanceof Email)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" Email otherEmail \u003d (Email) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return value.equals(otherEmail.value);","lastModifiedDate":"2023-07-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return value.hashCode();","lastModifiedDate":"2016-08-24"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"chaaaaun":4,"-":76}},{"path":"src/main/java/scrolls/elder/model/person/Name.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.model.person;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.util.AppUtil;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Represents a Person\u0027s name in the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidName(String)}","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class Name {","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2018-09-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \"Names should only contain alphanumeric characters and spaces, and it should not be blank\";","lastModifiedDate":"2018-04-04"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":16,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2017-01-16"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2017-01-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2017-01-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-16"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d \"[\\\\p{Alnum}][\\\\p{Alnum} ]*\";","lastModifiedDate":"2018-09-22"},{"lineNumber":21,"author":{"gitId":"soons1"},"content":" private static final Name NONE \u003d new Name(\"None\");","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public final String fullName;","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Constructs a {@code Name}.","lastModifiedDate":"2017-05-30"},{"lineNumber":27,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * @param name A valid name.","lastModifiedDate":"2017-05-30"},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public Name(String name) {","lastModifiedDate":"2017-05-30"},{"lineNumber":31,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-15"},{"lineNumber":32,"author":{"gitId":"chaaaaun"},"content":" AppUtil.checkArgument(isValidName(name), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" fullName \u003d name;","lastModifiedDate":"2018-08-14"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid name.","lastModifiedDate":"2018-04-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static boolean isValidName(String test) {","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"soons1"},"content":" public static Name getNone() {","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"soons1"},"content":" return NONE;","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"soons1"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" return fullName;","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" if (!(other instanceof Name)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" Name otherName \u003d (Name) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return fullName.equals(otherName.fullName);","lastModifiedDate":"2023-07-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return fullName.hashCode();","lastModifiedDate":"2016-08-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":72,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"soons1":4,"chaaaaun":4,"-":64}},{"path":"src/main/java/scrolls/elder/model/person/NameContainsKeywordsPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.model.person;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":6,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.util.StringUtil;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * Tests that a {@code Person}\u0027s {@code Name} matches any of the keywords given.","lastModifiedDate":"2018-01-10"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class NameContainsKeywordsPredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2018-01-10"},{"lineNumber":13,"author":{"gitId":"-"},"content":" private final List\u003cString\u003e keywords;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public NameContainsKeywordsPredicate(List\u003cString\u003e keywords) {","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":" this.keywords \u003d keywords;","lastModifiedDate":"2017-06-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public boolean test(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":21,"author":{"gitId":"-"},"content":" return keywords.stream()","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":" .anyMatch(keyword -\u003e StringUtil.containsWordIgnoreCase(person.getName().fullName, keyword));","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" if (!(other instanceof NameContainsKeywordsPredicate)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate otherNameContainsKeywordsPredicate \u003d (NameContainsKeywordsPredicate) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" return keywords.equals(otherNameContainsKeywordsPredicate.keywords);","lastModifiedDate":"2023-07-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this).add(\"keywords\", keywords).toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"chaaaaun":3,"-":41}},{"path":"src/main/java/scrolls/elder/model/person/Person.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.model.person;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-03-07"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-03-26"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"soons1"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.util.CollectionUtil;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.tag.Tag;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Represents a Person in the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2017-12-20"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"CJerrong"},"content":"public abstract class Person {","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19"},{"lineNumber":20,"author":{"gitId":"chaaaaun"},"content":" protected int id;","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"CJerrong"},"content":" protected final Name name;","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"CJerrong"},"content":" protected final Phone phone;","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"CJerrong"},"content":" protected final Email email;","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"gerteck"},"content":" protected final Role role;","lastModifiedDate":"2024-03-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19"},{"lineNumber":27,"author":{"gitId":"CJerrong"},"content":" protected final Address address;","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"CJerrong"},"content":" protected final Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"CJerrong"},"content":" protected final Optional\u003cName\u003e pairedWithName;","lastModifiedDate":"2024-03-22"},{"lineNumber":30,"author":{"gitId":"CJerrong"},"content":" protected final Optional\u003cInteger\u003e pairedWithID;","lastModifiedDate":"2024-03-22"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"gerteck"},"content":" public Person(Name name, Phone phone, Email email, Address address, Set\u003cTag\u003e tags, Role role,","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"CJerrong"},"content":" Optional\u003cName\u003e pairedWithName, Optional\u003cInteger\u003e pairedWithID) {","lastModifiedDate":"2024-03-22"},{"lineNumber":37,"author":{"gitId":"CJerrong"},"content":" CollectionUtil.requireAllNonNull(name, phone, email, address, tags, role, pairedWithName, pairedWithID);","lastModifiedDate":"2024-03-22"},{"lineNumber":38,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20"},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20"},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-12-20"},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":43,"author":{"gitId":"gerteck"},"content":" this.role \u003d role;","lastModifiedDate":"2024-03-15"},{"lineNumber":44,"author":{"gitId":"CJerrong"},"content":" this.pairedWithName \u003d pairedWithName;","lastModifiedDate":"2024-03-22"},{"lineNumber":45,"author":{"gitId":"CJerrong"},"content":" this.pairedWithID \u003d pairedWithID;","lastModifiedDate":"2024-03-22"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"chaaaaun"},"content":" public int getId() {","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"chaaaaun"},"content":" return id;","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"chaaaaun"},"content":" public void setId(int id) {","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"chaaaaun"},"content":" this.id \u003d id;","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2017-07-12"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2017-12-20"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public Address getAddress() {","lastModifiedDate":"2017-07-12"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return address;","lastModifiedDate":"2017-12-20"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07"},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":80,"author":{"gitId":"CJerrong"},"content":" public Optional\u003cName\u003e getPairedWithName() {","lastModifiedDate":"2024-03-22"},{"lineNumber":81,"author":{"gitId":"CJerrong"},"content":" return pairedWithName;","lastModifiedDate":"2024-03-22"},{"lineNumber":82,"author":{"gitId":"soons1"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":83,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":84,"author":{"gitId":"CJerrong"},"content":" public Optional\u003cInteger\u003e getPairedWithID() {","lastModifiedDate":"2024-03-21"},{"lineNumber":85,"author":{"gitId":"CJerrong"},"content":" return pairedWithID;","lastModifiedDate":"2024-03-21"},{"lineNumber":86,"author":{"gitId":"CJerrong"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":87,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":88,"author":{"gitId":"sdevih"},"content":" public boolean isPairPresent(Person person) {","lastModifiedDate":"2024-03-20"},{"lineNumber":89,"author":{"gitId":"CJerrong"},"content":" return person.getPairedWithName().isPresent();","lastModifiedDate":"2024-03-22"},{"lineNumber":90,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":91,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":92,"author":{"gitId":"soons1"},"content":" public boolean isPaired() {","lastModifiedDate":"2024-03-20"},{"lineNumber":93,"author":{"gitId":"CJerrong"},"content":" return pairedWithName.isPresent();","lastModifiedDate":"2024-03-22"},{"lineNumber":94,"author":{"gitId":"sdevih"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":95,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":96,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same name.","lastModifiedDate":"2020-12-18"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19"},{"lineNumber":102,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":105,"author":{"gitId":"chaaaaun"},"content":" return otherPerson !\u003d null \u0026\u0026 otherPerson.getId() \u003d\u003d this.getId();","lastModifiedDate":"2024-03-17"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":108,"author":{"gitId":"CJerrong"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":109,"author":{"gitId":"CJerrong"},"content":" * Returns true if person is a volunteer, and false if person is not a volunteer","lastModifiedDate":"2024-03-14"},{"lineNumber":110,"author":{"gitId":"CJerrong"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":111,"author":{"gitId":"CJerrong"},"content":" public abstract boolean isVolunteer();","lastModifiedDate":"2024-03-14"},{"lineNumber":112,"author":{"gitId":"gerteck"},"content":" public abstract Role getRole();","lastModifiedDate":"2024-03-15"},{"lineNumber":113,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":114,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":115,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19"},{"lineNumber":116,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":117,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":118,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":119,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":120,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10"},{"lineNumber":121,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":124,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10"},{"lineNumber":126,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":129,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10"},{"lineNumber":130,"author":{"gitId":"chaaaaun"},"content":" return id \u003d\u003d otherPerson.id","lastModifiedDate":"2024-03-17"},{"lineNumber":131,"author":{"gitId":"chaaaaun"},"content":" \u0026\u0026 name.equals(otherPerson.name)","lastModifiedDate":"2024-03-17"},{"lineNumber":132,"author":{"gitId":"-"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":133,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":134,"author":{"gitId":"-"},"content":" \u0026\u0026 address.equals(otherPerson.address)","lastModifiedDate":"2023-07-13"},{"lineNumber":135,"author":{"gitId":"gerteck"},"content":" \u0026\u0026 tags.equals(otherPerson.tags)","lastModifiedDate":"2024-03-15"},{"lineNumber":136,"author":{"gitId":"soons1"},"content":" \u0026\u0026 role.equals(otherPerson.role)","lastModifiedDate":"2024-03-17"},{"lineNumber":137,"author":{"gitId":"CJerrong"},"content":" \u0026\u0026 pairedWithName.equals(otherPerson.pairedWithName)","lastModifiedDate":"2024-03-22"},{"lineNumber":138,"author":{"gitId":"CJerrong"},"content":" \u0026\u0026 pairedWithID.equals(otherPerson.pairedWithID);","lastModifiedDate":"2024-03-22"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":141,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":142,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":143,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24"},{"lineNumber":144,"author":{"gitId":"CJerrong"},"content":" return Objects.hash(id, name, phone, email, address, tags, role, pairedWithName, pairedWithID);","lastModifiedDate":"2024-03-22"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":147,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":148,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":149,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":150,"author":{"gitId":"chaaaaun"},"content":" .add(\"id\", id)","lastModifiedDate":"2024-03-17"},{"lineNumber":151,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":156,"author":{"gitId":"gerteck"},"content":" .add(\"role\", role)","lastModifiedDate":"2024-03-16"},{"lineNumber":157,"author":{"gitId":"CJerrong"},"content":" .add(\"pairedWithName\", pairedWithName.orElse(Name.getNone()))","lastModifiedDate":"2024-03-22"},{"lineNumber":158,"author":{"gitId":"CJerrong"},"content":" .add(\"pairedWithID\", pairedWithID.orElse(-1))","lastModifiedDate":"2024-03-22"},{"lineNumber":159,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":162,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"soons1":6,"CJerrong":29,"gerteck":8,"chaaaaun":15,"-":101,"sdevih":3}},{"path":"src/main/java/scrolls/elder/model/person/Phone.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.model.person;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.util.AppUtil;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Represents a Person\u0027s phone number in the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidPhone(String)}","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class Phone {","lastModifiedDate":"2016-09-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2018-09-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \"Phone numbers should only contain numbers, and it should be at least 3 digits long\";","lastModifiedDate":"2018-04-04"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d \"\\\\d{3,}\";","lastModifiedDate":"2018-09-22"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public final String value;","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Constructs a {@code Phone}.","lastModifiedDate":"2017-05-30"},{"lineNumber":21,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * @param phone A valid phone number.","lastModifiedDate":"2017-05-30"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public Phone(String phone) {","lastModifiedDate":"2017-05-30"},{"lineNumber":25,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-15"},{"lineNumber":26,"author":{"gitId":"chaaaaun"},"content":" AppUtil.checkArgument(isValidPhone(phone), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" value \u003d phone;","lastModifiedDate":"2018-08-14"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid phone number.","lastModifiedDate":"2018-04-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static boolean isValidPhone(String test) {","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" return value;","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" if (!(other instanceof Phone)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" Phone otherPhone \u003d (Phone) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return value.equals(otherPhone.value);","lastModifiedDate":"2023-07-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return value.hashCode();","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"chaaaaun":4,"-":58}},{"path":"src/main/java/scrolls/elder/model/person/Role.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"gerteck"},"content":"package scrolls.elder.model.person;","lastModifiedDate":"2024-03-15"},{"lineNumber":2,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":3,"author":{"gitId":"gerteck"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-15"},{"lineNumber":4,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":5,"author":{"gitId":"gerteck"},"content":"import scrolls.elder.commons.util.AppUtil;","lastModifiedDate":"2024-03-15"},{"lineNumber":6,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":7,"author":{"gitId":"gerteck"},"content":"/**","lastModifiedDate":"2024-03-15"},{"lineNumber":8,"author":{"gitId":"gerteck"},"content":" * Represents a Person\u0027s name in the address book.","lastModifiedDate":"2024-03-15"},{"lineNumber":9,"author":{"gitId":"gerteck"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidRole(String)}","lastModifiedDate":"2024-03-15"},{"lineNumber":10,"author":{"gitId":"gerteck"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":11,"author":{"gitId":"gerteck"},"content":"public class Role {","lastModifiedDate":"2024-03-15"},{"lineNumber":12,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":13,"author":{"gitId":"gerteck"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-15"},{"lineNumber":14,"author":{"gitId":"gerteck"},"content":" \"Role should only be either \u0027volunteer\u0027 or befriendee\u0027, and it should not be blank.\";","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":16,"author":{"gitId":"gerteck"},"content":" /*","lastModifiedDate":"2024-03-15"},{"lineNumber":17,"author":{"gitId":"gerteck"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2024-03-15"},{"lineNumber":18,"author":{"gitId":"gerteck"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2024-03-15"},{"lineNumber":19,"author":{"gitId":"gerteck"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":20,"author":{"gitId":"gerteck"},"content":" public static final String VALIDATION_REGEX \u003d \"^befriendee|volunteer$\";","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":22,"author":{"gitId":"gerteck"},"content":" public final String value;","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":24,"author":{"gitId":"gerteck"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":25,"author":{"gitId":"gerteck"},"content":" * Constructs a {@code Name}.","lastModifiedDate":"2024-03-15"},{"lineNumber":26,"author":{"gitId":"gerteck"},"content":" *","lastModifiedDate":"2024-03-15"},{"lineNumber":27,"author":{"gitId":"gerteck"},"content":" * @param role A valid name.","lastModifiedDate":"2024-03-15"},{"lineNumber":28,"author":{"gitId":"gerteck"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":29,"author":{"gitId":"gerteck"},"content":" public Role(String role) {","lastModifiedDate":"2024-03-15"},{"lineNumber":30,"author":{"gitId":"gerteck"},"content":" requireNonNull(role);","lastModifiedDate":"2024-03-15"},{"lineNumber":31,"author":{"gitId":"gerteck"},"content":" AppUtil.checkArgument(isValidRole(role), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-15"},{"lineNumber":32,"author":{"gitId":"gerteck"},"content":" this.value \u003d role.toLowerCase();","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":34,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":35,"author":{"gitId":"gerteck"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":36,"author":{"gitId":"gerteck"},"content":" * Returns true if a given string is a valid name.","lastModifiedDate":"2024-03-15"},{"lineNumber":37,"author":{"gitId":"gerteck"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":38,"author":{"gitId":"gerteck"},"content":" public static boolean isValidRole(String test) {","lastModifiedDate":"2024-03-15"},{"lineNumber":39,"author":{"gitId":"gerteck"},"content":" return test.toLowerCase().matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":41,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":42,"author":{"gitId":"gerteck"},"content":" public boolean isVolunteer() {","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"gerteck"},"content":" return this.value.equals(\"volunteer\");","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":45,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":46,"author":{"gitId":"gerteck"},"content":" public boolean isBefriendee() {","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"gerteck"},"content":" return this.value.equals(\"befriendee\");","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":49,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":50,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":51,"author":{"gitId":"gerteck"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":52,"author":{"gitId":"gerteck"},"content":" public String toString() {","lastModifiedDate":"2024-03-15"},{"lineNumber":53,"author":{"gitId":"gerteck"},"content":" return value;","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":55,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":56,"author":{"gitId":"gerteck"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":57,"author":{"gitId":"gerteck"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-15"},{"lineNumber":58,"author":{"gitId":"gerteck"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-15"},{"lineNumber":59,"author":{"gitId":"gerteck"},"content":" return true;","lastModifiedDate":"2024-03-15"},{"lineNumber":60,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":61,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":62,"author":{"gitId":"gerteck"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-15"},{"lineNumber":63,"author":{"gitId":"gerteck"},"content":" if (!(other instanceof Role)) {","lastModifiedDate":"2024-03-15"},{"lineNumber":64,"author":{"gitId":"gerteck"},"content":" return false;","lastModifiedDate":"2024-03-15"},{"lineNumber":65,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":66,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":67,"author":{"gitId":"gerteck"},"content":" Role otherName \u003d (Role) other;","lastModifiedDate":"2024-03-15"},{"lineNumber":68,"author":{"gitId":"gerteck"},"content":" return value.equals(otherName.value);","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":70,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":71,"author":{"gitId":"gerteck"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":72,"author":{"gitId":"gerteck"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-15"},{"lineNumber":73,"author":{"gitId":"gerteck"},"content":" return value.hashCode();","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":75,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":76,"author":{"gitId":"gerteck"},"content":"}","lastModifiedDate":"2024-03-15"}],"authorContributionMap":{"gerteck":76}},{"path":"src/main/java/scrolls/elder/model/person/UniquePersonList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.model.person;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Iterator;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"CJerrong"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.util.CollectionUtil;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.exceptions.PersonNotFoundException;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * A list of persons that enforces uniqueness between its elements and does not allow nulls.","lastModifiedDate":"2016-09-22"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * A person is considered unique by comparing using {@code Person#isSamePerson(Person)}. As such, adding and updating of","lastModifiedDate":"2018-04-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * persons uses Person#isSamePerson(Person) for equality so as to ensure that the person being added or updated is","lastModifiedDate":"2018-04-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * unique in terms of identity in the UniquePersonList. However, the removal of a person uses Person#equals(Object) so","lastModifiedDate":"2018-04-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * as to ensure that the person with exactly the same fields will be removed.","lastModifiedDate":"2018-04-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Supports a minimal set of list operations.","lastModifiedDate":"2016-09-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @see Person#isSamePerson(Person)","lastModifiedDate":"2018-04-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class UniquePersonList implements Iterable\u003cPerson\u003e {","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final ObservableList\u003cPerson\u003e internalList \u003d FXCollections.observableArrayList();","lastModifiedDate":"2016-10-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private final ObservableList\u003cPerson\u003e internalUnmodifiableList \u003d","lastModifiedDate":"2018-12-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":" FXCollections.unmodifiableObservableList(internalList);","lastModifiedDate":"2018-12-09"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Returns true if the list contains an equivalent person as the given argument.","lastModifiedDate":"2016-09-22"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public boolean contains(Person toCheck) {","lastModifiedDate":"2018-01-10"},{"lineNumber":36,"author":{"gitId":"-"},"content":" requireNonNull(toCheck);","lastModifiedDate":"2017-05-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":" return internalList.stream().anyMatch(toCheck::isSamePerson);","lastModifiedDate":"2018-04-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Adds a person to the list.","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * The person must not already exist in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void add(Person toAdd) {","lastModifiedDate":"2018-08-07"},{"lineNumber":45,"author":{"gitId":"-"},"content":" requireNonNull(toAdd);","lastModifiedDate":"2017-05-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" if (contains(toAdd)) {","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" internalList.add(toAdd);","lastModifiedDate":"2018-01-10"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Replaces the person {@code target} in the list with {@code editedPerson}.","lastModifiedDate":"2017-06-07"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * {@code target} must exist in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * The person identity of {@code editedPerson} must not be the same as another existing person in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-07"},{"lineNumber":58,"author":{"gitId":"chaaaaun"},"content":" CollectionUtil.requireAllNonNull(target, editedPerson);","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" int index \u003d internalList.indexOf(target);","lastModifiedDate":"2017-06-07"},{"lineNumber":61,"author":{"gitId":"-"},"content":" if (index \u003d\u003d -1) {","lastModifiedDate":"2017-06-07"},{"lineNumber":62,"author":{"gitId":"-"},"content":" throw new PersonNotFoundException();","lastModifiedDate":"2017-06-07"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-07"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-07"},{"lineNumber":65,"author":{"gitId":"-"},"content":" if (!target.isSamePerson(editedPerson) \u0026\u0026 contains(editedPerson)) {","lastModifiedDate":"2018-04-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2016-12-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" internalList.set(index, editedPerson);","lastModifiedDate":"2018-01-10"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Removes the equivalent person from the list.","lastModifiedDate":"2016-08-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * The person must exist in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void remove(Person toRemove) {","lastModifiedDate":"2018-08-07"},{"lineNumber":77,"author":{"gitId":"-"},"content":" requireNonNull(toRemove);","lastModifiedDate":"2017-05-15"},{"lineNumber":78,"author":{"gitId":"-"},"content":" if (!internalList.remove(toRemove)) {","lastModifiedDate":"2018-02-28"},{"lineNumber":79,"author":{"gitId":"-"},"content":" throw new PersonNotFoundException();","lastModifiedDate":"2016-08-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void setPersons(UniquePersonList replacement) {","lastModifiedDate":"2016-10-19"},{"lineNumber":84,"author":{"gitId":"-"},"content":" requireNonNull(replacement);","lastModifiedDate":"2018-08-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":" internalList.setAll(replacement.internalList);","lastModifiedDate":"2018-08-14"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":88,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * Replaces the contents of this list with {@code persons}.","lastModifiedDate":"2018-08-07"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * {@code persons} must not contain duplicate persons.","lastModifiedDate":"2018-08-07"},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void setPersons(List\u003cPerson\u003e persons) {","lastModifiedDate":"2018-08-07"},{"lineNumber":93,"author":{"gitId":"chaaaaun"},"content":" CollectionUtil.requireAllNonNull(persons);","lastModifiedDate":"2024-03-12"},{"lineNumber":94,"author":{"gitId":"-"},"content":" if (!personsAreUnique(persons)) {","lastModifiedDate":"2018-04-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2018-01-21"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-21"},{"lineNumber":98,"author":{"gitId":"-"},"content":" internalList.setAll(persons);","lastModifiedDate":"2018-08-14"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":101,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-09-01"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * Returns the backing list as an unmodifiable {@code ObservableList}.","lastModifiedDate":"2017-09-01"},{"lineNumber":103,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-09-01"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e asUnmodifiableObservableList() {","lastModifiedDate":"2018-04-05"},{"lineNumber":105,"author":{"gitId":"-"},"content":" return internalUnmodifiableList;","lastModifiedDate":"2018-12-09"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":107,"author":{"gitId":"CJerrong"},"content":" public Person getPersonFromID(int i) {","lastModifiedDate":"2024-03-21"},{"lineNumber":108,"author":{"gitId":"CJerrong"},"content":" FilteredList\u003cPerson\u003e listByID \u003d internalList.filtered(person -\u003e person.getId() \u003d\u003d i);","lastModifiedDate":"2024-03-22"},{"lineNumber":109,"author":{"gitId":"CJerrong"},"content":" // TODO exception for duplicate id","lastModifiedDate":"2024-03-21"},{"lineNumber":110,"author":{"gitId":"CJerrong"},"content":" if (listByID.size() !\u003d 1) {","lastModifiedDate":"2024-03-21"},{"lineNumber":111,"author":{"gitId":"CJerrong"},"content":" System.out.println(\"List has duplicate id, should not be the case\");","lastModifiedDate":"2024-03-21"},{"lineNumber":112,"author":{"gitId":"CJerrong"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":113,"author":{"gitId":"CJerrong"},"content":" return listByID.get(0);","lastModifiedDate":"2024-03-21"},{"lineNumber":114,"author":{"gitId":"CJerrong"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":116,"author":{"gitId":"-"},"content":" public Iterator\u003cPerson\u003e iterator() {","lastModifiedDate":"2016-08-24"},{"lineNumber":117,"author":{"gitId":"-"},"content":" return internalList.iterator();","lastModifiedDate":"2016-08-24"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":120,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":121,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-21"},{"lineNumber":122,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":123,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":126,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":127,"author":{"gitId":"-"},"content":" if (!(other instanceof UniquePersonList)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":128,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":131,"author":{"gitId":"-"},"content":" UniquePersonList otherUniquePersonList \u003d (UniquePersonList) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":132,"author":{"gitId":"-"},"content":" return internalList.equals(otherUniquePersonList.internalList);","lastModifiedDate":"2023-07-13"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":136,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-21"},{"lineNumber":137,"author":{"gitId":"-"},"content":" return internalList.hashCode();","lastModifiedDate":"2016-09-21"},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":140,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-24"},{"lineNumber":141,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-24"},{"lineNumber":142,"author":{"gitId":"-"},"content":" return internalList.toString();","lastModifiedDate":"2019-02-24"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-24"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-24"},{"lineNumber":145,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":146,"author":{"gitId":"-"},"content":" * Returns true if {@code persons} contains only unique persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":147,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":148,"author":{"gitId":"-"},"content":" private boolean personsAreUnique(List\u003cPerson\u003e persons) {","lastModifiedDate":"2018-04-19"},{"lineNumber":149,"author":{"gitId":"-"},"content":" for (int i \u003d 0; i \u003c persons.size() - 1; i++) {","lastModifiedDate":"2018-04-19"},{"lineNumber":150,"author":{"gitId":"-"},"content":" for (int j \u003d i + 1; j \u003c persons.size(); j++) {","lastModifiedDate":"2018-04-19"},{"lineNumber":151,"author":{"gitId":"-"},"content":" if (persons.get(i).isSamePerson(persons.get(j))) {","lastModifiedDate":"2018-04-19"},{"lineNumber":152,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-04-19"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":156,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19"},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":158,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"CJerrong":9,"chaaaaun":6,"-":143}},{"path":"src/main/java/scrolls/elder/model/person/Volunteer.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"CJerrong"},"content":"package scrolls.elder.model.person;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"gerteck"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"CJerrong"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-15"},{"lineNumber":4,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"CJerrong"},"content":"import scrolls.elder.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-15"},{"lineNumber":6,"author":{"gitId":"CJerrong"},"content":"import scrolls.elder.model.tag.Tag;","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"CJerrong"},"content":"/**","lastModifiedDate":"2024-03-15"},{"lineNumber":9,"author":{"gitId":"CJerrong"},"content":" * Represents a Volunteer in the address book.","lastModifiedDate":"2024-03-15"},{"lineNumber":10,"author":{"gitId":"CJerrong"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2024-03-15"},{"lineNumber":11,"author":{"gitId":"CJerrong"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":12,"author":{"gitId":"CJerrong"},"content":"public class Volunteer extends Person {","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"CJerrong"},"content":" public Volunteer(Name name, Phone phone, Email email, Address address, Set\u003cTag\u003e tags,","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"CJerrong"},"content":" Optional\u003cName\u003e pairedWithName, Optional\u003cInteger\u003e pairedWithID) {","lastModifiedDate":"2024-03-22"},{"lineNumber":15,"author":{"gitId":"CJerrong"},"content":" super(name, phone, email, address, tags, new Role(\"volunteer\"), pairedWithName, pairedWithID);","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"CJerrong"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"CJerrong"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"CJerrong"},"content":" public boolean isVolunteer() {","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"CJerrong"},"content":" return true;","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"CJerrong"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"CJerrong"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":24,"author":{"gitId":"gerteck"},"content":" public Role getRole() {","lastModifiedDate":"2024-03-15"},{"lineNumber":25,"author":{"gitId":"gerteck"},"content":" return this.role;","lastModifiedDate":"2024-03-15"},{"lineNumber":26,"author":{"gitId":"CJerrong"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":27,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":28,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":29,"author":{"gitId":"CJerrong"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"CJerrong"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"CJerrong"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"CJerrong"},"content":" return true;","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"CJerrong"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"CJerrong"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"CJerrong"},"content":" if (!(other instanceof Volunteer)) {","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"CJerrong"},"content":" return false;","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"CJerrong"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"CJerrong"},"content":" Volunteer otherVolunteer \u003d (Volunteer) other;","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"CJerrong"},"content":" return name.equals(otherVolunteer.name)","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"CJerrong"},"content":" \u0026\u0026 phone.equals(otherVolunteer.phone)","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"CJerrong"},"content":" \u0026\u0026 email.equals(otherVolunteer.email)","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"CJerrong"},"content":" \u0026\u0026 address.equals(otherVolunteer.address)","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"soons1"},"content":" \u0026\u0026 tags.equals(otherVolunteer.tags)","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"CJerrong"},"content":" \u0026\u0026 pairedWithName.equals(otherVolunteer.pairedWithName)","lastModifiedDate":"2024-03-22"},{"lineNumber":47,"author":{"gitId":"CJerrong"},"content":" \u0026\u0026 pairedWithID.equals(otherVolunteer.pairedWithID);","lastModifiedDate":"2024-03-22"},{"lineNumber":48,"author":{"gitId":"CJerrong"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":49,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":50,"author":{"gitId":"CJerrong"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":51,"author":{"gitId":"CJerrong"},"content":" public String toString() {","lastModifiedDate":"2024-03-15"},{"lineNumber":52,"author":{"gitId":"CJerrong"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-15"},{"lineNumber":53,"author":{"gitId":"CJerrong"},"content":" .add(\"name\", name)","lastModifiedDate":"2024-03-15"},{"lineNumber":54,"author":{"gitId":"CJerrong"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2024-03-15"},{"lineNumber":55,"author":{"gitId":"CJerrong"},"content":" .add(\"email\", email)","lastModifiedDate":"2024-03-15"},{"lineNumber":56,"author":{"gitId":"CJerrong"},"content":" .add(\"address\", address)","lastModifiedDate":"2024-03-15"},{"lineNumber":57,"author":{"gitId":"CJerrong"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2024-03-15"},{"lineNumber":58,"author":{"gitId":"gerteck"},"content":" .add(\"role\", role)","lastModifiedDate":"2024-03-15"},{"lineNumber":59,"author":{"gitId":"CJerrong"},"content":" .add(\"pairedWithName\", pairedWithName.orElse(Name.getNone()))","lastModifiedDate":"2024-03-22"},{"lineNumber":60,"author":{"gitId":"CJerrong"},"content":" .add(\"pairedWithID\", pairedWithID.orElse(-1))","lastModifiedDate":"2024-03-22"},{"lineNumber":61,"author":{"gitId":"CJerrong"},"content":" .toString();","lastModifiedDate":"2024-03-15"},{"lineNumber":62,"author":{"gitId":"CJerrong"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":63,"author":{"gitId":"CJerrong"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"CJerrong":58,"soons1":1,"gerteck":4}},{"path":"src/main/java/scrolls/elder/model/person/exceptions/DuplicatePersonException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.model.person.exceptions;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-09"},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Signals that the operation will result in duplicate Persons (Persons are considered duplicates if they have the same","lastModifiedDate":"2018-04-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":" * identity).","lastModifiedDate":"2018-04-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-09"},{"lineNumber":7,"author":{"gitId":"-"},"content":"public class DuplicatePersonException extends RuntimeException {","lastModifiedDate":"2018-08-07"},{"lineNumber":8,"author":{"gitId":"-"},"content":" public DuplicatePersonException() {","lastModifiedDate":"2017-06-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":" super(\"Operation would result in duplicate persons\");","lastModifiedDate":"2017-06-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-09"}],"authorContributionMap":{"chaaaaun":1,"-":10}},{"path":"src/main/java/scrolls/elder/model/person/exceptions/PersonNotFoundException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.model.person.exceptions;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-09"},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Signals that the operation is unable to find the specified person.","lastModifiedDate":"2017-06-09"},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-09"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class PersonNotFoundException extends RuntimeException {}","lastModifiedDate":"2018-08-07"}],"authorContributionMap":{"chaaaaun":1,"-":5}},{"path":"src/main/java/scrolls/elder/model/tag/Tag.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.model.tag;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.util.AppUtil;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Represents a Tag in the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * Guarantees: immutable; name is valid as declared in {@link #isValidTagName(String)}","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class Tag {","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Tags names should be alphanumeric\";","lastModifiedDate":"2018-09-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d \"\\\\p{Alnum}+\";","lastModifiedDate":"2018-09-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public final String tagName;","lastModifiedDate":"2016-10-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Constructs a {@code Tag}.","lastModifiedDate":"2017-05-30"},{"lineNumber":20,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * @param tagName A valid tag name.","lastModifiedDate":"2017-05-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public Tag(String tagName) {","lastModifiedDate":"2017-05-30"},{"lineNumber":24,"author":{"gitId":"-"},"content":" requireNonNull(tagName);","lastModifiedDate":"2017-05-30"},{"lineNumber":25,"author":{"gitId":"chaaaaun"},"content":" AppUtil.checkArgument(isValidTagName(tagName), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" this.tagName \u003d tagName;","lastModifiedDate":"2017-05-30"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid tag name.","lastModifiedDate":"2016-09-22"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static boolean isValidTagName(String test) {","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" if (!(other instanceof Tag)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" Tag otherTag \u003d (Tag) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" return tagName.equals(otherTag.tagName);","lastModifiedDate":"2023-07-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return tagName.hashCode();","lastModifiedDate":"2016-08-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Format state as text for viewing.","lastModifiedDate":"2016-08-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return \u0027[\u0027 + tagName + \u0027]\u0027;","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"chaaaaun":4,"-":59}},{"path":"src/main/java/scrolls/elder/model/util/SampleDataUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.model.util;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21"},{"lineNumber":4,"author":{"gitId":"gerteck"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.AddressBook;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"CJerrong"},"content":"import scrolls.elder.model.person.Address;","lastModifiedDate":"2024-03-15"},{"lineNumber":11,"author":{"gitId":"CJerrong"},"content":"import scrolls.elder.model.person.Befriendee;","lastModifiedDate":"2024-03-15"},{"lineNumber":12,"author":{"gitId":"CJerrong"},"content":"import scrolls.elder.model.person.Email;","lastModifiedDate":"2024-03-15"},{"lineNumber":13,"author":{"gitId":"CJerrong"},"content":"import scrolls.elder.model.person.Name;","lastModifiedDate":"2024-03-15"},{"lineNumber":14,"author":{"gitId":"CJerrong"},"content":"import scrolls.elder.model.person.Person;","lastModifiedDate":"2024-03-15"},{"lineNumber":15,"author":{"gitId":"CJerrong"},"content":"import scrolls.elder.model.person.Phone;","lastModifiedDate":"2024-03-15"},{"lineNumber":16,"author":{"gitId":"CJerrong"},"content":"import scrolls.elder.model.person.Volunteer;","lastModifiedDate":"2024-03-15"},{"lineNumber":17,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.tag.Tag;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20"},{"lineNumber":23,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"soons1"},"content":" private static final Optional\u003cName\u003e pairedWithNone \u003d Optional.empty();","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"soons1"},"content":" private static final Optional\u003cInteger\u003e pairedWithNoID \u003d Optional.empty();","lastModifiedDate":"2024-03-22"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static Person[] getSamplePersons() {","lastModifiedDate":"2016-12-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" return new Person[] {","lastModifiedDate":"2016-12-20"},{"lineNumber":28,"author":{"gitId":"CJerrong"},"content":" new Volunteer(new Name(\"Alex Yeoh\"), new Phone(\"87438807\"), new Email(\"alexyeoh@example.com\"),","lastModifiedDate":"2024-03-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":" new Address(\"Blk 30 Geylang Street 29, #06-40\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":30,"author":{"gitId":"CJerrong"},"content":" getTagSet(\"friends\"), pairedWithNone, pairedWithNoID),","lastModifiedDate":"2024-03-22"},{"lineNumber":31,"author":{"gitId":"CJerrong"},"content":" new Volunteer(new Name(\"Bernice Yu\"), new Phone(\"99272758\"), new Email(\"berniceyu@example.com\"),","lastModifiedDate":"2024-03-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":" new Address(\"Blk 30 Lorong 3 Serangoon Gardens, #07-18\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":33,"author":{"gitId":"CJerrong"},"content":" getTagSet(\"colleagues\", \"friends\"), pairedWithNone, pairedWithNoID),","lastModifiedDate":"2024-03-22"},{"lineNumber":34,"author":{"gitId":"CJerrong"},"content":" new Volunteer(new Name(\"Charlotte Oliveiro\"), new Phone(\"93210283\"), new Email(\"charlotte@example.com\"),","lastModifiedDate":"2024-03-15"},{"lineNumber":35,"author":{"gitId":"-"},"content":" new Address(\"Blk 11 Ang Mo Kio Street 74, #11-04\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":36,"author":{"gitId":"CJerrong"},"content":" getTagSet(\"neighbours\"), pairedWithNone, pairedWithNoID),","lastModifiedDate":"2024-03-22"},{"lineNumber":37,"author":{"gitId":"CJerrong"},"content":" new Befriendee(new Name(\"David Li\"), new Phone(\"91031282\"), new Email(\"lidavid@example.com\"),","lastModifiedDate":"2024-03-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":" new Address(\"Blk 436 Serangoon Gardens Street 26, #16-43\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":39,"author":{"gitId":"CJerrong"},"content":" getTagSet(\"family\"), pairedWithNone, pairedWithNoID),","lastModifiedDate":"2024-03-22"},{"lineNumber":40,"author":{"gitId":"CJerrong"},"content":" new Befriendee(new Name(\"Irfan Ibrahim\"), new Phone(\"92492021\"), new Email(\"irfan@example.com\"),","lastModifiedDate":"2024-03-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":" new Address(\"Blk 47 Tampines Street 20, #17-35\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":42,"author":{"gitId":"CJerrong"},"content":" getTagSet(\"classmates\"), pairedWithNone, pairedWithNoID),","lastModifiedDate":"2024-03-22"},{"lineNumber":43,"author":{"gitId":"CJerrong"},"content":" new Befriendee(new Name(\"Roy Balakrishnan\"), new Phone(\"92624417\"), new Email(\"royb@example.com\"),","lastModifiedDate":"2024-03-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" new Address(\"Blk 45 Aljunied Street 85, #11-31\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":45,"author":{"gitId":"CJerrong"},"content":" getTagSet(\"colleagues\"), pairedWithNone, pairedWithNoID)","lastModifiedDate":"2024-03-22"},{"lineNumber":46,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20"},{"lineNumber":50,"author":{"gitId":"chaaaaun"},"content":" AddressBook sampleAb \u003d new AddressBook(0);","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20"},{"lineNumber":52,"author":{"gitId":"chaaaaun"},"content":" samplePerson.setId(sampleAb.getGlobalId());","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14"},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2017-05-30"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2018-01-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20"}],"authorContributionMap":{"CJerrong":19,"soons1":2,"gerteck":2,"chaaaaun":6,"-":38}},{"path":"src/main/java/scrolls/elder/storage/AddressBookStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.storage;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2016-09-24"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-09-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":7,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.AddressBook;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-24"},{"lineNumber":12,"author":{"gitId":"chaaaaun"},"content":" * Represents a storage for {@link AddressBook}.","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public interface AddressBookStorage {","lastModifiedDate":"2016-09-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Returns the file path of the data file.","lastModifiedDate":"2016-09-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-04-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Returns AddressBook data as a {@link ReadOnlyAddressBook}.","lastModifiedDate":"2016-09-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Returns {@code Optional.empty()} if storage file is not found.","lastModifiedDate":"2016-09-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * @throws DataLoadingException if loading the data from storage failed.","lastModifiedDate":"2023-06-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" Optional\u003cReadOnlyAddressBook\u003e readAddressBook() throws DataLoadingException;","lastModifiedDate":"2023-06-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-01"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * @see #getAddressBookFilePath()","lastModifiedDate":"2016-10-01"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":" Optional\u003cReadOnlyAddressBook\u003e readAddressBook(Path filePath) throws DataLoadingException;","lastModifiedDate":"2023-06-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Saves the given {@link ReadOnlyAddressBook} to the storage.","lastModifiedDate":"2016-09-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * @param addressBook cannot be null.","lastModifiedDate":"2016-09-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * @throws IOException if there was any problem writing to the file.","lastModifiedDate":"2016-09-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" void saveAddressBook(ReadOnlyAddressBook addressBook) throws IOException;","lastModifiedDate":"2016-09-28"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-01"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * @see #saveAddressBook(ReadOnlyAddressBook)","lastModifiedDate":"2016-10-01"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-01"},{"lineNumber":44,"author":{"gitId":"-"},"content":" void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath) throws IOException;","lastModifiedDate":"2018-04-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01"},{"lineNumber":46,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-24"}],"authorContributionMap":{"chaaaaun":5,"-":41}},{"path":"src/main/java/scrolls/elder/storage/JsonAdaptedPerson.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.storage;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"sdevih"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":13,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"gerteck"},"content":"import scrolls.elder.model.person.Address;","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"gerteck"},"content":"import scrolls.elder.model.person.Befriendee;","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"gerteck"},"content":"import scrolls.elder.model.person.Email;","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"gerteck"},"content":"import scrolls.elder.model.person.Name;","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"gerteck"},"content":"import scrolls.elder.model.person.Person;","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"gerteck"},"content":"import scrolls.elder.model.person.Phone;","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"gerteck"},"content":"import scrolls.elder.model.person.Role;","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"gerteck"},"content":"import scrolls.elder.model.person.Volunteer;","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.tag.Tag;","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Jackson-friendly version of {@link Person}.","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":"class JsonAdaptedPerson {","lastModifiedDate":"2018-12-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"chaaaaun"},"content":" private final String id;","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final String name;","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final String phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private final String address;","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"gerteck"},"content":" private final String role;","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedTag\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-01-09"},{"lineNumber":38,"author":{"gitId":"CJerrong"},"content":" private final String pairedWithName;","lastModifiedDate":"2024-03-22"},{"lineNumber":39,"author":{"gitId":"CJerrong"},"content":" private final String pairedWithID;","lastModifiedDate":"2024-03-22"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given person details.","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"chaaaaun"},"content":" public JsonAdaptedPerson(","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"chaaaaun"},"content":" @JsonProperty(\"id\") String id,","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"chaaaaun"},"content":" @JsonProperty(\"name\") String name,","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"chaaaaun"},"content":" @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"gerteck"},"content":" @JsonProperty(\"email\") String email,","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"gerteck"},"content":" @JsonProperty(\"address\") String address,","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"gerteck"},"content":" @JsonProperty(\"role\") String role,","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"sdevih"},"content":" @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags,","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"CJerrong"},"content":" @JsonProperty(\"pairedWithName\") String pairedWithName,","lastModifiedDate":"2024-03-22"},{"lineNumber":54,"author":{"gitId":"CJerrong"},"content":" @JsonProperty(\"pairedWithID\") String pairedWithID) {","lastModifiedDate":"2024-03-22"},{"lineNumber":55,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"chaaaaun"},"content":" this.id \u003d id;","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2018-08-13"},{"lineNumber":61,"author":{"gitId":"gerteck"},"content":" this.role \u003d role;","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"CJerrong"},"content":" this.pairedWithName \u003d pairedWithName;","lastModifiedDate":"2024-03-22"},{"lineNumber":63,"author":{"gitId":"-"},"content":" if (tags !\u003d null) {","lastModifiedDate":"2023-01-09"},{"lineNumber":64,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2023-01-09"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":66,"author":{"gitId":"CJerrong"},"content":" this.pairedWithID \u003d pairedWithID;","lastModifiedDate":"2024-03-22"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"chaaaaun"},"content":" id \u003d String.valueOf(source.getId());","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" phone \u003d source.getPhone().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" address \u003d source.getAddress().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"gerteck"},"content":" role \u003d source.getRole().value;","lastModifiedDate":"2024-03-16"},{"lineNumber":79,"author":{"gitId":"-"},"content":" tags.addAll(source.getTags().stream()","lastModifiedDate":"2023-01-09"},{"lineNumber":80,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2018-08-13"},{"lineNumber":82,"author":{"gitId":"CJerrong"},"content":" pairedWithName \u003d source.getPairedWithName().map(p -\u003e p.fullName).orElse(null);","lastModifiedDate":"2024-03-22"},{"lineNumber":83,"author":{"gitId":"CJerrong"},"content":" pairedWithID \u003d source.getPairedWithID().map(p -\u003e p.toString()).orElse(null);","lastModifiedDate":"2024-03-22"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" final List\u003cTag\u003e personTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":" for (JsonAdaptedTag tag : tags) {","lastModifiedDate":"2023-01-09"},{"lineNumber":94,"author":{"gitId":"-"},"content":" personTags.add(tag.toModelType());","lastModifiedDate":"2018-08-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"chaaaaun"},"content":" if (id \u003d\u003d null) {","lastModifiedDate":"2024-03-17"},{"lineNumber":98,"author":{"gitId":"chaaaaun"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, int.class.getSimpleName()));","lastModifiedDate":"2024-03-17"},{"lineNumber":99,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":100,"author":{"gitId":"chaaaaun"},"content":" final int modelId \u003d Integer.parseInt(id);","lastModifiedDate":"2024-03-17"},{"lineNumber":101,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":102,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":119,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":121,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":122,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":124,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":126,"author":{"gitId":"-"},"content":" if (address \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":127,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":129,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(address)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":130,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":132,"author":{"gitId":"-"},"content":" final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2018-08-13"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":134,"author":{"gitId":"CJerrong"},"content":" final Optional\u003cName\u003e modelPairedWithName;","lastModifiedDate":"2024-03-22"},{"lineNumber":135,"author":{"gitId":"CJerrong"},"content":" modelPairedWithName \u003d Optional.ofNullable(pairedWithName).map(Name::new);","lastModifiedDate":"2024-03-22"},{"lineNumber":136,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":137,"author":{"gitId":"CJerrong"},"content":" final Optional\u003cInteger\u003e modelPairedWithID;","lastModifiedDate":"2024-03-22"},{"lineNumber":138,"author":{"gitId":"CJerrong"},"content":" modelPairedWithID \u003d Optional.ofNullable(pairedWithID).map(i -\u003e Integer.parseInt(i));","lastModifiedDate":"2024-03-22"},{"lineNumber":139,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":140,"author":{"gitId":"gerteck"},"content":" Role modelRole;","lastModifiedDate":"2024-03-16"},{"lineNumber":141,"author":{"gitId":"gerteck"},"content":" if (role \u003d\u003d null) {","lastModifiedDate":"2024-03-16"},{"lineNumber":142,"author":{"gitId":"gerteck"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Role.class.getSimpleName()));","lastModifiedDate":"2024-03-16"},{"lineNumber":143,"author":{"gitId":"gerteck"},"content":" } else if (!Role.isValidRole(role)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":144,"author":{"gitId":"gerteck"},"content":" throw new IllegalValueException(Role.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-16"},{"lineNumber":145,"author":{"gitId":"gerteck"},"content":" } else {","lastModifiedDate":"2024-03-16"},{"lineNumber":146,"author":{"gitId":"gerteck"},"content":" modelRole \u003d new Role(role);","lastModifiedDate":"2024-03-16"},{"lineNumber":147,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":148,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(personTags);","lastModifiedDate":"2018-08-13"},{"lineNumber":149,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":150,"author":{"gitId":"chaaaaun"},"content":" Person p;","lastModifiedDate":"2024-03-21"},{"lineNumber":151,"author":{"gitId":"gerteck"},"content":" if (modelRole.isVolunteer()) {","lastModifiedDate":"2024-03-16"},{"lineNumber":152,"author":{"gitId":"CJerrong"},"content":" p \u003d new Volunteer(modelName, modelPhone, modelEmail, modelAddress, modelTags,","lastModifiedDate":"2024-03-22"},{"lineNumber":153,"author":{"gitId":"CJerrong"},"content":" modelPairedWithName, modelPairedWithID);","lastModifiedDate":"2024-03-22"},{"lineNumber":154,"author":{"gitId":"gerteck"},"content":" } else {","lastModifiedDate":"2024-03-16"},{"lineNumber":155,"author":{"gitId":"gerteck"},"content":" assert modelRole.isBefriendee();","lastModifiedDate":"2024-03-16"},{"lineNumber":156,"author":{"gitId":"CJerrong"},"content":" p \u003d new Befriendee(modelName, modelPhone, modelEmail, modelAddress, modelTags,","lastModifiedDate":"2024-03-22"},{"lineNumber":157,"author":{"gitId":"CJerrong"},"content":" modelPairedWithName, modelPairedWithID);","lastModifiedDate":"2024-03-22"},{"lineNumber":158,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":159,"author":{"gitId":"chaaaaun"},"content":" p.setId(modelId);","lastModifiedDate":"2024-03-17"},{"lineNumber":160,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":161,"author":{"gitId":"chaaaaun"},"content":" return p;","lastModifiedDate":"2024-03-21"},{"lineNumber":162,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":164,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"CJerrong":17,"gerteck":28,"chaaaaun":19,"-":97,"sdevih":3}},{"path":"src/main/java/scrolls/elder/storage/JsonAdaptedTag.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.storage;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonValue;","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.tag.Tag;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * Jackson-friendly version of {@link Tag}.","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"class JsonAdaptedTag {","lastModifiedDate":"2018-12-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":" private final String tagName;","lastModifiedDate":"2018-08-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonAdaptedTag} with the given {@code tagName}.","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public JsonAdaptedTag(String tagName) {","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":" this.tagName \u003d tagName;","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Converts a given {@code Tag} into this class for Jackson use.","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public JsonAdaptedTag(Tag source) {","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" tagName \u003d source.tagName;","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @JsonValue","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public String getTagName() {","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return tagName;","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted tag object into the model\u0027s {@code Tag} object.","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted tag.","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public Tag toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(tagName)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" return new Tag(tagName);","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"chaaaaun":3,"-":45}},{"path":"src/main/java/scrolls/elder/storage/JsonAddressBookStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.storage;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.core.LogsCenter;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.util.FileUtil;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.util.JsonUtil;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * A class to access AddressBook data stored as a json file on the hard disk.","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class JsonAddressBookStorage implements AddressBookStorage {","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(JsonAddressBookStorage.class);","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private Path filePath;","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public JsonAddressBookStorage(Path filePath) {","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" return filePath;","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public Optional\u003cReadOnlyAddressBook\u003e readAddressBook() throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":36,"author":{"gitId":"-"},"content":" return readAddressBook(filePath);","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Similar to {@link #readAddressBook()}.","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * @param filePath location of the data. Cannot be null.","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * @throws DataLoadingException if loading the data from storage failed.","lastModifiedDate":"2023-06-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public Optional\u003cReadOnlyAddressBook\u003e readAddressBook(Path filePath) throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":46,"author":{"gitId":"-"},"content":" requireNonNull(filePath);","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" Optional\u003cJsonSerializableAddressBook\u003e jsonAddressBook \u003d JsonUtil.readJsonFile(","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" filePath, JsonSerializableAddressBook.class);","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"chaaaaun"},"content":" if (jsonAddressBook.isEmpty()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return Optional.of(jsonAddressBook.get().toModelType());","lastModifiedDate":"2018-08-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" logger.info(\"Illegal values found in \" + filePath + \": \" + ive.getMessage());","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" throw new DataLoadingException(ive);","lastModifiedDate":"2023-06-14"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook) throws IOException {","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" saveAddressBook(addressBook, filePath);","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" * Similar to {@link #saveAddressBook(ReadOnlyAddressBook)}.","lastModifiedDate":"2018-08-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" * @param filePath location of the data. Cannot be null.","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath) throws IOException {","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" requireNonNull(addressBook);","lastModifiedDate":"2018-08-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" requireNonNull(filePath);","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" FileUtil.createIfMissing(filePath);","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" JsonUtil.saveJsonFile(new JsonSerializableAddressBook(addressBook), filePath);","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"chaaaaun":8,"-":72}},{"path":"src/main/java/scrolls/elder/storage/JsonSerializableAddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.storage;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonRootName;","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.AddressBook;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Person;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * An Immutable AddressBook that is serializable to JSON format.","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":"@JsonRootName(value \u003d \"addressbook\")","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"class JsonSerializableAddressBook {","lastModifiedDate":"2018-12-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"Persons list contains duplicate person(s).\";","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"chaaaaun"},"content":" private final int globalId;","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedPerson\u003e persons \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonSerializableAddressBook} with the given persons.","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"chaaaaun"},"content":" public JsonSerializableAddressBook(@JsonProperty(\"globalId\") String gid,","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"chaaaaun"},"content":" @JsonProperty(\"persons\") List\u003cJsonAdaptedPerson\u003e persons) {","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"chaaaaun"},"content":" this.globalId \u003d Integer.parseInt(gid);","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"-"},"content":" this.persons.addAll(persons);","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Converts a given {@code ReadOnlyAddressBook} into this class for Jackson use.","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * @param source future changes to this will not affect the created {@code JsonSerializableAddressBook}.","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public JsonSerializableAddressBook(ReadOnlyAddressBook source) {","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"chaaaaun"},"content":" globalId \u003d source.getGlobalId();","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"-"},"content":" persons.addAll(source.getPersonList().stream().map(JsonAdaptedPerson::new).collect(Collectors.toList()));","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Converts this address book into the model\u0027s {@code AddressBook} object.","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated.","lastModifiedDate":"2018-08-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public AddressBook toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"chaaaaun"},"content":" // We subtract the number of people from the globalId, as adding them back will increment the globalId","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"chaaaaun"},"content":" AddressBook addressBook \u003d new AddressBook(globalId - persons.size());","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"-"},"content":" for (JsonAdaptedPerson jsonAdaptedPerson : persons) {","lastModifiedDate":"2018-08-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" Person person \u003d jsonAdaptedPerson.toModelType();","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" if (addressBook.hasPerson(person)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2018-08-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"chaaaaun":12,"-":53}},{"path":"src/main/java/scrolls/elder/storage/JsonUserPrefsStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.storage;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.util.JsonUtil;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.ReadOnlyUserPrefs;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.UserPrefs;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * A class to access UserPrefs stored in the hard disk as a json file","lastModifiedDate":"2016-09-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class JsonUserPrefsStorage implements UserPrefsStorage {","lastModifiedDate":"2016-10-01"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" private Path filePath;","lastModifiedDate":"2018-04-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public JsonUserPrefsStorage(Path filePath) {","lastModifiedDate":"2018-04-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2016-09-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-02-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public Path getUserPrefsFilePath() {","lastModifiedDate":"2018-04-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":" return filePath;","lastModifiedDate":"2017-02-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-15"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public Optional\u003cUserPrefs\u003e readUserPrefs() throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":" return readUserPrefs(filePath);","lastModifiedDate":"2016-09-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Similar to {@link #readUserPrefs()}","lastModifiedDate":"2016-09-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * @param prefsFilePath location of the data. Cannot be null.","lastModifiedDate":"2016-09-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * @throws DataLoadingException if the file format is not as expected.","lastModifiedDate":"2023-06-14"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public Optional\u003cUserPrefs\u003e readUserPrefs(Path prefsFilePath) throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":39,"author":{"gitId":"-"},"content":" return JsonUtil.readJsonFile(prefsFilePath, UserPrefs.class);","lastModifiedDate":"2016-10-07"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-10-07"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void saveUserPrefs(ReadOnlyUserPrefs userPrefs) throws IOException {","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" JsonUtil.saveJsonFile(userPrefs, filePath);","lastModifiedDate":"2016-10-07"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-24"}],"authorContributionMap":{"chaaaaun":5,"-":42}},{"path":"src/main/java/scrolls/elder/storage/Storage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.storage;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.ReadOnlyUserPrefs;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.UserPrefs;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * API of the Storage component","lastModifiedDate":"2016-09-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public interface Storage extends AddressBookStorage, UserPrefsStorage {","lastModifiedDate":"2016-09-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Optional\u003cUserPrefs\u003e readUserPrefs() throws DataLoadingException;","lastModifiedDate":"2023-06-15"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" void saveUserPrefs(ReadOnlyUserPrefs userPrefs) throws IOException;","lastModifiedDate":"2018-11-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-04-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" Optional\u003cReadOnlyAddressBook\u003e readAddressBook() throws DataLoadingException;","lastModifiedDate":"2023-06-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" void saveAddressBook(ReadOnlyAddressBook addressBook) throws IOException;","lastModifiedDate":"2016-09-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-26"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"chaaaaun":5,"-":27}},{"path":"src/main/java/scrolls/elder/storage/StorageManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.storage;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.core.LogsCenter;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.ReadOnlyUserPrefs;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.UserPrefs;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Manages storage of AddressBook data in local storage.","lastModifiedDate":"2016-09-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class StorageManager implements Storage {","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(StorageManager.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private AddressBookStorage addressBookStorage;","lastModifiedDate":"2016-10-01"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private UserPrefsStorage userPrefsStorage;","lastModifiedDate":"2016-10-01"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Creates a {@code StorageManager} with the given {@code AddressBookStorage} and {@code UserPrefStorage}.","lastModifiedDate":"2020-05-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public StorageManager(AddressBookStorage addressBookStorage, UserPrefsStorage userPrefsStorage) {","lastModifiedDate":"2016-10-01"},{"lineNumber":27,"author":{"gitId":"-"},"content":" this.addressBookStorage \u003d addressBookStorage;","lastModifiedDate":"2016-10-01"},{"lineNumber":28,"author":{"gitId":"-"},"content":" this.userPrefsStorage \u003d userPrefsStorage;","lastModifiedDate":"2016-10-01"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d UserPrefs methods \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2016-09-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-02-15"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public Path getUserPrefsFilePath() {","lastModifiedDate":"2018-04-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" return userPrefsStorage.getUserPrefsFilePath();","lastModifiedDate":"2017-02-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public Optional\u003cUserPrefs\u003e readUserPrefs() throws DataLoadingException {","lastModifiedDate":"2023-06-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":" return userPrefsStorage.readUserPrefs();","lastModifiedDate":"2016-10-01"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void saveUserPrefs(ReadOnlyUserPrefs userPrefs) throws IOException {","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" userPrefsStorage.saveUserPrefs(userPrefs);","lastModifiedDate":"2016-10-01"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d AddressBook methods \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2016-09-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-04-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return addressBookStorage.getAddressBookFilePath();","lastModifiedDate":"2016-09-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public Optional\u003cReadOnlyAddressBook\u003e readAddressBook() throws DataLoadingException {","lastModifiedDate":"2023-06-15"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return readAddressBook(addressBookStorage.getAddressBookFilePath());","lastModifiedDate":"2016-10-01"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-10-01"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public Optional\u003cReadOnlyAddressBook\u003e readAddressBook(Path filePath) throws DataLoadingException {","lastModifiedDate":"2023-06-15"},{"lineNumber":63,"author":{"gitId":"-"},"content":" logger.fine(\"Attempting to read data from file: \" + filePath);","lastModifiedDate":"2016-10-01"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return addressBookStorage.readAddressBook(filePath);","lastModifiedDate":"2016-10-01"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook) throws IOException {","lastModifiedDate":"2016-09-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":" saveAddressBook(addressBook, addressBookStorage.getAddressBookFilePath());","lastModifiedDate":"2016-10-01"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01"},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-10-01"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":" logger.fine(\"Attempting to write to data file: \" + filePath);","lastModifiedDate":"2016-10-01"},{"lineNumber":75,"author":{"gitId":"-"},"content":" addressBookStorage.saveAddressBook(addressBook, filePath);","lastModifiedDate":"2016-10-01"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"chaaaaun":6,"-":72}},{"path":"src/main/java/scrolls/elder/storage/UserPrefsStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.storage;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2016-09-24"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-09-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":7,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.ReadOnlyUserPrefs;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.UserPrefs;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-24"},{"lineNumber":12,"author":{"gitId":"chaaaaun"},"content":" * Represents a storage for {@link UserPrefs}.","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public interface UserPrefsStorage {","lastModifiedDate":"2016-09-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-15"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Returns the file path of the UserPrefs data file.","lastModifiedDate":"2017-02-15"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-15"},{"lineNumber":19,"author":{"gitId":"-"},"content":" Path getUserPrefsFilePath();","lastModifiedDate":"2018-04-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-15"},{"lineNumber":21,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Returns UserPrefs data from storage.","lastModifiedDate":"2016-09-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Returns {@code Optional.empty()} if storage file is not found.","lastModifiedDate":"2016-09-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * @throws DataLoadingException if the loading of data from preference file failed.","lastModifiedDate":"2023-06-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" Optional\u003cUserPrefs\u003e readUserPrefs() throws DataLoadingException;","lastModifiedDate":"2023-06-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-24"},{"lineNumber":30,"author":{"gitId":"chaaaaun"},"content":" * Saves the given {@link ReadOnlyUserPrefs} to the storage.","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * @param userPrefs cannot be null.","lastModifiedDate":"2016-09-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * @throws IOException if there was any problem writing to the file.","lastModifiedDate":"2016-09-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" void saveUserPrefs(ReadOnlyUserPrefs userPrefs) throws IOException;","lastModifiedDate":"2018-11-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":36,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-24"}],"authorContributionMap":{"chaaaaun":6,"-":30}},{"path":"src/main/java/scrolls/elder/ui/CommandBox.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.ui;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-03-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-09-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.scene.control.TextField;","lastModifiedDate":"2016-09-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24"},{"lineNumber":7,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.Logic;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.commands.CommandResult;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * The UI component that is responsible for receiving user command inputs.","lastModifiedDate":"2017-08-16"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class CommandBox extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public static final String ERROR_STYLE_CLASS \u003d \"error\";","lastModifiedDate":"2017-02-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"CommandBox.fxml\";","lastModifiedDate":"2017-04-01"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final CommandExecutor commandExecutor;","lastModifiedDate":"2018-12-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-14"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private TextField commandTextField;","lastModifiedDate":"2016-09-14"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Creates a {@code CommandBox} with the given {@code CommandExecutor}.","lastModifiedDate":"2020-05-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public CommandBox(CommandExecutor commandExecutor) {","lastModifiedDate":"2019-01-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" this.commandExecutor \u003d commandExecutor;","lastModifiedDate":"2018-12-09"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // calls #setStyleToDefault() whenever there is a change to the text of the command box.","lastModifiedDate":"2017-06-28"},{"lineNumber":32,"author":{"gitId":"-"},"content":" commandTextField.textProperty().addListener((unused1, unused2, unused3) -\u003e setStyleToDefault());","lastModifiedDate":"2017-06-28"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-14"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Handles the Enter button pressed event.","lastModifiedDate":"2017-08-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-14"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private void handleCommandEntered() {","lastModifiedDate":"2018-04-01"},{"lineNumber":40,"author":{"gitId":"-"},"content":" String commandText \u003d commandTextField.getText();","lastModifiedDate":"2020-12-04"},{"lineNumber":41,"author":{"gitId":"-"},"content":" if (commandText.equals(\"\")) {","lastModifiedDate":"2020-12-04"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return;","lastModifiedDate":"2020-12-04"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-12-04"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-12-04"},{"lineNumber":45,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-02-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":" commandExecutor.execute(commandText);","lastModifiedDate":"2020-12-04"},{"lineNumber":47,"author":{"gitId":"-"},"content":" commandTextField.setText(\"\");","lastModifiedDate":"2016-09-14"},{"lineNumber":48,"author":{"gitId":"-"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2017-03-11"},{"lineNumber":49,"author":{"gitId":"-"},"content":" setStyleToIndicateCommandFailure();","lastModifiedDate":"2017-02-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-14"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-28"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-28"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Sets the command box style to use the default style.","lastModifiedDate":"2017-06-28"},{"lineNumber":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-28"},{"lineNumber":56,"author":{"gitId":"-"},"content":" private void setStyleToDefault() {","lastModifiedDate":"2017-06-28"},{"lineNumber":57,"author":{"gitId":"-"},"content":" commandTextField.getStyleClass().remove(ERROR_STYLE_CLASS);","lastModifiedDate":"2017-02-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-28"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-28"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * Sets the command box style to indicate a failed command.","lastModifiedDate":"2017-02-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-28"},{"lineNumber":63,"author":{"gitId":"-"},"content":" private void setStyleToIndicateCommandFailure() {","lastModifiedDate":"2017-02-05"},{"lineNumber":64,"author":{"gitId":"-"},"content":" ObservableList\u003cString\u003e styleClass \u003d commandTextField.getStyleClass();","lastModifiedDate":"2017-03-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":" if (styleClass.contains(ERROR_STYLE_CLASS)) {","lastModifiedDate":"2017-03-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return;","lastModifiedDate":"2017-03-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":" styleClass.add(ERROR_STYLE_CLASS);","lastModifiedDate":"2017-03-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-14"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":73,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * Represents a function that can execute commands.","lastModifiedDate":"2018-12-09"},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @FunctionalInterface","lastModifiedDate":"2018-12-09"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public interface CommandExecutor {","lastModifiedDate":"2018-12-09"},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2018-12-09"},{"lineNumber":80,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09"},{"lineNumber":81,"author":{"gitId":"chaaaaun"},"content":" * @see Logic#execute(String)","lastModifiedDate":"2024-03-12"},{"lineNumber":82,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":83,"author":{"gitId":"-"},"content":" CommandResult execute(String commandText) throws CommandException, ParseException;","lastModifiedDate":"2018-12-09"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":86,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"}],"authorContributionMap":{"chaaaaun":6,"-":80}},{"path":"src/main/java/scrolls/elder/ui/HelpWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.ui;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-12-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2019-08-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2019-08-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.input.Clipboard;","lastModifiedDate":"2019-08-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.input.ClipboardContent;","lastModifiedDate":"2019-08-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.core.LogsCenter;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Controller for a help page","lastModifiedDate":"2016-08-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class HelpWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-12-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String USERGUIDE_URL \u003d \"https://se-education.org/addressbook-level3/UserGuide.html\";","lastModifiedDate":"2019-08-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String HELP_MESSAGE \u003d \"Refer to the user guide: \" + USERGUIDE_URL;","lastModifiedDate":"2019-08-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(HelpWindow.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"HelpWindow.fxml\";","lastModifiedDate":"2016-09-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-12-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private Button copyButton;","lastModifiedDate":"2019-08-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-08-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2019-08-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Label helpMessage;","lastModifiedDate":"2019-08-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-12-01"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-12-01"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * @param root Stage to use as the root of the HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-12-01"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public HelpWindow(Stage root) {","lastModifiedDate":"2017-12-01"},{"lineNumber":36,"author":{"gitId":"-"},"content":" super(FXML, root);","lastModifiedDate":"2017-12-01"},{"lineNumber":37,"author":{"gitId":"-"},"content":" helpMessage.setText(HELP_MESSAGE);","lastModifiedDate":"2019-08-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-12-01"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-12-01"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public HelpWindow() {","lastModifiedDate":"2017-12-01"},{"lineNumber":44,"author":{"gitId":"-"},"content":" this(new Stage());","lastModifiedDate":"2017-12-01"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-01"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-01"},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Shows the help window.","lastModifiedDate":"2017-08-16"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * @throws IllegalStateException","lastModifiedDate":"2017-08-16"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * \u003cul\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * if this method is called on a thread other than the JavaFX Application Thread.","lastModifiedDate":"2017-08-16"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * if this method is called during animation or layout processing.","lastModifiedDate":"2017-08-16"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * if this method is called on the primary stage.","lastModifiedDate":"2017-08-16"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * if {@code dialogStage} is already showing.","lastModifiedDate":"2017-08-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * \u003c/ul\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void show() {","lastModifiedDate":"2016-08-18"},{"lineNumber":66,"author":{"gitId":"-"},"content":" logger.fine(\"Showing help page about the application.\");","lastModifiedDate":"2016-12-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":" getRoot().show();","lastModifiedDate":"2018-02-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" getRoot().centerOnScreen();","lastModifiedDate":"2019-08-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-15"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * Returns true if the help window is currently being shown.","lastModifiedDate":"2018-03-15"},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-15"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public boolean isShowing() {","lastModifiedDate":"2018-03-15"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return getRoot().isShowing();","lastModifiedDate":"2018-03-15"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Hides the help window.","lastModifiedDate":"2018-12-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void hide() {","lastModifiedDate":"2018-12-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":" getRoot().hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-15"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Focuses on the help window.","lastModifiedDate":"2018-03-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void focus() {","lastModifiedDate":"2018-03-15"},{"lineNumber":89,"author":{"gitId":"-"},"content":" getRoot().requestFocus();","lastModifiedDate":"2018-03-15"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-08-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-08-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Copies the URL to the user guide to the clipboard.","lastModifiedDate":"2019-08-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-08-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2019-08-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":" private void copyUrl() {","lastModifiedDate":"2019-08-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":" final Clipboard clipboard \u003d Clipboard.getSystemClipboard();","lastModifiedDate":"2019-08-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" final ClipboardContent url \u003d new ClipboardContent();","lastModifiedDate":"2019-08-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" url.putString(USERGUIDE_URL);","lastModifiedDate":"2019-08-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":" clipboard.setContent(url);","lastModifiedDate":"2019-08-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-08-19"},{"lineNumber":102,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"chaaaaun":2,"-":100}},{"path":"src/main/java/scrolls/elder/ui/MainWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.ui;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-06-16"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.event.ActionEvent;","lastModifiedDate":"2016-12-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-08-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.MenuItem;","lastModifiedDate":"2016-08-26"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.control.TextInputControl;","lastModifiedDate":"2016-12-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyCombination;","lastModifiedDate":"2016-08-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyEvent;","lastModifiedDate":"2016-12-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.scene.layout.StackPane;","lastModifiedDate":"2017-05-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18"},{"lineNumber":13,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.core.GuiSettings;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.core.LogsCenter;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.Logic;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.commands.CommandResult;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * The Main Window. Provides the basic application layout containing","lastModifiedDate":"2016-08-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * a menu bar and space where other JavaFX elements can be placed.","lastModifiedDate":"2016-08-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class MainWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-11-29"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"MainWindow.fxml\";","lastModifiedDate":"2016-08-18"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(getClass());","lastModifiedDate":"2018-08-14"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Stage primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // Independent Ui parts residing in this Ui container","lastModifiedDate":"2016-08-18"},{"lineNumber":34,"author":{"gitId":"CJerrong"},"content":" private PersonListPanel befriendeeListPanel;","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"CJerrong"},"content":" private PersonListPanel volunteerListPanel;","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private ResultDisplay resultDisplay;","lastModifiedDate":"2018-12-09"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private HelpWindow helpWindow;","lastModifiedDate":"2018-03-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private StackPane commandBoxPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":43,"author":{"gitId":"-"},"content":" private MenuItem helpMenuItem;","lastModifiedDate":"2016-08-18"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":46,"author":{"gitId":"CJerrong"},"content":" private StackPane befriendeeListPanelPlaceholder;","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"CJerrong"},"content":" @FXML","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"CJerrong"},"content":" private StackPane volunteerListPanelPlaceholder;","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":" private StackPane resultDisplayPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":54,"author":{"gitId":"-"},"content":" private StackPane statusbarPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Creates a {@code MainWindow} with the given {@code Stage} and {@code Logic}.","lastModifiedDate":"2020-05-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public MainWindow(Stage primaryStage, Logic logic) {","lastModifiedDate":"2018-12-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" super(FXML, primaryStage);","lastModifiedDate":"2017-11-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":62,"author":{"gitId":"-"},"content":" // Set dependencies","lastModifiedDate":"2016-09-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":" this.primaryStage \u003d primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":64,"author":{"gitId":"-"},"content":" this.logic \u003d logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":" // Configure the UI","lastModifiedDate":"2016-09-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":" setWindowDefaultSize(logic.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":69,"author":{"gitId":"-"},"content":" setAccelerators();","lastModifiedDate":"2016-09-21"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":71,"author":{"gitId":"-"},"content":" helpWindow \u003d new HelpWindow();","lastModifiedDate":"2018-03-15"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public Stage getPrimaryStage() {","lastModifiedDate":"2016-12-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return primaryStage;","lastModifiedDate":"2016-12-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":78,"author":{"gitId":"-"},"content":" private void setAccelerators() {","lastModifiedDate":"2016-09-21"},{"lineNumber":79,"author":{"gitId":"-"},"content":" setAccelerator(helpMenuItem, KeyCombination.valueOf(\"F1\"));","lastModifiedDate":"2016-12-18"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":82,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-18"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * Sets the accelerator of a MenuItem.","lastModifiedDate":"2016-12-18"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * @param keyCombination the KeyCombination value of the accelerator","lastModifiedDate":"2016-12-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" private void setAccelerator(MenuItem menuItem, KeyCombination keyCombination) {","lastModifiedDate":"2016-12-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":" menuItem.setAccelerator(keyCombination);","lastModifiedDate":"2016-12-18"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-12-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * TODO: the code below can be removed once the bug reported here","lastModifiedDate":"2016-12-18"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * https://bugs.openjdk.java.net/browse/JDK-8131666","lastModifiedDate":"2016-12-18"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * is fixed in later version of SDK.","lastModifiedDate":"2016-12-18"},{"lineNumber":93,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * According to the bug report, TextInputControl (TextField, TextArea) will","lastModifiedDate":"2016-12-18"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * consume function-key events. Because CommandBox contains a TextField, and","lastModifiedDate":"2016-12-18"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * ResultDisplay contains a TextArea, thus some accelerators (e.g F1) will","lastModifiedDate":"2016-12-18"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * not work when the focus is in them because the key event is consumed by","lastModifiedDate":"2016-12-18"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * the TextInputControl(s).","lastModifiedDate":"2016-12-18"},{"lineNumber":99,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * For now, we add following event filter to capture such key events and open","lastModifiedDate":"2016-12-18"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * help window purposely so to support accelerators even when focus is","lastModifiedDate":"2016-12-18"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * in CommandBox or ResultDisplay.","lastModifiedDate":"2016-12-18"},{"lineNumber":103,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":104,"author":{"gitId":"-"},"content":" getRoot().addEventFilter(KeyEvent.KEY_PRESSED, event -\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":105,"author":{"gitId":"-"},"content":" if (event.getTarget() instanceof TextInputControl \u0026\u0026 keyCombination.match(event)) {","lastModifiedDate":"2016-12-18"},{"lineNumber":106,"author":{"gitId":"-"},"content":" menuItem.getOnAction().handle(new ActionEvent());","lastModifiedDate":"2016-12-18"},{"lineNumber":107,"author":{"gitId":"-"},"content":" event.consume();","lastModifiedDate":"2016-12-18"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":109,"author":{"gitId":"-"},"content":" });","lastModifiedDate":"2016-12-18"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":112,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":113,"author":{"gitId":"-"},"content":" * Fills up all the placeholders of this window.","lastModifiedDate":"2017-08-16"},{"lineNumber":114,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":115,"author":{"gitId":"-"},"content":" void fillInnerParts() {","lastModifiedDate":"2016-09-21"},{"lineNumber":116,"author":{"gitId":"CJerrong"},"content":" befriendeeListPanel \u003d new PersonListPanel(logic.getFilteredBefriendeeList());","lastModifiedDate":"2024-03-20"},{"lineNumber":117,"author":{"gitId":"CJerrong"},"content":" befriendeeListPanelPlaceholder.getChildren().add(befriendeeListPanel.getRoot());","lastModifiedDate":"2024-03-20"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":" resultDisplay \u003d new ResultDisplay();","lastModifiedDate":"2018-12-09"},{"lineNumber":120,"author":{"gitId":"-"},"content":" resultDisplayPlaceholder.getChildren().add(resultDisplay.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":" StatusBarFooter statusBarFooter \u003d new StatusBarFooter(logic.getAddressBookFilePath());","lastModifiedDate":"2019-01-25"},{"lineNumber":123,"author":{"gitId":"-"},"content":" statusbarPlaceholder.getChildren().add(statusBarFooter.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":" CommandBox commandBox \u003d new CommandBox(this::executeCommand);","lastModifiedDate":"2019-01-25"},{"lineNumber":126,"author":{"gitId":"-"},"content":" commandBoxPlaceholder.getChildren().add(commandBox.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":127,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":128,"author":{"gitId":"CJerrong"},"content":" volunteerListPanel \u003d new PersonListPanel(logic.getFilteredVolunteerList());","lastModifiedDate":"2024-03-20"},{"lineNumber":129,"author":{"gitId":"CJerrong"},"content":" volunteerListPanelPlaceholder.getChildren().add(volunteerListPanel.getRoot());","lastModifiedDate":"2024-03-20"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":132,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":133,"author":{"gitId":"-"},"content":" * Sets the default size based on {@code guiSettings}.","lastModifiedDate":"2018-11-27"},{"lineNumber":134,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":135,"author":{"gitId":"-"},"content":" private void setWindowDefaultSize(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":136,"author":{"gitId":"-"},"content":" primaryStage.setHeight(guiSettings.getWindowHeight());","lastModifiedDate":"2018-11-27"},{"lineNumber":137,"author":{"gitId":"-"},"content":" primaryStage.setWidth(guiSettings.getWindowWidth());","lastModifiedDate":"2018-11-27"},{"lineNumber":138,"author":{"gitId":"-"},"content":" if (guiSettings.getWindowCoordinates() !\u003d null) {","lastModifiedDate":"2018-11-27"},{"lineNumber":139,"author":{"gitId":"-"},"content":" primaryStage.setX(guiSettings.getWindowCoordinates().getX());","lastModifiedDate":"2018-11-27"},{"lineNumber":140,"author":{"gitId":"-"},"content":" primaryStage.setY(guiSettings.getWindowCoordinates().getY());","lastModifiedDate":"2018-11-27"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":144,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":145,"author":{"gitId":"-"},"content":" * Opens the help window or focuses on it if it\u0027s already opened.","lastModifiedDate":"2018-03-15"},{"lineNumber":146,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":147,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":148,"author":{"gitId":"-"},"content":" public void handleHelp() {","lastModifiedDate":"2016-08-31"},{"lineNumber":149,"author":{"gitId":"-"},"content":" if (!helpWindow.isShowing()) {","lastModifiedDate":"2018-03-15"},{"lineNumber":150,"author":{"gitId":"-"},"content":" helpWindow.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":151,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-15"},{"lineNumber":152,"author":{"gitId":"-"},"content":" helpWindow.focus();","lastModifiedDate":"2018-03-15"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":156,"author":{"gitId":"-"},"content":" void show() {","lastModifiedDate":"2016-10-15"},{"lineNumber":157,"author":{"gitId":"-"},"content":" primaryStage.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":158,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":160,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":161,"author":{"gitId":"-"},"content":" * Closes the application.","lastModifiedDate":"2016-08-18"},{"lineNumber":162,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":163,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":164,"author":{"gitId":"-"},"content":" private void handleExit() {","lastModifiedDate":"2016-08-18"},{"lineNumber":165,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(primaryStage.getWidth(), primaryStage.getHeight(),","lastModifiedDate":"2018-12-08"},{"lineNumber":166,"author":{"gitId":"-"},"content":" (int) primaryStage.getX(), (int) primaryStage.getY());","lastModifiedDate":"2018-12-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":" logic.setGuiSettings(guiSettings);","lastModifiedDate":"2018-12-08"},{"lineNumber":168,"author":{"gitId":"-"},"content":" helpWindow.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":169,"author":{"gitId":"-"},"content":" primaryStage.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":170,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-25"},{"lineNumber":172,"author":{"gitId":"CJerrong"},"content":" public PersonListPanel getBefriendeeListPanel() {","lastModifiedDate":"2024-03-20"},{"lineNumber":173,"author":{"gitId":"CJerrong"},"content":" return befriendeeListPanel;","lastModifiedDate":"2024-03-20"},{"lineNumber":174,"author":{"gitId":"CJerrong"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":175,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":176,"author":{"gitId":"CJerrong"},"content":" public PersonListPanel getVolunteerListPanel() {","lastModifiedDate":"2024-03-20"},{"lineNumber":177,"author":{"gitId":"CJerrong"},"content":" return volunteerListPanel;","lastModifiedDate":"2024-03-20"},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-25"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":180,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":181,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2018-12-09"},{"lineNumber":182,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09"},{"lineNumber":183,"author":{"gitId":"chaaaaun"},"content":" * @see Logic#execute(String)","lastModifiedDate":"2024-03-12"},{"lineNumber":184,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":185,"author":{"gitId":"-"},"content":" private CommandResult executeCommand(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2018-12-09"},{"lineNumber":186,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":187,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d logic.execute(commandText);","lastModifiedDate":"2018-12-09"},{"lineNumber":188,"author":{"gitId":"-"},"content":" logger.info(\"Result: \" + commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":189,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":191,"author":{"gitId":"-"},"content":" if (commandResult.isShowHelp()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":192,"author":{"gitId":"-"},"content":" handleHelp();","lastModifiedDate":"2018-12-09"},{"lineNumber":193,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":195,"author":{"gitId":"-"},"content":" if (commandResult.isExit()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":196,"author":{"gitId":"-"},"content":" handleExit();","lastModifiedDate":"2018-12-09"},{"lineNumber":197,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":199,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":200,"author":{"gitId":"-"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2018-12-09"},{"lineNumber":201,"author":{"gitId":"-"},"content":" logger.info(\"An error occurred while executing command: \" + commandText);","lastModifiedDate":"2023-06-13"},{"lineNumber":202,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(e.getMessage());","lastModifiedDate":"2018-12-09"},{"lineNumber":203,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2018-12-09"},{"lineNumber":204,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":205,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":206,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"CJerrong":16,"chaaaaun":8,"-":182}},{"path":"src/main/java/scrolls/elder/ui/PersonCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.ui;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Comparator;","lastModifiedDate":"2019-01-02"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-01-02"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-09-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2016-09-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2016-12-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2016-09-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Person;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * An UI component that displays information of a {@code Person}.","lastModifiedDate":"2017-08-16"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class PersonCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"PersonListCard.fxml\";","lastModifiedDate":"2016-09-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2017-03-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2017-03-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2017-03-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @see \u003ca href\u003d\"https://github.com/se-edu/addressbook-level4/issues/336\"\u003eThe issue on AddressBook level 4\u003c/a\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public final Person person;","lastModifiedDate":"2018-01-10"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private HBox cardPane;","lastModifiedDate":"2016-09-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Label name;","lastModifiedDate":"2016-09-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Label id;","lastModifiedDate":"2016-09-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private Label phone;","lastModifiedDate":"2016-09-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private Label address;","lastModifiedDate":"2016-09-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private Label email;","lastModifiedDate":"2016-09-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" private FlowPane tags;","lastModifiedDate":"2016-12-18"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":44,"author":{"gitId":"soons1"},"content":" @FXML","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"soons1"},"content":" private Label pairedWith;","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2020-05-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2017-07-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"-"},"content":" name.setText(person.getName().fullName);","lastModifiedDate":"2017-12-20"},{"lineNumber":55,"author":{"gitId":"-"},"content":" phone.setText(person.getPhone().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":56,"author":{"gitId":"-"},"content":" address.setText(person.getAddress().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" email.setText(person.getEmail().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":58,"author":{"gitId":"CJerrong"},"content":" pairedWith.setText(person.getPairedWithName().map(p -\u003e \"Paired with: \" + p.fullName).orElse(\"Not paired\"));","lastModifiedDate":"2024-03-22"},{"lineNumber":59,"author":{"gitId":"-"},"content":" person.getTags().stream()","lastModifiedDate":"2019-01-02"},{"lineNumber":60,"author":{"gitId":"-"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.tagName))","lastModifiedDate":"2019-01-02"},{"lineNumber":61,"author":{"gitId":"-"},"content":" .forEach(tag -\u003e tags.getChildren().add(new Label(tag.tagName)));","lastModifiedDate":"2019-01-02"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":63,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"soons1":3,"CJerrong":1,"chaaaaun":2,"-":57}},{"path":"src/main/java/scrolls/elder/ui/PersonListPanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.ui;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-08-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-08-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.ListCell;","lastModifiedDate":"2016-09-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.control.ListView;","lastModifiedDate":"2016-08-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.core.LogsCenter;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Person;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Panel containing the list of persons.","lastModifiedDate":"2016-09-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class PersonListPanel extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"PersonListPanel.fxml\";","lastModifiedDate":"2016-09-14"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(PersonListPanel.class);","lastModifiedDate":"2017-04-01"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private ListView\u003cPerson\u003e personListView;","lastModifiedDate":"2018-02-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Creates a {@code PersonListPanel} with the given {@code ObservableList}.","lastModifiedDate":"2020-05-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public PersonListPanel(ObservableList\u003cPerson\u003e personList) {","lastModifiedDate":"2019-01-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" personListView.setItems(personList);","lastModifiedDate":"2018-02-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" personListView.setCellFactory(listView -\u003e new PersonListViewCell());","lastModifiedDate":"2016-08-18"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Custom {@code ListCell} that displays the graphics of a {@code Person} using a {@code PersonCard}.","lastModifiedDate":"2018-02-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":" class PersonListViewCell extends ListCell\u003cPerson\u003e {","lastModifiedDate":"2018-02-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" protected void updateItem(Person person, boolean empty) {","lastModifiedDate":"2018-02-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" super.updateItem(person, empty);","lastModifiedDate":"2016-09-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" if (empty || person \u003d\u003d null) {","lastModifiedDate":"2016-09-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" setGraphic(null);","lastModifiedDate":"2016-09-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" setText(null);","lastModifiedDate":"2016-09-21"},{"lineNumber":43,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2016-09-21"},{"lineNumber":44,"author":{"gitId":"-"},"content":" setGraphic(new PersonCard(person, getIndex() + 1).getRoot());","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"chaaaaun":3,"-":46}},{"path":"src/main/java/scrolls/elder/ui/ResultDisplay.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.ui;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-12-09"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.TextArea;","lastModifiedDate":"2016-09-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * A ui for the status bar that is displayed at the header of the application.","lastModifiedDate":"2016-09-28"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class ResultDisplay extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"ResultDisplay.fxml\";","lastModifiedDate":"2016-09-14"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-10-15"},{"lineNumber":17,"author":{"gitId":"-"},"content":" private TextArea resultDisplay;","lastModifiedDate":"2016-10-15"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-15"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public ResultDisplay() {","lastModifiedDate":"2017-06-14"},{"lineNumber":20,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void setFeedbackToUser(String feedbackToUser) {","lastModifiedDate":"2018-12-09"},{"lineNumber":24,"author":{"gitId":"-"},"content":" requireNonNull(feedbackToUser);","lastModifiedDate":"2018-12-09"},{"lineNumber":25,"author":{"gitId":"-"},"content":" resultDisplay.setText(feedbackToUser);","lastModifiedDate":"2018-12-09"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"chaaaaun":1,"-":27}},{"path":"src/main/java/scrolls/elder/ui/StatusBarFooter.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.ui;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2018-12-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * A ui for the status bar that is displayed at the footer of the application.","lastModifiedDate":"2016-09-28"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class StatusBarFooter extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-14"},{"lineNumber":15,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"StatusBarFooter.fxml\";","lastModifiedDate":"2017-04-01"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-12-10"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private Label saveLocationStatus;","lastModifiedDate":"2018-12-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Creates a {@code StatusBarFooter} with the given {@code Path}.","lastModifiedDate":"2020-05-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public StatusBarFooter(Path saveLocation) {","lastModifiedDate":"2019-01-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2017-04-01"},{"lineNumber":25,"author":{"gitId":"-"},"content":" saveLocationStatus.setText(Paths.get(\".\").resolve(saveLocation).toString());","lastModifiedDate":"2018-12-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-01"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"chaaaaun":1,"-":27}},{"path":"src/main/java/scrolls/elder/ui/Ui.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.ui;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-09-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * API of UI component","lastModifiedDate":"2016-09-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public interface Ui {","lastModifiedDate":"2016-09-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":" /** Starts the UI (and the App). */","lastModifiedDate":"2016-09-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":" void start(Stage primaryStage);","lastModifiedDate":"2016-09-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"chaaaaun":1,"-":12}},{"path":"src/main/java/scrolls/elder/ui/UiManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.ui;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.application.Platform;","lastModifiedDate":"2016-08-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Alert;","lastModifiedDate":"2016-08-18"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.Alert.AlertType;","lastModifiedDate":"2016-08-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2016-08-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.MainApp;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.core.LogsCenter;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.util.StringUtil;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.Logic;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * The manager of the UI component.","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class UiManager implements Ui {","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String ALERT_DIALOG_PANE_FIELD_ID \u003d \"alertDialogPane\";","lastModifiedDate":"2017-04-01"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(UiManager.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final String ICON_APPLICATION \u003d \"/images/address_book_32.png\";","lastModifiedDate":"2016-08-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private MainWindow mainWindow;","lastModifiedDate":"2016-08-18"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Creates a {@code UiManager} with the given {@code Logic}.","lastModifiedDate":"2020-05-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public UiManager(Logic logic) {","lastModifiedDate":"2018-12-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" this.logic \u003d logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public void start(Stage primaryStage) {","lastModifiedDate":"2016-09-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" logger.info(\"Starting UI...\");","lastModifiedDate":"2016-09-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":" //Set the application icon.","lastModifiedDate":"2016-08-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":" primaryStage.getIcons().add(getImage(ICON_APPLICATION));","lastModifiedDate":"2016-08-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":42,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-08-18"},{"lineNumber":43,"author":{"gitId":"-"},"content":" mainWindow \u003d new MainWindow(primaryStage, logic);","lastModifiedDate":"2018-12-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" mainWindow.show(); //This should be called before creating other UI parts","lastModifiedDate":"2016-08-18"},{"lineNumber":45,"author":{"gitId":"-"},"content":" mainWindow.fillInnerParts();","lastModifiedDate":"2016-08-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" } catch (Throwable e) {","lastModifiedDate":"2016-08-18"},{"lineNumber":48,"author":{"gitId":"-"},"content":" logger.severe(StringUtil.getDetails(e));","lastModifiedDate":"2016-09-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":" showFatalErrorDialogAndShutdown(\"Fatal error during initializing\", e);","lastModifiedDate":"2016-08-18"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":53,"author":{"gitId":"-"},"content":" private Image getImage(String imagePath) {","lastModifiedDate":"2016-08-18"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return new Image(MainApp.class.getResourceAsStream(imagePath));","lastModifiedDate":"2016-08-18"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":57,"author":{"gitId":"-"},"content":" void showAlertDialogAndWait(Alert.AlertType type, String title, String headerText, String contentText) {","lastModifiedDate":"2016-09-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" showAlertDialogAndWait(mainWindow.getPrimaryStage(), type, title, headerText, contentText);","lastModifiedDate":"2016-08-18"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Shows an alert dialog on {@code owner} with the given parameters.","lastModifiedDate":"2017-08-16"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * This method only returns after the user has closed the alert dialog.","lastModifiedDate":"2017-08-16"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":" private static void showAlertDialogAndWait(Stage owner, AlertType type, String title, String headerText,","lastModifiedDate":"2016-09-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":" String contentText) {","lastModifiedDate":"2016-08-18"},{"lineNumber":67,"author":{"gitId":"-"},"content":" final Alert alert \u003d new Alert(type);","lastModifiedDate":"2016-08-18"},{"lineNumber":68,"author":{"gitId":"-"},"content":" alert.getDialogPane().getStylesheets().add(\"view/DarkTheme.css\");","lastModifiedDate":"2016-08-20"},{"lineNumber":69,"author":{"gitId":"-"},"content":" alert.initOwner(owner);","lastModifiedDate":"2016-08-18"},{"lineNumber":70,"author":{"gitId":"-"},"content":" alert.setTitle(title);","lastModifiedDate":"2016-08-18"},{"lineNumber":71,"author":{"gitId":"-"},"content":" alert.setHeaderText(headerText);","lastModifiedDate":"2016-08-18"},{"lineNumber":72,"author":{"gitId":"-"},"content":" alert.setContentText(contentText);","lastModifiedDate":"2016-08-18"},{"lineNumber":73,"author":{"gitId":"-"},"content":" alert.getDialogPane().setId(ALERT_DIALOG_PANE_FIELD_ID);","lastModifiedDate":"2016-10-12"},{"lineNumber":74,"author":{"gitId":"-"},"content":" alert.showAndWait();","lastModifiedDate":"2016-08-18"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * Shows an error alert dialog with {@code title} and error message, {@code e},","lastModifiedDate":"2017-08-16"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * and exits the application after the user has closed the alert dialog.","lastModifiedDate":"2017-08-16"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":81,"author":{"gitId":"-"},"content":" private void showFatalErrorDialogAndShutdown(String title, Throwable e) {","lastModifiedDate":"2016-09-21"},{"lineNumber":82,"author":{"gitId":"-"},"content":" logger.severe(title + \" \" + e.getMessage() + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-21"},{"lineNumber":83,"author":{"gitId":"-"},"content":" showAlertDialogAndWait(Alert.AlertType.ERROR, title, e.getMessage(), e.toString());","lastModifiedDate":"2016-08-18"},{"lineNumber":84,"author":{"gitId":"-"},"content":" Platform.exit();","lastModifiedDate":"2016-08-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":" System.exit(1);","lastModifiedDate":"2016-08-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-25"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"chaaaaun":5,"-":83}},{"path":"src/main/java/scrolls/elder/ui/UiPart.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.ui;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2016-12-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.net.URL;","lastModifiedDate":"2016-12-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2016-12-21"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.MainApp;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Represents a distinct part of the UI. e.g. Windows, dialogs, panels, status bars, etc.","lastModifiedDate":"2016-12-21"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * It contains a scene graph with a root node of type {@code T}.","lastModifiedDate":"2016-12-21"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public abstract class UiPart\u003cT\u003e {","lastModifiedDate":"2016-12-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":" /** Resource folder where FXML files are stored. */","lastModifiedDate":"2016-12-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String FXML_FILE_FOLDER \u003d \"/view/\";","lastModifiedDate":"2016-12-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final FXMLLoader fxmlLoader \u003d new FXMLLoader();","lastModifiedDate":"2017-11-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Constructs a UiPart with the specified FXML file URL.","lastModifiedDate":"2016-12-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * The FXML file must not specify the {@code fx:controller} attribute.","lastModifiedDate":"2016-12-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public UiPart(URL fxmlFileUrl) {","lastModifiedDate":"2016-12-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":" loadFxmlFile(fxmlFileUrl, null);","lastModifiedDate":"2017-11-29"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Constructs a UiPart using the specified FXML file within {@link #FXML_FILE_FOLDER}.","lastModifiedDate":"2016-12-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * @see #UiPart(URL)","lastModifiedDate":"2016-12-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public UiPart(String fxmlFileName) {","lastModifiedDate":"2016-12-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" this(getFxmlFileUrl(fxmlFileName));","lastModifiedDate":"2017-11-29"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-11-29"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-11-29"},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-11-29"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Constructs a UiPart with the specified FXML file URL and root object.","lastModifiedDate":"2017-11-29"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * The FXML file must not specify the {@code fx:controller} attribute.","lastModifiedDate":"2017-11-29"},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-11-29"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public UiPart(URL fxmlFileUrl, T root) {","lastModifiedDate":"2017-11-29"},{"lineNumber":43,"author":{"gitId":"-"},"content":" loadFxmlFile(fxmlFileUrl, root);","lastModifiedDate":"2017-11-29"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-11-29"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-11-29"},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-11-29"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Constructs a UiPart with the specified FXML file within {@link #FXML_FILE_FOLDER} and root object.","lastModifiedDate":"2017-11-29"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * @see #UiPart(URL, T)","lastModifiedDate":"2017-11-29"},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-11-29"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public UiPart(String fxmlFileName, T root) {","lastModifiedDate":"2017-11-29"},{"lineNumber":51,"author":{"gitId":"-"},"content":" this(getFxmlFileUrl(fxmlFileName), root);","lastModifiedDate":"2017-11-29"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * Returns the root object of the scene graph of this UiPart.","lastModifiedDate":"2016-12-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public T getRoot() {","lastModifiedDate":"2016-12-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return fxmlLoader.getRoot();","lastModifiedDate":"2016-12-21"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-21"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-11-29"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Loads the object hierarchy from a FXML document.","lastModifiedDate":"2017-11-29"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * @param location Location of the FXML document.","lastModifiedDate":"2017-11-29"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * @param root Specifies the root of the object hierarchy.","lastModifiedDate":"2017-11-29"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-11-29"},{"lineNumber":66,"author":{"gitId":"-"},"content":" private void loadFxmlFile(URL location, T root) {","lastModifiedDate":"2017-11-29"},{"lineNumber":67,"author":{"gitId":"-"},"content":" requireNonNull(location);","lastModifiedDate":"2017-11-29"},{"lineNumber":68,"author":{"gitId":"-"},"content":" fxmlLoader.setLocation(location);","lastModifiedDate":"2017-11-29"},{"lineNumber":69,"author":{"gitId":"-"},"content":" fxmlLoader.setController(this);","lastModifiedDate":"2017-11-29"},{"lineNumber":70,"author":{"gitId":"-"},"content":" fxmlLoader.setRoot(root);","lastModifiedDate":"2017-11-29"},{"lineNumber":71,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-11-29"},{"lineNumber":72,"author":{"gitId":"-"},"content":" fxmlLoader.load();","lastModifiedDate":"2017-11-29"},{"lineNumber":73,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2017-11-29"},{"lineNumber":74,"author":{"gitId":"-"},"content":" throw new AssertionError(e);","lastModifiedDate":"2017-11-29"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-11-29"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-11-29"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-11-29"},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-11-29"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Returns the FXML file URL for the specified FXML file name within {@link #FXML_FILE_FOLDER}.","lastModifiedDate":"2017-11-29"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-11-29"},{"lineNumber":81,"author":{"gitId":"-"},"content":" private static URL getFxmlFileUrl(String fxmlFileName) {","lastModifiedDate":"2017-11-29"},{"lineNumber":82,"author":{"gitId":"-"},"content":" requireNonNull(fxmlFileName);","lastModifiedDate":"2017-11-29"},{"lineNumber":83,"author":{"gitId":"-"},"content":" String fxmlFileNameWithFolder \u003d FXML_FILE_FOLDER + fxmlFileName;","lastModifiedDate":"2017-11-29"},{"lineNumber":84,"author":{"gitId":"-"},"content":" URL fxmlFileUrl \u003d MainApp.class.getResource(fxmlFileNameWithFolder);","lastModifiedDate":"2017-11-29"},{"lineNumber":85,"author":{"gitId":"-"},"content":" return requireNonNull(fxmlFileUrl);","lastModifiedDate":"2017-11-29"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-11-29"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-11-29"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"chaaaaun":2,"-":86}},{"path":"src/main/resources/view/DarkTheme.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":".background {","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":" background-color: #383838; /* Used in the default.html file */","lastModifiedDate":"2017-03-02"},{"lineNumber":4,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":".label {","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":".label-bright {","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":".label-header {","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" -fx-font-size: 32pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":".text-field {","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" -fx-font-size: 12pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":".tab-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":".tab-pane .tab-header-area {","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" -fx-min-height: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" -fx-max-height: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":".table-view {","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" -fx-base: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" -fx-control-inner-background: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" -fx-table-cell-border-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" -fx-table-header-border-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" -fx-padding: 5;","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":".table-view .column-header-background {","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":".table-view .column-header, .table-view .filler {","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" -fx-size: 35;","lastModifiedDate":"2016-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" -fx-border-width: 0 0 1 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" -fx-border-color:","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" derive(-fx-base, 80%)","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" -fx-border-insets: 0 10 1 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":".table-view .column-header .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" -fx-font-size: 20pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" -fx-alignment: center-left;","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":".table-view:focused .table-row-cell:filled:focused:selected {","lastModifiedDate":"2016-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":".split-pane:horizontal .split-pane-divider {","lastModifiedDate":"2016-08-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02"},{"lineNumber":81,"author":{"gitId":"-"},"content":" -fx-border-color: transparent transparent transparent #4d4d4d;","lastModifiedDate":"2017-03-02"},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":84,"author":{"gitId":"-"},"content":".split-pane {","lastModifiedDate":"2016-08-15"},{"lineNumber":85,"author":{"gitId":"-"},"content":" -fx-border-radius: 1;","lastModifiedDate":"2016-08-15"},{"lineNumber":86,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2016-08-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":".list-view {","lastModifiedDate":"2017-03-02"},{"lineNumber":91,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":92,"author":{"gitId":"-"},"content":" -fx-padding: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":93,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2018-01-10"},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":96,"author":{"gitId":"-"},"content":".list-cell {","lastModifiedDate":"2016-08-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":" -fx-label-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":" -fx-graphic-text-gap : 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":".list-cell:filled:even {","lastModifiedDate":"2017-03-02"},{"lineNumber":103,"author":{"gitId":"-"},"content":" -fx-background-color: #3c3e3f;","lastModifiedDate":"2017-03-02"},{"lineNumber":104,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":106,"author":{"gitId":"-"},"content":".list-cell:filled:odd {","lastModifiedDate":"2017-03-02"},{"lineNumber":107,"author":{"gitId":"-"},"content":" -fx-background-color: #515658;","lastModifiedDate":"2017-03-02"},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":110,"author":{"gitId":"-"},"content":".list-cell:filled:selected {","lastModifiedDate":"2017-03-02"},{"lineNumber":111,"author":{"gitId":"-"},"content":" -fx-background-color: #424d5f;","lastModifiedDate":"2017-03-02"},{"lineNumber":112,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":114,"author":{"gitId":"-"},"content":".list-cell:filled:selected #cardPane {","lastModifiedDate":"2017-03-02"},{"lineNumber":115,"author":{"gitId":"-"},"content":" -fx-border-color: #3e7b91;","lastModifiedDate":"2017-03-02"},{"lineNumber":116,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02"},{"lineNumber":117,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":119,"author":{"gitId":"-"},"content":".list-cell .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":121,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":".cell_big_label {","lastModifiedDate":"2016-08-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":" -fx-font-size: 16px;","lastModifiedDate":"2016-08-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":".cell_small_label {","lastModifiedDate":"2016-08-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\";","lastModifiedDate":"2022-01-13"},{"lineNumber":131,"author":{"gitId":"-"},"content":" -fx-font-size: 13px;","lastModifiedDate":"2017-03-02"},{"lineNumber":132,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":".stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":136,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":137,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":".pane-with-border {","lastModifiedDate":"2017-05-15"},{"lineNumber":140,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-05-09"},{"lineNumber":141,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 10%);","lastModifiedDate":"2017-05-09"},{"lineNumber":142,"author":{"gitId":"-"},"content":" -fx-border-top-width: 1px;","lastModifiedDate":"2017-05-09"},{"lineNumber":143,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-09"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":145,"author":{"gitId":"-"},"content":".status-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":146,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2018-12-08"},{"lineNumber":147,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":149,"author":{"gitId":"-"},"content":".result-display {","lastModifiedDate":"2016-09-14"},{"lineNumber":150,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2017-03-02"},{"lineNumber":151,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":152,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02"},{"lineNumber":153,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":154,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":156,"author":{"gitId":"-"},"content":".result-display .label {","lastModifiedDate":"2016-09-14"},{"lineNumber":157,"author":{"gitId":"-"},"content":" -fx-text-fill: black !important;","lastModifiedDate":"2016-09-14"},{"lineNumber":158,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":160,"author":{"gitId":"-"},"content":".status-bar .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":162,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":163,"author":{"gitId":"-"},"content":" -fx-padding: 4px;","lastModifiedDate":"2018-12-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":" -fx-pref-height: 30px;","lastModifiedDate":"2018-12-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":".status-bar-with-border {","lastModifiedDate":"2016-08-08"},{"lineNumber":168,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":169,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15"},{"lineNumber":170,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08"},{"lineNumber":171,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":173,"author":{"gitId":"-"},"content":".status-bar-with-border .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":174,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":175,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":177,"author":{"gitId":"-"},"content":".grid-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":178,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":179,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":180,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08"},{"lineNumber":181,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":183,"author":{"gitId":"-"},"content":".grid-pane .stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":184,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":185,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":187,"author":{"gitId":"-"},"content":".context-menu {","lastModifiedDate":"2016-08-08"},{"lineNumber":188,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15"},{"lineNumber":189,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":191,"author":{"gitId":"-"},"content":".context-menu .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":192,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":193,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":195,"author":{"gitId":"-"},"content":".menu-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":196,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":197,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":199,"author":{"gitId":"-"},"content":".menu-bar .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":200,"author":{"gitId":"-"},"content":" -fx-font-size: 14pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":201,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":202,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":203,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08"},{"lineNumber":204,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":206,"author":{"gitId":"-"},"content":".menu .left-container {","lastModifiedDate":"2016-08-08"},{"lineNumber":207,"author":{"gitId":"-"},"content":" -fx-background-color: black;","lastModifiedDate":"2016-08-08"},{"lineNumber":208,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":210,"author":{"gitId":"-"},"content":"/*","lastModifiedDate":"2016-08-08"},{"lineNumber":211,"author":{"gitId":"-"},"content":" * Metro style Push Button","lastModifiedDate":"2016-08-08"},{"lineNumber":212,"author":{"gitId":"-"},"content":" * Author: Pedro Duque Vieira","lastModifiedDate":"2016-08-08"},{"lineNumber":213,"author":{"gitId":"-"},"content":" * http://pixelduke.wordpress.com/2012/10/23/jmetro-windows-8-controls-on-java/","lastModifiedDate":"2016-08-08"},{"lineNumber":214,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":215,"author":{"gitId":"-"},"content":".button {","lastModifiedDate":"2016-08-08"},{"lineNumber":216,"author":{"gitId":"-"},"content":" -fx-padding: 5 22 5 22;","lastModifiedDate":"2016-08-08"},{"lineNumber":217,"author":{"gitId":"-"},"content":" -fx-border-color: #e2e2e2;","lastModifiedDate":"2016-08-08"},{"lineNumber":218,"author":{"gitId":"-"},"content":" -fx-border-width: 2;","lastModifiedDate":"2016-08-08"},{"lineNumber":219,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":220,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":221,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\", Helvetica, Arial, sans-serif;","lastModifiedDate":"2022-01-13"},{"lineNumber":222,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":223,"author":{"gitId":"-"},"content":" -fx-text-fill: #d8d8d8;","lastModifiedDate":"2016-08-08"},{"lineNumber":224,"author":{"gitId":"-"},"content":" -fx-background-insets: 0 0 0 0, 0, 1, 2;","lastModifiedDate":"2016-08-08"},{"lineNumber":225,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":227,"author":{"gitId":"-"},"content":".button:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":228,"author":{"gitId":"-"},"content":" -fx-background-color: #3a3a3a;","lastModifiedDate":"2016-08-08"},{"lineNumber":229,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":231,"author":{"gitId":"-"},"content":".button:pressed, .button:default:hover:pressed {","lastModifiedDate":"2016-08-08"},{"lineNumber":232,"author":{"gitId":"-"},"content":" -fx-background-color: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":233,"author":{"gitId":"-"},"content":" -fx-text-fill: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":234,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":236,"author":{"gitId":"-"},"content":".button:focused {","lastModifiedDate":"2016-08-08"},{"lineNumber":237,"author":{"gitId":"-"},"content":" -fx-border-color: white, white;","lastModifiedDate":"2016-08-08"},{"lineNumber":238,"author":{"gitId":"-"},"content":" -fx-border-width: 1, 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":239,"author":{"gitId":"-"},"content":" -fx-border-style: solid, segments(1, 1);","lastModifiedDate":"2016-08-08"},{"lineNumber":240,"author":{"gitId":"-"},"content":" -fx-border-radius: 0, 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":241,"author":{"gitId":"-"},"content":" -fx-border-insets: 1 1 1 1, 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":242,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":244,"author":{"gitId":"-"},"content":".button:disabled, .button:default:disabled {","lastModifiedDate":"2016-08-08"},{"lineNumber":245,"author":{"gitId":"-"},"content":" -fx-opacity: 0.4;","lastModifiedDate":"2016-08-08"},{"lineNumber":246,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":247,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":248,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":250,"author":{"gitId":"-"},"content":".button:default {","lastModifiedDate":"2016-08-08"},{"lineNumber":251,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08"},{"lineNumber":252,"author":{"gitId":"-"},"content":" -fx-text-fill: #ffffff;","lastModifiedDate":"2016-08-08"},{"lineNumber":253,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":255,"author":{"gitId":"-"},"content":".button:default:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":256,"author":{"gitId":"-"},"content":" -fx-background-color: derive(-fx-focus-color, 30%);","lastModifiedDate":"2016-08-08"},{"lineNumber":257,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":259,"author":{"gitId":"-"},"content":".dialog-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":260,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":261,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":263,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.button-bar \u003e *.container {","lastModifiedDate":"2016-08-08"},{"lineNumber":264,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":265,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":266,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":267,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.label.content {","lastModifiedDate":"2016-08-08"},{"lineNumber":268,"author":{"gitId":"-"},"content":" -fx-font-size: 14px;","lastModifiedDate":"2016-08-08"},{"lineNumber":269,"author":{"gitId":"-"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2016-08-08"},{"lineNumber":270,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":271,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":273,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel {","lastModifiedDate":"2016-08-08"},{"lineNumber":274,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15"},{"lineNumber":275,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":277,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel *.label {","lastModifiedDate":"2016-08-08"},{"lineNumber":278,"author":{"gitId":"-"},"content":" -fx-font-size: 18px;","lastModifiedDate":"2016-08-08"},{"lineNumber":279,"author":{"gitId":"-"},"content":" -fx-font-style: italic;","lastModifiedDate":"2016-08-08"},{"lineNumber":280,"author":{"gitId":"-"},"content":" -fx-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":281,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":282,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":284,"author":{"gitId":"-"},"content":".scroll-bar {","lastModifiedDate":"2017-03-02"},{"lineNumber":285,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02"},{"lineNumber":286,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":288,"author":{"gitId":"-"},"content":".scroll-bar .thumb {","lastModifiedDate":"2016-08-15"},{"lineNumber":289,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15"},{"lineNumber":290,"author":{"gitId":"-"},"content":" -fx-background-insets: 3;","lastModifiedDate":"2016-08-15"},{"lineNumber":291,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":293,"author":{"gitId":"-"},"content":".scroll-bar .increment-button, .scroll-bar .decrement-button {","lastModifiedDate":"2016-08-15"},{"lineNumber":294,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-15"},{"lineNumber":295,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-15"},{"lineNumber":296,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":298,"author":{"gitId":"-"},"content":".scroll-bar .increment-arrow, .scroll-bar .decrement-arrow {","lastModifiedDate":"2016-08-15"},{"lineNumber":299,"author":{"gitId":"-"},"content":" -fx-shape: \" \";","lastModifiedDate":"2016-08-15"},{"lineNumber":300,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":301,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":302,"author":{"gitId":"-"},"content":".scroll-bar:vertical .increment-arrow, .scroll-bar:vertical .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":303,"author":{"gitId":"-"},"content":" -fx-padding: 1 8 1 8;","lastModifiedDate":"2016-08-15"},{"lineNumber":304,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":306,"author":{"gitId":"-"},"content":".scroll-bar:horizontal .increment-arrow, .scroll-bar:horizontal .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":307,"author":{"gitId":"-"},"content":" -fx-padding: 8 1 8 1;","lastModifiedDate":"2016-08-18"},{"lineNumber":308,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":309,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":310,"author":{"gitId":"-"},"content":"#cardPane {","lastModifiedDate":"2016-08-08"},{"lineNumber":311,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":312,"author":{"gitId":"-"},"content":" -fx-border-width: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":313,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":314,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":315,"author":{"gitId":"-"},"content":"#commandTypeLabel {","lastModifiedDate":"2016-08-08"},{"lineNumber":316,"author":{"gitId":"-"},"content":" -fx-font-size: 11px;","lastModifiedDate":"2016-08-08"},{"lineNumber":317,"author":{"gitId":"-"},"content":" -fx-text-fill: #F70D1A;","lastModifiedDate":"2016-08-08"},{"lineNumber":318,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":319,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":320,"author":{"gitId":"-"},"content":"#commandTextField {","lastModifiedDate":"2017-03-02"},{"lineNumber":321,"author":{"gitId":"-"},"content":" -fx-background-color: transparent #383838 transparent #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":322,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":323,"author":{"gitId":"-"},"content":" -fx-border-color: #383838 #383838 #ffffff #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":324,"author":{"gitId":"-"},"content":" -fx-border-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":325,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02"},{"lineNumber":326,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":327,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02"},{"lineNumber":328,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":329,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":330,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":331,"author":{"gitId":"-"},"content":"#filterField, #personListPanel, #personWebpage {","lastModifiedDate":"2016-08-15"},{"lineNumber":332,"author":{"gitId":"-"},"content":" -fx-effect: innershadow(gaussian, black, 10, 0, 0, 0);","lastModifiedDate":"2016-08-15"},{"lineNumber":333,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":334,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":335,"author":{"gitId":"-"},"content":"#resultDisplay .content {","lastModifiedDate":"2017-03-02"},{"lineNumber":336,"author":{"gitId":"-"},"content":" -fx-background-color: transparent, #383838, transparent, #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":337,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":338,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":339,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":340,"author":{"gitId":"-"},"content":"#tags {","lastModifiedDate":"2016-12-18"},{"lineNumber":341,"author":{"gitId":"-"},"content":" -fx-hgap: 7;","lastModifiedDate":"2016-12-18"},{"lineNumber":342,"author":{"gitId":"-"},"content":" -fx-vgap: 3;","lastModifiedDate":"2016-12-18"},{"lineNumber":343,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"},{"lineNumber":344,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":345,"author":{"gitId":"-"},"content":"#tags .label {","lastModifiedDate":"2016-12-18"},{"lineNumber":346,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-12-18"},{"lineNumber":347,"author":{"gitId":"-"},"content":" -fx-background-color: #3e7b91;","lastModifiedDate":"2017-03-02"},{"lineNumber":348,"author":{"gitId":"-"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2016-12-18"},{"lineNumber":349,"author":{"gitId":"-"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2016-12-18"},{"lineNumber":350,"author":{"gitId":"-"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2016-12-18"},{"lineNumber":351,"author":{"gitId":"-"},"content":" -fx-font-size: 11;","lastModifiedDate":"2016-12-18"},{"lineNumber":352,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"}],"authorContributionMap":{"chaaaaun":1,"-":351}},{"path":"src/main/resources/view/HelpWindow.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-18"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2021-08-28"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Button?\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2017-12-01"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.stage.Stage?\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003cfx:root resizable\u003d\"false\" title\u003d\"Help\" type\u003d\"javafx.stage.Stage\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-07-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":" \u003cicons\u003e","lastModifiedDate":"2017-12-01"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cImage url\u003d\"@/images/help_icon.png\" /\u003e","lastModifiedDate":"2017-12-01"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003c/icons\u003e","lastModifiedDate":"2017-12-01"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cscene\u003e","lastModifiedDate":"2017-12-01"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cScene\u003e","lastModifiedDate":"2017-12-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2021-08-28"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@HelpWindow.css\" /\u003e","lastModifiedDate":"2021-08-28"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2021-08-28"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-08-28"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cHBox alignment\u003d\"CENTER\" fx:id\u003d\"helpMessageContainer\"\u003e","lastModifiedDate":"2022-01-02"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cchildren\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"helpMessage\" text\u003d\"Label\"\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cInsets right\u003d\"5.0\" /\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/HBox.margin\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003c/Label\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cButton fx:id\u003d\"copyButton\" mnemonicParsing\u003d\"false\" onAction\u003d\"#copyUrl\" text\u003d\"Copy URL\"\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003cInsets left\u003d\"5.0\" /\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003c/HBox.margin\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003c/Button\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003c/children\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003copaqueInsets\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003cInsets bottom\u003d\"10.0\" left\u003d\"5.0\" right\u003d\"10.0\" top\u003d\"5.0\" /\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003c/opaqueInsets\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003cInsets bottom\u003d\"10.0\" left\u003d\"5.0\" right\u003d\"10.0\" top\u003d\"5.0\" /\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2017-12-01"},{"lineNumber":42,"author":{"gitId":"-"},"content":" \u003c/scene\u003e","lastModifiedDate":"2017-12-01"},{"lineNumber":43,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-12-01"}],"authorContributionMap":{"chaaaaun":1,"-":42}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2016-08-26"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Menu?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuBar?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuItem?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"chaaaaun"},"content":"\u003c?import javafx.stage.Stage?\u003e","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"CJerrong"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"chaaaaun"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":"\u003cfx:root type\u003d\"javafx.stage.Stage\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"","lastModifiedDate":"2023-07-27"},{"lineNumber":16,"author":{"gitId":"CJerrong"},"content":" title\u003d\"Elder Scrolls\" minWidth\u003d\"700\" minHeight\u003d\"600\" onCloseRequest\u003d\"#handleExit\"\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cicons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cImage url\u003d\"@/images/address_book_32.png\" /\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003c/icons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cscene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cScene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@DarkTheme.css\" /\u003e","lastModifiedDate":"2016-08-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@Extensions.css\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cVBox\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cMenuBar fx:id\u003d\"menuBar\" VBox.vgrow\u003d\"NEVER\"\u003e","lastModifiedDate":"2017-06-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"File\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003cMenuItem mnemonicParsing\u003d\"false\" onAction\u003d\"#handleExit\" text\u003d\"Exit\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"Help\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003cMenuItem fx:id\u003d\"helpMenuItem\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleHelp\" text\u003d\"Help\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003c/MenuBar\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"commandBoxPlaceholder\" styleClass\u003d\"pane-with-border\"\u003e","lastModifiedDate":"2017-05-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":41,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"resultDisplayPlaceholder\" styleClass\u003d\"pane-with-border\"","lastModifiedDate":"2017-05-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" minHeight\u003d\"100\" prefHeight\u003d\"100\" maxHeight\u003d\"100\"\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":46,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":50,"author":{"gitId":"CJerrong"},"content":" \u003cHBox HBox.hgrow\u003d\"ALWAYS\" VBox.vgrow\u003d\"ALWAYS\" minWidth\u003d\"680\" prefWidth\u003d\"1000\"\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"CJerrong"},"content":" \u003cVBox fx:id\u003d\"befriendeeList\" styleClass\u003d\"pane-with-border\" minWidth\u003d\"340\" prefWidth\u003d\"340\" VBox.vgrow\u003d\"ALWAYS\"","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"CJerrong"},"content":" HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"10\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":56,"author":{"gitId":"chaaaaun"},"content":" \u003cLabel text\u003d\"Befriendees\"/\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"CJerrong"},"content":" \u003cStackPane fx:id\u003d\"befriendeeListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\"/\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":60,"author":{"gitId":"CJerrong"},"content":" \u003cVBox fx:id\u003d\"volunteerList\" styleClass\u003d\"pane-with-border\" minWidth\u003d\"340\" prefWidth\u003d\"340\" VBox.vgrow\u003d\"ALWAYS\"","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"CJerrong"},"content":" HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"CJerrong"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"CJerrong"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"10\" left\u003d\"10\" /\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"CJerrong"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"chaaaaun"},"content":" \u003cLabel text\u003d\"Volunteers\"/\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"CJerrong"},"content":" \u003cStackPane fx:id\u003d\"volunteerListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\"/\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"CJerrong"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"CJerrong"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"statusbarPlaceholder\" VBox.vgrow\u003d\"NEVER\" /\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":71,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":73,"author":{"gitId":"-"},"content":" \u003c/scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":74,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-11-29"}],"authorContributionMap":{"CJerrong":14,"chaaaaun":5,"-":55}},{"path":"src/main/resources/view/PersonListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003cHBox id\u003d\"cardPane\" fx:id\u003d\"cardPane\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-07-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2017-03-28"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2017-03-28"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/Label\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"name\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2016-09-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003cFlowPane fx:id\u003d\"tags\" /\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"soons1"},"content":" \u003cLabel fx:id\u003d\"pairedWith\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$pairedWith\" /\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"soons1":1,"-":35}},{"path":"src/test/java/scrolls/elder/AppParametersTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-02-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-02-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-04-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.HashMap;","lastModifiedDate":"2018-04-21"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-04-21"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Map;","lastModifiedDate":"2018-04-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import javafx.application.Application;","lastModifiedDate":"2018-04-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class AppParametersTest {","lastModifiedDate":"2018-04-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private final ParametersStub parametersStub \u003d new ParametersStub();","lastModifiedDate":"2018-04-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final AppParameters expected \u003d new AppParameters();","lastModifiedDate":"2018-04-21"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void parse_validConfigPath_success() {","lastModifiedDate":"2018-04-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":" parametersStub.namedParameters.put(\"config\", \"config.json\");","lastModifiedDate":"2018-04-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":" expected.setConfigPath(Paths.get(\"config.json\"));","lastModifiedDate":"2018-04-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":" assertEquals(expected, AppParameters.parse(parametersStub));","lastModifiedDate":"2018-04-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void parse_nullConfigPath_success() {","lastModifiedDate":"2018-04-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":" parametersStub.namedParameters.put(\"config\", null);","lastModifiedDate":"2018-04-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertEquals(expected, AppParameters.parse(parametersStub));","lastModifiedDate":"2018-04-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public void parse_invalidConfigPath_success() {","lastModifiedDate":"2018-04-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" parametersStub.namedParameters.put(\"config\", \"a\\0\");","lastModifiedDate":"2018-04-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" expected.setConfigPath(null);","lastModifiedDate":"2018-04-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertEquals(expected, AppParameters.parse(parametersStub));","lastModifiedDate":"2018-04-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" AppParameters appParameters \u003d new AppParameters();","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" String expected \u003d AppParameters.class.getCanonicalName() + \"{configPath\u003d\" + appParameters.getConfigPath() + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertEquals(expected, appParameters.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" AppParameters appParameters \u003d new AppParameters();","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertTrue(appParameters.equals(new AppParameters()));","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertTrue(appParameters.equals(appParameters));","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertFalse(appParameters.equals(null));","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertFalse(appParameters.equals(5.0f));","lastModifiedDate":"2019-02-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" // different config path -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" AppParameters otherAppParameters \u003d new AppParameters();","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" otherAppParameters.setConfigPath(Paths.get(\"configPath\"));","lastModifiedDate":"2019-02-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertFalse(appParameters.equals(otherAppParameters));","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" private static class ParametersStub extends Application.Parameters {","lastModifiedDate":"2018-04-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":" private Map\u003cString, String\u003e namedParameters \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2018-04-21"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-04-21"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public List\u003cString\u003e getRaw() {","lastModifiedDate":"2018-04-21"},{"lineNumber":76,"author":{"gitId":"-"},"content":" throw new AssertionError(\"should not be called\");","lastModifiedDate":"2018-04-21"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-04-21"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public List\u003cString\u003e getUnnamed() {","lastModifiedDate":"2018-04-21"},{"lineNumber":81,"author":{"gitId":"-"},"content":" throw new AssertionError(\"should not be called\");","lastModifiedDate":"2018-04-21"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-04-21"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public Map\u003cString, String\u003e getNamed() {","lastModifiedDate":"2018-04-21"},{"lineNumber":86,"author":{"gitId":"-"},"content":" return Collections.unmodifiableMap(namedParameters);","lastModifiedDate":"2018-04-21"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":89,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-04-21"}],"authorContributionMap":{"chaaaaun":1,"-":88}},{"path":"src/test/java/scrolls/elder/commons/core/ConfigTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.commons.core;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertNotNull;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class ConfigTest {","lastModifiedDate":"2016-09-30"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-30"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":" Config config \u003d new Config();","lastModifiedDate":"2019-02-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":" String expected \u003d Config.class.getCanonicalName() + \"{logLevel\u003d\" + config.getLogLevel()","lastModifiedDate":"2019-02-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":" + \", userPrefsFilePath\u003d\" + config.getUserPrefsFilePath() + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":" assertEquals(expected, config.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-30"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public void equalsMethod() {","lastModifiedDate":"2016-09-30"},{"lineNumber":21,"author":{"gitId":"-"},"content":" Config defaultConfig \u003d new Config();","lastModifiedDate":"2016-09-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":" assertNotNull(defaultConfig);","lastModifiedDate":"2016-10-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":" assertTrue(defaultConfig.equals(defaultConfig));","lastModifiedDate":"2016-09-30"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-30"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":27,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-30"}],"authorContributionMap":{"chaaaaun":1,"-":26}},{"path":"src/test/java/scrolls/elder/commons/core/GuiSettingsTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.commons.core;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-02-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"public class GuiSettingsTest {","lastModifiedDate":"2019-02-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings();","lastModifiedDate":"2019-02-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":" String expected \u003d GuiSettings.class.getCanonicalName() + \"{windowWidth\u003d\" + guiSettings.getWindowWidth()","lastModifiedDate":"2019-02-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":" + \", windowHeight\u003d\" + guiSettings.getWindowHeight() + \", windowCoordinates\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":" + guiSettings.getWindowCoordinates() + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":" assertEquals(expected, guiSettings.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-02-23"}],"authorContributionMap":{"chaaaaun":1,"-":15}},{"path":"src/test/java/scrolls/elder/commons/core/VersionTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.commons.core;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.Assert;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class VersionTest {","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public void versionParsing_acceptableVersionString_parsedVersionCorrectly() {","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" verifyVersionParsedCorrectly(\"V0.0.0ea\", 0, 0, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" verifyVersionParsedCorrectly(\"V3.10.2\", 3, 10, 2, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" verifyVersionParsedCorrectly(\"V100.100.100ea\", 100, 100, 100, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public void versionParsing_wrongVersionString_throwIllegalArgumentException() {","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(IllegalArgumentException.class, () -\u003e Version.fromString(\"This is not a version string\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void versionConstructor_correctParameter_valueAsExpected() {","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" Version version \u003d new Version(19, 10, 20, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertEquals(19, version.getMajor());","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertEquals(10, version.getMinor());","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertEquals(20, version.getPatch());","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertEquals(true, version.isEarlyAccess());","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public void versionToString_validVersion_correctStringRepresentation() {","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" // boundary at 0","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" Version version \u003d new Version(0, 0, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertEquals(\"V0.0.0ea\", version.toString());","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" // normal values","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":" version \u003d new Version(4, 10, 5, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertEquals(\"V4.10.5\", version.toString());","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // big numbers","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" version \u003d new Version(100, 100, 100, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertEquals(\"V100.100.100ea\", version.toString());","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void versionComparable_validVersion_compareToIsCorrect() {","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" Version one;","lastModifiedDate":"2017-09-21"},{"lineNumber":52,"author":{"gitId":"-"},"content":" Version another;","lastModifiedDate":"2017-09-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // Tests equality","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":" one \u003d new Version(0, 0, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" another \u003d new Version(0, 0, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003d\u003d 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" one \u003d new Version(11, 12, 13, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" another \u003d new Version(11, 12, 13, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003d\u003d 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" // Tests different patch","lastModifiedDate":"2016-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" one \u003d new Version(0, 0, 5, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":" another \u003d new Version(0, 0, 0, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003e 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" // Tests different minor","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" one \u003d new Version(0, 0, 0, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":" another \u003d new Version(0, 5, 0, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003c 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":" // Tests different major","lastModifiedDate":"2016-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":" one \u003d new Version(10, 0, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":" another \u003d new Version(0, 0, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003e 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":" // Tests high major vs low minor","lastModifiedDate":"2016-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":" one \u003d new Version(10, 0, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" another \u003d new Version(0, 1, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003e 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":" // Tests high patch vs low minor","lastModifiedDate":"2016-08-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":" one \u003d new Version(0, 0, 10, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":" another \u003d new Version(0, 1, 0, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003c 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":88,"author":{"gitId":"-"},"content":" // Tests same major minor different patch","lastModifiedDate":"2016-08-08"},{"lineNumber":89,"author":{"gitId":"-"},"content":" one \u003d new Version(2, 15, 0, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":" another \u003d new Version(2, 15, 5, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003c 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":93,"author":{"gitId":"-"},"content":" // Tests early access vs not early access on same version number","lastModifiedDate":"2016-08-08"},{"lineNumber":94,"author":{"gitId":"-"},"content":" one \u003d new Version(2, 15, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":95,"author":{"gitId":"-"},"content":" another \u003d new Version(2, 15, 0, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003c 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":" // Tests early access lower version vs not early access higher version compare by version number first","lastModifiedDate":"2016-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":" one \u003d new Version(2, 15, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":" another \u003d new Version(2, 15, 5, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003c 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":" // Tests early access higher version vs not early access lower version compare by version number first","lastModifiedDate":"2016-08-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":" one \u003d new Version(2, 15, 0, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":" another \u003d new Version(2, 15, 5, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003c 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-08-08"},{"lineNumber":110,"author":{"gitId":"-"},"content":" public void versionComparable_validVersion_hashCodeIsCorrect() {","lastModifiedDate":"2016-08-08"},{"lineNumber":111,"author":{"gitId":"-"},"content":" Version version \u003d new Version(100, 100, 100, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertEquals(100100100, version.hashCode());","lastModifiedDate":"2016-08-08"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":" version \u003d new Version(10, 10, 10, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertEquals(1010010010, version.hashCode());","lastModifiedDate":"2016-08-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-08-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":" public void versionComparable_validVersion_equalIsCorrect() {","lastModifiedDate":"2016-08-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" Version one;","lastModifiedDate":"2016-10-16"},{"lineNumber":121,"author":{"gitId":"-"},"content":" Version another;","lastModifiedDate":"2016-10-16"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":" one \u003d new Version(0, 0, 0, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" another \u003d new Version(0, 0, 0, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertTrue(one.equals(another));","lastModifiedDate":"2016-08-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":" one \u003d new Version(100, 191, 275, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":" another \u003d new Version(100, 191, 275, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertTrue(one.equals(another));","lastModifiedDate":"2016-08-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":132,"author":{"gitId":"-"},"content":" private void verifyVersionParsedCorrectly(String versionString,","lastModifiedDate":"2016-08-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":" int major, int minor, int patch, boolean isEarlyAccess) {","lastModifiedDate":"2016-08-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":" assertEquals(new Version(major, minor, patch, isEarlyAccess), Version.fromString(versionString));","lastModifiedDate":"2016-08-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":136,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"chaaaaun":4,"-":132}},{"path":"src/test/java/scrolls/elder/commons/core/index/IndexTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.commons.core.index;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.Assert;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class IndexTest {","lastModifiedDate":"2017-05-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" public void createOneBasedIndex() {","lastModifiedDate":"2017-05-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" // invalid index","lastModifiedDate":"2017-05-24"},{"lineNumber":16,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(IndexOutOfBoundsException.class, () -\u003e Index.fromOneBased(0));","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" // check equality using the same base","lastModifiedDate":"2017-05-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertEquals(1, Index.fromOneBased(1).getOneBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" assertEquals(5, Index.fromOneBased(5).getOneBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" // convert from one-based index to zero-based index","lastModifiedDate":"2017-05-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" assertEquals(0, Index.fromOneBased(1).getZeroBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" assertEquals(4, Index.fromOneBased(5).getZeroBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public void createZeroBasedIndex() {","lastModifiedDate":"2017-05-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" // invalid index","lastModifiedDate":"2017-05-24"},{"lineNumber":30,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(IndexOutOfBoundsException.class, () -\u003e Index.fromZeroBased(-1));","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" // check equality using the same base","lastModifiedDate":"2017-05-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertEquals(0, Index.fromZeroBased(0).getZeroBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertEquals(5, Index.fromZeroBased(5).getZeroBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" // convert from zero-based index to one-based index","lastModifiedDate":"2017-05-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertEquals(1, Index.fromZeroBased(0).getOneBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertEquals(6, Index.fromZeroBased(5).getOneBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-05-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" final Index fifthPersonIndex \u003d Index.fromOneBased(5);","lastModifiedDate":"2017-05-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(fifthPersonIndex.equals(Index.fromOneBased(5)));","lastModifiedDate":"2017-05-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertTrue(fifthPersonIndex.equals(Index.fromZeroBased(4)));","lastModifiedDate":"2017-05-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertTrue(fifthPersonIndex.equals(fifthPersonIndex));","lastModifiedDate":"2017-05-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(fifthPersonIndex.equals(null));","lastModifiedDate":"2017-05-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertFalse(fifthPersonIndex.equals(5.0f));","lastModifiedDate":"2017-05-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertFalse(fifthPersonIndex.equals(Index.fromOneBased(1)));","lastModifiedDate":"2017-05-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromZeroBased(0);","lastModifiedDate":"2019-02-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" String expected \u003d Index.class.getCanonicalName() + \"{zeroBasedIndex\u003d\" + index.getZeroBased() + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertEquals(expected, index.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"chaaaaun":5,"-":63}},{"path":"src/test/java/scrolls/elder/commons/util/AppUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.commons.util;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertNotNull;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":7,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.Assert;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class AppUtilTest {","lastModifiedDate":"2016-09-30"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-30"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void getImage_exitingImage() {","lastModifiedDate":"2016-09-30"},{"lineNumber":13,"author":{"gitId":"-"},"content":" assertNotNull(AppUtil.getImage(\"/images/address_book_32.png\"));","lastModifiedDate":"2016-09-30"},{"lineNumber":14,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-30"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void getImage_nullGiven_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":18,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e AppUtil.getImage(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-30"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-15"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public void checkArgument_true_nothingHappens() {","lastModifiedDate":"2017-05-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":" AppUtil.checkArgument(true);","lastModifiedDate":"2017-05-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":" AppUtil.checkArgument(true, \"\");","lastModifiedDate":"2017-05-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public void checkArgument_falseWithoutErrorMessage_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":29,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(IllegalArgumentException.class, () -\u003e AppUtil.checkArgument(false));","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-15"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public void checkArgument_falseWithErrorMessage_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":34,"author":{"gitId":"-"},"content":" String errorMessage \u003d \"error message\";","lastModifiedDate":"2017-05-15"},{"lineNumber":35,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(IllegalArgumentException.class, errorMessage, ()","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"chaaaaun"},"content":" -\u003e AppUtil.checkArgument(false, errorMessage));","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-30"}],"authorContributionMap":{"chaaaaun":7,"-":31}},{"path":"src/test/java/scrolls/elder/commons/util/CollectionUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.commons.util;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-22"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2016-12-22"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-01-14"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-01-14"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-22"},{"lineNumber":13,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.Assert;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class CollectionUtilTest {","lastModifiedDate":"2016-12-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-22"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void requireAllNonNullVarargs() {","lastModifiedDate":"2017-05-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":" // no arguments","lastModifiedDate":"2017-01-14"},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertNullPointerExceptionNotThrown();","lastModifiedDate":"2017-05-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-22"},{"lineNumber":21,"author":{"gitId":"-"},"content":" // any non-empty argument list","lastModifiedDate":"2017-01-14"},{"lineNumber":22,"author":{"gitId":"-"},"content":" assertNullPointerExceptionNotThrown(new Object(), new Object());","lastModifiedDate":"2017-05-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":" assertNullPointerExceptionNotThrown(\"test\");","lastModifiedDate":"2017-05-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":" assertNullPointerExceptionNotThrown(\"\");","lastModifiedDate":"2017-05-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-22"},{"lineNumber":26,"author":{"gitId":"-"},"content":" // argument lists with just one null at the beginning","lastModifiedDate":"2017-01-14"},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertNullPointerExceptionThrown((Object) null);","lastModifiedDate":"2017-05-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertNullPointerExceptionThrown(null, \"\", new Object());","lastModifiedDate":"2017-05-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertNullPointerExceptionThrown(null, new Object(), new Object());","lastModifiedDate":"2017-05-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-22"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // argument lists with nulls in the middle","lastModifiedDate":"2017-01-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertNullPointerExceptionThrown(new Object(), null, null, \"test\");","lastModifiedDate":"2017-05-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertNullPointerExceptionThrown(\"\", null, new Object());","lastModifiedDate":"2017-05-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-22"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // argument lists with one null as the last argument","lastModifiedDate":"2017-01-14"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertNullPointerExceptionThrown(\"\", new Object(), null);","lastModifiedDate":"2017-05-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertNullPointerExceptionThrown(new Object(), new Object(), null);","lastModifiedDate":"2017-05-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-19"},{"lineNumber":39,"author":{"gitId":"-"},"content":" // null reference","lastModifiedDate":"2017-05-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertNullPointerExceptionThrown((Object[]) null);","lastModifiedDate":"2017-05-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-22"},{"lineNumber":42,"author":{"gitId":"-"},"content":" // confirms nulls inside lists in the argument list are not considered","lastModifiedDate":"2017-01-14"},{"lineNumber":43,"author":{"gitId":"-"},"content":" List\u003cObject\u003e containingNull \u003d Arrays.asList((Object) null);","lastModifiedDate":"2017-01-14"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertNullPointerExceptionNotThrown(containingNull, new Object());","lastModifiedDate":"2017-05-19"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-14"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-14"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-14"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void requireAllNonNullCollection() {","lastModifiedDate":"2017-05-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" // lists containing nulls in the front","lastModifiedDate":"2017-01-14"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertNullPointerExceptionThrown(Arrays.asList((Object) null));","lastModifiedDate":"2017-05-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertNullPointerExceptionThrown(Arrays.asList(null, new Object(), \"\"));","lastModifiedDate":"2017-05-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-14"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // lists containing nulls in the middle","lastModifiedDate":"2017-01-14"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertNullPointerExceptionThrown(Arrays.asList(\"spam\", null, new Object()));","lastModifiedDate":"2017-05-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertNullPointerExceptionThrown(Arrays.asList(\"spam\", null, \"eggs\", null, new Object()));","lastModifiedDate":"2017-05-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-14"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // lists containing nulls at the end","lastModifiedDate":"2017-01-14"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertNullPointerExceptionThrown(Arrays.asList(\"spam\", new Object(), null));","lastModifiedDate":"2017-05-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertNullPointerExceptionThrown(Arrays.asList(new Object(), null));","lastModifiedDate":"2017-05-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":" // null reference","lastModifiedDate":"2017-05-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertNullPointerExceptionThrown((Collection\u003cObject\u003e) null);","lastModifiedDate":"2017-05-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-14"},{"lineNumber":64,"author":{"gitId":"-"},"content":" // empty list","lastModifiedDate":"2017-01-14"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertNullPointerExceptionNotThrown(Collections.emptyList());","lastModifiedDate":"2017-05-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":" // list with all non-null elements","lastModifiedDate":"2017-01-14"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertNullPointerExceptionNotThrown(Arrays.asList(new Object(), \"ham\", Integer.valueOf(1)));","lastModifiedDate":"2018-04-01"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertNullPointerExceptionNotThrown(Arrays.asList(new Object()));","lastModifiedDate":"2017-05-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-14"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // confirms nulls inside nested lists are not considered","lastModifiedDate":"2017-01-14"},{"lineNumber":72,"author":{"gitId":"-"},"content":" List\u003cObject\u003e containingNull \u003d Arrays.asList((Object) null);","lastModifiedDate":"2017-01-14"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertNullPointerExceptionNotThrown(Arrays.asList(containingNull, new Object()));","lastModifiedDate":"2017-05-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-22"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-21"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void isAnyNonNull() {","lastModifiedDate":"2017-06-21"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertFalse(CollectionUtil.isAnyNonNull());","lastModifiedDate":"2017-06-21"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertFalse(CollectionUtil.isAnyNonNull((Object) null));","lastModifiedDate":"2017-06-21"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertFalse(CollectionUtil.isAnyNonNull((Object[]) null));","lastModifiedDate":"2017-06-21"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertTrue(CollectionUtil.isAnyNonNull(new Object()));","lastModifiedDate":"2017-06-21"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertTrue(CollectionUtil.isAnyNonNull(new Object(), null));","lastModifiedDate":"2017-06-21"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-21"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-21"},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-20"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Asserts that {@code CollectionUtil#requireAllNonNull(Object...)} throw {@code NullPointerException}","lastModifiedDate":"2017-08-20"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * if {@code objects} or any element of {@code objects} is null.","lastModifiedDate":"2017-08-20"},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-20"},{"lineNumber":89,"author":{"gitId":"-"},"content":" private void assertNullPointerExceptionThrown(Object... objects) {","lastModifiedDate":"2017-05-19"},{"lineNumber":90,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e CollectionUtil.requireAllNonNull(objects));","lastModifiedDate":"2024-03-12"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-20"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * Asserts that {@code CollectionUtil#requireAllNonNull(Collection\u003c?\u003e)} throw {@code NullPointerException}","lastModifiedDate":"2017-08-20"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * if {@code collection} or any element of {@code collection} is null.","lastModifiedDate":"2017-08-20"},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-20"},{"lineNumber":97,"author":{"gitId":"-"},"content":" private void assertNullPointerExceptionThrown(Collection\u003c?\u003e collection) {","lastModifiedDate":"2017-05-19"},{"lineNumber":98,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e CollectionUtil.requireAllNonNull(collection));","lastModifiedDate":"2024-03-12"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":" private void assertNullPointerExceptionNotThrown(Object... objects) {","lastModifiedDate":"2017-05-19"},{"lineNumber":102,"author":{"gitId":"chaaaaun"},"content":" CollectionUtil.requireAllNonNull(objects);","lastModifiedDate":"2024-03-12"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-19"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-19"},{"lineNumber":105,"author":{"gitId":"-"},"content":" private void assertNullPointerExceptionNotThrown(Collection\u003c?\u003e collection) {","lastModifiedDate":"2017-05-19"},{"lineNumber":106,"author":{"gitId":"chaaaaun"},"content":" CollectionUtil.requireAllNonNull(collection);","lastModifiedDate":"2024-03-12"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-19"},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-22"}],"authorContributionMap":{"chaaaaun":7,"-":101}},{"path":"src/test/java/scrolls/elder/commons/util/ConfigUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.commons.util;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2016-09-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-09-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.logging.Level;","lastModifiedDate":"2016-09-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":15,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.core.Config;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.Assert;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class ConfigUtilTest {","lastModifiedDate":"2016-09-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"ConfigUtilTest\");","lastModifiedDate":"2018-04-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public Path tempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void read_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":28,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e read(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void read_missingFile_emptyResult() throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(read(\"NonExistentFile.json\").isPresent());","lastModifiedDate":"2016-09-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void read_notJsonFormat_exceptionThrown() {","lastModifiedDate":"2019-03-23"},{"lineNumber":38,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(DataLoadingException.class, () -\u003e read(\"NotJsonFormatConfig.json\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void read_fileInOrder_successfullyRead() throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" Config expected \u003d getTypicalConfig();","lastModifiedDate":"2016-09-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" Config actual \u003d read(\"TypicalConfig.json\").get();","lastModifiedDate":"2016-09-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertEquals(expected, actual);","lastModifiedDate":"2016-09-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void read_valuesMissingFromFile_defaultValuesUsed() throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":52,"author":{"gitId":"-"},"content":" Config actual \u003d read(\"EmptyConfig.json\").get();","lastModifiedDate":"2016-09-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertEquals(new Config(), actual);","lastModifiedDate":"2016-09-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void read_extraValuesInFile_extraValuesIgnored() throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":58,"author":{"gitId":"-"},"content":" Config expected \u003d getTypicalConfig();","lastModifiedDate":"2016-09-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" Config actual \u003d read(\"ExtraValuesConfig.json\").get();","lastModifiedDate":"2016-09-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertEquals(expected, actual);","lastModifiedDate":"2016-09-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":" private Config getTypicalConfig() {","lastModifiedDate":"2016-09-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":" Config config \u003d new Config();","lastModifiedDate":"2016-09-25"},{"lineNumber":66,"author":{"gitId":"-"},"content":" config.setLogLevel(Level.INFO);","lastModifiedDate":"2016-09-25"},{"lineNumber":67,"author":{"gitId":"-"},"content":" config.setUserPrefsFilePath(Paths.get(\"preferences.json\"));","lastModifiedDate":"2018-04-12"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return config;","lastModifiedDate":"2016-09-25"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":71,"author":{"gitId":"-"},"content":" private Optional\u003cConfig\u003e read(String configFileInTestDataFolder) throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":72,"author":{"gitId":"-"},"content":" Path configFilePath \u003d addToTestDataPathIfNotNull(configFileInTestDataFolder);","lastModifiedDate":"2018-04-21"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return ConfigUtil.readConfig(configFilePath);","lastModifiedDate":"2016-12-20"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void save_nullConfig_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":78,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e save(null, \"SomeFile.json\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void save_nullFile_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":83,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e save(new Config(), null));","lastModifiedDate":"2024-03-12"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void saveConfig_allInOrder_success() throws DataLoadingException, IOException {","lastModifiedDate":"2023-06-14"},{"lineNumber":88,"author":{"gitId":"-"},"content":" Config original \u003d getTypicalConfig();","lastModifiedDate":"2016-09-24"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":90,"author":{"gitId":"-"},"content":" Path configFilePath \u003d tempDir.resolve(\"TempConfig.json\");","lastModifiedDate":"2019-04-25"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":92,"author":{"gitId":"-"},"content":" //Try writing when the file doesn\u0027t exist","lastModifiedDate":"2016-09-24"},{"lineNumber":93,"author":{"gitId":"-"},"content":" ConfigUtil.saveConfig(original, configFilePath);","lastModifiedDate":"2016-12-20"},{"lineNumber":94,"author":{"gitId":"-"},"content":" Config readBack \u003d ConfigUtil.readConfig(configFilePath).get();","lastModifiedDate":"2016-12-20"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertEquals(original, readBack);","lastModifiedDate":"2016-09-24"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":97,"author":{"gitId":"-"},"content":" //Try saving when the file exists","lastModifiedDate":"2016-09-24"},{"lineNumber":98,"author":{"gitId":"-"},"content":" original.setLogLevel(Level.FINE);","lastModifiedDate":"2016-09-25"},{"lineNumber":99,"author":{"gitId":"-"},"content":" ConfigUtil.saveConfig(original, configFilePath);","lastModifiedDate":"2016-12-20"},{"lineNumber":100,"author":{"gitId":"-"},"content":" readBack \u003d ConfigUtil.readConfig(configFilePath).get();","lastModifiedDate":"2016-12-20"},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertEquals(original, readBack);","lastModifiedDate":"2016-09-24"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":104,"author":{"gitId":"-"},"content":" private void save(Config config, String configFileInTestDataFolder) throws IOException {","lastModifiedDate":"2016-09-24"},{"lineNumber":105,"author":{"gitId":"-"},"content":" Path configFilePath \u003d addToTestDataPathIfNotNull(configFileInTestDataFolder);","lastModifiedDate":"2018-04-21"},{"lineNumber":106,"author":{"gitId":"-"},"content":" ConfigUtil.saveConfig(config, configFilePath);","lastModifiedDate":"2016-12-20"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":109,"author":{"gitId":"-"},"content":" private Path addToTestDataPathIfNotNull(String configFileInTestDataFolder) {","lastModifiedDate":"2018-04-21"},{"lineNumber":110,"author":{"gitId":"-"},"content":" return configFileInTestDataFolder !\u003d null","lastModifiedDate":"2016-09-24"},{"lineNumber":111,"author":{"gitId":"-"},"content":" ? TEST_DATA_FOLDER.resolve(configFileInTestDataFolder)","lastModifiedDate":"2018-04-21"},{"lineNumber":112,"author":{"gitId":"-"},"content":" : null;","lastModifiedDate":"2016-09-24"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":116,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-24"}],"authorContributionMap":{"chaaaaun":8,"-":108}},{"path":"src/test/java/scrolls/elder/commons/util/FileUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.commons.util;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.Assert;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class FileUtilTest {","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-21"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public void isValidPath() {","lastModifiedDate":"2018-04-21"},{"lineNumber":14,"author":{"gitId":"-"},"content":" // valid path","lastModifiedDate":"2018-04-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":" assertTrue(FileUtil.isValidPath(\"valid/file/path\"));","lastModifiedDate":"2018-04-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":" // invalid path","lastModifiedDate":"2018-04-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":" assertFalse(FileUtil.isValidPath(\"a\\0\"));","lastModifiedDate":"2018-04-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":" // null path -\u003e throws NullPointerException","lastModifiedDate":"2018-04-21"},{"lineNumber":21,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e FileUtil.isValidPath(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"chaaaaun":4,"-":20}},{"path":"src/test/java/scrolls/elder/commons/util/JsonUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.commons.util;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2016-10-07"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.SerializableTestClass;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.TestUtil;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Tests JSON Read and Write","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class JsonUtilTest {","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private static final Path SERIALIZATION_FILE \u003d TestUtil.getFilePathInSandboxFolder(\"serialize.json\");","lastModifiedDate":"2018-04-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-07"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public void serializeObjectToJsonFile_noExceptionThrown() throws IOException {","lastModifiedDate":"2016-10-07"},{"lineNumber":22,"author":{"gitId":"-"},"content":" SerializableTestClass serializableTestClass \u003d new SerializableTestClass();","lastModifiedDate":"2016-10-07"},{"lineNumber":23,"author":{"gitId":"-"},"content":" serializableTestClass.setTestValues();","lastModifiedDate":"2016-10-07"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":25,"author":{"gitId":"-"},"content":" JsonUtil.serializeObjectToJsonFile(SERIALIZATION_FILE, serializableTestClass);","lastModifiedDate":"2016-10-07"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertEquals(FileUtil.readFromFile(SERIALIZATION_FILE), SerializableTestClass.JSON_STRING_REPRESENTATION);","lastModifiedDate":"2016-10-07"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-07"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-07"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void deserializeObjectFromJsonFile_noExceptionThrown() throws IOException {","lastModifiedDate":"2016-10-07"},{"lineNumber":32,"author":{"gitId":"-"},"content":" FileUtil.writeToFile(SERIALIZATION_FILE, SerializableTestClass.JSON_STRING_REPRESENTATION);","lastModifiedDate":"2016-10-07"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":34,"author":{"gitId":"-"},"content":" SerializableTestClass serializableTestClass \u003d JsonUtil","lastModifiedDate":"2016-10-07"},{"lineNumber":35,"author":{"gitId":"-"},"content":" .deserializeObjectFromJsonFile(SERIALIZATION_FILE, SerializableTestClass.class);","lastModifiedDate":"2016-10-07"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertEquals(serializableTestClass.getName(), SerializableTestClass.getNameTestValue());","lastModifiedDate":"2016-10-07"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertEquals(serializableTestClass.getListOfLocalDateTimes(), SerializableTestClass.getListTestValues());","lastModifiedDate":"2016-10-07"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertEquals(serializableTestClass.getMapOfIntegerToString(), SerializableTestClass.getHashMapTestValues());","lastModifiedDate":"2016-10-07"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-07"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":42,"author":{"gitId":"-"},"content":" //TODO: @Test jsonUtil_readJsonStringToObjectInstance_correctObject()","lastModifiedDate":"2016-09-28"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":44,"author":{"gitId":"-"},"content":" //TODO: @Test jsonUtil_writeThenReadObjectToJson_correctObject()","lastModifiedDate":"2016-09-28"},{"lineNumber":45,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"chaaaaun":3,"-":42}},{"path":"src/test/java/scrolls/elder/commons/util/StringUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.commons.util;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.Assert;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class StringUtilTest {","lastModifiedDate":"2016-09-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":" //---------------- Tests for isNonZeroUnsignedInteger --------------------------------------","lastModifiedDate":"2019-02-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-22"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void isNonZeroUnsignedInteger() {","lastModifiedDate":"2019-02-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" // EP: empty strings","lastModifiedDate":"2016-10-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.isNonZeroUnsignedInteger(\"\")); // Boundary value","lastModifiedDate":"2017-06-02"},{"lineNumber":21,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.isNonZeroUnsignedInteger(\" \"));","lastModifiedDate":"2017-06-02"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" // EP: not a number","lastModifiedDate":"2016-10-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.isNonZeroUnsignedInteger(\"a\"));","lastModifiedDate":"2017-06-02"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.isNonZeroUnsignedInteger(\"aaa\"));","lastModifiedDate":"2017-06-02"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // EP: zero","lastModifiedDate":"2016-10-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.isNonZeroUnsignedInteger(\"0\"));","lastModifiedDate":"2017-06-02"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02"},{"lineNumber":30,"author":{"gitId":"-"},"content":" // EP: zero as prefix","lastModifiedDate":"2017-06-02"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.isNonZeroUnsignedInteger(\"01\"));","lastModifiedDate":"2017-06-02"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // EP: signed numbers","lastModifiedDate":"2016-10-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.isNonZeroUnsignedInteger(\"-1\"));","lastModifiedDate":"2017-06-02"},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.isNonZeroUnsignedInteger(\"+1\"));","lastModifiedDate":"2017-06-02"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" // EP: numbers with white space","lastModifiedDate":"2016-10-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.isNonZeroUnsignedInteger(\" 10 \")); // Leading/trailing spaces","lastModifiedDate":"2017-06-02"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.isNonZeroUnsignedInteger(\"1 0\")); // Spaces in the middle","lastModifiedDate":"2017-06-02"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02"},{"lineNumber":41,"author":{"gitId":"-"},"content":" // EP: number larger than Integer.MAX_VALUE","lastModifiedDate":"2017-06-02"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.isNonZeroUnsignedInteger(Long.toString(Integer.MAX_VALUE + 1)));","lastModifiedDate":"2017-06-02"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // EP: valid numbers, should return true","lastModifiedDate":"2016-10-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.isNonZeroUnsignedInteger(\"1\")); // Boundary value","lastModifiedDate":"2017-06-02"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.isNonZeroUnsignedInteger(\"10\"));","lastModifiedDate":"2017-06-02"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" //---------------- Tests for containsWordIgnoreCase --------------------------------------","lastModifiedDate":"2016-10-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Invalid equivalence partitions for word: null, empty, multiple words","lastModifiedDate":"2016-10-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Invalid equivalence partitions for sentence: null","lastModifiedDate":"2016-10-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * The four test cases below test one invalid input at a time.","lastModifiedDate":"2016-10-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void containsWordIgnoreCase_nullWord_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":60,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, ()","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"chaaaaun"},"content":" -\u003e StringUtil.containsWordIgnoreCase(\"typical sentence\", null));","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void containsWordIgnoreCase_emptyWord_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":66,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(IllegalArgumentException.class, \"Word parameter cannot be empty\", ()","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":" -\u003e StringUtil.containsWordIgnoreCase(\"typical sentence\", \" \"));","lastModifiedDate":"2019-03-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public void containsWordIgnoreCase_multipleWords_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":72,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(IllegalArgumentException.class, \"Word parameter should be a single word\", ()","lastModifiedDate":"2024-03-12"},{"lineNumber":73,"author":{"gitId":"-"},"content":" -\u003e StringUtil.containsWordIgnoreCase(\"typical sentence\", \"aaa BBB\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void containsWordIgnoreCase_nullSentence_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":78,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e StringUtil.containsWordIgnoreCase(null, \"abc\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" * Valid equivalence partitions for word:","lastModifiedDate":"2016-10-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * - any word","lastModifiedDate":"2016-10-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * - word containing symbols/numbers","lastModifiedDate":"2016-10-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * - word with leading/trailing spaces","lastModifiedDate":"2016-10-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Valid equivalence partitions for sentence:","lastModifiedDate":"2016-10-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * - empty string","lastModifiedDate":"2016-10-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * - one word","lastModifiedDate":"2016-10-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * - multiple words","lastModifiedDate":"2016-10-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * - sentence with extra spaces","lastModifiedDate":"2016-10-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Possible scenarios returning true:","lastModifiedDate":"2016-10-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * - matches first word in sentence","lastModifiedDate":"2016-10-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * - last word in sentence","lastModifiedDate":"2016-10-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * - middle word in sentence","lastModifiedDate":"2016-10-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * - matches multiple words","lastModifiedDate":"2016-10-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * Possible scenarios returning false:","lastModifiedDate":"2016-10-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * - query word matches part of a sentence word","lastModifiedDate":"2016-10-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * - sentence word matches part of the query word","lastModifiedDate":"2016-10-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * The test method below tries to verify all above with a reasonably low number of test cases.","lastModifiedDate":"2016-10-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public void containsWordIgnoreCase_validInputs_correctResult() {","lastModifiedDate":"2016-10-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":" // Empty sentence","lastModifiedDate":"2016-10-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.containsWordIgnoreCase(\"\", \"abc\")); // Boundary case","lastModifiedDate":"2016-10-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.containsWordIgnoreCase(\" \", \"123\"));","lastModifiedDate":"2016-10-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":" // Matches a partial word only","lastModifiedDate":"2016-10-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.containsWordIgnoreCase(\"aaa bbb ccc\", \"bb\")); // Sentence word bigger than query word","lastModifiedDate":"2016-10-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.containsWordIgnoreCase(\"aaa bbb ccc\", \"bbbb\")); // Query word bigger than sentence word","lastModifiedDate":"2016-10-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":" // Matches word in the sentence, different upper/lower case letters","lastModifiedDate":"2016-10-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.containsWordIgnoreCase(\"aaa bBb ccc\", \"Bbb\")); // First word (boundary case)","lastModifiedDate":"2016-10-13"},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.containsWordIgnoreCase(\"aaa bBb ccc@1\", \"CCc@1\")); // Last word (boundary case)","lastModifiedDate":"2016-10-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.containsWordIgnoreCase(\" AAA bBb ccc \", \"aaa\")); // Sentence has extra spaces","lastModifiedDate":"2016-10-13"},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.containsWordIgnoreCase(\"Aaa\", \"aaa\")); // Only one word in sentence (boundary case)","lastModifiedDate":"2016-10-13"},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.containsWordIgnoreCase(\"aaa bbb ccc\", \" ccc \")); // Leading/trailing spaces","lastModifiedDate":"2016-10-13"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":124,"author":{"gitId":"-"},"content":" // Matches multiple words in sentence","lastModifiedDate":"2016-10-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.containsWordIgnoreCase(\"AAA bBb ccc bbb\", \"bbB\"));","lastModifiedDate":"2016-10-13"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-13"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":128,"author":{"gitId":"-"},"content":" //---------------- Tests for getDetails --------------------------------------","lastModifiedDate":"2016-10-13"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":130,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-13"},{"lineNumber":131,"author":{"gitId":"-"},"content":" * Equivalence Partitions: null, valid throwable object","lastModifiedDate":"2016-10-13"},{"lineNumber":132,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-13"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":134,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-30"},{"lineNumber":135,"author":{"gitId":"-"},"content":" public void getDetails_exceptionGiven() {","lastModifiedDate":"2016-09-30"},{"lineNumber":136,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.getDetails(new FileNotFoundException(\"file not found\"))","lastModifiedDate":"2019-03-14"},{"lineNumber":137,"author":{"gitId":"-"},"content":" .contains(\"java.io.FileNotFoundException: file not found\"));","lastModifiedDate":"2019-03-14"},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-30"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":140,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-30"},{"lineNumber":141,"author":{"gitId":"-"},"content":" public void getDetails_nullGiven_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":142,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e StringUtil.getDetails(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-30"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":145,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22"}],"authorContributionMap":{"chaaaaun":9,"-":136}},{"path":"src/test/java/scrolls/elder/logic/LogicManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.logic;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":13,"author":{"gitId":"sdevih"},"content":"import scrolls.elder.logic.commands.AddCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"sdevih"},"content":"import scrolls.elder.logic.commands.CommandResult;","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"sdevih"},"content":"import scrolls.elder.logic.commands.CommandTestUtil;","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"sdevih"},"content":"import scrolls.elder.logic.commands.DeleteCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"sdevih"},"content":"import scrolls.elder.logic.commands.ListCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.Model;","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.ModelManager;","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.UserPrefs;","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Person;","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.storage.JsonAddressBookStorage;","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.storage.JsonUserPrefsStorage;","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.storage.StorageManager;","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.Assert;","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.PersonBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.TypicalPersons;","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":"public class LogicManagerTest {","lastModifiedDate":"2016-09-22"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_IO_EXCEPTION \u003d new IOException(\"dummy IO exception\");","lastModifiedDate":"2023-06-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_AD_EXCEPTION \u003d new AccessDeniedException(\"dummy access denied exception\");","lastModifiedDate":"2023-06-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public Path temporaryFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-20"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2018-12-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2019-04-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d","lastModifiedDate":"2019-04-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(temporaryFolder.resolve(\"addressBook.json\"));","lastModifiedDate":"2019-04-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2019-04-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2018-12-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-20"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void execute_invalidCommandFormat_throwsParseException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":53,"author":{"gitId":"-"},"content":" String invalidCommand \u003d \"uicfhmowqewca\";","lastModifiedDate":"2017-06-20"},{"lineNumber":54,"author":{"gitId":"chaaaaun"},"content":" assertParseException(invalidCommand, Messages.MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-14"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void execute_commandExecutionError_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":59,"author":{"gitId":"chaaaaun"},"content":" String deleteCommand \u003d \"delete 9 r/volunteer\";","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"sdevih"},"content":" String expectedMessage \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"sdevih"},"content":" DeleteCommand.MESSAGE_DELETE_PERSON_ERROR + Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"sdevih"},"content":" assertCommandException(deleteCommand, expectedMessage);","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void execute_validCommand_success() throws Exception {","lastModifiedDate":"2019-03-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":" String listCommand \u003d ListCommand.COMMAND_WORD;","lastModifiedDate":"2017-06-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertCommandSuccess(listCommand, ListCommand.MESSAGE_SUCCESS, model);","lastModifiedDate":"2017-06-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2019-04-25"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-06-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-06-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2023-06-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":85,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredPersonList().remove(0));","lastModifiedDate":"2024-03-12"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":88,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":95,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14"},{"lineNumber":96,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14"},{"lineNumber":97,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14"},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":102,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"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"},{"lineNumber":104,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":105,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":106,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11"},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":110,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14"},{"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"},{"lineNumber":112,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":113,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14"},{"lineNumber":114,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14"},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":118,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"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"},{"lineNumber":120,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":122,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-05-31"},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":128,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":129,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":130,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":131,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":132,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":133,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":134,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":135,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":136,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31"},{"lineNumber":137,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2024-03-12"},{"lineNumber":138,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19"},{"lineNumber":141,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":142,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13"},{"lineNumber":143,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13"},{"lineNumber":144,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13"},{"lineNumber":145,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13"},{"lineNumber":146,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":147,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13"},{"lineNumber":148,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":150,"author":{"gitId":"-"},"content":" // Inject LogicManager with an AddressBookStorage that throws the IOException e when saving","lastModifiedDate":"2023-06-13"},{"lineNumber":151,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(prefPath) {","lastModifiedDate":"2023-06-13"},{"lineNumber":152,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":153,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath)","lastModifiedDate":"2023-06-13"},{"lineNumber":154,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13"},{"lineNumber":155,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13"},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":157,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":159,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":160,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13"},{"lineNumber":161,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2023-06-13"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":163,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":165,"author":{"gitId":"-"},"content":" // Triggers the saveAddressBook method by executing an add command","lastModifiedDate":"2023-06-13"},{"lineNumber":166,"author":{"gitId":"chaaaaun"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + CommandTestUtil.NAME_DESC_AMY + CommandTestUtil.PHONE_DESC_AMY","lastModifiedDate":"2024-03-12"},{"lineNumber":167,"author":{"gitId":"gerteck"},"content":" + CommandTestUtil.EMAIL_DESC_AMY + CommandTestUtil.ADDRESS_DESC_AMY","lastModifiedDate":"2024-03-16"},{"lineNumber":168,"author":{"gitId":"gerteck"},"content":" + CommandTestUtil.ROLE_DESC_VOLUNTEER;","lastModifiedDate":"2024-03-16"},{"lineNumber":169,"author":{"gitId":"chaaaaun"},"content":" Person expectedPerson \u003d new PersonBuilder(TypicalPersons.AMY).withTags().build();","lastModifiedDate":"2024-03-12"},{"lineNumber":170,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13"},{"lineNumber":171,"author":{"gitId":"-"},"content":" expectedModel.addPerson(expectedPerson);","lastModifiedDate":"2023-06-13"},{"lineNumber":172,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13"},{"lineNumber":173,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":174,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"gerteck":2,"chaaaaun":20,"-":144,"sdevih":8}},{"path":"src/test/java/scrolls/elder/logic/commands/AddCommandIntegrationTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.logic.commands;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":3,"author":{"gitId":"chaaaaun"},"content":"import static scrolls.elder.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"chaaaaun"},"content":"import static scrolls.elder.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.Messages;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.Model;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.ModelManager;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.UserPrefs;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Person;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.PersonBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.TypicalPersons;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-15"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code AddCommand}.","lastModifiedDate":"2017-06-15"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-15"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class AddCommandIntegrationTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-15"},{"lineNumber":26,"author":{"gitId":"chaaaaun"},"content":" model \u003d new ModelManager(TypicalPersons.getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void execute_newPerson_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":31,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-15"},{"lineNumber":34,"author":{"gitId":"chaaaaun"},"content":" validPerson.setId(expectedModel.getAddressBook().getGlobalId());","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"-"},"content":" expectedModel.addPerson(validPerson);","lastModifiedDate":"2017-06-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertCommandSuccess(new AddCommand(validPerson), model,","lastModifiedDate":"2019-01-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validPerson)),","lastModifiedDate":"2019-02-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" expectedModel);","lastModifiedDate":"2019-02-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(0);","lastModifiedDate":"2018-01-10"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertCommandFailure(new AddCommand(personInList), model,","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" AddCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"chaaaaun":12,"-":37}},{"path":"src/test/java/scrolls/elder/logic/commands/AddCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.logic.commands;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-01-10"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-05-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":16,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.core.GuiSettings;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.Messages;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.AddressBook;","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.Model;","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.ReadOnlyUserPrefs;","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Person;","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.Assert;","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.PersonBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.TypicalPersons;","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class AddCommandTest {","lastModifiedDate":"2017-05-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":32,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e new AddCommand(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public void execute_personAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2017-05-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" ModelStubAcceptingPersonAdded modelStub \u003d new ModelStubAcceptingPersonAdded();","lastModifiedDate":"2017-05-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new AddCommand(validPerson).execute(modelStub);","lastModifiedDate":"2019-01-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertEquals(String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validPerson)),","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(validPerson), modelStub.personsAdded);","lastModifiedDate":"2017-05-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(validPerson);","lastModifiedDate":"2018-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" ModelStub modelStub \u003d new ModelStubWithPerson(validPerson);","lastModifiedDate":"2018-08-07"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":53,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(CommandException.class, AddCommand.MESSAGE_DUPLICATE_PERSON, ()","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"chaaaaun"},"content":" -\u003e addCommand.execute(modelStub));","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-22"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":59,"author":{"gitId":"-"},"content":" Person alice \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2017-06-22"},{"lineNumber":60,"author":{"gitId":"-"},"content":" Person bob \u003d new PersonBuilder().withName(\"Bob\").build();","lastModifiedDate":"2017-06-22"},{"lineNumber":61,"author":{"gitId":"-"},"content":" AddCommand addAliceCommand \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22"},{"lineNumber":62,"author":{"gitId":"-"},"content":" AddCommand addBobCommand \u003d new AddCommand(bob);","lastModifiedDate":"2017-06-22"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":64,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommand));","lastModifiedDate":"2017-06-22"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":67,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":" AddCommand addAliceCommandCopy \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommandCopy));","lastModifiedDate":"2017-06-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(1));","lastModifiedDate":"2017-06-22"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":74,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(null));","lastModifiedDate":"2017-06-22"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":77,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(addBobCommand));","lastModifiedDate":"2017-06-22"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"chaaaaun"},"content":" AddCommand addCommand \u003d new AddCommand(TypicalPersons.ALICE);","lastModifiedDate":"2024-03-12"},{"lineNumber":84,"author":{"gitId":"chaaaaun"},"content":" String expected \u003d AddCommand.class.getCanonicalName() + \"{toAdd\u003d\" + TypicalPersons.ALICE + \"}\";","lastModifiedDate":"2024-03-12"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertEquals(expected, addCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2017-05-12"},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":91,"author":{"gitId":"-"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2017-05-12"},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":93,"author":{"gitId":"chaaaaun"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2024-03-12"},{"lineNumber":94,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":98,"author":{"gitId":"chaaaaun"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2024-03-12"},{"lineNumber":99,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":104,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":109,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":113,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":114,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":118,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27"},{"lineNumber":119,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":123,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":124,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":128,"author":{"gitId":"chaaaaun"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2024-03-12"},{"lineNumber":129,"author":{"gitId":"chaaaaun"},"content":" return new AddressBook(0);","lastModifiedDate":"2024-03-17"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":133,"author":{"gitId":"chaaaaun"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2024-03-12"},{"lineNumber":134,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":137,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":138,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06"},{"lineNumber":139,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":142,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":143,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-08"},{"lineNumber":144,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":147,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":148,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":149,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":152,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":153,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":154,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":157,"author":{"gitId":"CJerrong"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":158,"author":{"gitId":"CJerrong"},"content":" public ObservableList\u003cPerson\u003e getFilteredVolunteerList() {","lastModifiedDate":"2024-03-20"},{"lineNumber":159,"author":{"gitId":"CJerrong"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-20"},{"lineNumber":160,"author":{"gitId":"CJerrong"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":161,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":162,"author":{"gitId":"CJerrong"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":163,"author":{"gitId":"CJerrong"},"content":" public ObservableList\u003cPerson\u003e getFilteredBefriendeeList() {","lastModifiedDate":"2024-03-20"},{"lineNumber":164,"author":{"gitId":"CJerrong"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-20"},{"lineNumber":165,"author":{"gitId":"CJerrong"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":166,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":167,"author":{"gitId":"CJerrong"},"content":" @Override","lastModifiedDate":"2024-03-22"},{"lineNumber":168,"author":{"gitId":"CJerrong"},"content":" public Person getPersonFromID(int i) {","lastModifiedDate":"2024-03-22"},{"lineNumber":169,"author":{"gitId":"CJerrong"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-22"},{"lineNumber":170,"author":{"gitId":"CJerrong"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":171,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":172,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":173,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10"},{"lineNumber":174,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":178,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":179,"author":{"gitId":"-"},"content":" * A Model stub that contains a single person.","lastModifiedDate":"2018-08-07"},{"lineNumber":180,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":181,"author":{"gitId":"-"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2018-08-07"},{"lineNumber":182,"author":{"gitId":"-"},"content":" private final Person person;","lastModifiedDate":"2018-08-07"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":184,"author":{"gitId":"-"},"content":" ModelStubWithPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":185,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":186,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2018-08-07"},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":189,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":190,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":191,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":192,"author":{"gitId":"-"},"content":" return this.person.isSamePerson(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":193,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":194,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":196,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":197,"author":{"gitId":"-"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2017-05-12"},{"lineNumber":198,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":199,"author":{"gitId":"-"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2017-05-12"},{"lineNumber":200,"author":{"gitId":"-"},"content":" final ArrayList\u003cPerson\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2017-05-12"},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":202,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07"},{"lineNumber":203,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":204,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":205,"author":{"gitId":"-"},"content":" return personsAdded.stream().anyMatch(person::isSamePerson);","lastModifiedDate":"2018-08-07"},{"lineNumber":206,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":208,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":209,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-08"},{"lineNumber":210,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":211,"author":{"gitId":"-"},"content":" personsAdded.add(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":212,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":214,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":215,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04"},{"lineNumber":216,"author":{"gitId":"chaaaaun"},"content":" return new AddressBook(0);","lastModifiedDate":"2024-03-17"},{"lineNumber":217,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":218,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":220,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12"}],"authorContributionMap":{"CJerrong":15,"chaaaaun":23,"-":182}},{"path":"src/test/java/scrolls/elder/logic/commands/ClearCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.logic.commands;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":3,"author":{"gitId":"chaaaaun"},"content":"import static scrolls.elder.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":7,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.AddressBook;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.Model;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.ModelManager;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.UserPrefs;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.TypicalPersons;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class ClearCommandTest {","lastModifiedDate":"2017-06-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public void execute_emptyAddressBook_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":17,"author":{"gitId":"-"},"content":" Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2018-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ClearCommand(), model, ClearCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void execute_nonEmptyAddressBook_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":25,"author":{"gitId":"chaaaaun"},"content":" Model model \u003d new ModelManager(TypicalPersons.getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"chaaaaun"},"content":" Model expectedModel \u003d new ModelManager(TypicalPersons.getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"chaaaaun"},"content":" expectedModel.setAddressBook(new AddressBook(0));","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ClearCommand(), model, ClearCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-08"}],"authorContributionMap":{"chaaaaun":10,"-":22}},{"path":"src/test/java/scrolls/elder/logic/commands/CommandResultTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.logic.commands;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class CommandResultTest {","lastModifiedDate":"2018-12-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-12-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new CommandResult(\"feedback\");","lastModifiedDate":"2018-12-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-12-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":" assertTrue(commandResult.equals(new CommandResult(\"feedback\")));","lastModifiedDate":"2018-12-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":" assertTrue(commandResult.equals(new CommandResult(\"feedback\", false, false)));","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":" assertTrue(commandResult.equals(commandResult));","lastModifiedDate":"2018-12-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(null));","lastModifiedDate":"2018-12-09"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":25,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":26,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(0.5f));","lastModifiedDate":"2018-12-09"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":28,"author":{"gitId":"-"},"content":" // different feedbackToUser value -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(new CommandResult(\"different\")));","lastModifiedDate":"2018-12-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // different showHelp value -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(new CommandResult(\"feedback\", true, false)));","lastModifiedDate":"2018-12-09"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":" // different exit value -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(new CommandResult(\"feedback\", false, true)));","lastModifiedDate":"2018-12-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void hashcode() {","lastModifiedDate":"2018-12-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new CommandResult(\"feedback\");","lastModifiedDate":"2018-12-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":" // same values -\u003e returns same hashcode","lastModifiedDate":"2018-12-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertEquals(commandResult.hashCode(), new CommandResult(\"feedback\").hashCode());","lastModifiedDate":"2018-12-09"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // different feedbackToUser value -\u003e returns different hashcode","lastModifiedDate":"2018-12-09"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertNotEquals(commandResult.hashCode(), new CommandResult(\"different\").hashCode());","lastModifiedDate":"2018-12-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // different showHelp value -\u003e returns different hashcode","lastModifiedDate":"2018-12-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertNotEquals(commandResult.hashCode(), new CommandResult(\"feedback\", true, false).hashCode());","lastModifiedDate":"2018-12-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // different exit value -\u003e returns different hashcode","lastModifiedDate":"2018-12-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertNotEquals(commandResult.hashCode(), new CommandResult(\"feedback\", false, true).hashCode());","lastModifiedDate":"2018-12-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new CommandResult(\"feedback\");","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" String expected \u003d CommandResult.class.getCanonicalName() + \"{feedbackToUser\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" + commandResult.getFeedbackToUser() + \", showHelp\u003d\" + commandResult.isShowHelp()","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" + \", exit\u003d\" + commandResult.isExit() + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertEquals(expected, commandResult.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-12-09"}],"authorContributionMap":{"chaaaaun":1,"-":62}},{"path":"src/test/java/scrolls/elder/logic/commands/CommandTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.logic.commands;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.core.index.Index;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.parser.CliSyntax;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.AddressBook;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.Model;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Person;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.Assert;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":25,"author":{"gitId":"chaaaaun"},"content":" public static final int VALID_ID_AMY \u003d 0;","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"chaaaaun"},"content":" public static final int VALID_ID_BOB \u003d 1;","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_AMY \u003d \"11111111\";","lastModifiedDate":"2017-07-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_BOB \u003d \"22222222\";","lastModifiedDate":"2017-07-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_AMY \u003d \"Block 312, Amy Street 1\";","lastModifiedDate":"2017-07-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_BOB \u003d \"Block 123, Bobby Street 3\";","lastModifiedDate":"2017-07-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_HUSBAND \u003d \"husband\";","lastModifiedDate":"2017-07-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_FRIEND \u003d \"friend\";","lastModifiedDate":"2017-07-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":38,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":39,"author":{"gitId":"gerteck"},"content":" public static final String VALID_ROLE_VOLUNTEER \u003d \"volunteer\";","lastModifiedDate":"2024-03-15"},{"lineNumber":40,"author":{"gitId":"gerteck"},"content":" public static final String VALID_ROLE_BEFRIENDEE \u003d \"befriendee\";","lastModifiedDate":"2024-03-15"},{"lineNumber":41,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":42,"author":{"gitId":"chaaaaun"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + CliSyntax.PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"chaaaaun"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + CliSyntax.PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"chaaaaun"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + CliSyntax.PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"chaaaaun"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + CliSyntax.PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"chaaaaun"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + CliSyntax.PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"chaaaaun"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + CliSyntax.PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"chaaaaun"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + CliSyntax.PREFIX_ADDRESS + VALID_ADDRESS_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"chaaaaun"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + CliSyntax.PREFIX_ADDRESS + VALID_ADDRESS_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"chaaaaun"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + CliSyntax.PREFIX_TAG + VALID_TAG_FRIEND;","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"chaaaaun"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + CliSyntax.PREFIX_TAG + VALID_TAG_HUSBAND;","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"gerteck"},"content":" public static final String ROLE_DESC_VOLUNTEER \u003d \" \" + CliSyntax.PREFIX_ROLE + VALID_ROLE_VOLUNTEER;","lastModifiedDate":"2024-03-15"},{"lineNumber":54,"author":{"gitId":"gerteck"},"content":" public static final String ROLE_DESC_BEFRIENDEE \u003d \" \" + CliSyntax.PREFIX_ROLE + VALID_ROLE_BEFRIENDEE;","lastModifiedDate":"2024-03-15"},{"lineNumber":55,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":56,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":57,"author":{"gitId":"chaaaaun"},"content":" public static final String INVALID_NAME_DESC \u003d \" \" + CliSyntax.PREFIX_NAME + \"James\u0026\"; // \u0027\u0026\u0027 not allowed in names","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"chaaaaun"},"content":" public static final String INVALID_PHONE_DESC \u003d \" \" + CliSyntax.PREFIX_PHONE + \"911a\"; // \u0027a\u0027 not allowed in phones","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"chaaaaun"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + CliSyntax.PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"chaaaaun"},"content":" public static final String INVALID_ADDRESS_DESC \u003d \" \"","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"chaaaaun"},"content":" + CliSyntax.PREFIX_ADDRESS; // empty string not allowed for addresses","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"chaaaaun"},"content":" public static final String INVALID_TAG_DESC \u003d \" \" + CliSyntax.PREFIX_TAG + \"hubby*\"; // \u0027*\u0027 not allowed in tags","lastModifiedDate":"2024-03-12"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":64,"author":{"gitId":"gerteck"},"content":" public static final String INVALID_ROLE_DESC \u003d \" \" + CliSyntax.PREFIX_ROLE + \"person\";","lastModifiedDate":"2024-03-15"},{"lineNumber":65,"author":{"gitId":"gerteck"},"content":" // only values \u0027volunteer\u0027 and \u0027befriendee\u0027 are allowed in role","lastModifiedDate":"2024-03-15"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":70,"author":{"gitId":"gerteck"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY_VOLUNTEER;","lastModifiedDate":"2024-03-15"},{"lineNumber":71,"author":{"gitId":"gerteck"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB_BEFRIENDEE;","lastModifiedDate":"2024-03-15"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":73,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05"},{"lineNumber":74,"author":{"gitId":"gerteck"},"content":" DESC_AMY_VOLUNTEER \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2024-03-15"},{"lineNumber":75,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-07-05"},{"lineNumber":76,"author":{"gitId":"gerteck"},"content":" .withRole(VALID_ROLE_VOLUNTEER)","lastModifiedDate":"2024-03-15"},{"lineNumber":77,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05"},{"lineNumber":78,"author":{"gitId":"gerteck"},"content":" DESC_BOB_BEFRIENDEE \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2024-03-15"},{"lineNumber":79,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2017-07-05"},{"lineNumber":80,"author":{"gitId":"gerteck"},"content":" .withRole(VALID_ROLE_BEFRIENDEE)","lastModifiedDate":"2024-03-15"},{"lineNumber":81,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":84,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25"},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":89,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25"},{"lineNumber":90,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":91,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":92,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09"},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":95,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15"},{"lineNumber":96,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":100,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09"},{"lineNumber":103,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25"},{"lineNumber":105,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":106,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09"},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":110,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":111,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":112,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":113,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":114,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25"},{"lineNumber":115,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":116,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25"},{"lineNumber":117,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05"},{"lineNumber":118,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05"},{"lineNumber":119,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":120,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":122,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2024-03-12"},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":126,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20"},{"lineNumber":127,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show only the person at the given {@code targetIndex} in the","lastModifiedDate":"2018-01-31"},{"lineNumber":128,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31"},{"lineNumber":129,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20"},{"lineNumber":130,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31"},{"lineNumber":131,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31"},{"lineNumber":133,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31"},{"lineNumber":134,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20"},{"lineNumber":135,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":137,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08"},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":140,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"gerteck":16,"chaaaaun":30,"-":94}},{"path":"src/test/java/scrolls/elder/logic/commands/DeleteCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.logic.commands;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"chaaaaun"},"content":"import static scrolls.elder.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"chaaaaun"},"content":"import static scrolls.elder.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":"import static scrolls.elder.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":12,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.core.index.Index;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.Messages;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.Model;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.ModelManager;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.UserPrefs;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Person;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Role;","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.TypicalIndexes;","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.TypicalPersons;","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":22,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2020-12-16"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * {@code DeleteCommand}.","lastModifiedDate":"2018-01-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class DeleteCommandTest {","lastModifiedDate":"2017-06-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":29,"author":{"gitId":"sdevih"},"content":" private static final String ROLE_STRING_VOLUNTEER \u003d \"volunteer\";","lastModifiedDate":"2024-03-22"},{"lineNumber":30,"author":{"gitId":"sdevih"},"content":" private static final String ROLE_STRING_BEFRIENDEE \u003d \"befriendee\";","lastModifiedDate":"2024-03-22"},{"lineNumber":31,"author":{"gitId":"sdevih"},"content":" private static final Role ROLE_VOLUNTEER \u003d new Role(ROLE_STRING_VOLUNTEER);","lastModifiedDate":"2024-03-22"},{"lineNumber":32,"author":{"gitId":"sdevih"},"content":" private static final Role ROLE_BEFRIENDEE \u003d new Role(ROLE_STRING_BEFRIENDEE);","lastModifiedDate":"2024-03-22"},{"lineNumber":33,"author":{"gitId":"chaaaaun"},"content":" private Model model \u003d new ModelManager(TypicalPersons.getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public void execute_validIndexUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":37,"author":{"gitId":"chaaaaun"},"content":" Person personToDelete \u003d model.getFilteredVolunteerList().get(TypicalIndexes.INDEX_SECOND_PERSON.getZeroBased());","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"sdevih"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(TypicalIndexes.INDEX_SECOND_PERSON, ROLE_VOLUNTEER);","lastModifiedDate":"2024-03-22"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":51,"author":{"gitId":"chaaaaun"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredVolunteerList().size() + 1);","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"sdevih"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(outOfBoundIndex, ROLE_VOLUNTEER);","lastModifiedDate":"2024-03-22"},{"lineNumber":53,"author":{"gitId":"sdevih"},"content":" String expectedMessage \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"sdevih"},"content":" DeleteCommand.MESSAGE_DELETE_PERSON_ERROR + Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"sdevih"},"content":" assertCommandFailure(deleteCommand, model, expectedMessage);","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void execute_validIndexFilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":60,"author":{"gitId":"sdevih"},"content":" showPersonAtIndex(model, TypicalIndexes.INDEX_SECOND_PERSON);","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":62,"author":{"gitId":"chaaaaun"},"content":" Person personToDelete \u003d model.getFilteredVolunteerList().get(TypicalIndexes.INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"sdevih"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(TypicalIndexes.INDEX_FIRST_PERSON, ROLE_VOLUNTEER);","lastModifiedDate":"2024-03-22"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":65,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2019-02-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":68,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":69,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":" showNoPerson(expectedModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void execute_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":77,"author":{"gitId":"chaaaaun"},"content":" showPersonAtIndex(model, TypicalIndexes.INDEX_FIRST_PERSON);","lastModifiedDate":"2024-03-12"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":79,"author":{"gitId":"chaaaaun"},"content":" Index outOfBoundIndex \u003d TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2024-03-12"},{"lineNumber":80,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-06-05"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-06-05"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":83,"author":{"gitId":"sdevih"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(outOfBoundIndex, ROLE_VOLUNTEER);","lastModifiedDate":"2024-03-22"},{"lineNumber":84,"author":{"gitId":"sdevih"},"content":" String expectedMessage \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":85,"author":{"gitId":"sdevih"},"content":" DeleteCommand.MESSAGE_DELETE_PERSON_ERROR + Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2024-03-21"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":87,"author":{"gitId":"sdevih"},"content":" assertCommandFailure(deleteCommand, model, expectedMessage);","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":89,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":90,"author":{"gitId":"sdevih"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":91,"author":{"gitId":"sdevih"},"content":" public void execute_personPaired_throwsCommandException() {","lastModifiedDate":"2024-03-21"},{"lineNumber":92,"author":{"gitId":"sdevih"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(TypicalIndexes.INDEX_FIRST_PERSON, ROLE_VOLUNTEER);","lastModifiedDate":"2024-03-22"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":94,"author":{"gitId":"sdevih"},"content":" String expectedMessage \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":95,"author":{"gitId":"sdevih"},"content":" DeleteCommand.MESSAGE_DELETE_PERSON_ERROR + Messages.MESSAGE_CONTACT_PAIRED_BEFORE_DELETE;","lastModifiedDate":"2024-03-22"},{"lineNumber":96,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":97,"author":{"gitId":"sdevih"},"content":" assertCommandFailure(deleteCommand, model, expectedMessage);","lastModifiedDate":"2024-03-21"},{"lineNumber":98,"author":{"gitId":"sdevih"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":99,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":100,"author":{"gitId":"sdevih"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":101,"author":{"gitId":"sdevih"},"content":" public void execute_personNotPaired_success() {","lastModifiedDate":"2024-03-22"},{"lineNumber":102,"author":{"gitId":"sdevih"},"content":" Person personToDelete \u003d","lastModifiedDate":"2024-03-22"},{"lineNumber":103,"author":{"gitId":"sdevih"},"content":" model.getFilteredBefriendeeList().get(TypicalIndexes.INDEX_SECOND_PERSON.getZeroBased());","lastModifiedDate":"2024-03-22"},{"lineNumber":104,"author":{"gitId":"sdevih"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(TypicalIndexes.INDEX_SECOND_PERSON, ROLE_BEFRIENDEE);","lastModifiedDate":"2024-03-22"},{"lineNumber":105,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":106,"author":{"gitId":"sdevih"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2024-03-22"},{"lineNumber":107,"author":{"gitId":"sdevih"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2024-03-22"},{"lineNumber":108,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":109,"author":{"gitId":"sdevih"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-22"},{"lineNumber":110,"author":{"gitId":"sdevih"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2024-03-22"},{"lineNumber":111,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":112,"author":{"gitId":"sdevih"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-22"},{"lineNumber":113,"author":{"gitId":"sdevih"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":114,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":117,"author":{"gitId":"sdevih"},"content":" DeleteCommand deleteFirstCommand \u003d new DeleteCommand(TypicalIndexes.INDEX_FIRST_PERSON, ROLE_VOLUNTEER);","lastModifiedDate":"2024-03-22"},{"lineNumber":118,"author":{"gitId":"sdevih"},"content":" DeleteCommand deleteSecondCommand \u003d new DeleteCommand(TypicalIndexes.INDEX_SECOND_PERSON, ROLE_VOLUNTEER);","lastModifiedDate":"2024-03-22"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":120,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":123,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":124,"author":{"gitId":"sdevih"},"content":" DeleteCommand deleteFirstCommandCopy \u003d new DeleteCommand(TypicalIndexes.INDEX_FIRST_PERSON, ROLE_VOLUNTEER);","lastModifiedDate":"2024-03-22"},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2017-06-27"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":127,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2017-06-27"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":130,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":131,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2017-06-27"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":133,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":134,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":137,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23"},{"lineNumber":140,"author":{"gitId":"sdevih"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(targetIndex, ROLE_VOLUNTEER);","lastModifiedDate":"2024-03-22"},{"lineNumber":141,"author":{"gitId":"chaaaaun"},"content":" String expected \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":142,"author":{"gitId":"chaaaaun"},"content":" String.format(\"%s{targetIndex\u003d%s, role\u003d%s}\", DeleteCommand.class.getCanonicalName(), targetIndex,","lastModifiedDate":"2024-03-21"},{"lineNumber":143,"author":{"gitId":"sdevih"},"content":" ROLE_STRING_VOLUNTEER);","lastModifiedDate":"2024-03-22"},{"lineNumber":144,"author":{"gitId":"-"},"content":" assertEquals(expected, deleteCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":148,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show no one.","lastModifiedDate":"2017-06-05"},{"lineNumber":149,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":150,"author":{"gitId":"-"},"content":" private void showNoPerson(Model model) {","lastModifiedDate":"2017-06-05"},{"lineNumber":151,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(p -\u003e false);","lastModifiedDate":"2017-06-12"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":153,"author":{"gitId":"-"},"content":" assertTrue(model.getFilteredPersonList().isEmpty());","lastModifiedDate":"2018-02-08"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":155,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"chaaaaun":22,"-":88,"sdevih":45}},{"path":"src/test/java/scrolls/elder/logic/commands/EditCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.logic.commands;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"chaaaaun"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"chaaaaun"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"chaaaaun"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"chaaaaun"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.core.index.Index;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.Messages;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.AddressBook;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.Model;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.ModelManager;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.UserPrefs;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Person;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"soons1"},"content":"import scrolls.elder.model.person.Role;","lastModifiedDate":"2024-03-22"},{"lineNumber":17,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.PersonBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.TypicalIndexes;","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.TypicalPersons;","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"chaaaaun"},"content":"/**","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"chaaaaun"},"content":" * Contains integration tests (interaction with the Model) and unit tests for EditCommand.","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"chaaaaun"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"chaaaaun"},"content":"public class EditCommandTest {","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"chaaaaun"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"chaaaaun"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"soons1"},"content":" Person editedPerson \u003d new PersonBuilder(TypicalPersons.BENSON).build();","lastModifiedDate":"2024-03-22"},{"lineNumber":31,"author":{"gitId":"chaaaaun"},"content":" EditCommand.EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(editedPerson).build();","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"soons1"},"content":" EditCommand editCommand \u003d new EditCommand(TypicalIndexes.INDEX_SECOND_PERSON, descriptor);","lastModifiedDate":"2024-03-22"},{"lineNumber":33,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"chaaaaun"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"sdevih"},"content":" Model model \u003d new ModelManager(TypicalPersons.getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"chaaaaun"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"soons1"},"content":" expectedModel.setPerson(expectedModel.getFilteredPersonList().get(1), editedPerson);","lastModifiedDate":"2024-03-22"},{"lineNumber":39,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"chaaaaun"},"content":" CommandTestUtil.assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"chaaaaun"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"chaaaaun"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"chaaaaun"},"content":" Model model \u003d new ModelManager(TypicalPersons.getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"soons1"},"content":" Index indexSecondPerson \u003d Index.fromOneBased(2);","lastModifiedDate":"2024-03-22"},{"lineNumber":47,"author":{"gitId":"soons1"},"content":" Person secondPerson \u003d model.getFilteredVolunteerList().get(indexSecondPerson.getZeroBased());","lastModifiedDate":"2024-03-22"},{"lineNumber":48,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"soons1"},"content":" PersonBuilder personInList \u003d new PersonBuilder(secondPerson);","lastModifiedDate":"2024-03-22"},{"lineNumber":50,"author":{"gitId":"chaaaaun"},"content":" Person editedPerson \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"chaaaaun"},"content":" personInList.withName(CommandTestUtil.VALID_NAME_BOB).withPhone(CommandTestUtil.VALID_PHONE_BOB)","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"gerteck"},"content":" .withTags(CommandTestUtil.VALID_TAG_HUSBAND)","lastModifiedDate":"2024-03-15"},{"lineNumber":53,"author":{"gitId":"soons1"},"content":" .withRole(CommandTestUtil.VALID_ROLE_VOLUNTEER).build();","lastModifiedDate":"2024-03-22"},{"lineNumber":54,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"chaaaaun"},"content":" EditCommand.EditPersonDescriptor descriptor \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"chaaaaun"},"content":" new EditPersonDescriptorBuilder().withName(CommandTestUtil.VALID_NAME_BOB)","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"CJerrong"},"content":" .withPhone(CommandTestUtil.VALID_PHONE_BOB).withTags(CommandTestUtil.VALID_TAG_HUSBAND)","lastModifiedDate":"2024-03-15"},{"lineNumber":58,"author":{"gitId":"soons1"},"content":" .withRole(CommandTestUtil.VALID_ROLE_VOLUNTEER).build();","lastModifiedDate":"2024-03-22"},{"lineNumber":59,"author":{"gitId":"soons1"},"content":" EditCommand editCommand \u003d new EditCommand(indexSecondPerson, descriptor);","lastModifiedDate":"2024-03-22"},{"lineNumber":60,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"chaaaaun"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":63,"author":{"gitId":"chaaaaun"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"soons1"},"content":" expectedModel.setPerson(","lastModifiedDate":"2024-03-22"},{"lineNumber":65,"author":{"gitId":"soons1"},"content":" expectedModel.getFilteredVolunteerList().get(indexSecondPerson.getZeroBased()), editedPerson);","lastModifiedDate":"2024-03-22"},{"lineNumber":66,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"chaaaaun"},"content":" CommandTestUtil.assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-12"},{"lineNumber":68,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":69,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"chaaaaun"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":71,"author":{"gitId":"soons1"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2024-03-22"},{"lineNumber":72,"author":{"gitId":"sdevih"},"content":" Model model \u003d new ModelManager(TypicalPersons.getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"soons1"},"content":" EditCommand.EditPersonDescriptor epd \u003d new EditCommand.EditPersonDescriptor();","lastModifiedDate":"2024-03-22"},{"lineNumber":75,"author":{"gitId":"soons1"},"content":" epd.setRole(new Role(\"volunteer\"));","lastModifiedDate":"2024-03-22"},{"lineNumber":76,"author":{"gitId":"chaaaaun"},"content":" EditCommand editCommand \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":77,"author":{"gitId":"soons1"},"content":" new EditCommand(TypicalIndexes.INDEX_FIRST_PERSON, epd);","lastModifiedDate":"2024-03-22"},{"lineNumber":78,"author":{"gitId":"chaaaaun"},"content":" Person editedPerson \u003d model.getFilteredPersonList().get(TypicalIndexes.INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-03-12"},{"lineNumber":79,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":80,"author":{"gitId":"chaaaaun"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2024-03-12"},{"lineNumber":81,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":82,"author":{"gitId":"chaaaaun"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-03-12"},{"lineNumber":83,"author":{"gitId":"chaaaaun"},"content":" CommandTestUtil.assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-12"},{"lineNumber":84,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":85,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":86,"author":{"gitId":"chaaaaun"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":87,"author":{"gitId":"chaaaaun"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2024-03-12"},{"lineNumber":88,"author":{"gitId":"sdevih"},"content":" Model model \u003d new ModelManager(TypicalPersons.getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-21"},{"lineNumber":89,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":90,"author":{"gitId":"soons1"},"content":" CommandTestUtil.showPersonAtIndex(model, TypicalIndexes.INDEX_SECOND_PERSON);","lastModifiedDate":"2024-03-22"},{"lineNumber":91,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":92,"author":{"gitId":"chaaaaun"},"content":" Person personInFilteredList \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":93,"author":{"gitId":"chaaaaun"},"content":" model.getFilteredPersonList().get(TypicalIndexes.INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-03-12"},{"lineNumber":94,"author":{"gitId":"chaaaaun"},"content":" Person editedPerson \u003d new PersonBuilder(personInFilteredList).withName(CommandTestUtil.VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-12"},{"lineNumber":95,"author":{"gitId":"chaaaaun"},"content":" EditCommand editCommand \u003d new EditCommand(TypicalIndexes.INDEX_FIRST_PERSON,","lastModifiedDate":"2024-03-12"},{"lineNumber":96,"author":{"gitId":"soons1"},"content":" new EditPersonDescriptorBuilder().withName(CommandTestUtil.VALID_NAME_BOB)","lastModifiedDate":"2024-03-22"},{"lineNumber":97,"author":{"gitId":"soons1"},"content":" .withRole(\"volunteer\").build());","lastModifiedDate":"2024-03-22"},{"lineNumber":98,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":99,"author":{"gitId":"chaaaaun"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2024-03-12"},{"lineNumber":100,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":101,"author":{"gitId":"chaaaaun"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-03-12"},{"lineNumber":102,"author":{"gitId":"soons1"},"content":" expectedModel.setPerson(expectedModel.getFilteredPersonList().get(1), editedPerson);","lastModifiedDate":"2024-03-22"},{"lineNumber":103,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":104,"author":{"gitId":"chaaaaun"},"content":" CommandTestUtil.assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-12"},{"lineNumber":105,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":106,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":107,"author":{"gitId":"chaaaaun"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":108,"author":{"gitId":"chaaaaun"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2024-03-12"},{"lineNumber":109,"author":{"gitId":"sdevih"},"content":" Model model \u003d new ModelManager(TypicalPersons.getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-21"},{"lineNumber":110,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":111,"author":{"gitId":"chaaaaun"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2024-03-12"},{"lineNumber":112,"author":{"gitId":"chaaaaun"},"content":" EditCommand.EditPersonDescriptor descriptor \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":113,"author":{"gitId":"soons1"},"content":" new EditPersonDescriptorBuilder().withName(CommandTestUtil.VALID_NAME_BOB)","lastModifiedDate":"2024-03-22"},{"lineNumber":114,"author":{"gitId":"soons1"},"content":" .withRole(\"befriendee\").build();","lastModifiedDate":"2024-03-22"},{"lineNumber":115,"author":{"gitId":"chaaaaun"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2024-03-12"},{"lineNumber":116,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":117,"author":{"gitId":"chaaaaun"},"content":" CommandTestUtil.assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-12"},{"lineNumber":118,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":119,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":120,"author":{"gitId":"chaaaaun"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":121,"author":{"gitId":"chaaaaun"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2024-03-12"},{"lineNumber":122,"author":{"gitId":"chaaaaun"},"content":" * but smaller than size of address book","lastModifiedDate":"2024-03-12"},{"lineNumber":123,"author":{"gitId":"chaaaaun"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":124,"author":{"gitId":"chaaaaun"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":125,"author":{"gitId":"chaaaaun"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2024-03-12"},{"lineNumber":126,"author":{"gitId":"sdevih"},"content":" Model model \u003d new ModelManager(TypicalPersons.getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-21"},{"lineNumber":127,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":128,"author":{"gitId":"chaaaaun"},"content":" CommandTestUtil.showPersonAtIndex(model, TypicalIndexes.INDEX_FIRST_PERSON);","lastModifiedDate":"2024-03-12"},{"lineNumber":129,"author":{"gitId":"chaaaaun"},"content":" Index outOfBoundIndex \u003d TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2024-03-12"},{"lineNumber":130,"author":{"gitId":"chaaaaun"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2024-03-12"},{"lineNumber":131,"author":{"gitId":"chaaaaun"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2024-03-12"},{"lineNumber":132,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":133,"author":{"gitId":"chaaaaun"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex,","lastModifiedDate":"2024-03-12"},{"lineNumber":134,"author":{"gitId":"soons1"},"content":" new EditPersonDescriptorBuilder().withName(CommandTestUtil.VALID_NAME_BOB)","lastModifiedDate":"2024-03-22"},{"lineNumber":135,"author":{"gitId":"soons1"},"content":" .withRole(\"volunteer\").build());","lastModifiedDate":"2024-03-22"},{"lineNumber":136,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":137,"author":{"gitId":"chaaaaun"},"content":" CommandTestUtil.assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-12"},{"lineNumber":138,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":139,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":140,"author":{"gitId":"chaaaaun"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":141,"author":{"gitId":"chaaaaun"},"content":" public void equals() {","lastModifiedDate":"2024-03-12"},{"lineNumber":142,"author":{"gitId":"chaaaaun"},"content":" final EditCommand standardCommand \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":143,"author":{"gitId":"gerteck"},"content":" new EditCommand(TypicalIndexes.INDEX_FIRST_PERSON, CommandTestUtil.DESC_AMY_VOLUNTEER);","lastModifiedDate":"2024-03-15"},{"lineNumber":144,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":145,"author":{"gitId":"chaaaaun"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-12"},{"lineNumber":146,"author":{"gitId":"chaaaaun"},"content":" EditCommand.EditPersonDescriptor copyDescriptor \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":147,"author":{"gitId":"gerteck"},"content":" new EditCommand.EditPersonDescriptor(CommandTestUtil.DESC_AMY_VOLUNTEER);","lastModifiedDate":"2024-03-15"},{"lineNumber":148,"author":{"gitId":"chaaaaun"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(TypicalIndexes.INDEX_FIRST_PERSON, copyDescriptor);","lastModifiedDate":"2024-03-12"},{"lineNumber":149,"author":{"gitId":"chaaaaun"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2024-03-12"},{"lineNumber":150,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":151,"author":{"gitId":"chaaaaun"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-12"},{"lineNumber":152,"author":{"gitId":"chaaaaun"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2024-03-12"},{"lineNumber":153,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":154,"author":{"gitId":"chaaaaun"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":155,"author":{"gitId":"chaaaaun"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":156,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":157,"author":{"gitId":"chaaaaun"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":158,"author":{"gitId":"chaaaaun"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2024-03-12"},{"lineNumber":159,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":160,"author":{"gitId":"chaaaaun"},"content":" // different index -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":161,"author":{"gitId":"chaaaaun"},"content":" assertFalse(","lastModifiedDate":"2024-03-12"},{"lineNumber":162,"author":{"gitId":"gerteck"},"content":" standardCommand.equals(new EditCommand(TypicalIndexes.INDEX_SECOND_PERSON,","lastModifiedDate":"2024-03-15"},{"lineNumber":163,"author":{"gitId":"gerteck"},"content":" CommandTestUtil.DESC_AMY_VOLUNTEER)));","lastModifiedDate":"2024-03-15"},{"lineNumber":164,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":165,"author":{"gitId":"chaaaaun"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":166,"author":{"gitId":"chaaaaun"},"content":" assertFalse(","lastModifiedDate":"2024-03-12"},{"lineNumber":167,"author":{"gitId":"gerteck"},"content":" standardCommand.equals(new EditCommand(TypicalIndexes.INDEX_FIRST_PERSON,","lastModifiedDate":"2024-03-15"},{"lineNumber":168,"author":{"gitId":"gerteck"},"content":" CommandTestUtil.DESC_BOB_BEFRIENDEE)));","lastModifiedDate":"2024-03-15"},{"lineNumber":169,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":170,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":171,"author":{"gitId":"chaaaaun"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":172,"author":{"gitId":"chaaaaun"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-12"},{"lineNumber":173,"author":{"gitId":"chaaaaun"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-03-12"},{"lineNumber":174,"author":{"gitId":"chaaaaun"},"content":" EditCommand.EditPersonDescriptor editPersonDescriptor \u003d new EditCommand.EditPersonDescriptor();","lastModifiedDate":"2024-03-12"},{"lineNumber":175,"author":{"gitId":"chaaaaun"},"content":" EditCommand editCommand \u003d new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2024-03-12"},{"lineNumber":176,"author":{"gitId":"chaaaaun"},"content":" String expected \u003d EditCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", editPersonDescriptor\u003d\"","lastModifiedDate":"2024-03-12"},{"lineNumber":177,"author":{"gitId":"chaaaaun"},"content":" + editPersonDescriptor + \"}\";","lastModifiedDate":"2024-03-12"},{"lineNumber":178,"author":{"gitId":"chaaaaun"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2024-03-12"},{"lineNumber":179,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":180,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":181,"author":{"gitId":"chaaaaun"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"soons1":24,"CJerrong":1,"gerteck":7,"chaaaaun":140,"sdevih":9}},{"path":"src/test/java/scrolls/elder/logic/commands/EditPersonDescriptorTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.logic.commands;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"gerteck"},"content":"import static scrolls.elder.logic.commands.CommandTestUtil.DESC_AMY_VOLUNTEER;","lastModifiedDate":"2024-03-15"},{"lineNumber":7,"author":{"gitId":"gerteck"},"content":"import static scrolls.elder.logic.commands.CommandTestUtil.DESC_BOB_BEFRIENDEE;","lastModifiedDate":"2024-03-15"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":"import static scrolls.elder.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":"import static scrolls.elder.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":"import static scrolls.elder.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":"import static scrolls.elder.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"chaaaaun"},"content":"import static scrolls.elder.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":16,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorTest {","lastModifiedDate":"2017-05-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":22,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-05"},{"lineNumber":23,"author":{"gitId":"gerteck"},"content":" EditCommand.EditPersonDescriptor descriptorWithSameValues \u003d","lastModifiedDate":"2024-03-15"},{"lineNumber":24,"author":{"gitId":"gerteck"},"content":" new EditCommand.EditPersonDescriptor(DESC_AMY_VOLUNTEER);","lastModifiedDate":"2024-03-15"},{"lineNumber":25,"author":{"gitId":"gerteck"},"content":" assertTrue(DESC_AMY_VOLUNTEER.equals(descriptorWithSameValues));","lastModifiedDate":"2024-03-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-05"},{"lineNumber":28,"author":{"gitId":"gerteck"},"content":" assertTrue(DESC_AMY_VOLUNTEER.equals(DESC_AMY_VOLUNTEER));","lastModifiedDate":"2024-03-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":31,"author":{"gitId":"gerteck"},"content":" assertFalse(DESC_AMY_VOLUNTEER.equals(null));","lastModifiedDate":"2024-03-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":34,"author":{"gitId":"gerteck"},"content":" assertFalse(DESC_AMY_VOLUNTEER.equals(5));","lastModifiedDate":"2024-03-15"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":37,"author":{"gitId":"gerteck"},"content":" assertFalse(DESC_AMY_VOLUNTEER.equals(DESC_BOB_BEFRIENDEE));","lastModifiedDate":"2024-03-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":40,"author":{"gitId":"chaaaaun"},"content":" EditCommand.EditPersonDescriptor editedAmy \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"gerteck"},"content":" new EditPersonDescriptorBuilder(DESC_AMY_VOLUNTEER).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-15"},{"lineNumber":42,"author":{"gitId":"gerteck"},"content":" assertFalse(DESC_AMY_VOLUNTEER.equals(editedAmy));","lastModifiedDate":"2024-03-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":45,"author":{"gitId":"gerteck"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY_VOLUNTEER).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2024-03-15"},{"lineNumber":46,"author":{"gitId":"gerteck"},"content":" assertFalse(DESC_AMY_VOLUNTEER.equals(editedAmy));","lastModifiedDate":"2024-03-15"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":49,"author":{"gitId":"gerteck"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY_VOLUNTEER).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2024-03-15"},{"lineNumber":50,"author":{"gitId":"gerteck"},"content":" assertFalse(DESC_AMY_VOLUNTEER.equals(editedAmy));","lastModifiedDate":"2024-03-15"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":53,"author":{"gitId":"gerteck"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY_VOLUNTEER).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2024-03-15"},{"lineNumber":54,"author":{"gitId":"gerteck"},"content":" assertFalse(DESC_AMY_VOLUNTEER.equals(editedAmy));","lastModifiedDate":"2024-03-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":57,"author":{"gitId":"gerteck"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY_VOLUNTEER).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-03-15"},{"lineNumber":58,"author":{"gitId":"gerteck"},"content":" assertFalse(DESC_AMY_VOLUNTEER.equals(editedAmy));","lastModifiedDate":"2024-03-15"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":63,"author":{"gitId":"chaaaaun"},"content":" EditCommand.EditPersonDescriptor editPersonDescriptor \u003d new EditCommand.EditPersonDescriptor();","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"chaaaaun"},"content":" String expected \u003d EditCommand.EditPersonDescriptor.class.getCanonicalName() + \"{name\u003d\"","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getName().orElse(null) + \", phone\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getPhone().orElse(null) + \", email\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getEmail().orElse(null) + \", address\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getAddress().orElse(null) + \", tags\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"CJerrong"},"content":" + editPersonDescriptor.getTags().orElse(null) + \", role\u003d\"","lastModifiedDate":"2024-03-15"},{"lineNumber":70,"author":{"gitId":"gerteck"},"content":" + editPersonDescriptor.getRole().orElse(null) + \"}\";","lastModifiedDate":"2024-03-15"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertEquals(expected, editPersonDescriptor.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"CJerrong":1,"gerteck":20,"chaaaaun":10,"-":42}},{"path":"src/test/java/scrolls/elder/logic/commands/ExitCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.logic.commands;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"chaaaaun"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.Model;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.ModelManager;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":"public class ExitCommandTest {","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":" private Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"chaaaaun"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"chaaaaun"},"content":" public void execute_exit_success() {","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"chaaaaun"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(ExitCommand.MESSAGE_EXIT_ACKNOWLEDGEMENT, false, true);","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"chaaaaun"},"content":" CommandTestUtil.assertCommandSuccess(new ExitCommand(), model, expectedCommandResult, expectedModel);","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"chaaaaun"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"chaaaaun":17}},{"path":"src/test/java/scrolls/elder/logic/commands/FindCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.logic.commands;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"chaaaaun"},"content":"import static scrolls.elder.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.Messages;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.Model;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.ModelManager;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.UserPrefs;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.TypicalPersons;","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code FindCommand}.","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class FindCommandTest {","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"chaaaaun"},"content":" private Model model \u003d new ModelManager(TypicalPersons.getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"chaaaaun"},"content":" private Model expectedModel \u003d new ModelManager(TypicalPersons.getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicate \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"first\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate secondPredicate \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"second\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" FindCommand findFirstCommand \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" FindCommand findSecondCommand \u003d new FindCommand(secondPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" FindCommand findFirstCommandCopy \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommandCopy));","lastModifiedDate":"2017-06-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(1));","lastModifiedDate":"2017-06-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(null));","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(findSecondCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void execute_zeroKeywords_noPersonFound() {","lastModifiedDate":"2017-08-15"},{"lineNumber":56,"author":{"gitId":"chaaaaun"},"content":" String expectedMessage \u003d String.format(Messages.MESSAGE_PERSONS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\" \");","lastModifiedDate":"2018-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void execute_multipleKeywords_multiplePersonsFound() {","lastModifiedDate":"2017-08-15"},{"lineNumber":66,"author":{"gitId":"chaaaaun"},"content":" String expectedMessage \u003d String.format(Messages.MESSAGE_PERSONS_LISTED_OVERVIEW, 3);","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\"Kurz Elle Kunz\");","lastModifiedDate":"2018-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":71,"author":{"gitId":"chaaaaun"},"content":" assertEquals(Arrays.asList(TypicalPersons.CARL, TypicalPersons.ELLE, TypicalPersons.FIONA),","lastModifiedDate":"2024-03-12"},{"lineNumber":72,"author":{"gitId":"chaaaaun"},"content":" model.getFilteredPersonList());","lastModifiedDate":"2024-03-12"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"keyword\"));","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":" FindCommand findCommand \u003d new FindCommand(predicate);","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" String expected \u003d FindCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertEquals(expected, findCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-12"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * Parses {@code userInput} into a {@code NameContainsKeywordsPredicate}.","lastModifiedDate":"2018-08-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":86,"author":{"gitId":"-"},"content":" private NameContainsKeywordsPredicate preparePredicate(String userInput) {","lastModifiedDate":"2018-08-08"},{"lineNumber":87,"author":{"gitId":"-"},"content":" return new NameContainsKeywordsPredicate(Arrays.asList(userInput.split(\"\\\\s+\")));","lastModifiedDate":"2018-08-08"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":89,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"chaaaaun":14,"-":75}},{"path":"src/test/java/scrolls/elder/logic/commands/HelpCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.logic.commands;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"chaaaaun"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.Model;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.ModelManager;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":"public class HelpCommandTest {","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":" private Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"chaaaaun"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"chaaaaun"},"content":" public void execute_help_success() {","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"chaaaaun"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(HelpCommand.SHOWING_HELP_MESSAGE, true, false);","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"chaaaaun"},"content":" CommandTestUtil.assertCommandSuccess(new HelpCommand(), model, expectedCommandResult, expectedModel);","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"chaaaaun"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"chaaaaun":17}},{"path":"src/test/java/scrolls/elder/logic/commands/ListCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.logic.commands;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"chaaaaun"},"content":"import static scrolls.elder.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"chaaaaun"},"content":"import static scrolls.elder.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.Model;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.ModelManager;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.UserPrefs;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.TypicalIndexes;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.TypicalPersons;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for ListCommand.","lastModifiedDate":"2017-06-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class ListCommandTest {","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private Model expectedModel;","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"chaaaaun"},"content":" model \u003d new ModelManager(TypicalPersons.getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void execute_listIsNotFiltered_showsSameList() {","lastModifiedDate":"2017-08-15"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ListCommand(), model, ListCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public void execute_listIsFiltered_showsEverything() {","lastModifiedDate":"2017-08-15"},{"lineNumber":36,"author":{"gitId":"chaaaaun"},"content":" showPersonAtIndex(model, TypicalIndexes.INDEX_FIRST_PERSON);","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ListCommand(), model, ListCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"chaaaaun":10,"-":29}},{"path":"src/test/java/scrolls/elder/logic/commands/PairCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"soons1"},"content":"package scrolls.elder.logic.commands;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"soons1"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"chaaaaun"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-22"},{"lineNumber":5,"author":{"gitId":"CJerrong"},"content":"import static scrolls.elder.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"CJerrong"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"soons1"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"CJerrong"},"content":"import scrolls.elder.logic.Messages;","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"soons1"},"content":"import scrolls.elder.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"CJerrong"},"content":"import scrolls.elder.model.AddressBook;","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"soons1"},"content":"import scrolls.elder.model.Model;","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"soons1"},"content":"import scrolls.elder.model.ModelManager;","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"soons1"},"content":"import scrolls.elder.model.UserPrefs;","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"CJerrong"},"content":"import scrolls.elder.model.person.Person;","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"soons1"},"content":"import scrolls.elder.testutil.Assert;","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"CJerrong"},"content":"import scrolls.elder.testutil.PersonBuilder;","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"soons1"},"content":"import scrolls.elder.testutil.TypicalIndexes;","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"soons1"},"content":"import scrolls.elder.testutil.TypicalPersons;","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"soons1"},"content":"class PairCommandTest {","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"soons1"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"soons1"},"content":" void execute_pairFilteredPersonList_pairSuccessful() {","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"soons1"},"content":" Model model \u003d new ModelManager(TypicalPersons.getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"chaaaaun"},"content":" Person befriendeeToPair \u003d","lastModifiedDate":"2024-03-22"},{"lineNumber":29,"author":{"gitId":"chaaaaun"},"content":" model.getFilteredBefriendeeList().get(TypicalIndexes.INDEX_SECOND_PERSON.getZeroBased());","lastModifiedDate":"2024-03-22"},{"lineNumber":30,"author":{"gitId":"chaaaaun"},"content":" Person volunteerToPair \u003d","lastModifiedDate":"2024-03-22"},{"lineNumber":31,"author":{"gitId":"chaaaaun"},"content":" model.getFilteredVolunteerList().get(TypicalIndexes.INDEX_SECOND_PERSON.getZeroBased());","lastModifiedDate":"2024-03-22"},{"lineNumber":32,"author":{"gitId":"chaaaaun"},"content":" PairCommand pairCommand \u003d","lastModifiedDate":"2024-03-22"},{"lineNumber":33,"author":{"gitId":"chaaaaun"},"content":" new PairCommand(TypicalIndexes.INDEX_SECOND_PERSON, TypicalIndexes.INDEX_SECOND_PERSON);","lastModifiedDate":"2024-03-22"},{"lineNumber":34,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"soons1"},"content":" String expectedMessage \u003d String.format(PairCommand.MESSAGE_PAIR_SUCCESS,","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"chaaaaun"},"content":" Messages.format(befriendeeToPair), Messages.format(volunteerToPair));","lastModifiedDate":"2024-03-22"},{"lineNumber":37,"author":{"gitId":"chaaaaun"},"content":" Person afterPairingPerson1 \u003d new PersonBuilder(befriendeeToPair)","lastModifiedDate":"2024-03-22"},{"lineNumber":38,"author":{"gitId":"CJerrong"},"content":" .withPairedWithName(Optional.of(volunteerToPair.getName()))","lastModifiedDate":"2024-03-22"},{"lineNumber":39,"author":{"gitId":"CJerrong"},"content":" .withPairedWithID(Optional.of(volunteerToPair.getId())).build();","lastModifiedDate":"2024-03-22"},{"lineNumber":40,"author":{"gitId":"chaaaaun"},"content":" Person afterPairingPerson2 \u003d new PersonBuilder(volunteerToPair)","lastModifiedDate":"2024-03-22"},{"lineNumber":41,"author":{"gitId":"CJerrong"},"content":" .withPairedWithName(Optional.of(befriendeeToPair.getName()))","lastModifiedDate":"2024-03-22"},{"lineNumber":42,"author":{"gitId":"CJerrong"},"content":" .withPairedWithID(Optional.of(befriendeeToPair.getId())).build();","lastModifiedDate":"2024-03-22"},{"lineNumber":43,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"soons1"},"content":" ModelManager expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"soons1"},"content":" expectedModel.setPerson(","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"CJerrong"},"content":" expectedModel.getFilteredBefriendeeList().get(TypicalIndexes.INDEX_SECOND_PERSON.getZeroBased()),","lastModifiedDate":"2024-03-22"},{"lineNumber":47,"author":{"gitId":"soons1"},"content":" afterPairingPerson1);","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"soons1"},"content":" expectedModel.setPerson(","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"CJerrong"},"content":" expectedModel.getFilteredVolunteerList().get(TypicalIndexes.INDEX_SECOND_PERSON.getZeroBased()),","lastModifiedDate":"2024-03-22"},{"lineNumber":50,"author":{"gitId":"soons1"},"content":" afterPairingPerson2);","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"soons1"},"content":" assertCommandSuccess(pairCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"soons1"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"soons1"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"soons1"},"content":" void execute_alreadyPaired_throwsCommandException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"soons1"},"content":" Model model \u003d new ModelManager(new AddressBook(TypicalPersons.getTypicalAddressBook()), new UserPrefs());","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"soons1"},"content":" PairCommand pairCommand \u003d new PairCommand(TypicalIndexes.INDEX_FIRST_PERSON,","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"CJerrong"},"content":" TypicalIndexes.INDEX_FIRST_PERSON);","lastModifiedDate":"2024-03-22"},{"lineNumber":60,"author":{"gitId":"soons1"},"content":" Assert.assertThrows(","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"soons1"},"content":" CommandException.class, PairCommand.MESSAGE_ALREADY_PAIRED, () -\u003e pairCommand.execute(model));","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"soons1"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"soons1"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"soons1"},"content":" public void equals() {","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"soons1"},"content":" PairCommand pairCommand1 \u003d new PairCommand(TypicalIndexes.INDEX_FIRST_PERSON,","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"soons1"},"content":" TypicalIndexes.INDEX_FIFTH_PERSON);","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"soons1"},"content":" PairCommand pairCommand2 \u003d new PairCommand(TypicalIndexes.INDEX_SECOND_PERSON,","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"soons1"},"content":" TypicalIndexes.INDEX_FOURTH_PERSON);","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"soons1"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"chaaaaun"},"content":" assertEquals(pairCommand1, pairCommand1);","lastModifiedDate":"2024-03-22"},{"lineNumber":73,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"soons1"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"soons1"},"content":" PairCommand pairCommand1Copy \u003d new PairCommand(TypicalIndexes.INDEX_FIRST_PERSON,","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"soons1"},"content":" TypicalIndexes.INDEX_FIFTH_PERSON);","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"chaaaaun"},"content":" assertEquals(pairCommand1, pairCommand1Copy);","lastModifiedDate":"2024-03-22"},{"lineNumber":78,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"soons1"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":80,"author":{"gitId":"chaaaaun"},"content":" assertNotEquals(1, pairCommand1);","lastModifiedDate":"2024-03-22"},{"lineNumber":81,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":82,"author":{"gitId":"soons1"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":83,"author":{"gitId":"chaaaaun"},"content":" assertNotEquals(null, pairCommand1);","lastModifiedDate":"2024-03-22"},{"lineNumber":84,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":85,"author":{"gitId":"soons1"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":86,"author":{"gitId":"chaaaaun"},"content":" assertNotEquals(pairCommand1, pairCommand2);","lastModifiedDate":"2024-03-22"},{"lineNumber":87,"author":{"gitId":"soons1"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":88,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":89,"author":{"gitId":"soons1"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":90,"author":{"gitId":"soons1"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-18"},{"lineNumber":91,"author":{"gitId":"soons1"},"content":" PairCommand pairCommand \u003d new PairCommand(TypicalIndexes.INDEX_FIRST_PERSON, TypicalIndexes.INDEX_FIFTH_PERSON);","lastModifiedDate":"2024-03-18"},{"lineNumber":92,"author":{"gitId":"soons1"},"content":" String expected \u003d PairCommand.class.getCanonicalName()","lastModifiedDate":"2024-03-18"},{"lineNumber":93,"author":{"gitId":"soons1"},"content":" + \"{index1\u003d\" + TypicalIndexes.INDEX_FIRST_PERSON","lastModifiedDate":"2024-03-18"},{"lineNumber":94,"author":{"gitId":"soons1"},"content":" + \", index2\u003d\" + TypicalIndexes.INDEX_FIFTH_PERSON + \"}\";","lastModifiedDate":"2024-03-18"},{"lineNumber":95,"author":{"gitId":"soons1"},"content":" assertEquals(expected, pairCommand.toString());","lastModifiedDate":"2024-03-18"},{"lineNumber":96,"author":{"gitId":"soons1"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":97,"author":{"gitId":"soons1"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"soons1":67,"CJerrong":14,"chaaaaun":16}},{"path":"src/test/java/scrolls/elder/logic/commands/UnpairCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sdevih"},"content":"package scrolls.elder.logic.commands;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"sdevih"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"sdevih"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"sdevih"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"sdevih"},"content":"import static scrolls.elder.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"sdevih"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"sdevih"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"sdevih"},"content":"import scrolls.elder.logic.Messages;","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"sdevih"},"content":"import scrolls.elder.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"sdevih"},"content":"import scrolls.elder.model.AddressBook;","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"sdevih"},"content":"import scrolls.elder.model.Model;","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"sdevih"},"content":"import scrolls.elder.model.ModelManager;","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"sdevih"},"content":"import scrolls.elder.model.UserPrefs;","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"sdevih"},"content":"import scrolls.elder.model.person.Person;","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"sdevih"},"content":"import scrolls.elder.testutil.Assert;","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"sdevih"},"content":"import scrolls.elder.testutil.PersonBuilder;","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"sdevih"},"content":"import scrolls.elder.testutil.TypicalIndexes;","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"sdevih"},"content":"import scrolls.elder.testutil.TypicalPersons;","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"sdevih"},"content":"class UnpairCommandTest {","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"sdevih"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"sdevih"},"content":" void execute_unpairFilteredPersonList_unpairSuccessful() {","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"sdevih"},"content":" Model model \u003d new ModelManager(TypicalPersons.getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"CJerrong"},"content":" Person personToUnpair1 \u003d model.getFilteredBefriendeeList()","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"CJerrong"},"content":" .get(TypicalIndexes.INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"CJerrong"},"content":" Person personToUnpair2 \u003d model.getFilteredVolunteerList().get(TypicalIndexes.INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"sdevih"},"content":" UnpairCommand unpairCommand \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"CJerrong"},"content":" new UnpairCommand(TypicalIndexes.INDEX_FIRST_PERSON, TypicalIndexes.INDEX_FIRST_PERSON);","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"sdevih"},"content":" String expectedMessage \u003d String.format(UnpairCommand.MESSAGE_UNPAIR_SUCCESS,","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"sdevih"},"content":" Messages.format(personToUnpair1), Messages.format(personToUnpair2));","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"CJerrong"},"content":" Person afterUnpairingPerson1 \u003d new PersonBuilder(personToUnpair1)","lastModifiedDate":"2024-03-22"},{"lineNumber":39,"author":{"gitId":"CJerrong"},"content":" .withPairedWithName(Optional.empty()).withPairedWithID(Optional.empty()).build();","lastModifiedDate":"2024-03-22"},{"lineNumber":40,"author":{"gitId":"CJerrong"},"content":" Person afterUnpairingPerson2 \u003d new PersonBuilder(personToUnpair2)","lastModifiedDate":"2024-03-22"},{"lineNumber":41,"author":{"gitId":"CJerrong"},"content":" .withPairedWithName(Optional.empty()).withPairedWithID(Optional.empty()).build();","lastModifiedDate":"2024-03-22"},{"lineNumber":42,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"sdevih"},"content":" ModelManager expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"CJerrong"},"content":" expectedModel.setPerson(model.getFilteredBefriendeeList().get(TypicalIndexes.INDEX_FIRST_PERSON.getZeroBased()),","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"sdevih"},"content":" afterUnpairingPerson1);","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"CJerrong"},"content":" expectedModel.setPerson(model.getFilteredVolunteerList().get(TypicalIndexes.INDEX_FIRST_PERSON.getZeroBased()),","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"sdevih"},"content":" afterUnpairingPerson2);","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"sdevih"},"content":" assertCommandSuccess(unpairCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"sdevih"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"sdevih"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"sdevih"},"content":" void execute_contactsNotPaired_throwsCommandException() {","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"sdevih"},"content":" Model model \u003d new ModelManager(TypicalPersons.getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"sdevih"},"content":" UnpairCommand unpairCommand \u003d new UnpairCommand(TypicalIndexes.INDEX_SECOND_PERSON,","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"sdevih"},"content":" TypicalIndexes.INDEX_THIRD_PERSON);","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"sdevih"},"content":" Assert.assertThrows(","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"sdevih"},"content":" CommandException.class, UnpairCommand.MESSAGE_NOT_PAIRED, () -\u003e unpairCommand.execute(model));","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"sdevih"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"sdevih"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"sdevih"},"content":" public void equals() {","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"sdevih"},"content":" UnpairCommand unpairCommand1 \u003d new UnpairCommand(TypicalIndexes.INDEX_FIRST_PERSON,","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"sdevih"},"content":" TypicalIndexes.INDEX_FIFTH_PERSON);","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"sdevih"},"content":" UnpairCommand unpairCommand2 \u003d new UnpairCommand(TypicalIndexes.INDEX_SECOND_PERSON,","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"sdevih"},"content":" TypicalIndexes.INDEX_FOURTH_PERSON);","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"sdevih"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"sdevih"},"content":" assertTrue(unpairCommand1.equals(unpairCommand1));","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"sdevih"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"sdevih"},"content":" UnpairCommand unpairCommand1Copy \u003d new UnpairCommand(TypicalIndexes.INDEX_FIRST_PERSON,","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"sdevih"},"content":" TypicalIndexes.INDEX_FIFTH_PERSON);","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"sdevih"},"content":" assertTrue(unpairCommand1.equals(unpairCommand1Copy));","lastModifiedDate":"2024-03-21"},{"lineNumber":75,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":76,"author":{"gitId":"sdevih"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":77,"author":{"gitId":"sdevih"},"content":" assertFalse(unpairCommand1.equals(1));","lastModifiedDate":"2024-03-21"},{"lineNumber":78,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":79,"author":{"gitId":"sdevih"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"sdevih"},"content":" assertFalse(unpairCommand1.equals(null));","lastModifiedDate":"2024-03-21"},{"lineNumber":81,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"sdevih"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":83,"author":{"gitId":"sdevih"},"content":" assertFalse(unpairCommand1.equals(unpairCommand2));","lastModifiedDate":"2024-03-21"},{"lineNumber":84,"author":{"gitId":"sdevih"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":85,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":86,"author":{"gitId":"sdevih"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":87,"author":{"gitId":"sdevih"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"sdevih"},"content":" UnpairCommand unpairCommand \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":89,"author":{"gitId":"sdevih"},"content":" new UnpairCommand(TypicalIndexes.INDEX_FIRST_PERSON, TypicalIndexes.INDEX_FIFTH_PERSON);","lastModifiedDate":"2024-03-21"},{"lineNumber":90,"author":{"gitId":"sdevih"},"content":" String expected \u003d UnpairCommand.class.getCanonicalName()","lastModifiedDate":"2024-03-21"},{"lineNumber":91,"author":{"gitId":"sdevih"},"content":" + \"{index1\u003d\" + TypicalIndexes.INDEX_FIRST_PERSON","lastModifiedDate":"2024-03-21"},{"lineNumber":92,"author":{"gitId":"sdevih"},"content":" + \", index2\u003d\" + TypicalIndexes.INDEX_FIFTH_PERSON + \"}\";","lastModifiedDate":"2024-03-21"},{"lineNumber":93,"author":{"gitId":"sdevih"},"content":" assertEquals(expected, unpairCommand.toString());","lastModifiedDate":"2024-03-21"},{"lineNumber":94,"author":{"gitId":"sdevih"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":95,"author":{"gitId":"sdevih"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"CJerrong":10,"sdevih":85}},{"path":"src/test/java/scrolls/elder/logic/parser/AddCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.logic.parser;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"chaaaaun"},"content":"import static scrolls.elder.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"chaaaaun"},"content":"import static scrolls.elder.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"chaaaaun"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.Messages;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.commands.AddCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.commands.CommandTestUtil;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Address;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Email;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Name;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Person;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Phone;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"gerteck"},"content":"import scrolls.elder.model.person.Role;","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.tag.Tag;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.PersonBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.TypicalPersons;","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"chaaaaun"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"chaaaaun"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"chaaaaun"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"chaaaaun"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"chaaaaun"},"content":" Person expectedPerson \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"chaaaaun"},"content":" new PersonBuilder(TypicalPersons.BOB).withTags(CommandTestUtil.VALID_TAG_FRIEND).build();","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"chaaaaun"},"content":" // whitespace only preamble","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"chaaaaun"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"gerteck"},"content":" CommandTestUtil.PREAMBLE_WHITESPACE + CommandTestUtil.NAME_DESC_BOB","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"gerteck"},"content":" + CommandTestUtil.PHONE_DESC_BOB","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"chaaaaun"},"content":" + CommandTestUtil.EMAIL_DESC_BOB + CommandTestUtil.ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"gerteck"},"content":" + CommandTestUtil.TAG_DESC_FRIEND + CommandTestUtil.ROLE_DESC_BEFRIENDEE,","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"gerteck"},"content":" new AddCommand(expectedPerson));","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"chaaaaun"},"content":" // multiple tags - all accepted","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"chaaaaun"},"content":" Person expectedPersonMultipleTags \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"chaaaaun"},"content":" new PersonBuilder(TypicalPersons.BOB).withTags(CommandTestUtil.VALID_TAG_FRIEND,","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"chaaaaun"},"content":" CommandTestUtil.VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"chaaaaun"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"gerteck"},"content":" CommandTestUtil.NAME_DESC_BOB + CommandTestUtil.PHONE_DESC_BOB","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"gerteck"},"content":" + CommandTestUtil.EMAIL_DESC_BOB","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"chaaaaun"},"content":" + CommandTestUtil.ADDRESS_DESC_BOB + CommandTestUtil.TAG_DESC_HUSBAND","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"gerteck"},"content":" + CommandTestUtil.TAG_DESC_FRIEND + CommandTestUtil.ROLE_DESC_BEFRIENDEE,","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"gerteck"},"content":" new AddCommand(expectedPersonMultipleTags));","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"chaaaaun"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"chaaaaun"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"chaaaaun"},"content":" String validExpectedPersonString \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"chaaaaun"},"content":" CommandTestUtil.NAME_DESC_BOB + CommandTestUtil.PHONE_DESC_BOB + CommandTestUtil.EMAIL_DESC_BOB","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"gerteck"},"content":" + CommandTestUtil.ADDRESS_DESC_BOB + CommandTestUtil.TAG_DESC_FRIEND","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"gerteck"},"content":" + CommandTestUtil.ROLE_DESC_BEFRIENDEE;","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"chaaaaun"},"content":" // multiple names","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"chaaaaun"},"content":" assertParseFailure(parser, CommandTestUtil.NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"chaaaaun"},"content":" Messages.getErrorMessageForDuplicatePrefixes(CliSyntax.PREFIX_NAME));","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"chaaaaun"},"content":" // multiple phones","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"chaaaaun"},"content":" assertParseFailure(parser, CommandTestUtil.PHONE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-03-12"},{"lineNumber":63,"author":{"gitId":"chaaaaun"},"content":" Messages.getErrorMessageForDuplicatePrefixes(CliSyntax.PREFIX_PHONE));","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"chaaaaun"},"content":" // multiple emails","lastModifiedDate":"2024-03-12"},{"lineNumber":66,"author":{"gitId":"chaaaaun"},"content":" assertParseFailure(parser, CommandTestUtil.EMAIL_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"chaaaaun"},"content":" Messages.getErrorMessageForDuplicatePrefixes(CliSyntax.PREFIX_EMAIL));","lastModifiedDate":"2024-03-12"},{"lineNumber":68,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":69,"author":{"gitId":"chaaaaun"},"content":" // multiple addresses","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"chaaaaun"},"content":" assertParseFailure(parser, CommandTestUtil.ADDRESS_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-03-12"},{"lineNumber":71,"author":{"gitId":"chaaaaun"},"content":" Messages.getErrorMessageForDuplicatePrefixes(CliSyntax.PREFIX_ADDRESS));","lastModifiedDate":"2024-03-12"},{"lineNumber":72,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":73,"author":{"gitId":"chaaaaun"},"content":" // multiple fields repeated","lastModifiedDate":"2024-03-12"},{"lineNumber":74,"author":{"gitId":"chaaaaun"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-03-12"},{"lineNumber":75,"author":{"gitId":"chaaaaun"},"content":" validExpectedPersonString + CommandTestUtil.PHONE_DESC_AMY + CommandTestUtil.EMAIL_DESC_AMY","lastModifiedDate":"2024-03-12"},{"lineNumber":76,"author":{"gitId":"chaaaaun"},"content":" + CommandTestUtil.NAME_DESC_AMY + CommandTestUtil.ADDRESS_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-03-12"},{"lineNumber":77,"author":{"gitId":"chaaaaun"},"content":" Messages.getErrorMessageForDuplicatePrefixes(CliSyntax.PREFIX_NAME, CliSyntax.PREFIX_ADDRESS,","lastModifiedDate":"2024-03-12"},{"lineNumber":78,"author":{"gitId":"gerteck"},"content":" CliSyntax.PREFIX_EMAIL, CliSyntax.PREFIX_PHONE, CliSyntax.PREFIX_ROLE));","lastModifiedDate":"2024-03-16"},{"lineNumber":79,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":80,"author":{"gitId":"chaaaaun"},"content":" // invalid value followed by valid value","lastModifiedDate":"2024-03-12"},{"lineNumber":81,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":82,"author":{"gitId":"chaaaaun"},"content":" // invalid name","lastModifiedDate":"2024-03-12"},{"lineNumber":83,"author":{"gitId":"chaaaaun"},"content":" assertParseFailure(parser, CommandTestUtil.INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2024-03-12"},{"lineNumber":84,"author":{"gitId":"chaaaaun"},"content":" Messages.getErrorMessageForDuplicatePrefixes(CliSyntax.PREFIX_NAME));","lastModifiedDate":"2024-03-12"},{"lineNumber":85,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":86,"author":{"gitId":"chaaaaun"},"content":" // invalid email","lastModifiedDate":"2024-03-12"},{"lineNumber":87,"author":{"gitId":"chaaaaun"},"content":" assertParseFailure(parser, CommandTestUtil.INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2024-03-12"},{"lineNumber":88,"author":{"gitId":"chaaaaun"},"content":" Messages.getErrorMessageForDuplicatePrefixes(CliSyntax.PREFIX_EMAIL));","lastModifiedDate":"2024-03-12"},{"lineNumber":89,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":90,"author":{"gitId":"chaaaaun"},"content":" // invalid phone","lastModifiedDate":"2024-03-12"},{"lineNumber":91,"author":{"gitId":"chaaaaun"},"content":" assertParseFailure(parser, CommandTestUtil.INVALID_PHONE_DESC + validExpectedPersonString,","lastModifiedDate":"2024-03-12"},{"lineNumber":92,"author":{"gitId":"chaaaaun"},"content":" Messages.getErrorMessageForDuplicatePrefixes(CliSyntax.PREFIX_PHONE));","lastModifiedDate":"2024-03-12"},{"lineNumber":93,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":94,"author":{"gitId":"chaaaaun"},"content":" // invalid address","lastModifiedDate":"2024-03-12"},{"lineNumber":95,"author":{"gitId":"chaaaaun"},"content":" assertParseFailure(parser, CommandTestUtil.INVALID_ADDRESS_DESC + validExpectedPersonString,","lastModifiedDate":"2024-03-12"},{"lineNumber":96,"author":{"gitId":"chaaaaun"},"content":" Messages.getErrorMessageForDuplicatePrefixes(CliSyntax.PREFIX_ADDRESS));","lastModifiedDate":"2024-03-12"},{"lineNumber":97,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":98,"author":{"gitId":"gerteck"},"content":" // invalid role","lastModifiedDate":"2024-03-16"},{"lineNumber":99,"author":{"gitId":"gerteck"},"content":" assertParseFailure(parser, CommandTestUtil.INVALID_ROLE_DESC + validExpectedPersonString,","lastModifiedDate":"2024-03-16"},{"lineNumber":100,"author":{"gitId":"gerteck"},"content":" Messages.getErrorMessageForDuplicatePrefixes(CliSyntax.PREFIX_ROLE));","lastModifiedDate":"2024-03-16"},{"lineNumber":101,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":102,"author":{"gitId":"chaaaaun"},"content":" // valid value followed by invalid value","lastModifiedDate":"2024-03-12"},{"lineNumber":103,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":104,"author":{"gitId":"chaaaaun"},"content":" // invalid name","lastModifiedDate":"2024-03-12"},{"lineNumber":105,"author":{"gitId":"chaaaaun"},"content":" assertParseFailure(parser, validExpectedPersonString + CommandTestUtil.INVALID_NAME_DESC,","lastModifiedDate":"2024-03-12"},{"lineNumber":106,"author":{"gitId":"chaaaaun"},"content":" Messages.getErrorMessageForDuplicatePrefixes(CliSyntax.PREFIX_NAME));","lastModifiedDate":"2024-03-12"},{"lineNumber":107,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":108,"author":{"gitId":"chaaaaun"},"content":" // invalid email","lastModifiedDate":"2024-03-12"},{"lineNumber":109,"author":{"gitId":"chaaaaun"},"content":" assertParseFailure(parser, validExpectedPersonString + CommandTestUtil.INVALID_EMAIL_DESC,","lastModifiedDate":"2024-03-12"},{"lineNumber":110,"author":{"gitId":"chaaaaun"},"content":" Messages.getErrorMessageForDuplicatePrefixes(CliSyntax.PREFIX_EMAIL));","lastModifiedDate":"2024-03-12"},{"lineNumber":111,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":112,"author":{"gitId":"chaaaaun"},"content":" // invalid phone","lastModifiedDate":"2024-03-12"},{"lineNumber":113,"author":{"gitId":"chaaaaun"},"content":" assertParseFailure(parser, validExpectedPersonString + CommandTestUtil.INVALID_PHONE_DESC,","lastModifiedDate":"2024-03-12"},{"lineNumber":114,"author":{"gitId":"chaaaaun"},"content":" Messages.getErrorMessageForDuplicatePrefixes(CliSyntax.PREFIX_PHONE));","lastModifiedDate":"2024-03-12"},{"lineNumber":115,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":116,"author":{"gitId":"chaaaaun"},"content":" // invalid address","lastModifiedDate":"2024-03-12"},{"lineNumber":117,"author":{"gitId":"chaaaaun"},"content":" assertParseFailure(parser, validExpectedPersonString + CommandTestUtil.INVALID_ADDRESS_DESC,","lastModifiedDate":"2024-03-12"},{"lineNumber":118,"author":{"gitId":"chaaaaun"},"content":" Messages.getErrorMessageForDuplicatePrefixes(CliSyntax.PREFIX_ADDRESS));","lastModifiedDate":"2024-03-12"},{"lineNumber":119,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":120,"author":{"gitId":"gerteck"},"content":" // invalid role","lastModifiedDate":"2024-03-16"},{"lineNumber":121,"author":{"gitId":"gerteck"},"content":" assertParseFailure(parser, validExpectedPersonString + CommandTestUtil.INVALID_ROLE_DESC,","lastModifiedDate":"2024-03-16"},{"lineNumber":122,"author":{"gitId":"gerteck"},"content":" Messages.getErrorMessageForDuplicatePrefixes(CliSyntax.PREFIX_ROLE));","lastModifiedDate":"2024-03-16"},{"lineNumber":123,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":124,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":125,"author":{"gitId":"chaaaaun"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":126,"author":{"gitId":"chaaaaun"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2024-03-12"},{"lineNumber":127,"author":{"gitId":"chaaaaun"},"content":" // zero tags","lastModifiedDate":"2024-03-12"},{"lineNumber":128,"author":{"gitId":"chaaaaun"},"content":" Person expectedPerson \u003d new PersonBuilder(TypicalPersons.AMY).withTags().build();","lastModifiedDate":"2024-03-12"},{"lineNumber":129,"author":{"gitId":"chaaaaun"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2024-03-12"},{"lineNumber":130,"author":{"gitId":"chaaaaun"},"content":" CommandTestUtil.NAME_DESC_AMY + CommandTestUtil.PHONE_DESC_AMY + CommandTestUtil.EMAIL_DESC_AMY","lastModifiedDate":"2024-03-12"},{"lineNumber":131,"author":{"gitId":"gerteck"},"content":" + CommandTestUtil.ADDRESS_DESC_AMY + CommandTestUtil.ROLE_DESC_VOLUNTEER,","lastModifiedDate":"2024-03-16"},{"lineNumber":132,"author":{"gitId":"gerteck"},"content":" new AddCommand(expectedPerson));","lastModifiedDate":"2024-03-16"},{"lineNumber":133,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":134,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":135,"author":{"gitId":"chaaaaun"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":136,"author":{"gitId":"chaaaaun"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2024-03-12"},{"lineNumber":137,"author":{"gitId":"chaaaaun"},"content":" String expectedMessage \u003d String.format(Messages.MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-03-12"},{"lineNumber":138,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":139,"author":{"gitId":"chaaaaun"},"content":" // missing name prefix","lastModifiedDate":"2024-03-12"},{"lineNumber":140,"author":{"gitId":"chaaaaun"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-03-12"},{"lineNumber":141,"author":{"gitId":"gerteck"},"content":" CommandTestUtil.VALID_NAME_BOB + CommandTestUtil.PHONE_DESC_BOB","lastModifiedDate":"2024-03-16"},{"lineNumber":142,"author":{"gitId":"gerteck"},"content":" + CommandTestUtil.EMAIL_DESC_BOB","lastModifiedDate":"2024-03-16"},{"lineNumber":143,"author":{"gitId":"chaaaaun"},"content":" + CommandTestUtil.ADDRESS_DESC_BOB, expectedMessage);","lastModifiedDate":"2024-03-12"},{"lineNumber":144,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":145,"author":{"gitId":"chaaaaun"},"content":" // missing phone prefix","lastModifiedDate":"2024-03-12"},{"lineNumber":146,"author":{"gitId":"chaaaaun"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-03-12"},{"lineNumber":147,"author":{"gitId":"gerteck"},"content":" CommandTestUtil.NAME_DESC_BOB + CommandTestUtil.VALID_PHONE_BOB","lastModifiedDate":"2024-03-16"},{"lineNumber":148,"author":{"gitId":"gerteck"},"content":" + CommandTestUtil.EMAIL_DESC_BOB","lastModifiedDate":"2024-03-16"},{"lineNumber":149,"author":{"gitId":"chaaaaun"},"content":" + CommandTestUtil.ADDRESS_DESC_BOB, expectedMessage);","lastModifiedDate":"2024-03-12"},{"lineNumber":150,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":151,"author":{"gitId":"chaaaaun"},"content":" // missing email prefix","lastModifiedDate":"2024-03-12"},{"lineNumber":152,"author":{"gitId":"chaaaaun"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-03-12"},{"lineNumber":153,"author":{"gitId":"gerteck"},"content":" CommandTestUtil.NAME_DESC_BOB + CommandTestUtil.PHONE_DESC_BOB","lastModifiedDate":"2024-03-16"},{"lineNumber":154,"author":{"gitId":"gerteck"},"content":" + CommandTestUtil.VALID_EMAIL_BOB","lastModifiedDate":"2024-03-16"},{"lineNumber":155,"author":{"gitId":"chaaaaun"},"content":" + CommandTestUtil.ADDRESS_DESC_BOB, expectedMessage);","lastModifiedDate":"2024-03-12"},{"lineNumber":156,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":157,"author":{"gitId":"chaaaaun"},"content":" // missing address prefix","lastModifiedDate":"2024-03-12"},{"lineNumber":158,"author":{"gitId":"chaaaaun"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-03-12"},{"lineNumber":159,"author":{"gitId":"chaaaaun"},"content":" CommandTestUtil.NAME_DESC_BOB + CommandTestUtil.PHONE_DESC_BOB + CommandTestUtil.EMAIL_DESC_BOB","lastModifiedDate":"2024-03-12"},{"lineNumber":160,"author":{"gitId":"chaaaaun"},"content":" + CommandTestUtil.VALID_ADDRESS_BOB, expectedMessage);","lastModifiedDate":"2024-03-12"},{"lineNumber":161,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":162,"author":{"gitId":"chaaaaun"},"content":" // all prefixes missing","lastModifiedDate":"2024-03-12"},{"lineNumber":163,"author":{"gitId":"chaaaaun"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-03-12"},{"lineNumber":164,"author":{"gitId":"gerteck"},"content":" CommandTestUtil.VALID_NAME_BOB + CommandTestUtil.VALID_PHONE_BOB","lastModifiedDate":"2024-03-16"},{"lineNumber":165,"author":{"gitId":"gerteck"},"content":" + CommandTestUtil.VALID_EMAIL_BOB","lastModifiedDate":"2024-03-16"},{"lineNumber":166,"author":{"gitId":"chaaaaun"},"content":" + CommandTestUtil.VALID_ADDRESS_BOB, expectedMessage);","lastModifiedDate":"2024-03-12"},{"lineNumber":167,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":168,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":169,"author":{"gitId":"chaaaaun"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":170,"author":{"gitId":"chaaaaun"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2024-03-12"},{"lineNumber":171,"author":{"gitId":"chaaaaun"},"content":" // invalid name","lastModifiedDate":"2024-03-12"},{"lineNumber":172,"author":{"gitId":"chaaaaun"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-03-12"},{"lineNumber":173,"author":{"gitId":"gerteck"},"content":" CommandTestUtil.INVALID_NAME_DESC + CommandTestUtil.PHONE_DESC_BOB","lastModifiedDate":"2024-03-16"},{"lineNumber":174,"author":{"gitId":"gerteck"},"content":" + CommandTestUtil.EMAIL_DESC_BOB","lastModifiedDate":"2024-03-16"},{"lineNumber":175,"author":{"gitId":"chaaaaun"},"content":" + CommandTestUtil.ADDRESS_DESC_BOB + CommandTestUtil.TAG_DESC_HUSBAND","lastModifiedDate":"2024-03-12"},{"lineNumber":176,"author":{"gitId":"gerteck"},"content":" + CommandTestUtil.ROLE_DESC_BEFRIENDEE","lastModifiedDate":"2024-03-16"},{"lineNumber":177,"author":{"gitId":"chaaaaun"},"content":" + CommandTestUtil.TAG_DESC_FRIEND, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":178,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":179,"author":{"gitId":"chaaaaun"},"content":" // invalid phone","lastModifiedDate":"2024-03-12"},{"lineNumber":180,"author":{"gitId":"chaaaaun"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-03-12"},{"lineNumber":181,"author":{"gitId":"gerteck"},"content":" CommandTestUtil.NAME_DESC_BOB + CommandTestUtil.INVALID_PHONE_DESC","lastModifiedDate":"2024-03-16"},{"lineNumber":182,"author":{"gitId":"gerteck"},"content":" + CommandTestUtil.EMAIL_DESC_BOB","lastModifiedDate":"2024-03-16"},{"lineNumber":183,"author":{"gitId":"chaaaaun"},"content":" + CommandTestUtil.ADDRESS_DESC_BOB + CommandTestUtil.TAG_DESC_HUSBAND","lastModifiedDate":"2024-03-12"},{"lineNumber":184,"author":{"gitId":"gerteck"},"content":" + CommandTestUtil.ROLE_DESC_BEFRIENDEE","lastModifiedDate":"2024-03-16"},{"lineNumber":185,"author":{"gitId":"chaaaaun"},"content":" + CommandTestUtil.TAG_DESC_FRIEND, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":186,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":187,"author":{"gitId":"chaaaaun"},"content":" // invalid email","lastModifiedDate":"2024-03-12"},{"lineNumber":188,"author":{"gitId":"chaaaaun"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-03-12"},{"lineNumber":189,"author":{"gitId":"gerteck"},"content":" CommandTestUtil.NAME_DESC_BOB + CommandTestUtil.PHONE_DESC_BOB","lastModifiedDate":"2024-03-16"},{"lineNumber":190,"author":{"gitId":"gerteck"},"content":" + CommandTestUtil.INVALID_EMAIL_DESC","lastModifiedDate":"2024-03-16"},{"lineNumber":191,"author":{"gitId":"chaaaaun"},"content":" + CommandTestUtil.ADDRESS_DESC_BOB + CommandTestUtil.TAG_DESC_HUSBAND","lastModifiedDate":"2024-03-12"},{"lineNumber":192,"author":{"gitId":"gerteck"},"content":" + CommandTestUtil.ROLE_DESC_BEFRIENDEE","lastModifiedDate":"2024-03-16"},{"lineNumber":193,"author":{"gitId":"chaaaaun"},"content":" + CommandTestUtil.TAG_DESC_FRIEND, Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":194,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":195,"author":{"gitId":"chaaaaun"},"content":" // invalid address","lastModifiedDate":"2024-03-12"},{"lineNumber":196,"author":{"gitId":"chaaaaun"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-03-12"},{"lineNumber":197,"author":{"gitId":"chaaaaun"},"content":" CommandTestUtil.NAME_DESC_BOB + CommandTestUtil.PHONE_DESC_BOB + CommandTestUtil.EMAIL_DESC_BOB","lastModifiedDate":"2024-03-12"},{"lineNumber":198,"author":{"gitId":"chaaaaun"},"content":" + CommandTestUtil.INVALID_ADDRESS_DESC + CommandTestUtil.TAG_DESC_HUSBAND","lastModifiedDate":"2024-03-12"},{"lineNumber":199,"author":{"gitId":"gerteck"},"content":" + CommandTestUtil.ROLE_DESC_BEFRIENDEE","lastModifiedDate":"2024-03-16"},{"lineNumber":200,"author":{"gitId":"chaaaaun"},"content":" + CommandTestUtil.TAG_DESC_FRIEND, Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":201,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":202,"author":{"gitId":"chaaaaun"},"content":" // invalid tag","lastModifiedDate":"2024-03-12"},{"lineNumber":203,"author":{"gitId":"chaaaaun"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-03-12"},{"lineNumber":204,"author":{"gitId":"chaaaaun"},"content":" CommandTestUtil.NAME_DESC_BOB + CommandTestUtil.PHONE_DESC_BOB + CommandTestUtil.EMAIL_DESC_BOB","lastModifiedDate":"2024-03-12"},{"lineNumber":205,"author":{"gitId":"gerteck"},"content":" + CommandTestUtil.ROLE_DESC_BEFRIENDEE","lastModifiedDate":"2024-03-16"},{"lineNumber":206,"author":{"gitId":"chaaaaun"},"content":" + CommandTestUtil.ADDRESS_DESC_BOB + CommandTestUtil.INVALID_TAG_DESC","lastModifiedDate":"2024-03-12"},{"lineNumber":207,"author":{"gitId":"chaaaaun"},"content":" + CommandTestUtil.VALID_TAG_FRIEND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":208,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":209,"author":{"gitId":"gerteck"},"content":" // invalid role","lastModifiedDate":"2024-03-16"},{"lineNumber":210,"author":{"gitId":"gerteck"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-03-16"},{"lineNumber":211,"author":{"gitId":"gerteck"},"content":" CommandTestUtil.NAME_DESC_BOB + CommandTestUtil.PHONE_DESC_BOB + CommandTestUtil.EMAIL_DESC_BOB","lastModifiedDate":"2024-03-16"},{"lineNumber":212,"author":{"gitId":"gerteck"},"content":" + CommandTestUtil.ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-16"},{"lineNumber":213,"author":{"gitId":"gerteck"},"content":" + CommandTestUtil.INVALID_ROLE_DESC","lastModifiedDate":"2024-03-16"},{"lineNumber":214,"author":{"gitId":"gerteck"},"content":" + CommandTestUtil.VALID_TAG_FRIEND, Role.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-16"},{"lineNumber":215,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":216,"author":{"gitId":"chaaaaun"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2024-03-12"},{"lineNumber":217,"author":{"gitId":"chaaaaun"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-03-12"},{"lineNumber":218,"author":{"gitId":"gerteck"},"content":" CommandTestUtil.INVALID_NAME_DESC + CommandTestUtil.PHONE_DESC_BOB","lastModifiedDate":"2024-03-16"},{"lineNumber":219,"author":{"gitId":"gerteck"},"content":" + CommandTestUtil.EMAIL_DESC_BOB","lastModifiedDate":"2024-03-16"},{"lineNumber":220,"author":{"gitId":"gerteck"},"content":" + CommandTestUtil.ROLE_DESC_BEFRIENDEE","lastModifiedDate":"2024-03-16"},{"lineNumber":221,"author":{"gitId":"chaaaaun"},"content":" + CommandTestUtil.INVALID_ADDRESS_DESC, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":222,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":223,"author":{"gitId":"chaaaaun"},"content":" // non-empty preamble","lastModifiedDate":"2024-03-12"},{"lineNumber":224,"author":{"gitId":"chaaaaun"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-03-12"},{"lineNumber":225,"author":{"gitId":"gerteck"},"content":" CommandTestUtil.PREAMBLE_NON_EMPTY + CommandTestUtil.NAME_DESC_BOB","lastModifiedDate":"2024-03-16"},{"lineNumber":226,"author":{"gitId":"gerteck"},"content":" + CommandTestUtil.PHONE_DESC_BOB","lastModifiedDate":"2024-03-16"},{"lineNumber":227,"author":{"gitId":"chaaaaun"},"content":" + CommandTestUtil.EMAIL_DESC_BOB + CommandTestUtil.ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-12"},{"lineNumber":228,"author":{"gitId":"gerteck"},"content":" + CommandTestUtil.ROLE_DESC_BEFRIENDEE","lastModifiedDate":"2024-03-16"},{"lineNumber":229,"author":{"gitId":"chaaaaun"},"content":" + CommandTestUtil.TAG_DESC_HUSBAND + CommandTestUtil.TAG_DESC_FRIEND,","lastModifiedDate":"2024-03-12"},{"lineNumber":230,"author":{"gitId":"chaaaaun"},"content":" String.format(Messages.MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-12"},{"lineNumber":231,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":232,"author":{"gitId":"chaaaaun"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"gerteck":54,"chaaaaun":178}},{"path":"src/test/java/scrolls/elder/logic/parser/AddressBookParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.logic.parser;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-06-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":12,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.Messages;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.commands.AddCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.commands.ClearCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.commands.DeleteCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.commands.EditCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.commands.ExitCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.commands.FindCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.commands.HelpCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.commands.ListCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Person;","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Role;","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.Assert;","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.PersonBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.PersonUtil;","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.TypicalIndexes;","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":33,"author":{"gitId":"chaaaaun"},"content":" private static final String ROLE_STRING \u003d \"volunteer\";","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(PersonUtil.getAddCommand(person));","lastModifiedDate":"2017-06-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertEquals(new AddCommand(person), command);","lastModifiedDate":"2017-06-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"sdevih"},"content":" public void parseCommand_delete1() throws Exception {","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"chaaaaun"},"content":" String userInput \u003d String.format(\"%s %d r/%s\", DeleteCommand.COMMAND_WORD_DELETE,","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"chaaaaun"},"content":" TypicalIndexes.INDEX_FIRST_PERSON.getOneBased(), ROLE_STRING);","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"chaaaaun"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(userInput);","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"chaaaaun"},"content":" assertEquals(new DeleteCommand(TypicalIndexes.INDEX_FIRST_PERSON, new Role(ROLE_STRING)), command);","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"sdevih"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"sdevih"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"sdevih"},"content":" public void parseCommand_delete2() throws Exception {","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"chaaaaun"},"content":" String userInput \u003d String.format(\"%s %d r/%s\", DeleteCommand.COMMAND_WORD_DEL,","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"chaaaaun"},"content":" TypicalIndexes.INDEX_FIRST_PERSON.getOneBased(), ROLE_STRING);","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"chaaaaun"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(userInput);","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"chaaaaun"},"content":" assertEquals(new DeleteCommand(TypicalIndexes.INDEX_FIRST_PERSON, new Role(ROLE_STRING)), command);","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"sdevih"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"sdevih"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"sdevih"},"content":" public void parseCommand_delete3() throws Exception {","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"chaaaaun"},"content":" String userInput \u003d String.format(\"%s %d r/%s\", DeleteCommand.COMMAND_WORD_RM,","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"chaaaaun"},"content":" TypicalIndexes.INDEX_FIRST_PERSON.getOneBased(), ROLE_STRING);","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"chaaaaun"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(userInput);","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"chaaaaun"},"content":" assertEquals(new DeleteCommand(TypicalIndexes.INDEX_FIRST_PERSON, new Role(ROLE_STRING)), command);","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"sdevih"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"sdevih"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"sdevih"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"sdevih"},"content":" public void parseCommand_delete4() throws Exception {","lastModifiedDate":"2024-03-21"},{"lineNumber":75,"author":{"gitId":"chaaaaun"},"content":" String userInput \u003d String.format(\"%s %d r/%s\", DeleteCommand.COMMAND_WORD_REMOVE,","lastModifiedDate":"2024-03-21"},{"lineNumber":76,"author":{"gitId":"chaaaaun"},"content":" TypicalIndexes.INDEX_FIRST_PERSON.getOneBased(), ROLE_STRING);","lastModifiedDate":"2024-03-21"},{"lineNumber":77,"author":{"gitId":"chaaaaun"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(userInput);","lastModifiedDate":"2024-03-21"},{"lineNumber":78,"author":{"gitId":"chaaaaun"},"content":" assertEquals(new DeleteCommand(TypicalIndexes.INDEX_FIRST_PERSON, new Role(ROLE_STRING)), command);","lastModifiedDate":"2024-03-21"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":84,"author":{"gitId":"chaaaaun"},"content":" EditCommand.EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(person).build();","lastModifiedDate":"2024-03-12"},{"lineNumber":85,"author":{"gitId":"-"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-27"},{"lineNumber":86,"author":{"gitId":"gerteck"},"content":" + TypicalIndexes.INDEX_FIRST_PERSON.getOneBased()","lastModifiedDate":"2024-03-16"},{"lineNumber":87,"author":{"gitId":"gerteck"},"content":" + \" \"","lastModifiedDate":"2024-03-16"},{"lineNumber":88,"author":{"gitId":"gerteck"},"content":" + PersonUtil.getEditPersonDescriptorDetails(descriptor));","lastModifiedDate":"2024-03-16"},{"lineNumber":89,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":90,"author":{"gitId":"chaaaaun"},"content":" assertEquals(new EditCommand(TypicalIndexes.INDEX_FIRST_PERSON, descriptor), command);","lastModifiedDate":"2024-03-12"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":101,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2017-06-12"},{"lineNumber":102,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":" FindCommand.COMMAND_WORD + \" \" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2017-06-27"},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertEquals(new FindCommand(new NameContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2017-06-12"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":114,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD) instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":116,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" 3\") instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":119,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":120,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":121,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(ParseException.class,","lastModifiedDate":"2024-03-12"},{"lineNumber":122,"author":{"gitId":"chaaaaun"},"content":" String.format(Messages.MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2024-03-12"},{"lineNumber":123,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":127,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":128,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(ParseException.class, Messages.MESSAGE_UNKNOWN_COMMAND, ()","lastModifiedDate":"2024-03-12"},{"lineNumber":129,"author":{"gitId":"chaaaaun"},"content":" -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":131,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"gerteck":4,"chaaaaun":42,"-":72,"sdevih":13}},{"path":"src/test/java/scrolls/elder/logic/parser/ArgumentTokenizerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.logic.parser;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class ArgumentTokenizerTest {","lastModifiedDate":"2016-10-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":12,"author":{"gitId":"-"},"content":" private final Prefix unknownPrefix \u003d new Prefix(\"--u\");","lastModifiedDate":"2016-10-16"},{"lineNumber":13,"author":{"gitId":"-"},"content":" private final Prefix pSlash \u003d new Prefix(\"p/\");","lastModifiedDate":"2017-03-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":" private final Prefix dashT \u003d new Prefix(\"-t\");","lastModifiedDate":"2016-10-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":" private final Prefix hatQ \u003d new Prefix(\"^Q\");","lastModifiedDate":"2016-10-16"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public void tokenize_emptyArgsString_noValues() {","lastModifiedDate":"2016-10-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":" String argsString \u003d \" \";","lastModifiedDate":"2016-10-16"},{"lineNumber":20,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash);","lastModifiedDate":"2017-03-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":22,"author":{"gitId":"-"},"content":" assertPreambleEmpty(argMultimap);","lastModifiedDate":"2017-03-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" assertArgumentAbsent(argMultimap, pSlash);","lastModifiedDate":"2017-03-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private void assertPreamblePresent(ArgumentMultimap argMultimap, String expectedPreamble) {","lastModifiedDate":"2017-03-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertEquals(expectedPreamble, argMultimap.getPreamble());","lastModifiedDate":"2017-03-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private void assertPreambleEmpty(ArgumentMultimap argMultimap) {","lastModifiedDate":"2017-03-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertTrue(argMultimap.getPreamble().isEmpty());","lastModifiedDate":"2017-03-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-20"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Asserts all the arguments in {@code argMultimap} with {@code prefix} match the {@code expectedValues}","lastModifiedDate":"2017-08-20"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * and only the last value is returned upon calling {@code ArgumentMultimap#getValue(Prefix)}.","lastModifiedDate":"2017-08-20"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-20"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private void assertArgumentPresent(ArgumentMultimap argMultimap, Prefix prefix, String... expectedValues) {","lastModifiedDate":"2017-03-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":40,"author":{"gitId":"-"},"content":" // Verify the last value is returned","lastModifiedDate":"2016-10-16"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertEquals(expectedValues[expectedValues.length - 1], argMultimap.getValue(prefix).get());","lastModifiedDate":"2017-06-07"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":43,"author":{"gitId":"-"},"content":" // Verify the number of values returned is as expected","lastModifiedDate":"2016-10-16"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertEquals(expectedValues.length, argMultimap.getAllValues(prefix).size());","lastModifiedDate":"2017-03-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":46,"author":{"gitId":"-"},"content":" // Verify all values returned are as expected and in order","lastModifiedDate":"2016-10-16"},{"lineNumber":47,"author":{"gitId":"-"},"content":" for (int i \u003d 0; i \u003c expectedValues.length; i++) {","lastModifiedDate":"2016-10-16"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertEquals(expectedValues[i], argMultimap.getAllValues(prefix).get(i));","lastModifiedDate":"2017-03-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":52,"author":{"gitId":"-"},"content":" private void assertArgumentAbsent(ArgumentMultimap argMultimap, Prefix prefix) {","lastModifiedDate":"2017-03-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(argMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void tokenize_noPrefixes_allTakenAsPreamble() {","lastModifiedDate":"2016-10-16"},{"lineNumber":58,"author":{"gitId":"-"},"content":" String argsString \u003d \" some random string /t tag with leading and trailing spaces \";","lastModifiedDate":"2016-10-16"},{"lineNumber":59,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argsString);","lastModifiedDate":"2017-03-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":61,"author":{"gitId":"-"},"content":" // Same string expected as preamble, but leading/trailing spaces should be trimmed","lastModifiedDate":"2016-10-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertPreamblePresent(argMultimap, argsString.trim());","lastModifiedDate":"2017-03-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void tokenize_oneArgument() {","lastModifiedDate":"2016-10-16"},{"lineNumber":68,"author":{"gitId":"-"},"content":" // Preamble present","lastModifiedDate":"2016-10-16"},{"lineNumber":69,"author":{"gitId":"-"},"content":" String argsString \u003d \" Some preamble string p/ Argument value \";","lastModifiedDate":"2017-03-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash);","lastModifiedDate":"2017-03-20"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertPreamblePresent(argMultimap, \"Some preamble string\");","lastModifiedDate":"2017-03-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, pSlash, \"Argument value\");","lastModifiedDate":"2017-03-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":74,"author":{"gitId":"-"},"content":" // No preamble","lastModifiedDate":"2016-10-16"},{"lineNumber":75,"author":{"gitId":"-"},"content":" argsString \u003d \" p/ Argument value \";","lastModifiedDate":"2017-03-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash);","lastModifiedDate":"2017-03-20"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertPreambleEmpty(argMultimap);","lastModifiedDate":"2017-03-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, pSlash, \"Argument value\");","lastModifiedDate":"2017-03-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void tokenize_multipleArguments() {","lastModifiedDate":"2016-10-16"},{"lineNumber":84,"author":{"gitId":"-"},"content":" // Only two arguments are present","lastModifiedDate":"2016-10-16"},{"lineNumber":85,"author":{"gitId":"-"},"content":" String argsString \u003d \"SomePreambleString -t dashT-Value p/pSlash value\";","lastModifiedDate":"2017-03-08"},{"lineNumber":86,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash, dashT, hatQ);","lastModifiedDate":"2017-03-20"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertPreamblePresent(argMultimap, \"SomePreambleString\");","lastModifiedDate":"2017-03-08"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, pSlash, \"pSlash value\");","lastModifiedDate":"2017-03-08"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, dashT, \"dashT-Value\");","lastModifiedDate":"2017-03-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertArgumentAbsent(argMultimap, hatQ);","lastModifiedDate":"2017-03-08"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":92,"author":{"gitId":"-"},"content":" // All three arguments are present","lastModifiedDate":"2017-05-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":" argsString \u003d \"Different Preamble String ^Q111 -t dashT-Value p/pSlash value\";","lastModifiedDate":"2017-03-08"},{"lineNumber":94,"author":{"gitId":"-"},"content":" argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash, dashT, hatQ);","lastModifiedDate":"2017-03-20"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertPreamblePresent(argMultimap, \"Different Preamble String\");","lastModifiedDate":"2017-03-08"},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, pSlash, \"pSlash value\");","lastModifiedDate":"2017-03-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, dashT, \"dashT-Value\");","lastModifiedDate":"2017-03-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, hatQ, \"111\");","lastModifiedDate":"2017-03-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":100,"author":{"gitId":"-"},"content":" /* Also covers: Reusing of the tokenizer multiple times */","lastModifiedDate":"2016-10-16"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":102,"author":{"gitId":"-"},"content":" // Reuse tokenizer on an empty string to ensure ArgumentMultimap is correctly reset","lastModifiedDate":"2017-03-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":" // (i.e. no stale values from the previous tokenizing remain)","lastModifiedDate":"2017-03-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":" argsString \u003d \"\";","lastModifiedDate":"2017-03-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":" argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash, dashT, hatQ);","lastModifiedDate":"2017-03-20"},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertPreambleEmpty(argMultimap);","lastModifiedDate":"2017-03-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertArgumentAbsent(argMultimap, pSlash);","lastModifiedDate":"2017-03-08"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":109,"author":{"gitId":"-"},"content":" /* Also covers: testing for prefixes not specified as a prefix */","lastModifiedDate":"2020-05-27"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":111,"author":{"gitId":"-"},"content":" // Prefixes not previously given to the tokenizer should not return any values","lastModifiedDate":"2016-10-16"},{"lineNumber":112,"author":{"gitId":"-"},"content":" argsString \u003d unknownPrefix + \"some value\";","lastModifiedDate":"2017-05-09"},{"lineNumber":113,"author":{"gitId":"-"},"content":" argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash, dashT, hatQ);","lastModifiedDate":"2017-03-20"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertArgumentAbsent(argMultimap, unknownPrefix);","lastModifiedDate":"2017-03-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertPreamblePresent(argMultimap, argsString); // Unknown prefix is taken as part of preamble","lastModifiedDate":"2017-03-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":118,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16"},{"lineNumber":119,"author":{"gitId":"-"},"content":" public void tokenize_multipleArgumentsWithRepeats() {","lastModifiedDate":"2016-10-16"},{"lineNumber":120,"author":{"gitId":"-"},"content":" // Two arguments repeated, some have empty values","lastModifiedDate":"2016-10-16"},{"lineNumber":121,"author":{"gitId":"-"},"content":" String argsString \u003d \"SomePreambleString -t dashT-Value ^Q ^Q -t another dashT value p/ pSlash value -t\";","lastModifiedDate":"2017-03-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash, dashT, hatQ);","lastModifiedDate":"2017-03-20"},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertPreamblePresent(argMultimap, \"SomePreambleString\");","lastModifiedDate":"2017-03-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, pSlash, \"pSlash value\");","lastModifiedDate":"2017-03-08"},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, dashT, \"dashT-Value\", \"another dashT value\", \"\");","lastModifiedDate":"2017-03-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, hatQ, \"\", \"\");","lastModifiedDate":"2017-03-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":129,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-19"},{"lineNumber":130,"author":{"gitId":"-"},"content":" public void tokenize_multipleArgumentsJoined() {","lastModifiedDate":"2017-05-19"},{"lineNumber":131,"author":{"gitId":"-"},"content":" String argsString \u003d \"SomePreambleStringp/ pSlash joined-tjoined -t not joined^Qjoined\";","lastModifiedDate":"2017-05-19"},{"lineNumber":132,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash, dashT, hatQ);","lastModifiedDate":"2017-05-19"},{"lineNumber":133,"author":{"gitId":"-"},"content":" assertPreamblePresent(argMultimap, \"SomePreambleStringp/ pSlash joined-tjoined\");","lastModifiedDate":"2017-05-19"},{"lineNumber":134,"author":{"gitId":"-"},"content":" assertArgumentAbsent(argMultimap, pSlash);","lastModifiedDate":"2017-05-19"},{"lineNumber":135,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, dashT, \"not joined^Qjoined\");","lastModifiedDate":"2017-05-19"},{"lineNumber":136,"author":{"gitId":"-"},"content":" assertArgumentAbsent(argMultimap, hatQ);","lastModifiedDate":"2017-05-19"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-19"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-19"},{"lineNumber":139,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16"},{"lineNumber":140,"author":{"gitId":"-"},"content":" public void equalsMethod() {","lastModifiedDate":"2016-10-16"},{"lineNumber":141,"author":{"gitId":"-"},"content":" Prefix aaa \u003d new Prefix(\"aaa\");","lastModifiedDate":"2016-10-16"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":143,"author":{"gitId":"-"},"content":" assertEquals(aaa, aaa);","lastModifiedDate":"2016-10-16"},{"lineNumber":144,"author":{"gitId":"-"},"content":" assertEquals(aaa, new Prefix(\"aaa\"));","lastModifiedDate":"2016-10-16"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertNotEquals(aaa, \"aaa\");","lastModifiedDate":"2016-10-16"},{"lineNumber":147,"author":{"gitId":"-"},"content":" assertNotEquals(aaa, new Prefix(\"aab\"));","lastModifiedDate":"2016-10-16"},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":150,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-10-16"}],"authorContributionMap":{"chaaaaun":1,"-":149}},{"path":"src/test/java/scrolls/elder/logic/parser/CommandParserTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.logic.parser;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06"},{"lineNumber":5,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.commands.Command;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06"},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-07-06"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * Contains helper methods for testing command parsers.","lastModifiedDate":"2017-07-06"},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-06"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class CommandParserTestUtil {","lastModifiedDate":"2017-07-06"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06"},{"lineNumber":13,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-06"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Asserts that the parsing of {@code userInput} by {@code parser} is successful and the command created","lastModifiedDate":"2017-07-06"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * equals to {@code expectedCommand}.","lastModifiedDate":"2017-07-06"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-06"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public static void assertParseSuccess(Parser\u003c? extends Command\u003e parser, String userInput,","lastModifiedDate":"2022-02-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Command expectedCommand) {","lastModifiedDate":"2022-02-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":20,"author":{"gitId":"-"},"content":" Command command \u003d parser.parse(userInput);","lastModifiedDate":"2017-07-06"},{"lineNumber":21,"author":{"gitId":"-"},"content":" assertEquals(expectedCommand, command);","lastModifiedDate":"2017-07-06"},{"lineNumber":22,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2017-08-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":" throw new IllegalArgumentException(\"Invalid userInput.\", pe);","lastModifiedDate":"2017-08-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Asserts that the parsing of {@code userInput} by {@code parser} is unsuccessful and the error message","lastModifiedDate":"2017-07-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * equals to {@code expectedMessage}.","lastModifiedDate":"2017-07-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static void assertParseFailure(Parser\u003c? extends Command\u003e parser, String userInput, String expectedMessage) {","lastModifiedDate":"2022-02-20"},{"lineNumber":32,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-07-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":" parser.parse(userInput);","lastModifiedDate":"2017-07-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":" throw new AssertionError(\"The expected ParseException was not thrown.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":35,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2017-07-06"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, pe.getMessage());","lastModifiedDate":"2017-07-06"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-06"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-06"},{"lineNumber":39,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-07-06"}],"authorContributionMap":{"chaaaaun":3,"-":36}},{"path":"src/test/java/scrolls/elder/logic/parser/DeleteCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.logic.parser;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":3,"author":{"gitId":"chaaaaun"},"content":"import static scrolls.elder.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"chaaaaun"},"content":"import static scrolls.elder.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.Messages;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.commands.DeleteCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Role;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.TypicalIndexes;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * As we are only doing white-box testing, our test cases do not cover path variations","lastModifiedDate":"2017-06-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * outside of the DeleteCommand code. For example, inputs \"1\" and \"1 abc\" take the","lastModifiedDate":"2017-06-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * same path through the DeleteCommand, and therefore we test only one of them.","lastModifiedDate":"2017-06-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * The path variation for those two cases occur inside the ParserUtil, and","lastModifiedDate":"2017-06-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * therefore should be covered by the ParserUtilTest.","lastModifiedDate":"2017-06-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class DeleteCommandParserTest {","lastModifiedDate":"2017-06-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":22,"author":{"gitId":"chaaaaun"},"content":" private static final String ROLE_STRING \u003d \"volunteer\";","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private DeleteCommandParser parser \u003d new DeleteCommandParser();","lastModifiedDate":"2017-06-09"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void parse_validArgs_returnsDeleteCommand() {","lastModifiedDate":"2017-08-15"},{"lineNumber":27,"author":{"gitId":"chaaaaun"},"content":" assertParseSuccess(parser, \"1 r/\" + ROLE_STRING,","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"chaaaaun"},"content":" new DeleteCommand(TypicalIndexes.INDEX_FIRST_PERSON, new Role(ROLE_STRING)));","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":33,"author":{"gitId":"chaaaaun"},"content":" assertParseFailure(parser, \"a\",","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"chaaaaun"},"content":" String.format(Messages.MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-09"}],"authorContributionMap":{"chaaaaun":12,"-":24}},{"path":"src/test/java/scrolls/elder/logic/parser/EditCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.logic.parser;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"chaaaaun"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.core.index.Index;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.Messages;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.commands.CommandTestUtil;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.commands.EditCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Address;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Email;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Name;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Phone;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.tag.Tag;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.TypicalIndexes;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"chaaaaun"},"content":"public class EditCommandParserTest {","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"chaaaaun"},"content":" private static final String TAG_EMPTY \u003d \" \" + CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"chaaaaun"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"chaaaaun"},"content":" String.format(Messages.MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"chaaaaun"},"content":" private EditCommandParser parser \u003d new EditCommandParser();","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"chaaaaun"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"chaaaaun"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"chaaaaun"},"content":" // no index specified","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"chaaaaun"},"content":" CommandParserTestUtil.assertParseFailure(parser, CommandTestUtil.VALID_NAME_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"chaaaaun"},"content":" // no field specified","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"chaaaaun"},"content":" CommandParserTestUtil.assertParseFailure(parser, \"1\", EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"chaaaaun"},"content":" // no index and no field specified","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"chaaaaun"},"content":" CommandParserTestUtil.assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"chaaaaun"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"chaaaaun"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"chaaaaun"},"content":" // negative index","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"chaaaaun"},"content":" CommandParserTestUtil.assertParseFailure(parser, \"-5\" + CommandTestUtil.NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"chaaaaun"},"content":" // zero index","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"chaaaaun"},"content":" CommandParserTestUtil.assertParseFailure(parser, \"0\" + CommandTestUtil.NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"chaaaaun"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"chaaaaun"},"content":" CommandParserTestUtil.assertParseFailure(parser, \"1 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"chaaaaun"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"chaaaaun"},"content":" CommandParserTestUtil.assertParseFailure(parser, \"1 i/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"chaaaaun"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"chaaaaun"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"chaaaaun"},"content":" CommandParserTestUtil.assertParseFailure(parser, \"1\" + CommandTestUtil.INVALID_NAME_DESC,","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"chaaaaun"},"content":" Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"chaaaaun"},"content":" CommandParserTestUtil.assertParseFailure(parser, \"1\" + CommandTestUtil.INVALID_PHONE_DESC,","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"chaaaaun"},"content":" Phone.MESSAGE_CONSTRAINTS); // invalid phone","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"chaaaaun"},"content":" CommandParserTestUtil.assertParseFailure(parser, \"1\" + CommandTestUtil.INVALID_EMAIL_DESC,","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"chaaaaun"},"content":" Email.MESSAGE_CONSTRAINTS); // invalid email","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"chaaaaun"},"content":" CommandParserTestUtil.assertParseFailure(parser, \"1\" + CommandTestUtil.INVALID_ADDRESS_DESC,","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"chaaaaun"},"content":" Address.MESSAGE_CONSTRAINTS); // invalid address","lastModifiedDate":"2024-03-12"},{"lineNumber":63,"author":{"gitId":"chaaaaun"},"content":" CommandParserTestUtil.assertParseFailure(parser, \"1\" + CommandTestUtil.INVALID_TAG_DESC,","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"chaaaaun"},"content":" Tag.MESSAGE_CONSTRAINTS); // invalid tag","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":66,"author":{"gitId":"chaaaaun"},"content":" // invalid phone followed by valid email","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"chaaaaun"},"content":" CommandParserTestUtil.assertParseFailure(parser,","lastModifiedDate":"2024-03-12"},{"lineNumber":68,"author":{"gitId":"chaaaaun"},"content":" \"1\" + CommandTestUtil.INVALID_PHONE_DESC + CommandTestUtil.EMAIL_DESC_AMY, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":69,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"chaaaaun"},"content":" // while parsing {@code PREFIX_TAG} alone will reset the tags of the {@code Person} being edited,","lastModifiedDate":"2024-03-12"},{"lineNumber":71,"author":{"gitId":"chaaaaun"},"content":" // parsing it together with a valid tag results in error","lastModifiedDate":"2024-03-12"},{"lineNumber":72,"author":{"gitId":"chaaaaun"},"content":" CommandParserTestUtil.assertParseFailure(parser,","lastModifiedDate":"2024-03-12"},{"lineNumber":73,"author":{"gitId":"chaaaaun"},"content":" \"1\" + CommandTestUtil.TAG_DESC_FRIEND + CommandTestUtil.TAG_DESC_HUSBAND + TAG_EMPTY,","lastModifiedDate":"2024-03-12"},{"lineNumber":74,"author":{"gitId":"chaaaaun"},"content":" Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":75,"author":{"gitId":"chaaaaun"},"content":" CommandParserTestUtil.assertParseFailure(parser,","lastModifiedDate":"2024-03-12"},{"lineNumber":76,"author":{"gitId":"chaaaaun"},"content":" \"1\" + CommandTestUtil.TAG_DESC_FRIEND + TAG_EMPTY + CommandTestUtil.TAG_DESC_HUSBAND,","lastModifiedDate":"2024-03-12"},{"lineNumber":77,"author":{"gitId":"chaaaaun"},"content":" Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":78,"author":{"gitId":"chaaaaun"},"content":" CommandParserTestUtil.assertParseFailure(parser,","lastModifiedDate":"2024-03-12"},{"lineNumber":79,"author":{"gitId":"chaaaaun"},"content":" \"1\" + TAG_EMPTY + CommandTestUtil.TAG_DESC_FRIEND + CommandTestUtil.TAG_DESC_HUSBAND,","lastModifiedDate":"2024-03-12"},{"lineNumber":80,"author":{"gitId":"chaaaaun"},"content":" Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":81,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":82,"author":{"gitId":"chaaaaun"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2024-03-12"},{"lineNumber":83,"author":{"gitId":"chaaaaun"},"content":" CommandParserTestUtil.assertParseFailure(parser,","lastModifiedDate":"2024-03-12"},{"lineNumber":84,"author":{"gitId":"chaaaaun"},"content":" \"1\" + CommandTestUtil.INVALID_NAME_DESC + CommandTestUtil.INVALID_EMAIL_DESC","lastModifiedDate":"2024-03-12"},{"lineNumber":85,"author":{"gitId":"chaaaaun"},"content":" + CommandTestUtil.VALID_ADDRESS_AMY + CommandTestUtil.VALID_PHONE_AMY,","lastModifiedDate":"2024-03-12"},{"lineNumber":86,"author":{"gitId":"chaaaaun"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":87,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":88,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":89,"author":{"gitId":"chaaaaun"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":90,"author":{"gitId":"chaaaaun"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2024-03-12"},{"lineNumber":91,"author":{"gitId":"chaaaaun"},"content":" Index targetIndex \u003d TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2024-03-12"},{"lineNumber":92,"author":{"gitId":"chaaaaun"},"content":" String userInput \u003d targetIndex.getOneBased() + CommandTestUtil.PHONE_DESC_BOB + CommandTestUtil.TAG_DESC_HUSBAND","lastModifiedDate":"2024-03-12"},{"lineNumber":93,"author":{"gitId":"chaaaaun"},"content":" + CommandTestUtil.EMAIL_DESC_AMY + CommandTestUtil.ADDRESS_DESC_AMY + CommandTestUtil.NAME_DESC_AMY","lastModifiedDate":"2024-03-12"},{"lineNumber":94,"author":{"gitId":"chaaaaun"},"content":" + CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2024-03-12"},{"lineNumber":95,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":96,"author":{"gitId":"chaaaaun"},"content":" EditCommand.EditPersonDescriptor descriptor \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":97,"author":{"gitId":"chaaaaun"},"content":" new EditPersonDescriptorBuilder().withName(CommandTestUtil.VALID_NAME_AMY)","lastModifiedDate":"2024-03-12"},{"lineNumber":98,"author":{"gitId":"chaaaaun"},"content":" .withPhone(CommandTestUtil.VALID_PHONE_BOB)","lastModifiedDate":"2024-03-12"},{"lineNumber":99,"author":{"gitId":"chaaaaun"},"content":" .withEmail(CommandTestUtil.VALID_EMAIL_AMY)","lastModifiedDate":"2024-03-12"},{"lineNumber":100,"author":{"gitId":"chaaaaun"},"content":" .withAddress(CommandTestUtil.VALID_ADDRESS_AMY)","lastModifiedDate":"2024-03-12"},{"lineNumber":101,"author":{"gitId":"chaaaaun"},"content":" .withTags(CommandTestUtil.VALID_TAG_HUSBAND, CommandTestUtil.VALID_TAG_FRIEND)","lastModifiedDate":"2024-03-12"},{"lineNumber":102,"author":{"gitId":"chaaaaun"},"content":" .build();","lastModifiedDate":"2024-03-12"},{"lineNumber":103,"author":{"gitId":"chaaaaun"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-12"},{"lineNumber":104,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":105,"author":{"gitId":"chaaaaun"},"content":" CommandParserTestUtil.assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-12"},{"lineNumber":106,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":107,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":108,"author":{"gitId":"chaaaaun"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":109,"author":{"gitId":"chaaaaun"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2024-03-12"},{"lineNumber":110,"author":{"gitId":"chaaaaun"},"content":" Index targetIndex \u003d TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-12"},{"lineNumber":111,"author":{"gitId":"chaaaaun"},"content":" String userInput \u003d targetIndex.getOneBased() + CommandTestUtil.PHONE_DESC_BOB + CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":112,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":113,"author":{"gitId":"chaaaaun"},"content":" EditCommand.EditPersonDescriptor descriptor \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":114,"author":{"gitId":"chaaaaun"},"content":" new EditPersonDescriptorBuilder().withPhone(CommandTestUtil.VALID_PHONE_BOB)","lastModifiedDate":"2024-03-12"},{"lineNumber":115,"author":{"gitId":"chaaaaun"},"content":" .withEmail(CommandTestUtil.VALID_EMAIL_AMY).build();","lastModifiedDate":"2024-03-12"},{"lineNumber":116,"author":{"gitId":"chaaaaun"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-12"},{"lineNumber":117,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":118,"author":{"gitId":"chaaaaun"},"content":" CommandParserTestUtil.assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-12"},{"lineNumber":119,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":120,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":121,"author":{"gitId":"chaaaaun"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":122,"author":{"gitId":"chaaaaun"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2024-03-12"},{"lineNumber":123,"author":{"gitId":"chaaaaun"},"content":" // name","lastModifiedDate":"2024-03-12"},{"lineNumber":124,"author":{"gitId":"chaaaaun"},"content":" Index targetIndex \u003d TypicalIndexes.INDEX_THIRD_PERSON;","lastModifiedDate":"2024-03-12"},{"lineNumber":125,"author":{"gitId":"chaaaaun"},"content":" String userInput \u003d targetIndex.getOneBased() + CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":126,"author":{"gitId":"chaaaaun"},"content":" EditCommand.EditPersonDescriptor descriptor \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":127,"author":{"gitId":"chaaaaun"},"content":" new EditPersonDescriptorBuilder().withName(CommandTestUtil.VALID_NAME_AMY).build();","lastModifiedDate":"2024-03-12"},{"lineNumber":128,"author":{"gitId":"chaaaaun"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-12"},{"lineNumber":129,"author":{"gitId":"chaaaaun"},"content":" CommandParserTestUtil.assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-12"},{"lineNumber":130,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":131,"author":{"gitId":"chaaaaun"},"content":" // phone","lastModifiedDate":"2024-03-12"},{"lineNumber":132,"author":{"gitId":"chaaaaun"},"content":" userInput \u003d targetIndex.getOneBased() + CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":133,"author":{"gitId":"chaaaaun"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withPhone(CommandTestUtil.VALID_PHONE_AMY).build();","lastModifiedDate":"2024-03-12"},{"lineNumber":134,"author":{"gitId":"chaaaaun"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-12"},{"lineNumber":135,"author":{"gitId":"chaaaaun"},"content":" CommandParserTestUtil.assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-12"},{"lineNumber":136,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":137,"author":{"gitId":"chaaaaun"},"content":" // email","lastModifiedDate":"2024-03-12"},{"lineNumber":138,"author":{"gitId":"chaaaaun"},"content":" userInput \u003d targetIndex.getOneBased() + CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":139,"author":{"gitId":"chaaaaun"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withEmail(CommandTestUtil.VALID_EMAIL_AMY).build();","lastModifiedDate":"2024-03-12"},{"lineNumber":140,"author":{"gitId":"chaaaaun"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-12"},{"lineNumber":141,"author":{"gitId":"chaaaaun"},"content":" CommandParserTestUtil.assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-12"},{"lineNumber":142,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":143,"author":{"gitId":"chaaaaun"},"content":" // address","lastModifiedDate":"2024-03-12"},{"lineNumber":144,"author":{"gitId":"chaaaaun"},"content":" userInput \u003d targetIndex.getOneBased() + CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":145,"author":{"gitId":"chaaaaun"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withAddress(CommandTestUtil.VALID_ADDRESS_AMY).build();","lastModifiedDate":"2024-03-12"},{"lineNumber":146,"author":{"gitId":"chaaaaun"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-12"},{"lineNumber":147,"author":{"gitId":"chaaaaun"},"content":" CommandParserTestUtil.assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-12"},{"lineNumber":148,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":149,"author":{"gitId":"chaaaaun"},"content":" // tags","lastModifiedDate":"2024-03-12"},{"lineNumber":150,"author":{"gitId":"chaaaaun"},"content":" userInput \u003d targetIndex.getOneBased() + CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2024-03-12"},{"lineNumber":151,"author":{"gitId":"chaaaaun"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withTags(CommandTestUtil.VALID_TAG_FRIEND).build();","lastModifiedDate":"2024-03-12"},{"lineNumber":152,"author":{"gitId":"chaaaaun"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-12"},{"lineNumber":153,"author":{"gitId":"chaaaaun"},"content":" CommandParserTestUtil.assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-12"},{"lineNumber":154,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":155,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":156,"author":{"gitId":"chaaaaun"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":157,"author":{"gitId":"chaaaaun"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2024-03-12"},{"lineNumber":158,"author":{"gitId":"chaaaaun"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2024-03-12"},{"lineNumber":159,"author":{"gitId":"chaaaaun"},"content":" // AddCommandParserTest#parse_repeatedNonTagValue_failure()","lastModifiedDate":"2024-03-12"},{"lineNumber":160,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":161,"author":{"gitId":"chaaaaun"},"content":" // valid followed by invalid","lastModifiedDate":"2024-03-12"},{"lineNumber":162,"author":{"gitId":"chaaaaun"},"content":" Index targetIndex \u003d TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-12"},{"lineNumber":163,"author":{"gitId":"chaaaaun"},"content":" String userInput \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":164,"author":{"gitId":"chaaaaun"},"content":" targetIndex.getOneBased() + CommandTestUtil.INVALID_PHONE_DESC + CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":165,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":166,"author":{"gitId":"chaaaaun"},"content":" CommandParserTestUtil.assertParseFailure(parser, userInput,","lastModifiedDate":"2024-03-12"},{"lineNumber":167,"author":{"gitId":"chaaaaun"},"content":" Messages.getErrorMessageForDuplicatePrefixes(CliSyntax.PREFIX_PHONE));","lastModifiedDate":"2024-03-12"},{"lineNumber":168,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":169,"author":{"gitId":"chaaaaun"},"content":" // invalid followed by valid","lastModifiedDate":"2024-03-12"},{"lineNumber":170,"author":{"gitId":"chaaaaun"},"content":" userInput \u003d targetIndex.getOneBased() + CommandTestUtil.PHONE_DESC_BOB + CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2024-03-12"},{"lineNumber":171,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":172,"author":{"gitId":"chaaaaun"},"content":" CommandParserTestUtil.assertParseFailure(parser, userInput,","lastModifiedDate":"2024-03-12"},{"lineNumber":173,"author":{"gitId":"chaaaaun"},"content":" Messages.getErrorMessageForDuplicatePrefixes(CliSyntax.PREFIX_PHONE));","lastModifiedDate":"2024-03-12"},{"lineNumber":174,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":175,"author":{"gitId":"chaaaaun"},"content":" // mulltiple valid fields repeated","lastModifiedDate":"2024-03-12"},{"lineNumber":176,"author":{"gitId":"chaaaaun"},"content":" userInput \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":177,"author":{"gitId":"chaaaaun"},"content":" targetIndex.getOneBased() + CommandTestUtil.PHONE_DESC_AMY + CommandTestUtil.ADDRESS_DESC_AMY","lastModifiedDate":"2024-03-12"},{"lineNumber":178,"author":{"gitId":"chaaaaun"},"content":" + CommandTestUtil.EMAIL_DESC_AMY","lastModifiedDate":"2024-03-12"},{"lineNumber":179,"author":{"gitId":"chaaaaun"},"content":" + CommandTestUtil.TAG_DESC_FRIEND + CommandTestUtil.PHONE_DESC_AMY","lastModifiedDate":"2024-03-12"},{"lineNumber":180,"author":{"gitId":"chaaaaun"},"content":" + CommandTestUtil.ADDRESS_DESC_AMY + CommandTestUtil.EMAIL_DESC_AMY","lastModifiedDate":"2024-03-12"},{"lineNumber":181,"author":{"gitId":"chaaaaun"},"content":" + CommandTestUtil.TAG_DESC_FRIEND","lastModifiedDate":"2024-03-12"},{"lineNumber":182,"author":{"gitId":"chaaaaun"},"content":" + CommandTestUtil.PHONE_DESC_BOB + CommandTestUtil.ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-12"},{"lineNumber":183,"author":{"gitId":"chaaaaun"},"content":" + CommandTestUtil.EMAIL_DESC_BOB + CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2024-03-12"},{"lineNumber":184,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":185,"author":{"gitId":"chaaaaun"},"content":" CommandParserTestUtil.assertParseFailure(parser, userInput,","lastModifiedDate":"2024-03-12"},{"lineNumber":186,"author":{"gitId":"chaaaaun"},"content":" Messages.getErrorMessageForDuplicatePrefixes(CliSyntax.PREFIX_PHONE, CliSyntax.PREFIX_EMAIL,","lastModifiedDate":"2024-03-12"},{"lineNumber":187,"author":{"gitId":"chaaaaun"},"content":" CliSyntax.PREFIX_ADDRESS));","lastModifiedDate":"2024-03-12"},{"lineNumber":188,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":189,"author":{"gitId":"chaaaaun"},"content":" // multiple invalid values","lastModifiedDate":"2024-03-12"},{"lineNumber":190,"author":{"gitId":"chaaaaun"},"content":" userInput \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":191,"author":{"gitId":"chaaaaun"},"content":" targetIndex.getOneBased() + CommandTestUtil.INVALID_PHONE_DESC + CommandTestUtil.INVALID_ADDRESS_DESC","lastModifiedDate":"2024-03-12"},{"lineNumber":192,"author":{"gitId":"chaaaaun"},"content":" + CommandTestUtil.INVALID_EMAIL_DESC","lastModifiedDate":"2024-03-12"},{"lineNumber":193,"author":{"gitId":"chaaaaun"},"content":" + CommandTestUtil.INVALID_PHONE_DESC + CommandTestUtil.INVALID_ADDRESS_DESC","lastModifiedDate":"2024-03-12"},{"lineNumber":194,"author":{"gitId":"chaaaaun"},"content":" + CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2024-03-12"},{"lineNumber":195,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":196,"author":{"gitId":"chaaaaun"},"content":" CommandParserTestUtil.assertParseFailure(parser, userInput,","lastModifiedDate":"2024-03-12"},{"lineNumber":197,"author":{"gitId":"chaaaaun"},"content":" Messages.getErrorMessageForDuplicatePrefixes(CliSyntax.PREFIX_PHONE, CliSyntax.PREFIX_EMAIL,","lastModifiedDate":"2024-03-12"},{"lineNumber":198,"author":{"gitId":"chaaaaun"},"content":" CliSyntax.PREFIX_ADDRESS));","lastModifiedDate":"2024-03-12"},{"lineNumber":199,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":200,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":201,"author":{"gitId":"chaaaaun"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":202,"author":{"gitId":"chaaaaun"},"content":" public void parse_resetTags_success() {","lastModifiedDate":"2024-03-12"},{"lineNumber":203,"author":{"gitId":"chaaaaun"},"content":" Index targetIndex \u003d TypicalIndexes.INDEX_THIRD_PERSON;","lastModifiedDate":"2024-03-12"},{"lineNumber":204,"author":{"gitId":"chaaaaun"},"content":" String userInput \u003d targetIndex.getOneBased() + TAG_EMPTY;","lastModifiedDate":"2024-03-12"},{"lineNumber":205,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":206,"author":{"gitId":"chaaaaun"},"content":" EditCommand.EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withTags().build();","lastModifiedDate":"2024-03-12"},{"lineNumber":207,"author":{"gitId":"chaaaaun"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-12"},{"lineNumber":208,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":209,"author":{"gitId":"chaaaaun"},"content":" CommandParserTestUtil.assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-12"},{"lineNumber":210,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":211,"author":{"gitId":"chaaaaun"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"chaaaaun":211}},{"path":"src/test/java/scrolls/elder/logic/parser/FindCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.logic.parser;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":3,"author":{"gitId":"chaaaaun"},"content":"import static scrolls.elder.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"chaaaaun"},"content":"import static scrolls.elder.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.Messages;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.commands.FindCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class FindCommandParserTest {","lastModifiedDate":"2017-06-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":" private FindCommandParser parser \u003d new FindCommandParser();","lastModifiedDate":"2017-06-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public void parse_emptyArg_throwsParseException() {","lastModifiedDate":"2017-06-27"},{"lineNumber":20,"author":{"gitId":"chaaaaun"},"content":" assertParseFailure(parser, \" \",","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"chaaaaun"},"content":" String.format(Messages.MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void parse_validArgs_returnsFindCommand() {","lastModifiedDate":"2017-08-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2017-06-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" FindCommand expectedFindCommand \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" new FindCommand(new NameContainsKeywordsPredicate(Arrays.asList(\"Alice\", \"Bob\")));","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, \"Alice Bob\", expectedFindCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // multiple whitespaces between keywords","lastModifiedDate":"2017-06-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, \" \\n Alice \\n \\t Bob \\t\", expectedFindCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-27"}],"authorContributionMap":{"chaaaaun":8,"-":27}},{"path":"src/test/java/scrolls/elder/logic/parser/PairCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"soons1"},"content":"package scrolls.elder.logic.parser;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"soons1"},"content":"import static scrolls.elder.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"soons1"},"content":"import static scrolls.elder.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"soons1"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"soons1"},"content":"import scrolls.elder.logic.Messages;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"soons1"},"content":"import scrolls.elder.logic.commands.PairCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"soons1"},"content":"import scrolls.elder.testutil.TypicalIndexes;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"soons1"},"content":"class PairCommandParserTest {","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"soons1"},"content":" private PairCommandParser parser \u003d new PairCommandParser();","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"soons1"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"soons1"},"content":" void parse_validArgs_returnsPairCommand() {","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"soons1"},"content":" assertParseSuccess(parser, \"1 5\",","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"soons1"},"content":" new PairCommand(TypicalIndexes.INDEX_FIRST_PERSON, TypicalIndexes.INDEX_FIFTH_PERSON));","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"soons1"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"soons1"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"soons1"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"soons1"},"content":" assertParseFailure(parser, \"pe\",","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"soons1"},"content":" String.format(Messages.MESSAGE_INVALID_COMMAND_FORMAT, PairCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"soons1"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"soons1"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"soons1":27}},{"path":"src/test/java/scrolls/elder/logic/parser/ParserUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.logic.parser;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-22"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-05-22"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-05-22"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-05-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":"import org.junit.jupiter.api.Assertions;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":14,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Address;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Email;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Name;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Phone;","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.tag.Tag;","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.Assert;","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.TypicalIndexes;","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class ParserUtilTest {","lastModifiedDate":"2017-05-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2017-05-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2017-05-22"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2017-05-22"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2017-05-22"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2017-05-22"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d \"Rachel Walker\";","lastModifiedDate":"2017-05-22"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d \"123456\";","lastModifiedDate":"2017-05-22"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d \"123 Main Street #0505\";","lastModifiedDate":"2017-05-22"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d \"rachel@example.com\";","lastModifiedDate":"2017-05-22"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_1 \u003d \"friend\";","lastModifiedDate":"2017-05-22"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_2 \u003d \"neighbour\";","lastModifiedDate":"2017-05-22"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final String WHITESPACE \u003d \" \\t\\r\\n\";","lastModifiedDate":"2017-05-29"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void parseIndex_invalidInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":41,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(ParseException.class, () -\u003e ParserUtil.parseIndex(\"10 a\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void parseIndex_outOfRangeInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":46,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(ParseException.class, ParserUtil.MESSAGE_INVALID_INDEX, ()","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":" -\u003e ParserUtil.parseIndex(Long.toString(Integer.MAX_VALUE + 1)));","lastModifiedDate":"2019-03-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void parseIndex_validInput_success() throws Exception {","lastModifiedDate":"2017-05-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // No whitespaces","lastModifiedDate":"2017-05-26"},{"lineNumber":53,"author":{"gitId":"chaaaaun"},"content":" Assertions.assertEquals(TypicalIndexes.INDEX_FIRST_PERSON, ParserUtil.parseIndex(\"1\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // Leading and trailing whitespaces","lastModifiedDate":"2017-05-26"},{"lineNumber":56,"author":{"gitId":"chaaaaun"},"content":" Assertions.assertEquals(TypicalIndexes.INDEX_FIRST_PERSON, ParserUtil.parseIndex(\" 1 \"));","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void parseName_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-29"},{"lineNumber":61,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseName((String) null));","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void parseName_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":66,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(ParseException.class, () -\u003e ParserUtil.parseName(INVALID_NAME));","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void parseName_validValueWithoutWhitespace_returnsName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":71,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-22"},{"lineNumber":72,"author":{"gitId":"chaaaaun"},"content":" Assertions.assertEquals(expectedName, ParserUtil.parseName(VALID_NAME));","lastModifiedDate":"2024-03-12"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-29"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void parseName_validValueWithWhitespace_returnsTrimmedName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":77,"author":{"gitId":"-"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_NAME + WHITESPACE;","lastModifiedDate":"2017-05-29"},{"lineNumber":78,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-29"},{"lineNumber":79,"author":{"gitId":"chaaaaun"},"content":" Assertions.assertEquals(expectedName, ParserUtil.parseName(nameWithWhitespace));","lastModifiedDate":"2024-03-12"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void parsePhone_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":84,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e ParserUtil.parsePhone((String) null));","lastModifiedDate":"2024-03-12"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void parsePhone_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":89,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(ParseException.class, () -\u003e ParserUtil.parsePhone(INVALID_PHONE));","lastModifiedDate":"2024-03-12"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithoutWhitespace_returnsPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":94,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-22"},{"lineNumber":95,"author":{"gitId":"chaaaaun"},"content":" Assertions.assertEquals(expectedPhone, ParserUtil.parsePhone(VALID_PHONE));","lastModifiedDate":"2024-03-12"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":99,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithWhitespace_returnsTrimmedPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":100,"author":{"gitId":"-"},"content":" String phoneWithWhitespace \u003d WHITESPACE + VALID_PHONE + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":101,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-30"},{"lineNumber":102,"author":{"gitId":"chaaaaun"},"content":" Assertions.assertEquals(expectedPhone, ParserUtil.parsePhone(phoneWithWhitespace));","lastModifiedDate":"2024-03-12"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":106,"author":{"gitId":"-"},"content":" public void parseAddress_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":107,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseAddress((String) null));","lastModifiedDate":"2024-03-12"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":111,"author":{"gitId":"-"},"content":" public void parseAddress_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":112,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(ParseException.class, () -\u003e ParserUtil.parseAddress(INVALID_ADDRESS));","lastModifiedDate":"2024-03-12"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":116,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithoutWhitespace_returnsAddress() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":117,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-22"},{"lineNumber":118,"author":{"gitId":"chaaaaun"},"content":" Assertions.assertEquals(expectedAddress, ParserUtil.parseAddress(VALID_ADDRESS));","lastModifiedDate":"2024-03-12"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":122,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithWhitespace_returnsTrimmedAddress() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":123,"author":{"gitId":"-"},"content":" String addressWithWhitespace \u003d WHITESPACE + VALID_ADDRESS + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":124,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-30"},{"lineNumber":125,"author":{"gitId":"chaaaaun"},"content":" Assertions.assertEquals(expectedAddress, ParserUtil.parseAddress(addressWithWhitespace));","lastModifiedDate":"2024-03-12"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":129,"author":{"gitId":"-"},"content":" public void parseEmail_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":130,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseEmail((String) null));","lastModifiedDate":"2024-03-12"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":133,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":134,"author":{"gitId":"-"},"content":" public void parseEmail_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":135,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(ParseException.class, () -\u003e ParserUtil.parseEmail(INVALID_EMAIL));","lastModifiedDate":"2024-03-12"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":138,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":139,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithoutWhitespace_returnsEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":140,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-22"},{"lineNumber":141,"author":{"gitId":"chaaaaun"},"content":" Assertions.assertEquals(expectedEmail, ParserUtil.parseEmail(VALID_EMAIL));","lastModifiedDate":"2024-03-12"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":144,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":145,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithWhitespace_returnsTrimmedEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":146,"author":{"gitId":"-"},"content":" String emailWithWhitespace \u003d WHITESPACE + VALID_EMAIL + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":147,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-30"},{"lineNumber":148,"author":{"gitId":"chaaaaun"},"content":" Assertions.assertEquals(expectedEmail, ParserUtil.parseEmail(emailWithWhitespace));","lastModifiedDate":"2024-03-12"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":151,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":152,"author":{"gitId":"-"},"content":" public void parseTag_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":153,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTag(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":156,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":157,"author":{"gitId":"-"},"content":" public void parseTag_invalidValue_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":158,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(ParseException.class, () -\u003e ParserUtil.parseTag(INVALID_TAG));","lastModifiedDate":"2024-03-12"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":161,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":162,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithoutWhitespace_returnsTag() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":163,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30"},{"lineNumber":164,"author":{"gitId":"chaaaaun"},"content":" Assertions.assertEquals(expectedTag, ParserUtil.parseTag(VALID_TAG_1));","lastModifiedDate":"2024-03-12"},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":167,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":168,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithWhitespace_returnsTrimmedTag() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":169,"author":{"gitId":"-"},"content":" String tagWithWhitespace \u003d WHITESPACE + VALID_TAG_1 + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":170,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30"},{"lineNumber":171,"author":{"gitId":"chaaaaun"},"content":" Assertions.assertEquals(expectedTag, ParserUtil.parseTag(tagWithWhitespace));","lastModifiedDate":"2024-03-12"},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":174,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":175,"author":{"gitId":"-"},"content":" public void parseTags_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":176,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTags(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":179,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":180,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithInvalidTags_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":181,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(ParseException.class, () -\u003e ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, INVALID_TAG)));","lastModifiedDate":"2024-03-12"},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":184,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":185,"author":{"gitId":"-"},"content":" public void parseTags_emptyCollection_returnsEmptySet() throws Exception {","lastModifiedDate":"2017-05-22"},{"lineNumber":186,"author":{"gitId":"-"},"content":" assertTrue(ParserUtil.parseTags(Collections.emptyList()).isEmpty());","lastModifiedDate":"2017-05-22"},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":189,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":190,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithValidTags_returnsTagSet() throws Exception {","lastModifiedDate":"2017-05-22"},{"lineNumber":191,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e actualTagSet \u003d ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, VALID_TAG_2));","lastModifiedDate":"2017-05-22"},{"lineNumber":192,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e expectedTagSet \u003d new HashSet\u003cTag\u003e(Arrays.asList(new Tag(VALID_TAG_1), new Tag(VALID_TAG_2)));","lastModifiedDate":"2017-05-22"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":194,"author":{"gitId":"-"},"content":" assertEquals(expectedTagSet, actualTagSet);","lastModifiedDate":"2017-05-22"},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":196,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-22"}],"authorContributionMap":{"chaaaaun":36,"-":160}},{"path":"src/test/java/scrolls/elder/logic/parser/UnpairCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"soons1"},"content":"package scrolls.elder.logic.parser;","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":3,"author":{"gitId":"soons1"},"content":"import static scrolls.elder.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-22"},{"lineNumber":4,"author":{"gitId":"soons1"},"content":"import static scrolls.elder.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-22"},{"lineNumber":5,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":6,"author":{"gitId":"soons1"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-22"},{"lineNumber":7,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":8,"author":{"gitId":"soons1"},"content":"import scrolls.elder.logic.Messages;","lastModifiedDate":"2024-03-22"},{"lineNumber":9,"author":{"gitId":"soons1"},"content":"import scrolls.elder.logic.commands.UnpairCommand;","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"soons1"},"content":"import scrolls.elder.testutil.TypicalIndexes;","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"soons1"},"content":"class UnpairCommandParserTest {","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"soons1"},"content":" private UnpairCommandParser parser \u003d new UnpairCommandParser();","lastModifiedDate":"2024-03-22"},{"lineNumber":15,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"soons1"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":17,"author":{"gitId":"soons1"},"content":" void parse_validArgs_returnsUnpairCommand() {","lastModifiedDate":"2024-03-22"},{"lineNumber":18,"author":{"gitId":"soons1"},"content":" assertParseSuccess(parser, \"1 5\",","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"author":{"gitId":"soons1"},"content":" new UnpairCommand(TypicalIndexes.INDEX_FIRST_PERSON, TypicalIndexes.INDEX_FIFTH_PERSON));","lastModifiedDate":"2024-03-22"},{"lineNumber":20,"author":{"gitId":"soons1"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":21,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":22,"author":{"gitId":"soons1"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"soons1"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2024-03-22"},{"lineNumber":24,"author":{"gitId":"soons1"},"content":" assertParseFailure(parser, \"pe\",","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"soons1"},"content":" String.format(Messages.MESSAGE_INVALID_COMMAND_FORMAT, UnpairCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-22"},{"lineNumber":26,"author":{"gitId":"soons1"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":27,"author":{"gitId":"soons1"},"content":"}","lastModifiedDate":"2024-03-22"}],"authorContributionMap":{"soons1":27}},{"path":"src/test/java/scrolls/elder/model/AddressBookTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.model;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"chaaaaun"},"content":"import static scrolls.elder.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"chaaaaun"},"content":"import static scrolls.elder.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2016-12-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2016-12-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2016-12-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2016-12-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-12-24"},{"lineNumber":18,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Person;","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.Assert;","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.PersonBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.TypicalPersons;","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class AddressBookTest {","lastModifiedDate":"2016-12-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":26,"author":{"gitId":"chaaaaun"},"content":" private final AddressBook addressBook \u003d new AddressBook(0);","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2016-12-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), addressBook.getPersonList());","lastModifiedDate":"2016-12-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public void resetData_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":35,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e addressBook.resetData(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void resetData_withValidReadOnlyAddressBook_replacesData() {","lastModifiedDate":"2016-12-24"},{"lineNumber":40,"author":{"gitId":"chaaaaun"},"content":" AddressBook newData \u003d TypicalPersons.getTypicalAddressBook();","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":" addressBook.resetData(newData);","lastModifiedDate":"2016-12-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertEquals(newData, addressBook);","lastModifiedDate":"2016-12-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void resetData_withDuplicatePersons_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-07"},{"lineNumber":47,"author":{"gitId":"-"},"content":" // Two persons with the same identity fields","lastModifiedDate":"2018-04-19"},{"lineNumber":48,"author":{"gitId":"chaaaaun"},"content":" Person editedAlice \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"chaaaaun"},"content":" new PersonBuilder(TypicalPersons.ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-04-19"},{"lineNumber":51,"author":{"gitId":"chaaaaun"},"content":" List\u003cPerson\u003e newPersons \u003d Arrays.asList(TypicalPersons.ALICE, editedAlice);","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":" AddressBookStub newData \u003d new AddressBookStub(newPersons);","lastModifiedDate":"2018-03-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":54,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(DuplicatePersonException.class, () -\u003e addressBook.resetData(newData));","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void hasPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-06"},{"lineNumber":59,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e addressBook.hasPerson(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void hasPerson_personNotInAddressBook_returnsFalse() {","lastModifiedDate":"2018-08-06"},{"lineNumber":64,"author":{"gitId":"chaaaaun"},"content":" assertFalse(addressBook.hasPerson(TypicalPersons.ALICE));","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void hasPerson_personInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07"},{"lineNumber":69,"author":{"gitId":"chaaaaun"},"content":" addressBook.addPerson(TypicalPersons.ALICE);","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"chaaaaun"},"content":" assertTrue(addressBook.hasPerson(TypicalPersons.ALICE));","lastModifiedDate":"2024-03-12"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void hasPerson_personWithSameIdentityFieldsInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07"},{"lineNumber":75,"author":{"gitId":"chaaaaun"},"content":" addressBook.addPerson(TypicalPersons.ALICE);","lastModifiedDate":"2024-03-12"},{"lineNumber":76,"author":{"gitId":"chaaaaun"},"content":" Person editedAlice \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":77,"author":{"gitId":"chaaaaun"},"content":" new PersonBuilder(TypicalPersons.ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-03-12"},{"lineNumber":78,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-06"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertTrue(addressBook.hasPerson(editedAlice));","lastModifiedDate":"2018-08-06"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void getPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":84,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(UnsupportedOperationException.class, () -\u003e addressBook.getPersonList().remove(0));","lastModifiedDate":"2024-03-12"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":" String expected \u003d AddressBook.class.getCanonicalName() + \"{persons\u003d\" + addressBook.getPersonList() + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertEquals(expected, addressBook.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-24"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * A stub ReadOnlyAddressBook whose persons list can violate interface constraints.","lastModifiedDate":"2018-03-29"},{"lineNumber":95,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-24"},{"lineNumber":96,"author":{"gitId":"-"},"content":" private static class AddressBookStub implements ReadOnlyAddressBook {","lastModifiedDate":"2016-12-24"},{"lineNumber":97,"author":{"gitId":"chaaaaun"},"content":" private int globalId \u003d 0;","lastModifiedDate":"2024-03-17"},{"lineNumber":98,"author":{"gitId":"-"},"content":" private final ObservableList\u003cPerson\u003e persons \u003d FXCollections.observableArrayList();","lastModifiedDate":"2018-01-10"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":100,"author":{"gitId":"-"},"content":" AddressBookStub(Collection\u003cPerson\u003e persons) {","lastModifiedDate":"2018-03-29"},{"lineNumber":101,"author":{"gitId":"-"},"content":" this.persons.setAll(persons);","lastModifiedDate":"2016-12-24"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":104,"author":{"gitId":"chaaaaun"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":105,"author":{"gitId":"chaaaaun"},"content":" public int getGlobalId() {","lastModifiedDate":"2024-03-17"},{"lineNumber":106,"author":{"gitId":"chaaaaun"},"content":" return globalId;","lastModifiedDate":"2024-03-17"},{"lineNumber":107,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":108,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-24"},{"lineNumber":110,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":111,"author":{"gitId":"-"},"content":" return persons;","lastModifiedDate":"2016-12-24"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":115,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-24"}],"authorContributionMap":{"chaaaaun":29,"-":86}},{"path":"src/test/java/scrolls/elder/model/ModelManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.model;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-31"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":"import org.junit.jupiter.api.Assertions;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":14,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.core.GuiSettings;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.AddressBookBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.Assert;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.TypicalPersons;","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class ModelManagerTest {","lastModifiedDate":"2017-05-31"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private ModelManager modelManager \u003d new ModelManager();","lastModifiedDate":"2018-08-06"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2018-11-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" assertEquals(new UserPrefs(), modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27"},{"lineNumber":27,"author":{"gitId":"chaaaaun"},"content":" Assertions.assertEquals(new GuiSettings(), modelManager.getGuiSettings());","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"chaaaaun"},"content":" assertEquals(new AddressBook(0), new AddressBook(modelManager.getAddressBook()));","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void setUserPrefs_nullUserPrefs_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":33,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e modelManager.setUserPrefs(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void setUserPrefs_validUserPrefs_copiesUserPrefs() {","lastModifiedDate":"2018-12-06"},{"lineNumber":38,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"address/book/file/path\"));","lastModifiedDate":"2018-11-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(new GuiSettings(1, 2, 3, 4));","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" modelManager.setUserPrefs(userPrefs);","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertEquals(userPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // Modifying userPrefs should not modify modelManager\u0027s userPrefs","lastModifiedDate":"2018-12-06"},{"lineNumber":45,"author":{"gitId":"-"},"content":" UserPrefs oldUserPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":46,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"new/address/book/file/path\"));","lastModifiedDate":"2018-12-06"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertEquals(oldUserPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-12-06"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void setGuiSettings_nullGuiSettings_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e modelManager.setGuiSettings(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void setGuiSettings_validGuiSettings_setsGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(1, 2, 3, 4);","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" modelManager.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertEquals(guiSettings, modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":64,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e modelManager.setAddressBookFilePath(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_validPath_setsAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" Path path \u003d Paths.get(\"address/book/file/path\");","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" modelManager.setAddressBookFilePath(path);","lastModifiedDate":"2018-11-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertEquals(path, modelManager.getAddressBookFilePath());","lastModifiedDate":"2018-11-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void hasPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-06"},{"lineNumber":76,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e modelManager.hasPerson(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public void hasPerson_personNotInAddressBook_returnsFalse() {","lastModifiedDate":"2018-08-06"},{"lineNumber":81,"author":{"gitId":"chaaaaun"},"content":" assertFalse(modelManager.hasPerson(TypicalPersons.ALICE));","lastModifiedDate":"2024-03-12"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void hasPerson_personInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07"},{"lineNumber":86,"author":{"gitId":"chaaaaun"},"content":" modelManager.addPerson(TypicalPersons.ALICE);","lastModifiedDate":"2024-03-12"},{"lineNumber":87,"author":{"gitId":"chaaaaun"},"content":" assertTrue(modelManager.hasPerson(TypicalPersons.ALICE));","lastModifiedDate":"2024-03-12"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":92,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(UnsupportedOperationException.class, () -\u003e modelManager.getFilteredPersonList().remove(0));","lastModifiedDate":"2024-03-12"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-31"},{"lineNumber":96,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":97,"author":{"gitId":"chaaaaun"},"content":" AddressBook addressBook \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":98,"author":{"gitId":"chaaaaun"},"content":" new AddressBookBuilder().withPerson(TypicalPersons.ALICE).withPerson(TypicalPersons.BENSON).build();","lastModifiedDate":"2024-03-12"},{"lineNumber":99,"author":{"gitId":"chaaaaun"},"content":" AddressBook differentAddressBook \u003d new AddressBook(0);","lastModifiedDate":"2024-03-17"},{"lineNumber":100,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":102,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":103,"author":{"gitId":"-"},"content":" modelManager \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2018-08-06"},{"lineNumber":104,"author":{"gitId":"-"},"content":" ModelManager modelManagerCopy \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2017-05-31"},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManagerCopy));","lastModifiedDate":"2017-05-31"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":107,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManager));","lastModifiedDate":"2017-05-31"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":110,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(null));","lastModifiedDate":"2017-05-31"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":113,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(5));","lastModifiedDate":"2017-05-31"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":116,"author":{"gitId":"-"},"content":" // different addressBook -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(differentAddressBook, userPrefs)));","lastModifiedDate":"2017-05-31"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":119,"author":{"gitId":"-"},"content":" // different filteredList -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":120,"author":{"gitId":"chaaaaun"},"content":" String[] keywords \u003d TypicalPersons.ALICE.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2024-03-12"},{"lineNumber":121,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(keywords)));","lastModifiedDate":"2017-06-12"},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, userPrefs)));","lastModifiedDate":"2017-05-31"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":124,"author":{"gitId":"-"},"content":" // resets modelManager to initial state for upcoming tests","lastModifiedDate":"2017-08-05"},{"lineNumber":125,"author":{"gitId":"chaaaaun"},"content":" modelManager.updateFilteredPersonList(Model.PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-12"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":127,"author":{"gitId":"-"},"content":" // different userPrefs -\u003e returns false","lastModifiedDate":"2018-11-27"},{"lineNumber":128,"author":{"gitId":"-"},"content":" UserPrefs differentUserPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":129,"author":{"gitId":"-"},"content":" differentUserPrefs.setAddressBookFilePath(Paths.get(\"differentFilePath\"));","lastModifiedDate":"2018-08-09"},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, differentUserPrefs)));","lastModifiedDate":"2018-11-27"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":132,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-31"}],"authorContributionMap":{"chaaaaun":22,"-":110}},{"path":"src/test/java/scrolls/elder/model/UserPrefsTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.model;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":5,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.Assert;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"public class UserPrefsTest {","lastModifiedDate":"2018-11-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public void setGuiSettings_nullGuiSettings_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":" UserPrefs userPref \u003d new UserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":12,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e userPref.setGuiSettings(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":18,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e userPrefs.setAddressBookFilePath(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-11-27"}],"authorContributionMap":{"chaaaaun":5,"-":16}},{"path":"src/test/java/scrolls/elder/model/person/AddressTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.model.person;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.Assert;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class AddressTest {","lastModifiedDate":"2017-01-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":12,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04"},{"lineNumber":14,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e new Address(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public void constructor_invalidAddress_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":" String invalidAddress \u003d \"\";","lastModifiedDate":"2017-05-30"},{"lineNumber":20,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(IllegalArgumentException.class, () -\u003e new Address(invalidAddress));","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void isValidAddress() {","lastModifiedDate":"2017-01-16"},{"lineNumber":25,"author":{"gitId":"-"},"content":" // null address","lastModifiedDate":"2017-12-04"},{"lineNumber":26,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e Address.isValidAddress(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":28,"author":{"gitId":"-"},"content":" // invalid addresses","lastModifiedDate":"2017-01-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(Address.isValidAddress(\"\")); // empty string","lastModifiedDate":"2017-01-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertFalse(Address.isValidAddress(\" \")); // spaces only","lastModifiedDate":"2017-01-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":" // valid addresses","lastModifiedDate":"2017-01-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertTrue(Address.isValidAddress(\"Blk 456, Den Road, #01-355\"));","lastModifiedDate":"2017-01-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertTrue(Address.isValidAddress(\"-\")); // one character","lastModifiedDate":"2017-01-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertTrue(Address.isValidAddress(\"Leng Inc; 1234 Market St; San Francisco CA 2349879; USA\")); // long address","lastModifiedDate":"2017-01-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" Address address \u003d new Address(\"Valid Address\");","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertTrue(address.equals(new Address(\"Valid Address\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(address.equals(address));","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(address.equals(null));","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(address.equals(5.0f));","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertFalse(address.equals(new Address(\"Other Valid Address\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16"}],"authorContributionMap":{"chaaaaun":6,"-":51}},{"path":"src/test/java/scrolls/elder/model/person/EmailTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.model.person;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.Assert;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class EmailTest {","lastModifiedDate":"2017-01-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":12,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04"},{"lineNumber":14,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e new Email(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public void constructor_invalidEmail_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":" String invalidEmail \u003d \"\";","lastModifiedDate":"2017-05-30"},{"lineNumber":20,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(IllegalArgumentException.class, () -\u003e new Email(invalidEmail));","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void isValidEmail() {","lastModifiedDate":"2017-01-16"},{"lineNumber":25,"author":{"gitId":"-"},"content":" // null email","lastModifiedDate":"2017-12-04"},{"lineNumber":26,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e Email.isValidEmail(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":28,"author":{"gitId":"-"},"content":" // blank email","lastModifiedDate":"2017-01-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"\")); // empty string","lastModifiedDate":"2017-01-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\" \")); // spaces only","lastModifiedDate":"2017-01-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":" // missing parts","lastModifiedDate":"2017-01-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"@example.com\")); // missing local part","lastModifiedDate":"2017-04-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjackexample.com\")); // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-04-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@\")); // missing domain name","lastModifiedDate":"2017-01-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" // invalid parts","lastModifiedDate":"2017-01-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@-\")); // invalid domain name","lastModifiedDate":"2017-01-16"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@exam_ple.com\")); // underscore in domain name","lastModifiedDate":"2018-02-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peter jack@example.com\")); // spaces in local part","lastModifiedDate":"2017-04-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@exam ple.com\")); // spaces in domain name","lastModifiedDate":"2017-04-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\" peterjack@example.com\")); // leading space","lastModifiedDate":"2018-02-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.com \")); // trailing space","lastModifiedDate":"2018-02-09"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@@example.com\")); // double \u0027@\u0027 symbol","lastModifiedDate":"2017-04-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peter@jack@example.com\")); // \u0027@\u0027 symbol in local part","lastModifiedDate":"2017-04-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"-peterjack@example.com\")); // local part starts with a hyphen","lastModifiedDate":"2021-07-20"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack-@example.com\")); // local part ends with a hyphen","lastModifiedDate":"2021-07-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peter..jack@example.com\")); // local part has two consecutive periods","lastModifiedDate":"2021-07-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example@com\")); // \u0027@\u0027 symbol in domain name","lastModifiedDate":"2017-04-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@.example.com\")); // domain name starts with a period","lastModifiedDate":"2018-02-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.com.\")); // domain name ends with a period","lastModifiedDate":"2018-02-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@-example.com\")); // domain name starts with a hyphen","lastModifiedDate":"2018-02-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.com-\")); // domain name ends with a hyphen","lastModifiedDate":"2018-02-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.c\")); // top level domain has less than two chars","lastModifiedDate":"2021-07-20"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // valid email","lastModifiedDate":"2017-01-16"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack_1190@example.com\")); // underscore in local part","lastModifiedDate":"2021-07-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack.1190@example.com\")); // period in local part","lastModifiedDate":"2021-07-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack+1190@example.com\")); // \u0027+\u0027 symbol in local part","lastModifiedDate":"2021-07-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack-1190@example.com\")); // hyphen in local part","lastModifiedDate":"2021-07-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"a@bc\")); // minimal","lastModifiedDate":"2018-02-09"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"test@localhost\")); // alphabets only","lastModifiedDate":"2017-01-16"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"123@145\")); // numeric local part and domain name","lastModifiedDate":"2017-01-16"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"a1+be.d@example1.com\")); // mixture of alphanumeric and special characters","lastModifiedDate":"2021-07-20"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"peter_jack@very-very-very-long-example.com\")); // long domain name","lastModifiedDate":"2018-02-09"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"if.you.dream.it_you.can.do.it@example.com\")); // long local part","lastModifiedDate":"2017-04-05"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"e1234567@u.nus.edu\")); // more than one period in domain","lastModifiedDate":"2021-07-20"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":" Email email \u003d new Email(\"valid@email\");","lastModifiedDate":"2019-02-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertTrue(email.equals(new Email(\"valid@email\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertTrue(email.equals(email));","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertFalse(email.equals(null));","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertFalse(email.equals(5.0f));","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertFalse(email.equals(new Email(\"other.valid@email\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16"}],"authorContributionMap":{"chaaaaun":6,"-":83}},{"path":"src/test/java/scrolls/elder/model/person/NameContainsKeywordsPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.model.person;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.PersonBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class NameContainsKeywordsPredicateTest {","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" List\u003cString\u003e firstPredicateKeywordList \u003d Collections.singletonList(\"first\");","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":" List\u003cString\u003e secondPredicateKeywordList \u003d Arrays.asList(\"first\", \"second\");","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicate \u003d new NameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate secondPredicate \u003d new NameContainsKeywordsPredicate(secondPredicateKeywordList);","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" assertTrue(firstPredicate.equals(firstPredicate));","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicateCopy \u003d new NameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertTrue(firstPredicate.equals(firstPredicateCopy));","lastModifiedDate":"2017-06-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(1));","lastModifiedDate":"2017-06-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(null));","lastModifiedDate":"2017-06-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(secondPredicate));","lastModifiedDate":"2017-06-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void test_nameContainsKeywords_returnsTrue() {","lastModifiedDate":"2017-08-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // One keyword","lastModifiedDate":"2017-06-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Collections.singletonList(\"Alice\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // Multiple keywords","lastModifiedDate":"2017-06-12"},{"lineNumber":49,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Alice\", \"Bob\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // Only one matching keyword","lastModifiedDate":"2017-06-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Bob\", \"Carol\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Carol\").build()));","lastModifiedDate":"2017-06-12"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // Mixed-case keywords","lastModifiedDate":"2017-06-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"aLIce\", \"bOB\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void test_nameDoesNotContainKeywords_returnsFalse() {","lastModifiedDate":"2017-08-15"},{"lineNumber":63,"author":{"gitId":"-"},"content":" // Zero keywords","lastModifiedDate":"2017-06-12"},{"lineNumber":64,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Collections.emptyList());","lastModifiedDate":"2017-06-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice\").build()));","lastModifiedDate":"2017-06-12"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":" // Non-matching keyword","lastModifiedDate":"2017-06-12"},{"lineNumber":68,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Carol\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // Keywords match phone, email and address, but does not match name","lastModifiedDate":"2017-06-12"},{"lineNumber":72,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"12345\", \"alice@email.com\", \"Main\", \"Street\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice\").withPhone(\"12345\")","lastModifiedDate":"2017-06-12"},{"lineNumber":74,"author":{"gitId":"-"},"content":" .withEmail(\"alice@email.com\").withAddress(\"Main Street\").build()));","lastModifiedDate":"2017-06-12"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d List.of(\"keyword1\", \"keyword2\");","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(keywords);","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" String expected \u003d NameContainsKeywordsPredicate.class.getCanonicalName() + \"{keywords\u003d\" + keywords + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"chaaaaun":2,"-":83}},{"path":"src/test/java/scrolls/elder/model/person/NameTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.model.person;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.Assert;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class NameTest {","lastModifiedDate":"2017-01-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":12,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04"},{"lineNumber":14,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e new Name(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public void constructor_invalidName_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":" String invalidName \u003d \"\";","lastModifiedDate":"2017-05-30"},{"lineNumber":20,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(IllegalArgumentException.class, () -\u003e new Name(invalidName));","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void isValidName() {","lastModifiedDate":"2017-01-16"},{"lineNumber":25,"author":{"gitId":"-"},"content":" // null name","lastModifiedDate":"2017-12-04"},{"lineNumber":26,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e Name.isValidName(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":28,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-01-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"\")); // empty string","lastModifiedDate":"2017-01-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\" \")); // spaces only","lastModifiedDate":"2017-01-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"^\")); // only non-alphanumeric characters","lastModifiedDate":"2017-01-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"peter*\")); // contains non-alphanumeric characters","lastModifiedDate":"2017-01-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":" // valid name","lastModifiedDate":"2017-01-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"peter jack\")); // alphabets only","lastModifiedDate":"2017-01-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"12345\")); // numbers only","lastModifiedDate":"2017-01-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"peter the 2nd\")); // alphanumeric characters","lastModifiedDate":"2017-01-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"Capital Tan\")); // with capital letters","lastModifiedDate":"2017-01-16"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"David Roger Jackson Ray Jr 2nd\")); // long names","lastModifiedDate":"2017-01-16"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" Name name \u003d new Name(\"Valid Name\");","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertTrue(name.equals(new Name(\"Valid Name\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertTrue(name.equals(name));","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(name.equals(null));","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertFalse(name.equals(5.0f));","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertFalse(name.equals(new Name(\"Other Valid Name\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16"}],"authorContributionMap":{"chaaaaun":6,"-":55}},{"path":"src/test/java/scrolls/elder/model/person/PersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.model.person;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"chaaaaun"},"content":"import static scrolls.elder.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"chaaaaun"},"content":"import static scrolls.elder.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"chaaaaun"},"content":"import static scrolls.elder.logic.commands.CommandTestUtil.VALID_ID_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"chaaaaun"},"content":"import static scrolls.elder.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"chaaaaun"},"content":"import static scrolls.elder.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":"import static scrolls.elder.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":"import org.junit.jupiter.api.Assertions;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.Assert;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.PersonBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.TypicalPersons;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"chaaaaun"},"content":"public class PersonTest {","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"chaaaaun"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"chaaaaun"},"content":" public void asObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"chaaaaun"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(UnsupportedOperationException.class, () -\u003e person.getTags().remove(0));","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"chaaaaun"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"chaaaaun"},"content":" public void isSamePerson() {","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"chaaaaun"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"chaaaaun"},"content":" Assertions.assertTrue(TypicalPersons.ALICE.isSamePerson(TypicalPersons.ALICE));","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"chaaaaun"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"chaaaaun"},"content":" Assertions.assertFalse(TypicalPersons.ALICE.isSamePerson(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"chaaaaun"},"content":" // same id, all other attributes different -\u003e returns true","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"chaaaaun"},"content":" Person editedAlice \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"chaaaaun"},"content":" new PersonBuilder(TypicalPersons.ALICE).withName(VALID_NAME_BOB)","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"chaaaaun"},"content":" .withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"chaaaaun"},"content":" .withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"chaaaaun"},"content":" .withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"chaaaaun"},"content":" .withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"chaaaaun"},"content":" .build();","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"chaaaaun"},"content":" Assertions.assertTrue(TypicalPersons.ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"chaaaaun"},"content":" // different id, all other attributes same -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"chaaaaun"},"content":" editedAlice \u003d new PersonBuilder(TypicalPersons.ALICE).withId(VALID_ID_BOB).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"chaaaaun"},"content":" Assertions.assertFalse(TypicalPersons.ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"chaaaaun"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"chaaaaun"},"content":" public void equals() {","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"chaaaaun"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"chaaaaun"},"content":" Person aliceCopy \u003d new PersonBuilder(TypicalPersons.ALICE).build();","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"chaaaaun"},"content":" Assertions.assertEquals(TypicalPersons.ALICE, aliceCopy);","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"chaaaaun"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"chaaaaun"},"content":" Assertions.assertEquals(TypicalPersons.ALICE, TypicalPersons.ALICE);","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"chaaaaun"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"chaaaaun"},"content":" Assertions.assertNotEquals(null, TypicalPersons.ALICE);","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"chaaaaun"},"content":" // different type -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"chaaaaun"},"content":" Assertions.assertNotEquals(5, TypicalPersons.ALICE);","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":63,"author":{"gitId":"chaaaaun"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"chaaaaun"},"content":" Assertions.assertNotEquals(TypicalPersons.ALICE, TypicalPersons.BOB);","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":66,"author":{"gitId":"chaaaaun"},"content":" // different name -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"chaaaaun"},"content":" Person editedAlice \u003d new PersonBuilder(TypicalPersons.ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-12"},{"lineNumber":68,"author":{"gitId":"chaaaaun"},"content":" Assertions.assertNotEquals(TypicalPersons.ALICE, editedAlice);","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"chaaaaun"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":71,"author":{"gitId":"chaaaaun"},"content":" editedAlice \u003d new PersonBuilder(TypicalPersons.ALICE).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2024-03-12"},{"lineNumber":72,"author":{"gitId":"chaaaaun"},"content":" Assertions.assertNotEquals(TypicalPersons.ALICE, editedAlice);","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":74,"author":{"gitId":"chaaaaun"},"content":" // different email -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":75,"author":{"gitId":"chaaaaun"},"content":" editedAlice \u003d new PersonBuilder(TypicalPersons.ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2024-03-12"},{"lineNumber":76,"author":{"gitId":"chaaaaun"},"content":" Assertions.assertNotEquals(TypicalPersons.ALICE, editedAlice);","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":78,"author":{"gitId":"chaaaaun"},"content":" // different address -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":79,"author":{"gitId":"chaaaaun"},"content":" editedAlice \u003d new PersonBuilder(TypicalPersons.ALICE).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2024-03-12"},{"lineNumber":80,"author":{"gitId":"chaaaaun"},"content":" Assertions.assertNotEquals(TypicalPersons.ALICE, editedAlice);","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":82,"author":{"gitId":"chaaaaun"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":83,"author":{"gitId":"chaaaaun"},"content":" editedAlice \u003d new PersonBuilder(TypicalPersons.ALICE).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-03-12"},{"lineNumber":84,"author":{"gitId":"chaaaaun"},"content":" Assertions.assertNotEquals(TypicalPersons.ALICE, editedAlice);","lastModifiedDate":"2024-03-17"},{"lineNumber":85,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":86,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":87,"author":{"gitId":"chaaaaun"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":88,"author":{"gitId":"chaaaaun"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-12"},{"lineNumber":89,"author":{"gitId":"CJerrong"},"content":" String expected \u003d Volunteer.class.getCanonicalName() + \"{name\u003d\" + TypicalPersons.ALICE.getName() + \", phone\u003d\"","lastModifiedDate":"2024-03-15"},{"lineNumber":90,"author":{"gitId":"chaaaaun"},"content":" + TypicalPersons.ALICE.getPhone()","lastModifiedDate":"2024-03-12"},{"lineNumber":91,"author":{"gitId":"chaaaaun"},"content":" + \", email\u003d\" + TypicalPersons.ALICE.getEmail() + \", address\u003d\" + TypicalPersons.ALICE.getAddress()","lastModifiedDate":"2024-03-12"},{"lineNumber":92,"author":{"gitId":"soons1"},"content":" + \", tags\u003d\" + TypicalPersons.ALICE.getTags() + \", role\u003d\" + TypicalPersons.ALICE.getRole()","lastModifiedDate":"2024-03-18"},{"lineNumber":93,"author":{"gitId":"CJerrong"},"content":" + \", pairedWithName\u003d\" + (TypicalPersons.ALICE.getPairedWithName().orElse(Name.getNone()))","lastModifiedDate":"2024-03-22"},{"lineNumber":94,"author":{"gitId":"CJerrong"},"content":" + \", pairedWithID\u003d\" + (TypicalPersons.ALICE.getPairedWithID().orElse(-1)) + \"}\";","lastModifiedDate":"2024-03-22"},{"lineNumber":95,"author":{"gitId":"chaaaaun"},"content":" Assertions.assertEquals(expected, TypicalPersons.ALICE.toString());","lastModifiedDate":"2024-03-12"},{"lineNumber":96,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":97,"author":{"gitId":"chaaaaun"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"CJerrong":3,"soons1":1,"chaaaaun":93}},{"path":"src/test/java/scrolls/elder/model/person/PhoneTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.model.person;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.Assert;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class PhoneTest {","lastModifiedDate":"2017-01-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":12,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04"},{"lineNumber":14,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e new Phone(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public void constructor_invalidPhone_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":" String invalidPhone \u003d \"\";","lastModifiedDate":"2017-05-30"},{"lineNumber":20,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(IllegalArgumentException.class, () -\u003e new Phone(invalidPhone));","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void isValidPhone() {","lastModifiedDate":"2017-01-16"},{"lineNumber":25,"author":{"gitId":"-"},"content":" // null phone number","lastModifiedDate":"2017-12-04"},{"lineNumber":26,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e Phone.isValidPhone(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":28,"author":{"gitId":"-"},"content":" // invalid phone numbers","lastModifiedDate":"2017-01-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"\")); // empty string","lastModifiedDate":"2017-01-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\" \")); // spaces only","lastModifiedDate":"2017-01-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"91\")); // less than 3 numbers","lastModifiedDate":"2017-05-04"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"phone\")); // non-numeric","lastModifiedDate":"2017-01-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"9011p041\")); // alphabets within digits","lastModifiedDate":"2017-01-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"9312 1534\")); // spaces within digits","lastModifiedDate":"2017-01-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" // valid phone numbers","lastModifiedDate":"2017-01-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertTrue(Phone.isValidPhone(\"911\")); // exactly 3 numbers","lastModifiedDate":"2017-05-04"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertTrue(Phone.isValidPhone(\"93121534\"));","lastModifiedDate":"2017-01-16"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertTrue(Phone.isValidPhone(\"124293842033123\")); // long phone numbers","lastModifiedDate":"2017-01-16"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" Phone phone \u003d new Phone(\"999\");","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertTrue(phone.equals(new Phone(\"999\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertTrue(phone.equals(phone));","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(phone.equals(null));","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertFalse(phone.equals(5.0f));","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertFalse(phone.equals(new Phone(\"995\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16"}],"authorContributionMap":{"chaaaaun":6,"-":55}},{"path":"src/test/java/scrolls/elder/model/person/UniquePersonListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.model.person;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"chaaaaun"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"chaaaaun"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"chaaaaun"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"chaaaaun"},"content":"import static scrolls.elder.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"chaaaaun"},"content":"import static scrolls.elder.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":"import java.util.List;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"chaaaaun"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.exceptions.PersonNotFoundException;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.Assert;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.PersonBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.TypicalPersons;","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"chaaaaun"},"content":"public class UniquePersonListTest {","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"chaaaaun"},"content":" private final UniquePersonList uniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"chaaaaun"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"chaaaaun"},"content":" public void contains_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e uniquePersonList.contains(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"chaaaaun"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"chaaaaun"},"content":" public void contains_personNotInList_returnsFalse() {","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"chaaaaun"},"content":" assertFalse(uniquePersonList.contains(TypicalPersons.ALICE));","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"chaaaaun"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"chaaaaun"},"content":" public void contains_personInList_returnsTrue() {","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"chaaaaun"},"content":" uniquePersonList.add(TypicalPersons.ALICE);","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"chaaaaun"},"content":" assertTrue(uniquePersonList.contains(TypicalPersons.ALICE));","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"chaaaaun"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"chaaaaun"},"content":" public void contains_personWithSameIdentityFieldsInList_returnsTrue() {","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"chaaaaun"},"content":" uniquePersonList.add(TypicalPersons.ALICE);","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"chaaaaun"},"content":" Person editedAlice \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"chaaaaun"},"content":" new PersonBuilder(TypicalPersons.ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"chaaaaun"},"content":" .build();","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"chaaaaun"},"content":" assertTrue(uniquePersonList.contains(editedAlice));","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"chaaaaun"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"chaaaaun"},"content":" public void add_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e uniquePersonList.add(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"chaaaaun"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"chaaaaun"},"content":" public void add_duplicatePerson_throwsDuplicatePersonException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"chaaaaun"},"content":" uniquePersonList.add(TypicalPersons.ALICE);","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.add(TypicalPersons.ALICE));","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"chaaaaun"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"chaaaaun"},"content":" public void setPerson_nullTargetPerson_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":63,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPerson(null, TypicalPersons.ALICE));","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":66,"author":{"gitId":"chaaaaun"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"chaaaaun"},"content":" public void setPerson_nullEditedPerson_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":68,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPerson(TypicalPersons.ALICE, null));","lastModifiedDate":"2024-03-12"},{"lineNumber":69,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":71,"author":{"gitId":"chaaaaun"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":72,"author":{"gitId":"chaaaaun"},"content":" public void setPerson_targetPersonNotInList_throwsPersonNotFoundException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":73,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(PersonNotFoundException.class, ()","lastModifiedDate":"2024-03-12"},{"lineNumber":74,"author":{"gitId":"chaaaaun"},"content":" -\u003e uniquePersonList.setPerson(TypicalPersons.ALICE, TypicalPersons.ALICE));","lastModifiedDate":"2024-03-12"},{"lineNumber":75,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":76,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":77,"author":{"gitId":"chaaaaun"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":78,"author":{"gitId":"chaaaaun"},"content":" public void setPerson_editedPersonIsSamePerson_success() {","lastModifiedDate":"2024-03-12"},{"lineNumber":79,"author":{"gitId":"chaaaaun"},"content":" uniquePersonList.add(TypicalPersons.ALICE);","lastModifiedDate":"2024-03-12"},{"lineNumber":80,"author":{"gitId":"chaaaaun"},"content":" uniquePersonList.setPerson(TypicalPersons.ALICE, TypicalPersons.ALICE);","lastModifiedDate":"2024-03-12"},{"lineNumber":81,"author":{"gitId":"chaaaaun"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2024-03-12"},{"lineNumber":82,"author":{"gitId":"chaaaaun"},"content":" expectedUniquePersonList.add(TypicalPersons.ALICE);","lastModifiedDate":"2024-03-12"},{"lineNumber":83,"author":{"gitId":"chaaaaun"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2024-03-12"},{"lineNumber":84,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":85,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":86,"author":{"gitId":"chaaaaun"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":87,"author":{"gitId":"chaaaaun"},"content":" public void setPerson_editedPersonHasSameIdentity_success() {","lastModifiedDate":"2024-03-12"},{"lineNumber":88,"author":{"gitId":"chaaaaun"},"content":" uniquePersonList.add(TypicalPersons.ALICE);","lastModifiedDate":"2024-03-12"},{"lineNumber":89,"author":{"gitId":"chaaaaun"},"content":" Person editedAlice \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":90,"author":{"gitId":"chaaaaun"},"content":" new PersonBuilder(TypicalPersons.ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-03-12"},{"lineNumber":91,"author":{"gitId":"chaaaaun"},"content":" .build();","lastModifiedDate":"2024-03-12"},{"lineNumber":92,"author":{"gitId":"chaaaaun"},"content":" uniquePersonList.setPerson(TypicalPersons.ALICE, editedAlice);","lastModifiedDate":"2024-03-12"},{"lineNumber":93,"author":{"gitId":"chaaaaun"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2024-03-12"},{"lineNumber":94,"author":{"gitId":"chaaaaun"},"content":" expectedUniquePersonList.add(editedAlice);","lastModifiedDate":"2024-03-12"},{"lineNumber":95,"author":{"gitId":"chaaaaun"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2024-03-12"},{"lineNumber":96,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":97,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":98,"author":{"gitId":"chaaaaun"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":99,"author":{"gitId":"chaaaaun"},"content":" public void setPerson_editedPersonHasDifferentIdentity_success() {","lastModifiedDate":"2024-03-12"},{"lineNumber":100,"author":{"gitId":"chaaaaun"},"content":" uniquePersonList.add(TypicalPersons.ALICE);","lastModifiedDate":"2024-03-12"},{"lineNumber":101,"author":{"gitId":"chaaaaun"},"content":" uniquePersonList.setPerson(TypicalPersons.ALICE, TypicalPersons.BOB);","lastModifiedDate":"2024-03-12"},{"lineNumber":102,"author":{"gitId":"chaaaaun"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2024-03-12"},{"lineNumber":103,"author":{"gitId":"chaaaaun"},"content":" expectedUniquePersonList.add(TypicalPersons.BOB);","lastModifiedDate":"2024-03-12"},{"lineNumber":104,"author":{"gitId":"chaaaaun"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2024-03-12"},{"lineNumber":105,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":106,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":107,"author":{"gitId":"chaaaaun"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":108,"author":{"gitId":"chaaaaun"},"content":" public void setPerson_editedPersonHasNonUniqueIdentity_throwsDuplicatePersonException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":109,"author":{"gitId":"chaaaaun"},"content":" uniquePersonList.add(TypicalPersons.ALICE);","lastModifiedDate":"2024-03-12"},{"lineNumber":110,"author":{"gitId":"chaaaaun"},"content":" uniquePersonList.add(TypicalPersons.BENSON);","lastModifiedDate":"2024-03-17"},{"lineNumber":111,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(DuplicatePersonException.class, ()","lastModifiedDate":"2024-03-12"},{"lineNumber":112,"author":{"gitId":"chaaaaun"},"content":" -\u003e uniquePersonList.setPerson(TypicalPersons.ALICE, TypicalPersons.BENSON));","lastModifiedDate":"2024-03-17"},{"lineNumber":113,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":114,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":115,"author":{"gitId":"chaaaaun"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":116,"author":{"gitId":"chaaaaun"},"content":" public void remove_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":117,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e uniquePersonList.remove(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":118,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":119,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":120,"author":{"gitId":"chaaaaun"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":121,"author":{"gitId":"chaaaaun"},"content":" public void remove_personDoesNotExist_throwsPersonNotFoundException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":122,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(PersonNotFoundException.class, () -\u003e uniquePersonList.remove(TypicalPersons.ALICE));","lastModifiedDate":"2024-03-12"},{"lineNumber":123,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":124,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":125,"author":{"gitId":"chaaaaun"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":126,"author":{"gitId":"chaaaaun"},"content":" public void remove_existingPerson_removesPerson() {","lastModifiedDate":"2024-03-12"},{"lineNumber":127,"author":{"gitId":"chaaaaun"},"content":" uniquePersonList.add(TypicalPersons.ALICE);","lastModifiedDate":"2024-03-12"},{"lineNumber":128,"author":{"gitId":"chaaaaun"},"content":" uniquePersonList.remove(TypicalPersons.ALICE);","lastModifiedDate":"2024-03-12"},{"lineNumber":129,"author":{"gitId":"chaaaaun"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2024-03-12"},{"lineNumber":130,"author":{"gitId":"chaaaaun"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2024-03-12"},{"lineNumber":131,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":132,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":133,"author":{"gitId":"chaaaaun"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":134,"author":{"gitId":"chaaaaun"},"content":" public void setPersons_nullUniquePersonList_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":135,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPersons((UniquePersonList) null));","lastModifiedDate":"2024-03-12"},{"lineNumber":136,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":137,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":138,"author":{"gitId":"chaaaaun"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":139,"author":{"gitId":"chaaaaun"},"content":" public void setPersons_uniquePersonList_replacesOwnListWithProvidedUniquePersonList() {","lastModifiedDate":"2024-03-12"},{"lineNumber":140,"author":{"gitId":"chaaaaun"},"content":" uniquePersonList.add(TypicalPersons.ALICE);","lastModifiedDate":"2024-03-12"},{"lineNumber":141,"author":{"gitId":"chaaaaun"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2024-03-12"},{"lineNumber":142,"author":{"gitId":"chaaaaun"},"content":" expectedUniquePersonList.add(TypicalPersons.BOB);","lastModifiedDate":"2024-03-12"},{"lineNumber":143,"author":{"gitId":"chaaaaun"},"content":" uniquePersonList.setPersons(expectedUniquePersonList);","lastModifiedDate":"2024-03-12"},{"lineNumber":144,"author":{"gitId":"chaaaaun"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2024-03-12"},{"lineNumber":145,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":146,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":147,"author":{"gitId":"chaaaaun"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":148,"author":{"gitId":"chaaaaun"},"content":" public void setPersons_nullList_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":149,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPersons((List\u003cPerson\u003e) null));","lastModifiedDate":"2024-03-12"},{"lineNumber":150,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":151,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":152,"author":{"gitId":"chaaaaun"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":153,"author":{"gitId":"chaaaaun"},"content":" public void setPersons_list_replacesOwnListWithProvidedList() {","lastModifiedDate":"2024-03-12"},{"lineNumber":154,"author":{"gitId":"chaaaaun"},"content":" uniquePersonList.add(TypicalPersons.ALICE);","lastModifiedDate":"2024-03-12"},{"lineNumber":155,"author":{"gitId":"chaaaaun"},"content":" List\u003cPerson\u003e personList \u003d Collections.singletonList(TypicalPersons.BOB);","lastModifiedDate":"2024-03-12"},{"lineNumber":156,"author":{"gitId":"chaaaaun"},"content":" uniquePersonList.setPersons(personList);","lastModifiedDate":"2024-03-12"},{"lineNumber":157,"author":{"gitId":"chaaaaun"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2024-03-12"},{"lineNumber":158,"author":{"gitId":"chaaaaun"},"content":" expectedUniquePersonList.add(TypicalPersons.BOB);","lastModifiedDate":"2024-03-12"},{"lineNumber":159,"author":{"gitId":"chaaaaun"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2024-03-12"},{"lineNumber":160,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":161,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":162,"author":{"gitId":"chaaaaun"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":163,"author":{"gitId":"chaaaaun"},"content":" public void setPersons_listWithDuplicatePersons_throwsDuplicatePersonException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":164,"author":{"gitId":"chaaaaun"},"content":" List\u003cPerson\u003e listWithDuplicatePersons \u003d Arrays.asList(TypicalPersons.ALICE, TypicalPersons.ALICE);","lastModifiedDate":"2024-03-12"},{"lineNumber":165,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(DuplicatePersonException.class, ()","lastModifiedDate":"2024-03-12"},{"lineNumber":166,"author":{"gitId":"chaaaaun"},"content":" -\u003e uniquePersonList.setPersons(listWithDuplicatePersons));","lastModifiedDate":"2024-03-12"},{"lineNumber":167,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":168,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":169,"author":{"gitId":"chaaaaun"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":170,"author":{"gitId":"chaaaaun"},"content":" public void asUnmodifiableObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":171,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(UnsupportedOperationException.class, ()","lastModifiedDate":"2024-03-12"},{"lineNumber":172,"author":{"gitId":"chaaaaun"},"content":" -\u003e uniquePersonList.asUnmodifiableObservableList().remove(0));","lastModifiedDate":"2024-03-12"},{"lineNumber":173,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":174,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":175,"author":{"gitId":"chaaaaun"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":176,"author":{"gitId":"chaaaaun"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-12"},{"lineNumber":177,"author":{"gitId":"chaaaaun"},"content":" assertEquals(uniquePersonList.asUnmodifiableObservableList().toString(), uniquePersonList.toString());","lastModifiedDate":"2024-03-12"},{"lineNumber":178,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":179,"author":{"gitId":"chaaaaun"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"chaaaaun":179}},{"path":"src/test/java/scrolls/elder/model/tag/TagTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.model.tag;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-03-14"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":5,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.Assert;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"public class TagTest {","lastModifiedDate":"2017-12-04"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":9,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e new Tag(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":14,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public void constructor_invalidTagName_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":16,"author":{"gitId":"-"},"content":" String invalidTagName \u003d \"\";","lastModifiedDate":"2017-05-30"},{"lineNumber":17,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(IllegalArgumentException.class, () -\u003e new Tag(invalidTagName));","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public void isValidTagName() {","lastModifiedDate":"2017-12-04"},{"lineNumber":22,"author":{"gitId":"-"},"content":" // null tag name","lastModifiedDate":"2017-12-04"},{"lineNumber":23,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e Tag.isValidTagName(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":26,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-12-04"}],"authorContributionMap":{"chaaaaun":6,"-":20}},{"path":"src/test/java/scrolls/elder/storage/JsonAdaptedPersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.storage;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"chaaaaun"},"content":"import org.junit.jupiter.api.Assertions;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Address;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Email;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Name;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Phone;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"gerteck"},"content":"import scrolls.elder.model.person.Role;","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.Assert;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.TypicalPersons;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class JsonAdaptedPersonTest {","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"gerteck"},"content":" private static final String INVALID_ROLE \u003d \"friend\";","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"chaaaaun"},"content":" private static final String VALID_ID \u003d String.valueOf(TypicalPersons.BENSON.getId());","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"chaaaaun"},"content":" private static final String VALID_NAME \u003d TypicalPersons.BENSON.getName().toString();","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"chaaaaun"},"content":" private static final String VALID_PHONE \u003d TypicalPersons.BENSON.getPhone().toString();","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"chaaaaun"},"content":" private static final String VALID_EMAIL \u003d TypicalPersons.BENSON.getEmail().toString();","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"chaaaaun"},"content":" private static final String VALID_ADDRESS \u003d TypicalPersons.BENSON.getAddress().toString();","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"gerteck"},"content":" private static final String VALID_ROLE \u003d TypicalPersons.BENSON.getRole().toString();","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"CJerrong"},"content":" private static final String VALID_PAIRED_WITH \u003d TypicalPersons.HOON.getPairedWithName().get().toString();","lastModifiedDate":"2024-03-22"},{"lineNumber":34,"author":{"gitId":"CJerrong"},"content":" private static final String VALID_PAIRED_WITH_ID \u003d TypicalPersons.HOON.getPairedWithID().get().toString();","lastModifiedDate":"2024-03-22"},{"lineNumber":35,"author":{"gitId":"chaaaaun"},"content":" private static final List\u003cJsonAdaptedTag\u003e VALID_TAGS \u003d TypicalPersons.BENSON.getTags().stream()","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void toModelType_validPersonDetails_returnsPerson() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"chaaaaun"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(TypicalPersons.BENSON);","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"chaaaaun"},"content":" Assertions.assertEquals(TypicalPersons.BENSON, person.toModelType());","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"chaaaaun"},"content":" new JsonAdaptedPerson(VALID_ID, INVALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_ROLE,","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"CJerrong"},"content":" VALID_TAGS, VALID_PAIRED_WITH, VALID_PAIRED_WITH_ID);","lastModifiedDate":"2024-03-22"},{"lineNumber":50,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":51,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"chaaaaun"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_ID, null, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"CJerrong"},"content":" VALID_ADDRESS, VALID_ROLE, VALID_TAGS, VALID_PAIRED_WITH, VALID_PAIRED_WITH_ID);","lastModifiedDate":"2024-03-22"},{"lineNumber":59,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"chaaaaun"},"content":" String expectedMessage \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"chaaaaun"},"content":" String.format(JsonAdaptedPerson.MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-12"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void toModelType_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":68,"author":{"gitId":"chaaaaun"},"content":" new JsonAdaptedPerson(VALID_ID, VALID_NAME, INVALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"CJerrong"},"content":" VALID_ROLE, VALID_TAGS, VALID_PAIRED_WITH, VALID_PAIRED_WITH_ID);","lastModifiedDate":"2024-03-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Phone.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-12"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void toModelType_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"chaaaaun"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_ID, VALID_NAME, null, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"CJerrong"},"content":" VALID_ROLE, VALID_TAGS, VALID_PAIRED_WITH, VALID_PAIRED_WITH_ID);","lastModifiedDate":"2024-03-22"},{"lineNumber":78,"author":{"gitId":"chaaaaun"},"content":" String expectedMessage \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":79,"author":{"gitId":"chaaaaun"},"content":" String.format(JsonAdaptedPerson.MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","lastModifiedDate":"2024-03-12"},{"lineNumber":80,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-12"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"chaaaaun"},"content":" new JsonAdaptedPerson(VALID_ID, VALID_NAME, VALID_PHONE, INVALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-17"},{"lineNumber":87,"author":{"gitId":"CJerrong"},"content":" VALID_ROLE, VALID_TAGS, VALID_PAIRED_WITH, VALID_PAIRED_WITH_ID);","lastModifiedDate":"2024-03-22"},{"lineNumber":88,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-12"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":94,"author":{"gitId":"chaaaaun"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_ID, VALID_NAME, VALID_PHONE, null, VALID_ADDRESS,","lastModifiedDate":"2024-03-17"},{"lineNumber":95,"author":{"gitId":"CJerrong"},"content":" VALID_ROLE, VALID_TAGS, VALID_PAIRED_WITH, VALID_PAIRED_WITH_ID);","lastModifiedDate":"2024-03-22"},{"lineNumber":96,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":97,"author":{"gitId":"chaaaaun"},"content":" String expectedMessage \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":98,"author":{"gitId":"chaaaaun"},"content":" String.format(JsonAdaptedPerson.MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2024-03-12"},{"lineNumber":99,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-12"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":" public void toModelType_invalidAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":105,"author":{"gitId":"chaaaaun"},"content":" new JsonAdaptedPerson(VALID_ID, VALID_NAME, VALID_PHONE, VALID_EMAIL, INVALID_ADDRESS,","lastModifiedDate":"2024-03-17"},{"lineNumber":106,"author":{"gitId":"CJerrong"},"content":" VALID_ROLE, VALID_TAGS, VALID_PAIRED_WITH, VALID_PAIRED_WITH_ID);","lastModifiedDate":"2024-03-22"},{"lineNumber":107,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":108,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Address.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":109,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-12"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":" public void toModelType_nullAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":114,"author":{"gitId":"chaaaaun"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_ID, VALID_NAME, VALID_PHONE, VALID_EMAIL, null,","lastModifiedDate":"2024-03-17"},{"lineNumber":115,"author":{"gitId":"CJerrong"},"content":" VALID_ROLE, VALID_TAGS, VALID_PAIRED_WITH, VALID_PAIRED_WITH_ID);","lastModifiedDate":"2024-03-22"},{"lineNumber":116,"author":{"gitId":"chaaaaun"},"content":" String expectedMessage \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":117,"author":{"gitId":"chaaaaun"},"content":" String.format(JsonAdaptedPerson.MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName());","lastModifiedDate":"2024-03-12"},{"lineNumber":118,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-12"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":121,"author":{"gitId":"gerteck"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":122,"author":{"gitId":"gerteck"},"content":" public void toModelType_invalidRole_throwsIllegalValueException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":123,"author":{"gitId":"chaaaaun"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_ID, VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-17"},{"lineNumber":124,"author":{"gitId":"CJerrong"},"content":" INVALID_ROLE, VALID_TAGS, VALID_PAIRED_WITH, VALID_PAIRED_WITH_ID);","lastModifiedDate":"2024-03-22"},{"lineNumber":125,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":126,"author":{"gitId":"gerteck"},"content":" String expectedMessage \u003d Role.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-16"},{"lineNumber":127,"author":{"gitId":"gerteck"},"content":" Assert.assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-16"},{"lineNumber":128,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":129,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":130,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":131,"author":{"gitId":"gerteck"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":132,"author":{"gitId":"gerteck"},"content":" public void toModelType_nullRole_throwsIllegalValueException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":133,"author":{"gitId":"chaaaaun"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_ID, VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-17"},{"lineNumber":134,"author":{"gitId":"CJerrong"},"content":" null, VALID_TAGS, VALID_PAIRED_WITH, VALID_PAIRED_WITH_ID);","lastModifiedDate":"2024-03-22"},{"lineNumber":135,"author":{"gitId":"gerteck"},"content":" String expectedMessage \u003d","lastModifiedDate":"2024-03-16"},{"lineNumber":136,"author":{"gitId":"gerteck"},"content":" String.format(JsonAdaptedPerson.MISSING_FIELD_MESSAGE_FORMAT, Role.class.getSimpleName());","lastModifiedDate":"2024-03-16"},{"lineNumber":137,"author":{"gitId":"gerteck"},"content":" Assert.assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-16"},{"lineNumber":138,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":139,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":140,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":141,"author":{"gitId":"-"},"content":" public void toModelType_invalidTags_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":142,"author":{"gitId":"-"},"content":" List\u003cJsonAdaptedTag\u003e invalidTags \u003d new ArrayList\u003c\u003e(VALID_TAGS);","lastModifiedDate":"2018-08-13"},{"lineNumber":143,"author":{"gitId":"-"},"content":" invalidTags.add(new JsonAdaptedTag(INVALID_TAG));","lastModifiedDate":"2018-08-13"},{"lineNumber":144,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":145,"author":{"gitId":"chaaaaun"},"content":" new JsonAdaptedPerson(VALID_ID, VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-17"},{"lineNumber":146,"author":{"gitId":"CJerrong"},"content":" VALID_ROLE, invalidTags, VALID_PAIRED_WITH, VALID_PAIRED_WITH_ID);","lastModifiedDate":"2024-03-22"},{"lineNumber":147,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2024-03-12"},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":150,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"CJerrong":13,"gerteck":22,"chaaaaun":45,"-":70}},{"path":"src/test/java/scrolls/elder/storage/JsonAddressBookStorageTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.storage;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":13,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.AddressBook;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Person;","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.Assert;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.TypicalPersons;","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class JsonAddressBookStorageTest {","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonAddressBookStorageTest\");","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public Path testFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void readAddressBook_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":28,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e readAddressBook(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private java.util.Optional\u003cReadOnlyAddressBook\u003e readAddressBook(String filePath) throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" return new JsonAddressBookStorage(Paths.get(filePath)).readAddressBook(addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private Path addToTestDataPathIfNotNull(String prefsFileInTestDataFolder) {","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" return prefsFileInTestDataFolder !\u003d null","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" ? TEST_DATA_FOLDER.resolve(prefsFileInTestDataFolder)","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" : null;","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void read_missingFile_emptyResult() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertFalse(readAddressBook(\"NonExistentFile.json\").isPresent());","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public void read_notJsonFormat_exceptionThrown() {","lastModifiedDate":"2019-03-23"},{"lineNumber":48,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(DataLoadingException.class, () -\u003e readAddressBook(\"notJsonFormatAddressBook.json\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void readAddressBook_invalidPersonAddressBook_throwDataLoadingException() {","lastModifiedDate":"2023-06-14"},{"lineNumber":53,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(DataLoadingException.class, () -\u003e readAddressBook(\"invalidPersonAddressBook.json\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void readAddressBook_invalidAndValidPersonAddressBook_throwDataLoadingException() {","lastModifiedDate":"2023-06-14"},{"lineNumber":58,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(DataLoadingException.class, () -\u003e readAddressBook(\"invalidAndValidPersonAddressBook.json\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void readAndSaveAddressBook_allInOrder_success() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" Path filePath \u003d testFolder.resolve(\"TempAddressBook.json\");","lastModifiedDate":"2019-04-25"},{"lineNumber":64,"author":{"gitId":"chaaaaun"},"content":" AddressBook original \u003d TypicalPersons.getTypicalAddressBook();","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":" JsonAddressBookStorage jsonAddressBookStorage \u003d new JsonAddressBookStorage(filePath);","lastModifiedDate":"2018-08-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" // Save in new file and read back","lastModifiedDate":"2018-08-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" jsonAddressBookStorage.saveAddressBook(original, filePath);","lastModifiedDate":"2018-08-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook readBack \u003d jsonAddressBookStorage.readAddressBook(filePath).get();","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(readBack));","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" // Modify data, overwrite exiting file, and read back","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"chaaaaun"},"content":" Person hoon \u003d TypicalPersons.HOON;","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"chaaaaun"},"content":" original.addPerson(hoon);","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"chaaaaun"},"content":" original.removePerson(TypicalPersons.ALICE);","lastModifiedDate":"2024-03-12"},{"lineNumber":76,"author":{"gitId":"-"},"content":" jsonAddressBookStorage.saveAddressBook(original, filePath);","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" readBack \u003d jsonAddressBookStorage.readAddressBook(filePath).get();","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(readBack));","lastModifiedDate":"2018-08-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" // Save and read without specifying file path","lastModifiedDate":"2018-08-13"},{"lineNumber":81,"author":{"gitId":"chaaaaun"},"content":" Person ida \u003d TypicalPersons.IDA;","lastModifiedDate":"2024-03-17"},{"lineNumber":82,"author":{"gitId":"chaaaaun"},"content":" original.addPerson(ida);","lastModifiedDate":"2024-03-17"},{"lineNumber":83,"author":{"gitId":"-"},"content":" jsonAddressBookStorage.saveAddressBook(original); // file path not specified","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" readBack \u003d jsonAddressBookStorage.readAddressBook().get(); // file path not specified","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(readBack));","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void saveAddressBook_nullAddressBook_throwsNullPointerException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":90,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e saveAddressBook(null, \"SomeFile.json\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * Saves {@code addressBook} at the specified {@code filePath}.","lastModifiedDate":"2018-08-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" private void saveAddressBook(ReadOnlyAddressBook addressBook, String filePath) {","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-08-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(Paths.get(filePath))","lastModifiedDate":"2018-08-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":" .saveAddressBook(addressBook, addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2018-08-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":" throw new AssertionError(\"There should not be an error writing to the file.\", ioe);","lastModifiedDate":"2018-08-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":" public void saveAddressBook_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":107,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e saveAddressBook(new AddressBook(0), null));","lastModifiedDate":"2024-03-17"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"chaaaaun":19,"-":90}},{"path":"src/test/java/scrolls/elder/storage/JsonSerializableAddressBookTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.storage;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.util.JsonUtil;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.AddressBook;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.Assert;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.TypicalPersons;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class JsonSerializableAddressBookTest {","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonSerializableAddressBookTest\");","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private static final Path TYPICAL_PERSONS_FILE \u003d TEST_DATA_FOLDER.resolve(\"typicalPersonsAddressBook.json\");","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final Path INVALID_PERSON_FILE \u003d TEST_DATA_FOLDER.resolve(\"invalidPersonAddressBook.json\");","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final Path DUPLICATE_PERSON_FILE \u003d TEST_DATA_FOLDER.resolve(\"duplicatePersonAddressBook.json\");","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void toModelType_typicalPersonsFile_success() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(TYPICAL_PERSONS_FILE,","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook.class).get();","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" AddressBook addressBookFromFile \u003d dataFromFile.toModelType();","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" AddressBook typicalPersonsAddressBook \u003d TypicalPersons.getTypicalAddressBook();","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertEquals(addressBookFromFile, typicalPersonsAddressBook);","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public void toModelType_invalidPersonFile_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(INVALID_PERSON_FILE,","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook.class).get();","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(IllegalValueException.class, dataFromFile::toModelType);","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void toModelType_duplicatePersons_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(DUPLICATE_PERSON_FILE,","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook.class).get();","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(IllegalValueException.class, JsonSerializableAddressBook.MESSAGE_DUPLICATE_PERSON,","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":" dataFromFile::toModelType);","lastModifiedDate":"2019-03-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"chaaaaun":8,"-":39}},{"path":"src/test/java/scrolls/elder/storage/JsonUserPrefsStorageTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.storage;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":14,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.core.GuiSettings;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.UserPrefs;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.Assert;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class JsonUserPrefsStorageTest {","lastModifiedDate":"2016-10-01"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonUserPrefsStorageTest\");","lastModifiedDate":"2018-04-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public Path testFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void readUserPrefs_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":28,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e readUserPrefs(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Optional\u003cUserPrefs\u003e readUserPrefs(String userPrefsFileInTestDataFolder) throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":" Path prefsFilePath \u003d addToTestDataPathIfNotNull(userPrefsFileInTestDataFolder);","lastModifiedDate":"2018-04-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return new JsonUserPrefsStorage(prefsFilePath).readUserPrefs(prefsFilePath);","lastModifiedDate":"2016-10-01"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void readUserPrefs_missingFile_emptyResult() throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertFalse(readUserPrefs(\"NonExistentFile.json\").isPresent());","lastModifiedDate":"2016-09-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void readUserPrefs_notJsonFormat_exceptionThrown() {","lastModifiedDate":"2019-03-23"},{"lineNumber":43,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(DataLoadingException.class, () -\u003e readUserPrefs(\"NotJsonFormatUserPrefs.json\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" private Path addToTestDataPathIfNotNull(String userPrefsFileInTestDataFolder) {","lastModifiedDate":"2018-04-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" return userPrefsFileInTestDataFolder !\u003d null","lastModifiedDate":"2016-09-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" ? TEST_DATA_FOLDER.resolve(userPrefsFileInTestDataFolder)","lastModifiedDate":"2018-04-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":" : null;","lastModifiedDate":"2016-09-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void readUserPrefs_fileInOrder_successfullyRead() throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":54,"author":{"gitId":"-"},"content":" UserPrefs expected \u003d getTypicalUserPrefs();","lastModifiedDate":"2017-02-25"},{"lineNumber":55,"author":{"gitId":"-"},"content":" UserPrefs actual \u003d readUserPrefs(\"TypicalUserPref.json\").get();","lastModifiedDate":"2016-09-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertEquals(expected, actual);","lastModifiedDate":"2016-09-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void readUserPrefs_valuesMissingFromFile_defaultValuesUsed() throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":61,"author":{"gitId":"-"},"content":" UserPrefs actual \u003d readUserPrefs(\"EmptyUserPrefs.json\").get();","lastModifiedDate":"2016-09-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertEquals(new UserPrefs(), actual);","lastModifiedDate":"2016-09-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void readUserPrefs_extraValuesInFile_extraValuesIgnored() throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":" UserPrefs expected \u003d getTypicalUserPrefs();","lastModifiedDate":"2017-02-25"},{"lineNumber":68,"author":{"gitId":"-"},"content":" UserPrefs actual \u003d readUserPrefs(\"ExtraValuesUserPref.json\").get();","lastModifiedDate":"2016-09-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertEquals(expected, actual);","lastModifiedDate":"2016-09-24"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":" private UserPrefs getTypicalUserPrefs() {","lastModifiedDate":"2017-02-25"},{"lineNumber":74,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-02-25"},{"lineNumber":75,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(new GuiSettings(1000, 500, 300, 100));","lastModifiedDate":"2018-11-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"addressbook.json\"));","lastModifiedDate":"2018-11-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return userPrefs;","lastModifiedDate":"2017-02-25"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-25"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void savePrefs_nullPrefs_throwsNullPointerException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":82,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e saveUserPrefs(null, \"SomeFile.json\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void saveUserPrefs_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":87,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e saveUserPrefs(new UserPrefs(), null));","lastModifiedDate":"2024-03-12"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":90,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-15"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * Saves {@code userPrefs} at the specified {@code prefsFileInTestDataFolder} filepath.","lastModifiedDate":"2017-08-15"},{"lineNumber":92,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-15"},{"lineNumber":93,"author":{"gitId":"-"},"content":" private void saveUserPrefs(UserPrefs userPrefs, String prefsFileInTestDataFolder) {","lastModifiedDate":"2017-08-15"},{"lineNumber":94,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":95,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(addToTestDataPathIfNotNull(prefsFileInTestDataFolder))","lastModifiedDate":"2016-10-12"},{"lineNumber":96,"author":{"gitId":"-"},"content":" .saveUserPrefs(userPrefs);","lastModifiedDate":"2016-10-12"},{"lineNumber":97,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2017-08-15"},{"lineNumber":98,"author":{"gitId":"-"},"content":" throw new AssertionError(\"There should not be an error writing to the file\", ioe);","lastModifiedDate":"2017-08-15"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":103,"author":{"gitId":"-"},"content":" public void saveUserPrefs_allInOrder_success() throws DataLoadingException, IOException {","lastModifiedDate":"2023-06-14"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":105,"author":{"gitId":"-"},"content":" UserPrefs original \u003d new UserPrefs();","lastModifiedDate":"2016-09-24"},{"lineNumber":106,"author":{"gitId":"-"},"content":" original.setGuiSettings(new GuiSettings(1200, 200, 0, 2));","lastModifiedDate":"2018-11-27"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":108,"author":{"gitId":"-"},"content":" Path pefsFilePath \u003d testFolder.resolve(\"TempPrefs.json\");","lastModifiedDate":"2019-04-25"},{"lineNumber":109,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage jsonUserPrefsStorage \u003d new JsonUserPrefsStorage(pefsFilePath);","lastModifiedDate":"2016-10-01"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":111,"author":{"gitId":"-"},"content":" //Try writing when the file doesn\u0027t exist","lastModifiedDate":"2016-09-24"},{"lineNumber":112,"author":{"gitId":"-"},"content":" jsonUserPrefsStorage.saveUserPrefs(original);","lastModifiedDate":"2016-10-01"},{"lineNumber":113,"author":{"gitId":"-"},"content":" UserPrefs readBack \u003d jsonUserPrefsStorage.readUserPrefs().get();","lastModifiedDate":"2016-10-01"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertEquals(original, readBack);","lastModifiedDate":"2016-09-24"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":116,"author":{"gitId":"-"},"content":" //Try saving when the file exists","lastModifiedDate":"2016-09-24"},{"lineNumber":117,"author":{"gitId":"-"},"content":" original.setGuiSettings(new GuiSettings(5, 5, 5, 5));","lastModifiedDate":"2018-11-27"},{"lineNumber":118,"author":{"gitId":"-"},"content":" jsonUserPrefsStorage.saveUserPrefs(original);","lastModifiedDate":"2016-10-01"},{"lineNumber":119,"author":{"gitId":"-"},"content":" readBack \u003d jsonUserPrefsStorage.readUserPrefs().get();","lastModifiedDate":"2016-10-01"},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertEquals(original, readBack);","lastModifiedDate":"2016-09-24"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":123,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-24"}],"authorContributionMap":{"chaaaaun":9,"-":114}},{"path":"src/test/java/scrolls/elder/storage/StorageManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.storage;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertNotNull;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":12,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.core.GuiSettings;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.AddressBook;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.UserPrefs;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.TypicalPersons;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class StorageManagerTest {","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public Path testFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private StorageManager storageManager;","lastModifiedDate":"2017-04-01"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2016-10-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(getTempFilePath(\"ab\"));","lastModifiedDate":"2018-11-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(getTempFilePath(\"prefs\"));","lastModifiedDate":"2017-02-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" storageManager \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2017-02-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Path getTempFilePath(String fileName) {","lastModifiedDate":"2018-04-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return testFolder.resolve(fileName);","lastModifiedDate":"2019-04-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void prefsReadSave() throws Exception {","lastModifiedDate":"2016-10-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-09-28"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Note: This is an integration test that verifies the StorageManager is properly wired to the","lastModifiedDate":"2016-09-28"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * {@link JsonUserPrefsStorage} class.","lastModifiedDate":"2016-10-01"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * More extensive testing of UserPref saving/reading is done in {@link JsonUserPrefsStorageTest} class.","lastModifiedDate":"2016-10-01"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-28"},{"lineNumber":43,"author":{"gitId":"-"},"content":" UserPrefs original \u003d new UserPrefs();","lastModifiedDate":"2016-09-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" original.setGuiSettings(new GuiSettings(300, 600, 4, 6));","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" storageManager.saveUserPrefs(original);","lastModifiedDate":"2016-09-28"},{"lineNumber":46,"author":{"gitId":"-"},"content":" UserPrefs retrieved \u003d storageManager.readUserPrefs().get();","lastModifiedDate":"2016-09-28"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertEquals(original, retrieved);","lastModifiedDate":"2016-09-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void addressBookReadSave() throws Exception {","lastModifiedDate":"2016-09-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-16"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Note: This is an integration test that verifies the StorageManager is properly wired to the","lastModifiedDate":"2016-10-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * {@link JsonAddressBookStorage} class.","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * More extensive testing of UserPref saving/reading is done in {@link JsonAddressBookStorageTest} class.","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":57,"author":{"gitId":"chaaaaun"},"content":" AddressBook original \u003d TypicalPersons.getTypicalAddressBook();","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":" storageManager.saveAddressBook(original);","lastModifiedDate":"2016-09-28"},{"lineNumber":59,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook retrieved \u003d storageManager.readAddressBook().get();","lastModifiedDate":"2016-09-28"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(retrieved));","lastModifiedDate":"2016-09-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-01"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void getAddressBookFilePath() {","lastModifiedDate":"2016-10-01"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertNotNull(storageManager.getAddressBookFilePath());","lastModifiedDate":"2016-10-01"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01"},{"lineNumber":68,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"chaaaaun":7,"-":61}},{"path":"src/test/java/scrolls/elder/testutil/AddressBookBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.testutil;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.AddressBook;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Person;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * A utility class to help with building Addressbook objects.","lastModifiedDate":"2016-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Example usage: \u003cbr\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * {@code AddressBook ab \u003d new AddressBookBuilder().withPerson(\"John\", \"Doe\").build();}","lastModifiedDate":"2018-03-29"},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class AddressBookBuilder {","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" private AddressBook addressBook;","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public AddressBookBuilder() {","lastModifiedDate":"2017-05-31"},{"lineNumber":16,"author":{"gitId":"chaaaaun"},"content":" addressBook \u003d new AddressBook(0);","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public AddressBookBuilder(AddressBook addressBook) {","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" this.addressBook \u003d addressBook;","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Adds a new {@code Person} to the {@code AddressBook} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public AddressBookBuilder withPerson(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":27,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2016-09-01"},{"lineNumber":28,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public AddressBook build() {","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"chaaaaun":4,"-":30}},{"path":"src/test/java/scrolls/elder/testutil/Assert.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.testutil;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-17"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Assertions;","lastModifiedDate":"2019-03-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.function.Executable;","lastModifiedDate":"2019-03-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-03-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-07-17"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * A set of assertion methods useful for writing tests.","lastModifiedDate":"2017-07-17"},{"lineNumber":8,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-17"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class Assert {","lastModifiedDate":"2017-07-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Asserts that the {@code executable} throws the {@code expectedType} Exception.","lastModifiedDate":"2019-03-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * This is a wrapper method that invokes {@link Assertions#assertThrows(Class, Executable)}, to maintain consistency","lastModifiedDate":"2019-03-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * with our custom {@link #assertThrows(Class, String, Executable)} method.","lastModifiedDate":"2019-03-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * To standardize API calls in this project, users should use this method instead of","lastModifiedDate":"2019-03-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * {@link Assertions#assertThrows(Class, Executable)}.","lastModifiedDate":"2019-03-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static void assertThrows(Class\u003c? extends Throwable\u003e expectedType, Executable executable) {","lastModifiedDate":"2019-03-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":" Assertions.assertThrows(expectedType, executable);","lastModifiedDate":"2019-03-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-02-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-02-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-02-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Asserts that the {@code executable} throws the {@code expectedType} Exception with the {@code expectedMessage}.","lastModifiedDate":"2019-03-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * If there\u0027s no need for the verification of the exception\u0027s error message, call","lastModifiedDate":"2018-02-09"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * {@link #assertThrows(Class, Executable)} instead.","lastModifiedDate":"2019-03-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2019-03-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * @see #assertThrows(Class, Executable)","lastModifiedDate":"2019-03-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-02-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public static void assertThrows(Class\u003c? extends Throwable\u003e expectedType, String expectedMessage,","lastModifiedDate":"2019-03-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" Executable executable) {","lastModifiedDate":"2019-03-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" Throwable thrownException \u003d Assertions.assertThrows(expectedType, executable);","lastModifiedDate":"2019-03-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" Assertions.assertEquals(expectedMessage, thrownException.getMessage());","lastModifiedDate":"2019-03-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-17"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-07-17"}],"authorContributionMap":{"chaaaaun":1,"-":33}},{"path":"src/test/java/scrolls/elder/testutil/EditPersonDescriptorBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.testutil;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-12-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-12-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-12-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":7,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.commands.EditCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Address;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Email;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Name;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Person;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Phone;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"gerteck"},"content":"import scrolls.elder.model.person.Role;","lastModifiedDate":"2024-03-15"},{"lineNumber":14,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.tag.Tag;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * A utility class to help with building EditPersonDescriptor objects.","lastModifiedDate":"2017-05-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorBuilder {","lastModifiedDate":"2017-05-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":21,"author":{"gitId":"chaaaaun"},"content":" private EditCommand.EditPersonDescriptor descriptor;","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder() {","lastModifiedDate":"2017-05-05"},{"lineNumber":24,"author":{"gitId":"chaaaaun"},"content":" descriptor \u003d new EditCommand.EditPersonDescriptor();","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":27,"author":{"gitId":"chaaaaun"},"content":" public EditPersonDescriptorBuilder(EditCommand.EditPersonDescriptor descriptor) {","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"chaaaaun"},"content":" this.descriptor \u003d new EditCommand.EditPersonDescriptor(descriptor);","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Returns an {@code EditPersonDescriptor} with fields containing {@code person}\u0027s details","lastModifiedDate":"2017-06-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":35,"author":{"gitId":"chaaaaun"},"content":" descriptor \u003d new EditCommand.EditPersonDescriptor();","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" descriptor.setName(person.getName());","lastModifiedDate":"2017-06-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" descriptor.setPhone(person.getPhone());","lastModifiedDate":"2017-06-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" descriptor.setEmail(person.getEmail());","lastModifiedDate":"2017-06-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" descriptor.setAddress(person.getAddress());","lastModifiedDate":"2017-06-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" descriptor.setTags(person.getTags());","lastModifiedDate":"2017-06-21"},{"lineNumber":41,"author":{"gitId":"gerteck"},"content":" descriptor.setRole(person.getRole());","lastModifiedDate":"2024-03-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withName(String name) {","lastModifiedDate":"2017-08-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":" descriptor.setName(new Name(name));","lastModifiedDate":"2017-12-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":" descriptor.setPhone(new Phone(phone));","lastModifiedDate":"2017-12-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15"},{"lineNumber":64,"author":{"gitId":"-"},"content":" descriptor.setEmail(new Email(email));","lastModifiedDate":"2017-12-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":68,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":69,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":70,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15"},{"lineNumber":72,"author":{"gitId":"-"},"content":" descriptor.setAddress(new Address(address));","lastModifiedDate":"2017-12-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":76,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":77,"author":{"gitId":"-"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code EditPersonDescriptor}","lastModifiedDate":"2017-07-26"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":79,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withTags(String... tags) {","lastModifiedDate":"2017-08-15"},{"lineNumber":81,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagSet \u003d Stream.of(tags).map(Tag::new).collect(Collectors.toSet());","lastModifiedDate":"2017-12-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" descriptor.setTags(tagSet);","lastModifiedDate":"2017-12-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":86,"author":{"gitId":"CJerrong"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":87,"author":{"gitId":"CJerrong"},"content":" * Sets the {@code role} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-03-15"},{"lineNumber":88,"author":{"gitId":"CJerrong"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":89,"author":{"gitId":"gerteck"},"content":" public EditPersonDescriptorBuilder withRole(String roleString) {","lastModifiedDate":"2024-03-15"},{"lineNumber":90,"author":{"gitId":"gerteck"},"content":" descriptor.setRole(new Role(roleString));","lastModifiedDate":"2024-03-15"},{"lineNumber":91,"author":{"gitId":"CJerrong"},"content":" return this;","lastModifiedDate":"2024-03-15"},{"lineNumber":92,"author":{"gitId":"CJerrong"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":93,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":94,"author":{"gitId":"chaaaaun"},"content":" public EditCommand.EditPersonDescriptor build() {","lastModifiedDate":"2024-03-12"},{"lineNumber":95,"author":{"gitId":"-"},"content":" return descriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":97,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"CJerrong":6,"gerteck":4,"chaaaaun":14,"-":73}},{"path":"src/test/java/scrolls/elder/testutil/PersonBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.testutil;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-12-20"},{"lineNumber":4,"author":{"gitId":"soons1"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-04-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":7,"author":{"gitId":"CJerrong"},"content":"import scrolls.elder.model.person.Address;","lastModifiedDate":"2024-03-15"},{"lineNumber":8,"author":{"gitId":"CJerrong"},"content":"import scrolls.elder.model.person.Befriendee;","lastModifiedDate":"2024-03-15"},{"lineNumber":9,"author":{"gitId":"CJerrong"},"content":"import scrolls.elder.model.person.Email;","lastModifiedDate":"2024-03-15"},{"lineNumber":10,"author":{"gitId":"CJerrong"},"content":"import scrolls.elder.model.person.Name;","lastModifiedDate":"2024-03-15"},{"lineNumber":11,"author":{"gitId":"CJerrong"},"content":"import scrolls.elder.model.person.Person;","lastModifiedDate":"2024-03-15"},{"lineNumber":12,"author":{"gitId":"CJerrong"},"content":"import scrolls.elder.model.person.Phone;","lastModifiedDate":"2024-03-15"},{"lineNumber":13,"author":{"gitId":"gerteck"},"content":"import scrolls.elder.model.person.Role;","lastModifiedDate":"2024-03-15"},{"lineNumber":14,"author":{"gitId":"CJerrong"},"content":"import scrolls.elder.model.person.Volunteer;","lastModifiedDate":"2024-03-15"},{"lineNumber":15,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.tag.Tag;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.util.SampleDataUtil;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * A utility class to help with building Person objects.","lastModifiedDate":"2017-04-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class PersonBuilder {","lastModifiedDate":"2016-09-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":23,"author":{"gitId":"chaaaaun"},"content":" public static final String DEFAULT_ID \u003d \"0\";","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2020-12-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2017-04-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2020-12-18"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2017-04-05"},{"lineNumber":28,"author":{"gitId":"gerteck"},"content":" public static final String DEFAULT_VOLUNTEER_ROLE_STRING \u003d \"volunteer\";","lastModifiedDate":"2024-03-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":30,"author":{"gitId":"chaaaaun"},"content":" private int id;","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-12-20"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-12-20"},{"lineNumber":36,"author":{"gitId":"gerteck"},"content":" private Role role;","lastModifiedDate":"2024-03-15"},{"lineNumber":37,"author":{"gitId":"CJerrong"},"content":" private Optional\u003cName\u003e pairedWithName;","lastModifiedDate":"2024-03-22"},{"lineNumber":38,"author":{"gitId":"CJerrong"},"content":" private Optional\u003cInteger\u003e pairedWithID;","lastModifiedDate":"2024-03-22"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2020-05-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public PersonBuilder() {","lastModifiedDate":"2017-08-15"},{"lineNumber":44,"author":{"gitId":"chaaaaun"},"content":" id \u003d 0;","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2017-12-20"},{"lineNumber":47,"author":{"gitId":"-"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2017-12-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2017-12-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26"},{"lineNumber":50,"author":{"gitId":"gerteck"},"content":" role \u003d new Role(DEFAULT_VOLUNTEER_ROLE_STRING);","lastModifiedDate":"2024-03-15"},{"lineNumber":51,"author":{"gitId":"CJerrong"},"content":" pairedWithName \u003d Optional.empty();","lastModifiedDate":"2024-03-22"},{"lineNumber":52,"author":{"gitId":"CJerrong"},"content":" pairedWithID \u003d Optional.empty();","lastModifiedDate":"2024-03-22"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Initializes the PersonBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2016-12-11"},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public PersonBuilder(Person personToCopy) {","lastModifiedDate":"2018-01-10"},{"lineNumber":59,"author":{"gitId":"chaaaaun"},"content":" id \u003d personToCopy.getId();","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"-"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2017-12-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2017-12-20"},{"lineNumber":62,"author":{"gitId":"-"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2017-12-20"},{"lineNumber":63,"author":{"gitId":"-"},"content":" address \u003d personToCopy.getAddress();","lastModifiedDate":"2017-12-20"},{"lineNumber":64,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e(personToCopy.getTags());","lastModifiedDate":"2017-12-20"},{"lineNumber":65,"author":{"gitId":"gerteck"},"content":" role \u003d personToCopy.getRole();","lastModifiedDate":"2024-03-15"},{"lineNumber":66,"author":{"gitId":"CJerrong"},"content":" pairedWithName \u003d personToCopy.getPairedWithName();","lastModifiedDate":"2024-03-22"},{"lineNumber":67,"author":{"gitId":"CJerrong"},"content":" pairedWithID \u003d personToCopy.getPairedWithID();","lastModifiedDate":"2024-03-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11"},{"lineNumber":70,"author":{"gitId":"chaaaaun"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"chaaaaun"},"content":" * Sets the {@code id} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"chaaaaun"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"chaaaaun"},"content":" public PersonBuilder withId(int id) {","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"chaaaaun"},"content":" this.id \u003d id;","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"chaaaaun"},"content":" return this;","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public PersonBuilder withName(String name) {","lastModifiedDate":"2017-08-15"},{"lineNumber":82,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20"},{"lineNumber":83,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":86,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":89,"author":{"gitId":"-"},"content":" public PersonBuilder withTags(String ... tags) {","lastModifiedDate":"2017-08-15"},{"lineNumber":90,"author":{"gitId":"-"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2017-12-20"},{"lineNumber":91,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":94,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public PersonBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15"},{"lineNumber":98,"author":{"gitId":"-"},"content":" this.address \u003d new Address(address);","lastModifiedDate":"2017-12-20"},{"lineNumber":99,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":102,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":105,"author":{"gitId":"-"},"content":" public PersonBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15"},{"lineNumber":106,"author":{"gitId":"-"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2017-12-20"},{"lineNumber":107,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":110,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":111,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":112,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":113,"author":{"gitId":"-"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15"},{"lineNumber":114,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2017-12-20"},{"lineNumber":115,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":118,"author":{"gitId":"CJerrong"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":119,"author":{"gitId":"CJerrong"},"content":" * Sets the {@code isVolunteer} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-15"},{"lineNumber":120,"author":{"gitId":"CJerrong"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":121,"author":{"gitId":"gerteck"},"content":" public PersonBuilder withRole(String roleString) {","lastModifiedDate":"2024-03-15"},{"lineNumber":122,"author":{"gitId":"gerteck"},"content":" this.role \u003d new Role(roleString);","lastModifiedDate":"2024-03-15"},{"lineNumber":123,"author":{"gitId":"CJerrong"},"content":" return this;","lastModifiedDate":"2024-03-15"},{"lineNumber":124,"author":{"gitId":"CJerrong"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":125,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":126,"author":{"gitId":"soons1"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":127,"author":{"gitId":"CJerrong"},"content":" * Sets the {@code pairedWithName} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-22"},{"lineNumber":128,"author":{"gitId":"soons1"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":129,"author":{"gitId":"CJerrong"},"content":" public PersonBuilder withPairedWithName(Optional\u003cName\u003e pairedWithName) {","lastModifiedDate":"2024-03-22"},{"lineNumber":130,"author":{"gitId":"CJerrong"},"content":" this.pairedWithName \u003d pairedWithName;","lastModifiedDate":"2024-03-22"},{"lineNumber":131,"author":{"gitId":"CJerrong"},"content":" return this;","lastModifiedDate":"2024-03-22"},{"lineNumber":132,"author":{"gitId":"CJerrong"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":133,"author":{"gitId":"CJerrong"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":134,"author":{"gitId":"CJerrong"},"content":" /**","lastModifiedDate":"2024-03-22"},{"lineNumber":135,"author":{"gitId":"CJerrong"},"content":" * Sets the {@code pairedWithID} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-22"},{"lineNumber":136,"author":{"gitId":"CJerrong"},"content":" */","lastModifiedDate":"2024-03-22"},{"lineNumber":137,"author":{"gitId":"CJerrong"},"content":" public PersonBuilder withPairedWithID(Optional\u003cInteger\u003e pairedWithID) {","lastModifiedDate":"2024-03-22"},{"lineNumber":138,"author":{"gitId":"CJerrong"},"content":" this.pairedWithID \u003d pairedWithID;","lastModifiedDate":"2024-03-22"},{"lineNumber":139,"author":{"gitId":"soons1"},"content":" return this;","lastModifiedDate":"2024-03-18"},{"lineNumber":140,"author":{"gitId":"soons1"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":141,"author":{"gitId":"soons1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":142,"author":{"gitId":"CJerrong"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":143,"author":{"gitId":"CJerrong"},"content":" * Builds a Person based on the fields in the person builder","lastModifiedDate":"2024-03-15"},{"lineNumber":144,"author":{"gitId":"CJerrong"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":145,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05"},{"lineNumber":146,"author":{"gitId":"CJerrong"},"content":" Person person;","lastModifiedDate":"2024-03-15"},{"lineNumber":147,"author":{"gitId":"gerteck"},"content":" if (role.isVolunteer()) {","lastModifiedDate":"2024-03-16"},{"lineNumber":148,"author":{"gitId":"CJerrong"},"content":" person \u003d new Volunteer(name, phone, email, address, tags, pairedWithName, pairedWithID);","lastModifiedDate":"2024-03-22"},{"lineNumber":149,"author":{"gitId":"CJerrong"},"content":" } else {","lastModifiedDate":"2024-03-15"},{"lineNumber":150,"author":{"gitId":"CJerrong"},"content":" person \u003d new Befriendee(name, phone, email, address, tags, pairedWithName, pairedWithID);","lastModifiedDate":"2024-03-22"},{"lineNumber":151,"author":{"gitId":"CJerrong"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":152,"author":{"gitId":"chaaaaun"},"content":" person.setId(id);","lastModifiedDate":"2024-03-17"},{"lineNumber":153,"author":{"gitId":"CJerrong"},"content":" return person;","lastModifiedDate":"2024-03-15"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":156,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03"}],"authorContributionMap":{"soons1":6,"CJerrong":39,"gerteck":8,"chaaaaun":16,"-":87}},{"path":"src/test/java/scrolls/elder/testutil/PersonUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.testutil;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"chaaaaun"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.commands.AddCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.commands.EditCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.logic.parser.CliSyntax;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Person;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.tag.Tag;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":"/**","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"chaaaaun"},"content":" * A utility class for Person.","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"chaaaaun"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"chaaaaun"},"content":"public class PersonUtil {","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"chaaaaun"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"chaaaaun"},"content":" * Returns an add command string for adding the {@code person}.","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"chaaaaun"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"chaaaaun"},"content":" public static String getAddCommand(Person person) {","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"chaaaaun"},"content":" return AddCommand.COMMAND_WORD + \" \" + getPersonDetails(person);","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"chaaaaun"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"chaaaaun"},"content":" * Returns the part of command string for the given {@code person}\u0027s details.","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"chaaaaun"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"chaaaaun"},"content":" public static String getPersonDetails(Person person) {","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"chaaaaun"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"chaaaaun"},"content":" sb.append(CliSyntax.PREFIX_NAME + person.getName().fullName + \" \");","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"chaaaaun"},"content":" sb.append(CliSyntax.PREFIX_PHONE + person.getPhone().value + \" \");","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"chaaaaun"},"content":" sb.append(CliSyntax.PREFIX_EMAIL + person.getEmail().value + \" \");","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"chaaaaun"},"content":" sb.append(CliSyntax.PREFIX_ADDRESS + person.getAddress().value + \" \");","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"gerteck"},"content":" sb.append(CliSyntax.PREFIX_ROLE + person.getRole().value + \" \");","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"chaaaaun"},"content":" person.getTags().stream().forEach(","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"chaaaaun"},"content":" s -\u003e sb.append(CliSyntax.PREFIX_TAG + s.tagName + \" \")","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"chaaaaun"},"content":" );","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"chaaaaun"},"content":" return sb.toString();","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"chaaaaun"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"chaaaaun"},"content":" * Returns the part of command string for the given {@code EditPersonDescriptor}\u0027s details.","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"chaaaaun"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"chaaaaun"},"content":" public static String getEditPersonDescriptorDetails(EditCommand.EditPersonDescriptor descriptor) {","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"chaaaaun"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"chaaaaun"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(CliSyntax.PREFIX_NAME).append(name.fullName).append(\" \"));","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"chaaaaun"},"content":" descriptor.getPhone().ifPresent(phone -\u003e sb.append(CliSyntax.PREFIX_PHONE).append(phone.value).append(\" \"));","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"chaaaaun"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(CliSyntax.PREFIX_EMAIL).append(email.value).append(\" \"));","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"chaaaaun"},"content":" descriptor.getAddress().ifPresent(address -\u003e","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"chaaaaun"},"content":" sb.append(CliSyntax.PREFIX_ADDRESS).append(address.value).append(\" \"));","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"gerteck"},"content":" descriptor.getRole().ifPresent(role -\u003e sb.append(CliSyntax.PREFIX_ROLE).append(role.value).append(\" \"));","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"chaaaaun"},"content":" if (descriptor.getTags().isPresent()) {","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"chaaaaun"},"content":" Set\u003cTag\u003e tags \u003d descriptor.getTags().get();","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"chaaaaun"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"chaaaaun"},"content":" sb.append(CliSyntax.PREFIX_TAG);","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"chaaaaun"},"content":" } else {","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"chaaaaun"},"content":" tags.forEach(s -\u003e sb.append(CliSyntax.PREFIX_TAG).append(s.tagName).append(\" \"));","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"chaaaaun"},"content":" return sb.toString();","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"chaaaaun"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"gerteck":3,"chaaaaun":58}},{"path":"src/test/java/scrolls/elder/testutil/SerializableTestClass.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.testutil;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2016-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2016-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.HashMap;","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * A class used to test serialization and deserialization","lastModifiedDate":"2016-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class SerializableTestClass {","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final String JSON_STRING_REPRESENTATION \u003d String.format(\"{%n\"","lastModifiedDate":"2016-10-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":" + \" \\\"name\\\" : \\\"This is a test class\\\",%n\"","lastModifiedDate":"2016-10-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":" + \" \\\"listOfLocalDateTimes\\\" : \"","lastModifiedDate":"2016-10-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":" + \"[ \\\"-999999999-01-01T00:00:00\\\", \\\"+999999999-12-31T23:59:59.999999999\\\", \"","lastModifiedDate":"2016-10-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":" + \"\\\"0001-01-01T01:01:00\\\" ],%n\"","lastModifiedDate":"2016-10-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":" + \" \\\"mapOfIntegerToString\\\" : {%n\"","lastModifiedDate":"2016-10-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":" + \" \\\"1\\\" : \\\"One\\\",%n\"","lastModifiedDate":"2016-10-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" + \" \\\"2\\\" : \\\"Two\\\",%n\"","lastModifiedDate":"2016-10-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":" + \" \\\"3\\\" : \\\"Three\\\"%n\"","lastModifiedDate":"2016-10-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":" + \" }%n\"","lastModifiedDate":"2016-10-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":" + \"}\");","lastModifiedDate":"2016-10-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String NAME_TEST_VALUE \u003d \"This is a test class\";","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private String name;","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private List\u003cLocalDateTime\u003e listOfLocalDateTimes;","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private HashMap\u003cInteger, String\u003e mapOfIntegerToString;","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static String getNameTestValue() {","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" return NAME_TEST_VALUE;","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static List\u003cLocalDateTime\u003e getListTestValues() {","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" List\u003cLocalDateTime\u003e listOfLocalDateTimes \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" listOfLocalDateTimes.add(LocalDateTime.MIN);","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" listOfLocalDateTimes.add(LocalDateTime.MAX);","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" listOfLocalDateTimes.add(LocalDateTime.of(1, 1, 1, 1, 1));","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return listOfLocalDateTimes;","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static HashMap\u003cInteger, String\u003e getHashMapTestValues() {","lastModifiedDate":"2016-08-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":" HashMap\u003cInteger, String\u003e mapOfIntegerToString \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" mapOfIntegerToString.put(1, \"One\");","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" mapOfIntegerToString.put(2, \"Two\");","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":" mapOfIntegerToString.put(3, \"Three\");","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" return mapOfIntegerToString;","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void setTestValues() {","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" name \u003d getNameTestValue();","lastModifiedDate":"2016-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" listOfLocalDateTimes \u003d getListTestValues();","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" mapOfIntegerToString \u003d getHashMapTestValues();","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public String getName() {","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public List\u003cLocalDateTime\u003e getListOfLocalDateTimes() {","lastModifiedDate":"2016-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return listOfLocalDateTimes;","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public HashMap\u003cInteger, String\u003e getMapOfIntegerToString() {","lastModifiedDate":"2016-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return mapOfIntegerToString;","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"chaaaaun":1,"-":71}},{"path":"src/test/java/scrolls/elder/testutil/TestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.testutil;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Files;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.core.index.Index;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.Model;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Person;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * A utility class for test cases.","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class TestUtil {","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Folder used for temp files created during testing. Ignored by Git.","lastModifiedDate":"2016-10-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final Path SANDBOX_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"sandbox\");","lastModifiedDate":"2018-04-21"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Appends {@code fileName} to the sandbox folder path and returns the resulting path.","lastModifiedDate":"2018-04-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Creates the sandbox folder if it doesn\u0027t exist.","lastModifiedDate":"2016-09-28"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static Path getFilePathInSandboxFolder(String fileName) {","lastModifiedDate":"2018-04-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-28"},{"lineNumber":28,"author":{"gitId":"-"},"content":" Files.createDirectories(SANDBOX_FOLDER);","lastModifiedDate":"2018-04-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-28"},{"lineNumber":30,"author":{"gitId":"-"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2016-09-28"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-28"},{"lineNumber":32,"author":{"gitId":"-"},"content":" return SANDBOX_FOLDER.resolve(fileName);","lastModifiedDate":"2018-04-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-30"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Returns the middle index of the person in the {@code model}\u0027s person list.","lastModifiedDate":"2017-07-30"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-30"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static Index getMidIndex(Model model) {","lastModifiedDate":"2017-07-30"},{"lineNumber":39,"author":{"gitId":"-"},"content":" return Index.fromOneBased(model.getFilteredPersonList().size() / 2);","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-30"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-30"},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-30"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Returns the last index of the person in the {@code model}\u0027s person list.","lastModifiedDate":"2017-07-30"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-30"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static Index getLastIndex(Model model) {","lastModifiedDate":"2017-07-30"},{"lineNumber":46,"author":{"gitId":"-"},"content":" return Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-30"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-30"},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-30"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * Returns the person in the {@code model}\u0027s person list at {@code index}.","lastModifiedDate":"2017-07-30"},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-30"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static Person getPerson(Model model, Index index) {","lastModifiedDate":"2018-01-10"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return model.getFilteredPersonList().get(index.getZeroBased());","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-30"},{"lineNumber":55,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"chaaaaun":4,"-":51}},{"path":"src/test/java/scrolls/elder/testutil/TypicalIndexes.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.testutil;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":3,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.commons.core.index.Index;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Index} objects to be used in tests.","lastModifiedDate":"2017-08-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class TypicalIndexes {","lastModifiedDate":"2017-08-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static final Index INDEX_FIRST_PERSON \u003d Index.fromOneBased(1);","lastModifiedDate":"2017-08-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final Index INDEX_SECOND_PERSON \u003d Index.fromOneBased(2);","lastModifiedDate":"2017-08-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final Index INDEX_THIRD_PERSON \u003d Index.fromOneBased(3);","lastModifiedDate":"2017-08-05"},{"lineNumber":12,"author":{"gitId":"soons1"},"content":" public static final Index INDEX_FOURTH_PERSON \u003d Index.fromOneBased(4);","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"soons1"},"content":" public static final Index INDEX_FIFTH_PERSON \u003d Index.fromOneBased(5);","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"sdevih"},"content":" public static final Index INDEX_SIXTH_PERSON \u003d Index.fromOneBased(6);","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"sdevih"},"content":" public static final Index INDEX_SEVENTH_PERSON \u003d Index.fromOneBased(7);","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"sdevih"},"content":" public static final Index INDEX_EIGHTH_PERSON \u003d Index.fromOneBased(8);","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"sdevih"},"content":" public static final Index INDEX_NINTH_PERSON \u003d Index.fromOneBased(9);","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-08-05"}],"authorContributionMap":{"soons1":2,"chaaaaun":2,"-":10,"sdevih":4}},{"path":"src/test/java/scrolls/elder/testutil/TypicalPersons.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.testutil;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":3,"author":{"gitId":"gerteck"},"content":"import static scrolls.elder.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"gerteck"},"content":"import static scrolls.elder.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"gerteck"},"content":"import static scrolls.elder.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"gerteck"},"content":"import static scrolls.elder.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"gerteck"},"content":"import static scrolls.elder.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"gerteck"},"content":"import static scrolls.elder.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"gerteck"},"content":"import static scrolls.elder.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"gerteck"},"content":"import static scrolls.elder.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"gerteck"},"content":"import static scrolls.elder.logic.commands.CommandTestUtil.VALID_ROLE_BEFRIENDEE;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"gerteck"},"content":"import static scrolls.elder.logic.commands.CommandTestUtil.VALID_ROLE_VOLUNTEER;","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"gerteck"},"content":"import static scrolls.elder.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"gerteck"},"content":"import static scrolls.elder.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07"},{"lineNumber":19,"author":{"gitId":"sdevih"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-07"},{"lineNumber":21,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.AddressBook;","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"sdevih"},"content":"import scrolls.elder.model.person.Name;","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.model.person.Person;","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Person} objects to be used in tests.","lastModifiedDate":"2017-08-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class TypicalPersons {","lastModifiedDate":"2017-04-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":30,"author":{"gitId":"chaaaaun"},"content":" public static final Person ALICE \u003d new PersonBuilder().withId(0).withName(\"Alice Pauline\")","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"-"},"content":" .withAddress(\"123, Jurong West Ave 6, #08-111\").withEmail(\"alice@example.com\")","lastModifiedDate":"2017-04-05"},{"lineNumber":32,"author":{"gitId":"gerteck"},"content":" .withPhone(\"94351253\").withRole(\"volunteer\")","lastModifiedDate":"2024-03-15"},{"lineNumber":33,"author":{"gitId":"CJerrong"},"content":" .withTags(\"friends\").withPairedWithName(Optional.of(new Name(\"Elle Meyer\")))","lastModifiedDate":"2024-03-22"},{"lineNumber":34,"author":{"gitId":"CJerrong"},"content":" .withPairedWithID(Optional.of(4)).build();","lastModifiedDate":"2024-03-22"},{"lineNumber":35,"author":{"gitId":"chaaaaun"},"content":" public static final Person BENSON \u003d new PersonBuilder().withId(1).withName(\"Benson Meier\")","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"gerteck"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\").withRole(\"volunteer\")","lastModifiedDate":"2024-03-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":" .withEmail(\"johnd@example.com\").withPhone(\"98765432\")","lastModifiedDate":"2017-04-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" .withTags(\"owesMoney\", \"friends\").build();","lastModifiedDate":"2016-09-13"},{"lineNumber":39,"author":{"gitId":"chaaaaun"},"content":" public static final Person CARL \u003d new PersonBuilder().withId(2).withName(\"Carl Kurz\").withPhone(\"95352563\")","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"gerteck"},"content":" .withEmail(\"heinz@example.com\").withAddress(\"wall street\").withRole(\"volunteer\").build();","lastModifiedDate":"2024-03-15"},{"lineNumber":41,"author":{"gitId":"chaaaaun"},"content":" public static final Person DANIEL \u003d new PersonBuilder().withId(3).withName(\"Daniel Meier\").withPhone(\"87652533\")","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"gerteck"},"content":" .withEmail(\"cornelia@example.com\").withAddress(\"10th street\").withTags(\"friends\")","lastModifiedDate":"2024-03-15"},{"lineNumber":43,"author":{"gitId":"gerteck"},"content":" .withRole(\"volunteer\").build();","lastModifiedDate":"2024-03-15"},{"lineNumber":44,"author":{"gitId":"chaaaaun"},"content":" public static final Person ELLE \u003d new PersonBuilder().withId(4).withName(\"Elle Meyer\").withPhone(\"9482224\")","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"sdevih"},"content":" .withEmail(\"werner@example.com\").withAddress(\"michegan ave\").withRole(\"befriendee\")","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"CJerrong"},"content":" .withPairedWithName(Optional.of(ALICE.getName())).withPairedWithID(Optional.of(0)).build();","lastModifiedDate":"2024-03-22"},{"lineNumber":47,"author":{"gitId":"chaaaaun"},"content":" public static final Person FIONA \u003d new PersonBuilder().withId(5).withName(\"Fiona Kunz\").withPhone(\"9482427\")","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"gerteck"},"content":" .withEmail(\"lydia@example.com\").withAddress(\"little tokyo\").withRole(\"befriendee\").build();","lastModifiedDate":"2024-03-15"},{"lineNumber":49,"author":{"gitId":"chaaaaun"},"content":" public static final Person GEORGE \u003d new PersonBuilder().withId(6).withName(\"George Best\").withPhone(\"9482442\")","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"gerteck"},"content":" .withEmail(\"anna@example.com\").withAddress(\"4th street\").withRole(\"befriendee\").build();","lastModifiedDate":"2024-03-15"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13"},{"lineNumber":53,"author":{"gitId":"sdevih"},"content":" public static final Person HOON \u003d new PersonBuilder().withId(7).withName(\"Hoon Meier\").withPhone(\"8482424\")","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"sdevih"},"content":" .withEmail(\"stefan@example.com\").withAddress(\"little india\").withRole(\"volunteer\")","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"CJerrong"},"content":" .withPairedWithName(Optional.of(new Name(\"Ida Mueller\"))).withPairedWithID(Optional.of(8)).build();","lastModifiedDate":"2024-03-22"},{"lineNumber":56,"author":{"gitId":"sdevih"},"content":" public static final Person IDA \u003d new PersonBuilder().withId(8).withName(\"Ida Mueller\").withPhone(\"8482131\")","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"sdevih"},"content":" .withEmail(\"hans@example.com\").withAddress(\"chicago ave\").withRole(\"befriendee\")","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"CJerrong"},"content":" .withPairedWithName(Optional.of(HOON.getName())).withPairedWithID(Optional.of(7)).build();","lastModifiedDate":"2024-03-22"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2017-08-22"},{"lineNumber":60,"author":{"gitId":"gerteck"},"content":" // AMY has role VOLUNTEER","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static final Person AMY \u003d new PersonBuilder().withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2018-01-10"},{"lineNumber":62,"author":{"gitId":"gerteck"},"content":" .withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY).withTags(VALID_TAG_FRIEND)","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"gerteck"},"content":" .withRole(VALID_ROLE_VOLUNTEER).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"gerteck"},"content":" // BOB has role BEFRIENDEE","lastModifiedDate":"2024-03-16"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public static final Person BOB \u003d new PersonBuilder().withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2018-01-10"},{"lineNumber":67,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND)","lastModifiedDate":"2017-09-21"},{"lineNumber":68,"author":{"gitId":"gerteck"},"content":" .withRole(VALID_ROLE_BEFRIENDEE).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" private TypicalPersons() {} // prevents instantiation","lastModifiedDate":"2017-07-20"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":74,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":75,"author":{"gitId":"-"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2017-08-05"},{"lineNumber":76,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2017-08-05"},{"lineNumber":78,"author":{"gitId":"chaaaaun"},"content":" AddressBook ab \u003d new AddressBook(0);","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"-"},"content":" for (Person person : getTypicalPersons()) {","lastModifiedDate":"2018-01-10"},{"lineNumber":80,"author":{"gitId":"chaaaaun"},"content":" person.setId(ab.getGlobalId());","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"-"},"content":" ab.addPerson(person);","lastModifiedDate":"2017-08-05"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public static List\u003cPerson\u003e getTypicalPersons() {","lastModifiedDate":"2018-01-10"},{"lineNumber":87,"author":{"gitId":"sdevih"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04"},{"lineNumber":89,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13"}],"authorContributionMap":{"CJerrong":5,"gerteck":26,"chaaaaun":12,"-":38,"sdevih":8}},{"path":"src/test/java/scrolls/elder/ui/TestFxmlObject.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.ui;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.beans.DefaultProperty;","lastModifiedDate":"2016-12-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * A test object which can be constructed via an FXML file.","lastModifiedDate":"2016-12-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * Unlike other JavaFX classes, this class can be constructed without the JavaFX toolkit being initialized.","lastModifiedDate":"2016-12-21"},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-21"},{"lineNumber":11,"author":{"gitId":"-"},"content":"@DefaultProperty(\"text\")","lastModifiedDate":"2016-12-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class TestFxmlObject {","lastModifiedDate":"2016-12-21"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":14,"author":{"gitId":"-"},"content":" private String text;","lastModifiedDate":"2016-12-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public TestFxmlObject() {}","lastModifiedDate":"2016-12-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public TestFxmlObject(String text) {","lastModifiedDate":"2016-12-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":" setText(text);","lastModifiedDate":"2016-12-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-21"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public String getText() {","lastModifiedDate":"2016-12-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":" return text;","lastModifiedDate":"2016-12-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void setText(String text) {","lastModifiedDate":"2016-12-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":" this.text \u003d text;","lastModifiedDate":"2016-12-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-12-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" if (!(other instanceof TestFxmlObject)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" TestFxmlObject otherTestFxmlObject \u003d (TestFxmlObject) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return Objects.equals(text, otherTestFxmlObject.text);","lastModifiedDate":"2023-07-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-21"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-21"}],"authorContributionMap":{"chaaaaun":1,"-":44}},{"path":"src/test/java/scrolls/elder/ui/UiPartTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package scrolls.elder.ui;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertNotNull;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.net.URL;","lastModifiedDate":"2016-12-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2019-04-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-12-21"},{"lineNumber":13,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.MainApp;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"chaaaaun"},"content":"import scrolls.elder.testutil.Assert;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class UiPartTest {","lastModifiedDate":"2016-12-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private static final String MISSING_FILE_PATH \u003d \"UiPartTest/missingFile.fxml\";","lastModifiedDate":"2016-12-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private static final String INVALID_FILE_PATH \u003d \"UiPartTest/invalidFile.fxml\";","lastModifiedDate":"2016-12-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final String VALID_FILE_PATH \u003d \"UiPartTest/validFile.fxml\";","lastModifiedDate":"2016-12-21"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final String VALID_FILE_WITH_FX_ROOT_PATH \u003d \"UiPartTest/validFileWithFxRoot.fxml\";","lastModifiedDate":"2017-11-29"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final TestFxmlObject VALID_FILE_ROOT \u003d new TestFxmlObject(\"Hello World!\");","lastModifiedDate":"2016-12-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public Path testFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public void constructor_nullFileUrl_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":29,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e new TestUiPart\u003cObject\u003e((URL) null));","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e new TestUiPart\u003cObject\u003e((URL) null, new Object()));","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public void constructor_missingFileUrl_throwsAssertionError() throws Exception {","lastModifiedDate":"2016-12-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" URL missingFileUrl \u003d new URL(testFolder.toUri().toURL(), MISSING_FILE_PATH);","lastModifiedDate":"2019-04-25"},{"lineNumber":36,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(AssertionError.class, () -\u003e new TestUiPart\u003cObject\u003e(missingFileUrl));","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(AssertionError.class, () -\u003e new TestUiPart\u003cObject\u003e(missingFileUrl, new Object()));","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public void constructor_invalidFileUrl_throwsAssertionError() {","lastModifiedDate":"2016-12-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" URL invalidFileUrl \u003d getTestFileUrl(INVALID_FILE_PATH);","lastModifiedDate":"2016-12-21"},{"lineNumber":43,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(AssertionError.class, () -\u003e new TestUiPart\u003cObject\u003e(invalidFileUrl));","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(AssertionError.class, () -\u003e new TestUiPart\u003cObject\u003e(invalidFileUrl, new Object()));","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-21"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-21"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void constructor_validFileUrl_loadsFile() {","lastModifiedDate":"2016-12-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":" URL validFileUrl \u003d getTestFileUrl(VALID_FILE_PATH);","lastModifiedDate":"2016-12-21"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertEquals(VALID_FILE_ROOT, new TestUiPart\u003cTestFxmlObject\u003e(validFileUrl).getRoot());","lastModifiedDate":"2016-12-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-21"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-11-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void constructor_validFileWithFxRootUrl_loadsFile() {","lastModifiedDate":"2017-11-29"},{"lineNumber":55,"author":{"gitId":"-"},"content":" URL validFileUrl \u003d getTestFileUrl(VALID_FILE_WITH_FX_ROOT_PATH);","lastModifiedDate":"2017-11-29"},{"lineNumber":56,"author":{"gitId":"-"},"content":" TestFxmlObject root \u003d new TestFxmlObject();","lastModifiedDate":"2017-11-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertEquals(VALID_FILE_ROOT, new TestUiPart\u003cTestFxmlObject\u003e(validFileUrl, root).getRoot());","lastModifiedDate":"2017-11-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-11-29"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-11-29"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-21"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void constructor_nullFileName_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":62,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e new TestUiPart\u003cObject\u003e((String) null));","lastModifiedDate":"2024-03-12"},{"lineNumber":63,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e new TestUiPart\u003cObject\u003e((String) null, new Object()));","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void constructor_missingFileName_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":68,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e new TestUiPart\u003cObject\u003e(MISSING_FILE_PATH));","lastModifiedDate":"2024-03-12"},{"lineNumber":69,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e new TestUiPart\u003cObject\u003e(MISSING_FILE_PATH, new Object()));","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-21"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-21"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void constructor_invalidFileName_throwsAssertionError() {","lastModifiedDate":"2016-12-21"},{"lineNumber":74,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(AssertionError.class, () -\u003e new TestUiPart\u003cObject\u003e(INVALID_FILE_PATH));","lastModifiedDate":"2024-03-12"},{"lineNumber":75,"author":{"gitId":"chaaaaun"},"content":" Assert.assertThrows(AssertionError.class, () -\u003e new TestUiPart\u003cObject\u003e(INVALID_FILE_PATH, new Object()));","lastModifiedDate":"2024-03-12"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-21"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":78,"author":{"gitId":"-"},"content":" private URL getTestFileUrl(String testFilePath) {","lastModifiedDate":"2016-12-21"},{"lineNumber":79,"author":{"gitId":"-"},"content":" String testFilePathInView \u003d \"/view/\" + testFilePath;","lastModifiedDate":"2016-12-21"},{"lineNumber":80,"author":{"gitId":"-"},"content":" URL testFileUrl \u003d MainApp.class.getResource(testFilePathInView);","lastModifiedDate":"2016-12-21"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertNotNull(testFileUrl, testFilePathInView + \" does not exist.\");","lastModifiedDate":"2019-03-15"},{"lineNumber":82,"author":{"gitId":"-"},"content":" return testFileUrl;","lastModifiedDate":"2016-12-21"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-21"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-21"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * UiPart used for testing.","lastModifiedDate":"2016-12-21"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * It should only be used with invalid FXML files or the valid file located at {@link VALID_FILE_PATH}.","lastModifiedDate":"2016-12-21"},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-21"},{"lineNumber":89,"author":{"gitId":"-"},"content":" private static class TestUiPart\u003cT\u003e extends UiPart\u003cT\u003e {","lastModifiedDate":"2016-12-21"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-12-21"},{"lineNumber":92,"author":{"gitId":"-"},"content":" private TestFxmlObject validFileRoot; // Check that @FXML annotations work","lastModifiedDate":"2016-12-21"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":94,"author":{"gitId":"-"},"content":" TestUiPart(URL fxmlFileUrl, T root) {","lastModifiedDate":"2017-11-29"},{"lineNumber":95,"author":{"gitId":"-"},"content":" super(fxmlFileUrl, root);","lastModifiedDate":"2017-11-29"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-11-29"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-11-29"},{"lineNumber":98,"author":{"gitId":"-"},"content":" TestUiPart(String fxmlFileName, T root) {","lastModifiedDate":"2017-11-29"},{"lineNumber":99,"author":{"gitId":"-"},"content":" super(fxmlFileName, root);","lastModifiedDate":"2017-11-29"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-11-29"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-11-29"},{"lineNumber":102,"author":{"gitId":"-"},"content":" TestUiPart(URL fxmlFileUrl) {","lastModifiedDate":"2016-12-21"},{"lineNumber":103,"author":{"gitId":"-"},"content":" super(fxmlFileUrl);","lastModifiedDate":"2016-12-21"},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertEquals(VALID_FILE_ROOT, validFileRoot);","lastModifiedDate":"2016-12-21"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-21"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":107,"author":{"gitId":"-"},"content":" TestUiPart(String fxmlFileName) {","lastModifiedDate":"2016-12-21"},{"lineNumber":108,"author":{"gitId":"-"},"content":" super(fxmlFileName);","lastModifiedDate":"2016-12-21"},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertEquals(VALID_FILE_ROOT, validFileRoot);","lastModifiedDate":"2016-12-21"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-21"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-21"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":114,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-21"}],"authorContributionMap":{"chaaaaun":15,"-":99}},{"path":"src/test/resources/view/UiPartTest/validFile.fxml","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-12-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":3,"author":{"gitId":"chaaaaun"},"content":"\u003c?import scrolls.elder.ui.TestFxmlObject?\u003e","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003cTestFxmlObject xmlns:fx\u003d\"http://javafx.com/fxml/1\" fx:id\u003d\"validFileRoot\"\u003eHello World!\u003c/TestFxmlObject\u003e","lastModifiedDate":"2016-12-21"}],"authorContributionMap":{"chaaaaun":1,"-":3}},{"path":"src/test/resources/view/UiPartTest/validFileWithFxRoot.fxml","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-11-29"},{"lineNumber":3,"author":{"gitId":"chaaaaun"},"content":"\u003c?import scrolls.elder.ui.TestFxmlObject?\u003e","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"chaaaaun"},"content":"\u003cfx:root type\u003d\"TestFxmlObject\" xmlns\u003d\"http://javafx.com/javafx/17\"","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-07-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":" \u003ctext\u003eHello World!\u003c/text\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-11-29"}],"authorContributionMap":{"chaaaaun":2,"-":5}}] diff --git a/AY2324S2-CS2103T-T09-3_tp_master/commits.json b/AY2324S2-CS2103T-T09-3_tp_master/commits.json index be36a178..04612b6f 100644 --- a/AY2324S2-CS2103T-T09-3_tp_master/commits.json +++ b/AY2324S2-CS2103T-T09-3_tp_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"CJerrong":[{"date":"2024-03-03","commitResults":[{"hash":"f02a2d0a5a07e38187cd8610f434e5f725149154","isMergeCommit":false,"messageTitle":"Update About Us and Ui picture","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":49,"deletions":4}}},{"hash":"10f00743a291067923878451680da624629e54b2","isMergeCommit":true,"messageTitle":"Merge pull request #4 from gerteck/branch-UpdateDocs","messageBody":"Update project website","fileTypesAndContributionMap":{}},{"hash":"87a88394c57f15b83f341bcb6f851994633ddf41","isMergeCommit":false,"messageTitle":"Update use cases section in Developer Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":108,"deletions":12}}}]},{"date":"2024-03-05","commitResults":[{"hash":"036d5756497fd26a93719f2fc87f26408e5e142a","isMergeCommit":true,"messageTitle":"Merge pull request #24 from gerteck/update-DeveloperGuide","messageBody":"Update developer guide","fileTypesAndContributionMap":{}},{"hash":"2e43482ada9763b400f42e09929db70c6522c2b7","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into edit-developer-guide","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"49c9b121c9d8b2dd4a67704315348e0732ce38d0","isMergeCommit":true,"messageTitle":"Merge pull request #22 from sdevih/edit-developer-guide","messageBody":"Update use cases section for pair and tag in Developer Guide","fileTypesAndContributionMap":{}}]},{"date":"2024-03-14","commitResults":[{"hash":"43708cccf515f1bb1647319bba87bafdfd00b486","isMergeCommit":false,"messageTitle":"Add Volunteer and Befriendee class, and make Person abstract class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":82,"deletions":6}}}]},{"date":"2024-03-15","commitResults":[{"hash":"aa8de64fc9693f0387aab98f0ee938eeea4eab92","isMergeCommit":false,"messageTitle":"Refactor edit command to adhere to volunteer and befriendee classes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":37,"deletions":12}}},{"hash":"8116487a5b36fcaf6a6760cd441750e69b439e7c","isMergeCommit":false,"messageTitle":"Refactor tests to work for volunteer and befriendee classes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":35,"deletions":18},"test-code":{"insertions":36,"deletions":12}}},{"hash":"a94ddd94d7ab9845dac6fd296537936dec03e0d1","isMergeCommit":false,"messageTitle":"Refactor Edit command and edit command test to run with volunteer and befriendee","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":3},"test-code":{"insertions":3,"deletions":2}}},{"hash":"e4edfac72efc8edf9ea8427ef128c7ecca51b451","isMergeCommit":false,"messageTitle":"Refactor import statements in JsonAdaptedPerson","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":1}}},{"hash":"a32698a1ed04e171f2a0541050ea7efa262d3eee","isMergeCommit":false,"messageTitle":"Refactor import statements in JsonAdaptedPersons","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":108,"deletions":108}}},{"hash":"a87e5e0e9abedf4d6221bb2a40172ae767de63a4","isMergeCommit":false,"messageTitle":"Refactor code base to comply with checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":32,"deletions":11},"test-code":{"insertions":10,"deletions":1}}},{"hash":"b294c32a23edc9c136a6ff1ec02645bae94870d9","isMergeCommit":false,"messageTitle":"Refactor Edit command toString method","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":2},"test-code":{"insertions":2,"deletions":1}}},{"hash":"233fc776b119b719ebc2191f182597d2edcbf0e8","isMergeCommit":false,"messageTitle":"Refactor UserGuide to adhere to adding volunteers and befriendees","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":19,"deletions":6}}},{"hash":"23bd26ee9946aecaafffb0709e58f2f2cb8f1fbe","isMergeCommit":true,"messageTitle":"Merge pull request #37 from soons1/update-DG","messageBody":"Update DeveloperGuide.md","fileTypesAndContributionMap":{}},{"hash":"5619bd2844f3edfe93994940cbdaeb6aab46cec6","isMergeCommit":true,"messageTitle":"Merge pull request #35 from gerteck/branch-v1.2.1","messageBody":"Change AddCommandParser to support r/ for role","fileTypesAndContributionMap":{}}]},{"date":"2024-03-20","commitResults":[{"hash":"b855189bf68d5d39f827c9a20c0b9b05b55bcf1e","isMergeCommit":false,"messageTitle":"Refactor GUI to have split view for volunteers and befriendees","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":155,"deletions":95},"test-code":{"insertions":10,"deletions":0}}},{"hash":"e754e8da3f2fa22fc0ab47b0f005c267d00b9c4c","isMergeCommit":false,"messageTitle":"Fix line endings","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":82,"deletions":82}}}]},{"date":"2024-03-21","commitResults":[{"hash":"0ab47fdebb7060a3a531079df0016cfd99da4945","isMergeCommit":false,"messageTitle":"Edit GUI to be split in the middle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"60f81b99a8d1f6141d249e98fa39e634a2e945af","isMergeCommit":false,"messageTitle":"Edit UML diagrams for UiClassDiagram and BetterModelClassDiagram","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":1}}},{"hash":"61f502a57ba6239dc8334656fb8756e4d2d4ee02","isMergeCommit":true,"messageTitle":"Merge pull request #57 from chaaaaun/jiaen/fix-bugs","messageBody":"Fix pairing and indexing issues","fileTypesAndContributionMap":{}},{"hash":"af0b1431ebe29f31826aac1d74e10ecbc998b641","isMergeCommit":false,"messageTitle":"Update test cases for pair and unpair","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":14,"deletions":33}}},{"hash":"2e15f7befdf34ef21abd598ca42b7d2ebec5d297","isMergeCommit":false,"messageTitle":"Refactor edit command to update paired with name","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":57,"deletions":3}}}]},{"date":"2024-03-22","commitResults":[{"hash":"b3ca07d3ca5d018b96247610a6b91d938276f13f","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into refactor-editCommand","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"7d9bdd4464c9b7d57ba3c5c66107cc523f34c8d8","isMergeCommit":false,"messageTitle":"Refactor Person to include pairedWithID for ease of finding paired with partner","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":90,"deletions":62},"test-code":{"insertions":51,"deletions":29}}},{"hash":"6a3be8eedc4060abe3ec7f74029c7c04fe44ced0","isMergeCommit":false,"messageTitle":"Update test cases for pair command","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":9,"deletions":7}}},{"hash":"39e050857ae5fe6329e16c9048522be05d4a2278","isMergeCommit":false,"messageTitle":"Refactor pairCommandTest to include new methods withPairedWithName","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":8,"deletions":6}}}]}],"soons1":[{"date":"2024-03-03","commitResults":[{"hash":"f30a8776b5ab4601fbded68924fe3fbce13d53e8","isMergeCommit":false,"messageTitle":"Update AboutUs.md to include new member details","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":51,"deletions":5}}},{"hash":"887a3e23657ba330e0aa680622b9f1795074135c","isMergeCommit":true,"messageTitle":"Merge pull request #13 from soons1/update-AboutUs","messageBody":"Update AboutUs.md to include new member details","fileTypesAndContributionMap":{}},{"hash":"1c19335afba800f27b40dffe6239ce018f0187d9","isMergeCommit":true,"messageTitle":"Merge pull request #14 from sdevih/add-sdevih-info","messageBody":"Update AboutUs and portfolio","fileTypesAndContributionMap":{}},{"hash":"8507674b9c29274ef3c50dd308b4856186617b9b","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md to include user stories and glossary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":19,"deletions":10}}}]},{"date":"2024-03-15","commitResults":[{"hash":"454bf404d0236e81f50de18f2d459e122d8715ee","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md to reflect new glossary terms and edit NFR","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}}]},{"date":"2024-03-16","commitResults":[{"hash":"de4b6600260657b2086276e0e4b5849afca26531","isMergeCommit":true,"messageTitle":"Merge pull request #40 from gerteck/branch-v1.2.2","messageBody":"Branch v1.2.2","fileTypesAndContributionMap":{}}]},{"date":"2024-03-17","commitResults":[{"hash":"42d304cee6e60c2fb568a840c12a88965e8c51ce","isMergeCommit":true,"messageTitle":"Merge pull request #41 from chaaaaun/add-uid","messageBody":"Switch to use global unique ID for all contacts","fileTypesAndContributionMap":{}},{"hash":"3efb2556f768d39e6b7392f604ddfe89a834007b","isMergeCommit":false,"messageTitle":"Add pairedWith attribute to Person object","messageBody":"The attribute is of type Person and is instantiated as null in the constructor\n","fileTypesAndContributionMap":{"functional-code":{"insertions":20,"deletions":4}}}]},{"date":"2024-03-18","commitResults":[{"hash":"56598c791a81d47412023f686944b780c9e0acc3","isMergeCommit":false,"messageTitle":"Fix equals method in Person, Volunteer and Befriendee","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":3},"test-code":{"insertions":1,"deletions":1}}},{"hash":"359951cbb219c6d2f5efbfeed1afb013daf8132a","isMergeCommit":false,"messageTitle":"Update Javadoc in Person","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":0},"test-code":{"insertions":11,"deletions":0}}},{"hash":"263eea092fe3c2212b91303c2ed2bfaa4324363e","isMergeCommit":false,"messageTitle":"Fix checkstyle error in PersonTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":1}}},{"hash":"db1a884e7d3aea08fb9340b0a74608f756df8e7b","isMergeCommit":true,"messageTitle":"Merge pull request #43 from soons1/create-PairCommand","messageBody":"Add pairedWith attribute to Person object","fileTypesAndContributionMap":{}},{"hash":"5c60973ae27c4a13dd84a85041f0801907827cad","isMergeCommit":false,"messageTitle":"Add Pair command functionality","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":145,"deletions":0},"test-code":{"insertions":126,"deletions":0}}}]},{"date":"2024-03-19","commitResults":[{"hash":"9e0e42437b013dfd8f4ad12be1b5b71c1e8a4e0b","isMergeCommit":false,"messageTitle":"Fix test case in PairCommand polluting JSON data","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":7,"deletions":4}}},{"hash":"93da4e7face6d61e0ae72c52011c3df45bceb46b","isMergeCommit":false,"messageTitle":"Update pairedWith attribute in Person to be Optional\u003cInteger\u003e","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":27},"test-code":{"insertions":9,"deletions":13}}}]},{"date":"2024-03-20","commitResults":[{"hash":"f007d315a7783807eda7d2ffa8e1470afbfdec2f","isMergeCommit":true,"messageTitle":"Merge pull request #47 from CJerrong/branch-splitList","messageBody":"Refactor GUI to have split view for volunteers and befriendees","fileTypesAndContributionMap":{}},{"hash":"db7dc073defab3c8dfb00fe9d7cd2874ff8de690","isMergeCommit":false,"messageTitle":"Add GUI label for pairedWith attribute","messageBody":"Fix PairCommandTest testcase and update pairedWith attribute to Optional\u003cName\u003e\n","fileTypesAndContributionMap":{"functional-code":{"insertions":30,"deletions":8},"test-code":{"insertions":31,"deletions":10}}},{"hash":"7a0caf5b690083747fa14a7c3a52d639bd038f9f","isMergeCommit":false,"messageTitle":"Fix build errors by removing testcases, fix at later date","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":10}}}]},{"date":"2024-03-22","commitResults":[{"hash":"5682fd35602bdec8fb6c9439e0a5d5a57ead35bd","isMergeCommit":false,"messageTitle":"Fix 3 testcases in EditCommandTest, 4 TODO","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":4,"deletions":2}}},{"hash":"548290b2273e5c163d6691242a48f3fc3bb7fc0c","isMergeCommit":false,"messageTitle":"Update UML diagrams to reflect added attributes","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":1}}},{"hash":"e42273e17dddbbd710bdc144f3c7ab6472f79bc1","isMergeCommit":false,"messageTitle":"Fix edit and pair testcases; todo 1 duplicatePerson testcase in edit","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3},"test-code":{"insertions":27,"deletions":20}}},{"hash":"57fe588696b0ad235fa5f06080336cc4963452a9","isMergeCommit":false,"messageTitle":"Fix testcase name in EditCommandTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"395fbf407acfbc4308baa6d416df79ed58dda1ac","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into fix-EditTest","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a3f947008a3a0a8ecd28cabfbb083df2c1e606c5","isMergeCommit":false,"messageTitle":"Fix run-checks errors in view and DG","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"docs":{"insertions":13,"deletions":13}}},{"hash":"584ce7c285dccb3a53775d10db47cb1255001e47","isMergeCommit":false,"messageTitle":"Add UnpairCommandParserTest and remove redundant duplicate person test in EditCommandTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":28,"deletions":11}}},{"hash":"59fd570752f922b524a248d42eb9417497cc9909","isMergeCommit":false,"messageTitle":"Fix checkstyle issue on unused import","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":1}}},{"hash":"149b4d2ce6650b6d300530c24d1b440bdd195861","isMergeCommit":true,"messageTitle":"Merge pull request #69 from soons1/fix-EditTest","messageBody":"Fix testcases in EditCommandTest and PairCommandTest","fileTypesAndContributionMap":{}}]}],"gerteck":[{"date":"2024-03-03","commitResults":[{"hash":"4037cfb19be6fc1c05521acbc21532b169d99e0d","isMergeCommit":false,"messageTitle":"Update project website","messageBody":"Update profile photo and name for AboutUs page.\nAlso updated site-wide settings, including in index.md and *.scss, to reflect project name.\n","fileTypesAndContributionMap":{"docs":{"insertions":56,"deletions":9}}},{"hash":"21a31a148d5d7f2ac6f0a6e953c077ea22ef5476","isMergeCommit":false,"messageTitle":"Update docs to add newline","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-04","commitResults":[{"hash":"b4d260c6e370941825c7806ce53aa7045f751d26","isMergeCommit":true,"messageTitle":"Merge pull request #21 from soons1/update-DeveloperGuide","messageBody":"Update DeveloperGuide.md to include user stories and glossary","fileTypesAndContributionMap":{}},{"hash":"1b75f60bfb23139d88faf6f59206180e4f02b7fa","isMergeCommit":false,"messageTitle":"Update user stories in Developer Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":18,"deletions":15}}},{"hash":"86c2e50996ef832c48a59a3a40a07cdd0de91a6f","isMergeCommit":false,"messageTitle":"Edit Docs title from AB3 to Elder Scrolls","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":1}}}]},{"date":"2024-03-14","commitResults":[{"hash":"be46d3a2156142a9e45d15de25a61d6eca380f7e","isMergeCommit":true,"messageTitle":"Merge pull request #29 from chaaaaun/refactor-branding","messageBody":"Refactor package name and related branding","fileTypesAndContributionMap":{}},{"hash":"e1cb19958fa7ff1409d3115853dab3f52879b556","isMergeCommit":false,"messageTitle":"Add new prefixes for Volunteer \u0026 Befriendee","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":49,"deletions":6}}}]},{"date":"2024-03-15","commitResults":[{"hash":"df0b97fb0a291b03cd2cf1f38b4e8e12194b0598","isMergeCommit":false,"messageTitle":"Add support to pass Tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":22,"deletions":5}}},{"hash":"d7fea625a34af4532abbe86a8d952335e9fbdca6","isMergeCommit":true,"messageTitle":"Merge pull request #32 from CJerrong/branch-addVolunteer","messageBody":"Add volunteer and befriendee classes, refactor code base to work with abstract Persons class","fileTypesAndContributionMap":{}},{"hash":"39d87d8e6ed73b3d62ff35b98ee80ec9106085bf","isMergeCommit":true,"messageTitle":"Merge pull request #31 from gerteck/branch-v1.2","messageBody":"Modify Parser to support adding befriendee (elderly) \u0026 Volunteer Persons","fileTypesAndContributionMap":{}},{"hash":"6e9672a0d0b362890de94f5fb5aabfc60628106d","isMergeCommit":false,"messageTitle":"Change AddCommandParser to support r/ for role","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":26,"deletions":50}}},{"hash":"40cefb67b688bf9e2702e0d58b8d4f8a69b01602","isMergeCommit":false,"messageTitle":"Add Role in Persons Model","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":110,"deletions":31},"test-code":{"insertions":65,"deletions":48}}},{"hash":"4c615ee031efffde4306f11e3960ede04a7cf40c","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-v1.2.1","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"8572b17d071d023c7b95a421b1ec4f923c36049b","isMergeCommit":true,"messageTitle":"Merge pull request #34 from CJerrong/branch-updateUG","messageBody":"Refactor UserGuide to adhere to adding volunteers and befriendees","fileTypesAndContributionMap":{}},{"hash":"0fd05bc97734cca847dc56244a703fbad80ddaf5","isMergeCommit":false,"messageTitle":"Refactor Code to pass checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4},"test-code":{"insertions":8,"deletions":5}}}]},{"date":"2024-03-16","commitResults":[{"hash":"350684679dfa1f4b61bd8013dd78c77f1a27ab8a","isMergeCommit":false,"messageTitle":"Fix testcases regarding Command Parsing Logic","messageBody":"Adapted testcases to account for new Role class in Person Model\nEdited AddCommand, EditCommand testcases accordingly.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":50,"deletions":49},"test-code":{"insertions":70,"deletions":32}}},{"hash":"13cb58873998cf15112150294779df235b91e8a1","isMergeCommit":false,"messageTitle":"Fix testcases regarding Storage Component","messageBody":"Adapted testcases to account for new Role class in Storage Model\nEdited All Storage Tests accordingly.\nIn particular, also edited test/data/*Test/.json files\n","fileTypesAndContributionMap":{"functional-code":{"insertions":26,"deletions":9},"test-code":{"insertions":45,"deletions":10}}},{"hash":"b499baf3fc89819b0b100983cf42c4e164df4553","isMergeCommit":false,"messageTitle":"Refactor code to pass Checkstyle Checks","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":21,"deletions":5},"test-code":{"insertions":17,"deletions":6}}}]},{"date":"2024-03-21","commitResults":[{"hash":"16b7daa4d22a2198b30b73e1a15b5ff4a510c1de","isMergeCommit":true,"messageTitle":"Merge pull request #48 from soons1/display-PairGUI","messageBody":"Add GUI label for pairedWith attribute","fileTypesAndContributionMap":{}},{"hash":"8b0fc023c9e650fa7afeae4148567986ffd58840","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-deleteContacts","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"e7026fc51d119bb27a91fdf259147728983deecc","isMergeCommit":false,"messageTitle":"Fix \u0027}\u0027 typo when resolving merge conflict","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0}}},{"hash":"18cf9239c314f84e5c3c2eb7ac867aed695cb07c","isMergeCommit":true,"messageTitle":"Merge pull request #46 from sdevih/branch-deleteContacts","messageBody":"Add updated delete command","fileTypesAndContributionMap":{}},{"hash":"8ccf4f26e941f83fea6d1c6db8ccfb9bd17534b4","isMergeCommit":false,"messageTitle":"Update ModelClassDiagram puml","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":16,"deletions":1}}},{"hash":"be8221003fa6e5d61a73a8cb602b6b65ed92530b","isMergeCommit":true,"messageTitle":"Merge pull request #53 from gerteck/branch-UpdateUML","messageBody":"Update ModelClassDiagram puml","fileTypesAndContributionMap":{}},{"hash":"7e13d7b54f012b4cf9d4f13bda9659acc2e2a51c","isMergeCommit":true,"messageTitle":"Merge pull request #54 from CJerrong/branch-uml-diagram","messageBody":"Edit uml diagram","fileTypesAndContributionMap":{}},{"hash":"005d6255f54d4a5a8320a3c889bca10229a43afa","isMergeCommit":false,"messageTitle":"Make Pair and Unpair Command immutable","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":95,"deletions":12}}},{"hash":"f4c2cd34ce6066c6de773f18e2f2c3b52e7b6d43","isMergeCommit":false,"messageTitle":"Change Import from * to List all imports","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":2}}},{"hash":"bee8be9037d5bc6defab3a1048d7c54548f5bd11","isMergeCommit":false,"messageTitle":"Make Optional\u003cName\u003e pairedWith field in Persons final","messageBody":"Removed setter pairedWith method.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":37,"deletions":41},"test-code":{"insertions":2,"deletions":5}}},{"hash":"00448a20222882e7ac18e0681759bf063e906109","isMergeCommit":true,"messageTitle":"Merge pull request #62 from gerteck/branch-makePairUnpairImmutable","messageBody":"Make Pair and Unpair Command immutable","tags":["v1.2"],"fileTypesAndContributionMap":{}}]},{"date":"2024-03-22","commitResults":[{"hash":"9c5edebded9d08c0692b475172151a9c70550d80","isMergeCommit":true,"messageTitle":"Merge pull request #66 from sdevih/branch-UMLDiagrams","messageBody":"Update UML diagrams for delete command","fileTypesAndContributionMap":{}},{"hash":"1ac0628cfe5c73a3bffffb5fe4063a87eebd8bfa","isMergeCommit":true,"messageTitle":"Merge pull request #65 from soons1/update-UML","messageBody":"Update UML diagrams to reflect added attributes","fileTypesAndContributionMap":{}},{"hash":"75ec978f18e1ace9956d8376eccdc2b941200c89","isMergeCommit":true,"messageTitle":"Merge pull request #63 from chaaaaun/jiaen/fix-pair-test","messageBody":"Fix pair command tests","fileTypesAndContributionMap":{}},{"hash":"6365a76ffbe613139ea7d8ebff7d0fbae0376ecd","isMergeCommit":true,"messageTitle":"Merge pull request #64 from soons1/testing_v1","messageBody":"Fix 3 testcases in EditCommandTest","fileTypesAndContributionMap":{}},{"hash":"59ad1f898a9a88d2d2433bc420a4a4304601d3f5","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into refactor-editCommand","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"86874c9a9dde8ccc57d17fe005e1a421c54a4368","isMergeCommit":true,"messageTitle":"Merge pull request #67 from CJerrong/refactor-editCommand","messageBody":"Refactor edit command","fileTypesAndContributionMap":{}},{"hash":"394156ecf82fa73e3985d27f579d3fd37cfdecf1","isMergeCommit":true,"messageTitle":"Merge pull request #68 from CJerrong/refactor-pairCommandTest","messageBody":"Refactor pairCommandTest to include new methods withPairedWithName","fileTypesAndContributionMap":{}}]}],"chaaaaun":[{"date":"2024-03-03","commitResults":[{"hash":"307c8ac74efeb23293c311c2bec4b30ae3c4c492","isMergeCommit":true,"messageTitle":"Merge pull request #6 from CJerrong/branch-update-aboutUs","messageBody":"Update AboutUs and Ui picture","fileTypesAndContributionMap":{}},{"hash":"4e413ba0160af9d4ed62161fa60412d2287ad030","isMergeCommit":false,"messageTitle":"Update AboutUs.md and portfolio","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":6}}},{"hash":"80e49bc8be7a333cecdb1f0833812631172f0412","isMergeCommit":false,"messageTitle":"Update repo readme","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":10}}},{"hash":"794d33e59a811ac749585ec0e3eb9594bd466616","isMergeCommit":false,"messageTitle":"Update image name and developer guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":15,"deletions":10}}}]},{"date":"2024-03-05","commitResults":[{"hash":"9bd0f7da53de82966e0c024775503d3ddf4d9271","isMergeCommit":true,"messageTitle":"Merge pull request #17 from chaaaaun/jiaen/update-dg","messageBody":"Update non functional requirements and product scope section in Developer Guide","fileTypesAndContributionMap":{}}]},{"date":"2024-03-12","commitResults":[{"hash":"eb6792586c86e80f5bfeedbb59f691c692c49d2f","isMergeCommit":false,"messageTitle":"Change package name to scrolls.elder and cosmetic changes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":12},"other":{"insertions":885,"deletions":878},"docs":{"insertions":9,"deletions":9},"test-code":{"insertions":963,"deletions":967}}}]},{"date":"2024-03-15","commitResults":[{"hash":"25c3798a23dd43e00e774cc95e60e28fffb1a141","isMergeCommit":true,"messageTitle":"Merge pull request #33 from sdevih/edit-developer-guide","messageBody":"Update developer guide","fileTypesAndContributionMap":{}}]},{"date":"2024-03-17","commitResults":[{"hash":"385c2761fcf494f2c99ab0bd84a67138469fad7d","isMergeCommit":false,"messageTitle":"Switch to use global ID for all contacts","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":66,"deletions":19},"test-code":{"insertions":83,"deletions":69}}}]},{"date":"2024-03-21","commitResults":[{"hash":"dc354222f319c6f563686780da51ac5c0a28e20f","isMergeCommit":true,"messageTitle":"Merge pull request #56 from sdevih/branch-unpairCommand","messageBody":"Add unpair command","fileTypesAndContributionMap":{}},{"hash":"30866660a05517efe3cb65f5453f6a0471912bae","isMergeCommit":false,"messageTitle":"Revert to displaying by list index","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}},{"hash":"39e2d623917c183fd3a2b11d78313c13a054419f","isMergeCommit":false,"messageTitle":"Fix pairing by index for split lists","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":11},"test-code":{"insertions":3,"deletions":6}}},{"hash":"f44409bcad14dd8e443d6b84bc6925c3b1cca0fa","isMergeCommit":false,"messageTitle":"Add labels to the split lists","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":3}}},{"hash":"17738f71b40c4aba1926583c302b5b79e871f543","isMergeCommit":false,"messageTitle":"Persist pair data","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":8}}},{"hash":"5ae15f914780880fa5a38a263c5d9ff4b1ad375c","isMergeCommit":false,"messageTitle":"Update commands to use split list indexing","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":67,"deletions":53}}},{"hash":"052350c2d6ce3bf803f89059e2d931db76c4156b","isMergeCommit":false,"messageTitle":"Update delete command to use split list indexing","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":27,"deletions":5},"test-code":{"insertions":42,"deletions":27}}}]},{"date":"2024-03-22","commitResults":[{"hash":"f434f42f756072e6ace518e66dc4dd1f503eae41","isMergeCommit":false,"messageTitle":"Fix paired command test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":21,"deletions":19}}}]}],"sdevih":[{"date":"2024-03-03","commitResults":[{"hash":"a518631380a29797b3e1790b72a242ffdb8963e7","isMergeCommit":false,"messageTitle":"Update AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":49,"deletions":3}}},{"hash":"4e6a0af24a3912f3c38e1ad4ddd959f9a492ad5a","isMergeCommit":true,"messageTitle":"Merge pull request #7 from chaaaaun/jiaen/update-aboutus","messageBody":"Update AboutUs.md and portfolio","fileTypesAndContributionMap":{}},{"hash":"4aa1f86865e42cb00ea4ac76c8ea541f774b1322","isMergeCommit":false,"messageTitle":"Update use cases in Developer Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":37,"deletions":9}}}]},{"date":"2024-03-05","commitResults":[{"hash":"40646631cc1c9bcab0a2cbc1f1d0734ad82740fa","isMergeCommit":true,"messageTitle":"Merge pull request #18 from CJerrong/branch-dev-guide","messageBody":"Update use cases section for add, delete and view list in Developer Guide","fileTypesAndContributionMap":{}}]},{"date":"2024-03-15","commitResults":[{"hash":"dacd2dfa4b67ed289fec8cb0714e1ef883d1d823","isMergeCommit":false,"messageTitle":"Update developer guide","messageBody":"Use cases are enumerated for easier inclusions in other use cases.\n\nInclusions are utilised in the use cases for pairing and tagging\ncontacts to minimise low-level steps. The use case for listing all\ncontacts is also used in many other use cases, includign pairing and\ntagging.\n\nSpecific details are added to error messages in the use cases for pairing\nand tagging to better understand what the error is.\n","fileTypesAndContributionMap":{"docs":{"insertions":23,"deletions":24}}}]},{"date":"2024-03-19","commitResults":[{"hash":"7c0dedce69641e1192d0c82c914128f09af774c3","isMergeCommit":true,"messageTitle":"Merge pull request #44 from soons1/create-PairCommand","messageBody":"Add Pair command functionality","fileTypesAndContributionMap":{}},{"hash":"c5a44a918966f832384ab2d33c428c620e5870fb","isMergeCommit":false,"messageTitle":"Add updated delete command","messageBody":"The delete command does not consider the pairedWith attribute.\n\nLet\u0027s ensure that the delete command throws an exception when a paired\ncontact is to be deleted.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":19,"deletions":2}}}]},{"date":"2024-03-20","commitResults":[{"hash":"f948e21ecba87537102a71ab89020d07e0bc5e60","isMergeCommit":false,"messageTitle":"Add alternate keywords for delete","messageBody":"The command only uses delete as the command keyword to execute the\ncommand.\n\nLet\u0027s add more alternate keywords del, rm, remove which can also be used\nin place of delete.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":35,"deletions":6}}},{"hash":"e9068b5b29fad432431b8b8a54be28e61dfe813a","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-deleteContacts","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"db569450035a27a7447fa2ece83298df68066de8","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-deleteContacts\u0027 of https://github.com/sdevih/tp into branch-deleteContacts","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"3d953a28f349c667c35cf55b747e189b63679e95","isMergeCommit":false,"messageTitle":"Add test cases for delete command","messageBody":"The delete case do not test the addtional keywords added.\n\nLet\u0027s ensure that the del, rm and remove keywords work as per normal\nwhen executing the delete command.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":7},"test-code":{"insertions":45,"deletions":10}}},{"hash":"85f610d7ba7ebef3cb89146f0bdcc142e4ddca82","isMergeCommit":false,"messageTitle":"Fix checkstyle issue in test","messageBody":"The use of * in import statements was removed for clarity and better\nunderstanding.\n","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":1}}},{"hash":"ed185e462a01caa3fa4e7561f27c47e826f874bd","isMergeCommit":false,"messageTitle":"Add unpair command","messageBody":"The addressbook does not unpair a volunteer and befriendee.\n\nLet\u0027s add a UnpairCommand class to allow unpairing between volunteer and\nbefriendee, which would allow deleting of contacts.\n\nLet\u0027s add test cases to check if the UnpairCommand class works as intended.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":143,"deletions":0},"test-code":{"insertions":115,"deletions":5}}},{"hash":"05ac1ce834aed6139c0f7254bb248afaf34d680e","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-T09-3/tp into branch-unpairCommand","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"2cb960d6f1525fcd271cf08dd1d6f8415392ebe0","isMergeCommit":false,"messageTitle":"Fix test case for unpair","messageBody":"The unpair test case and command is updated to reflect the change from\nuid to name for the pairedWith attribute.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"test-code":{"insertions":4,"deletions":6}}},{"hash":"97be63be13d64d34922ea261d80480ace045c412","isMergeCommit":false,"messageTitle":"Remove comment from UnpairCommnadTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":1}}},{"hash":"733120805e8de12649ae22f10f3d025efb310313","isMergeCommit":false,"messageTitle":"Update storage to include pairedWith attribute","messageBody":"The JsonAdaptedPerson class and test data is updated to store and\nretrieve the pairedWith attribute when the application is run.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":1},"test-code":{"insertions":41,"deletions":30}}},{"hash":"a27870ec8f44cb4f9c2f1a1bef636198715ef870","isMergeCommit":true,"messageTitle":"Merge pull request #59 from CJerrong/branch-edit-pairTest","messageBody":"Update test cases for pair and unpair","fileTypesAndContributionMap":{}},{"hash":"06fcd4031598723c18d0a7fa5ee68d17cbc8f576","isMergeCommit":true,"messageTitle":"Merge pull request #61 from chaaaaun/jiaen/update-delete","messageBody":"Update delete command to use split list indexing","fileTypesAndContributionMap":{}}]},{"date":"2024-03-22","commitResults":[{"hash":"25cbedeb2e02a81779bd26bdbd1e7126d7d041ea","isMergeCommit":false,"messageTitle":"Update UML diagrams for delete","messageBody":"The UML diagrams for ArchitectureSequenceDiagram and\nBetterModelClassDiagram were edited to reflect the changes made to the\narguments passed into the delete command, which now includes role as\nwell.\n","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}}]}]},"authorFileTypeContributionMap":{"CJerrong":{"docs":167,"functional-code":347,"test-code":107},"soons1":{"docs":73,"functional-code":161,"test-code":154},"gerteck":{"docs":77,"functional-code":288,"test-code":166,"other":1},"chaaaaun":{"docs":39,"functional-code":453,"test-code":1473,"other":2},"sdevih":{"docs":99,"functional-code":167,"test-code":144}},"authorContributionVariance":{"CJerrong":15375.857,"soons1":4076.5068,"gerteck":9496.073,"chaaaaun":461627.1,"sdevih":6475.0747},"authorDisplayNameMap":{"CJerrong":"CS2103T-T09-3 CHON..RONG","soons1":"CS2103T-T09-3 SOH .. WEI","gerteck":"CS2103T-T09-3 CHAN..TECK","chaaaaun":"CS2103T-T09-3 TU J..A EN","sdevih":"CS2103T-T09-3 S DE..ITHA"}} +{"authorDailyContributionsMap":{"CJerrong":[{"date":"2024-03-03","commitResults":[{"hash":"f02a2d0a5a07e38187cd8610f434e5f725149154","isMergeCommit":false,"messageTitle":"Update About Us and Ui picture","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":49,"deletions":4}}},{"hash":"10f00743a291067923878451680da624629e54b2","isMergeCommit":true,"messageTitle":"Merge pull request #4 from gerteck/branch-UpdateDocs","messageBody":"Update project website","fileTypesAndContributionMap":{}},{"hash":"87a88394c57f15b83f341bcb6f851994633ddf41","isMergeCommit":false,"messageTitle":"Update use cases section in Developer Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":108,"deletions":12}}}]},{"date":"2024-03-05","commitResults":[{"hash":"036d5756497fd26a93719f2fc87f26408e5e142a","isMergeCommit":true,"messageTitle":"Merge pull request #24 from gerteck/update-DeveloperGuide","messageBody":"Update developer guide","fileTypesAndContributionMap":{}},{"hash":"2e43482ada9763b400f42e09929db70c6522c2b7","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into edit-developer-guide","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"49c9b121c9d8b2dd4a67704315348e0732ce38d0","isMergeCommit":true,"messageTitle":"Merge pull request #22 from sdevih/edit-developer-guide","messageBody":"Update use cases section for pair and tag in Developer Guide","fileTypesAndContributionMap":{}}]},{"date":"2024-03-14","commitResults":[{"hash":"43708cccf515f1bb1647319bba87bafdfd00b486","isMergeCommit":false,"messageTitle":"Add Volunteer and Befriendee class, and make Person abstract class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":82,"deletions":6}}}]},{"date":"2024-03-15","commitResults":[{"hash":"aa8de64fc9693f0387aab98f0ee938eeea4eab92","isMergeCommit":false,"messageTitle":"Refactor edit command to adhere to volunteer and befriendee classes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":37,"deletions":12}}},{"hash":"8116487a5b36fcaf6a6760cd441750e69b439e7c","isMergeCommit":false,"messageTitle":"Refactor tests to work for volunteer and befriendee classes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":35,"deletions":18},"test-code":{"insertions":36,"deletions":12}}},{"hash":"a94ddd94d7ab9845dac6fd296537936dec03e0d1","isMergeCommit":false,"messageTitle":"Refactor Edit command and edit command test to run with volunteer and befriendee","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":3},"test-code":{"insertions":3,"deletions":2}}},{"hash":"e4edfac72efc8edf9ea8427ef128c7ecca51b451","isMergeCommit":false,"messageTitle":"Refactor import statements in JsonAdaptedPerson","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":1}}},{"hash":"a32698a1ed04e171f2a0541050ea7efa262d3eee","isMergeCommit":false,"messageTitle":"Refactor import statements in JsonAdaptedPersons","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":108,"deletions":108}}},{"hash":"a87e5e0e9abedf4d6221bb2a40172ae767de63a4","isMergeCommit":false,"messageTitle":"Refactor code base to comply with checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":32,"deletions":11},"test-code":{"insertions":10,"deletions":1}}},{"hash":"b294c32a23edc9c136a6ff1ec02645bae94870d9","isMergeCommit":false,"messageTitle":"Refactor Edit command toString method","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":2},"test-code":{"insertions":2,"deletions":1}}},{"hash":"233fc776b119b719ebc2191f182597d2edcbf0e8","isMergeCommit":false,"messageTitle":"Refactor UserGuide to adhere to adding volunteers and befriendees","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":19,"deletions":6}}},{"hash":"23bd26ee9946aecaafffb0709e58f2f2cb8f1fbe","isMergeCommit":true,"messageTitle":"Merge pull request #37 from soons1/update-DG","messageBody":"Update DeveloperGuide.md","fileTypesAndContributionMap":{}},{"hash":"5619bd2844f3edfe93994940cbdaeb6aab46cec6","isMergeCommit":true,"messageTitle":"Merge pull request #35 from gerteck/branch-v1.2.1","messageBody":"Change AddCommandParser to support r/ for role","fileTypesAndContributionMap":{}}]},{"date":"2024-03-20","commitResults":[{"hash":"b855189bf68d5d39f827c9a20c0b9b05b55bcf1e","isMergeCommit":false,"messageTitle":"Refactor GUI to have split view for volunteers and befriendees","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":155,"deletions":95},"test-code":{"insertions":10,"deletions":0}}},{"hash":"e754e8da3f2fa22fc0ab47b0f005c267d00b9c4c","isMergeCommit":false,"messageTitle":"Fix line endings","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":82,"deletions":82}}}]},{"date":"2024-03-21","commitResults":[{"hash":"0ab47fdebb7060a3a531079df0016cfd99da4945","isMergeCommit":false,"messageTitle":"Edit GUI to be split in the middle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"60f81b99a8d1f6141d249e98fa39e634a2e945af","isMergeCommit":false,"messageTitle":"Edit UML diagrams for UiClassDiagram and BetterModelClassDiagram","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":1}}},{"hash":"61f502a57ba6239dc8334656fb8756e4d2d4ee02","isMergeCommit":true,"messageTitle":"Merge pull request #57 from chaaaaun/jiaen/fix-bugs","messageBody":"Fix pairing and indexing issues","fileTypesAndContributionMap":{}},{"hash":"af0b1431ebe29f31826aac1d74e10ecbc998b641","isMergeCommit":false,"messageTitle":"Update test cases for pair and unpair","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":14,"deletions":33}}},{"hash":"2e15f7befdf34ef21abd598ca42b7d2ebec5d297","isMergeCommit":false,"messageTitle":"Refactor edit command to update paired with name","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":57,"deletions":3}}}]},{"date":"2024-03-22","commitResults":[{"hash":"b3ca07d3ca5d018b96247610a6b91d938276f13f","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into refactor-editCommand","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"7d9bdd4464c9b7d57ba3c5c66107cc523f34c8d8","isMergeCommit":false,"messageTitle":"Refactor Person to include pairedWithID for ease of finding paired with partner","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":90,"deletions":62},"test-code":{"insertions":51,"deletions":29}}},{"hash":"6a3be8eedc4060abe3ec7f74029c7c04fe44ced0","isMergeCommit":false,"messageTitle":"Update test cases for pair command","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":9,"deletions":7}}},{"hash":"39e050857ae5fe6329e16c9048522be05d4a2278","isMergeCommit":false,"messageTitle":"Refactor pairCommandTest to include new methods withPairedWithName","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":8,"deletions":6}}}]}],"soons1":[{"date":"2024-03-03","commitResults":[{"hash":"f30a8776b5ab4601fbded68924fe3fbce13d53e8","isMergeCommit":false,"messageTitle":"Update AboutUs.md to include new member details","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":51,"deletions":5}}},{"hash":"887a3e23657ba330e0aa680622b9f1795074135c","isMergeCommit":true,"messageTitle":"Merge pull request #13 from soons1/update-AboutUs","messageBody":"Update AboutUs.md to include new member details","fileTypesAndContributionMap":{}},{"hash":"1c19335afba800f27b40dffe6239ce018f0187d9","isMergeCommit":true,"messageTitle":"Merge pull request #14 from sdevih/add-sdevih-info","messageBody":"Update AboutUs and portfolio","fileTypesAndContributionMap":{}},{"hash":"8507674b9c29274ef3c50dd308b4856186617b9b","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md to include user stories and glossary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":19,"deletions":10}}}]},{"date":"2024-03-15","commitResults":[{"hash":"454bf404d0236e81f50de18f2d459e122d8715ee","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md to reflect new glossary terms and edit NFR","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}}]},{"date":"2024-03-16","commitResults":[{"hash":"de4b6600260657b2086276e0e4b5849afca26531","isMergeCommit":true,"messageTitle":"Merge pull request #40 from gerteck/branch-v1.2.2","messageBody":"Branch v1.2.2","fileTypesAndContributionMap":{}}]},{"date":"2024-03-17","commitResults":[{"hash":"42d304cee6e60c2fb568a840c12a88965e8c51ce","isMergeCommit":true,"messageTitle":"Merge pull request #41 from chaaaaun/add-uid","messageBody":"Switch to use global unique ID for all contacts","fileTypesAndContributionMap":{}},{"hash":"3efb2556f768d39e6b7392f604ddfe89a834007b","isMergeCommit":false,"messageTitle":"Add pairedWith attribute to Person object","messageBody":"The attribute is of type Person and is instantiated as null in the constructor\n","fileTypesAndContributionMap":{"functional-code":{"insertions":20,"deletions":4}}}]},{"date":"2024-03-18","commitResults":[{"hash":"56598c791a81d47412023f686944b780c9e0acc3","isMergeCommit":false,"messageTitle":"Fix equals method in Person, Volunteer and Befriendee","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":3},"test-code":{"insertions":1,"deletions":1}}},{"hash":"359951cbb219c6d2f5efbfeed1afb013daf8132a","isMergeCommit":false,"messageTitle":"Update Javadoc in Person","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":0},"test-code":{"insertions":11,"deletions":0}}},{"hash":"263eea092fe3c2212b91303c2ed2bfaa4324363e","isMergeCommit":false,"messageTitle":"Fix checkstyle error in PersonTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":1}}},{"hash":"db1a884e7d3aea08fb9340b0a74608f756df8e7b","isMergeCommit":true,"messageTitle":"Merge pull request #43 from soons1/create-PairCommand","messageBody":"Add pairedWith attribute to Person object","fileTypesAndContributionMap":{}},{"hash":"5c60973ae27c4a13dd84a85041f0801907827cad","isMergeCommit":false,"messageTitle":"Add Pair command functionality","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":145,"deletions":0},"test-code":{"insertions":126,"deletions":0}}}]},{"date":"2024-03-19","commitResults":[{"hash":"9e0e42437b013dfd8f4ad12be1b5b71c1e8a4e0b","isMergeCommit":false,"messageTitle":"Fix test case in PairCommand polluting JSON data","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":7,"deletions":4}}},{"hash":"93da4e7face6d61e0ae72c52011c3df45bceb46b","isMergeCommit":false,"messageTitle":"Update pairedWith attribute in Person to be Optional\u003cInteger\u003e","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":27},"test-code":{"insertions":9,"deletions":13}}}]},{"date":"2024-03-20","commitResults":[{"hash":"f007d315a7783807eda7d2ffa8e1470afbfdec2f","isMergeCommit":true,"messageTitle":"Merge pull request #47 from CJerrong/branch-splitList","messageBody":"Refactor GUI to have split view for volunteers and befriendees","fileTypesAndContributionMap":{}},{"hash":"db7dc073defab3c8dfb00fe9d7cd2874ff8de690","isMergeCommit":false,"messageTitle":"Add GUI label for pairedWith attribute","messageBody":"Fix PairCommandTest testcase and update pairedWith attribute to Optional\u003cName\u003e\n","fileTypesAndContributionMap":{"functional-code":{"insertions":30,"deletions":8},"test-code":{"insertions":31,"deletions":10}}},{"hash":"7a0caf5b690083747fa14a7c3a52d639bd038f9f","isMergeCommit":false,"messageTitle":"Fix build errors by removing testcases, fix at later date","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":10}}}]},{"date":"2024-03-22","commitResults":[{"hash":"5682fd35602bdec8fb6c9439e0a5d5a57ead35bd","isMergeCommit":false,"messageTitle":"Fix 3 testcases in EditCommandTest, 4 TODO","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":4,"deletions":2}}},{"hash":"548290b2273e5c163d6691242a48f3fc3bb7fc0c","isMergeCommit":false,"messageTitle":"Update UML diagrams to reflect added attributes","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":1}}},{"hash":"e42273e17dddbbd710bdc144f3c7ab6472f79bc1","isMergeCommit":false,"messageTitle":"Fix edit and pair testcases; todo 1 duplicatePerson testcase in edit","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3},"test-code":{"insertions":27,"deletions":20}}},{"hash":"57fe588696b0ad235fa5f06080336cc4963452a9","isMergeCommit":false,"messageTitle":"Fix testcase name in EditCommandTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"395fbf407acfbc4308baa6d416df79ed58dda1ac","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into fix-EditTest","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a3f947008a3a0a8ecd28cabfbb083df2c1e606c5","isMergeCommit":false,"messageTitle":"Fix run-checks errors in view and DG","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"docs":{"insertions":13,"deletions":13}}},{"hash":"584ce7c285dccb3a53775d10db47cb1255001e47","isMergeCommit":false,"messageTitle":"Add UnpairCommandParserTest and remove redundant duplicate person test in EditCommandTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":28,"deletions":11}}},{"hash":"59fd570752f922b524a248d42eb9417497cc9909","isMergeCommit":false,"messageTitle":"Fix checkstyle issue on unused import","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":1}}},{"hash":"149b4d2ce6650b6d300530c24d1b440bdd195861","isMergeCommit":true,"messageTitle":"Merge pull request #69 from soons1/fix-EditTest","messageBody":"Fix testcases in EditCommandTest and PairCommandTest","fileTypesAndContributionMap":{}}]}],"gerteck":[{"date":"2024-03-03","commitResults":[{"hash":"4037cfb19be6fc1c05521acbc21532b169d99e0d","isMergeCommit":false,"messageTitle":"Update project website","messageBody":"Update profile photo and name for AboutUs page.\nAlso updated site-wide settings, including in index.md and *.scss, to reflect project name.\n","fileTypesAndContributionMap":{"docs":{"insertions":56,"deletions":9}}},{"hash":"21a31a148d5d7f2ac6f0a6e953c077ea22ef5476","isMergeCommit":false,"messageTitle":"Update docs to add newline","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-04","commitResults":[{"hash":"b4d260c6e370941825c7806ce53aa7045f751d26","isMergeCommit":true,"messageTitle":"Merge pull request #21 from soons1/update-DeveloperGuide","messageBody":"Update DeveloperGuide.md to include user stories and glossary","fileTypesAndContributionMap":{}},{"hash":"1b75f60bfb23139d88faf6f59206180e4f02b7fa","isMergeCommit":false,"messageTitle":"Update user stories in Developer Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":18,"deletions":15}}},{"hash":"86c2e50996ef832c48a59a3a40a07cdd0de91a6f","isMergeCommit":false,"messageTitle":"Edit Docs title from AB3 to Elder Scrolls","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":1}}}]},{"date":"2024-03-14","commitResults":[{"hash":"be46d3a2156142a9e45d15de25a61d6eca380f7e","isMergeCommit":true,"messageTitle":"Merge pull request #29 from chaaaaun/refactor-branding","messageBody":"Refactor package name and related branding","fileTypesAndContributionMap":{}},{"hash":"e1cb19958fa7ff1409d3115853dab3f52879b556","isMergeCommit":false,"messageTitle":"Add new prefixes for Volunteer \u0026 Befriendee","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":49,"deletions":6}}}]},{"date":"2024-03-15","commitResults":[{"hash":"df0b97fb0a291b03cd2cf1f38b4e8e12194b0598","isMergeCommit":false,"messageTitle":"Add support to pass Tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":22,"deletions":5}}},{"hash":"d7fea625a34af4532abbe86a8d952335e9fbdca6","isMergeCommit":true,"messageTitle":"Merge pull request #32 from CJerrong/branch-addVolunteer","messageBody":"Add volunteer and befriendee classes, refactor code base to work with abstract Persons class","fileTypesAndContributionMap":{}},{"hash":"39d87d8e6ed73b3d62ff35b98ee80ec9106085bf","isMergeCommit":true,"messageTitle":"Merge pull request #31 from gerteck/branch-v1.2","messageBody":"Modify Parser to support adding befriendee (elderly) \u0026 Volunteer Persons","fileTypesAndContributionMap":{}},{"hash":"6e9672a0d0b362890de94f5fb5aabfc60628106d","isMergeCommit":false,"messageTitle":"Change AddCommandParser to support r/ for role","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":26,"deletions":50}}},{"hash":"40cefb67b688bf9e2702e0d58b8d4f8a69b01602","isMergeCommit":false,"messageTitle":"Add Role in Persons Model","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":110,"deletions":31},"test-code":{"insertions":65,"deletions":48}}},{"hash":"4c615ee031efffde4306f11e3960ede04a7cf40c","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-v1.2.1","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"8572b17d071d023c7b95a421b1ec4f923c36049b","isMergeCommit":true,"messageTitle":"Merge pull request #34 from CJerrong/branch-updateUG","messageBody":"Refactor UserGuide to adhere to adding volunteers and befriendees","fileTypesAndContributionMap":{}},{"hash":"0fd05bc97734cca847dc56244a703fbad80ddaf5","isMergeCommit":false,"messageTitle":"Refactor Code to pass checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4},"test-code":{"insertions":8,"deletions":5}}}]},{"date":"2024-03-16","commitResults":[{"hash":"350684679dfa1f4b61bd8013dd78c77f1a27ab8a","isMergeCommit":false,"messageTitle":"Fix testcases regarding Command Parsing Logic","messageBody":"Adapted testcases to account for new Role class in Person Model\nEdited AddCommand, EditCommand testcases accordingly.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":50,"deletions":49},"test-code":{"insertions":70,"deletions":32}}},{"hash":"13cb58873998cf15112150294779df235b91e8a1","isMergeCommit":false,"messageTitle":"Fix testcases regarding Storage Component","messageBody":"Adapted testcases to account for new Role class in Storage Model\nEdited All Storage Tests accordingly.\nIn particular, also edited test/data/*Test/.json files\n","fileTypesAndContributionMap":{"functional-code":{"insertions":26,"deletions":9},"test-code":{"insertions":45,"deletions":10}}},{"hash":"b499baf3fc89819b0b100983cf42c4e164df4553","isMergeCommit":false,"messageTitle":"Refactor code to pass Checkstyle Checks","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":21,"deletions":5},"test-code":{"insertions":17,"deletions":6}}}]},{"date":"2024-03-21","commitResults":[{"hash":"16b7daa4d22a2198b30b73e1a15b5ff4a510c1de","isMergeCommit":true,"messageTitle":"Merge pull request #48 from soons1/display-PairGUI","messageBody":"Add GUI label for pairedWith attribute","fileTypesAndContributionMap":{}},{"hash":"8b0fc023c9e650fa7afeae4148567986ffd58840","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-deleteContacts","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"e7026fc51d119bb27a91fdf259147728983deecc","isMergeCommit":false,"messageTitle":"Fix \u0027}\u0027 typo when resolving merge conflict","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0}}},{"hash":"18cf9239c314f84e5c3c2eb7ac867aed695cb07c","isMergeCommit":true,"messageTitle":"Merge pull request #46 from sdevih/branch-deleteContacts","messageBody":"Add updated delete command","fileTypesAndContributionMap":{}},{"hash":"8ccf4f26e941f83fea6d1c6db8ccfb9bd17534b4","isMergeCommit":false,"messageTitle":"Update ModelClassDiagram puml","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":16,"deletions":1}}},{"hash":"be8221003fa6e5d61a73a8cb602b6b65ed92530b","isMergeCommit":true,"messageTitle":"Merge pull request #53 from gerteck/branch-UpdateUML","messageBody":"Update ModelClassDiagram puml","fileTypesAndContributionMap":{}},{"hash":"7e13d7b54f012b4cf9d4f13bda9659acc2e2a51c","isMergeCommit":true,"messageTitle":"Merge pull request #54 from CJerrong/branch-uml-diagram","messageBody":"Edit uml diagram","fileTypesAndContributionMap":{}},{"hash":"005d6255f54d4a5a8320a3c889bca10229a43afa","isMergeCommit":false,"messageTitle":"Make Pair and Unpair Command immutable","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":95,"deletions":12}}},{"hash":"f4c2cd34ce6066c6de773f18e2f2c3b52e7b6d43","isMergeCommit":false,"messageTitle":"Change Import from * to List all imports","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":2}}},{"hash":"bee8be9037d5bc6defab3a1048d7c54548f5bd11","isMergeCommit":false,"messageTitle":"Make Optional\u003cName\u003e pairedWith field in Persons final","messageBody":"Removed setter pairedWith method.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":37,"deletions":41},"test-code":{"insertions":2,"deletions":5}}},{"hash":"00448a20222882e7ac18e0681759bf063e906109","isMergeCommit":true,"messageTitle":"Merge pull request #62 from gerteck/branch-makePairUnpairImmutable","messageBody":"Make Pair and Unpair Command immutable","tags":["v1.2"],"fileTypesAndContributionMap":{}}]},{"date":"2024-03-22","commitResults":[{"hash":"9c5edebded9d08c0692b475172151a9c70550d80","isMergeCommit":true,"messageTitle":"Merge pull request #66 from sdevih/branch-UMLDiagrams","messageBody":"Update UML diagrams for delete command","fileTypesAndContributionMap":{}},{"hash":"1ac0628cfe5c73a3bffffb5fe4063a87eebd8bfa","isMergeCommit":true,"messageTitle":"Merge pull request #65 from soons1/update-UML","messageBody":"Update UML diagrams to reflect added attributes","fileTypesAndContributionMap":{}},{"hash":"75ec978f18e1ace9956d8376eccdc2b941200c89","isMergeCommit":true,"messageTitle":"Merge pull request #63 from chaaaaun/jiaen/fix-pair-test","messageBody":"Fix pair command tests","fileTypesAndContributionMap":{}},{"hash":"6365a76ffbe613139ea7d8ebff7d0fbae0376ecd","isMergeCommit":true,"messageTitle":"Merge pull request #64 from soons1/testing_v1","messageBody":"Fix 3 testcases in EditCommandTest","fileTypesAndContributionMap":{}},{"hash":"59ad1f898a9a88d2d2433bc420a4a4304601d3f5","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into refactor-editCommand","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"86874c9a9dde8ccc57d17fe005e1a421c54a4368","isMergeCommit":true,"messageTitle":"Merge pull request #67 from CJerrong/refactor-editCommand","messageBody":"Refactor edit command","fileTypesAndContributionMap":{}},{"hash":"394156ecf82fa73e3985d27f579d3fd37cfdecf1","isMergeCommit":true,"messageTitle":"Merge pull request #68 from CJerrong/refactor-pairCommandTest","messageBody":"Refactor pairCommandTest to include new methods withPairedWithName","fileTypesAndContributionMap":{}}]}],"chaaaaun":[{"date":"2024-03-03","commitResults":[{"hash":"307c8ac74efeb23293c311c2bec4b30ae3c4c492","isMergeCommit":true,"messageTitle":"Merge pull request #6 from CJerrong/branch-update-aboutUs","messageBody":"Update AboutUs and Ui picture","fileTypesAndContributionMap":{}},{"hash":"4e413ba0160af9d4ed62161fa60412d2287ad030","isMergeCommit":false,"messageTitle":"Update AboutUs.md and portfolio","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":6}}},{"hash":"80e49bc8be7a333cecdb1f0833812631172f0412","isMergeCommit":false,"messageTitle":"Update repo readme","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":10}}},{"hash":"794d33e59a811ac749585ec0e3eb9594bd466616","isMergeCommit":false,"messageTitle":"Update image name and developer guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":15,"deletions":10}}}]},{"date":"2024-03-05","commitResults":[{"hash":"9bd0f7da53de82966e0c024775503d3ddf4d9271","isMergeCommit":true,"messageTitle":"Merge pull request #17 from chaaaaun/jiaen/update-dg","messageBody":"Update non functional requirements and product scope section in Developer Guide","fileTypesAndContributionMap":{}}]},{"date":"2024-03-12","commitResults":[{"hash":"eb6792586c86e80f5bfeedbb59f691c692c49d2f","isMergeCommit":false,"messageTitle":"Change package name to scrolls.elder and cosmetic changes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":12},"other":{"insertions":885,"deletions":878},"docs":{"insertions":9,"deletions":9},"test-code":{"insertions":963,"deletions":967}}}]},{"date":"2024-03-15","commitResults":[{"hash":"25c3798a23dd43e00e774cc95e60e28fffb1a141","isMergeCommit":true,"messageTitle":"Merge pull request #33 from sdevih/edit-developer-guide","messageBody":"Update developer guide","fileTypesAndContributionMap":{}}]},{"date":"2024-03-17","commitResults":[{"hash":"385c2761fcf494f2c99ab0bd84a67138469fad7d","isMergeCommit":false,"messageTitle":"Switch to use global ID for all contacts","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":66,"deletions":19},"test-code":{"insertions":83,"deletions":69}}}]},{"date":"2024-03-21","commitResults":[{"hash":"dc354222f319c6f563686780da51ac5c0a28e20f","isMergeCommit":true,"messageTitle":"Merge pull request #56 from sdevih/branch-unpairCommand","messageBody":"Add unpair command","fileTypesAndContributionMap":{}},{"hash":"30866660a05517efe3cb65f5453f6a0471912bae","isMergeCommit":false,"messageTitle":"Revert to displaying by list index","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}},{"hash":"39e2d623917c183fd3a2b11d78313c13a054419f","isMergeCommit":false,"messageTitle":"Fix pairing by index for split lists","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":11},"test-code":{"insertions":3,"deletions":6}}},{"hash":"f44409bcad14dd8e443d6b84bc6925c3b1cca0fa","isMergeCommit":false,"messageTitle":"Add labels to the split lists","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":3}}},{"hash":"17738f71b40c4aba1926583c302b5b79e871f543","isMergeCommit":false,"messageTitle":"Persist pair data","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":8}}},{"hash":"5ae15f914780880fa5a38a263c5d9ff4b1ad375c","isMergeCommit":false,"messageTitle":"Update commands to use split list indexing","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":67,"deletions":53}}},{"hash":"052350c2d6ce3bf803f89059e2d931db76c4156b","isMergeCommit":false,"messageTitle":"Update delete command to use split list indexing","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":27,"deletions":5},"test-code":{"insertions":42,"deletions":27}}}]},{"date":"2024-03-22","commitResults":[{"hash":"f434f42f756072e6ace518e66dc4dd1f503eae41","isMergeCommit":false,"messageTitle":"Fix paired command test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":21,"deletions":19}}},{"hash":"738a2ec5799b74eee490d6399e8da62876defa07","isMergeCommit":true,"messageTitle":"Merge pull request #70 from sdevih/branch-deleteContacts","messageBody":"Fix test cases for delete command","fileTypesAndContributionMap":{}}]}],"sdevih":[{"date":"2024-03-03","commitResults":[{"hash":"a518631380a29797b3e1790b72a242ffdb8963e7","isMergeCommit":false,"messageTitle":"Update AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":49,"deletions":3}}},{"hash":"4e6a0af24a3912f3c38e1ad4ddd959f9a492ad5a","isMergeCommit":true,"messageTitle":"Merge pull request #7 from chaaaaun/jiaen/update-aboutus","messageBody":"Update AboutUs.md and portfolio","fileTypesAndContributionMap":{}},{"hash":"4aa1f86865e42cb00ea4ac76c8ea541f774b1322","isMergeCommit":false,"messageTitle":"Update use cases in Developer Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":37,"deletions":9}}}]},{"date":"2024-03-05","commitResults":[{"hash":"40646631cc1c9bcab0a2cbc1f1d0734ad82740fa","isMergeCommit":true,"messageTitle":"Merge pull request #18 from CJerrong/branch-dev-guide","messageBody":"Update use cases section for add, delete and view list in Developer Guide","fileTypesAndContributionMap":{}}]},{"date":"2024-03-15","commitResults":[{"hash":"dacd2dfa4b67ed289fec8cb0714e1ef883d1d823","isMergeCommit":false,"messageTitle":"Update developer guide","messageBody":"Use cases are enumerated for easier inclusions in other use cases.\n\nInclusions are utilised in the use cases for pairing and tagging\ncontacts to minimise low-level steps. The use case for listing all\ncontacts is also used in many other use cases, includign pairing and\ntagging.\n\nSpecific details are added to error messages in the use cases for pairing\nand tagging to better understand what the error is.\n","fileTypesAndContributionMap":{"docs":{"insertions":23,"deletions":24}}}]},{"date":"2024-03-19","commitResults":[{"hash":"7c0dedce69641e1192d0c82c914128f09af774c3","isMergeCommit":true,"messageTitle":"Merge pull request #44 from soons1/create-PairCommand","messageBody":"Add Pair command functionality","fileTypesAndContributionMap":{}},{"hash":"c5a44a918966f832384ab2d33c428c620e5870fb","isMergeCommit":false,"messageTitle":"Add updated delete command","messageBody":"The delete command does not consider the pairedWith attribute.\n\nLet\u0027s ensure that the delete command throws an exception when a paired\ncontact is to be deleted.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":19,"deletions":2}}}]},{"date":"2024-03-20","commitResults":[{"hash":"f948e21ecba87537102a71ab89020d07e0bc5e60","isMergeCommit":false,"messageTitle":"Add alternate keywords for delete","messageBody":"The command only uses delete as the command keyword to execute the\ncommand.\n\nLet\u0027s add more alternate keywords del, rm, remove which can also be used\nin place of delete.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":35,"deletions":6}}},{"hash":"e9068b5b29fad432431b8b8a54be28e61dfe813a","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-deleteContacts","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"db569450035a27a7447fa2ece83298df68066de8","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-deleteContacts\u0027 of https://github.com/sdevih/tp into branch-deleteContacts","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"3d953a28f349c667c35cf55b747e189b63679e95","isMergeCommit":false,"messageTitle":"Add test cases for delete command","messageBody":"The delete case do not test the addtional keywords added.\n\nLet\u0027s ensure that the del, rm and remove keywords work as per normal\nwhen executing the delete command.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":7},"test-code":{"insertions":45,"deletions":10}}},{"hash":"85f610d7ba7ebef3cb89146f0bdcc142e4ddca82","isMergeCommit":false,"messageTitle":"Fix checkstyle issue in test","messageBody":"The use of * in import statements was removed for clarity and better\nunderstanding.\n","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":1}}},{"hash":"ed185e462a01caa3fa4e7561f27c47e826f874bd","isMergeCommit":false,"messageTitle":"Add unpair command","messageBody":"The addressbook does not unpair a volunteer and befriendee.\n\nLet\u0027s add a UnpairCommand class to allow unpairing between volunteer and\nbefriendee, which would allow deleting of contacts.\n\nLet\u0027s add test cases to check if the UnpairCommand class works as intended.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":143,"deletions":0},"test-code":{"insertions":115,"deletions":5}}},{"hash":"05ac1ce834aed6139c0f7254bb248afaf34d680e","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-T09-3/tp into branch-unpairCommand","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"2cb960d6f1525fcd271cf08dd1d6f8415392ebe0","isMergeCommit":false,"messageTitle":"Fix test case for unpair","messageBody":"The unpair test case and command is updated to reflect the change from\nuid to name for the pairedWith attribute.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"test-code":{"insertions":4,"deletions":6}}},{"hash":"97be63be13d64d34922ea261d80480ace045c412","isMergeCommit":false,"messageTitle":"Remove comment from UnpairCommnadTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":1}}},{"hash":"733120805e8de12649ae22f10f3d025efb310313","isMergeCommit":false,"messageTitle":"Update storage to include pairedWith attribute","messageBody":"The JsonAdaptedPerson class and test data is updated to store and\nretrieve the pairedWith attribute when the application is run.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":1},"test-code":{"insertions":41,"deletions":30}}},{"hash":"a27870ec8f44cb4f9c2f1a1bef636198715ef870","isMergeCommit":true,"messageTitle":"Merge pull request #59 from CJerrong/branch-edit-pairTest","messageBody":"Update test cases for pair and unpair","fileTypesAndContributionMap":{}},{"hash":"06fcd4031598723c18d0a7fa5ee68d17cbc8f576","isMergeCommit":true,"messageTitle":"Merge pull request #61 from chaaaaun/jiaen/update-delete","messageBody":"Update delete command to use split list indexing","fileTypesAndContributionMap":{}}]},{"date":"2024-03-22","commitResults":[{"hash":"25cbedeb2e02a81779bd26bdbd1e7126d7d041ea","isMergeCommit":false,"messageTitle":"Update UML diagrams for delete","messageBody":"The UML diagrams for ArchitectureSequenceDiagram and\nBetterModelClassDiagram were edited to reflect the changes made to the\narguments passed into the delete command, which now includes role as\nwell.\n","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}},{"hash":"d1c125a1fe1e2cc17479a73691d3f17d8da9c671","isMergeCommit":false,"messageTitle":"Fix testcases in DeleteCommandTest","messageBody":"The test case fixed checks if the person is paired and throws the\ncorrect exception if paired.\n\nA test case is added, which checks if the person is paired and successfully deletes\nthe person from the addressbook if not paired.\n","fileTypesAndContributionMap":{"test-code":{"insertions":24,"deletions":6}}},{"hash":"662630e7b527a98adb8fb3d52e07b4377f187e1b","isMergeCommit":false,"messageTitle":"Fix notPaired test case for DeleteCommandTest","messageBody":"The test case to check if the person is deleted successfully if not\npaired is fixed.\n","fileTypesAndContributionMap":{"test-code":{"insertions":17,"deletions":20}}},{"hash":"b4eb588cb9bfff46d68a7c9bade4edfa12f826ed","isMergeCommit":false,"messageTitle":"Fix message usage for commands","messageBody":"The message usage variable for delete command was fixed to reflect the\naddtion of the new role parameter added.\n\nThe message usage variable for unpair command was edited for better\npresentation.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":7}}}]}]},"authorFileTypeContributionMap":{"CJerrong":{"docs":167,"functional-code":347,"test-code":107},"soons1":{"docs":73,"functional-code":161,"test-code":154},"gerteck":{"docs":77,"functional-code":288,"test-code":166,"other":1},"chaaaaun":{"docs":39,"functional-code":453,"test-code":1462,"other":2},"sdevih":{"docs":99,"functional-code":178,"test-code":172}},"authorContributionVariance":{"CJerrong":15375.857,"soons1":4076.5068,"gerteck":9496.073,"chaaaaun":461627.1,"sdevih":6667.489},"authorDisplayNameMap":{"CJerrong":"CS2103T-T09-3 CHON..RONG","soons1":"CS2103T-T09-3 SOH .. WEI","gerteck":"CS2103T-T09-3 CHAN..TECK","chaaaaun":"CS2103T-T09-3 TU J..A EN","sdevih":"CS2103T-T09-3 S DE..ITHA"}} diff --git a/AY2324S2-CS2103T-T10-3_tp_master/authorship.json b/AY2324S2-CS2103T-T10-3_tp_master/authorship.json index 5a697092..ac590131 100644 --- a/AY2324S2-CS2103T-T10-3_tp_master/authorship.json +++ b/AY2324S2-CS2103T-T10-3_tp_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"ChocoRagdoll"},"content":"[![CI Status](https://github.com/se-edu/addressbook-level3/workflows/Java%20CI/badge.svg)](https://github.com/AY2324S2-CS2103T-T10-3/tp/actions)","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"[![codecov](https://codecov.io/gh/AY2324S2-CS2103T-T10-3/tp/graph/badge.svg?token\u003dGBPS86G6DT)](https://codecov.io/gh/AY2324S2-CS2103T-T10-3/tp)","lastModifiedDate":"2024-02-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"ChocoRagdoll"},"content":"### Eventy","lastModifiedDate":"2024-03-22"},{"lineNumber":7,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":8,"author":{"gitId":"ChocoRagdoll"},"content":"* This CLI application serves as an event planner tailored for event planners in halls, facilitating efficient management of participants and events. This is a CLI application that is desgined for users who type fast\u003cbr\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":9,"author":{"gitId":"-"},"content":" Example usages:","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * as a starting point of a course project (as opposed to writing everything from scratch)","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * as a case study","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"ChocoRagdoll"},"content":"### What does this do","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"ChocoRagdoll"},"content":"* The project is tailored specifically for student event organizers and offers a new standard of convenient and easy event planning.","lastModifiedDate":"2024-03-22"},{"lineNumber":15,"author":{"gitId":"ChocoRagdoll"},"content":"* The application is targeted towards users who type fast and are used to CLI application.","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":"* The project simulates an ongoing software project for a desktop application (called _AddressBook_) used for managing contact details.","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * It is **written in OOP fashion**. It provides a **reasonably well-written** code base **bigger** (around 6 KLoC) than what students usually write in beginner-level SE modules, without being overwhelmingly big.","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * It comes with a **reasonable level of user and developer documentation**.","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"ChocoRagdoll"},"content":"* It is named `Eventy` (`ET` for short) because we want to insert playfulness and efficiency into event planning. Plus it reminds you of a certain character! doesn\u0027t it :)","lastModifiedDate":"2024-03-22"},{"lineNumber":20,"author":{"gitId":"-"},"content":"* For the detailed documentation of this project, see the **[Address Book Product Website](https://se-education.org/addressbook-level3)**.","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"* This project is a **part of the se-education.org** initiative. If you would like to contribute code to this project, see [se-education.org](https://se-education.org#https://se-education.org/#contributing) for more info.","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"ChocoRagdoll"},"content":"* This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-03-22"}],"authorContributionMap":{"ChocoRagdoll":10,"-":12}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"# About Us","lastModifiedDate":"2023-09-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"myang2020"},"content":"We are the developer team of event management app Eventy, based in the [School of Computing, National University of Singapore](http://www.comp.nus.edu.sg).","lastModifiedDate":"2024-03-06"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"myang2020"},"content":"### Nigel Lee","lastModifiedDate":"2024-02-29"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"myang2020"},"content":"\u003cimg src\u003d\"images/apzure.png\" width\u003d\"200px\" height\u003d\"250px\"\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"myang2020"},"content":"[[github](https://github.com/Apzure)]","lastModifiedDate":"2024-02-29"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"myang2020"},"content":"* Roles: Team Lead and Scheduling and Tracking, in charge of Model","lastModifiedDate":"2024-03-06"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"myang2020"},"content":"### Han Taeweon","lastModifiedDate":"2024-02-29"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"myang2020"},"content":"\u003cimg src\u003d\"images/taeewonnn.png\" width\u003d\"200px\" height\u003d\"250px\"\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"myang2020"},"content":"[[github](https://github.com/taeewonnn)]","lastModifiedDate":"2024-02-29"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"myang2020"},"content":"* Roles: Documentation, Deliverables and Deadlines, Git Expert","lastModifiedDate":"2024-03-06"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"myang2020"},"content":"### Max Yang","lastModifiedDate":"2024-02-29"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"myang2020"},"content":"\u003cimg src\u003d\"images/myang2020.png\" width\u003d\"200px\" height\u003d\"250px\"\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"myang2020"},"content":"[[github](https://github.com/myang2020)]","lastModifiedDate":"2024-03-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"myang2020"},"content":"* Roles: Testing, in charge of Logic","lastModifiedDate":"2024-03-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"myang2020"},"content":"### Liu Yifan","lastModifiedDate":"2024-02-29"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"myang2020"},"content":"\u003cimg src\u003d\"images/nusliuyifan.png\" width\u003d\"200px\" height\u003d\"250px\"\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"myang2020"},"content":"[[github](https://github.com/nusliuyifan)]","lastModifiedDate":"2024-02-29"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"myang2020"},"content":"* Roles: Integration, in charge of Storage","lastModifiedDate":"2024-03-06"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"myang2020"},"content":"### Yichao Song","lastModifiedDate":"2024-03-06"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"myang2020"},"content":"\u003cimg src\u003d\"images/chocoragdoll.png\" width\u003d\"200px\" height\u003d\"250px\"\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"myang2020"},"content":"[[github](https://github.com/ChocoRagdoll)]","lastModifiedDate":"2024-03-06"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"myang2020"},"content":"* Roles: Code Quality, in charge of UI","lastModifiedDate":"2024-03-06"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"}],"authorContributionMap":{"-":25,"myang2020":21}},{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"Developer Guide\"","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"# AB-3 Developer Guide","lastModifiedDate":"2023-09-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":14,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":16,"author":{"gitId":"-"},"content":"_{ list here sources of all reused/adapted ideas, code, documentation, and third-party libraries -- include links to the original source as well }_","lastModifiedDate":"2023-09-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureDiagram.puml\" width\u003d\"280\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":"The ***Architecture Diagram*** given above explains the high-level design of the App.","lastModifiedDate":"2021-07-31"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":"Given below is a quick overview of main components and how they interact with each other.","lastModifiedDate":"2021-07-31"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"**`Main`** (consisting of classes [`Main`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/Main.java) and [`MainApp`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/MainApp.java)) is in charge of the app launch and shut down.","lastModifiedDate":"2023-09-03"},{"lineNumber":39,"author":{"gitId":"-"},"content":"* At app launch, it initializes the other components in the correct sequence, and connects them up with each other.","lastModifiedDate":"2023-09-03"},{"lineNumber":40,"author":{"gitId":"-"},"content":"* At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2023-09-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"* [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"* [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"* [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"The *Sequence Diagram* below shows how the components interact with each other for the scenario where the user issues the command `delete 1`.","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureSequenceDiagram.puml\" width\u003d\"574\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":59,"author":{"gitId":"-"},"content":"* defines its *API* in an `interface` with the same name as the Component.","lastModifiedDate":"2021-07-31"},{"lineNumber":60,"author":{"gitId":"-"},"content":"* implements its functionality using a concrete `{Component Name}Manager` class (which follows the corresponding API `interface` mentioned in the previous point.","lastModifiedDate":"2021-07-31"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":62,"author":{"gitId":"-"},"content":"For example, the `Logic` component defines its API in the `Logic.java` interface and implements its functionality using the `LogicManager.java` class which follows the `Logic` interface. Other components interact with a given component through its interface rather than the concrete class (reason: to prevent outside component\u0027s being coupled to the implementation of a component), as illustrated in the (partial) class diagram below.","lastModifiedDate":"2021-07-31"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":64,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ComponentManagers.puml\" width\u003d\"300\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":66,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"The **API** of this component is specified in [`Ui.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/Ui.java)","lastModifiedDate":"2021-07-31"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UiClassDiagram.puml\" alt\u003d\"Structure of the UI Component\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"The UI consists of a `MainWindow` that is made up of parts e.g.`CommandBox`, `ResultDisplay`, `PersonListPanel`, `StatusBarFooter` etc. All these, including the `MainWindow`, inherit from the abstract `UiPart` class which captures the commonalities between classes that represent parts of the visible GUI.","lastModifiedDate":"2021-07-31"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"The `UI` component uses the JavaFx UI framework. The layout of these UI parts are defined in matching `.fxml` files that are in the `src/main/resources/view` folder. For example, the layout of the [`MainWindow`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/MainWindow.java) is specified in [`MainWindow.fxml`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/resources/view/MainWindow.fxml)","lastModifiedDate":"2021-07-31"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"* executes user commands using the `Logic` component.","lastModifiedDate":"2021-07-31"},{"lineNumber":81,"author":{"gitId":"-"},"content":"* listens for changes to `Model` data so that the UI can be updated with the modified data.","lastModifiedDate":"2021-07-31"},{"lineNumber":82,"author":{"gitId":"-"},"content":"* keeps a reference to the `Logic` component, because the `UI` relies on the `Logic` to execute commands.","lastModifiedDate":"2021-07-31"},{"lineNumber":83,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component, as it displays `Person` object residing in the `Model`.","lastModifiedDate":"2021-07-31"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"**API** : [`Logic.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/logic/Logic.java)","lastModifiedDate":"2021-07-31"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/LogicClassDiagram.puml\" width\u003d\"550\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"The sequence diagram below illustrates the interactions within the `Logic` component, taking `execute(\"delete 1\")` API call as an example.","lastModifiedDate":"2023-09-03"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/DeleteSequenceDiagram.puml\" alt\u003d\"Interactions Inside the Logic Component for the `delete 1` Command\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":97,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"**Note:** The lifeline for `DeleteCommandParser` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline continues till the end of diagram.","lastModifiedDate":"2023-09-12"},{"lineNumber":100,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":104,"author":{"gitId":"-"},"content":"1. When `Logic` is called upon to execute a command, it is passed to an `AddressBookParser` object which in turn creates a parser that matches the command (e.g., `DeleteCommandParser`) and uses it to parse the command.","lastModifiedDate":"2023-09-03"},{"lineNumber":105,"author":{"gitId":"-"},"content":"1. This results in a `Command` object (more precisely, an object of one of its subclasses e.g., `DeleteCommand`) which is executed by the `LogicManager`.","lastModifiedDate":"2023-09-03"},{"lineNumber":106,"author":{"gitId":"-"},"content":"1. The command can communicate with the `Model` when it is executed (e.g. to delete a person).\u003cbr\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":107,"author":{"gitId":"-"},"content":" Note that although this is shown as a single step in the diagram above (for simplicity), in the code it can take several interactions (between the command object and the `Model`) to achieve.","lastModifiedDate":"2024-02-09"},{"lineNumber":108,"author":{"gitId":"-"},"content":"1. The result of the command execution is encapsulated as a `CommandResult` object which is returned back from `Logic`.","lastModifiedDate":"2023-09-03"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":110,"author":{"gitId":"-"},"content":"Here are the other classes in `Logic` (omitted from the class diagram above) that are used for parsing a user command:","lastModifiedDate":"2021-07-31"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":112,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ParserClasses.puml\" width\u003d\"600\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31"},{"lineNumber":115,"author":{"gitId":"-"},"content":"* When called upon to parse a user command, the `AddressBookParser` class creates an `XYZCommandParser` (`XYZ` is a placeholder for the specific command name e.g., `AddCommandParser`) which uses the other classes shown above to parse the user command and create a `XYZCommand` object (e.g., `AddCommand`) which the `AddressBookParser` returns back as a `Command` object.","lastModifiedDate":"2021-07-31"},{"lineNumber":116,"author":{"gitId":"-"},"content":"* All `XYZCommandParser` classes (e.g., `AddCommandParser`, `DeleteCommandParser`, ...) inherit from the `Parser` interface so that they can be treated similarly where possible e.g, during testing.","lastModifiedDate":"2021-07-31"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31"},{"lineNumber":119,"author":{"gitId":"-"},"content":"**API** : [`Model.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/model/Model.java)","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":"* stores the address book data i.e., all `Person` objects (which are contained in a `UniquePersonList` object).","lastModifiedDate":"2021-07-31"},{"lineNumber":127,"author":{"gitId":"-"},"content":"* stores the currently \u0027selected\u0027 `Person` objects (e.g., results of a search query) as a separate _filtered_ list which is exposed to outsiders as an unmodifiable `ObservableList\u003cPerson\u003e` that can be \u0027observed\u0027 e.g. the UI can be bound to this list so that the UI automatically updates when the data in the list change.","lastModifiedDate":"2021-07-31"},{"lineNumber":128,"author":{"gitId":"-"},"content":"* stores a `UserPref` object that represents the user’s preferences. This is exposed to the outside as a `ReadOnlyUserPref` objects.","lastModifiedDate":"2021-07-31"},{"lineNumber":129,"author":{"gitId":"-"},"content":"* does not depend on any of the other three components (as the `Model` represents data entities of the domain, they should make sense on their own without depending on other components)","lastModifiedDate":"2021-07-31"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":131,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":133,"author":{"gitId":"-"},"content":"**Note:** An alternative (arguably, a more OOP) model is given below. It has a `Tag` list in the `AddressBook`, which `Person` references. This allows `AddressBook` to only require one `Tag` object per unique tag, instead of each `Person` needing their own `Tag` objects.\u003cbr\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":135,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/BetterModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":"**API** : [`Storage.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/storage/Storage.java)","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/StorageClassDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":146,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":"* can save both address book data and user preference data in JSON format, and read them back into corresponding objects.","lastModifiedDate":"2023-09-03"},{"lineNumber":148,"author":{"gitId":"-"},"content":"* inherits from both `AddressBookStorage` and `UserPrefStorage`, which means it can be treated as either one (if only the functionality of only one is needed).","lastModifiedDate":"2021-07-31"},{"lineNumber":149,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component (because the `Storage` component\u0027s job is to save/retrieve objects that belong to the `Model`)","lastModifiedDate":"2021-07-21"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.addressbook.commons` package.","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":"The proposed undo/redo mechanism is facilitated by `VersionedAddressBook`. It extends `AddressBook` with an undo/redo history, stored internally as an `addressBookStateList` and `currentStatePointer`. Additionally, it implements the following operations:","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":"These operations are exposed in the `Model` interface as `Model#commitAddressBook()`, `Model#undoAddressBook()` and `Model#redoAddressBook()` respectively.","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":"Given below is an example usage scenario and how the undo/redo mechanism behaves at each step.","lastModifiedDate":"2020-05-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":"Step 1. The user launches the application for the first time. The `VersionedAddressBook` will be initialized with the initial address book state, and the `currentStatePointer` pointing to that single address book state.","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState0.puml\" alt\u003d\"UndoRedoState0\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":"Step 2. The user executes `delete 5` command to delete the 5th person in the address book. The `delete` command calls `Model#commitAddressBook()`, causing the modified state of the address book after the `delete 5` command executes to be saved in the `addressBookStateList`, and the `currentStatePointer` is shifted to the newly inserted address book state.","lastModifiedDate":"2020-05-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState1.puml\" alt\u003d\"UndoRedoState1\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"Step 3. The user executes `add n/David …​` to add a new person. The `add` command also calls `Model#commitAddressBook()`, causing another modified address book state to be saved into the `addressBookStateList`.","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState2.puml\" alt\u003d\"UndoRedoState2\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":"**Note:** If a command fails its execution, it will not call `Model#commitAddressBook()`, so the address book state will not be saved into the `addressBookStateList`.","lastModifiedDate":"2023-09-12"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":191,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":"Step 4. The user now decides that adding the person was a mistake, and decides to undo that action by executing the `undo` command. The `undo` command will call `Model#undoAddressBook()`, which will shift the `currentStatePointer` once to the left, pointing it to the previous address book state, and restores the address book to that state.","lastModifiedDate":"2020-05-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState3.puml\" alt\u003d\"UndoRedoState3\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":198,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"author":{"gitId":"-"},"content":"**Note:** If the `currentStatePointer` is at index 0, pointing to the initial AddressBook state, then there are no previous AddressBook states to restore. The `undo` command uses `Model#canUndoAddressBook()` to check if this is the case. If so, it will return an error to the user rather","lastModifiedDate":"2023-09-12"},{"lineNumber":201,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Logic.puml\" alt\u003d\"UndoSequenceDiagram-Logic\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":209,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":"**Note:** The lifeline for `UndoCommand` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.","lastModifiedDate":"2023-09-12"},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":213,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":217,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Model.puml\" alt\u003d\"UndoSequenceDiagram-Model\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":219,"author":{"gitId":"-"},"content":"The `redo` command does the opposite — it calls `Model#redoAddressBook()`, which shifts the `currentStatePointer` once to the right, pointing to the previously undone state, and restores the address book to that state.","lastModifiedDate":"2020-05-23"},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":221,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":223,"author":{"gitId":"-"},"content":"**Note:** If the `currentStatePointer` is at index `addressBookStateList.size() - 1`, pointing to the latest address book state, then there are no undone AddressBook states to restore. The `redo` command uses `Model#canRedoAddressBook()` to check if this is the case. If so, it will return an error to the user rather than attempting to perform the redo.","lastModifiedDate":"2023-09-12"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"author":{"gitId":"-"},"content":"Step 5. The user then decides to execute the command `list`. Commands that do not modify the address book, such as `list`, will usually not call `Model#commitAddressBook()`, `Model#undoAddressBook()` or `Model#redoAddressBook()`. Thus, the `addressBookStateList` remains unchanged.","lastModifiedDate":"2020-05-23"},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState4.puml\" alt\u003d\"UndoRedoState4\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"author":{"gitId":"-"},"content":"Step 6. The user executes `clear`, which calls `Model#commitAddressBook()`. Since the `currentStatePointer` is not pointing at the end of the `addressBookStateList`, all address book states after the `currentStatePointer` will be purged. Reason: It no longer makes sense to redo the `add n/David …​` command. This is the behavior that most modern desktop applications follow.","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState5.puml\" alt\u003d\"UndoRedoState5\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/CommitActivityDiagram.puml\" width\u003d\"250\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31"},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31"},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":247,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23"},{"lineNumber":248,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23"},{"lineNumber":249,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23"},{"lineNumber":250,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":254,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23"},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":259,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07"},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":264,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":265,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":266,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":267,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":268,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":269,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":271,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":273,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23"},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":275,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23"},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":277,"author":{"gitId":"taeewonnn"},"content":"* Active members of university clubs and societies or school event committees","lastModifiedDate":"2024-03-21"},{"lineNumber":278,"author":{"gitId":"taeewonnn"},"content":"* Tech-savvy and reasonably comfortable with digital tools","lastModifiedDate":"2024-03-21"},{"lineNumber":279,"author":{"gitId":"taeewonnn"},"content":"* Fast typer","lastModifiedDate":"2024-03-21"},{"lineNumber":280,"author":{"gitId":"taeewonnn"},"content":"* Managing multiple events that range from small-scale meetings to large school-wide events","lastModifiedDate":"2024-03-21"},{"lineNumber":281,"author":{"gitId":"taeewonnn"},"content":"* Frequently communicating and coordinating with a variety of contacts including vendors, participants, volunteers, and school administrators","lastModifiedDate":"2024-03-21"},{"lineNumber":282,"author":{"gitId":"taeewonnn"},"content":"* Task driven with a need to balance multiple deadlines and responsibilities simultaneously","lastModifiedDate":"2024-03-21"},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":284,"author":{"gitId":"taeewonnn"},"content":"**Value proposition**:","lastModifiedDate":"2024-03-21"},{"lineNumber":285,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":286,"author":{"gitId":"taeewonnn"},"content":"The evolved AB3 contact management application, tailored specifically for student event organizers, offers a new standard of streamlined and automated contact organization. It serves as your single source of truth for storing,","lastModifiedDate":"2024-03-21"},{"lineNumber":287,"author":{"gitId":"taeewonnn"},"content":"managing, and retrieving all contact-related information.","lastModifiedDate":"2024-03-21"},{"lineNumber":288,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":290,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07"},{"lineNumber":291,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":292,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23"},{"lineNumber":293,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":294,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23"},{"lineNumber":295,"author":{"gitId":"-"},"content":"|----------|--------------------------------------------|------------------------------|------------------------------------------------------------------------|","lastModifiedDate":"2023-09-12"},{"lineNumber":296,"author":{"gitId":"taeewonnn"},"content":"| `* * *` | user | create a new event | plan and manage all the events that in one place |","lastModifiedDate":"2024-03-21"},{"lineNumber":297,"author":{"gitId":"taeewonnn"},"content":"| `* * *` | user | add a new person | manage all my contacts in one place |","lastModifiedDate":"2024-03-21"},{"lineNumber":298,"author":{"gitId":"taeewonnn"},"content":"| `* * *` | user | add participant to an event | manage and plan all the participant for a specific event |","lastModifiedDate":"2024-03-21"},{"lineNumber":299,"author":{"gitId":"taeewonnn"},"content":"| `* * *` | user | delete a person | remove contacts that I no longer need |","lastModifiedDate":"2024-03-21"},{"lineNumber":300,"author":{"gitId":"taeewonnn"},"content":"| `* * *` | user | remove specific participant | remove a specific participant from a specific event |","lastModifiedDate":"2024-03-21"},{"lineNumber":301,"author":{"gitId":"taeewonnn"},"content":"| `* *` | diligent user | edit contact information | update contact information whenever necessary |","lastModifiedDate":"2024-03-21"},{"lineNumber":302,"author":{"gitId":"taeewonnn"},"content":"| `* *` | user | select a specific event | search events by name without having to manually search","lastModifiedDate":"2024-03-21"},{"lineNumber":303,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":304,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":305,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07"},{"lineNumber":306,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":307,"author":{"gitId":"taeewonnn"},"content":"--------------------------------------------------------","lastModifiedDate":"2024-03-21"},{"lineNumber":308,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":309,"author":{"gitId":"taeewonnn"},"content":"### Creating an Event","lastModifiedDate":"2024-03-21"},{"lineNumber":310,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":311,"author":{"gitId":"taeewonnn"},"content":"**Use Case: UC01 - Create an event**","lastModifiedDate":"2024-03-21"},{"lineNumber":312,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":313,"author":{"gitId":"taeewonnn"},"content":"**Actor:** User","lastModifiedDate":"2024-03-21"},{"lineNumber":314,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":315,"author":{"gitId":"taeewonnn"},"content":"**MSS:**","lastModifiedDate":"2024-03-21"},{"lineNumber":316,"author":{"gitId":"taeewonnn"},"content":"1. User provides the details of an event to be created.","lastModifiedDate":"2024-03-21"},{"lineNumber":317,"author":{"gitId":"taeewonnn"},"content":"2. Eventy displays the details of the event added by the User in the Event List.","lastModifiedDate":"2024-03-21"},{"lineNumber":318,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":319,"author":{"gitId":"taeewonnn"},"content":"*Use case ends*","lastModifiedDate":"2024-03-21"},{"lineNumber":320,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":321,"author":{"gitId":"taeewonnn"},"content":"**Extensions:**","lastModifiedDate":"2024-03-21"},{"lineNumber":322,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":323,"author":{"gitId":"taeewonnn"},"content":"1a. Details provided by User are incomplete or invalid.","lastModifiedDate":"2024-03-21"},{"lineNumber":324,"author":{"gitId":"taeewonnn"},"content":"- 1a1. Eventy displays an error message to alert the User. \u003c/br\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":325,"author":{"gitId":"taeewonnn"},"content":" *Use case ends*","lastModifiedDate":"2024-03-21"},{"lineNumber":326,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":327,"author":{"gitId":"taeewonnn"},"content":"1b. Event to be added already exists in Eventy.","lastModifiedDate":"2024-03-21"},{"lineNumber":328,"author":{"gitId":"taeewonnn"},"content":"- 1b1. Eventy displays an error message to alert the User. \u003c/br\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":329,"author":{"gitId":"taeewonnn"},"content":" *Use case ends*","lastModifiedDate":"2024-03-21"},{"lineNumber":330,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":331,"author":{"gitId":"taeewonnn"},"content":"### Deleting an event","lastModifiedDate":"2024-03-21"},{"lineNumber":332,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":333,"author":{"gitId":"taeewonnn"},"content":"**Use case: UC02 - Delete an event**","lastModifiedDate":"2024-03-21"},{"lineNumber":334,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":335,"author":{"gitId":"taeewonnn"},"content":"**Actor:** User","lastModifiedDate":"2024-03-21"},{"lineNumber":336,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":337,"author":{"gitId":"taeewonnn"},"content":"**Preconditions:** User has added at least one event.","lastModifiedDate":"2024-03-21"},{"lineNumber":338,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":339,"author":{"gitId":"taeewonnn"},"content":"**Guarantees:**","lastModifiedDate":"2024-03-21"},{"lineNumber":340,"author":{"gitId":"taeewonnn"},"content":"A successful deletion deletes an event from the event list.","lastModifiedDate":"2024-03-21"},{"lineNumber":341,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":342,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23"},{"lineNumber":343,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":344,"author":{"gitId":"taeewonnn"},"content":"1. Eventy shows a list of events.","lastModifiedDate":"2024-03-21"},{"lineNumber":345,"author":{"gitId":"taeewonnn"},"content":"2. User requests to delete a specific event in the list.","lastModifiedDate":"2024-03-21"},{"lineNumber":346,"author":{"gitId":"taeewonnn"},"content":"3. Eventy deletes the event.","lastModifiedDate":"2024-03-21"},{"lineNumber":347,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":348,"author":{"gitId":"taeewonnn"},"content":"*Use case ends*","lastModifiedDate":"2024-03-21"},{"lineNumber":349,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":350,"author":{"gitId":"taeewonnn"},"content":"**Extensions:**","lastModifiedDate":"2024-03-21"},{"lineNumber":351,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":352,"author":{"gitId":"taeewonnn"},"content":"1a. The list is empty. \u003c/br\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":353,"author":{"gitId":"taeewonnn"},"content":"- 1a1. Eventy displays an error message to alert the User. \u003c/br\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":354,"author":{"gitId":"taeewonnn"},"content":" *Use case ends*","lastModifiedDate":"2024-03-21"},{"lineNumber":355,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":356,"author":{"gitId":"taeewonnn"},"content":"2a. Details provided by User are incomplete or invalid.","lastModifiedDate":"2024-03-21"},{"lineNumber":357,"author":{"gitId":"taeewonnn"},"content":"- 2a1. Eventy displays an error message to alert the User. \u003c/br\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":358,"author":{"gitId":"taeewonnn"},"content":" *Use case resumes at step 2.*","lastModifiedDate":"2024-03-21"},{"lineNumber":359,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":360,"author":{"gitId":"taeewonnn"},"content":"### Adding participants contact to the global list","lastModifiedDate":"2024-03-21"},{"lineNumber":361,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":362,"author":{"gitId":"taeewonnn"},"content":"**Use case: UC03 - Add participants contact**","lastModifiedDate":"2024-03-21"},{"lineNumber":363,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":364,"author":{"gitId":"taeewonnn"},"content":"**Actor:** User","lastModifiedDate":"2024-03-21"},{"lineNumber":365,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":366,"author":{"gitId":"taeewonnn"},"content":"**Guarantees:**","lastModifiedDate":"2024-03-21"},{"lineNumber":367,"author":{"gitId":"taeewonnn"},"content":"A successful addition adds a participant to the global list.","lastModifiedDate":"2024-03-21"},{"lineNumber":368,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":369,"author":{"gitId":"taeewonnn"},"content":"**MSS**","lastModifiedDate":"2024-03-21"},{"lineNumber":370,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":371,"author":{"gitId":"taeewonnn"},"content":"1. User provides the detail of the contact to be added.","lastModifiedDate":"2024-03-21"},{"lineNumber":372,"author":{"gitId":"taeewonnn"},"content":"2. Eventy displays the details of the contact added by the user. \u003c/br\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":373,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":374,"author":{"gitId":"taeewonnn"},"content":"*Use case ends*","lastModifiedDate":"2024-03-21"},{"lineNumber":375,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":376,"author":{"gitId":"taeewonnn"},"content":"**Extensions:**","lastModifiedDate":"2024-03-21"},{"lineNumber":377,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":378,"author":{"gitId":"taeewonnn"},"content":"1a. Details provided by User are incomplete or invalid","lastModifiedDate":"2024-03-21"},{"lineNumber":379,"author":{"gitId":"taeewonnn"},"content":"- 1a1. Eventy displays an error message to alert the User. \u003c/br\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":380,"author":{"gitId":"taeewonnn"},"content":" *Use case ends*","lastModifiedDate":"2024-03-21"},{"lineNumber":381,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":382,"author":{"gitId":"taeewonnn"},"content":"### Deleting participant","lastModifiedDate":"2024-03-21"},{"lineNumber":383,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":384,"author":{"gitId":"taeewonnn"},"content":"**Use Case: UC04 - Delete a participant from the global participant list**","lastModifiedDate":"2024-03-21"},{"lineNumber":385,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":386,"author":{"gitId":"taeewonnn"},"content":"**Actor:** User","lastModifiedDate":"2024-03-21"},{"lineNumber":387,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":388,"author":{"gitId":"taeewonnn"},"content":"**Preconditions:**","lastModifiedDate":"2024-03-21"},{"lineNumber":389,"author":{"gitId":"taeewonnn"},"content":"User has added one or more participant to the global participant list.","lastModifiedDate":"2024-03-21"},{"lineNumber":390,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":391,"author":{"gitId":"taeewonnn"},"content":"**Guarantees:**","lastModifiedDate":"2024-03-21"},{"lineNumber":392,"author":{"gitId":"taeewonnn"},"content":"A successful deletion deletes the participant from both the global list and all the events he participates in.","lastModifiedDate":"2024-03-21"},{"lineNumber":393,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":394,"author":{"gitId":"taeewonnn"},"content":"**MSS:**","lastModifiedDate":"2024-03-21"},{"lineNumber":395,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":396,"author":{"gitId":"taeewonnn"},"content":"1. User deletes a participant.","lastModifiedDate":"2024-03-21"},{"lineNumber":397,"author":{"gitId":"taeewonnn"},"content":"2. Eventy displays the updated global participant list. \u003c/br\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":398,"author":{"gitId":"taeewonnn"},"content":" *Use case ends*","lastModifiedDate":"2024-03-21"},{"lineNumber":399,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":400,"author":{"gitId":"taeewonnn"},"content":"**Extensions:**","lastModifiedDate":"2024-03-21"},{"lineNumber":401,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":402,"author":{"gitId":"taeewonnn"},"content":"1a. Participant index provided by the User is invalid.","lastModifiedDate":"2024-03-21"},{"lineNumber":403,"author":{"gitId":"taeewonnn"},"content":"- 1a1. Eventy displays an error message to alert the User. \u003c/br\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":404,"author":{"gitId":"taeewonnn"},"content":" *Use case resumes at step 2.*","lastModifiedDate":"2024-03-21"},{"lineNumber":405,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":406,"author":{"gitId":"taeewonnn"},"content":"### Removing participants from a specific event","lastModifiedDate":"2024-03-21"},{"lineNumber":407,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":408,"author":{"gitId":"taeewonnn"},"content":"**Use case: UC05 - Remove a participant from the specified event**","lastModifiedDate":"2024-03-21"},{"lineNumber":409,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":410,"author":{"gitId":"taeewonnn"},"content":"**Actor:** User","lastModifiedDate":"2024-03-21"},{"lineNumber":411,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":412,"author":{"gitId":"taeewonnn"},"content":"**Preconditions:** User has added one or more participant to the specified event.","lastModifiedDate":"2024-03-21"},{"lineNumber":413,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":414,"author":{"gitId":"taeewonnn"},"content":"**MSS:**","lastModifiedDate":"2024-03-21"},{"lineNumber":415,"author":{"gitId":"taeewonnn"},"content":"1. User requests to remove a participant from a certain event.","lastModifiedDate":"2024-03-21"},{"lineNumber":416,"author":{"gitId":"taeewonnn"},"content":"2. Eventy remove the participant from the event. \u003c/br\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":417,"author":{"gitId":"taeewonnn"},"content":" *Use case ends*","lastModifiedDate":"2024-03-21"},{"lineNumber":418,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":419,"author":{"gitId":"taeewonnn"},"content":"**Extensions:**","lastModifiedDate":"2024-03-21"},{"lineNumber":420,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":421,"author":{"gitId":"taeewonnn"},"content":"1a. The event index provided by the User is invalid.","lastModifiedDate":"2024-03-21"},{"lineNumber":422,"author":{"gitId":"taeewonnn"},"content":"- 1a1. Eventy displays an error message to alert the User. \u003c/br\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":423,"author":{"gitId":"taeewonnn"},"content":" *Use case ends*","lastModifiedDate":"2024-03-21"},{"lineNumber":424,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":425,"author":{"gitId":"taeewonnn"},"content":"1b. Participant index provided by the User is invalid.","lastModifiedDate":"2024-03-21"},{"lineNumber":426,"author":{"gitId":"taeewonnn"},"content":"- 1a1. Eventy displays an error message to alert the User. \u003c/br\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":427,"author":{"gitId":"taeewonnn"},"content":" *Use case ends*","lastModifiedDate":"2024-03-21"},{"lineNumber":428,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":429,"author":{"gitId":"taeewonnn"},"content":"### Selecting an event","lastModifiedDate":"2024-03-21"},{"lineNumber":430,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":431,"author":{"gitId":"taeewonnn"},"content":"**Use Case: UC06 - Select an event from the event list**","lastModifiedDate":"2024-03-21"},{"lineNumber":432,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":433,"author":{"gitId":"taeewonnn"},"content":"**Actor:** User","lastModifiedDate":"2024-03-21"},{"lineNumber":434,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":435,"author":{"gitId":"taeewonnn"},"content":"**Preconditions:** User has added one or more events to the event list.","lastModifiedDate":"2024-03-21"},{"lineNumber":436,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":437,"author":{"gitId":"taeewonnn"},"content":"**Guarantees:**","lastModifiedDate":"2024-03-21"},{"lineNumber":438,"author":{"gitId":"taeewonnn"},"content":"A successful selection displays the event details.","lastModifiedDate":"2024-03-21"},{"lineNumber":439,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":440,"author":{"gitId":"taeewonnn"},"content":"**MSS:**","lastModifiedDate":"2024-03-21"},{"lineNumber":441,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":442,"author":{"gitId":"taeewonnn"},"content":"1. User selects an event.","lastModifiedDate":"2024-03-21"},{"lineNumber":443,"author":{"gitId":"taeewonnn"},"content":"2. Eventy displays the details of the selected event. \u003c/br\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":444,"author":{"gitId":"taeewonnn"},"content":" *Use case ends*","lastModifiedDate":"2024-03-21"},{"lineNumber":445,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":446,"author":{"gitId":"taeewonnn"},"content":"**Extensions:**","lastModifiedDate":"2024-03-21"},{"lineNumber":447,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":448,"author":{"gitId":"taeewonnn"},"content":"1a. Event index provided by User is invalid.","lastModifiedDate":"2024-03-21"},{"lineNumber":449,"author":{"gitId":"taeewonnn"},"content":"- 1a1. Eventy displays an error message to alert the User. \u003c/br\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":450,"author":{"gitId":"taeewonnn"},"content":" *Use case ends*","lastModifiedDate":"2024-03-21"},{"lineNumber":451,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":452,"author":{"gitId":"taeewonnn"},"content":"### Add a participant to an event","lastModifiedDate":"2024-03-21"},{"lineNumber":453,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":454,"author":{"gitId":"taeewonnn"},"content":"**Use Case: UC07 - Add a participant to an event**","lastModifiedDate":"2024-03-21"},{"lineNumber":455,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":456,"author":{"gitId":"taeewonnn"},"content":"**Actor:** User","lastModifiedDate":"2024-03-21"},{"lineNumber":457,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":458,"author":{"gitId":"taeewonnn"},"content":"**Preconditions:**","lastModifiedDate":"2024-03-21"},{"lineNumber":459,"author":{"gitId":"taeewonnn"},"content":"User has added one or more contacts to the global contact list.","lastModifiedDate":"2024-03-21"},{"lineNumber":460,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":461,"author":{"gitId":"taeewonnn"},"content":"**Guarantees:**","lastModifiedDate":"2024-03-21"},{"lineNumber":462,"author":{"gitId":"taeewonnn"},"content":"A successful addition adds a participant from the global list to the selected event.","lastModifiedDate":"2024-03-21"},{"lineNumber":463,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":464,"author":{"gitId":"taeewonnn"},"content":"**MSS:**","lastModifiedDate":"2024-03-21"},{"lineNumber":465,"author":{"gitId":"taeewonnn"},"content":"1. User inputs the index of participant to be added.","lastModifiedDate":"2024-03-21"},{"lineNumber":466,"author":{"gitId":"taeewonnn"},"content":"2. Eventy displays the added participant in the panel showing list of participants in selected event. \u003c/br\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":467,"author":{"gitId":"taeewonnn"},"content":" *Use case ends*","lastModifiedDate":"2024-03-21"},{"lineNumber":468,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":469,"author":{"gitId":"taeewonnn"},"content":"**Extensions:**","lastModifiedDate":"2024-03-21"},{"lineNumber":470,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":471,"author":{"gitId":"taeewonnn"},"content":"1a. Index provided by user is invalid/out of range of global contact list.","lastModifiedDate":"2024-03-21"},{"lineNumber":472,"author":{"gitId":"taeewonnn"},"content":"- 1a1. Eventy displays an error message to alert the User. \u003c/br\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":473,"author":{"gitId":"taeewonnn"},"content":" *Use case ends*","lastModifiedDate":"2024-03-21"},{"lineNumber":474,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":475,"author":{"gitId":"taeewonnn"},"content":"1b. Contact to be added already exists in selected event.","lastModifiedDate":"2024-03-21"},{"lineNumber":476,"author":{"gitId":"taeewonnn"},"content":"- 1b1. Eventy displays an error message to alert the User. \u003c/br\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":477,"author":{"gitId":"taeewonnn"},"content":" *Use case ends*","lastModifiedDate":"2024-03-21"},{"lineNumber":478,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":479,"author":{"gitId":"taeewonnn"},"content":"1b. User does not provide an index.","lastModifiedDate":"2024-03-21"},{"lineNumber":480,"author":{"gitId":"taeewonnn"},"content":"- 1b1. Eventy displays an error message to alert the User. \u003c/br\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":481,"author":{"gitId":"taeewonnn"},"content":" *Use case ends*","lastModifiedDate":"2024-03-21"},{"lineNumber":482,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":483,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":484,"author":{"gitId":"taeewonnn"},"content":"### Non-Functional Requirements","lastModifiedDate":"2024-03-21"},{"lineNumber":485,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":486,"author":{"gitId":"taeewonnn"},"content":"1. The user should be able to use the application smoothly with a device running mainstream OS with Java 11 or above installed.","lastModifiedDate":"2024-03-21"},{"lineNumber":487,"author":{"gitId":"taeewonnn"},"content":"2. The application should be able to store up to 1000 participants and 50 events without a reduction in speed.","lastModifiedDate":"2024-03-21"},{"lineNumber":488,"author":{"gitId":"taeewonnn"},"content":"3. A user familiar with CLI applications with a reasonable typing speed should be able to navigate commands faster than using the mouse.","lastModifiedDate":"2024-03-21"},{"lineNumber":489,"author":{"gitId":"taeewonnn"},"content":"4. The user interface should be simple, clear, easily understandable and fast to navigate.","lastModifiedDate":"2024-03-21"},{"lineNumber":490,"author":{"gitId":"taeewonnn"},"content":"5. The application should gracefully handle errors by displaying error messages to prevent system crashes and data corruption.","lastModifiedDate":"2024-03-21"},{"lineNumber":491,"author":{"gitId":"taeewonnn"},"content":"6. The application should be released as a free application to the general public.","lastModifiedDate":"2024-03-21"},{"lineNumber":492,"author":{"gitId":"taeewonnn"},"content":"7. The average command response time of Eventy should be less than a second.","lastModifiedDate":"2024-03-21"},{"lineNumber":493,"author":{"gitId":"taeewonnn"},"content":"8. The application should consume no more than 200Mb of memory when holding less than 1000 participants and 50 events.","lastModifiedDate":"2024-03-21"},{"lineNumber":494,"author":{"gitId":"taeewonnn"},"content":"9. The application should launch in less than 5 seconds.","lastModifiedDate":"2024-03-21"},{"lineNumber":495,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":496,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23"},{"lineNumber":497,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":498,"author":{"gitId":"taeewonnn"},"content":"* **Mainstream OS:** Windows, Linux, Unix, OS-X","lastModifiedDate":"2024-03-21"},{"lineNumber":499,"author":{"gitId":"taeewonnn"},"content":"* **Eventy:** Name of the application.","lastModifiedDate":"2024-03-21"},{"lineNumber":500,"author":{"gitId":"taeewonnn"},"content":"* **Global participant list:** List of participants that are saved in the application.","lastModifiedDate":"2024-03-21"},{"lineNumber":501,"author":{"gitId":"taeewonnn"},"content":"* **Event list:** List of events created in the application to be managed.","lastModifiedDate":"2024-03-21"},{"lineNumber":502,"author":{"gitId":"taeewonnn"},"content":"* **Event participant list:** List of participants in the specific event.","lastModifiedDate":"2024-03-21"},{"lineNumber":503,"author":{"gitId":"taeewonnn"},"content":"* **Participant:** The contact whose information is stored in the application storage.","lastModifiedDate":"2024-03-21"},{"lineNumber":504,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":505,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":506,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":507,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23"},{"lineNumber":508,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":509,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":510,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":511,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":512,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":513,"author":{"gitId":"-"},"content":"**Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2023-09-12"},{"lineNumber":514,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":515,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":516,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":517,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":518,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":519,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":520,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":521,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":522,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23"},{"lineNumber":523,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":524,"author":{"gitId":"-"},"content":" 1. Double-click the jar file Expected: Shows the GUI with a set of sample contacts. The window size may not be optimum.","lastModifiedDate":"2020-05-23"},{"lineNumber":525,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":526,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23"},{"lineNumber":527,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":528,"author":{"gitId":"-"},"content":" 1. Resize the window to an optimum size. Move the window to a different location. Close the window.","lastModifiedDate":"2020-05-23"},{"lineNumber":529,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":530,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":531,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23"},{"lineNumber":532,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":533,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":534,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":535,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23"},{"lineNumber":536,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":537,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23"},{"lineNumber":538,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":539,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23"},{"lineNumber":540,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":541,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":542,"author":{"gitId":"-"},"content":" Expected: First contact is deleted from the list. Details of the deleted contact shown in the status message. Timestamp in the status bar is updated.","lastModifiedDate":"2020-05-23"},{"lineNumber":543,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":544,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":545,"author":{"gitId":"-"},"content":" Expected: No person is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2020-05-23"},{"lineNumber":546,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":547,"author":{"gitId":"-"},"content":" 1. Other incorrect delete commands to try: `delete`, `delete x`, `...` (where x is larger than the list size)\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":548,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":549,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":550,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":551,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":552,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":553,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":554,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":555,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":556,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23"},{"lineNumber":557,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":558,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"-":362,"taeewonnn":196}},{"path":"docs/UserGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: default.md","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: \"User Guide\"","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"pageNav: 3","lastModifiedDate":"2023-09-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"taeewonnn"},"content":"# Eventy User Guide","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"taeewonnn"},"content":"Eventy is a contact management application, tailored specifically for student event organizers, offers a new standard of streamlined and automated contact organization. It serves as your single source of truth for storing, managing, and retrieving all contact-related information.","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"## Quick start","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"1. Ensure you have Java `11` or above installed in your Computer.","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"taeewonnn"},"content":"1. Download the latest `eventy.jar` from [here](https://github.com/se-edu/addressbook-level3/releases).","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"taeewonnn"},"content":"1. Copy the file to the folder you want to use as the _home folder_ for your Eventy.","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"taeewonnn"},"content":"1. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar eventy.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" A GUI similar to the below should appear in a few seconds. Note how the app contains some sample data.\u003cbr\u003e","lastModifiedDate":"2023-01-01"},{"lineNumber":26,"author":{"gitId":"-"},"content":" ![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":"1. Refer to the [Features](#features) below for details of each command.","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"Apzure"},"content":"### Creating an event: `addev`","lastModifiedDate":"2024-03-10"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"ChocoRagdoll"},"content":"**Format:** `addev ev/\u003cevent name\u003e`","lastModifiedDate":"2024-03-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"Apzure"},"content":"**Description:**","lastModifiedDate":"2024-03-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"Apzure"},"content":"Adds a new event with the specified name for the Event List.","lastModifiedDate":"2024-03-10"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":42,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"warning\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":"**Caution:**","lastModifiedDate":"2023-09-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"Apzure"},"content":"* `\u003cevent name\u003e` should be **alphanumeric**, **non-empty** and **not longer than 64 characters**.","lastModifiedDate":"2024-03-05"},{"lineNumber":47,"author":{"gitId":"Apzure"},"content":"* Adding an event with a name that already exists, regardless of case, is **not allowed.**","lastModifiedDate":"2024-03-10"},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":50,"author":{"gitId":"Apzure"},"content":"**Examples:**","lastModifiedDate":"2024-03-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"ChocoRagdoll"},"content":"- `addev ev/Orientation camp` adds a new event with the name `Orientation camp`.","lastModifiedDate":"2024-03-22"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":54,"author":{"gitId":"taeewonnn"},"content":"### Deleting an event: `delev`","lastModifiedDate":"2024-03-10"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"taeewonnn"},"content":"**Format:** `delev \u003cindex\u003e`","lastModifiedDate":"2024-03-11"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"taeewonnn"},"content":"**Description:**","lastModifiedDate":"2024-03-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"author":{"gitId":"taeewonnn"},"content":"Deletes an event and all its relevant information with its index in the event list.","lastModifiedDate":"2024-03-10"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"author":{"gitId":"taeewonnn"},"content":"\u003cbox type\u003d\"warning\" seamless\u003e","lastModifiedDate":"2024-03-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":64,"author":{"gitId":"taeewonnn"},"content":"**Caution:**","lastModifiedDate":"2024-03-05"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":66,"author":{"gitId":"taeewonnn"},"content":"* `\u003cindex\u003e` should be **numeric** and **non-empty**.","lastModifiedDate":"2024-03-11"},{"lineNumber":67,"author":{"gitId":"taeewonnn"},"content":" \u003c/box\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"taeewonnn"},"content":"**Examples:**","lastModifiedDate":"2024-03-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"taeewonnn"},"content":"- `delev 1` deletes the 1st event in the displayed list.","lastModifiedDate":"2024-03-11"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"taeewonnn"},"content":"### Adding participant and their information to the global participant list: `addp`","lastModifiedDate":"2024-03-11"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"ChocoRagdoll"},"content":"**Format:** `addp n/\u003cparticipant name\u003e p/\u003cphone number\u003e e/\u003cemail\u003e`","lastModifiedDate":"2024-03-22"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"taeewonnn"},"content":"**Description:**","lastModifiedDate":"2024-03-05"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":79,"author":{"gitId":"taeewonnn"},"content":"Adds a new participant to the app, allowing them to be added to an event later.","lastModifiedDate":"2024-03-05"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":81,"author":{"gitId":"-"},"content":"**Caution:**","lastModifiedDate":"2023-09-12"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":83,"author":{"gitId":"taeewonnn"},"content":"* `\u003cparticipant name\u003e` should be **alphabetic**, **non-empty** and **not longer than 64 characters**.","lastModifiedDate":"2024-03-11"},{"lineNumber":84,"author":{"gitId":"taeewonnn"},"content":"* `\u003cphone number\u003e` should be **numeric**, **non-empty** and **not longer than 15 digits**.","lastModifiedDate":"2024-03-11"},{"lineNumber":85,"author":{"gitId":"taeewonnn"},"content":"* `\u003cemail\u003e` should be **alphanumeric**, **non-empty** and **not longer than 64 characters**.","lastModifiedDate":"2024-03-11"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":87,"author":{"gitId":"taeewonnn"},"content":"**Examples:**","lastModifiedDate":"2024-03-05"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"ChocoRagdoll"},"content":"- `addp n/David p/98987676 e/david@example.com` adds a participant named `David`","lastModifiedDate":"2024-03-22"},{"lineNumber":90,"author":{"gitId":"taeewonnn"},"content":" with the phone number `98987676` and email of `david@example.com` to the displayed contacts list.","lastModifiedDate":"2024-03-11"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"ChocoRagdoll"},"content":"### Invite person to selected event: `inv`","lastModifiedDate":"2024-03-22"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"ChocoRagdoll"},"content":"**Format:** `inv \u003cparticipant index\u003e`","lastModifiedDate":"2024-03-22"},{"lineNumber":95,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":96,"author":{"gitId":"myang2020"},"content":"**Description:**","lastModifiedDate":"2024-03-07"},{"lineNumber":97,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":98,"author":{"gitId":"myang2020"},"content":"Invite participants from the global participant list to the selected event.","lastModifiedDate":"2024-03-10"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"myang2020"},"content":"**Caution:**","lastModifiedDate":"2024-03-07"},{"lineNumber":101,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":102,"author":{"gitId":"myang2020"},"content":"* `\u003cparticipant index\u003e` should be within valid range of global participants","lastModifiedDate":"2024-03-12"},{"lineNumber":103,"author":{"gitId":"myang2020"},"content":"* Duplicate participants is **not allowed.**","lastModifiedDate":"2024-03-07"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":105,"author":{"gitId":"myang2020"},"content":"**Examples:**","lastModifiedDate":"2024-03-07"},{"lineNumber":106,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":107,"author":{"gitId":"ChocoRagdoll"},"content":"- `inv 5` Adds participant indexed 5 to selected event.","lastModifiedDate":"2024-03-22"},{"lineNumber":108,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":109,"author":{"gitId":"myang2020"},"content":"### Clearing all entries : `clear`","lastModifiedDate":"2024-03-12"},{"lineNumber":110,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":111,"author":{"gitId":"myang2020"},"content":"Clears all entries from the address book.","lastModifiedDate":"2024-03-12"},{"lineNumber":112,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":113,"author":{"gitId":"myang2020"},"content":"Format: `clear`","lastModifiedDate":"2024-03-12"},{"lineNumber":114,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":115,"author":{"gitId":"myang2020"},"content":"### Edit existing participant: `editp`","lastModifiedDate":"2024-03-10"},{"lineNumber":116,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":117,"author":{"gitId":"ChocoRagdoll"},"content":"**Format:** `editp \u003cparticipant index\u003e n/\u003cparticipant name\u003e p/\u003cphone number\u003e e/\u003cemail\u003e`","lastModifiedDate":"2024-03-22"},{"lineNumber":118,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":119,"author":{"gitId":"myang2020"},"content":"**Description:**","lastModifiedDate":"2024-03-10"},{"lineNumber":120,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":121,"author":{"gitId":"myang2020"},"content":"Updates the contact information of a participant in the app.","lastModifiedDate":"2024-03-10"},{"lineNumber":122,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":123,"author":{"gitId":"myang2020"},"content":"**Caution:**","lastModifiedDate":"2024-03-10"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":125,"author":{"gitId":"myang2020"},"content":"* `\u003cparticipant index\u003e` should be within valid range of global participants","lastModifiedDate":"2024-03-12"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":127,"author":{"gitId":"myang2020"},"content":"**Examples:**","lastModifiedDate":"2024-03-10"},{"lineNumber":128,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":129,"author":{"gitId":"ChocoRagdoll"},"content":"- `editp 5 n/Max p/00000000 e/test@gmail.com` Edits contact details of participant indexed 5.","lastModifiedDate":"2024-03-22"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":131,"author":{"gitId":"ChocoRagdoll"},"content":"### Selecting an event: `sel`","lastModifiedDate":"2024-03-13"},{"lineNumber":132,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":133,"author":{"gitId":"ChocoRagdoll"},"content":"**Format:** `sel \u003cevent index\u003e`","lastModifiedDate":"2024-03-13"},{"lineNumber":134,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":135,"author":{"gitId":"ChocoRagdoll"},"content":"**Description:**","lastModifiedDate":"2024-03-13"},{"lineNumber":136,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":137,"author":{"gitId":"ChocoRagdoll"},"content":"Selects an event from the event list by the event index.","lastModifiedDate":"2024-03-13"},{"lineNumber":138,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":139,"author":{"gitId":"ChocoRagdoll"},"content":"\u003cbox type\u003d\"warning\" seamless\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":140,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":141,"author":{"gitId":"ChocoRagdoll"},"content":"**Caution:**","lastModifiedDate":"2024-03-13"},{"lineNumber":142,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":143,"author":{"gitId":"ChocoRagdoll"},"content":"* `\u003cevent index\u003e` should be an **integer** no larger than the number of events in the event list.","lastModifiedDate":"2024-03-13"},{"lineNumber":144,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":146,"author":{"gitId":"ChocoRagdoll"},"content":"**Examples:**","lastModifiedDate":"2024-03-13"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":148,"author":{"gitId":"ChocoRagdoll"},"content":"- `sel 3` selects the 3rd event.","lastModifiedDate":"2024-03-14"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":150,"author":{"gitId":"ChocoRagdoll"},"content":"### Deselecting an event: `desel`","lastModifiedDate":"2024-03-13"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":152,"author":{"gitId":"ChocoRagdoll"},"content":"**Format:** `desel`","lastModifiedDate":"2024-03-13"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":154,"author":{"gitId":"ChocoRagdoll"},"content":"**Description:**","lastModifiedDate":"2024-03-13"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":156,"author":{"gitId":"ChocoRagdoll"},"content":"Deselects the selected event and returns to the global participant list.","lastModifiedDate":"2024-03-13"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":158,"author":{"gitId":"ChocoRagdoll"},"content":"**Examples:**","lastModifiedDate":"2024-03-13"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":160,"author":{"gitId":"ChocoRagdoll"},"content":"- After `select 3` which selects the event with index `3`, `desel` deselects the event indexed `3`.","lastModifiedDate":"2024-03-13"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":162,"author":{"gitId":"ChocoRagdoll"},"content":"### Deleting a participant from the global participant list or an event participant list: `delp`","lastModifiedDate":"2024-03-13"},{"lineNumber":163,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":164,"author":{"gitId":"ChocoRagdoll"},"content":"**Format:** `delp \u003cindex\u003e`","lastModifiedDate":"2024-03-13"},{"lineNumber":165,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":166,"author":{"gitId":"ChocoRagdoll"},"content":"**Description:**","lastModifiedDate":"2024-03-13"},{"lineNumber":167,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":168,"author":{"gitId":"ChocoRagdoll"},"content":"- If **no event is selected**, this deletes the participant from both the **global participant list** and **all the","lastModifiedDate":"2024-03-13"},{"lineNumber":169,"author":{"gitId":"ChocoRagdoll"},"content":" events** he/she is in by **his/her index in the global participant list**.","lastModifiedDate":"2024-03-13"},{"lineNumber":170,"author":{"gitId":"ChocoRagdoll"},"content":"- If **an event is selected**, this only removes the participant from the event by **his/her index in the","lastModifiedDate":"2024-03-13"},{"lineNumber":171,"author":{"gitId":"ChocoRagdoll"},"content":" event participant list**.","lastModifiedDate":"2024-03-13"},{"lineNumber":172,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":173,"author":{"gitId":"ChocoRagdoll"},"content":"\u003cbox type\u003d\"warning\" seamless\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":174,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":175,"author":{"gitId":"ChocoRagdoll"},"content":"**Caution:**","lastModifiedDate":"2024-03-13"},{"lineNumber":176,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":177,"author":{"gitId":"ChocoRagdoll"},"content":"* `\u003cindex\u003e` should be an **integer**.","lastModifiedDate":"2024-03-13"},{"lineNumber":178,"author":{"gitId":"ChocoRagdoll"},"content":"* A participant\u0027s `\u003cindex\u003e` in an event participant list can be **different** from that in the global participant list.","lastModifiedDate":"2024-03-13"},{"lineNumber":179,"author":{"gitId":"ChocoRagdoll"},"content":"* `\u003cindex\u003e` should be no larger than the number of participants in the global participant list if no event is selected.","lastModifiedDate":"2024-03-13"},{"lineNumber":180,"author":{"gitId":"ChocoRagdoll"},"content":"* `\u003cindex\u003e` should be no larger than the number of participants in the event participant list if an event is selected.","lastModifiedDate":"2024-03-13"},{"lineNumber":181,"author":{"gitId":"ChocoRagdoll"},"content":"\u003c/box\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":182,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":183,"author":{"gitId":"ChocoRagdoll"},"content":"**Examples:**","lastModifiedDate":"2024-03-13"},{"lineNumber":184,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":185,"author":{"gitId":"ChocoRagdoll"},"content":"- When no event is selected, `delp 9` deletes the 9th participant completely.","lastModifiedDate":"2024-03-14"},{"lineNumber":186,"author":{"gitId":"ChocoRagdoll"},"content":"- `delp 9` after `sel 3` removes the 9th participant from the 3rd event\u0027s participant list.","lastModifiedDate":"2024-03-14"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":188,"author":{"gitId":"-"},"content":"### Locating persons by name: `find`","lastModifiedDate":"2024-03-12"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":190,"author":{"gitId":"-"},"content":"Finds persons whose names contain any of the given keywords.","lastModifiedDate":"2024-03-12"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":192,"author":{"gitId":"-"},"content":"Format: `find KEYWORD [MORE_KEYWORDS]`","lastModifiedDate":"2024-03-12"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":194,"author":{"gitId":"-"},"content":"* The search is case-insensitive. e.g `hans` will match `Hans`","lastModifiedDate":"2024-03-12"},{"lineNumber":195,"author":{"gitId":"-"},"content":"* The order of the keywords does not matter. e.g. `Hans Bo` will match `Bo Hans`","lastModifiedDate":"2024-03-12"},{"lineNumber":196,"author":{"gitId":"-"},"content":"* Only the name is searched.","lastModifiedDate":"2024-03-12"},{"lineNumber":197,"author":{"gitId":"-"},"content":"* Only full words will be matched e.g. `Han` will not match `Hans`","lastModifiedDate":"2024-03-12"},{"lineNumber":198,"author":{"gitId":"-"},"content":"* Persons matching at least one keyword will be returned (i.e. `OR` search).","lastModifiedDate":"2024-03-12"},{"lineNumber":199,"author":{"gitId":"-"},"content":" e.g. `Hans Bo` will return `Hans Gruber`, `Bo Yang`","lastModifiedDate":"2024-03-12"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":201,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2024-03-12"},{"lineNumber":202,"author":{"gitId":"-"},"content":"* `find John` returns `john` and `John Doe`","lastModifiedDate":"2024-03-12"},{"lineNumber":203,"author":{"gitId":"-"},"content":"* `find alex david` returns `Alex Yeoh`, `David Li`\u003cbr\u003e","lastModifiedDate":"2024-03-12"},{"lineNumber":204,"author":{"gitId":"-"},"content":" ![result for \u0027find alex david\u0027](images/findAlexDavidResult.png)","lastModifiedDate":"2024-03-12"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":206,"author":{"gitId":"myang2020"},"content":"### Listing all persons : `list`","lastModifiedDate":"2024-03-12"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":208,"author":{"gitId":"myang2020"},"content":"Shows a list of all persons in the address book.","lastModifiedDate":"2024-03-12"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":210,"author":{"gitId":"myang2020"},"content":"Format: `list`","lastModifiedDate":"2024-03-12"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":212,"author":{"gitId":"myang2020"},"content":"### Viewing help : `help`","lastModifiedDate":"2024-03-12"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":214,"author":{"gitId":"ChocoRagdoll"},"content":"Shows a message explaining how to access the help page.","lastModifiedDate":"2024-03-14"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":216,"author":{"gitId":"myang2020"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2024-03-12"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":218,"author":{"gitId":"myang2020"},"content":"Format: `help`","lastModifiedDate":"2024-03-12"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":220,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2024-03-12"},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":222,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2024-03-12"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":224,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2024-03-12"},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":226,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2024-03-12"},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":228,"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":"2024-03-12"},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":230,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2024-03-12"},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":232,"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":"2024-03-12"},{"lineNumber":233,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":234,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":236,"author":{"gitId":"-"},"content":"**Caution:**","lastModifiedDate":"2024-03-12"},{"lineNumber":237,"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-03-12"},{"lineNumber":238,"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":"2024-03-12"},{"lineNumber":239,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2024-03-12"},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":241,"author":{"gitId":"-"},"content":"### Archiving data files `[coming in v2.0]`","lastModifiedDate":"2024-03-12"},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":243,"author":{"gitId":"-"},"content":"_Details coming soon ..._","lastModifiedDate":"2024-03-12"},{"lineNumber":244,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":247,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23"},{"lineNumber":248,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":249,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":250,"author":{"gitId":"-"},"content":"**A**: Install the app in the other computer and overwrite the empty data file it creates with the file that contains the data of your previous AddressBook home folder.","lastModifiedDate":"2020-05-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":254,"author":{"gitId":"-"},"content":"## Known issues","lastModifiedDate":"2023-09-08"},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":256,"author":{"gitId":"-"},"content":"1. **When using multiple screens**, if you move the application to a secondary screen, and later switch to using only the primary screen, the GUI will open off-screen. The remedy is to delete the `preferences.json` file created by the application before running the application again.","lastModifiedDate":"2023-09-08"},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":258,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08"},{"lineNumber":259,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":260,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":262,"author":{"gitId":"-"},"content":"Action | Format, Examples","lastModifiedDate":"2020-05-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":"-----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-12"},{"lineNumber":264,"author":{"gitId":"ChocoRagdoll"},"content":"**Add Event** | `addev ev/\u003cevent name\u003e` \u003cbr\u003e e.g., `addev ev/Orientation camp`","lastModifiedDate":"2024-03-22"},{"lineNumber":265,"author":{"gitId":"myang2020"},"content":"**Delete Event** | `delev \u003cindex\u003e` \u003cbr\u003e e.g., `delev 1`","lastModifiedDate":"2024-03-12"},{"lineNumber":266,"author":{"gitId":"ChocoRagdoll"},"content":"**Add Participant** | `addp n/\u003cparticipant name\u003e p/\u003cphone number\u003e e/\u003cemail\u003e` \u003cbr\u003e e.g., `addp n/David p/98987676 e/david@example.com`","lastModifiedDate":"2024-03-22"},{"lineNumber":267,"author":{"gitId":"ChocoRagdoll"},"content":"**Invite to Event** | `inv INDEX` \u003cbr\u003e e.g., `invite 5`","lastModifiedDate":"2024-03-22"},{"lineNumber":268,"author":{"gitId":"ChocoRagdoll"},"content":"**Edit Participant** | `editp \u003cparticipant index\u003e n/\u003cparticipant name\u003e p/\u003cphone number\u003e e/\u003cemail\u003e` \u003cbr\u003e e.g., `editp 5 n/Max p/00000000 e/test@gmail.com`","lastModifiedDate":"2024-03-22"},{"lineNumber":269,"author":{"gitId":"ChocoRagdoll"},"content":"**Select Event** | `sel \u003cevent index\u003e` \u003cbr\u003e e.g., `sel 3`","lastModifiedDate":"2024-03-22"},{"lineNumber":270,"author":{"gitId":"ChocoRagdoll"},"content":"**Delete Participant** | `delp \u003cindex\u003e` \u003cbr\u003e e.g., `delp 2`","lastModifiedDate":"2024-03-22"}],"authorContributionMap":{"Apzure":6,"ChocoRagdoll":67,"-":143,"taeewonnn":23,"myang2020":31}},{"path":"src/main/java/seedu/address/logic/Logic.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-03"},{"lineNumber":11,"author":{"gitId":"Apzure"},"content":"import seedu.address.model.event.Event;","lastModifiedDate":"2024-03-01"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * API of the Logic component","lastModifiedDate":"2016-09-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public interface Logic {","lastModifiedDate":"2016-09-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2016-09-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * @param commandText The command as entered by the user.","lastModifiedDate":"2016-09-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * @return the result of the command execution.","lastModifiedDate":"2016-09-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2017-02-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * @throws ParseException If an error occurs during parsing.","lastModifiedDate":"2017-03-11"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" CommandResult execute(String commandText) throws CommandException, ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Returns the AddressBook.","lastModifiedDate":"2018-12-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * @see seedu.address.model.Model#getAddressBook()","lastModifiedDate":"2018-12-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2018-12-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03"},{"lineNumber":34,"author":{"gitId":"Apzure"},"content":" /** Returns an unmodifiable view of the filtered list of events */","lastModifiedDate":"2024-03-15"},{"lineNumber":35,"author":{"gitId":"Apzure"},"content":" ObservableList\u003cEvent\u003e getFilteredEventList();","lastModifiedDate":"2024-03-15"},{"lineNumber":36,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":37,"author":{"gitId":"Apzure"},"content":" /** Returns an unmodifiable view of the filtered list of persons of the selected event */","lastModifiedDate":"2024-03-15"},{"lineNumber":38,"author":{"gitId":"Apzure"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonListOfSelectedEvent();","lastModifiedDate":"2024-03-15"},{"lineNumber":39,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":" /** Returns an unmodifiable view of the filtered list of persons */","lastModifiedDate":"2017-09-01"},{"lineNumber":41,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-26"},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Set the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"Apzure":7,"-":50}},{"path":"src/main/java/seedu/address/logic/LogicManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2016-09-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.AddressBookParser;","lastModifiedDate":"2017-07-07"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-03"},{"lineNumber":18,"author":{"gitId":"Apzure"},"content":"import seedu.address.model.event.Event;","lastModifiedDate":"2024-03-01"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.storage.Storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * The main LogicManager of the app.","lastModifiedDate":"2016-09-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class LogicManager implements Logic {","lastModifiedDate":"2018-12-09"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_ERROR_FORMAT \u003d \"Could not save data due to the following error: %s\";","lastModifiedDate":"2023-06-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_PERMISSION_ERROR_FORMAT \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \"Could not save data to file %s due to insufficient permissions to write to the file or the folder.\";","lastModifiedDate":"2023-06-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(LogicManager.class);","lastModifiedDate":"2016-09-29"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final Model model;","lastModifiedDate":"2016-09-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final Storage storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private final AddressBookParser addressBookParser;","lastModifiedDate":"2017-07-07"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Constructs a {@code LogicManager} with the given {@code Model} and {@code Storage}.","lastModifiedDate":"2020-05-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public LogicManager(Model model, Storage storage) {","lastModifiedDate":"2018-12-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.model \u003d model;","lastModifiedDate":"2016-09-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.storage \u003d storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":" addressBookParser \u003d new AddressBookParser();","lastModifiedDate":"2018-01-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public CommandResult execute(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":48,"author":{"gitId":"-"},"content":" logger.info(\"----------------[USER COMMAND][\" + commandText + \"]\");","lastModifiedDate":"2016-09-29"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":" CommandResult commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":" Command command \u003d addressBookParser.parseCommand(commandText);","lastModifiedDate":"2017-07-07"},{"lineNumber":52,"author":{"gitId":"-"},"content":" commandResult \u003d command.execute(model);","lastModifiedDate":"2019-01-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":55,"author":{"gitId":"-"},"content":" storage.saveAddressBook(model.getAddressBook());","lastModifiedDate":"2018-12-09"},{"lineNumber":56,"author":{"gitId":"-"},"content":" } catch (AccessDeniedException e) {","lastModifiedDate":"2023-06-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_PERMISSION_ERROR_FORMAT, e.getMessage()), e);","lastModifiedDate":"2023-06-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2018-12-09"},{"lineNumber":59,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_ERROR_FORMAT, ioe.getMessage()), ioe);","lastModifiedDate":"2023-06-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-03"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2018-12-03"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return model.getAddressBook();","lastModifiedDate":"2018-12-03"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-03"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03"},{"lineNumber":70,"author":{"gitId":"Apzure"},"content":" @Override","lastModifiedDate":"2024-03-01"},{"lineNumber":71,"author":{"gitId":"Apzure"},"content":" public ObservableList\u003cEvent\u003e getFilteredEventList() {","lastModifiedDate":"2024-03-15"},{"lineNumber":72,"author":{"gitId":"Apzure"},"content":" return model.getFilteredEventList();","lastModifiedDate":"2024-03-01"},{"lineNumber":73,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":74,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":75,"author":{"gitId":"Apzure"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":76,"author":{"gitId":"Apzure"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonListOfSelectedEvent() {","lastModifiedDate":"2024-03-15"},{"lineNumber":77,"author":{"gitId":"Apzure"},"content":" return model.getFilteredPersonListOfSelectedEvent();","lastModifiedDate":"2024-03-15"},{"lineNumber":78,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":79,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":82,"author":{"gitId":"-"},"content":" return model.getFilteredPersonList();","lastModifiedDate":"2016-09-25"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-29"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" return model.getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":92,"author":{"gitId":"-"},"content":" return model.getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":" model.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"Apzure":11,"-":88}},{"path":"src/main/java/seedu/address/logic/Messages.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2023-07-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-07-14"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-07-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2023-07-14"},{"lineNumber":8,"author":{"gitId":"Apzure"},"content":"import seedu.address.model.event.Event;","lastModifiedDate":"2024-03-02"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2019-02-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Container for user visible messages.","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class Messages {","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2016-09-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_PERSON_DISPLAYED_INDEX \u003d \"The person index provided is invalid\";","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String MESSAGE_PERSONS_LISTED_OVERVIEW \u003d \"%1$d persons listed!\";","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2023-07-14"},{"lineNumber":22,"author":{"gitId":"Apzure"},"content":" public static final String MESSAGE_INVALID_EVENT_DISPLAYED_INDEX \u003d \"The event index provided is invalid\";","lastModifiedDate":"2024-03-15"},{"lineNumber":23,"author":{"gitId":"myang2020"},"content":" public static final String MESSAGE_SELECT_EVENT \u003d \"No event is selected!\";","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-07-14"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2023-07-14"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2023-07-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":31,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-07-14"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":34,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Formats the {@code person} for display to the user.","lastModifiedDate":"2019-02-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static String format(Person person) {","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" builder.append(person.getName())","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" .append(\"; Phone: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" .append(person.getPhone())","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" .append(\"; Email: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" .append(person.getEmail())","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" .append(\"; Address: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" .append(person.getAddress())","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" .append(\"; Tags: \");","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" person.getTags().forEach(builder::append);","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"Apzure"},"content":" /**","lastModifiedDate":"2024-03-02"},{"lineNumber":55,"author":{"gitId":"Apzure"},"content":" * Formats the {@code event} for display to the user.","lastModifiedDate":"2024-03-02"},{"lineNumber":56,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-02"},{"lineNumber":57,"author":{"gitId":"Apzure"},"content":" public static String format(Event event) {","lastModifiedDate":"2024-03-02"},{"lineNumber":58,"author":{"gitId":"Apzure"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2024-03-02"},{"lineNumber":59,"author":{"gitId":"Apzure"},"content":" builder.append(event.getEventName());","lastModifiedDate":"2024-03-02"},{"lineNumber":60,"author":{"gitId":"Apzure"},"content":" return builder.toString();","lastModifiedDate":"2024-03-02"},{"lineNumber":61,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":62,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":63,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"Apzure":11,"-":51,"myang2020":1}},{"path":"src/main/java/seedu/address/logic/commands/AddEventCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Apzure"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-02"},{"lineNumber":2,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":3,"author":{"gitId":"Apzure"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-02"},{"lineNumber":4,"author":{"gitId":"Apzure"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EVENT_NAME;","lastModifiedDate":"2024-03-02"},{"lineNumber":5,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":6,"author":{"gitId":"Apzure"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-02"},{"lineNumber":7,"author":{"gitId":"Apzure"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-02"},{"lineNumber":8,"author":{"gitId":"Apzure"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-02"},{"lineNumber":9,"author":{"gitId":"Apzure"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-02"},{"lineNumber":10,"author":{"gitId":"Apzure"},"content":"import seedu.address.model.event.Event;","lastModifiedDate":"2024-03-02"},{"lineNumber":11,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":12,"author":{"gitId":"Apzure"},"content":"/**","lastModifiedDate":"2024-03-02"},{"lineNumber":13,"author":{"gitId":"Apzure"},"content":" * Creates and adds an event to the address book.","lastModifiedDate":"2024-03-02"},{"lineNumber":14,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-02"},{"lineNumber":15,"author":{"gitId":"Apzure"},"content":"public class AddEventCommand extends Command {","lastModifiedDate":"2024-03-10"},{"lineNumber":16,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":17,"author":{"gitId":"Apzure"},"content":" public static final String COMMAND_WORD \u003d \"addev\";","lastModifiedDate":"2024-03-10"},{"lineNumber":18,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":19,"author":{"gitId":"Apzure"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Creates and adds an event to the address book. \"","lastModifiedDate":"2024-03-02"},{"lineNumber":20,"author":{"gitId":"Apzure"},"content":" + \"Parameters: \"","lastModifiedDate":"2024-03-02"},{"lineNumber":21,"author":{"gitId":"Apzure"},"content":" + PREFIX_EVENT_NAME + \"EVENT_NAME\";","lastModifiedDate":"2024-03-02"},{"lineNumber":22,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":23,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":24,"author":{"gitId":"Apzure"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New event created: %1$s\";","lastModifiedDate":"2024-03-02"},{"lineNumber":25,"author":{"gitId":"Apzure"},"content":" public static final String MESSAGE_DUPLICATE_EVENT \u003d \"This event already exists in the address book\";","lastModifiedDate":"2024-03-02"},{"lineNumber":26,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":27,"author":{"gitId":"Apzure"},"content":" private final Event toAdd;","lastModifiedDate":"2024-03-02"},{"lineNumber":28,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":29,"author":{"gitId":"Apzure"},"content":" /**","lastModifiedDate":"2024-03-02"},{"lineNumber":30,"author":{"gitId":"Apzure"},"content":" * Creates a CreateEventCommand to add the specified {@code Event}.","lastModifiedDate":"2024-03-02"},{"lineNumber":31,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-02"},{"lineNumber":32,"author":{"gitId":"Apzure"},"content":" public AddEventCommand(Event event) {","lastModifiedDate":"2024-03-10"},{"lineNumber":33,"author":{"gitId":"Apzure"},"content":" requireNonNull(event);","lastModifiedDate":"2024-03-02"},{"lineNumber":34,"author":{"gitId":"Apzure"},"content":" toAdd \u003d event;","lastModifiedDate":"2024-03-02"},{"lineNumber":35,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":36,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":37,"author":{"gitId":"Apzure"},"content":" @Override","lastModifiedDate":"2024-03-02"},{"lineNumber":38,"author":{"gitId":"Apzure"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-02"},{"lineNumber":39,"author":{"gitId":"Apzure"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-02"},{"lineNumber":40,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":41,"author":{"gitId":"Apzure"},"content":" if (model.hasEvent(toAdd)) {","lastModifiedDate":"2024-03-02"},{"lineNumber":42,"author":{"gitId":"Apzure"},"content":" throw new CommandException(MESSAGE_DUPLICATE_EVENT);","lastModifiedDate":"2024-03-02"},{"lineNumber":43,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":44,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":45,"author":{"gitId":"Apzure"},"content":" model.addEvent(toAdd);","lastModifiedDate":"2024-03-02"},{"lineNumber":46,"author":{"gitId":"Apzure"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2024-03-02"},{"lineNumber":47,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":48,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":49,"author":{"gitId":"Apzure"},"content":" @Override","lastModifiedDate":"2024-03-02"},{"lineNumber":50,"author":{"gitId":"Apzure"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-02"},{"lineNumber":51,"author":{"gitId":"Apzure"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-02"},{"lineNumber":52,"author":{"gitId":"Apzure"},"content":" return true;","lastModifiedDate":"2024-03-02"},{"lineNumber":53,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":54,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":55,"author":{"gitId":"Apzure"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-02"},{"lineNumber":56,"author":{"gitId":"Apzure"},"content":" if (!(other instanceof AddEventCommand)) {","lastModifiedDate":"2024-03-10"},{"lineNumber":57,"author":{"gitId":"Apzure"},"content":" return false;","lastModifiedDate":"2024-03-02"},{"lineNumber":58,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":59,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":60,"author":{"gitId":"Apzure"},"content":" AddEventCommand otherCreateEventCommand \u003d (AddEventCommand) other;","lastModifiedDate":"2024-03-10"},{"lineNumber":61,"author":{"gitId":"Apzure"},"content":" return toAdd.equals(otherCreateEventCommand.toAdd);","lastModifiedDate":"2024-03-02"},{"lineNumber":62,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":63,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":64,"author":{"gitId":"Apzure"},"content":" @Override","lastModifiedDate":"2024-03-02"},{"lineNumber":65,"author":{"gitId":"Apzure"},"content":" public String toString() {","lastModifiedDate":"2024-03-02"},{"lineNumber":66,"author":{"gitId":"Apzure"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-02"},{"lineNumber":67,"author":{"gitId":"Apzure"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2024-03-02"},{"lineNumber":68,"author":{"gitId":"Apzure"},"content":" .toString();","lastModifiedDate":"2024-03-02"},{"lineNumber":69,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":70,"author":{"gitId":"Apzure"},"content":"}","lastModifiedDate":"2024-03-02"}],"authorContributionMap":{"Apzure":70}},{"path":"src/main/java/seedu/address/logic/commands/DeleteEventCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"taeewonnn"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"taeewonnn"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"taeewonnn"},"content":"import java.util.List;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"taeewonnn"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"taeewonnn"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"taeewonnn"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"taeewonnn"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"taeewonnn"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"taeewonnn"},"content":"import seedu.address.model.event.Event;","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"taeewonnn"},"content":"/**","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"taeewonnn"},"content":" * Deletes an event identified using it\u0027s displayed index from the address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"taeewonnn"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"taeewonnn"},"content":"public class DeleteEventCommand extends Command {","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"taeewonnn"},"content":" public static final String COMMAND_WORD \u003d \"delev\";","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"taeewonnn"},"content":" public static final String MESSAGE_INVALID_DELETE_EVENT \u003d \"Cannot delete the event that is currently selected\";","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"taeewonnn"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"taeewonnn"},"content":" + \": Deletes the event identified by the index number used in the displayed event list.\\n\"","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"taeewonnn"},"content":" + \"Parameters: INDEX (must be a positive integer)\\n\"","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"taeewonnn"},"content":" + \"Example: \" + COMMAND_WORD + \"1\";","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"taeewonnn"},"content":" public static final String MESSAGE_DELETE_EVENT_SUCCESS \u003d \"Deleted Event: %1$s\";","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"taeewonnn"},"content":" public final Index targetIndex;","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"taeewonnn"},"content":" public DeleteEventCommand(Index targetIndex) {","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"taeewonnn"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"taeewonnn"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"taeewonnn"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"taeewonnn"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"taeewonnn"},"content":" List\u003cEvent\u003e lastShownList \u003d model.getFilteredEventList();","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"taeewonnn"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"taeewonnn"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_EVENT_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"taeewonnn"},"content":" Event eventToDelete \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"taeewonnn"},"content":" if (model.isSameSelectedEvent(eventToDelete)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"taeewonnn"},"content":" throw new CommandException(MESSAGE_INVALID_DELETE_EVENT);","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"taeewonnn"},"content":" model.deleteEvent(eventToDelete);","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"taeewonnn"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_EVENT_SUCCESS, Messages.format(eventToDelete)));","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"taeewonnn"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"taeewonnn"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"taeewonnn"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"taeewonnn"},"content":" return true;","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"taeewonnn"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"taeewonnn"},"content":" if (!(other instanceof DeleteEventCommand)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"taeewonnn"},"content":" return false;","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"taeewonnn"},"content":" DeleteEventCommand otherDeleteEventCommand \u003d (DeleteEventCommand) other;","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"taeewonnn"},"content":" return targetIndex.equals(otherDeleteEventCommand.targetIndex);","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"taeewonnn"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"taeewonnn"},"content":" public String toString() {","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"taeewonnn"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"taeewonnn"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"taeewonnn"},"content":" .toString();","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"taeewonnn"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"taeewonnn":76}},{"path":"src/main/java/seedu/address/logic/commands/DeletePersonCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ChocoRagdoll"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"ChocoRagdoll"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"ChocoRagdoll"},"content":"import java.util.List;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"ChocoRagdoll"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"ChocoRagdoll"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"ChocoRagdoll"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"ChocoRagdoll"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"ChocoRagdoll"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"ChocoRagdoll"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"ChocoRagdoll"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"ChocoRagdoll"},"content":" * When no event is selected, deletes a person identified using it\u0027s displayed index from the address book.","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"ChocoRagdoll"},"content":" * When an event is selected, deletes a person identified using it\u0027s displayed index from the event.","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"ChocoRagdoll"},"content":"public class DeletePersonCommand extends Command {","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"ChocoRagdoll"},"content":" public static final String COMMAND_WORD \u003d \"delp\";","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"ChocoRagdoll"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"ChocoRagdoll"},"content":" + \": When no event is selected, deletes the person identified by the index number used in the displayed \"","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"ChocoRagdoll"},"content":" + \"person list; when an event is selected, deletes a person identified using it\u0027s displayed index from \"","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"ChocoRagdoll"},"content":" + \"the event.\\n\"","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"ChocoRagdoll"},"content":" + \"Parameters: INDEX (must be a positive integer)\\n\"","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"ChocoRagdoll"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"ChocoRagdoll"},"content":" public static final String MESSAGE_DELETE_PERSON_GLOBAL_SUCCESS \u003d \"Deleted Person: %1$s from the address book.\";","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"ChocoRagdoll"},"content":" public static final String MESSAGE_DELETE_PERSON_EVENT_SUCCESS \u003d \"Deleted Person: %1$s from the selected event.\";","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"ChocoRagdoll"},"content":" private final Index targetIndex;","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"ChocoRagdoll"},"content":" * Constructor of DeletePersonCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"ChocoRagdoll"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"ChocoRagdoll"},"content":" * @param targetIndex Index of person user wants to delete.","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"ChocoRagdoll"},"content":" public DeletePersonCommand(Index targetIndex) {","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"ChocoRagdoll"},"content":" requireNonNull(targetIndex);","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"ChocoRagdoll"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"ChocoRagdoll"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"ChocoRagdoll"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"ChocoRagdoll"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"ChocoRagdoll"},"content":" if (model.isAnEventSelected()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"ChocoRagdoll"},"content":" return deleteFromEvent(model);","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"ChocoRagdoll"},"content":" } else {","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"ChocoRagdoll"},"content":" return deleteFromGlobal(model);","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"ChocoRagdoll"},"content":" * Handles the deletion of a person from the global list. This method is called when no event is currently","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"ChocoRagdoll"},"content":" * selected in the model.","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"ChocoRagdoll"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"ChocoRagdoll"},"content":" * @param model The model from which the person will be deleted globally. Must not be null.","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"ChocoRagdoll"},"content":" * @return A {@link CommandResult} object containing the success message of the global deletion.","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"ChocoRagdoll"},"content":" * @throws CommandException If the target index is invalid, i.e., if it is out of bounds of the list size.","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"ChocoRagdoll"},"content":" public CommandResult deleteFromGlobal(Model model) throws CommandException {","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"ChocoRagdoll"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"ChocoRagdoll"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"ChocoRagdoll"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"ChocoRagdoll"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"ChocoRagdoll"},"content":" Person personToDelete \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"ChocoRagdoll"},"content":" model.deletePerson(personToDelete);","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"ChocoRagdoll"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_PERSON_GLOBAL_SUCCESS, Messages.format(personToDelete)));","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"ChocoRagdoll"},"content":" * Handles the deletion of a person from the list of a currently selected event. This method is called","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"ChocoRagdoll"},"content":" * when an event is selected in the model.","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"ChocoRagdoll"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"ChocoRagdoll"},"content":" * @param model The model from which the person will be deleted from the selected event. Must not be null.","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"ChocoRagdoll"},"content":" * @return A {@link CommandResult} object containing the success message of the event-specific deletion.","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"ChocoRagdoll"},"content":" * @throws CommandException If no event is selected, if the target index is invalid (out of bounds of the","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"ChocoRagdoll"},"content":" * list size), or if the person is not part of the selected event.","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"ChocoRagdoll"},"content":" public CommandResult deleteFromEvent(Model model) throws CommandException {","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"ChocoRagdoll"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"ChocoRagdoll"},"content":" if (!model.isAnEventSelected()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":88,"author":{"gitId":"ChocoRagdoll"},"content":" throw new CommandException(Messages.MESSAGE_SELECT_EVENT);","lastModifiedDate":"2024-03-20"},{"lineNumber":89,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":90,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":91,"author":{"gitId":"ChocoRagdoll"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonListOfSelectedEvent();","lastModifiedDate":"2024-03-20"},{"lineNumber":92,"author":{"gitId":"ChocoRagdoll"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":93,"author":{"gitId":"ChocoRagdoll"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-20"},{"lineNumber":94,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":95,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":96,"author":{"gitId":"ChocoRagdoll"},"content":" Person personToDelete \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2024-03-20"},{"lineNumber":97,"author":{"gitId":"ChocoRagdoll"},"content":" model.deletePersonFromSelectedEvent(personToDelete);","lastModifiedDate":"2024-03-20"},{"lineNumber":98,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":99,"author":{"gitId":"ChocoRagdoll"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_PERSON_EVENT_SUCCESS, personToDelete.getName()));","lastModifiedDate":"2024-03-20"},{"lineNumber":100,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":101,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":102,"author":{"gitId":"ChocoRagdoll"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":103,"author":{"gitId":"ChocoRagdoll"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-20"},{"lineNumber":104,"author":{"gitId":"ChocoRagdoll"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-20"},{"lineNumber":105,"author":{"gitId":"ChocoRagdoll"},"content":" return true;","lastModifiedDate":"2024-03-20"},{"lineNumber":106,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":107,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":108,"author":{"gitId":"ChocoRagdoll"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-20"},{"lineNumber":109,"author":{"gitId":"ChocoRagdoll"},"content":" if (!(other instanceof DeletePersonCommand)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":110,"author":{"gitId":"ChocoRagdoll"},"content":" return false;","lastModifiedDate":"2024-03-20"},{"lineNumber":111,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":112,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":113,"author":{"gitId":"ChocoRagdoll"},"content":" DeletePersonCommand otherDeleteCommand \u003d (DeletePersonCommand) other;","lastModifiedDate":"2024-03-20"},{"lineNumber":114,"author":{"gitId":"ChocoRagdoll"},"content":" return targetIndex.equals(otherDeleteCommand.targetIndex);","lastModifiedDate":"2024-03-20"},{"lineNumber":115,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":116,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":117,"author":{"gitId":"ChocoRagdoll"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":118,"author":{"gitId":"ChocoRagdoll"},"content":" public String toString() {","lastModifiedDate":"2024-03-20"},{"lineNumber":119,"author":{"gitId":"ChocoRagdoll"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-20"},{"lineNumber":120,"author":{"gitId":"ChocoRagdoll"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2024-03-20"},{"lineNumber":121,"author":{"gitId":"ChocoRagdoll"},"content":" .toString();","lastModifiedDate":"2024-03-20"},{"lineNumber":122,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":123,"author":{"gitId":"ChocoRagdoll"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"ChocoRagdoll":123}},{"path":"src/main/java/seedu/address/logic/commands/DeselectCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"myang2020"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"myang2020"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"myang2020"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"myang2020"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"myang2020"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"myang2020"},"content":" * Deselects the currently selected event.","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"myang2020"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"myang2020"},"content":"public class DeselectCommand extends Command {","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"myang2020"},"content":" public static final String COMMAND_WORD \u003d \"desel\";","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"myang2020"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"myang2020"},"content":" + \": Deselects the currently selected event.\\n\"","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"myang2020"},"content":" + \"Example: \" + COMMAND_WORD;","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"myang2020"},"content":" public static final String MESSAGE_DESELECT_EVENT_SUCCESS \u003d \"Event deselected.\";","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"myang2020"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"myang2020"},"content":" * Executes the deselect command.","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"myang2020"},"content":" *","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"myang2020"},"content":" * @param model {@code Model} which the command should operate on.","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"myang2020"},"content":" * @return Result of the command execution.","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"myang2020"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"myang2020"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"myang2020"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"myang2020"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"myang2020"},"content":" model.deselectEvent();","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"myang2020"},"content":" return new CommandResult(MESSAGE_DESELECT_EVENT_SUCCESS);","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"myang2020"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"myang2020"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"myang2020"},"content":" return other \u003d\u003d this || other instanceof DeselectCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"myang2020"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"myang2020"},"content":" public String toString() {","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"myang2020"},"content":" return new ToStringBuilder(this).toString();","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"myang2020"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"myang2020":42}},{"path":"src/main/java/seedu/address/logic/commands/InviteCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"myang2020"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"myang2020"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"myang2020"},"content":"import java.util.List;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"myang2020"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"myang2020"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"myang2020"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"myang2020"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"myang2020"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"myang2020"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"myang2020"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"myang2020"},"content":" * Invites a person to an event using their displayed index from the person list.","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"myang2020"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"myang2020"},"content":"public class InviteCommand extends Command {","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"myang2020"},"content":" public static final String COMMAND_WORD \u003d \"inv\";","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"myang2020"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"myang2020"},"content":" + \": Invites the person identified by the index number used in the displayed person list to \"","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"myang2020"},"content":" + \"the selected event.\\n\"","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"myang2020"},"content":" + \"Parameters: INDEX (must be a positive integer)\\n\"","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"myang2020"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"myang2020"},"content":" public static final String MESSAGE_INVITE_PERSON_SUCCESS \u003d \"Invited Person: %1$s to the selected event\";","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"myang2020"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the selected event\";","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"myang2020"},"content":" private final Index targetIndex;","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"myang2020"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"myang2020"},"content":" * Constructor of InviteCommand","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"myang2020"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"myang2020"},"content":" * @param targetIndex Index of person user wants to invite to selected event.","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"myang2020"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"myang2020"},"content":" public InviteCommand(Index targetIndex) {","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"myang2020"},"content":" requireNonNull(targetIndex);","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"myang2020"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"myang2020"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"myang2020"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"myang2020"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"myang2020"},"content":" if (!model.isAnEventSelected()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"myang2020"},"content":" throw new CommandException(Messages.MESSAGE_SELECT_EVENT);","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"myang2020"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"myang2020"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"myang2020"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"myang2020"},"content":" Person personToInvite \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"myang2020"},"content":" if (model.isPersonInSelectedEvent(personToInvite)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"myang2020"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"myang2020"},"content":" model.addPersonToSelectedEvent(personToInvite);","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"myang2020"},"content":" return new CommandResult(String.format(MESSAGE_INVITE_PERSON_SUCCESS, personToInvite.getName()));","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"myang2020"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"myang2020"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"myang2020"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"myang2020"},"content":" return true;","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"myang2020"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"myang2020"},"content":" if (!(other instanceof InviteCommand)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"myang2020"},"content":" return false;","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"myang2020"},"content":" InviteCommand otherInviteCommand \u003d (InviteCommand) other;","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"myang2020"},"content":" return targetIndex.equals(otherInviteCommand.targetIndex);","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"myang2020"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"myang2020"},"content":" public String toString() {","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"myang2020"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"myang2020"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2024-03-17"},{"lineNumber":82,"author":{"gitId":"myang2020"},"content":" .toString();","lastModifiedDate":"2024-03-17"},{"lineNumber":83,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":84,"author":{"gitId":"myang2020"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"myang2020":84}},{"path":"src/main/java/seedu/address/logic/commands/SelectCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Apzure"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-15"},{"lineNumber":2,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":3,"author":{"gitId":"Apzure"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-15"},{"lineNumber":4,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":5,"author":{"gitId":"Apzure"},"content":"import java.util.List;","lastModifiedDate":"2024-03-15"},{"lineNumber":6,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":7,"author":{"gitId":"Apzure"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-15"},{"lineNumber":8,"author":{"gitId":"Apzure"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-15"},{"lineNumber":9,"author":{"gitId":"Apzure"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-15"},{"lineNumber":10,"author":{"gitId":"Apzure"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-15"},{"lineNumber":11,"author":{"gitId":"Apzure"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-15"},{"lineNumber":12,"author":{"gitId":"Apzure"},"content":"import seedu.address.model.event.Event;","lastModifiedDate":"2024-03-15"},{"lineNumber":13,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":14,"author":{"gitId":"Apzure"},"content":"/**","lastModifiedDate":"2024-03-15"},{"lineNumber":15,"author":{"gitId":"Apzure"},"content":" * Selects an event using its displayed index from the event list.","lastModifiedDate":"2024-03-15"},{"lineNumber":16,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":17,"author":{"gitId":"Apzure"},"content":"public class SelectCommand extends Command {","lastModifiedDate":"2024-03-15"},{"lineNumber":18,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":19,"author":{"gitId":"Apzure"},"content":" public static final String COMMAND_WORD \u003d \"sel\";","lastModifiedDate":"2024-03-15"},{"lineNumber":20,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":21,"author":{"gitId":"Apzure"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-15"},{"lineNumber":22,"author":{"gitId":"Apzure"},"content":" + \": Selects the event identified by the index number used in the displayed event list.\\n\"","lastModifiedDate":"2024-03-15"},{"lineNumber":23,"author":{"gitId":"Apzure"},"content":" + \"Parameters: INDEX (must be a positive integer)\\n\"","lastModifiedDate":"2024-03-15"},{"lineNumber":24,"author":{"gitId":"Apzure"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2024-03-15"},{"lineNumber":25,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":26,"author":{"gitId":"Apzure"},"content":" public static final String MESSAGE_SELECT_EVENT_SUCCESS \u003d \"Selected Event: %1$s\";","lastModifiedDate":"2024-03-15"},{"lineNumber":27,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":28,"author":{"gitId":"myang2020"},"content":" private final Index targetIndex;","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":30,"author":{"gitId":"myang2020"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"myang2020"},"content":" * Constructor of SelectCommand","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"myang2020"},"content":" *","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"myang2020"},"content":" * @param targetIndex Index of event user wants to select.","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"myang2020"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"Apzure"},"content":" public SelectCommand(Index targetIndex) {","lastModifiedDate":"2024-03-15"},{"lineNumber":36,"author":{"gitId":"myang2020"},"content":" requireNonNull(targetIndex);","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"Apzure"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2024-03-15"},{"lineNumber":38,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":39,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":40,"author":{"gitId":"Apzure"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":41,"author":{"gitId":"Apzure"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-15"},{"lineNumber":42,"author":{"gitId":"Apzure"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-15"},{"lineNumber":43,"author":{"gitId":"Apzure"},"content":" List\u003cEvent\u003e lastShownList \u003d model.getFilteredEventList();","lastModifiedDate":"2024-03-15"},{"lineNumber":44,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":45,"author":{"gitId":"Apzure"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-03-15"},{"lineNumber":46,"author":{"gitId":"Apzure"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_EVENT_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-15"},{"lineNumber":47,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":48,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":49,"author":{"gitId":"Apzure"},"content":" Event selectedEvent \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2024-03-15"},{"lineNumber":50,"author":{"gitId":"Apzure"},"content":" model.selectEvent(selectedEvent);","lastModifiedDate":"2024-03-15"},{"lineNumber":51,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":52,"author":{"gitId":"Apzure"},"content":" return new CommandResult(String.format(MESSAGE_SELECT_EVENT_SUCCESS, Messages.format(selectedEvent)));","lastModifiedDate":"2024-03-15"},{"lineNumber":53,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":54,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":55,"author":{"gitId":"Apzure"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":56,"author":{"gitId":"Apzure"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-15"},{"lineNumber":57,"author":{"gitId":"Apzure"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-15"},{"lineNumber":58,"author":{"gitId":"Apzure"},"content":" return true;","lastModifiedDate":"2024-03-15"},{"lineNumber":59,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":60,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":61,"author":{"gitId":"Apzure"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-15"},{"lineNumber":62,"author":{"gitId":"Apzure"},"content":" if (!(other instanceof SelectCommand)) {","lastModifiedDate":"2024-03-15"},{"lineNumber":63,"author":{"gitId":"Apzure"},"content":" return false;","lastModifiedDate":"2024-03-15"},{"lineNumber":64,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":65,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":66,"author":{"gitId":"Apzure"},"content":" SelectCommand otherSelectCommand \u003d (SelectCommand) other;","lastModifiedDate":"2024-03-15"},{"lineNumber":67,"author":{"gitId":"Apzure"},"content":" return targetIndex.equals(otherSelectCommand.targetIndex);","lastModifiedDate":"2024-03-15"},{"lineNumber":68,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":69,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":70,"author":{"gitId":"Apzure"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":71,"author":{"gitId":"Apzure"},"content":" public String toString() {","lastModifiedDate":"2024-03-15"},{"lineNumber":72,"author":{"gitId":"Apzure"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-15"},{"lineNumber":73,"author":{"gitId":"Apzure"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2024-03-15"},{"lineNumber":74,"author":{"gitId":"Apzure"},"content":" .toString();","lastModifiedDate":"2024-03-15"},{"lineNumber":75,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":76,"author":{"gitId":"Apzure"},"content":"}","lastModifiedDate":"2024-03-15"}],"authorContributionMap":{"Apzure":69,"myang2020":7}},{"path":"src/main/java/seedu/address/logic/parser/AddEventCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Apzure"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-02"},{"lineNumber":2,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":3,"author":{"gitId":"Apzure"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-02"},{"lineNumber":4,"author":{"gitId":"Apzure"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EVENT_NAME;","lastModifiedDate":"2024-03-02"},{"lineNumber":5,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":6,"author":{"gitId":"Apzure"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-03-02"},{"lineNumber":7,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":8,"author":{"gitId":"Apzure"},"content":"import seedu.address.logic.commands.AddEventCommand;","lastModifiedDate":"2024-03-10"},{"lineNumber":9,"author":{"gitId":"Apzure"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-02"},{"lineNumber":10,"author":{"gitId":"Apzure"},"content":"import seedu.address.model.event.Event;","lastModifiedDate":"2024-03-02"},{"lineNumber":11,"author":{"gitId":"Apzure"},"content":"import seedu.address.model.event.EventName;","lastModifiedDate":"2024-03-02"},{"lineNumber":12,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":13,"author":{"gitId":"Apzure"},"content":"/**","lastModifiedDate":"2024-03-10"},{"lineNumber":14,"author":{"gitId":"Apzure"},"content":" * Parses input arguments and creates a new AddEventCommand object","lastModifiedDate":"2024-03-10"},{"lineNumber":15,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-10"},{"lineNumber":16,"author":{"gitId":"Apzure"},"content":"public class AddEventCommandParser implements Parser\u003cAddEventCommand\u003e {","lastModifiedDate":"2024-03-10"},{"lineNumber":17,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":18,"author":{"gitId":"Apzure"},"content":" /**","lastModifiedDate":"2024-03-02"},{"lineNumber":19,"author":{"gitId":"Apzure"},"content":" * Parses the given {@code String} of arguments in the context of the CreateEventCommand","lastModifiedDate":"2024-03-02"},{"lineNumber":20,"author":{"gitId":"Apzure"},"content":" * and returns an CreateEventComand object for execution.","lastModifiedDate":"2024-03-02"},{"lineNumber":21,"author":{"gitId":"Apzure"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-02"},{"lineNumber":22,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-02"},{"lineNumber":23,"author":{"gitId":"Apzure"},"content":" public AddEventCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-10"},{"lineNumber":24,"author":{"gitId":"Apzure"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-03-02"},{"lineNumber":25,"author":{"gitId":"Apzure"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_EVENT_NAME);","lastModifiedDate":"2024-03-02"},{"lineNumber":26,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":27,"author":{"gitId":"Apzure"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_EVENT_NAME)","lastModifiedDate":"2024-03-02"},{"lineNumber":28,"author":{"gitId":"Apzure"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-03-02"},{"lineNumber":29,"author":{"gitId":"Apzure"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddEventCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-10"},{"lineNumber":30,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":31,"author":{"gitId":"Apzure"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_EVENT_NAME);","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"Apzure"},"content":" EventName eventName \u003d ParserUtil.parseEventName(argMultimap.getValue(PREFIX_EVENT_NAME).get());","lastModifiedDate":"2024-03-02"},{"lineNumber":33,"author":{"gitId":"Apzure"},"content":" Event event \u003d new Event(eventName);","lastModifiedDate":"2024-03-02"},{"lineNumber":34,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":35,"author":{"gitId":"Apzure"},"content":" return new AddEventCommand(event);","lastModifiedDate":"2024-03-10"},{"lineNumber":36,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":37,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":38,"author":{"gitId":"Apzure"},"content":" /**","lastModifiedDate":"2024-03-02"},{"lineNumber":39,"author":{"gitId":"Apzure"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2024-03-02"},{"lineNumber":40,"author":{"gitId":"Apzure"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2024-03-02"},{"lineNumber":41,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-02"},{"lineNumber":42,"author":{"gitId":"Apzure"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-03-02"},{"lineNumber":43,"author":{"gitId":"Apzure"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-03-02"},{"lineNumber":44,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":45,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":46,"author":{"gitId":"Apzure"},"content":"}","lastModifiedDate":"2024-03-02"}],"authorContributionMap":{"Apzure":46}},{"path":"src/main/java/seedu/address/logic/parser/AddressBookParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-07-29"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-07-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":12,"author":{"gitId":"Apzure"},"content":"import seedu.address.logic.commands.AddEventCommand;","lastModifiedDate":"2024-03-10"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2017-01-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":16,"author":{"gitId":"taeewonnn"},"content":"import seedu.address.logic.commands.DeleteEventCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"ChocoRagdoll"},"content":"import seedu.address.logic.commands.DeletePersonCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"myang2020"},"content":"import seedu.address.logic.commands.DeselectCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":23,"author":{"gitId":"myang2020"},"content":"import seedu.address.logic.commands.InviteCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":25,"author":{"gitId":"Apzure"},"content":"import seedu.address.logic.commands.SelectCommand;","lastModifiedDate":"2024-03-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":28,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":48,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // Note to developers: Change the log level in config.json to enable lower level (i.e., FINE, FINER and lower)","lastModifiedDate":"2023-07-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29"},{"lineNumber":59,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":69,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":72,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":78,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":79,"author":{"gitId":"-"},"content":" return new ListCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24"},{"lineNumber":82,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":84,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26"},{"lineNumber":85,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":87,"author":{"gitId":"Apzure"},"content":" case AddEventCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-10"},{"lineNumber":88,"author":{"gitId":"Apzure"},"content":" return new AddEventCommandParser().parse(arguments);","lastModifiedDate":"2024-03-10"},{"lineNumber":89,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":90,"author":{"gitId":"Apzure"},"content":" case SelectCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-15"},{"lineNumber":91,"author":{"gitId":"Apzure"},"content":" return new SelectCommandParser().parse(arguments);","lastModifiedDate":"2024-03-15"},{"lineNumber":92,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":93,"author":{"gitId":"myang2020"},"content":" case DeselectCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-16"},{"lineNumber":94,"author":{"gitId":"myang2020"},"content":" return new DeselectCommand();","lastModifiedDate":"2024-03-16"},{"lineNumber":95,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":96,"author":{"gitId":"myang2020"},"content":" case InviteCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-17"},{"lineNumber":97,"author":{"gitId":"myang2020"},"content":" return new InviteCommandParser().parse(arguments);","lastModifiedDate":"2024-03-17"},{"lineNumber":98,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":99,"author":{"gitId":"ChocoRagdoll"},"content":" case DeletePersonCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-20"},{"lineNumber":100,"author":{"gitId":"ChocoRagdoll"},"content":" return new DeletePersonCommandParser().parse(arguments);","lastModifiedDate":"2024-03-20"},{"lineNumber":101,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":102,"author":{"gitId":"taeewonnn"},"content":" case DeleteEventCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-18"},{"lineNumber":103,"author":{"gitId":"taeewonnn"},"content":" return new DeleteEventCommandParser().parse(arguments);","lastModifiedDate":"2024-03-18"},{"lineNumber":104,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":105,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26"},{"lineNumber":106,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29"},{"lineNumber":107,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":111,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"Apzure":8,"ChocoRagdoll":4,"-":86,"taeewonnn":4,"myang2020":9}},{"path":"src/main/java/seedu/address/logic/parser/CliSyntax.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11"},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":" /* Prefix definitions */","lastModifiedDate":"2017-02-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"n/\");","lastModifiedDate":"2017-06-06"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"p/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"e/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_ADDRESS \u003d new Prefix(\"a/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"t/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":14,"author":{"gitId":"taeewonnn"},"content":" public static final Prefix PREFIX_EVENT_NAME \u003d new Prefix(\"ev/\");","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"-":15,"taeewonnn":1}},{"path":"src/main/java/seedu/address/logic/parser/DeleteEventCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"taeewonnn"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"taeewonnn"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"taeewonnn"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"taeewonnn"},"content":"import seedu.address.logic.commands.DeleteEventCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"taeewonnn"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"taeewonnn"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"taeewonnn"},"content":" * Parses input arguments and creates a new DeleteEventCommand object","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"taeewonnn"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"taeewonnn"},"content":"public class DeleteEventCommandParser implements Parser\u003cDeleteEventCommand\u003e {","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"taeewonnn"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"taeewonnn"},"content":" * Parses the given {@code String} of arguments in the context of the DeleteEventCommand","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"taeewonnn"},"content":" * and returns a DeleteEventCommand object for execution.","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"taeewonnn"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"taeewonnn"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"taeewonnn"},"content":" public DeleteEventCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"taeewonnn"},"content":" try {","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"taeewonnn"},"content":" Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"taeewonnn"},"content":" return new DeleteEventCommand(index);","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"taeewonnn"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"taeewonnn"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"taeewonnn"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteEventCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"taeewonnn"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"taeewonnn":29}},{"path":"src/main/java/seedu/address/logic/parser/DeletePersonCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ChocoRagdoll"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"ChocoRagdoll"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"ChocoRagdoll"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"ChocoRagdoll"},"content":"import seedu.address.logic.commands.DeletePersonCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"ChocoRagdoll"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"ChocoRagdoll"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"ChocoRagdoll"},"content":" * Parses input arguments and creates a new DeletePersonCommand object","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"ChocoRagdoll"},"content":"public class DeletePersonCommandParser implements Parser\u003cDeletePersonCommand\u003e {","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"ChocoRagdoll"},"content":" * Parses the given {@code String} of arguments in the context of the DeletePersonCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"ChocoRagdoll"},"content":" * and returns a DeletePersonCommand object for execution.","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"ChocoRagdoll"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"ChocoRagdoll"},"content":" public DeletePersonCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"ChocoRagdoll"},"content":" try {","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"ChocoRagdoll"},"content":" Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"ChocoRagdoll"},"content":" return new DeletePersonCommand(index);","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"ChocoRagdoll"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"ChocoRagdoll"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"ChocoRagdoll"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeletePersonCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"ChocoRagdoll"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"ChocoRagdoll":28}},{"path":"src/main/java/seedu/address/logic/parser/InviteCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"myang2020"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"myang2020"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"myang2020"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"myang2020"},"content":"import seedu.address.logic.commands.InviteCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"myang2020"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"myang2020"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"myang2020"},"content":" * Parses input arguments and creates a new InviteCommand object","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"myang2020"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"myang2020"},"content":"public class InviteCommandParser implements Parser\u003cInviteCommand\u003e {","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"myang2020"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"myang2020"},"content":" * Parses the given {@code String} of arguments in the context of the InviteCommand","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"myang2020"},"content":" * and returns an InviteCommand object for execution.","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"myang2020"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"myang2020"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"myang2020"},"content":" public InviteCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"myang2020"},"content":" try {","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"myang2020"},"content":" Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"myang2020"},"content":" return new InviteCommand(index);","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"myang2020"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"myang2020"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"myang2020"},"content":" String.format(Messages.MESSAGE_INVALID_COMMAND_FORMAT, InviteCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"myang2020"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"myang2020":28}},{"path":"src/main/java/seedu/address/logic/parser/ParserUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-02-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-02-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-02-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-02-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10"},{"lineNumber":12,"author":{"gitId":"Apzure"},"content":"import seedu.address.model.event.EventName;","lastModifiedDate":"2024-03-02"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-02-11"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-02-11"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-02-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-02-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-02-11"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02"},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2017-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":32,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02"},{"lineNumber":34,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":36,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29"},{"lineNumber":42,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":46,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29"},{"lineNumber":47,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29"},{"lineNumber":48,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":49,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":57,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":61,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30"},{"lineNumber":62,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":63,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":64,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","lastModifiedDate":"2017-05-30"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":69,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30"},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":72,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":76,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-30"},{"lineNumber":77,"author":{"gitId":"-"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":78,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(trimmedAddress)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":79,"author":{"gitId":"-"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":81,"author":{"gitId":"-"},"content":" return new Address(trimmedAddress);","lastModifiedDate":"2017-05-30"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":84,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":87,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":89,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":90,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":91,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30"},{"lineNumber":92,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":93,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":94,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":96,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","lastModifiedDate":"2017-05-30"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":99,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":102,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":105,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":106,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30"},{"lineNumber":107,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":108,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":109,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":111,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","lastModifiedDate":"2017-05-30"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":114,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":115,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2017-03-07"},{"lineNumber":116,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":117,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":118,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15"},{"lineNumber":119,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11"},{"lineNumber":120,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11"},{"lineNumber":121,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":123,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":125,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":126,"author":{"gitId":"Apzure"},"content":" /**","lastModifiedDate":"2024-03-10"},{"lineNumber":127,"author":{"gitId":"Apzure"},"content":" * Parses {@code String eventName} into a {@code EventName}.","lastModifiedDate":"2024-03-10"},{"lineNumber":128,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-10"},{"lineNumber":129,"author":{"gitId":"Apzure"},"content":" public static EventName parseEventName(String eventName) {","lastModifiedDate":"2024-03-02"},{"lineNumber":130,"author":{"gitId":"Apzure"},"content":" requireNonNull(eventName);","lastModifiedDate":"2024-03-02"},{"lineNumber":131,"author":{"gitId":"Apzure"},"content":" String trimmedEventName \u003d eventName.trim();","lastModifiedDate":"2024-03-02"},{"lineNumber":132,"author":{"gitId":"Apzure"},"content":" // Currently all event names are valid","lastModifiedDate":"2024-03-02"},{"lineNumber":133,"author":{"gitId":"Apzure"},"content":" return new EventName(trimmedEventName);","lastModifiedDate":"2024-03-02"},{"lineNumber":134,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":135,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":136,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"Apzure":12,"-":124}},{"path":"src/main/java/seedu/address/logic/parser/SelectCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Apzure"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-15"},{"lineNumber":2,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":3,"author":{"gitId":"Apzure"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-15"},{"lineNumber":4,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":5,"author":{"gitId":"Apzure"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-15"},{"lineNumber":6,"author":{"gitId":"Apzure"},"content":"import seedu.address.logic.commands.SelectCommand;","lastModifiedDate":"2024-03-15"},{"lineNumber":7,"author":{"gitId":"Apzure"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-15"},{"lineNumber":8,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":9,"author":{"gitId":"Apzure"},"content":"/**","lastModifiedDate":"2024-03-15"},{"lineNumber":10,"author":{"gitId":"Apzure"},"content":" * Parses input arguments and creates a new SelectCommand object","lastModifiedDate":"2024-03-15"},{"lineNumber":11,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":12,"author":{"gitId":"Apzure"},"content":"public class SelectCommandParser implements Parser\u003cSelectCommand\u003e {","lastModifiedDate":"2024-03-15"},{"lineNumber":13,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":14,"author":{"gitId":"Apzure"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":15,"author":{"gitId":"Apzure"},"content":" * Parses the given {@code String} of arguments in the context of the SelectCommand","lastModifiedDate":"2024-03-15"},{"lineNumber":16,"author":{"gitId":"Apzure"},"content":" * and returns a SelectCommand object for execution.","lastModifiedDate":"2024-03-15"},{"lineNumber":17,"author":{"gitId":"Apzure"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-15"},{"lineNumber":18,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":19,"author":{"gitId":"Apzure"},"content":" public SelectCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-15"},{"lineNumber":20,"author":{"gitId":"Apzure"},"content":" try {","lastModifiedDate":"2024-03-15"},{"lineNumber":21,"author":{"gitId":"Apzure"},"content":" Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2024-03-15"},{"lineNumber":22,"author":{"gitId":"Apzure"},"content":" return new SelectCommand(index);","lastModifiedDate":"2024-03-15"},{"lineNumber":23,"author":{"gitId":"Apzure"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-15"},{"lineNumber":24,"author":{"gitId":"Apzure"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-15"},{"lineNumber":25,"author":{"gitId":"Apzure"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, SelectCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-03-15"},{"lineNumber":26,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":27,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":28,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":29,"author":{"gitId":"Apzure"},"content":"}","lastModifiedDate":"2024-03-15"}],"authorContributionMap":{"Apzure":29}},{"path":"src/main/java/seedu/address/model/EventBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Apzure"},"content":"package seedu.address.model;","lastModifiedDate":"2024-03-01"},{"lineNumber":2,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":3,"author":{"gitId":"Apzure"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-01"},{"lineNumber":4,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":5,"author":{"gitId":"myang2020"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"Apzure"},"content":"import java.util.List;","lastModifiedDate":"2024-03-01"},{"lineNumber":7,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":8,"author":{"gitId":"Apzure"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-01"},{"lineNumber":9,"author":{"gitId":"Apzure"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-01"},{"lineNumber":10,"author":{"gitId":"Apzure"},"content":"import seedu.address.model.event.Event;","lastModifiedDate":"2024-03-01"},{"lineNumber":11,"author":{"gitId":"Apzure"},"content":"import seedu.address.model.event.UniqueEventList;","lastModifiedDate":"2024-03-01"},{"lineNumber":12,"author":{"gitId":"Apzure"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-15"},{"lineNumber":13,"author":{"gitId":"Apzure"},"content":"import seedu.address.model.person.UniquePersonList;","lastModifiedDate":"2024-03-15"},{"lineNumber":14,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":15,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":16,"author":{"gitId":"Apzure"},"content":"/**","lastModifiedDate":"2024-03-01"},{"lineNumber":17,"author":{"gitId":"Apzure"},"content":" * Wraps all data at the event-book level.","lastModifiedDate":"2024-03-01"},{"lineNumber":18,"author":{"gitId":"Apzure"},"content":" * Duplicates are not allowed (by .isSameEvent comparison).","lastModifiedDate":"2024-03-01"},{"lineNumber":19,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-01"},{"lineNumber":20,"author":{"gitId":"Apzure"},"content":"public class EventBook implements ReadOnlyEventBook {","lastModifiedDate":"2024-03-01"},{"lineNumber":21,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":22,"author":{"gitId":"Apzure"},"content":" private final UniqueEventList events;","lastModifiedDate":"2024-03-01"},{"lineNumber":23,"author":{"gitId":"Apzure"},"content":" private final UniquePersonList personsOfSelectedEvent;","lastModifiedDate":"2024-03-15"},{"lineNumber":24,"author":{"gitId":"Apzure"},"content":" private Event selectedEvent;","lastModifiedDate":"2024-03-15"},{"lineNumber":25,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":26,"author":{"gitId":"Apzure"},"content":" // Non-static initialization block","lastModifiedDate":"2024-03-01"},{"lineNumber":27,"author":{"gitId":"Apzure"},"content":" {","lastModifiedDate":"2024-03-01"},{"lineNumber":28,"author":{"gitId":"Apzure"},"content":" events \u003d new UniqueEventList();","lastModifiedDate":"2024-03-01"},{"lineNumber":29,"author":{"gitId":"Apzure"},"content":" personsOfSelectedEvent \u003d new UniquePersonList();","lastModifiedDate":"2024-03-15"},{"lineNumber":30,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":31,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":32,"author":{"gitId":"Apzure"},"content":" /**","lastModifiedDate":"2024-03-10"},{"lineNumber":33,"author":{"gitId":"Apzure"},"content":" * Creates an EventBook","lastModifiedDate":"2024-03-10"},{"lineNumber":34,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-10"},{"lineNumber":35,"author":{"gitId":"Apzure"},"content":" public EventBook() {","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":38,"author":{"gitId":"Apzure"},"content":" /**","lastModifiedDate":"2024-03-01"},{"lineNumber":39,"author":{"gitId":"Apzure"},"content":" * Creates an EventBook using the Events in the {@code toBeCopied}.","lastModifiedDate":"2024-03-01"},{"lineNumber":40,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-01"},{"lineNumber":41,"author":{"gitId":"Apzure"},"content":" public EventBook(ReadOnlyEventBook toBeCopied) {","lastModifiedDate":"2024-03-01"},{"lineNumber":42,"author":{"gitId":"Apzure"},"content":" this();","lastModifiedDate":"2024-03-01"},{"lineNumber":43,"author":{"gitId":"Apzure"},"content":" resetData(toBeCopied);","lastModifiedDate":"2024-03-01"},{"lineNumber":44,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":45,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":46,"author":{"gitId":"taeewonnn"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"taeewonnn"},"content":" * Returns true if the selected event with the same identity as {@code event} exists in the event book.","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"taeewonnn"},"content":" *","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"taeewonnn"},"content":" * @param event","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"taeewonnn"},"content":" * @return","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"taeewonnn"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"taeewonnn"},"content":" public boolean isSameSelectedEvent(Event event) {","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"taeewonnn"},"content":" requireNonNull(event);","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"taeewonnn"},"content":" return event.equals(selectedEvent);","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"Apzure"},"content":" // List overwrite operations","lastModifiedDate":"2024-03-01"},{"lineNumber":58,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":59,"author":{"gitId":"Apzure"},"content":" /**","lastModifiedDate":"2024-03-01"},{"lineNumber":60,"author":{"gitId":"Apzure"},"content":" * Replaces the contents of the event list with {@code events}.","lastModifiedDate":"2024-03-01"},{"lineNumber":61,"author":{"gitId":"Apzure"},"content":" * {@code events} must not contain duplicate events.","lastModifiedDate":"2024-03-01"},{"lineNumber":62,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-01"},{"lineNumber":63,"author":{"gitId":"Apzure"},"content":" public void setEvents(List\u003cEvent\u003e events) {","lastModifiedDate":"2024-03-01"},{"lineNumber":64,"author":{"gitId":"Apzure"},"content":" this.events.setEvents(events);","lastModifiedDate":"2024-03-01"},{"lineNumber":65,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":66,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":67,"author":{"gitId":"Apzure"},"content":" /**","lastModifiedDate":"2024-03-01"},{"lineNumber":68,"author":{"gitId":"Apzure"},"content":" * Resets the existing data of this {@code EventBook} with {@code newData}.","lastModifiedDate":"2024-03-01"},{"lineNumber":69,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-01"},{"lineNumber":70,"author":{"gitId":"Apzure"},"content":" public void resetData(ReadOnlyEventBook newData) {","lastModifiedDate":"2024-03-01"},{"lineNumber":71,"author":{"gitId":"Apzure"},"content":" requireNonNull(newData);","lastModifiedDate":"2024-03-01"},{"lineNumber":72,"author":{"gitId":"Apzure"},"content":" setEvents(newData.getEventList());","lastModifiedDate":"2024-03-01"},{"lineNumber":73,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":74,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":75,"author":{"gitId":"Apzure"},"content":" // Event-level operations","lastModifiedDate":"2024-03-01"},{"lineNumber":76,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":77,"author":{"gitId":"Apzure"},"content":" /**","lastModifiedDate":"2024-03-01"},{"lineNumber":78,"author":{"gitId":"Apzure"},"content":" * Returns true if an event with the same identity as {@code event} exists in the event book.","lastModifiedDate":"2024-03-01"},{"lineNumber":79,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-01"},{"lineNumber":80,"author":{"gitId":"Apzure"},"content":" public boolean hasEvent(Event event) {","lastModifiedDate":"2024-03-01"},{"lineNumber":81,"author":{"gitId":"Apzure"},"content":" requireNonNull(event);","lastModifiedDate":"2024-03-01"},{"lineNumber":82,"author":{"gitId":"Apzure"},"content":" return events.contains(event);","lastModifiedDate":"2024-03-01"},{"lineNumber":83,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":84,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":85,"author":{"gitId":"Apzure"},"content":" /**","lastModifiedDate":"2024-03-01"},{"lineNumber":86,"author":{"gitId":"Apzure"},"content":" * Adds an event to the event book.","lastModifiedDate":"2024-03-01"},{"lineNumber":87,"author":{"gitId":"Apzure"},"content":" * The event must not already exist in the event book.","lastModifiedDate":"2024-03-01"},{"lineNumber":88,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-01"},{"lineNumber":89,"author":{"gitId":"Apzure"},"content":" public void addEvent(Event event) {","lastModifiedDate":"2024-03-01"},{"lineNumber":90,"author":{"gitId":"Apzure"},"content":" events.add(event);","lastModifiedDate":"2024-03-01"},{"lineNumber":91,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":92,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":93,"author":{"gitId":"Apzure"},"content":" /**","lastModifiedDate":"2024-03-01"},{"lineNumber":94,"author":{"gitId":"Apzure"},"content":" * Replaces the given event {@code target} in the list with {@code editedEvent}.","lastModifiedDate":"2024-03-01"},{"lineNumber":95,"author":{"gitId":"Apzure"},"content":" * {@code target} must exist in the event book.","lastModifiedDate":"2024-03-01"},{"lineNumber":96,"author":{"gitId":"Apzure"},"content":" * The event identity of {@code editedEvent} must not be the same as another existing event in the event book.","lastModifiedDate":"2024-03-01"},{"lineNumber":97,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-01"},{"lineNumber":98,"author":{"gitId":"Apzure"},"content":" public void setEvent(Event target, Event editedEvent) {","lastModifiedDate":"2024-03-01"},{"lineNumber":99,"author":{"gitId":"Apzure"},"content":" requireNonNull(editedEvent);","lastModifiedDate":"2024-03-01"},{"lineNumber":100,"author":{"gitId":"Apzure"},"content":" events.setEvent(target, editedEvent);","lastModifiedDate":"2024-03-01"},{"lineNumber":101,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":102,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":103,"author":{"gitId":"Apzure"},"content":" /**","lastModifiedDate":"2024-03-01"},{"lineNumber":104,"author":{"gitId":"Apzure"},"content":" * Removes {@code key} from this {@code EventBook}.","lastModifiedDate":"2024-03-01"},{"lineNumber":105,"author":{"gitId":"Apzure"},"content":" * {@code key} must exist in the event book.","lastModifiedDate":"2024-03-01"},{"lineNumber":106,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-01"},{"lineNumber":107,"author":{"gitId":"Apzure"},"content":" public void removeEvent(Event key) {","lastModifiedDate":"2024-03-01"},{"lineNumber":108,"author":{"gitId":"Apzure"},"content":" events.remove(key);","lastModifiedDate":"2024-03-01"},{"lineNumber":109,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":110,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":111,"author":{"gitId":"Apzure"},"content":" // Select Event Methods","lastModifiedDate":"2024-03-15"},{"lineNumber":112,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":113,"author":{"gitId":"myang2020"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":114,"author":{"gitId":"myang2020"},"content":" * Checks if an event is currently selected.","lastModifiedDate":"2024-03-17"},{"lineNumber":115,"author":{"gitId":"myang2020"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":116,"author":{"gitId":"myang2020"},"content":" * @return true if an event is selected, false otherwise","lastModifiedDate":"2024-03-17"},{"lineNumber":117,"author":{"gitId":"myang2020"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":118,"author":{"gitId":"myang2020"},"content":" public boolean isAnEventSelected() {","lastModifiedDate":"2024-03-17"},{"lineNumber":119,"author":{"gitId":"myang2020"},"content":" return selectedEvent !\u003d null;","lastModifiedDate":"2024-03-17"},{"lineNumber":120,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":121,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":122,"author":{"gitId":"Apzure"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":123,"author":{"gitId":"Apzure"},"content":" * Selects the given event {@code event} from this {@code EventBook}","lastModifiedDate":"2024-03-15"},{"lineNumber":124,"author":{"gitId":"Apzure"},"content":" * @param event must exist in the event book","lastModifiedDate":"2024-03-15"},{"lineNumber":125,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":126,"author":{"gitId":"Apzure"},"content":" public void selectEvent(Event event) {","lastModifiedDate":"2024-03-15"},{"lineNumber":127,"author":{"gitId":"Apzure"},"content":" selectedEvent \u003d event;","lastModifiedDate":"2024-03-15"},{"lineNumber":128,"author":{"gitId":"Apzure"},"content":" personsOfSelectedEvent.setPersons(event.getPersonList());","lastModifiedDate":"2024-03-15"},{"lineNumber":129,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":130,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":131,"author":{"gitId":"myang2020"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":132,"author":{"gitId":"myang2020"},"content":" * Deselects event.","lastModifiedDate":"2024-03-16"},{"lineNumber":133,"author":{"gitId":"myang2020"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":134,"author":{"gitId":"myang2020"},"content":" public void deselectEvent() {","lastModifiedDate":"2024-03-16"},{"lineNumber":135,"author":{"gitId":"myang2020"},"content":" selectedEvent \u003d null;","lastModifiedDate":"2024-03-16"},{"lineNumber":136,"author":{"gitId":"myang2020"},"content":" personsOfSelectedEvent.setPersons(new ArrayList\u003c\u003e());","lastModifiedDate":"2024-03-16"},{"lineNumber":137,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":138,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":139,"author":{"gitId":"myang2020"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":140,"author":{"gitId":"myang2020"},"content":" * Checks if a person is part of the selected event.","lastModifiedDate":"2024-03-17"},{"lineNumber":141,"author":{"gitId":"myang2020"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":142,"author":{"gitId":"myang2020"},"content":" * @param person The person to check.","lastModifiedDate":"2024-03-17"},{"lineNumber":143,"author":{"gitId":"myang2020"},"content":" * @return {@code true} if the person is part of the selected event, {@code false} otherwise.","lastModifiedDate":"2024-03-17"},{"lineNumber":144,"author":{"gitId":"myang2020"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":145,"author":{"gitId":"myang2020"},"content":" public boolean isPersonInSelectedEvent(Person person) {","lastModifiedDate":"2024-03-17"},{"lineNumber":146,"author":{"gitId":"myang2020"},"content":" if (!isAnEventSelected()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":147,"author":{"gitId":"myang2020"},"content":" return false;","lastModifiedDate":"2024-03-17"},{"lineNumber":148,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":149,"author":{"gitId":"myang2020"},"content":" return selectedEvent.hasPerson(person);","lastModifiedDate":"2024-03-17"},{"lineNumber":150,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":151,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":152,"author":{"gitId":"myang2020"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":153,"author":{"gitId":"myang2020"},"content":" * Adds a person to the selected event if an event is currently selected.","lastModifiedDate":"2024-03-17"},{"lineNumber":154,"author":{"gitId":"myang2020"},"content":" * If no event is selected, the person will not be added.","lastModifiedDate":"2024-03-17"},{"lineNumber":155,"author":{"gitId":"myang2020"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":156,"author":{"gitId":"myang2020"},"content":" * @param person The person to be added to the selected event.","lastModifiedDate":"2024-03-17"},{"lineNumber":157,"author":{"gitId":"myang2020"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":158,"author":{"gitId":"myang2020"},"content":" public void addPersonToSelectedEvent(Person person) {","lastModifiedDate":"2024-03-17"},{"lineNumber":159,"author":{"gitId":"myang2020"},"content":" if (isAnEventSelected()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":160,"author":{"gitId":"myang2020"},"content":" selectedEvent.addPerson(person);","lastModifiedDate":"2024-03-17"},{"lineNumber":161,"author":{"gitId":"ChocoRagdoll"},"content":" personsOfSelectedEvent.add(person);","lastModifiedDate":"2024-03-20"},{"lineNumber":162,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":163,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":164,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":165,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":166,"author":{"gitId":"ChocoRagdoll"},"content":" * Deletes a person from the selected event if an event is currently selected.","lastModifiedDate":"2024-03-20"},{"lineNumber":167,"author":{"gitId":"ChocoRagdoll"},"content":" * If no event is selected, the person will not be deleted.","lastModifiedDate":"2024-03-20"},{"lineNumber":168,"author":{"gitId":"ChocoRagdoll"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":169,"author":{"gitId":"ChocoRagdoll"},"content":" * @param person The person to be added to the selected event.","lastModifiedDate":"2024-03-20"},{"lineNumber":170,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":171,"author":{"gitId":"ChocoRagdoll"},"content":" public void deletePersonFromSelectedEvent(Person person) {","lastModifiedDate":"2024-03-20"},{"lineNumber":172,"author":{"gitId":"ChocoRagdoll"},"content":" if (isAnEventSelected()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":173,"author":{"gitId":"ChocoRagdoll"},"content":" selectedEvent.deletePerson(person);","lastModifiedDate":"2024-03-20"},{"lineNumber":174,"author":{"gitId":"ChocoRagdoll"},"content":" personsOfSelectedEvent.remove(person);","lastModifiedDate":"2024-03-20"},{"lineNumber":175,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":176,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":177,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":178,"author":{"gitId":"Apzure"},"content":" // Util methods","lastModifiedDate":"2024-03-01"},{"lineNumber":179,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":180,"author":{"gitId":"Apzure"},"content":" @Override","lastModifiedDate":"2024-03-01"},{"lineNumber":181,"author":{"gitId":"Apzure"},"content":" public String toString() {","lastModifiedDate":"2024-03-01"},{"lineNumber":182,"author":{"gitId":"Apzure"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-01"},{"lineNumber":183,"author":{"gitId":"Apzure"},"content":" .add(\"events\", events)","lastModifiedDate":"2024-03-01"},{"lineNumber":184,"author":{"gitId":"Apzure"},"content":" .toString();","lastModifiedDate":"2024-03-01"},{"lineNumber":185,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":186,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":187,"author":{"gitId":"Apzure"},"content":" @Override","lastModifiedDate":"2024-03-01"},{"lineNumber":188,"author":{"gitId":"Apzure"},"content":" public ObservableList\u003cEvent\u003e getEventList() {","lastModifiedDate":"2024-03-01"},{"lineNumber":189,"author":{"gitId":"Apzure"},"content":" return events.asUnmodifiableObservableList();","lastModifiedDate":"2024-03-01"},{"lineNumber":190,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":191,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":192,"author":{"gitId":"Apzure"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":193,"author":{"gitId":"Apzure"},"content":" public ObservableList\u003cPerson\u003e getPersonsOfSelectedEventList() {","lastModifiedDate":"2024-03-15"},{"lineNumber":194,"author":{"gitId":"Apzure"},"content":" return personsOfSelectedEvent.asUnmodifiableObservableList();","lastModifiedDate":"2024-03-15"},{"lineNumber":195,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":196,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":197,"author":{"gitId":"Apzure"},"content":" @Override","lastModifiedDate":"2024-03-01"},{"lineNumber":198,"author":{"gitId":"Apzure"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-01"},{"lineNumber":199,"author":{"gitId":"Apzure"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-01"},{"lineNumber":200,"author":{"gitId":"Apzure"},"content":" return true;","lastModifiedDate":"2024-03-01"},{"lineNumber":201,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":202,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":203,"author":{"gitId":"Apzure"},"content":" if (!(other instanceof EventBook)) {","lastModifiedDate":"2024-03-01"},{"lineNumber":204,"author":{"gitId":"Apzure"},"content":" return false;","lastModifiedDate":"2024-03-01"},{"lineNumber":205,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":206,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":207,"author":{"gitId":"Apzure"},"content":" EventBook otherEventBook \u003d (EventBook) other;","lastModifiedDate":"2024-03-01"},{"lineNumber":208,"author":{"gitId":"Apzure"},"content":" return events.equals(otherEventBook.events);","lastModifiedDate":"2024-03-01"},{"lineNumber":209,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":210,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":211,"author":{"gitId":"Apzure"},"content":" @Override","lastModifiedDate":"2024-03-01"},{"lineNumber":212,"author":{"gitId":"Apzure"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-01"},{"lineNumber":213,"author":{"gitId":"Apzure"},"content":" return events.hashCode();","lastModifiedDate":"2024-03-01"},{"lineNumber":214,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":215,"author":{"gitId":"Apzure"},"content":"}","lastModifiedDate":"2024-03-01"}],"authorContributionMap":{"Apzure":147,"ChocoRagdoll":14,"taeewonnn":11,"myang2020":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"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":8,"author":{"gitId":"Apzure"},"content":"import seedu.address.model.event.Event;","lastModifiedDate":"2024-03-01"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * The API of the Model component.","lastModifiedDate":"2016-09-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public interface Model {","lastModifiedDate":"2016-09-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":" /** {@code Predicate} that always evaluate to true */","lastModifiedDate":"2017-08-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":" Predicate\u003cPerson\u003e PREDICATE_SHOW_ALL_PERSONS \u003d unused -\u003e true;","lastModifiedDate":"2018-01-10"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Replaces user prefs data with the data in {@code userPrefs}.","lastModifiedDate":"2018-12-06"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":" void setUserPrefs(ReadOnlyUserPrefs userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Returns the user prefs.","lastModifiedDate":"2018-11-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" ReadOnlyUserPrefs getUserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" void setAddressBookFilePath(Path addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Replaces address book data with the data in {@code addressBook}.","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" void setAddressBook(ReadOnlyAddressBook addressBook);","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":" /** Returns the AddressBook */","lastModifiedDate":"2016-09-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2016-09-25"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Returns true if a person with the same identity as {@code person} exists in the address book.","lastModifiedDate":"2018-08-06"},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":59,"author":{"gitId":"-"},"content":" boolean hasPerson(Person person);","lastModifiedDate":"2018-08-06"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Deletes the given person.","lastModifiedDate":"2018-08-07"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * The person must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":65,"author":{"gitId":"-"},"content":" void deletePerson(Person target);","lastModifiedDate":"2018-08-07"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":67,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":68,"author":{"gitId":"-"},"content":" * Adds the given person.","lastModifiedDate":"2018-08-07"},{"lineNumber":69,"author":{"gitId":"-"},"content":" * {@code person} must not already exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":70,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":71,"author":{"gitId":"-"},"content":" void addPerson(Person person);","lastModifiedDate":"2018-08-07"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":73,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * Replaces the given person {@code target} with {@code editedPerson}.","lastModifiedDate":"2017-06-07"},{"lineNumber":75,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":76,"author":{"gitId":"-"},"content":" * The person identity of {@code editedPerson} must not be the same as another existing person in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":77,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" void setPerson(Person target, Person editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" /** Returns an unmodifiable view of the filtered person list */","lastModifiedDate":"2017-09-01"},{"lineNumber":81,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":83,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-05"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * Updates the filter of the filtered person list to filter by the given {@code predicate}.","lastModifiedDate":"2017-08-05"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2017-08-05"},{"lineNumber":86,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05"},{"lineNumber":87,"author":{"gitId":"-"},"content":" void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate);","lastModifiedDate":"2018-01-10"},{"lineNumber":88,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":89,"author":{"gitId":"Apzure"},"content":" void setEventBook(ReadOnlyEventBook eventBook);","lastModifiedDate":"2024-03-02"},{"lineNumber":90,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":91,"author":{"gitId":"Apzure"},"content":" ReadOnlyEventBook getEventBook();","lastModifiedDate":"2024-03-02"},{"lineNumber":92,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":93,"author":{"gitId":"Apzure"},"content":" boolean hasEvent(Event event);","lastModifiedDate":"2024-03-02"},{"lineNumber":94,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":95,"author":{"gitId":"Apzure"},"content":" void deleteEvent(Event target);","lastModifiedDate":"2024-03-02"},{"lineNumber":96,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":97,"author":{"gitId":"Apzure"},"content":" void addEvent(Event event);","lastModifiedDate":"2024-03-02"},{"lineNumber":98,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":99,"author":{"gitId":"Apzure"},"content":" void setEvent(Event target, Event editedEvent);","lastModifiedDate":"2024-03-02"},{"lineNumber":100,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":101,"author":{"gitId":"myang2020"},"content":" boolean isAnEventSelected();","lastModifiedDate":"2024-03-17"},{"lineNumber":102,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":103,"author":{"gitId":"taeewonnn"},"content":" boolean isSameSelectedEvent(Event event);","lastModifiedDate":"2024-03-20"},{"lineNumber":104,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":105,"author":{"gitId":"Apzure"},"content":" void selectEvent(Event event);","lastModifiedDate":"2024-03-15"},{"lineNumber":106,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":107,"author":{"gitId":"myang2020"},"content":" void deselectEvent();","lastModifiedDate":"2024-03-16"},{"lineNumber":108,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":109,"author":{"gitId":"myang2020"},"content":" boolean isPersonInSelectedEvent(Person person);","lastModifiedDate":"2024-03-17"},{"lineNumber":110,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":111,"author":{"gitId":"myang2020"},"content":" void addPersonToSelectedEvent(Person person);","lastModifiedDate":"2024-03-17"},{"lineNumber":112,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":113,"author":{"gitId":"ChocoRagdoll"},"content":" void deletePersonFromSelectedEvent(Person person);","lastModifiedDate":"2024-03-20"},{"lineNumber":114,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":115,"author":{"gitId":"Apzure"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":116,"author":{"gitId":"Apzure"},"content":" * Returns an unmodifiable view of the filtered event list.","lastModifiedDate":"2024-03-15"},{"lineNumber":117,"author":{"gitId":"Apzure"},"content":" *","lastModifiedDate":"2024-03-15"},{"lineNumber":118,"author":{"gitId":"Apzure"},"content":" * @return An unmodifiable view of the filtered event list.","lastModifiedDate":"2024-03-15"},{"lineNumber":119,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":120,"author":{"gitId":"Apzure"},"content":" ObservableList\u003cEvent\u003e getFilteredEventList();","lastModifiedDate":"2024-03-01"},{"lineNumber":121,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":122,"author":{"gitId":"Apzure"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":123,"author":{"gitId":"Apzure"},"content":" * Returns an unmodifiable view of the filtered person list of the selected event.","lastModifiedDate":"2024-03-15"},{"lineNumber":124,"author":{"gitId":"Apzure"},"content":" * If no event is selected, returns an empty list.","lastModifiedDate":"2024-03-15"},{"lineNumber":125,"author":{"gitId":"Apzure"},"content":" *","lastModifiedDate":"2024-03-15"},{"lineNumber":126,"author":{"gitId":"Apzure"},"content":" * @return An unmodifiable view of the filtered person list of the selected event,","lastModifiedDate":"2024-03-15"},{"lineNumber":127,"author":{"gitId":"Apzure"},"content":" * or an empty list if no event is selected.","lastModifiedDate":"2024-03-15"},{"lineNumber":128,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":129,"author":{"gitId":"Apzure"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonListOfSelectedEvent();","lastModifiedDate":"2024-03-15"},{"lineNumber":130,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":131,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"Apzure":32,"ChocoRagdoll":2,"-":87,"taeewonnn":2,"myang2020":8}},{"path":"src/main/java/seedu/address/model/ModelManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-08-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2016-08-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23"},{"lineNumber":14,"author":{"gitId":"Apzure"},"content":"import seedu.address.model.event.Event;","lastModifiedDate":"2024-03-01"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Represents the in-memory model of the address book data.","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class ModelManager implements Model {","lastModifiedDate":"2018-12-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ModelManager.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"Apzure"},"content":" private final EventBook eventBook;","lastModifiedDate":"2024-03-01"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final AddressBook addressBook;","lastModifiedDate":"2019-01-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final UserPrefs userPrefs;","lastModifiedDate":"2018-12-06"},{"lineNumber":26,"author":{"gitId":"Apzure"},"content":" private final FilteredList\u003cEvent\u003e filteredEvents;","lastModifiedDate":"2024-03-01"},{"lineNumber":27,"author":{"gitId":"Apzure"},"content":" private final FilteredList\u003cPerson\u003e filteredPersonsOfSelectedEvent;","lastModifiedDate":"2024-03-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final FilteredList\u003cPerson\u003e filteredPersons;","lastModifiedDate":"2018-01-10"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Initializes a ModelManager with the given addressBook and userPrefs.","lastModifiedDate":"2016-12-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public ModelManager(ReadOnlyAddressBook addressBook, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":" requireAllNonNull(addressBook, userPrefs);","lastModifiedDate":"2017-05-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" logger.fine(\"Initializing with address book: \" + addressBook + \" and user prefs \" + userPrefs);","lastModifiedDate":"2016-12-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"Apzure"},"content":" this.eventBook \u003d new EventBook();","lastModifiedDate":"2024-03-01"},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.addressBook \u003d new AddressBook(addressBook);","lastModifiedDate":"2019-01-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":41,"author":{"gitId":"Apzure"},"content":" filteredEvents \u003d new FilteredList\u003c\u003e(this.eventBook.getEventList());","lastModifiedDate":"2024-03-01"},{"lineNumber":42,"author":{"gitId":"Apzure"},"content":" filteredPersonsOfSelectedEvent \u003d new FilteredList\u003c\u003e(this.eventBook.getPersonsOfSelectedEventList());","lastModifiedDate":"2024-03-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":" filteredPersons \u003d new FilteredList\u003c\u003e(this.addressBook.getPersonList());","lastModifiedDate":"2019-01-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public ModelManager() {","lastModifiedDate":"2016-09-22"},{"lineNumber":47,"author":{"gitId":"-"},"content":" this(new AddressBook(), new UserPrefs());","lastModifiedDate":"2016-09-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d UserPrefs \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":54,"author":{"gitId":"-"},"content":" requireNonNull(userPrefs);","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" this.userPrefs.resetData(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return userPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" return userPrefs.getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return userPrefs.getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":85,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d AddressBook \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook addressBook) {","lastModifiedDate":"2018-11-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":" this.addressBook.resetData(addressBook);","lastModifiedDate":"2019-01-25"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2016-09-21"},{"lineNumber":94,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2019-01-25"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":98,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":99,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":100,"author":{"gitId":"-"},"content":" return addressBook.hasPerson(person);","lastModifiedDate":"2019-01-25"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":103,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-15"},{"lineNumber":105,"author":{"gitId":"-"},"content":" addressBook.removePerson(target);","lastModifiedDate":"2019-01-25"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":109,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":110,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2019-01-25"},{"lineNumber":111,"author":{"gitId":"-"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26"},{"lineNumber":114,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":116,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2017-06-07"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":" addressBook.setPerson(target, editedPerson);","lastModifiedDate":"2019-01-25"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":121,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Filtered Person List Accessors \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2016-10-12"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19"},{"lineNumber":124,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the list of {@code Person} backed by the internal list of","lastModifiedDate":"2018-01-10"},{"lineNumber":125,"author":{"gitId":"-"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2018-06-11"},{"lineNumber":126,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19"},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":128,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":129,"author":{"gitId":"-"},"content":" return filteredPersons;","lastModifiedDate":"2018-12-09"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":133,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10"},{"lineNumber":134,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05"},{"lineNumber":135,"author":{"gitId":"-"},"content":" filteredPersons.setPredicate(predicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":138,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-31"},{"lineNumber":139,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13"},{"lineNumber":140,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":141,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":144,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31"},{"lineNumber":145,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":146,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-31"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":149,"author":{"gitId":"-"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":150,"author":{"gitId":"-"},"content":" return addressBook.equals(otherModelManager.addressBook)","lastModifiedDate":"2023-07-13"},{"lineNumber":151,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13"},{"lineNumber":152,"author":{"gitId":"-"},"content":" \u0026\u0026 filteredPersons.equals(otherModelManager.filteredPersons);","lastModifiedDate":"2023-07-13"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":155,"author":{"gitId":"Apzure"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d EventBook \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-03-02"},{"lineNumber":156,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":157,"author":{"gitId":"Apzure"},"content":" @Override","lastModifiedDate":"2024-03-02"},{"lineNumber":158,"author":{"gitId":"Apzure"},"content":" public void setEventBook(ReadOnlyEventBook eventBook) {","lastModifiedDate":"2024-03-02"},{"lineNumber":159,"author":{"gitId":"Apzure"},"content":" this.eventBook.resetData(eventBook);","lastModifiedDate":"2024-03-02"},{"lineNumber":160,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":161,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":162,"author":{"gitId":"Apzure"},"content":" @Override","lastModifiedDate":"2024-03-02"},{"lineNumber":163,"author":{"gitId":"Apzure"},"content":" public ReadOnlyEventBook getEventBook() {","lastModifiedDate":"2024-03-02"},{"lineNumber":164,"author":{"gitId":"Apzure"},"content":" return eventBook;","lastModifiedDate":"2024-03-02"},{"lineNumber":165,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":166,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":167,"author":{"gitId":"Apzure"},"content":" @Override","lastModifiedDate":"2024-03-02"},{"lineNumber":168,"author":{"gitId":"Apzure"},"content":" public boolean hasEvent(Event event) {","lastModifiedDate":"2024-03-02"},{"lineNumber":169,"author":{"gitId":"Apzure"},"content":" requireNonNull(event);","lastModifiedDate":"2024-03-02"},{"lineNumber":170,"author":{"gitId":"Apzure"},"content":" return eventBook.hasEvent(event);","lastModifiedDate":"2024-03-02"},{"lineNumber":171,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":172,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":173,"author":{"gitId":"Apzure"},"content":" @Override","lastModifiedDate":"2024-03-02"},{"lineNumber":174,"author":{"gitId":"Apzure"},"content":" public void deleteEvent(Event target) {","lastModifiedDate":"2024-03-02"},{"lineNumber":175,"author":{"gitId":"Apzure"},"content":" eventBook.removeEvent(target);","lastModifiedDate":"2024-03-02"},{"lineNumber":176,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":177,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":178,"author":{"gitId":"Apzure"},"content":" @Override","lastModifiedDate":"2024-03-02"},{"lineNumber":179,"author":{"gitId":"Apzure"},"content":" public void addEvent(Event event) {","lastModifiedDate":"2024-03-02"},{"lineNumber":180,"author":{"gitId":"Apzure"},"content":" eventBook.addEvent(event);","lastModifiedDate":"2024-03-02"},{"lineNumber":181,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":182,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":183,"author":{"gitId":"Apzure"},"content":" @Override","lastModifiedDate":"2024-03-02"},{"lineNumber":184,"author":{"gitId":"Apzure"},"content":" public void setEvent(Event target, Event editedEvent) {","lastModifiedDate":"2024-03-02"},{"lineNumber":185,"author":{"gitId":"Apzure"},"content":" requireAllNonNull(target, editedEvent);","lastModifiedDate":"2024-03-02"},{"lineNumber":186,"author":{"gitId":"Apzure"},"content":" eventBook.setEvent(target, editedEvent);","lastModifiedDate":"2024-03-02"},{"lineNumber":187,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":188,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":189,"author":{"gitId":"myang2020"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":190,"author":{"gitId":"myang2020"},"content":" public boolean isAnEventSelected() {","lastModifiedDate":"2024-03-17"},{"lineNumber":191,"author":{"gitId":"myang2020"},"content":" return eventBook.isAnEventSelected();","lastModifiedDate":"2024-03-17"},{"lineNumber":192,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":193,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":194,"author":{"gitId":"taeewonnn"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":195,"author":{"gitId":"taeewonnn"},"content":" public boolean isSameSelectedEvent(Event event) {","lastModifiedDate":"2024-03-20"},{"lineNumber":196,"author":{"gitId":"taeewonnn"},"content":" requireNonNull(event);","lastModifiedDate":"2024-03-19"},{"lineNumber":197,"author":{"gitId":"taeewonnn"},"content":" return eventBook.isSameSelectedEvent(event);","lastModifiedDate":"2024-03-19"},{"lineNumber":198,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":199,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":200,"author":{"gitId":"Apzure"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":201,"author":{"gitId":"Apzure"},"content":" public void selectEvent(Event event) {","lastModifiedDate":"2024-03-15"},{"lineNumber":202,"author":{"gitId":"Apzure"},"content":" eventBook.selectEvent(event);","lastModifiedDate":"2024-03-15"},{"lineNumber":203,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":204,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":205,"author":{"gitId":"myang2020"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":206,"author":{"gitId":"myang2020"},"content":" public void deselectEvent() {","lastModifiedDate":"2024-03-16"},{"lineNumber":207,"author":{"gitId":"myang2020"},"content":" eventBook.deselectEvent();","lastModifiedDate":"2024-03-16"},{"lineNumber":208,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":209,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":210,"author":{"gitId":"myang2020"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":211,"author":{"gitId":"myang2020"},"content":" public boolean isPersonInSelectedEvent(Person person) {","lastModifiedDate":"2024-03-17"},{"lineNumber":212,"author":{"gitId":"myang2020"},"content":" requireNonNull(person);","lastModifiedDate":"2024-03-17"},{"lineNumber":213,"author":{"gitId":"myang2020"},"content":" return eventBook.isPersonInSelectedEvent(person);","lastModifiedDate":"2024-03-17"},{"lineNumber":214,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":215,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":216,"author":{"gitId":"myang2020"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":217,"author":{"gitId":"myang2020"},"content":" public void addPersonToSelectedEvent(Person person) {","lastModifiedDate":"2024-03-17"},{"lineNumber":218,"author":{"gitId":"myang2020"},"content":" requireNonNull(person);","lastModifiedDate":"2024-03-17"},{"lineNumber":219,"author":{"gitId":"myang2020"},"content":" eventBook.addPersonToSelectedEvent(person);","lastModifiedDate":"2024-03-17"},{"lineNumber":220,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":221,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":222,"author":{"gitId":"ChocoRagdoll"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":223,"author":{"gitId":"ChocoRagdoll"},"content":" public void deletePersonFromSelectedEvent(Person person) {","lastModifiedDate":"2024-03-20"},{"lineNumber":224,"author":{"gitId":"ChocoRagdoll"},"content":" requireNonNull(person);","lastModifiedDate":"2024-03-20"},{"lineNumber":225,"author":{"gitId":"ChocoRagdoll"},"content":" eventBook.deletePersonFromSelectedEvent(person);","lastModifiedDate":"2024-03-20"},{"lineNumber":226,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":227,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":228,"author":{"gitId":"Apzure"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Filtered Event List and Person List of Selected Event 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","lastModifiedDate":"2024-03-15"},{"lineNumber":229,"author":{"gitId":"Apzure"},"content":" @Override","lastModifiedDate":"2024-03-02"},{"lineNumber":230,"author":{"gitId":"Apzure"},"content":" public ObservableList\u003cEvent\u003e getFilteredEventList() {","lastModifiedDate":"2024-03-02"},{"lineNumber":231,"author":{"gitId":"Apzure"},"content":" return filteredEvents;","lastModifiedDate":"2024-03-02"},{"lineNumber":232,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":233,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":234,"author":{"gitId":"Apzure"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":235,"author":{"gitId":"Apzure"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonListOfSelectedEvent() {","lastModifiedDate":"2024-03-15"},{"lineNumber":236,"author":{"gitId":"Apzure"},"content":" return filteredPersonsOfSelectedEvent;","lastModifiedDate":"2024-03-15"},{"lineNumber":237,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":238,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":239,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"Apzure":58,"ChocoRagdoll":5,"-":148,"taeewonnn":6,"myang2020":22}},{"path":"src/main/java/seedu/address/model/ReadOnlyEventBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Apzure"},"content":"package seedu.address.model;","lastModifiedDate":"2024-03-01"},{"lineNumber":2,"author":{"gitId":"Apzure"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-01"},{"lineNumber":3,"author":{"gitId":"Apzure"},"content":"import seedu.address.model.event.Event;","lastModifiedDate":"2024-03-01"},{"lineNumber":4,"author":{"gitId":"Apzure"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-15"},{"lineNumber":5,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":6,"author":{"gitId":"Apzure"},"content":"/**","lastModifiedDate":"2024-03-10"},{"lineNumber":7,"author":{"gitId":"Apzure"},"content":" * Unmodifiable view of an event book","lastModifiedDate":"2024-03-10"},{"lineNumber":8,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-10"},{"lineNumber":9,"author":{"gitId":"Apzure"},"content":"public interface ReadOnlyEventBook {","lastModifiedDate":"2024-03-02"},{"lineNumber":10,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":11,"author":{"gitId":"Apzure"},"content":" /**","lastModifiedDate":"2024-03-01"},{"lineNumber":12,"author":{"gitId":"Apzure"},"content":" * Returns an unmodifiable view of the events list.","lastModifiedDate":"2024-03-01"},{"lineNumber":13,"author":{"gitId":"Apzure"},"content":" * This list will not contain any duplicate events.","lastModifiedDate":"2024-03-01"},{"lineNumber":14,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-01"},{"lineNumber":15,"author":{"gitId":"Apzure"},"content":" ObservableList\u003cEvent\u003e getEventList();","lastModifiedDate":"2024-03-01"},{"lineNumber":16,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":17,"author":{"gitId":"Apzure"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":18,"author":{"gitId":"Apzure"},"content":" * Returns an unmodifiable view of the persons list of the selected event.","lastModifiedDate":"2024-03-15"},{"lineNumber":19,"author":{"gitId":"Apzure"},"content":" * This list will not contain any duplicate events.","lastModifiedDate":"2024-03-15"},{"lineNumber":20,"author":{"gitId":"Apzure"},"content":" * This list is empty is no event is currently selected.","lastModifiedDate":"2024-03-15"},{"lineNumber":21,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":22,"author":{"gitId":"Apzure"},"content":" ObservableList\u003cPerson\u003e getPersonsOfSelectedEventList();","lastModifiedDate":"2024-03-15"},{"lineNumber":23,"author":{"gitId":"Apzure"},"content":"}","lastModifiedDate":"2024-03-01"}],"authorContributionMap":{"Apzure":23}},{"path":"src/main/java/seedu/address/model/event/Event.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Apzure"},"content":"package seedu.address.model.event;","lastModifiedDate":"2024-03-01"},{"lineNumber":2,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":3,"author":{"gitId":"Apzure"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-04"},{"lineNumber":4,"author":{"gitId":"Apzure"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-01"},{"lineNumber":5,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":6,"author":{"gitId":"Apzure"},"content":"import java.util.List;","lastModifiedDate":"2024-03-04"},{"lineNumber":7,"author":{"gitId":"Apzure"},"content":"import java.util.Objects;","lastModifiedDate":"2024-03-01"},{"lineNumber":8,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":9,"author":{"gitId":"Apzure"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-04"},{"lineNumber":10,"author":{"gitId":"Apzure"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-01"},{"lineNumber":11,"author":{"gitId":"Apzure"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-04"},{"lineNumber":12,"author":{"gitId":"Apzure"},"content":"import seedu.address.model.person.UniquePersonList;","lastModifiedDate":"2024-03-02"},{"lineNumber":13,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":14,"author":{"gitId":"Apzure"},"content":"/**","lastModifiedDate":"2024-03-01"},{"lineNumber":15,"author":{"gitId":"Apzure"},"content":" * Represents an Event in the event book.","lastModifiedDate":"2024-03-04"},{"lineNumber":16,"author":{"gitId":"Apzure"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2024-03-01"},{"lineNumber":17,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-01"},{"lineNumber":18,"author":{"gitId":"Apzure"},"content":"public class Event {","lastModifiedDate":"2024-03-01"},{"lineNumber":19,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":20,"author":{"gitId":"Apzure"},"content":" private final EventName eventName;","lastModifiedDate":"2024-03-01"},{"lineNumber":21,"author":{"gitId":"Apzure"},"content":" private final UniquePersonList persons;","lastModifiedDate":"2024-03-04"},{"lineNumber":22,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":23,"author":{"gitId":"Apzure"},"content":" /**","lastModifiedDate":"2024-03-01"},{"lineNumber":24,"author":{"gitId":"Apzure"},"content":" * Every field must be present and not null.","lastModifiedDate":"2024-03-01"},{"lineNumber":25,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-01"},{"lineNumber":26,"author":{"gitId":"Apzure"},"content":" public Event(EventName eventName) {","lastModifiedDate":"2024-03-01"},{"lineNumber":27,"author":{"gitId":"Apzure"},"content":" requireAllNonNull(eventName);","lastModifiedDate":"2024-03-01"},{"lineNumber":28,"author":{"gitId":"Apzure"},"content":" this.eventName \u003d eventName;","lastModifiedDate":"2024-03-01"},{"lineNumber":29,"author":{"gitId":"Apzure"},"content":" persons \u003d new UniquePersonList();","lastModifiedDate":"2024-03-04"},{"lineNumber":30,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":31,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":32,"author":{"gitId":"Apzure"},"content":" public EventName getEventName() {","lastModifiedDate":"2024-03-01"},{"lineNumber":33,"author":{"gitId":"Apzure"},"content":" return eventName;","lastModifiedDate":"2024-03-01"},{"lineNumber":34,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":35,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":36,"author":{"gitId":"Apzure"},"content":" //// person-level operations","lastModifiedDate":"2024-03-04"},{"lineNumber":37,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":38,"author":{"gitId":"Apzure"},"content":" /**","lastModifiedDate":"2024-03-04"},{"lineNumber":39,"author":{"gitId":"Apzure"},"content":" * Replaces the contents of the person list with {@code persons}.","lastModifiedDate":"2024-03-04"},{"lineNumber":40,"author":{"gitId":"Apzure"},"content":" * {@code persons} must not contain duplicate persons.","lastModifiedDate":"2024-03-04"},{"lineNumber":41,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-04"},{"lineNumber":42,"author":{"gitId":"Apzure"},"content":" public void setPersons(List\u003cPerson\u003e persons) {","lastModifiedDate":"2024-03-04"},{"lineNumber":43,"author":{"gitId":"Apzure"},"content":" this.persons.setPersons(persons);","lastModifiedDate":"2024-03-04"},{"lineNumber":44,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":45,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":46,"author":{"gitId":"Apzure"},"content":" /**","lastModifiedDate":"2024-03-04"},{"lineNumber":47,"author":{"gitId":"Apzure"},"content":" * Returns true if a person with the same identity as {@code person} exists in the address book.","lastModifiedDate":"2024-03-04"},{"lineNumber":48,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-04"},{"lineNumber":49,"author":{"gitId":"Apzure"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2024-03-04"},{"lineNumber":50,"author":{"gitId":"Apzure"},"content":" requireNonNull(person);","lastModifiedDate":"2024-03-04"},{"lineNumber":51,"author":{"gitId":"Apzure"},"content":" return persons.contains(person);","lastModifiedDate":"2024-03-04"},{"lineNumber":52,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":53,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":54,"author":{"gitId":"Apzure"},"content":" /**","lastModifiedDate":"2024-03-04"},{"lineNumber":55,"author":{"gitId":"Apzure"},"content":" * Adds a person to the event.","lastModifiedDate":"2024-03-04"},{"lineNumber":56,"author":{"gitId":"Apzure"},"content":" * The person must not already exist in the event.","lastModifiedDate":"2024-03-04"},{"lineNumber":57,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-04"},{"lineNumber":58,"author":{"gitId":"Apzure"},"content":" public void addPerson(Person p) {","lastModifiedDate":"2024-03-04"},{"lineNumber":59,"author":{"gitId":"Apzure"},"content":" persons.add(p);","lastModifiedDate":"2024-03-04"},{"lineNumber":60,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":61,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":62,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"ChocoRagdoll"},"content":" * Deletes a person to the event.","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"ChocoRagdoll"},"content":" * The person must already exist in the event.","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"ChocoRagdoll"},"content":" public void deletePerson(Person p) {","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"ChocoRagdoll"},"content":" persons.remove(p);","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"Apzure"},"content":" /**","lastModifiedDate":"2024-03-04"},{"lineNumber":71,"author":{"gitId":"Apzure"},"content":" * Replaces the given person {@code target} in the list with {@code editedPerson}.","lastModifiedDate":"2024-03-04"},{"lineNumber":72,"author":{"gitId":"Apzure"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2024-03-04"},{"lineNumber":73,"author":{"gitId":"Apzure"},"content":" * The person identity of {@code editedPerson} must not be the same as another existing person in the address book.","lastModifiedDate":"2024-03-04"},{"lineNumber":74,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-04"},{"lineNumber":75,"author":{"gitId":"Apzure"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2024-03-04"},{"lineNumber":76,"author":{"gitId":"Apzure"},"content":" requireNonNull(editedPerson);","lastModifiedDate":"2024-03-04"},{"lineNumber":77,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":78,"author":{"gitId":"Apzure"},"content":" persons.setPerson(target, editedPerson);","lastModifiedDate":"2024-03-04"},{"lineNumber":79,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":80,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":81,"author":{"gitId":"Apzure"},"content":" //// util methods","lastModifiedDate":"2024-03-04"},{"lineNumber":82,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":83,"author":{"gitId":"Apzure"},"content":" public ObservableList\u003cPerson\u003e getPersonList() {","lastModifiedDate":"2024-03-04"},{"lineNumber":84,"author":{"gitId":"Apzure"},"content":" return persons.asUnmodifiableObservableList();","lastModifiedDate":"2024-03-04"},{"lineNumber":85,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":86,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":87,"author":{"gitId":"Apzure"},"content":" /**","lastModifiedDate":"2024-03-01"},{"lineNumber":88,"author":{"gitId":"Apzure"},"content":" * Returns true if both events have the same event name.","lastModifiedDate":"2024-03-01"},{"lineNumber":89,"author":{"gitId":"Apzure"},"content":" * This defines a weaker notion of equality between two events.","lastModifiedDate":"2024-03-01"},{"lineNumber":90,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-01"},{"lineNumber":91,"author":{"gitId":"Apzure"},"content":" public boolean isSameEvent(Event otherEvent) {","lastModifiedDate":"2024-03-01"},{"lineNumber":92,"author":{"gitId":"Apzure"},"content":" if (otherEvent \u003d\u003d this) {","lastModifiedDate":"2024-03-01"},{"lineNumber":93,"author":{"gitId":"Apzure"},"content":" return true;","lastModifiedDate":"2024-03-01"},{"lineNumber":94,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":95,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":96,"author":{"gitId":"Apzure"},"content":" return otherEvent !\u003d null","lastModifiedDate":"2024-03-01"},{"lineNumber":97,"author":{"gitId":"Apzure"},"content":" \u0026\u0026 otherEvent.getEventName().equals(getEventName());","lastModifiedDate":"2024-03-01"},{"lineNumber":98,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":99,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":100,"author":{"gitId":"Apzure"},"content":" /**","lastModifiedDate":"2024-03-01"},{"lineNumber":101,"author":{"gitId":"Apzure"},"content":" * Returns true if both events have the same identity and data fields.","lastModifiedDate":"2024-03-01"},{"lineNumber":102,"author":{"gitId":"Apzure"},"content":" * This defines a stronger notion of equality between two events.","lastModifiedDate":"2024-03-01"},{"lineNumber":103,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-01"},{"lineNumber":104,"author":{"gitId":"Apzure"},"content":" @Override","lastModifiedDate":"2024-03-01"},{"lineNumber":105,"author":{"gitId":"Apzure"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-01"},{"lineNumber":106,"author":{"gitId":"Apzure"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-01"},{"lineNumber":107,"author":{"gitId":"Apzure"},"content":" return true;","lastModifiedDate":"2024-03-01"},{"lineNumber":108,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":109,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":110,"author":{"gitId":"Apzure"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-01"},{"lineNumber":111,"author":{"gitId":"Apzure"},"content":" if (!(other instanceof Event)) {","lastModifiedDate":"2024-03-01"},{"lineNumber":112,"author":{"gitId":"Apzure"},"content":" return false;","lastModifiedDate":"2024-03-01"},{"lineNumber":113,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":114,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":115,"author":{"gitId":"Apzure"},"content":" Event otherEvent \u003d (Event) other;","lastModifiedDate":"2024-03-01"},{"lineNumber":116,"author":{"gitId":"Apzure"},"content":" return eventName.equals(otherEvent.eventName);","lastModifiedDate":"2024-03-01"},{"lineNumber":117,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":118,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":119,"author":{"gitId":"Apzure"},"content":" @Override","lastModifiedDate":"2024-03-01"},{"lineNumber":120,"author":{"gitId":"Apzure"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-01"},{"lineNumber":121,"author":{"gitId":"Apzure"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2024-03-01"},{"lineNumber":122,"author":{"gitId":"Apzure"},"content":" return Objects.hash(eventName);","lastModifiedDate":"2024-03-01"},{"lineNumber":123,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":124,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":125,"author":{"gitId":"Apzure"},"content":" @Override","lastModifiedDate":"2024-03-01"},{"lineNumber":126,"author":{"gitId":"Apzure"},"content":" public String toString() {","lastModifiedDate":"2024-03-01"},{"lineNumber":127,"author":{"gitId":"Apzure"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-01"},{"lineNumber":128,"author":{"gitId":"Apzure"},"content":" .add(\"eventName\", eventName)","lastModifiedDate":"2024-03-01"},{"lineNumber":129,"author":{"gitId":"Apzure"},"content":" .add(\"persons\", persons.toString())","lastModifiedDate":"2024-03-04"},{"lineNumber":130,"author":{"gitId":"Apzure"},"content":" .toString();","lastModifiedDate":"2024-03-01"},{"lineNumber":131,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":132,"author":{"gitId":"Apzure"},"content":"}","lastModifiedDate":"2024-03-01"}],"authorContributionMap":{"Apzure":124,"ChocoRagdoll":8}},{"path":"src/main/java/seedu/address/model/event/EventName.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Apzure"},"content":"package seedu.address.model.event;","lastModifiedDate":"2024-03-01"},{"lineNumber":2,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":3,"author":{"gitId":"Apzure"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-01"},{"lineNumber":4,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":5,"author":{"gitId":"Apzure"},"content":"/**","lastModifiedDate":"2024-03-10"},{"lineNumber":6,"author":{"gitId":"Apzure"},"content":" * Represents an Event\u0027s name.","lastModifiedDate":"2024-03-10"},{"lineNumber":7,"author":{"gitId":"Apzure"},"content":" * Guarantees: immutable","lastModifiedDate":"2024-03-10"},{"lineNumber":8,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-10"},{"lineNumber":9,"author":{"gitId":"Apzure"},"content":"public class EventName {","lastModifiedDate":"2024-03-01"},{"lineNumber":10,"author":{"gitId":"Apzure"},"content":" public final String eventName;","lastModifiedDate":"2024-03-01"},{"lineNumber":11,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":12,"author":{"gitId":"Apzure"},"content":" /**","lastModifiedDate":"2024-03-10"},{"lineNumber":13,"author":{"gitId":"Apzure"},"content":" * Constructs a {@code EventName}.","lastModifiedDate":"2024-03-10"},{"lineNumber":14,"author":{"gitId":"Apzure"},"content":" *","lastModifiedDate":"2024-03-10"},{"lineNumber":15,"author":{"gitId":"Apzure"},"content":" * @param eventName A valid name.","lastModifiedDate":"2024-03-10"},{"lineNumber":16,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-10"},{"lineNumber":17,"author":{"gitId":"Apzure"},"content":" public EventName(String eventName) {","lastModifiedDate":"2024-03-01"},{"lineNumber":18,"author":{"gitId":"Apzure"},"content":" requireNonNull(eventName);","lastModifiedDate":"2024-03-01"},{"lineNumber":19,"author":{"gitId":"Apzure"},"content":" this.eventName \u003d eventName;","lastModifiedDate":"2024-03-01"},{"lineNumber":20,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":21,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":22,"author":{"gitId":"Apzure"},"content":" @Override","lastModifiedDate":"2024-03-01"},{"lineNumber":23,"author":{"gitId":"Apzure"},"content":" public String toString() {","lastModifiedDate":"2024-03-01"},{"lineNumber":24,"author":{"gitId":"Apzure"},"content":" return eventName;","lastModifiedDate":"2024-03-01"},{"lineNumber":25,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":26,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":27,"author":{"gitId":"Apzure"},"content":" @Override","lastModifiedDate":"2024-03-01"},{"lineNumber":28,"author":{"gitId":"Apzure"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-01"},{"lineNumber":29,"author":{"gitId":"Apzure"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-01"},{"lineNumber":30,"author":{"gitId":"Apzure"},"content":" return true;","lastModifiedDate":"2024-03-01"},{"lineNumber":31,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":32,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":33,"author":{"gitId":"Apzure"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-01"},{"lineNumber":34,"author":{"gitId":"Apzure"},"content":" if (!(other instanceof EventName)) {","lastModifiedDate":"2024-03-01"},{"lineNumber":35,"author":{"gitId":"Apzure"},"content":" return false;","lastModifiedDate":"2024-03-01"},{"lineNumber":36,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":37,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":38,"author":{"gitId":"Apzure"},"content":" EventName otherName \u003d (EventName) other;","lastModifiedDate":"2024-03-01"},{"lineNumber":39,"author":{"gitId":"Apzure"},"content":" return eventName.equals(otherName.eventName);","lastModifiedDate":"2024-03-01"},{"lineNumber":40,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":41,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":42,"author":{"gitId":"Apzure"},"content":" @Override","lastModifiedDate":"2024-03-01"},{"lineNumber":43,"author":{"gitId":"Apzure"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-01"},{"lineNumber":44,"author":{"gitId":"Apzure"},"content":" return eventName.hashCode();","lastModifiedDate":"2024-03-01"},{"lineNumber":45,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":46,"author":{"gitId":"Apzure"},"content":"}","lastModifiedDate":"2024-03-01"}],"authorContributionMap":{"Apzure":46}},{"path":"src/main/java/seedu/address/model/event/UniqueEventList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Apzure"},"content":"package seedu.address.model.event;","lastModifiedDate":"2024-03-01"},{"lineNumber":2,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":3,"author":{"gitId":"Apzure"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-01"},{"lineNumber":4,"author":{"gitId":"Apzure"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-01"},{"lineNumber":5,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":6,"author":{"gitId":"Apzure"},"content":"import java.util.Iterator;","lastModifiedDate":"2024-03-01"},{"lineNumber":7,"author":{"gitId":"Apzure"},"content":"import java.util.List;","lastModifiedDate":"2024-03-01"},{"lineNumber":8,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":9,"author":{"gitId":"Apzure"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-03-01"},{"lineNumber":10,"author":{"gitId":"Apzure"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-01"},{"lineNumber":11,"author":{"gitId":"Apzure"},"content":"import seedu.address.model.event.exceptions.DuplicateEventException;","lastModifiedDate":"2024-03-01"},{"lineNumber":12,"author":{"gitId":"Apzure"},"content":"import seedu.address.model.event.exceptions.EventNotFoundException;","lastModifiedDate":"2024-03-01"},{"lineNumber":13,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":14,"author":{"gitId":"Apzure"},"content":"/**","lastModifiedDate":"2024-03-01"},{"lineNumber":15,"author":{"gitId":"Apzure"},"content":" * A list of events that enforces uniqueness between its elements and does not allow nulls.","lastModifiedDate":"2024-03-01"},{"lineNumber":16,"author":{"gitId":"Apzure"},"content":" * An event is considered unique by comparing using {@code Event#isSameEvent(Event)}.","lastModifiedDate":"2024-03-01"},{"lineNumber":17,"author":{"gitId":"Apzure"},"content":" * Adding and updating of events use Event#isSameEvent(Event) for equality to ensure that the event being added or","lastModifiedDate":"2024-03-01"},{"lineNumber":18,"author":{"gitId":"Apzure"},"content":" * updated is unique in terms of identity in the UniqueEventList.","lastModifiedDate":"2024-03-01"},{"lineNumber":19,"author":{"gitId":"Apzure"},"content":" * However, the removal of an event uses Event#equals(Object) so as to ensure that the event with exactly the same","lastModifiedDate":"2024-03-01"},{"lineNumber":20,"author":{"gitId":"Apzure"},"content":" * fields will be removed.","lastModifiedDate":"2024-03-01"},{"lineNumber":21,"author":{"gitId":"Apzure"},"content":" * \u003cp\u003e","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"Apzure"},"content":" * Supports a minimal set of list operations.","lastModifiedDate":"2024-03-01"},{"lineNumber":23,"author":{"gitId":"Apzure"},"content":" *","lastModifiedDate":"2024-03-01"},{"lineNumber":24,"author":{"gitId":"Apzure"},"content":" * @see Event#isSameEvent(Event)","lastModifiedDate":"2024-03-01"},{"lineNumber":25,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-01"},{"lineNumber":26,"author":{"gitId":"Apzure"},"content":"public class UniqueEventList implements Iterable\u003cEvent\u003e {","lastModifiedDate":"2024-03-01"},{"lineNumber":27,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":28,"author":{"gitId":"Apzure"},"content":" private final ObservableList\u003cEvent\u003e internalList \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-03-01"},{"lineNumber":29,"author":{"gitId":"Apzure"},"content":" private final ObservableList\u003cEvent\u003e internalUnmodifiableList \u003d","lastModifiedDate":"2024-03-01"},{"lineNumber":30,"author":{"gitId":"Apzure"},"content":" FXCollections.unmodifiableObservableList(internalList);","lastModifiedDate":"2024-03-01"},{"lineNumber":31,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":32,"author":{"gitId":"Apzure"},"content":" /**","lastModifiedDate":"2024-03-01"},{"lineNumber":33,"author":{"gitId":"Apzure"},"content":" * Returns true if the list contains an equivalent event as the given argument.","lastModifiedDate":"2024-03-01"},{"lineNumber":34,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-01"},{"lineNumber":35,"author":{"gitId":"Apzure"},"content":" public boolean contains(Event toCheck) {","lastModifiedDate":"2024-03-01"},{"lineNumber":36,"author":{"gitId":"Apzure"},"content":" requireNonNull(toCheck);","lastModifiedDate":"2024-03-01"},{"lineNumber":37,"author":{"gitId":"Apzure"},"content":" return internalList.stream().anyMatch(toCheck::isSameEvent);","lastModifiedDate":"2024-03-01"},{"lineNumber":38,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":39,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":40,"author":{"gitId":"Apzure"},"content":" /**","lastModifiedDate":"2024-03-01"},{"lineNumber":41,"author":{"gitId":"Apzure"},"content":" * Adds an event to the list.","lastModifiedDate":"2024-03-01"},{"lineNumber":42,"author":{"gitId":"Apzure"},"content":" * The event must not already exist in the list.","lastModifiedDate":"2024-03-01"},{"lineNumber":43,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-01"},{"lineNumber":44,"author":{"gitId":"Apzure"},"content":" public void add(Event toAdd) {","lastModifiedDate":"2024-03-01"},{"lineNumber":45,"author":{"gitId":"Apzure"},"content":" requireNonNull(toAdd);","lastModifiedDate":"2024-03-01"},{"lineNumber":46,"author":{"gitId":"Apzure"},"content":" if (contains(toAdd)) {","lastModifiedDate":"2024-03-01"},{"lineNumber":47,"author":{"gitId":"Apzure"},"content":" throw new DuplicateEventException();","lastModifiedDate":"2024-03-01"},{"lineNumber":48,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":49,"author":{"gitId":"Apzure"},"content":" internalList.add(toAdd);","lastModifiedDate":"2024-03-01"},{"lineNumber":50,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":51,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":52,"author":{"gitId":"Apzure"},"content":" /**","lastModifiedDate":"2024-03-01"},{"lineNumber":53,"author":{"gitId":"Apzure"},"content":" * Replaces the event {@code target} in the list with {@code editedEvent}.","lastModifiedDate":"2024-03-01"},{"lineNumber":54,"author":{"gitId":"Apzure"},"content":" * {@code target} must exist in the list.","lastModifiedDate":"2024-03-01"},{"lineNumber":55,"author":{"gitId":"Apzure"},"content":" * The event identity of {@code editedEvent} must not be the same as another existing event in the list.","lastModifiedDate":"2024-03-01"},{"lineNumber":56,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-01"},{"lineNumber":57,"author":{"gitId":"Apzure"},"content":" public void setEvent(Event target, Event editedEvent) {","lastModifiedDate":"2024-03-01"},{"lineNumber":58,"author":{"gitId":"Apzure"},"content":" requireAllNonNull(target, editedEvent);","lastModifiedDate":"2024-03-01"},{"lineNumber":59,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":60,"author":{"gitId":"Apzure"},"content":" int index \u003d internalList.indexOf(target);","lastModifiedDate":"2024-03-01"},{"lineNumber":61,"author":{"gitId":"Apzure"},"content":" if (index \u003d\u003d -1) {","lastModifiedDate":"2024-03-01"},{"lineNumber":62,"author":{"gitId":"Apzure"},"content":" throw new EventNotFoundException();","lastModifiedDate":"2024-03-01"},{"lineNumber":63,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":64,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":65,"author":{"gitId":"Apzure"},"content":" if (!target.isSameEvent(editedEvent) \u0026\u0026 contains(editedEvent)) {","lastModifiedDate":"2024-03-01"},{"lineNumber":66,"author":{"gitId":"Apzure"},"content":" throw new DuplicateEventException();","lastModifiedDate":"2024-03-01"},{"lineNumber":67,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":68,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":69,"author":{"gitId":"Apzure"},"content":" internalList.set(index, editedEvent);","lastModifiedDate":"2024-03-01"},{"lineNumber":70,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":71,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":72,"author":{"gitId":"Apzure"},"content":" /**","lastModifiedDate":"2024-03-01"},{"lineNumber":73,"author":{"gitId":"Apzure"},"content":" * Removes the equivalent event from the list.","lastModifiedDate":"2024-03-01"},{"lineNumber":74,"author":{"gitId":"Apzure"},"content":" * The event must exist in the list.","lastModifiedDate":"2024-03-01"},{"lineNumber":75,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-01"},{"lineNumber":76,"author":{"gitId":"Apzure"},"content":" public void remove(Event toRemove) {","lastModifiedDate":"2024-03-01"},{"lineNumber":77,"author":{"gitId":"Apzure"},"content":" requireNonNull(toRemove);","lastModifiedDate":"2024-03-01"},{"lineNumber":78,"author":{"gitId":"Apzure"},"content":" if (!internalList.remove(toRemove)) {","lastModifiedDate":"2024-03-01"},{"lineNumber":79,"author":{"gitId":"Apzure"},"content":" throw new EventNotFoundException();","lastModifiedDate":"2024-03-01"},{"lineNumber":80,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":81,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":82,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":83,"author":{"gitId":"Apzure"},"content":" public void setEvents(UniqueEventList replacement) {","lastModifiedDate":"2024-03-01"},{"lineNumber":84,"author":{"gitId":"Apzure"},"content":" requireNonNull(replacement);","lastModifiedDate":"2024-03-01"},{"lineNumber":85,"author":{"gitId":"Apzure"},"content":" internalList.setAll(replacement.internalList);","lastModifiedDate":"2024-03-01"},{"lineNumber":86,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":87,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":88,"author":{"gitId":"Apzure"},"content":" /**","lastModifiedDate":"2024-03-01"},{"lineNumber":89,"author":{"gitId":"Apzure"},"content":" * Replaces the contents of this list with {@code events}.","lastModifiedDate":"2024-03-01"},{"lineNumber":90,"author":{"gitId":"Apzure"},"content":" * {@code events} must not contain duplicate events.","lastModifiedDate":"2024-03-01"},{"lineNumber":91,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-01"},{"lineNumber":92,"author":{"gitId":"Apzure"},"content":" public void setEvents(List\u003cEvent\u003e events) {","lastModifiedDate":"2024-03-01"},{"lineNumber":93,"author":{"gitId":"Apzure"},"content":" requireAllNonNull(events);","lastModifiedDate":"2024-03-01"},{"lineNumber":94,"author":{"gitId":"Apzure"},"content":" if (!eventsAreUnique(events)) {","lastModifiedDate":"2024-03-01"},{"lineNumber":95,"author":{"gitId":"Apzure"},"content":" throw new DuplicateEventException();","lastModifiedDate":"2024-03-01"},{"lineNumber":96,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":97,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":98,"author":{"gitId":"Apzure"},"content":" internalList.setAll(events);","lastModifiedDate":"2024-03-01"},{"lineNumber":99,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":100,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":101,"author":{"gitId":"Apzure"},"content":" /**","lastModifiedDate":"2024-03-01"},{"lineNumber":102,"author":{"gitId":"Apzure"},"content":" * Returns the backing list as an unmodifiable {@code ObservableList}.","lastModifiedDate":"2024-03-01"},{"lineNumber":103,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-01"},{"lineNumber":104,"author":{"gitId":"Apzure"},"content":" public ObservableList\u003cEvent\u003e asUnmodifiableObservableList() {","lastModifiedDate":"2024-03-01"},{"lineNumber":105,"author":{"gitId":"Apzure"},"content":" return internalUnmodifiableList;","lastModifiedDate":"2024-03-01"},{"lineNumber":106,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":107,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":108,"author":{"gitId":"Apzure"},"content":" /// Utils","lastModifiedDate":"2024-03-04"},{"lineNumber":109,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":110,"author":{"gitId":"Apzure"},"content":" @Override","lastModifiedDate":"2024-03-01"},{"lineNumber":111,"author":{"gitId":"Apzure"},"content":" public Iterator\u003cEvent\u003e iterator() {","lastModifiedDate":"2024-03-01"},{"lineNumber":112,"author":{"gitId":"Apzure"},"content":" return internalList.iterator();","lastModifiedDate":"2024-03-01"},{"lineNumber":113,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":114,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":115,"author":{"gitId":"Apzure"},"content":" @Override","lastModifiedDate":"2024-03-01"},{"lineNumber":116,"author":{"gitId":"Apzure"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-01"},{"lineNumber":117,"author":{"gitId":"Apzure"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-01"},{"lineNumber":118,"author":{"gitId":"Apzure"},"content":" return true;","lastModifiedDate":"2024-03-01"},{"lineNumber":119,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":120,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":121,"author":{"gitId":"Apzure"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-01"},{"lineNumber":122,"author":{"gitId":"Apzure"},"content":" if (!(other instanceof UniqueEventList)) {","lastModifiedDate":"2024-03-01"},{"lineNumber":123,"author":{"gitId":"Apzure"},"content":" return false;","lastModifiedDate":"2024-03-01"},{"lineNumber":124,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":125,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":126,"author":{"gitId":"Apzure"},"content":" UniqueEventList otherUniqueEventList \u003d (UniqueEventList) other;","lastModifiedDate":"2024-03-01"},{"lineNumber":127,"author":{"gitId":"Apzure"},"content":" return internalList.equals(otherUniqueEventList.internalList);","lastModifiedDate":"2024-03-01"},{"lineNumber":128,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":129,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":130,"author":{"gitId":"Apzure"},"content":" @Override","lastModifiedDate":"2024-03-01"},{"lineNumber":131,"author":{"gitId":"Apzure"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-01"},{"lineNumber":132,"author":{"gitId":"Apzure"},"content":" return internalList.hashCode();","lastModifiedDate":"2024-03-01"},{"lineNumber":133,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":134,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":135,"author":{"gitId":"Apzure"},"content":" @Override","lastModifiedDate":"2024-03-01"},{"lineNumber":136,"author":{"gitId":"Apzure"},"content":" public String toString() {","lastModifiedDate":"2024-03-01"},{"lineNumber":137,"author":{"gitId":"Apzure"},"content":" return internalList.toString();","lastModifiedDate":"2024-03-01"},{"lineNumber":138,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":139,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":140,"author":{"gitId":"Apzure"},"content":" /**","lastModifiedDate":"2024-03-01"},{"lineNumber":141,"author":{"gitId":"Apzure"},"content":" * Returns true if {@code events} contains only unique events.","lastModifiedDate":"2024-03-01"},{"lineNumber":142,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-01"},{"lineNumber":143,"author":{"gitId":"Apzure"},"content":" private boolean eventsAreUnique(List\u003cEvent\u003e events) {","lastModifiedDate":"2024-03-01"},{"lineNumber":144,"author":{"gitId":"Apzure"},"content":" for (int i \u003d 0; i \u003c events.size() - 1; i++) {","lastModifiedDate":"2024-03-01"},{"lineNumber":145,"author":{"gitId":"Apzure"},"content":" for (int j \u003d i + 1; j \u003c events.size(); j++) {","lastModifiedDate":"2024-03-01"},{"lineNumber":146,"author":{"gitId":"Apzure"},"content":" if (events.get(i).isSameEvent(events.get(j))) {","lastModifiedDate":"2024-03-01"},{"lineNumber":147,"author":{"gitId":"Apzure"},"content":" return false;","lastModifiedDate":"2024-03-01"},{"lineNumber":148,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":149,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":150,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":151,"author":{"gitId":"Apzure"},"content":" return true;","lastModifiedDate":"2024-03-01"},{"lineNumber":152,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":153,"author":{"gitId":"Apzure"},"content":"}","lastModifiedDate":"2024-03-01"}],"authorContributionMap":{"Apzure":153}},{"path":"src/main/java/seedu/address/model/event/exceptions/DuplicateEventException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Apzure"},"content":"package seedu.address.model.event.exceptions;","lastModifiedDate":"2024-03-01"},{"lineNumber":2,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":3,"author":{"gitId":"Apzure"},"content":"/**","lastModifiedDate":"2024-03-01"},{"lineNumber":4,"author":{"gitId":"Apzure"},"content":" * Signals that the operation will result in duplicate Persons (Persons are considered duplicates if they have the same","lastModifiedDate":"2024-03-01"},{"lineNumber":5,"author":{"gitId":"Apzure"},"content":" * identity).","lastModifiedDate":"2024-03-01"},{"lineNumber":6,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-01"},{"lineNumber":7,"author":{"gitId":"Apzure"},"content":"public class DuplicateEventException extends RuntimeException {","lastModifiedDate":"2024-03-01"},{"lineNumber":8,"author":{"gitId":"Apzure"},"content":" public DuplicateEventException() {","lastModifiedDate":"2024-03-01"},{"lineNumber":9,"author":{"gitId":"Apzure"},"content":" super(\"Operation would result in duplicate events\");","lastModifiedDate":"2024-03-01"},{"lineNumber":10,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":11,"author":{"gitId":"Apzure"},"content":"}","lastModifiedDate":"2024-03-01"}],"authorContributionMap":{"Apzure":11}},{"path":"src/main/java/seedu/address/model/event/exceptions/EventNotFoundException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Apzure"},"content":"package seedu.address.model.event.exceptions;","lastModifiedDate":"2024-03-01"},{"lineNumber":2,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":3,"author":{"gitId":"Apzure"},"content":"/**","lastModifiedDate":"2024-03-01"},{"lineNumber":4,"author":{"gitId":"Apzure"},"content":" * Signals that the operation is unable to find the specified person.","lastModifiedDate":"2024-03-01"},{"lineNumber":5,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-01"},{"lineNumber":6,"author":{"gitId":"Apzure"},"content":"public class EventNotFoundException extends RuntimeException {}","lastModifiedDate":"2024-03-01"}],"authorContributionMap":{"Apzure":6}},{"path":"src/main/java/seedu/address/ui/EventCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Apzure"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-03-01"},{"lineNumber":2,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":3,"author":{"gitId":"Apzure"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-03-01"},{"lineNumber":4,"author":{"gitId":"Apzure"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2024-03-01"},{"lineNumber":5,"author":{"gitId":"Apzure"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2024-03-01"},{"lineNumber":6,"author":{"gitId":"Apzure"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-03-01"},{"lineNumber":7,"author":{"gitId":"Apzure"},"content":"import seedu.address.model.event.Event;","lastModifiedDate":"2024-03-01"},{"lineNumber":8,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":9,"author":{"gitId":"Apzure"},"content":"/**","lastModifiedDate":"2024-03-01"},{"lineNumber":10,"author":{"gitId":"Apzure"},"content":" * A UI component that displays information of an {@code Event}.","lastModifiedDate":"2024-03-01"},{"lineNumber":11,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-01"},{"lineNumber":12,"author":{"gitId":"Apzure"},"content":"public class EventCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-03-01"},{"lineNumber":13,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":14,"author":{"gitId":"Apzure"},"content":" private static final String FXML \u003d \"EventListCard.fxml\";","lastModifiedDate":"2024-03-01"},{"lineNumber":15,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":16,"author":{"gitId":"Apzure"},"content":" @FXML","lastModifiedDate":"2024-03-01"},{"lineNumber":17,"author":{"gitId":"Apzure"},"content":" private HBox cardPane;","lastModifiedDate":"2024-03-01"},{"lineNumber":18,"author":{"gitId":"Apzure"},"content":" @FXML","lastModifiedDate":"2024-03-01"},{"lineNumber":19,"author":{"gitId":"Apzure"},"content":" private Label id;","lastModifiedDate":"2024-03-01"},{"lineNumber":20,"author":{"gitId":"Apzure"},"content":" @FXML","lastModifiedDate":"2024-03-01"},{"lineNumber":21,"author":{"gitId":"Apzure"},"content":" private Label name;","lastModifiedDate":"2024-03-01"},{"lineNumber":22,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":23,"author":{"gitId":"Apzure"},"content":" /**","lastModifiedDate":"2024-03-01"},{"lineNumber":24,"author":{"gitId":"Apzure"},"content":" * Creates a {@code EventCard} with the given {@code Event} and index to display.","lastModifiedDate":"2024-03-01"},{"lineNumber":25,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-01"},{"lineNumber":26,"author":{"gitId":"Apzure"},"content":" public EventCard(Event event, int displayedIndex) {","lastModifiedDate":"2024-03-01"},{"lineNumber":27,"author":{"gitId":"Apzure"},"content":" super(FXML);","lastModifiedDate":"2024-03-01"},{"lineNumber":28,"author":{"gitId":"Apzure"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2024-03-01"},{"lineNumber":29,"author":{"gitId":"Apzure"},"content":" name.setText(event.getEventName().eventName);","lastModifiedDate":"2024-03-01"},{"lineNumber":30,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":31,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":32,"author":{"gitId":"Apzure"},"content":" public Region getRoot() {","lastModifiedDate":"2024-03-01"},{"lineNumber":33,"author":{"gitId":"Apzure"},"content":" return cardPane;","lastModifiedDate":"2024-03-01"},{"lineNumber":34,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":35,"author":{"gitId":"Apzure"},"content":"}","lastModifiedDate":"2024-03-01"}],"authorContributionMap":{"Apzure":35}},{"path":"src/main/java/seedu/address/ui/EventListPanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Apzure"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-03-01"},{"lineNumber":2,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":3,"author":{"gitId":"Apzure"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-03-01"},{"lineNumber":4,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":5,"author":{"gitId":"Apzure"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-01"},{"lineNumber":6,"author":{"gitId":"Apzure"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-03-01"},{"lineNumber":7,"author":{"gitId":"Apzure"},"content":"import javafx.scene.control.ListCell;","lastModifiedDate":"2024-03-01"},{"lineNumber":8,"author":{"gitId":"Apzure"},"content":"import javafx.scene.control.ListView;","lastModifiedDate":"2024-03-01"},{"lineNumber":9,"author":{"gitId":"Apzure"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-03-01"},{"lineNumber":10,"author":{"gitId":"Apzure"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-03-01"},{"lineNumber":11,"author":{"gitId":"Apzure"},"content":"import seedu.address.model.event.Event;","lastModifiedDate":"2024-03-01"},{"lineNumber":12,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":13,"author":{"gitId":"Apzure"},"content":"/**","lastModifiedDate":"2024-03-01"},{"lineNumber":14,"author":{"gitId":"Apzure"},"content":" * Panel containing the list of events.","lastModifiedDate":"2024-03-01"},{"lineNumber":15,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-01"},{"lineNumber":16,"author":{"gitId":"Apzure"},"content":"public class EventListPanel extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-03-01"},{"lineNumber":17,"author":{"gitId":"Apzure"},"content":" private static final String FXML \u003d \"EventListPanel.fxml\";","lastModifiedDate":"2024-03-01"},{"lineNumber":18,"author":{"gitId":"Apzure"},"content":" private final Logger logger \u003d LogsCenter.getLogger(EventListPanel.class);","lastModifiedDate":"2024-03-01"},{"lineNumber":19,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":20,"author":{"gitId":"Apzure"},"content":" @FXML","lastModifiedDate":"2024-03-01"},{"lineNumber":21,"author":{"gitId":"Apzure"},"content":" private ListView\u003cEvent\u003e eventListView;","lastModifiedDate":"2024-03-01"},{"lineNumber":22,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":23,"author":{"gitId":"Apzure"},"content":" /**","lastModifiedDate":"2024-03-01"},{"lineNumber":24,"author":{"gitId":"Apzure"},"content":" * Creates an {@code EventListPanel} with the given {@code ObservableList}.","lastModifiedDate":"2024-03-01"},{"lineNumber":25,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-01"},{"lineNumber":26,"author":{"gitId":"Apzure"},"content":" public EventListPanel(ObservableList\u003cEvent\u003e eventList) {","lastModifiedDate":"2024-03-01"},{"lineNumber":27,"author":{"gitId":"Apzure"},"content":" super(FXML);","lastModifiedDate":"2024-03-01"},{"lineNumber":28,"author":{"gitId":"Apzure"},"content":" eventListView.setItems(eventList);","lastModifiedDate":"2024-03-01"},{"lineNumber":29,"author":{"gitId":"Apzure"},"content":" eventListView.setCellFactory(listView -\u003e new EventListViewCell());","lastModifiedDate":"2024-03-01"},{"lineNumber":30,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":31,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":32,"author":{"gitId":"Apzure"},"content":" /**","lastModifiedDate":"2024-03-01"},{"lineNumber":33,"author":{"gitId":"Apzure"},"content":" * Custom {@code ListCell} that displays the graphics of an {@code Event} using an {@code EventCard}.","lastModifiedDate":"2024-03-01"},{"lineNumber":34,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-01"},{"lineNumber":35,"author":{"gitId":"Apzure"},"content":" class EventListViewCell extends ListCell\u003cEvent\u003e {","lastModifiedDate":"2024-03-01"},{"lineNumber":36,"author":{"gitId":"Apzure"},"content":" @Override","lastModifiedDate":"2024-03-01"},{"lineNumber":37,"author":{"gitId":"Apzure"},"content":" protected void updateItem(Event event, boolean empty) {","lastModifiedDate":"2024-03-01"},{"lineNumber":38,"author":{"gitId":"Apzure"},"content":" super.updateItem(event, empty);","lastModifiedDate":"2024-03-01"},{"lineNumber":39,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":40,"author":{"gitId":"Apzure"},"content":" if (empty || event \u003d\u003d null) {","lastModifiedDate":"2024-03-01"},{"lineNumber":41,"author":{"gitId":"Apzure"},"content":" setGraphic(null);","lastModifiedDate":"2024-03-01"},{"lineNumber":42,"author":{"gitId":"Apzure"},"content":" setText(null);","lastModifiedDate":"2024-03-01"},{"lineNumber":43,"author":{"gitId":"Apzure"},"content":" } else {","lastModifiedDate":"2024-03-01"},{"lineNumber":44,"author":{"gitId":"Apzure"},"content":" setGraphic(new EventCard(event, getIndex() + 1).getRoot());","lastModifiedDate":"2024-03-01"},{"lineNumber":45,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":46,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":47,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":48,"author":{"gitId":"Apzure"},"content":"}","lastModifiedDate":"2024-03-01"}],"authorContributionMap":{"Apzure":48}},{"path":"src/main/java/seedu/address/ui/MainWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-06-16"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.event.ActionEvent;","lastModifiedDate":"2016-12-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-08-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.MenuItem;","lastModifiedDate":"2016-08-26"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.control.TextInputControl;","lastModifiedDate":"2016-12-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyCombination;","lastModifiedDate":"2016-08-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyEvent;","lastModifiedDate":"2016-12-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.scene.layout.StackPane;","lastModifiedDate":"2017-05-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2016-09-28"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2017-06-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.Logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * The Main Window. Provides the basic application layout containing","lastModifiedDate":"2016-08-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * a menu bar and space where other JavaFX elements can be placed.","lastModifiedDate":"2016-08-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class MainWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-11-29"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"MainWindow.fxml\";","lastModifiedDate":"2016-08-18"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(getClass());","lastModifiedDate":"2018-08-14"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Stage primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // Independent Ui parts residing in this Ui container","lastModifiedDate":"2016-08-18"},{"lineNumber":34,"author":{"gitId":"Apzure"},"content":" private EventListPanel eventListPanel;","lastModifiedDate":"2024-03-01"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private PersonListPanel personListPanel;","lastModifiedDate":"2016-08-18"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private ResultDisplay resultDisplay;","lastModifiedDate":"2018-12-09"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private HelpWindow helpWindow;","lastModifiedDate":"2018-03-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private StackPane commandBoxPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":43,"author":{"gitId":"-"},"content":" private MenuItem helpMenuItem;","lastModifiedDate":"2016-08-18"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":45,"author":{"gitId":"Apzure"},"content":" @FXML","lastModifiedDate":"2024-03-01"},{"lineNumber":46,"author":{"gitId":"Apzure"},"content":" private StackPane eventListPanelPlaceholder;","lastModifiedDate":"2024-03-01"},{"lineNumber":47,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":" private StackPane personListPanelPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":51,"author":{"gitId":"Apzure"},"content":" @FXML","lastModifiedDate":"2024-03-15"},{"lineNumber":52,"author":{"gitId":"Apzure"},"content":" private StackPane personListOfSelectedEventPanelPlaceholder;","lastModifiedDate":"2024-03-15"},{"lineNumber":53,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" private StackPane resultDisplayPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" private StackPane statusbarPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * Creates a {@code MainWindow} with the given {@code Stage} and {@code Logic}.","lastModifiedDate":"2020-05-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public MainWindow(Stage primaryStage, Logic logic) {","lastModifiedDate":"2018-12-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" super(FXML, primaryStage);","lastModifiedDate":"2017-11-29"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":" // Set dependencies","lastModifiedDate":"2016-09-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":" this.primaryStage \u003d primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":68,"author":{"gitId":"-"},"content":" this.logic \u003d logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":70,"author":{"gitId":"-"},"content":" // Configure the UI","lastModifiedDate":"2016-09-21"},{"lineNumber":71,"author":{"gitId":"-"},"content":" setWindowDefaultSize(logic.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":73,"author":{"gitId":"-"},"content":" setAccelerators();","lastModifiedDate":"2016-09-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":75,"author":{"gitId":"-"},"content":" helpWindow \u003d new HelpWindow();","lastModifiedDate":"2018-03-15"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public Stage getPrimaryStage() {","lastModifiedDate":"2016-12-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":" return primaryStage;","lastModifiedDate":"2016-12-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":82,"author":{"gitId":"-"},"content":" private void setAccelerators() {","lastModifiedDate":"2016-09-21"},{"lineNumber":83,"author":{"gitId":"-"},"content":" setAccelerator(helpMenuItem, KeyCombination.valueOf(\"F1\"));","lastModifiedDate":"2016-12-18"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Sets the accelerator of a MenuItem.","lastModifiedDate":"2016-12-18"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * @param keyCombination the KeyCombination value of the accelerator","lastModifiedDate":"2016-12-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":" private void setAccelerator(MenuItem menuItem, KeyCombination keyCombination) {","lastModifiedDate":"2016-12-18"},{"lineNumber":91,"author":{"gitId":"-"},"content":" menuItem.setAccelerator(keyCombination);","lastModifiedDate":"2016-12-18"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":93,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-12-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * TODO: the code below can be removed once the bug reported here","lastModifiedDate":"2016-12-18"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * https://bugs.openjdk.java.net/browse/JDK-8131666","lastModifiedDate":"2016-12-18"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * is fixed in later version of SDK.","lastModifiedDate":"2016-12-18"},{"lineNumber":97,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * According to the bug report, TextInputControl (TextField, TextArea) will","lastModifiedDate":"2016-12-18"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * consume function-key events. Because CommandBox contains a TextField, and","lastModifiedDate":"2016-12-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * ResultDisplay contains a TextArea, thus some accelerators (e.g F1) will","lastModifiedDate":"2016-12-18"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * not work when the focus is in them because the key event is consumed by","lastModifiedDate":"2016-12-18"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * the TextInputControl(s).","lastModifiedDate":"2016-12-18"},{"lineNumber":103,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":104,"author":{"gitId":"-"},"content":" * For now, we add following event filter to capture such key events and open","lastModifiedDate":"2016-12-18"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * help window purposely so to support accelerators even when focus is","lastModifiedDate":"2016-12-18"},{"lineNumber":106,"author":{"gitId":"-"},"content":" * in CommandBox or ResultDisplay.","lastModifiedDate":"2016-12-18"},{"lineNumber":107,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":108,"author":{"gitId":"-"},"content":" getRoot().addEventFilter(KeyEvent.KEY_PRESSED, event -\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":109,"author":{"gitId":"-"},"content":" if (event.getTarget() instanceof TextInputControl \u0026\u0026 keyCombination.match(event)) {","lastModifiedDate":"2016-12-18"},{"lineNumber":110,"author":{"gitId":"-"},"content":" menuItem.getOnAction().handle(new ActionEvent());","lastModifiedDate":"2016-12-18"},{"lineNumber":111,"author":{"gitId":"-"},"content":" event.consume();","lastModifiedDate":"2016-12-18"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":113,"author":{"gitId":"-"},"content":" });","lastModifiedDate":"2016-12-18"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":116,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":117,"author":{"gitId":"-"},"content":" * Fills up all the placeholders of this window.","lastModifiedDate":"2017-08-16"},{"lineNumber":118,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":119,"author":{"gitId":"-"},"content":" void fillInnerParts() {","lastModifiedDate":"2016-09-21"},{"lineNumber":120,"author":{"gitId":"-"},"content":" personListPanel \u003d new PersonListPanel(logic.getFilteredPersonList());","lastModifiedDate":"2019-01-25"},{"lineNumber":121,"author":{"gitId":"-"},"content":" personListPanelPlaceholder.getChildren().add(personListPanel.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":123,"author":{"gitId":"Apzure"},"content":" eventListPanel \u003d new EventListPanel(logic.getFilteredEventList());","lastModifiedDate":"2024-03-15"},{"lineNumber":124,"author":{"gitId":"Apzure"},"content":" eventListPanelPlaceholder.getChildren().add(eventListPanel.getRoot());","lastModifiedDate":"2024-03-01"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":126,"author":{"gitId":"-"},"content":" resultDisplay \u003d new ResultDisplay();","lastModifiedDate":"2018-12-09"},{"lineNumber":127,"author":{"gitId":"-"},"content":" resultDisplayPlaceholder.getChildren().add(resultDisplay.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":129,"author":{"gitId":"-"},"content":" StatusBarFooter statusBarFooter \u003d new StatusBarFooter(logic.getAddressBookFilePath());","lastModifiedDate":"2019-01-25"},{"lineNumber":130,"author":{"gitId":"-"},"content":" statusbarPlaceholder.getChildren().add(statusBarFooter.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":132,"author":{"gitId":"-"},"content":" CommandBox commandBox \u003d new CommandBox(this::executeCommand);","lastModifiedDate":"2019-01-25"},{"lineNumber":133,"author":{"gitId":"-"},"content":" commandBoxPlaceholder.getChildren().add(commandBox.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":136,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":137,"author":{"gitId":"-"},"content":" * Sets the default size based on {@code guiSettings}.","lastModifiedDate":"2018-11-27"},{"lineNumber":138,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":139,"author":{"gitId":"-"},"content":" private void setWindowDefaultSize(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":140,"author":{"gitId":"-"},"content":" primaryStage.setHeight(guiSettings.getWindowHeight());","lastModifiedDate":"2018-11-27"},{"lineNumber":141,"author":{"gitId":"-"},"content":" primaryStage.setWidth(guiSettings.getWindowWidth());","lastModifiedDate":"2018-11-27"},{"lineNumber":142,"author":{"gitId":"-"},"content":" if (guiSettings.getWindowCoordinates() !\u003d null) {","lastModifiedDate":"2018-11-27"},{"lineNumber":143,"author":{"gitId":"-"},"content":" primaryStage.setX(guiSettings.getWindowCoordinates().getX());","lastModifiedDate":"2018-11-27"},{"lineNumber":144,"author":{"gitId":"-"},"content":" primaryStage.setY(guiSettings.getWindowCoordinates().getY());","lastModifiedDate":"2018-11-27"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":148,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":149,"author":{"gitId":"-"},"content":" * Opens the help window or focuses on it if it\u0027s already opened.","lastModifiedDate":"2018-03-15"},{"lineNumber":150,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":151,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":152,"author":{"gitId":"-"},"content":" public void handleHelp() {","lastModifiedDate":"2016-08-31"},{"lineNumber":153,"author":{"gitId":"-"},"content":" if (!helpWindow.isShowing()) {","lastModifiedDate":"2018-03-15"},{"lineNumber":154,"author":{"gitId":"-"},"content":" helpWindow.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":155,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-15"},{"lineNumber":156,"author":{"gitId":"-"},"content":" helpWindow.focus();","lastModifiedDate":"2018-03-15"},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":158,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":160,"author":{"gitId":"-"},"content":" void show() {","lastModifiedDate":"2016-10-15"},{"lineNumber":161,"author":{"gitId":"-"},"content":" primaryStage.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":162,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":164,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":165,"author":{"gitId":"-"},"content":" * Closes the application.","lastModifiedDate":"2016-08-18"},{"lineNumber":166,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":167,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":168,"author":{"gitId":"-"},"content":" private void handleExit() {","lastModifiedDate":"2016-08-18"},{"lineNumber":169,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(primaryStage.getWidth(), primaryStage.getHeight(),","lastModifiedDate":"2018-12-08"},{"lineNumber":170,"author":{"gitId":"-"},"content":" (int) primaryStage.getX(), (int) primaryStage.getY());","lastModifiedDate":"2018-12-08"},{"lineNumber":171,"author":{"gitId":"-"},"content":" logic.setGuiSettings(guiSettings);","lastModifiedDate":"2018-12-08"},{"lineNumber":172,"author":{"gitId":"-"},"content":" helpWindow.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":173,"author":{"gitId":"-"},"content":" primaryStage.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-25"},{"lineNumber":176,"author":{"gitId":"Apzure"},"content":" public EventListPanel getEventListPanel() {","lastModifiedDate":"2024-03-01"},{"lineNumber":177,"author":{"gitId":"Apzure"},"content":" return eventListPanel;","lastModifiedDate":"2024-03-01"},{"lineNumber":178,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":179,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":180,"author":{"gitId":"-"},"content":" public PersonListPanel getPersonListPanel() {","lastModifiedDate":"2016-08-25"},{"lineNumber":181,"author":{"gitId":"-"},"content":" return personListPanel;","lastModifiedDate":"2018-08-14"},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-25"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":184,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":185,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2018-12-09"},{"lineNumber":186,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09"},{"lineNumber":187,"author":{"gitId":"-"},"content":" * @see seedu.address.logic.Logic#execute(String)","lastModifiedDate":"2018-12-09"},{"lineNumber":188,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":189,"author":{"gitId":"-"},"content":" private CommandResult executeCommand(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2018-12-09"},{"lineNumber":190,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":191,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d logic.execute(commandText);","lastModifiedDate":"2018-12-09"},{"lineNumber":192,"author":{"gitId":"-"},"content":" logger.info(\"Result: \" + commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":193,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":195,"author":{"gitId":"-"},"content":" if (commandResult.isShowHelp()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":196,"author":{"gitId":"-"},"content":" handleHelp();","lastModifiedDate":"2018-12-09"},{"lineNumber":197,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":199,"author":{"gitId":"-"},"content":" if (commandResult.isExit()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":200,"author":{"gitId":"-"},"content":" handleExit();","lastModifiedDate":"2018-12-09"},{"lineNumber":201,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":203,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":204,"author":{"gitId":"-"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2018-12-09"},{"lineNumber":205,"author":{"gitId":"-"},"content":" logger.info(\"An error occurred while executing command: \" + commandText);","lastModifiedDate":"2023-06-13"},{"lineNumber":206,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(e.getMessage());","lastModifiedDate":"2018-12-09"},{"lineNumber":207,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2018-12-09"},{"lineNumber":208,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":209,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":210,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"Apzure":13,"-":197}},{"path":"src/main/resources/view/EventListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Apzure"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-03-01"},{"lineNumber":2,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":3,"author":{"gitId":"Apzure"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-03-01"},{"lineNumber":4,"author":{"gitId":"Apzure"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-03-01"},{"lineNumber":5,"author":{"gitId":"Apzure"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2024-03-01"},{"lineNumber":6,"author":{"gitId":"Apzure"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2024-03-01"},{"lineNumber":7,"author":{"gitId":"Apzure"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2024-03-01"},{"lineNumber":8,"author":{"gitId":"Apzure"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-03-01"},{"lineNumber":9,"author":{"gitId":"Apzure"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2024-03-01"},{"lineNumber":10,"author":{"gitId":"Apzure"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-03-01"},{"lineNumber":11,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":12,"author":{"gitId":"Apzure"},"content":"\u003cHBox id\u003d\"cardPane\" fx:id\u003d\"cardPane\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-03-01"},{"lineNumber":13,"author":{"gitId":"Apzure"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-01"},{"lineNumber":14,"author":{"gitId":"Apzure"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2024-03-01"},{"lineNumber":15,"author":{"gitId":"Apzure"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2024-03-01"},{"lineNumber":16,"author":{"gitId":"Apzure"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2024-03-01"},{"lineNumber":17,"author":{"gitId":"Apzure"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2024-03-01"},{"lineNumber":18,"author":{"gitId":"Apzure"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-01"},{"lineNumber":19,"author":{"gitId":"Apzure"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2024-03-01"},{"lineNumber":20,"author":{"gitId":"Apzure"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-01"},{"lineNumber":21,"author":{"gitId":"Apzure"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-03-01"},{"lineNumber":22,"author":{"gitId":"Apzure"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2024-03-01"},{"lineNumber":23,"author":{"gitId":"Apzure"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2024-03-01"},{"lineNumber":24,"author":{"gitId":"Apzure"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2024-03-01"},{"lineNumber":25,"author":{"gitId":"Apzure"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2024-03-01"},{"lineNumber":26,"author":{"gitId":"Apzure"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2024-03-01"},{"lineNumber":27,"author":{"gitId":"Apzure"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-03-01"},{"lineNumber":28,"author":{"gitId":"Apzure"},"content":" \u003cLabel fx:id\u003d\"name\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2024-03-01"},{"lineNumber":29,"author":{"gitId":"Apzure"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-01"},{"lineNumber":30,"author":{"gitId":"Apzure"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-01"},{"lineNumber":31,"author":{"gitId":"Apzure"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2024-03-01"},{"lineNumber":32,"author":{"gitId":"Apzure"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2024-03-01"}],"authorContributionMap":{"Apzure":32}},{"path":"src/main/resources/view/EventListPanel.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Apzure"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-03-01"},{"lineNumber":2,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":3,"author":{"gitId":"Apzure"},"content":"\u003c?import javafx.scene.control.ListView?\u003e","lastModifiedDate":"2024-03-01"},{"lineNumber":4,"author":{"gitId":"Apzure"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-03-01"},{"lineNumber":5,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":6,"author":{"gitId":"Apzure"},"content":"\u003cVBox xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-03-01"},{"lineNumber":7,"author":{"gitId":"Apzure"},"content":" \u003cListView fx:id\u003d\"eventListView\" VBox.vgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2024-03-01"},{"lineNumber":8,"author":{"gitId":"Apzure"},"content":"\u003c/VBox\u003e","lastModifiedDate":"2024-03-01"}],"authorContributionMap":{"Apzure":8}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2016-08-26"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Menu?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuBar?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuItem?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.SplitPane?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"\u003cfx:root type\u003d\"javafx.stage.Stage\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"","lastModifiedDate":"2023-07-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":" title\u003d\"Address App\" minWidth\u003d\"450\" minHeight\u003d\"600\" onCloseRequest\u003d\"#handleExit\"\u003e","lastModifiedDate":"2018-12-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cicons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cImage url\u003d\"@/images/address_book_32.png\"/\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/icons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cscene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cScene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@DarkTheme.css\"/\u003e","lastModifiedDate":"2016-08-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@Extensions.css\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003cVBox\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cMenuBar fx:id\u003d\"menuBar\" VBox.vgrow\u003d\"NEVER\"\u003e","lastModifiedDate":"2017-06-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"File\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003cMenuItem mnemonicParsing\u003d\"false\" onAction\u003d\"#handleExit\" text\u003d\"Exit\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"Help\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cMenuItem fx:id\u003d\"helpMenuItem\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleHelp\" text\u003d\"Help\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003c/MenuBar\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"commandBoxPlaceholder\" styleClass\u003d\"pane-with-border\"\u003e","lastModifiedDate":"2017-05-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\"/\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"resultDisplayPlaceholder\" styleClass\u003d\"pane-with-border\"","lastModifiedDate":"2017-05-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":" minHeight\u003d\"100\" prefHeight\u003d\"100\" maxHeight\u003d\"100\"\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":45,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\"/\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":47,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":49,"author":{"gitId":"Apzure"},"content":" \u003cSplitPane dividerPositions\u003d\"0.3, 0.6\" VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":50,"author":{"gitId":"Apzure"},"content":" \u003citems\u003e","lastModifiedDate":"2024-03-01"},{"lineNumber":51,"author":{"gitId":"Apzure"},"content":" \u003cStackPane fx:id\u003d\"eventListPanelPlaceholder\" styleClass\u003d\"pane-with-border\" minWidth\u003d\"200\" prefWidth\u003d\"200\" SplitPane.resizableWithParent\u003d\"false\"\u003e","lastModifiedDate":"2024-03-01"},{"lineNumber":52,"author":{"gitId":"Apzure"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-01"},{"lineNumber":53,"author":{"gitId":"Apzure"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"10\" left\u003d\"10\"/\u003e","lastModifiedDate":"2024-03-01"},{"lineNumber":54,"author":{"gitId":"Apzure"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-01"},{"lineNumber":55,"author":{"gitId":"Apzure"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2024-03-01"},{"lineNumber":56,"author":{"gitId":"Apzure"},"content":" \u003cStackPane fx:id\u003d\"personListPanelPlaceholder\" styleClass\u003d\"pane-with-border\" minWidth\u003d\"200\" prefWidth\u003d\"200\" SplitPane.resizableWithParent\u003d\"false\"\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":57,"author":{"gitId":"Apzure"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":58,"author":{"gitId":"Apzure"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"10\" left\u003d\"10\"/\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":59,"author":{"gitId":"Apzure"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":60,"author":{"gitId":"Apzure"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":61,"author":{"gitId":"Apzure"},"content":" \u003c/items\u003e","lastModifiedDate":"2024-03-01"},{"lineNumber":62,"author":{"gitId":"Apzure"},"content":" \u003c/SplitPane\u003e","lastModifiedDate":"2024-03-01"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":64,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"statusbarPlaceholder\" VBox.vgrow\u003d\"NEVER\"/\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":65,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":67,"author":{"gitId":"-"},"content":" \u003c/scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":68,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-11-29"}],"authorContributionMap":{"Apzure":14,"-":54}},{"path":"src/test/java/seedu/address/logic/LogicManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2018-12-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2017-01-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2016-09-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-31"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-12-09"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-12-09"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2018-12-09"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2018-12-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-12-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":"public class LogicManagerTest {","lastModifiedDate":"2016-09-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_IO_EXCEPTION \u003d new IOException(\"dummy IO exception\");","lastModifiedDate":"2023-06-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_AD_EXCEPTION \u003d new AccessDeniedException(\"dummy access denied exception\");","lastModifiedDate":"2023-06-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public Path temporaryFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-20"},{"lineNumber":44,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2018-12-09"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":46,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2019-04-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d","lastModifiedDate":"2019-04-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(temporaryFolder.resolve(\"addressBook.json\"));","lastModifiedDate":"2019-04-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2019-04-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2018-12-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-20"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void execute_invalidCommandFormat_throwsParseException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":57,"author":{"gitId":"-"},"content":" String invalidCommand \u003d \"uicfhmowqewca\";","lastModifiedDate":"2017-06-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertParseException(invalidCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-06-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-14"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void execute_commandExecutionError_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":63,"author":{"gitId":"-"},"content":" String deleteCommand \u003d \"delete 9\";","lastModifiedDate":"2017-06-14"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertCommandException(deleteCommand, MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2017-06-14"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void execute_validCommand_success() throws Exception {","lastModifiedDate":"2019-03-14"},{"lineNumber":69,"author":{"gitId":"-"},"content":" String listCommand \u003d ListCommand.COMMAND_WORD;","lastModifiedDate":"2017-06-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertCommandSuccess(listCommand, ListCommand.MESSAGE_SUCCESS, model);","lastModifiedDate":"2017-06-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20"},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2019-04-25"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-06-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-06-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2023-06-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":85,"author":{"gitId":"myang2020"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":86,"author":{"gitId":"myang2020"},"content":" public void getFilteredPersonListOfSelectedEvent_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":87,"author":{"gitId":"myang2020"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredPersonListOfSelectedEvent().remove(0));","lastModifiedDate":"2024-03-16"},{"lineNumber":88,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":89,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":95,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":101,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":102,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14"},{"lineNumber":103,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14"},{"lineNumber":104,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14"},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14"},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":109,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"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"},{"lineNumber":111,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":112,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":113,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":117,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14"},{"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"},{"lineNumber":119,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"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"},{"lineNumber":127,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":128,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":129,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":130,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14"},{"lineNumber":131,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-05-31"},{"lineNumber":132,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":135,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":136,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":137,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":138,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":139,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":140,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":141,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":142,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":143,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31"},{"lineNumber":144,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14"},{"lineNumber":145,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19"},{"lineNumber":148,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":149,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13"},{"lineNumber":150,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13"},{"lineNumber":151,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13"},{"lineNumber":152,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13"},{"lineNumber":153,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":154,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13"},{"lineNumber":155,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":157,"author":{"gitId":"-"},"content":" // Inject LogicManager with an AddressBookStorage that throws the IOException e when saving","lastModifiedDate":"2023-06-13"},{"lineNumber":158,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(prefPath) {","lastModifiedDate":"2023-06-13"},{"lineNumber":159,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":160,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath)","lastModifiedDate":"2023-06-13"},{"lineNumber":161,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13"},{"lineNumber":162,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13"},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":164,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":166,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":167,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13"},{"lineNumber":168,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2023-06-13"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":170,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":172,"author":{"gitId":"-"},"content":" // Triggers the saveAddressBook method by executing an add command","lastModifiedDate":"2023-06-13"},{"lineNumber":173,"author":{"gitId":"-"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2023-06-13"},{"lineNumber":174,"author":{"gitId":"-"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY;","lastModifiedDate":"2023-06-13"},{"lineNumber":175,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2023-06-13"},{"lineNumber":176,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13"},{"lineNumber":177,"author":{"gitId":"-"},"content":" expectedModel.addPerson(expectedPerson);","lastModifiedDate":"2023-06-13"},{"lineNumber":178,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13"},{"lineNumber":179,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":180,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"-":175,"myang2020":5}},{"path":"src/test/java/seedu/address/logic/commands/AddCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-01-10"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-05-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-05-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2017-05-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-12"},{"lineNumber":20,"author":{"gitId":"myang2020"},"content":"import seedu.address.testutil.ModelStub;","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class AddCommandTest {","lastModifiedDate":"2017-05-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddCommand(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void execute_personAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2017-05-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" ModelStubAcceptingPersonAdded modelStub \u003d new ModelStubAcceptingPersonAdded();","lastModifiedDate":"2017-05-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new AddCommand(validPerson).execute(modelStub);","lastModifiedDate":"2019-01-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertEquals(String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validPerson)),","lastModifiedDate":"2019-02-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2019-02-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(validPerson), modelStub.personsAdded);","lastModifiedDate":"2017-05-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(validPerson);","lastModifiedDate":"2018-08-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":" ModelStub modelStub \u003d new ModelStubWithPerson(validPerson);","lastModifiedDate":"2018-08-07"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, AddCommand.MESSAGE_DUPLICATE_PERSON, () -\u003e addCommand.execute(modelStub));","lastModifiedDate":"2019-05-03"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-22"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":53,"author":{"gitId":"-"},"content":" Person alice \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2017-06-22"},{"lineNumber":54,"author":{"gitId":"-"},"content":" Person bob \u003d new PersonBuilder().withName(\"Bob\").build();","lastModifiedDate":"2017-06-22"},{"lineNumber":55,"author":{"gitId":"-"},"content":" AddCommand addAliceCommand \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22"},{"lineNumber":56,"author":{"gitId":"-"},"content":" AddCommand addBobCommand \u003d new AddCommand(bob);","lastModifiedDate":"2017-06-22"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":58,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommand));","lastModifiedDate":"2017-06-22"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":61,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":62,"author":{"gitId":"-"},"content":" AddCommand addAliceCommandCopy \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommandCopy));","lastModifiedDate":"2017-06-22"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(1));","lastModifiedDate":"2017-06-22"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(null));","lastModifiedDate":"2017-06-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(addBobCommand));","lastModifiedDate":"2017-06-22"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(ALICE);","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":" String expected \u003d AddCommand.class.getCanonicalName() + \"{toAdd\u003d\" + ALICE + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertEquals(expected, addCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * A Model stub that contains a single person.","lastModifiedDate":"2018-08-07"},{"lineNumber":84,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":85,"author":{"gitId":"-"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2018-08-07"},{"lineNumber":86,"author":{"gitId":"-"},"content":" private final Person person;","lastModifiedDate":"2018-08-07"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":88,"author":{"gitId":"-"},"content":" ModelStubWithPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":89,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":90,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2018-08-07"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":94,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":95,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":96,"author":{"gitId":"-"},"content":" return this.person.isSamePerson(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":100,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2017-05-12"},{"lineNumber":102,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":103,"author":{"gitId":"-"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2017-05-12"},{"lineNumber":104,"author":{"gitId":"-"},"content":" final ArrayList\u003cPerson\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2017-05-12"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":108,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":109,"author":{"gitId":"-"},"content":" return personsAdded.stream().anyMatch(person::isSamePerson);","lastModifiedDate":"2018-08-07"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":113,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":115,"author":{"gitId":"-"},"content":" personsAdded.add(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":118,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":119,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04"},{"lineNumber":120,"author":{"gitId":"-"},"content":" return new AddressBook();","lastModifiedDate":"2017-05-04"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":124,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12"}],"authorContributionMap":{"-":123,"myang2020":1}},{"path":"src/test/java/seedu/address/logic/commands/AddEventCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Apzure"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"Apzure"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"Apzure"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"Apzure"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"Apzure"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"Apzure"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"Apzure"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"Apzure"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"Apzure"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"Apzure"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"Apzure"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"Apzure"},"content":"import seedu.address.model.event.Event;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"Apzure"},"content":"import seedu.address.testutil.EventBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"myang2020"},"content":"import seedu.address.testutil.ModelStub;","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"Apzure"},"content":"public class AddEventCommandTest {","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"Apzure"},"content":" public void constructor_nullEvent_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"Apzure"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddEventCommand(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"Apzure"},"content":" public void execute_eventAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"Apzure"},"content":" ModelStubAcceptingEventAdded modelStub \u003d new ModelStubAcceptingEventAdded();","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"Apzure"},"content":" Event validEvent \u003d new EventBuilder().build();","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"Apzure"},"content":" CommandResult commandResult \u003d new AddEventCommand(validEvent).execute(modelStub);","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"Apzure"},"content":" assertEquals(String.format(AddEventCommand.MESSAGE_SUCCESS, Messages.format(validEvent)),","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"Apzure"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"Apzure"},"content":" assertEquals(Arrays.asList(validEvent), modelStub.eventsAdded);","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"Apzure"},"content":" public void execute_duplicateEvent_throwsCommandException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"Apzure"},"content":" Event validEvent \u003d new EventBuilder().build();","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"Apzure"},"content":" AddEventCommand addEventCommand \u003d new AddEventCommand(validEvent);","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"Apzure"},"content":" ModelStub modelStub \u003d new ModelStubWithEvent(validEvent);","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"Apzure"},"content":" assertThrows(CommandException.class, AddEventCommand.MESSAGE_DUPLICATE_EVENT, (","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"Apzure"},"content":" ) -\u003e addEventCommand.execute(modelStub));","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"Apzure"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"Apzure"},"content":" Event eventToAdd \u003d new EventBuilder().withEventName(\"Sample Event\").build();","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"Apzure"},"content":" AddEventCommand addEventCommand \u003d new AddEventCommand(eventToAdd);","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"Apzure"},"content":" String expected \u003d AddEventCommand.class.getCanonicalName() + \"{toAdd\u003d\" + eventToAdd + \"}\";","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"Apzure"},"content":" assertEquals(expected, addEventCommand.toString());","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"Apzure"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"Apzure"},"content":" * A Model stub that contains a single event.","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"Apzure"},"content":" private class ModelStubWithEvent extends ModelStub {","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"Apzure"},"content":" private final Event event;","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":63,"author":{"gitId":"Apzure"},"content":" ModelStubWithEvent(Event event) {","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"Apzure"},"content":" requireNonNull(event);","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"Apzure"},"content":" this.event \u003d event;","lastModifiedDate":"2024-03-12"},{"lineNumber":66,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":68,"author":{"gitId":"Apzure"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":69,"author":{"gitId":"Apzure"},"content":" public boolean hasEvent(Event event) {","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"Apzure"},"content":" requireNonNull(event);","lastModifiedDate":"2024-03-12"},{"lineNumber":71,"author":{"gitId":"Apzure"},"content":" return this.event.isSameEvent(event);","lastModifiedDate":"2024-03-12"},{"lineNumber":72,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":73,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":74,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":75,"author":{"gitId":"Apzure"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":76,"author":{"gitId":"Apzure"},"content":" * A Model stub that always accept the Event being added.","lastModifiedDate":"2024-03-12"},{"lineNumber":77,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":78,"author":{"gitId":"Apzure"},"content":" private class ModelStubAcceptingEventAdded extends ModelStub {","lastModifiedDate":"2024-03-12"},{"lineNumber":79,"author":{"gitId":"Apzure"},"content":" final ArrayList\u003cEvent\u003e eventsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-12"},{"lineNumber":80,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":81,"author":{"gitId":"Apzure"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":82,"author":{"gitId":"Apzure"},"content":" public boolean hasEvent(Event event) {","lastModifiedDate":"2024-03-12"},{"lineNumber":83,"author":{"gitId":"Apzure"},"content":" requireNonNull(event);","lastModifiedDate":"2024-03-12"},{"lineNumber":84,"author":{"gitId":"Apzure"},"content":" return eventsAdded.stream().anyMatch(event::isSameEvent);","lastModifiedDate":"2024-03-12"},{"lineNumber":85,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":86,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":87,"author":{"gitId":"Apzure"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":88,"author":{"gitId":"Apzure"},"content":" public void addEvent(Event event) {","lastModifiedDate":"2024-03-12"},{"lineNumber":89,"author":{"gitId":"Apzure"},"content":" requireNonNull(event);","lastModifiedDate":"2024-03-12"},{"lineNumber":90,"author":{"gitId":"Apzure"},"content":" eventsAdded.add(event);","lastModifiedDate":"2024-03-12"},{"lineNumber":91,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":92,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":93,"author":{"gitId":"Apzure"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":94,"author":{"gitId":"Apzure"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2024-03-12"},{"lineNumber":95,"author":{"gitId":"Apzure"},"content":" return new AddressBook();","lastModifiedDate":"2024-03-12"},{"lineNumber":96,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":97,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":98,"author":{"gitId":"Apzure"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"Apzure":97,"myang2020":1}},{"path":"src/test/java/seedu/address/logic/commands/CommandTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-07-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"Apzure"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EVENT_NAME;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-06-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-07-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-07-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_AMY \u003d \"11111111\";","lastModifiedDate":"2017-07-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_BOB \u003d \"22222222\";","lastModifiedDate":"2017-07-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_AMY \u003d \"Block 312, Amy Street 1\";","lastModifiedDate":"2017-07-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_BOB \u003d \"Block 123, Bobby Street 3\";","lastModifiedDate":"2017-07-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_HUSBAND \u003d \"husband\";","lastModifiedDate":"2017-07-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_FRIEND \u003d \"friend\";","lastModifiedDate":"2017-07-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + PREFIX_TAG + VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + PREFIX_TAG + VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final String INVALID_NAME_DESC \u003d \" \" + PREFIX_NAME + \"James\u0026\"; // \u0027\u0026\u0027 not allowed in names","lastModifiedDate":"2017-07-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String INVALID_PHONE_DESC \u003d \" \" + PREFIX_PHONE + \"911a\"; // \u0027a\u0027 not allowed in phones","lastModifiedDate":"2017-07-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final String INVALID_ADDRESS_DESC \u003d \" \" + PREFIX_ADDRESS; // empty string not allowed for addresses","lastModifiedDate":"2017-07-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final String INVALID_TAG_DESC \u003d \" \" + PREFIX_TAG + \"hubby*\"; // \u0027*\u0027 not allowed in tags","lastModifiedDate":"2017-07-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":64,"author":{"gitId":"Apzure"},"content":" public static final String VALID_EVENT_NAME_BINGO \u003d \"bingo\";","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"Apzure"},"content":" public static final String EVENT_NAME_DESC_BINGO \u003d \" \" + PREFIX_EVENT_NAME + VALID_EVENT_NAME_BINGO;","lastModifiedDate":"2024-03-12"},{"lineNumber":66,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05"},{"lineNumber":68,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05"},{"lineNumber":69,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-07-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05"},{"lineNumber":71,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05"},{"lineNumber":72,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2017-07-05"},{"lineNumber":73,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":76,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":77,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25"},{"lineNumber":82,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":83,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":84,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":87,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09"},{"lineNumber":95,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":96,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25"},{"lineNumber":97,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":98,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09"},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":102,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":104,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":106,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25"},{"lineNumber":107,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25"},{"lineNumber":109,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05"},{"lineNumber":110,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05"},{"lineNumber":111,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":112,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03"},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":116,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":118,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20"},{"lineNumber":119,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show only the person at the given {@code targetIndex} in the","lastModifiedDate":"2018-01-31"},{"lineNumber":120,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31"},{"lineNumber":121,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20"},{"lineNumber":122,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31"},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31"},{"lineNumber":125,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31"},{"lineNumber":126,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20"},{"lineNumber":127,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":132,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"Apzure":4,"-":128}},{"path":"src/test/java/seedu/address/logic/commands/DeleteEventCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"taeewonnn"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"taeewonnn"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"taeewonnn"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"taeewonnn"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"taeewonnn"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"taeewonnn"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"taeewonnn"},"content":"import static seedu.address.testutil.TypicalEvents.getBingoEvent;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"taeewonnn"},"content":"import static seedu.address.testutil.TypicalEvents.getTypicalEventBook;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"taeewonnn"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_EVENT;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"taeewonnn"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_EVENT;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"taeewonnn"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"taeewonnn"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"taeewonnn"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"taeewonnn"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"taeewonnn"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"taeewonnn"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"taeewonnn"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"taeewonnn"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"taeewonnn"},"content":"/**","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"taeewonnn"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"taeewonnn"},"content":" * {@code DeleteEventCommand}.","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"taeewonnn"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"taeewonnn"},"content":"public class DeleteEventCommandTest {","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"taeewonnn"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"taeewonnn"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"taeewonnn"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"taeewonnn"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredEventList().size() + 1);","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"taeewonnn"},"content":" DeleteEventCommand deleteEventCommand \u003d new DeleteEventCommand(outOfBoundIndex);","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"taeewonnn"},"content":" assertCommandFailure(deleteEventCommand, model, Messages.MESSAGE_INVALID_EVENT_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"taeewonnn"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"taeewonnn"},"content":" public void execute_selectModel_throwsCommandException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"taeewonnn"},"content":" SelectCommand selectCommand \u003d new SelectCommand(Index.fromZeroBased(1));","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"taeewonnn"},"content":" assertThrows(CommandException.class, () -\u003e new DeleteEventCommand(Index.fromZeroBased(1)).execute(model));","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"taeewonnn"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"taeewonnn"},"content":" public void execute_deleteEvent_success() throws CommandException {","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"taeewonnn"},"content":" ModelManager model \u003d new ModelManager();","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"taeewonnn"},"content":" model.setEventBook(getTypicalEventBook());","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"taeewonnn"},"content":" DeleteEventCommand deleteEventCommand \u003d new DeleteEventCommand(Index.fromZeroBased(0));","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"taeewonnn"},"content":" CommandResult commandResult \u003d deleteEventCommand.execute(model);","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"taeewonnn"},"content":" assertEquals(String.format(DeleteEventCommand.MESSAGE_DELETE_EVENT_SUCCESS,","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"taeewonnn"},"content":" Messages.format(getBingoEvent())),","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"taeewonnn"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"taeewonnn"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"taeewonnn"},"content":" public void equals() {","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"taeewonnn"},"content":" DeleteEventCommand deleteFirstEventCommand \u003d new DeleteEventCommand(INDEX_FIRST_EVENT);","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"taeewonnn"},"content":" DeleteEventCommand deleteSecondEventCommand \u003d new DeleteEventCommand(INDEX_SECOND_EVENT);","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"taeewonnn"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"taeewonnn"},"content":" assertTrue(deleteFirstEventCommand.equals(deleteFirstEventCommand));","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"taeewonnn"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"taeewonnn"},"content":" DeleteEventCommand deleteFirstEventCommandCopy \u003d new DeleteEventCommand(INDEX_FIRST_EVENT);","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"taeewonnn"},"content":" assertTrue(deleteFirstEventCommand.equals(deleteFirstEventCommandCopy));","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"taeewonnn"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"taeewonnn"},"content":" assertFalse(deleteFirstEventCommand.equals(1));","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"taeewonnn"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"taeewonnn"},"content":" assertFalse(deleteFirstEventCommand.equals(null));","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":75,"author":{"gitId":"taeewonnn"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"taeewonnn"},"content":" assertFalse(deleteFirstEventCommand.equals(deleteSecondEventCommand));","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":79,"author":{"gitId":"taeewonnn"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":80,"author":{"gitId":"taeewonnn"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-19"},{"lineNumber":81,"author":{"gitId":"taeewonnn"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-03-19"},{"lineNumber":82,"author":{"gitId":"taeewonnn"},"content":" DeleteEventCommand deleteEventCommand \u003d new DeleteEventCommand(targetIndex);","lastModifiedDate":"2024-03-19"},{"lineNumber":83,"author":{"gitId":"taeewonnn"},"content":" String expected \u003d DeleteEventCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex + \"}\";","lastModifiedDate":"2024-03-19"},{"lineNumber":84,"author":{"gitId":"taeewonnn"},"content":" assertEquals(expected, deleteEventCommand.toString());","lastModifiedDate":"2024-03-19"},{"lineNumber":85,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":86,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":87,"author":{"gitId":"taeewonnn"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":88,"author":{"gitId":"taeewonnn"},"content":" * Updates {@code model}\u0027s filtered list to show no event.","lastModifiedDate":"2024-03-20"},{"lineNumber":89,"author":{"gitId":"taeewonnn"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":90,"author":{"gitId":"taeewonnn"},"content":" private void showNoEvent(Model model) {","lastModifiedDate":"2024-03-19"},{"lineNumber":91,"author":{"gitId":"taeewonnn"},"content":" model.updateFilteredPersonList(p -\u003e false);","lastModifiedDate":"2024-03-19"},{"lineNumber":92,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":93,"author":{"gitId":"taeewonnn"},"content":" assertTrue(model.getFilteredEventList().isEmpty());","lastModifiedDate":"2024-03-19"},{"lineNumber":94,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":95,"author":{"gitId":"taeewonnn"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"taeewonnn":95}},{"path":"src/test/java/seedu/address/logic/commands/DeletePersonCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ChocoRagdoll"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"ChocoRagdoll"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"ChocoRagdoll"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"ChocoRagdoll"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"ChocoRagdoll"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"ChocoRagdoll"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"ChocoRagdoll"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"ChocoRagdoll"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"ChocoRagdoll"},"content":"import static seedu.address.testutil.TypicalEvents.getTypicalEventBook;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"ChocoRagdoll"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"ChocoRagdoll"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"ChocoRagdoll"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"ChocoRagdoll"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"ChocoRagdoll"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"ChocoRagdoll"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"ChocoRagdoll"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"ChocoRagdoll"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"ChocoRagdoll"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"ChocoRagdoll"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"ChocoRagdoll"},"content":"import seedu.address.model.event.Event;","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"ChocoRagdoll"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"ChocoRagdoll"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"ChocoRagdoll"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"ChocoRagdoll"},"content":" * {@code DeleteCommand}.","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"ChocoRagdoll"},"content":"public class DeletePersonCommandTest {","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"ChocoRagdoll"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"ChocoRagdoll"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"ChocoRagdoll"},"content":" public void constructor_nullIndex_throwsNullPointerException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"ChocoRagdoll"},"content":" assertThrows(NullPointerException.class, () -\u003e new DeletePersonCommand(null));","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"ChocoRagdoll"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"ChocoRagdoll"},"content":" public void execute_nullModel_throwsNullPointerException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"ChocoRagdoll"},"content":" assertThrows(NullPointerException.class, () -\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"ChocoRagdoll"},"content":" new DeletePersonCommand(Index.fromZeroBased(0)).execute(null));","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"ChocoRagdoll"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"ChocoRagdoll"},"content":" public void deleteFromGlobal_validIndexUnfilteredList_success() {","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"ChocoRagdoll"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"ChocoRagdoll"},"content":" DeletePersonCommand deletePersonCommand \u003d new DeletePersonCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"ChocoRagdoll"},"content":" String expectedMessage \u003d String.format(DeletePersonCommand.MESSAGE_DELETE_PERSON_GLOBAL_SUCCESS,","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"ChocoRagdoll"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"ChocoRagdoll"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"ChocoRagdoll"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"ChocoRagdoll"},"content":" assertCommandSuccess(deletePersonCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"ChocoRagdoll"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"ChocoRagdoll"},"content":" public void deleteFromGlobal_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"ChocoRagdoll"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"ChocoRagdoll"},"content":" DeletePersonCommand deletePersonCommand \u003d new DeletePersonCommand(outOfBoundIndex);","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"ChocoRagdoll"},"content":" assertCommandFailure(deletePersonCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"ChocoRagdoll"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"ChocoRagdoll"},"content":" public void deleteFromGlobal_validIndexFilteredList_success() {","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"ChocoRagdoll"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"ChocoRagdoll"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"ChocoRagdoll"},"content":" DeletePersonCommand deletePersonCommand \u003d new DeletePersonCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"ChocoRagdoll"},"content":" String expectedMessage \u003d String.format(DeletePersonCommand.MESSAGE_DELETE_PERSON_GLOBAL_SUCCESS,","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"ChocoRagdoll"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"ChocoRagdoll"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"ChocoRagdoll"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"ChocoRagdoll"},"content":" showNoPerson(expectedModel);","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"ChocoRagdoll"},"content":" assertCommandSuccess(deletePersonCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"ChocoRagdoll"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"ChocoRagdoll"},"content":" public void deleteFromGlobal_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"ChocoRagdoll"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":88,"author":{"gitId":"ChocoRagdoll"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2024-03-20"},{"lineNumber":89,"author":{"gitId":"ChocoRagdoll"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2024-03-20"},{"lineNumber":90,"author":{"gitId":"ChocoRagdoll"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2024-03-20"},{"lineNumber":91,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":92,"author":{"gitId":"ChocoRagdoll"},"content":" DeletePersonCommand deletePersonCommand \u003d new DeletePersonCommand(outOfBoundIndex);","lastModifiedDate":"2024-03-20"},{"lineNumber":93,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":94,"author":{"gitId":"ChocoRagdoll"},"content":" assertCommandFailure(deletePersonCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-20"},{"lineNumber":95,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":96,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":97,"author":{"gitId":"ChocoRagdoll"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":98,"author":{"gitId":"ChocoRagdoll"},"content":" public void deleteFromEvent_validIndex_success() throws Exception {","lastModifiedDate":"2024-03-20"},{"lineNumber":99,"author":{"gitId":"ChocoRagdoll"},"content":" ModelManager model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-20"},{"lineNumber":100,"author":{"gitId":"ChocoRagdoll"},"content":" model.setEventBook(getTypicalEventBook());","lastModifiedDate":"2024-03-20"},{"lineNumber":101,"author":{"gitId":"ChocoRagdoll"},"content":" DeletePersonCommand deletePersonCommand \u003d new DeletePersonCommand(Index.fromZeroBased(0));","lastModifiedDate":"2024-03-20"},{"lineNumber":102,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":103,"author":{"gitId":"ChocoRagdoll"},"content":" Event event \u003d model.getEventBook().getEventList().get(0);","lastModifiedDate":"2024-03-20"},{"lineNumber":104,"author":{"gitId":"ChocoRagdoll"},"content":" Person personToDelete \u003d getTypicalAddressBook().getPersonList().get(0);","lastModifiedDate":"2024-03-20"},{"lineNumber":105,"author":{"gitId":"ChocoRagdoll"},"content":" // Select an event first","lastModifiedDate":"2024-03-20"},{"lineNumber":106,"author":{"gitId":"ChocoRagdoll"},"content":" model.selectEvent(event);","lastModifiedDate":"2024-03-20"},{"lineNumber":107,"author":{"gitId":"ChocoRagdoll"},"content":" // Add person","lastModifiedDate":"2024-03-20"},{"lineNumber":108,"author":{"gitId":"ChocoRagdoll"},"content":" event.addPerson(personToDelete);","lastModifiedDate":"2024-03-20"},{"lineNumber":109,"author":{"gitId":"ChocoRagdoll"},"content":" model.selectEvent(event);","lastModifiedDate":"2024-03-20"},{"lineNumber":110,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":111,"author":{"gitId":"ChocoRagdoll"},"content":" deletePersonCommand.execute(model);","lastModifiedDate":"2024-03-20"},{"lineNumber":112,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":113,"author":{"gitId":"ChocoRagdoll"},"content":" assertFalse(model.isPersonInSelectedEvent(personToDelete));","lastModifiedDate":"2024-03-20"},{"lineNumber":114,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":115,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":116,"author":{"gitId":"ChocoRagdoll"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":117,"author":{"gitId":"ChocoRagdoll"},"content":" public void deleteFromEvent_invalidIndex_throwsCommandException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":118,"author":{"gitId":"ChocoRagdoll"},"content":" ModelManager model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-20"},{"lineNumber":119,"author":{"gitId":"ChocoRagdoll"},"content":" model.setEventBook(getTypicalEventBook());","lastModifiedDate":"2024-03-20"},{"lineNumber":120,"author":{"gitId":"ChocoRagdoll"},"content":" Event event \u003d model.getEventBook().getEventList().get(0);","lastModifiedDate":"2024-03-20"},{"lineNumber":121,"author":{"gitId":"ChocoRagdoll"},"content":" model.selectEvent(event);","lastModifiedDate":"2024-03-20"},{"lineNumber":122,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":123,"author":{"gitId":"ChocoRagdoll"},"content":" assertThrows(CommandException.class, () -\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":124,"author":{"gitId":"ChocoRagdoll"},"content":" new DeletePersonCommand(Index.fromZeroBased(100)).execute(model));","lastModifiedDate":"2024-03-20"},{"lineNumber":125,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":126,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":127,"author":{"gitId":"ChocoRagdoll"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":128,"author":{"gitId":"ChocoRagdoll"},"content":" public void deleteFromEvent_noEventSelected_throwsCommandException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":129,"author":{"gitId":"ChocoRagdoll"},"content":" ModelManager model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-20"},{"lineNumber":130,"author":{"gitId":"ChocoRagdoll"},"content":" model.setEventBook(getTypicalEventBook());","lastModifiedDate":"2024-03-20"},{"lineNumber":131,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":132,"author":{"gitId":"ChocoRagdoll"},"content":" assertThrows(CommandException.class, () -\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":133,"author":{"gitId":"ChocoRagdoll"},"content":" new DeletePersonCommand(Index.fromZeroBased(100)).deleteFromEvent(model));","lastModifiedDate":"2024-03-20"},{"lineNumber":134,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":135,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":136,"author":{"gitId":"ChocoRagdoll"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":137,"author":{"gitId":"ChocoRagdoll"},"content":" public void equals() {","lastModifiedDate":"2024-03-20"},{"lineNumber":138,"author":{"gitId":"ChocoRagdoll"},"content":" DeletePersonCommand deleteFirstPersonCommand \u003d new DeletePersonCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-03-20"},{"lineNumber":139,"author":{"gitId":"ChocoRagdoll"},"content":" DeletePersonCommand deleteSecondPersonCommand \u003d new DeletePersonCommand(INDEX_SECOND_PERSON);","lastModifiedDate":"2024-03-20"},{"lineNumber":140,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":141,"author":{"gitId":"ChocoRagdoll"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-20"},{"lineNumber":142,"author":{"gitId":"ChocoRagdoll"},"content":" assertTrue(deleteFirstPersonCommand.equals(deleteFirstPersonCommand));","lastModifiedDate":"2024-03-20"},{"lineNumber":143,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":144,"author":{"gitId":"ChocoRagdoll"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-20"},{"lineNumber":145,"author":{"gitId":"ChocoRagdoll"},"content":" DeletePersonCommand deleteFirstPersonCommandCopy \u003d new DeletePersonCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-03-20"},{"lineNumber":146,"author":{"gitId":"ChocoRagdoll"},"content":" assertTrue(deleteFirstPersonCommandCopy.equals(deleteFirstPersonCommandCopy));","lastModifiedDate":"2024-03-20"},{"lineNumber":147,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":148,"author":{"gitId":"ChocoRagdoll"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-20"},{"lineNumber":149,"author":{"gitId":"ChocoRagdoll"},"content":" assertFalse(deleteFirstPersonCommand.equals(1));","lastModifiedDate":"2024-03-20"},{"lineNumber":150,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":151,"author":{"gitId":"ChocoRagdoll"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-20"},{"lineNumber":152,"author":{"gitId":"ChocoRagdoll"},"content":" assertFalse(deleteFirstPersonCommand.equals(null));","lastModifiedDate":"2024-03-20"},{"lineNumber":153,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":154,"author":{"gitId":"ChocoRagdoll"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-03-20"},{"lineNumber":155,"author":{"gitId":"ChocoRagdoll"},"content":" assertFalse(deleteFirstPersonCommand.equals(deleteSecondPersonCommand));","lastModifiedDate":"2024-03-20"},{"lineNumber":156,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":157,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":158,"author":{"gitId":"ChocoRagdoll"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":159,"author":{"gitId":"ChocoRagdoll"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-20"},{"lineNumber":160,"author":{"gitId":"ChocoRagdoll"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-03-20"},{"lineNumber":161,"author":{"gitId":"ChocoRagdoll"},"content":" DeletePersonCommand deletePersonCommand \u003d new DeletePersonCommand(targetIndex);","lastModifiedDate":"2024-03-20"},{"lineNumber":162,"author":{"gitId":"ChocoRagdoll"},"content":" String expected \u003d DeletePersonCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex + \"}\";","lastModifiedDate":"2024-03-20"},{"lineNumber":163,"author":{"gitId":"ChocoRagdoll"},"content":" assertEquals(expected, deletePersonCommand.toString());","lastModifiedDate":"2024-03-20"},{"lineNumber":164,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":165,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":166,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":167,"author":{"gitId":"ChocoRagdoll"},"content":" * Updates {@code model}\u0027s filtered list to show no one.","lastModifiedDate":"2024-03-20"},{"lineNumber":168,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":169,"author":{"gitId":"ChocoRagdoll"},"content":" private void showNoPerson(Model model) {","lastModifiedDate":"2024-03-20"},{"lineNumber":170,"author":{"gitId":"ChocoRagdoll"},"content":" model.updateFilteredPersonList(p -\u003e false);","lastModifiedDate":"2024-03-20"},{"lineNumber":171,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":172,"author":{"gitId":"ChocoRagdoll"},"content":" assertTrue(model.getFilteredPersonList().isEmpty());","lastModifiedDate":"2024-03-20"},{"lineNumber":173,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":174,"author":{"gitId":"ChocoRagdoll"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"ChocoRagdoll":174}},{"path":"src/test/java/seedu/address/logic/commands/DeselectCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"myang2020"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"myang2020"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"myang2020"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"myang2020"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"myang2020"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"myang2020"},"content":"import seedu.address.testutil.TypicalEvents;","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"myang2020"},"content":"public class DeselectCommandTest {","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"myang2020"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"myang2020"},"content":" public void execute_deselect_success() throws CommandException {","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"myang2020"},"content":" ModelManager model \u003d new ModelManager();","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"myang2020"},"content":" model.setEventBook(TypicalEvents.getTypicalEventBook());","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"myang2020"},"content":" model.selectEvent(TypicalEvents.getBingoEvent());","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"myang2020"},"content":" DeselectCommand deselectCommand \u003d new DeselectCommand();","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"myang2020"},"content":" CommandResult commandResult \u003d deselectCommand.execute(model);","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"myang2020"},"content":" assertEquals(DeselectCommand.MESSAGE_DESELECT_EVENT_SUCCESS, commandResult.getFeedbackToUser());","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"myang2020"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"myang2020"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"myang2020"},"content":" DeselectCommand deselectCommand \u003d new DeselectCommand();","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"myang2020"},"content":" String expected \u003d DeselectCommand.class.getCanonicalName() + \"{}\";","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"myang2020"},"content":" assertEquals(expected, deselectCommand.toString());","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"myang2020"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"myang2020":29}},{"path":"src/test/java/seedu/address/logic/commands/InviteCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"myang2020"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"myang2020"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"myang2020"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"myang2020"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"myang2020"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"myang2020"},"content":"import static seedu.address.testutil.TypicalEvents.getTypicalEventBook;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"myang2020"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"myang2020"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"myang2020"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"myang2020"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"myang2020"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"myang2020"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"myang2020"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"myang2020"},"content":"import seedu.address.model.event.Event;","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"myang2020"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"myang2020"},"content":"import seedu.address.testutil.TypicalPersons;","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"myang2020"},"content":"public class InviteCommandTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"myang2020"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"myang2020"},"content":" public void constructor_nullIndex_throwsNullPointerException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"myang2020"},"content":" assertThrows(NullPointerException.class, () -\u003e new InviteCommand(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"myang2020"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"myang2020"},"content":" public void execute_nullModel_throwsNullPointerException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"myang2020"},"content":" assertThrows(NullPointerException.class, () -\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"myang2020"},"content":" new InviteCommand(Index.fromZeroBased(0)).execute(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"myang2020"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"myang2020"},"content":" public void eventIndex_outOfRange_throwsCommandException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"myang2020"},"content":" ModelManager model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"myang2020"},"content":" model.setEventBook(getTypicalEventBook());","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"myang2020"},"content":" assertThrows(CommandException.class, () -\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"myang2020"},"content":" new InviteCommand(Index.fromZeroBased(100)).execute(model));","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"myang2020"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"myang2020"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"myang2020"},"content":" ModelManager model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"myang2020"},"content":" model.setEventBook(getTypicalEventBook());","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"myang2020"},"content":" InviteCommand inviteCommand \u003d new InviteCommand(Index.fromZeroBased(0));","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"myang2020"},"content":" // Select an event first","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"myang2020"},"content":" Event event \u003d model.getEventBook().getEventList().get(0);","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"myang2020"},"content":" model.selectEvent(event);","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"myang2020"},"content":" // Add person","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"myang2020"},"content":" event.addPerson(getTypicalAddressBook().getPersonList().get(0));","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"myang2020"},"content":" model.selectEvent(event);","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"myang2020"},"content":" assertThrows(CommandException.class, InviteCommand.MESSAGE_DUPLICATE_PERSON, ()","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"myang2020"},"content":" -\u003e inviteCommand.execute(model));","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"myang2020"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"myang2020"},"content":" public void execute_eventNotSelected_throwsCommandException() throws CommandException {","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"myang2020"},"content":" ModelManager model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"myang2020"},"content":" model.setEventBook(getTypicalEventBook());","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"myang2020"},"content":" InviteCommand inviteCommand \u003d new InviteCommand(Index.fromZeroBased(0));","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"myang2020"},"content":" assertThrows(CommandException.class, Messages.MESSAGE_SELECT_EVENT, () -\u003e inviteCommand.execute(model));","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"myang2020"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"myang2020"},"content":" public void execute_selectEventAndInvitePerson_successful() throws CommandException {","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"myang2020"},"content":" ModelManager model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"myang2020"},"content":" model.setEventBook(getTypicalEventBook());","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"myang2020"},"content":" InviteCommand inviteCommand \u003d new InviteCommand(Index.fromZeroBased(0));","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"myang2020"},"content":" // Select an event first","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"myang2020"},"content":" model.selectEvent(model.getEventBook().getEventList().get(0));","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"myang2020"},"content":" // Invite person","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"myang2020"},"content":" inviteCommand.execute(model);","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"myang2020"},"content":" // Ensure the person is added to the selected event","lastModifiedDate":"2024-03-17"},{"lineNumber":82,"author":{"gitId":"myang2020"},"content":" Person personToInvite \u003d TypicalPersons.getTypicalPersons().get(0);","lastModifiedDate":"2024-03-17"},{"lineNumber":83,"author":{"gitId":"myang2020"},"content":" assertTrue(model.isPersonInSelectedEvent(personToInvite));","lastModifiedDate":"2024-03-17"},{"lineNumber":84,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":85,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":86,"author":{"gitId":"myang2020"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":87,"author":{"gitId":"myang2020"},"content":" public void equals_sameIndex_returnsTrue() {","lastModifiedDate":"2024-03-17"},{"lineNumber":88,"author":{"gitId":"myang2020"},"content":" InviteCommand one \u003d new InviteCommand(Index.fromZeroBased(5));","lastModifiedDate":"2024-03-17"},{"lineNumber":89,"author":{"gitId":"myang2020"},"content":" InviteCommand two \u003d new InviteCommand(Index.fromZeroBased(5));","lastModifiedDate":"2024-03-17"},{"lineNumber":90,"author":{"gitId":"myang2020"},"content":" assertEquals(one, two);","lastModifiedDate":"2024-03-17"},{"lineNumber":91,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":92,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"myang2020"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":94,"author":{"gitId":"myang2020"},"content":" public void equals_handles_null() {","lastModifiedDate":"2024-03-17"},{"lineNumber":95,"author":{"gitId":"myang2020"},"content":" InviteCommand one \u003d new InviteCommand(Index.fromZeroBased(5));","lastModifiedDate":"2024-03-17"},{"lineNumber":96,"author":{"gitId":"myang2020"},"content":" assertNotEquals(null, one);","lastModifiedDate":"2024-03-17"},{"lineNumber":97,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":98,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":99,"author":{"gitId":"myang2020"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":100,"author":{"gitId":"myang2020"},"content":" public void equals_sameObject_returnsTrue() {","lastModifiedDate":"2024-03-17"},{"lineNumber":101,"author":{"gitId":"myang2020"},"content":" InviteCommand one \u003d new InviteCommand(Index.fromZeroBased(5));","lastModifiedDate":"2024-03-17"},{"lineNumber":102,"author":{"gitId":"myang2020"},"content":" assertEquals(one, one);","lastModifiedDate":"2024-03-17"},{"lineNumber":103,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":104,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":105,"author":{"gitId":"myang2020"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":106,"author":{"gitId":"myang2020"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-17"},{"lineNumber":107,"author":{"gitId":"myang2020"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-03-17"},{"lineNumber":108,"author":{"gitId":"myang2020"},"content":" InviteCommand inviteCommand \u003d new InviteCommand(targetIndex);","lastModifiedDate":"2024-03-17"},{"lineNumber":109,"author":{"gitId":"myang2020"},"content":" String expected \u003d InviteCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex + \"}\";","lastModifiedDate":"2024-03-17"},{"lineNumber":110,"author":{"gitId":"myang2020"},"content":" assertEquals(expected, inviteCommand.toString());","lastModifiedDate":"2024-03-17"},{"lineNumber":111,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":112,"author":{"gitId":"myang2020"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"myang2020":112}},{"path":"src/test/java/seedu/address/logic/commands/SelectCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"myang2020"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"myang2020"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"myang2020"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"myang2020"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"myang2020"},"content":"import static seedu.address.testutil.TypicalEvents.getTypicalEventBook;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"myang2020"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"myang2020"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"myang2020"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"myang2020"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"myang2020"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"myang2020"},"content":"public class SelectCommandTest {","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"myang2020"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"myang2020"},"content":" public void constructor_nullIndex_throwsNullPointerException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"myang2020"},"content":" assertThrows(NullPointerException.class, () -\u003e new SelectCommand(null));","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"myang2020"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"myang2020"},"content":" public void execute_nullModel_throwsNullPointerException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"myang2020"},"content":" assertThrows(NullPointerException.class, () -\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"myang2020"},"content":" new SelectCommand(Index.fromZeroBased(0)).execute(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"myang2020"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"myang2020"},"content":" public void eventIndex_outOfRange_throwsCommandException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"myang2020"},"content":" ModelManager model \u003d new ModelManager();","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"myang2020"},"content":" model.setEventBook(getTypicalEventBook());","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"myang2020"},"content":" assertThrows(CommandException.class, () -\u003e new SelectCommand(Index.fromZeroBased(100)).execute(model));","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"myang2020"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"myang2020"},"content":" public void equals_sameIndex_returnsTrue() {","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"myang2020"},"content":" SelectCommand one \u003d new SelectCommand(Index.fromZeroBased(5));","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"myang2020"},"content":" SelectCommand two \u003d new SelectCommand(Index.fromZeroBased(5));","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"myang2020"},"content":" assertEquals(one, two);","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"myang2020"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"myang2020"},"content":" public void equals_handles_null() {","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"myang2020"},"content":" SelectCommand one \u003d new SelectCommand(Index.fromZeroBased(5));","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"myang2020"},"content":" assertNotEquals(null, one);","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"myang2020"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"myang2020"},"content":" public void equals_sameObject_returnsTrue() {","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"myang2020"},"content":" SelectCommand one \u003d new SelectCommand(Index.fromZeroBased(5));","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"myang2020"},"content":" assertEquals(one, one);","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"myang2020"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"myang2020"},"content":" public void execute_selectSuccessful() throws CommandException {","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"myang2020"},"content":" ModelManager model \u003d new ModelManager();","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"myang2020"},"content":" model.setEventBook(getTypicalEventBook());","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"myang2020"},"content":" SelectCommand selectCommand \u003d new SelectCommand(Index.fromZeroBased(0));","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"myang2020"},"content":" CommandResult commandResult \u003d selectCommand.execute(model);","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"myang2020"},"content":" assertEquals(String.format(SelectCommand.MESSAGE_SELECT_EVENT_SUCCESS,","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"myang2020"},"content":" Messages.format(model.getEventBook().getEventList().get(0))),","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"myang2020"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":66,"author":{"gitId":"myang2020"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":67,"author":{"gitId":"myang2020"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-16"},{"lineNumber":68,"author":{"gitId":"myang2020"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"myang2020"},"content":" SelectCommand selectCommand \u003d new SelectCommand(targetIndex);","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"myang2020"},"content":" String expected \u003d SelectCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex + \"}\";","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"myang2020"},"content":" assertEquals(expected, selectCommand.toString());","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"myang2020"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"myang2020":74}},{"path":"src/test/java/seedu/address/logic/parser/AddEventCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Apzure"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"Apzure"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"Apzure"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EVENT_NAME_DESC_BINGO;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"Apzure"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EVENT_NAME_BINGO;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"Apzure"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EVENT_NAME;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"Apzure"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"Apzure"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"myang2020"},"content":"import static seedu.address.testutil.TypicalEvents.getBingoEvent;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"Apzure"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"Apzure"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"Apzure"},"content":"import seedu.address.logic.commands.AddEventCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"Apzure"},"content":"import seedu.address.model.event.Event;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"Apzure"},"content":"import seedu.address.testutil.EventBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"Apzure"},"content":"public class AddEventCommandParserTest {","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"Apzure"},"content":" private AddEventCommandParser parser \u003d new AddEventCommandParser();","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"Apzure"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"myang2020"},"content":" Event expectedEvent \u003d new EventBuilder(getBingoEvent()).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"Apzure"},"content":" assertParseSuccess(parser, EVENT_NAME_DESC_BINGO, new AddEventCommand(expectedEvent));","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"Apzure"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"Apzure"},"content":" String validExpectedEventString \u003d EVENT_NAME_DESC_BINGO;","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"Apzure"},"content":" assertParseFailure(parser, EVENT_NAME_DESC_BINGO + validExpectedEventString,","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"Apzure"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EVENT_NAME));","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"Apzure"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"Apzure"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddEventCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"Apzure"},"content":" assertParseFailure(parser, VALID_EVENT_NAME_BINGO, expectedMessage);","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"Apzure"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"Apzure":41,"myang2020":2}},{"path":"src/test/java/seedu/address/logic/parser/AddressBookParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"taeewonnn"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_EVENT;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-06-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":20,"author":{"gitId":"taeewonnn"},"content":"import seedu.address.logic.commands.DeleteEventCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"ChocoRagdoll"},"content":"import seedu.address.logic.commands.DeletePersonCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-06-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":28,"author":{"gitId":"myang2020"},"content":"import seedu.address.logic.commands.SelectCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-06-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonUtil;","lastModifiedDate":"2017-06-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(PersonUtil.getAddCommand(person));","lastModifiedDate":"2017-06-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertEquals(new AddCommand(person), command);","lastModifiedDate":"2017-06-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" DeleteCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2017-06-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertEquals(new DeleteCommand(INDEX_FIRST_PERSON), command);","lastModifiedDate":"2017-06-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":60,"author":{"gitId":"taeewonnn"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"ChocoRagdoll"},"content":" public void parseCommand_deleteEvent() throws Exception {","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"taeewonnn"},"content":" DeleteEventCommand command \u003d (DeleteEventCommand) parser.parseCommand(","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"taeewonnn"},"content":" DeleteEventCommand.COMMAND_WORD + \" \" + INDEX_FIRST_EVENT.getOneBased());","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"taeewonnn"},"content":" assertEquals(new DeleteEventCommand(INDEX_FIRST_EVENT), command);","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(person).build();","lastModifiedDate":"2017-06-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" + INDEX_FIRST_PERSON.getOneBased() + \" \" + PersonUtil.getEditPersonDescriptorDetails(descriptor));","lastModifiedDate":"2018-03-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertEquals(new EditCommand(INDEX_FIRST_PERSON, descriptor), command);","lastModifiedDate":"2017-06-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2017-06-12"},{"lineNumber":85,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":" FindCommand.COMMAND_WORD + \" \" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2017-06-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertEquals(new FindCommand(new NameContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2017-06-12"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD) instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" 3\") instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":102,"author":{"gitId":"ChocoRagdoll"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":103,"author":{"gitId":"ChocoRagdoll"},"content":" public void parseCommand_deleteParticipant() throws Exception {","lastModifiedDate":"2024-03-20"},{"lineNumber":104,"author":{"gitId":"ChocoRagdoll"},"content":" assertTrue(parser.parseCommand(DeletePersonCommand.COMMAND_WORD + \" 3\")","lastModifiedDate":"2024-03-20"},{"lineNumber":105,"author":{"gitId":"ChocoRagdoll"},"content":" instanceof DeletePersonCommand);","lastModifiedDate":"2024-03-20"},{"lineNumber":106,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":107,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":109,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":114,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":115,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":118,"author":{"gitId":"myang2020"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":119,"author":{"gitId":"myang2020"},"content":" public void parseCommand_select() throws Exception {","lastModifiedDate":"2024-03-16"},{"lineNumber":120,"author":{"gitId":"myang2020"},"content":" SelectCommand selectCommand \u003d (SelectCommand) parser.parseCommand(","lastModifiedDate":"2024-03-16"},{"lineNumber":121,"author":{"gitId":"myang2020"},"content":" SelectCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2024-03-16"},{"lineNumber":122,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":123,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"ChocoRagdoll":8,"-":101,"taeewonnn":8,"myang2020":6}},{"path":"src/test/java/seedu/address/logic/parser/DeleteEventCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"taeewonnn"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"taeewonnn"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"taeewonnn"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"taeewonnn"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"taeewonnn"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_EVENT;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"taeewonnn"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"taeewonnn"},"content":"import seedu.address.logic.commands.DeleteEventCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"taeewonnn"},"content":"public class DeleteEventCommandParserTest {","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"taeewonnn"},"content":" private DeleteEventCommandParser parser \u003d new DeleteEventCommandParser();","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"taeewonnn"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"taeewonnn"},"content":" public void parse_validArgs_returnsDeleteCommand() {","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"taeewonnn"},"content":" assertParseSuccess(parser, \"1\", new DeleteEventCommand(INDEX_FIRST_EVENT));","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"taeewonnn"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"taeewonnn"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"taeewonnn"},"content":" assertParseFailure(parser, \"a\", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"taeewonnn"},"content":" DeleteEventCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"taeewonnn"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"taeewonnn":26}},{"path":"src/test/java/seedu/address/logic/parser/DeletePersonCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ChocoRagdoll"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"ChocoRagdoll"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"ChocoRagdoll"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"ChocoRagdoll"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"ChocoRagdoll"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"ChocoRagdoll"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"ChocoRagdoll"},"content":"import seedu.address.logic.commands.DeletePersonCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"ChocoRagdoll"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"ChocoRagdoll"},"content":" * Tests the DeletePersonCommandParser class.","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"ChocoRagdoll"},"content":"public class DeletePersonCommandParserTest {","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"ChocoRagdoll"},"content":" private DeletePersonCommandParser parser \u003d new DeletePersonCommandParser();","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"ChocoRagdoll"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"ChocoRagdoll"},"content":" public void parse_validArgs_returnsDeletePersonCommand() {","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"ChocoRagdoll"},"content":" assertParseSuccess(parser, \"1\", new DeletePersonCommand(INDEX_FIRST_PERSON));","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"ChocoRagdoll"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"ChocoRagdoll"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"ChocoRagdoll"},"content":" assertParseFailure(parser, \"a\", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"ChocoRagdoll"},"content":" DeletePersonCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"ChocoRagdoll"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"ChocoRagdoll":29}},{"path":"src/test/java/seedu/address/logic/parser/InviteCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"myang2020"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"myang2020"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"myang2020"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"myang2020"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"myang2020"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"myang2020"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"myang2020"},"content":"import seedu.address.logic.commands.InviteCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"myang2020"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"myang2020"},"content":" * Contains unit tests for InviteCommandParser.","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"myang2020"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"myang2020"},"content":"public class InviteCommandParserTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"myang2020"},"content":" private final InviteCommandParser parser \u003d new InviteCommandParser();","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"myang2020"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"myang2020"},"content":" public void parse_validArgs_returnsInviteCommand() {","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"myang2020"},"content":" assertParseSuccess(parser, \"1\", new InviteCommand(INDEX_FIRST_PERSON));","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"myang2020"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"myang2020"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"myang2020"},"content":" assertParseFailure(parser, \"a\", String.format(Messages.MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"myang2020"},"content":" InviteCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"myang2020"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"myang2020":29}},{"path":"src/test/java/seedu/address/logic/parser/SelectCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"myang2020"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"myang2020"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"myang2020"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"myang2020"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"myang2020"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"myang2020"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"myang2020"},"content":"import seedu.address.logic.commands.SelectCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"myang2020"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"myang2020"},"content":"public class SelectCommandParserTest {","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"myang2020"},"content":" private SelectCommandParser selectCommandParser \u003d new SelectCommandParser();","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"myang2020"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"myang2020"},"content":" public void parse_success() {","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"myang2020"},"content":" assertParseSuccess(selectCommandParser, \"1\", new SelectCommand(Index.fromZeroBased(0)));","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"myang2020"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"myang2020"},"content":" public void parse_failure() throws ParseException {","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"myang2020"},"content":" assertParseFailure(selectCommandParser, \"0abd\",","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"myang2020"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, SelectCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"myang2020"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"myang2020":26}},{"path":"src/test/java/seedu/address/model/EventBookTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Apzure"},"content":"package seedu.address.model;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"Apzure"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"Apzure"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"Apzure"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"Apzure"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"myang2020"},"content":"import static seedu.address.testutil.TypicalEvents.getBingoEvent;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"Apzure"},"content":"import static seedu.address.testutil.TypicalEvents.getTypicalEventBook;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"Apzure"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"Apzure"},"content":"import java.util.Collection;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"Apzure"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"Apzure"},"content":"import java.util.List;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"Apzure"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"Apzure"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"Apzure"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"Apzure"},"content":"import seedu.address.model.event.Event;","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"Apzure"},"content":"import seedu.address.model.event.exceptions.DuplicateEventException;","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"Apzure"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-15"},{"lineNumber":22,"author":{"gitId":"Apzure"},"content":"import seedu.address.testutil.EventBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"Apzure"},"content":"public class EventBookTest {","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"Apzure"},"content":" private final EventBook eventBook \u003d new EventBook();","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"Apzure"},"content":" public void constructor() {","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"Apzure"},"content":" assertEquals(Collections.emptyList(), eventBook.getEventList());","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"Apzure"},"content":" public void resetData_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"Apzure"},"content":" assertThrows(NullPointerException.class, () -\u003e eventBook.resetData(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"Apzure"},"content":" public void resetData_withValidReadOnlyEventBook_replacesData() {","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"Apzure"},"content":" EventBook newData \u003d getTypicalEventBook();","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"Apzure"},"content":" eventBook.resetData(newData);","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"Apzure"},"content":" assertEquals(newData, eventBook);","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"Apzure"},"content":" public void resetData_withDuplicateEvents_throwsDuplicateEventException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"Apzure"},"content":" // Two events with the same identity fields","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"myang2020"},"content":" Event editedBingo \u003d new EventBuilder(getBingoEvent())","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"Apzure"},"content":" .build();","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"myang2020"},"content":" List\u003cEvent\u003e newEvents \u003d Arrays.asList(getBingoEvent(), editedBingo);","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"Apzure"},"content":" EventBookStub newData \u003d new EventBookStub(newEvents);","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"Apzure"},"content":" assertThrows(DuplicateEventException.class, () -\u003e eventBook.resetData(newData));","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"Apzure"},"content":" public void hasEvent_nullEvent_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"Apzure"},"content":" assertThrows(NullPointerException.class, () -\u003e eventBook.hasEvent(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"Apzure"},"content":" public void hasEvent_eventNotInEventBook_returnsFalse() {","lastModifiedDate":"2024-03-12"},{"lineNumber":63,"author":{"gitId":"myang2020"},"content":" assertFalse(eventBook.hasEvent(getBingoEvent()));","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":66,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"Apzure"},"content":" public void hasEvent_eventInEventBook_returnsTrue() {","lastModifiedDate":"2024-03-12"},{"lineNumber":68,"author":{"gitId":"myang2020"},"content":" eventBook.addEvent(getBingoEvent());","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"myang2020"},"content":" assertTrue(eventBook.hasEvent(getBingoEvent()));","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":71,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":72,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":73,"author":{"gitId":"Apzure"},"content":" public void hasEvent_eventWithSameIdentityFieldsInEventBook_returnsTrue() {","lastModifiedDate":"2024-03-12"},{"lineNumber":74,"author":{"gitId":"myang2020"},"content":" eventBook.addEvent(getBingoEvent());","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"myang2020"},"content":" Event editedBingo \u003d new EventBuilder(getBingoEvent())","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"Apzure"},"content":" .build();","lastModifiedDate":"2024-03-12"},{"lineNumber":77,"author":{"gitId":"Apzure"},"content":" assertTrue(eventBook.hasEvent(editedBingo));","lastModifiedDate":"2024-03-12"},{"lineNumber":78,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":79,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":80,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":81,"author":{"gitId":"Apzure"},"content":" public void getEventList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":82,"author":{"gitId":"Apzure"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e eventBook.getEventList().remove(0));","lastModifiedDate":"2024-03-12"},{"lineNumber":83,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":84,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":85,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":86,"author":{"gitId":"Apzure"},"content":" public void equals_sameObject_returnsTrue() {","lastModifiedDate":"2024-03-12"},{"lineNumber":87,"author":{"gitId":"Apzure"},"content":" EventBook eventBook \u003d new EventBook();","lastModifiedDate":"2024-03-12"},{"lineNumber":88,"author":{"gitId":"Apzure"},"content":" assertTrue(eventBook.equals(eventBook));","lastModifiedDate":"2024-03-12"},{"lineNumber":89,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":90,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":91,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":92,"author":{"gitId":"Apzure"},"content":" public void equals_differentClass_returnsFalse() {","lastModifiedDate":"2024-03-12"},{"lineNumber":93,"author":{"gitId":"Apzure"},"content":" EventBook eventBook \u003d new EventBook();","lastModifiedDate":"2024-03-12"},{"lineNumber":94,"author":{"gitId":"Apzure"},"content":" Object differentObject \u003d new Object();","lastModifiedDate":"2024-03-12"},{"lineNumber":95,"author":{"gitId":"Apzure"},"content":" assertFalse(eventBook.equals(differentObject));","lastModifiedDate":"2024-03-12"},{"lineNumber":96,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":97,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":98,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":99,"author":{"gitId":"Apzure"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-12"},{"lineNumber":100,"author":{"gitId":"Apzure"},"content":" String expected \u003d EventBook.class.getCanonicalName() + \"{events\u003d\" + eventBook.getEventList() + \"}\";","lastModifiedDate":"2024-03-12"},{"lineNumber":101,"author":{"gitId":"Apzure"},"content":" assertEquals(expected, eventBook.toString());","lastModifiedDate":"2024-03-12"},{"lineNumber":102,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":103,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":104,"author":{"gitId":"Apzure"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":105,"author":{"gitId":"Apzure"},"content":" * A stub ReadOnlyEventBook whose events list can violate interface constraints.","lastModifiedDate":"2024-03-12"},{"lineNumber":106,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":107,"author":{"gitId":"Apzure"},"content":" private static class EventBookStub implements ReadOnlyEventBook {","lastModifiedDate":"2024-03-12"},{"lineNumber":108,"author":{"gitId":"Apzure"},"content":" private final ObservableList\u003cEvent\u003e events \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-03-12"},{"lineNumber":109,"author":{"gitId":"Apzure"},"content":" private final ObservableList\u003cPerson\u003e persons \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-03-15"},{"lineNumber":110,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":111,"author":{"gitId":"Apzure"},"content":" EventBookStub(Collection\u003cEvent\u003e events) {","lastModifiedDate":"2024-03-12"},{"lineNumber":112,"author":{"gitId":"Apzure"},"content":" this.events.setAll(events);","lastModifiedDate":"2024-03-12"},{"lineNumber":113,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":114,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":115,"author":{"gitId":"Apzure"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":116,"author":{"gitId":"Apzure"},"content":" public ObservableList\u003cEvent\u003e getEventList() {","lastModifiedDate":"2024-03-12"},{"lineNumber":117,"author":{"gitId":"Apzure"},"content":" return events;","lastModifiedDate":"2024-03-12"},{"lineNumber":118,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":119,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":120,"author":{"gitId":"Apzure"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":121,"author":{"gitId":"Apzure"},"content":" public ObservableList\u003cPerson\u003e getPersonsOfSelectedEventList() {","lastModifiedDate":"2024-03-15"},{"lineNumber":122,"author":{"gitId":"Apzure"},"content":" return persons;","lastModifiedDate":"2024-03-15"},{"lineNumber":123,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":124,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":125,"author":{"gitId":"Apzure"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"Apzure":117,"myang2020":8}},{"path":"src/test/java/seedu/address/model/ModelManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2017-05-31"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"myang2020"},"content":"import static seedu.address.testutil.TypicalEvents.getBingoEvent;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2017-07-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2017-07-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-31"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":19,"author":{"gitId":"Apzure"},"content":"import seedu.address.model.event.Event;","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"Apzure"},"content":"import seedu.address.model.event.exceptions.EventNotFoundException;","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.testutil.AddressBookBuilder;","lastModifiedDate":"2017-05-31"},{"lineNumber":23,"author":{"gitId":"Apzure"},"content":"import seedu.address.testutil.EventBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class ModelManagerTest {","lastModifiedDate":"2017-05-31"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private ModelManager modelManager \u003d new ModelManager();","lastModifiedDate":"2018-08-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2018-11-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertEquals(new UserPrefs(), modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertEquals(new GuiSettings(), modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertEquals(new AddressBook(), new AddressBook(modelManager.getAddressBook()));","lastModifiedDate":"2018-11-27"},{"lineNumber":34,"author":{"gitId":"Apzure"},"content":" assertEquals(new EventBook(), new EventBook(modelManager.getEventBook()));","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void setUserPrefs_nullUserPrefs_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setUserPrefs(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void setUserPrefs_validUserPrefs_copiesUserPrefs() {","lastModifiedDate":"2018-12-06"},{"lineNumber":44,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"address/book/file/path\"));","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(new GuiSettings(1, 2, 3, 4));","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" modelManager.setUserPrefs(userPrefs);","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertEquals(userPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":50,"author":{"gitId":"-"},"content":" // Modifying userPrefs should not modify modelManager\u0027s userPrefs","lastModifiedDate":"2018-12-06"},{"lineNumber":51,"author":{"gitId":"-"},"content":" UserPrefs oldUserPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":52,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"new/address/book/file/path\"));","lastModifiedDate":"2018-12-06"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertEquals(oldUserPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-12-06"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void setGuiSettings_nullGuiSettings_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setGuiSettings(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void setGuiSettings_validGuiSettings_setsGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(1, 2, 3, 4);","lastModifiedDate":"2018-11-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" modelManager.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertEquals(guiSettings, modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setAddressBookFilePath(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_validPath_setsAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" Path path \u003d Paths.get(\"address/book/file/path\");","lastModifiedDate":"2018-11-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":" modelManager.setAddressBookFilePath(path);","lastModifiedDate":"2018-11-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertEquals(path, modelManager.getAddressBookFilePath());","lastModifiedDate":"2018-11-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void hasPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-06"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasPerson(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void hasPerson_personNotInAddressBook_returnsFalse() {","lastModifiedDate":"2018-08-06"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertFalse(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public void hasPerson_personInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07"},{"lineNumber":92,"author":{"gitId":"-"},"content":" modelManager.addPerson(ALICE);","lastModifiedDate":"2018-08-06"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertTrue(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e modelManager.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":101,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":102,"author":{"gitId":"Apzure"},"content":" public void hasEvent_nullEvent_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":103,"author":{"gitId":"Apzure"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasEvent(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":104,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":105,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":106,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":107,"author":{"gitId":"Apzure"},"content":" public void hasEvent_eventNotInEventBook_returnsFalse() {","lastModifiedDate":"2024-03-12"},{"lineNumber":108,"author":{"gitId":"myang2020"},"content":" assertFalse(modelManager.hasEvent(getBingoEvent()));","lastModifiedDate":"2024-03-17"},{"lineNumber":109,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":110,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":111,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":112,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":113,"author":{"gitId":"Apzure"},"content":" public void hasEvent_eventInEventBook_returnsTrue() {","lastModifiedDate":"2024-03-12"},{"lineNumber":114,"author":{"gitId":"myang2020"},"content":" modelManager.addEvent(getBingoEvent());","lastModifiedDate":"2024-03-17"},{"lineNumber":115,"author":{"gitId":"myang2020"},"content":" assertTrue(modelManager.hasEvent(getBingoEvent()));","lastModifiedDate":"2024-03-17"},{"lineNumber":116,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":117,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":118,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":119,"author":{"gitId":"Apzure"},"content":" public void deleteEvent_nullEvent_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":120,"author":{"gitId":"Apzure"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.deleteEvent(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":121,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":122,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":123,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":124,"author":{"gitId":"Apzure"},"content":" public void deleteEvent_eventNotInEventBook_throwsEventNotFoundException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":125,"author":{"gitId":"myang2020"},"content":" assertThrows(EventNotFoundException.class, () -\u003e modelManager.deleteEvent(getBingoEvent()));","lastModifiedDate":"2024-03-17"},{"lineNumber":126,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":127,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":128,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":129,"author":{"gitId":"Apzure"},"content":" public void deleteEvent_eventInEventBook_removesEvent() {","lastModifiedDate":"2024-03-12"},{"lineNumber":130,"author":{"gitId":"myang2020"},"content":" modelManager.addEvent(getBingoEvent());","lastModifiedDate":"2024-03-17"},{"lineNumber":131,"author":{"gitId":"myang2020"},"content":" modelManager.deleteEvent(getBingoEvent());","lastModifiedDate":"2024-03-17"},{"lineNumber":132,"author":{"gitId":"myang2020"},"content":" assertFalse(modelManager.hasEvent(getBingoEvent()));","lastModifiedDate":"2024-03-17"},{"lineNumber":133,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":134,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":135,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":136,"author":{"gitId":"Apzure"},"content":" public void setEventBook_nullEventBook_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":137,"author":{"gitId":"Apzure"},"content":" ModelManager modelManager \u003d new ModelManager();","lastModifiedDate":"2024-03-12"},{"lineNumber":138,"author":{"gitId":"Apzure"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setEventBook(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":139,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":140,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":141,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":142,"author":{"gitId":"Apzure"},"content":" public void setEventBook_validEventBook_success() {","lastModifiedDate":"2024-03-12"},{"lineNumber":143,"author":{"gitId":"Apzure"},"content":" ModelManager modelManager \u003d new ModelManager();","lastModifiedDate":"2024-03-12"},{"lineNumber":144,"author":{"gitId":"Apzure"},"content":" ReadOnlyEventBook newEventBook \u003d new EventBook();","lastModifiedDate":"2024-03-12"},{"lineNumber":145,"author":{"gitId":"Apzure"},"content":" modelManager.setEventBook(newEventBook);","lastModifiedDate":"2024-03-12"},{"lineNumber":146,"author":{"gitId":"Apzure"},"content":" assertEquals(newEventBook, modelManager.getEventBook());","lastModifiedDate":"2024-03-12"},{"lineNumber":147,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":148,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":149,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":150,"author":{"gitId":"Apzure"},"content":" public void setEvent_nullTargetAndEditedEvent_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":151,"author":{"gitId":"Apzure"},"content":" ModelManager modelManager \u003d new ModelManager();","lastModifiedDate":"2024-03-12"},{"lineNumber":152,"author":{"gitId":"Apzure"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setEvent(null, null));","lastModifiedDate":"2024-03-12"},{"lineNumber":153,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":154,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":155,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":156,"author":{"gitId":"Apzure"},"content":" public void setEvent_nullTargetEvent_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":157,"author":{"gitId":"Apzure"},"content":" ModelManager modelManager \u003d new ModelManager();","lastModifiedDate":"2024-03-12"},{"lineNumber":158,"author":{"gitId":"Apzure"},"content":" Event editedEvent \u003d new EventBuilder().build();","lastModifiedDate":"2024-03-12"},{"lineNumber":159,"author":{"gitId":"Apzure"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setEvent(null, editedEvent));","lastModifiedDate":"2024-03-12"},{"lineNumber":160,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":161,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":162,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":163,"author":{"gitId":"Apzure"},"content":" public void setEvent_nullEditedEvent_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":164,"author":{"gitId":"Apzure"},"content":" ModelManager modelManager \u003d new ModelManager();","lastModifiedDate":"2024-03-12"},{"lineNumber":165,"author":{"gitId":"Apzure"},"content":" Event targetEvent \u003d new EventBuilder().build();","lastModifiedDate":"2024-03-12"},{"lineNumber":166,"author":{"gitId":"Apzure"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setEvent(targetEvent, null));","lastModifiedDate":"2024-03-12"},{"lineNumber":167,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":168,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":169,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":170,"author":{"gitId":"Apzure"},"content":" public void setEvent_validTargetAndEditedEvent_success() {","lastModifiedDate":"2024-03-12"},{"lineNumber":171,"author":{"gitId":"Apzure"},"content":" ModelManager modelManager \u003d new ModelManager();","lastModifiedDate":"2024-03-12"},{"lineNumber":172,"author":{"gitId":"Apzure"},"content":" Event targetEvent \u003d new EventBuilder().build();","lastModifiedDate":"2024-03-12"},{"lineNumber":173,"author":{"gitId":"Apzure"},"content":" Event editedEvent \u003d new EventBuilder().withEventName(\"Edited Event\").build();","lastModifiedDate":"2024-03-12"},{"lineNumber":174,"author":{"gitId":"Apzure"},"content":" modelManager.addEvent(targetEvent);","lastModifiedDate":"2024-03-12"},{"lineNumber":175,"author":{"gitId":"Apzure"},"content":" modelManager.setEvent(targetEvent, editedEvent);","lastModifiedDate":"2024-03-12"},{"lineNumber":176,"author":{"gitId":"Apzure"},"content":" assertTrue(modelManager.getFilteredEventList().contains(editedEvent));","lastModifiedDate":"2024-03-12"},{"lineNumber":177,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":178,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":179,"author":{"gitId":"taeewonnn"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":180,"author":{"gitId":"taeewonnn"},"content":" public void isEqualSelectedEvent_nullEvent_throwsNullPointerException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":181,"author":{"gitId":"taeewonnn"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.isSameSelectedEvent(null));","lastModifiedDate":"2024-03-20"},{"lineNumber":182,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":183,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":184,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":185,"author":{"gitId":"Apzure"},"content":" public void getFilteredEventList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":186,"author":{"gitId":"Apzure"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e modelManager.getFilteredEventList().remove(0));","lastModifiedDate":"2024-03-12"},{"lineNumber":187,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":188,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":189,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-31"},{"lineNumber":190,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":191,"author":{"gitId":"-"},"content":" AddressBook addressBook \u003d new AddressBookBuilder().withPerson(ALICE).withPerson(BENSON).build();","lastModifiedDate":"2017-07-19"},{"lineNumber":192,"author":{"gitId":"-"},"content":" AddressBook differentAddressBook \u003d new AddressBook();","lastModifiedDate":"2017-05-31"},{"lineNumber":193,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":195,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":196,"author":{"gitId":"-"},"content":" modelManager \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2018-08-06"},{"lineNumber":197,"author":{"gitId":"-"},"content":" ModelManager modelManagerCopy \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2017-05-31"},{"lineNumber":198,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManagerCopy));","lastModifiedDate":"2017-05-31"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":200,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":201,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManager));","lastModifiedDate":"2017-05-31"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":203,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":204,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(null));","lastModifiedDate":"2017-05-31"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":206,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":207,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(5));","lastModifiedDate":"2017-05-31"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":209,"author":{"gitId":"-"},"content":" // different addressBook -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":210,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(differentAddressBook, userPrefs)));","lastModifiedDate":"2017-05-31"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":212,"author":{"gitId":"-"},"content":" // different filteredList -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":213,"author":{"gitId":"-"},"content":" String[] keywords \u003d ALICE.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-19"},{"lineNumber":214,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(keywords)));","lastModifiedDate":"2017-06-12"},{"lineNumber":215,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, userPrefs)));","lastModifiedDate":"2017-05-31"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":217,"author":{"gitId":"-"},"content":" // resets modelManager to initial state for upcoming tests","lastModifiedDate":"2017-08-05"},{"lineNumber":218,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":220,"author":{"gitId":"-"},"content":" // different userPrefs -\u003e returns false","lastModifiedDate":"2018-11-27"},{"lineNumber":221,"author":{"gitId":"-"},"content":" UserPrefs differentUserPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":222,"author":{"gitId":"-"},"content":" differentUserPrefs.setAddressBookFilePath(Paths.get(\"differentFilePath\"));","lastModifiedDate":"2018-08-09"},{"lineNumber":223,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, differentUserPrefs)));","lastModifiedDate":"2018-11-27"},{"lineNumber":224,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":225,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-31"}],"authorContributionMap":{"Apzure":79,"-":132,"taeewonnn":6,"myang2020":8}},{"path":"src/test/java/seedu/address/model/event/EventNameTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Apzure"},"content":"package seedu.address.model.event;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"Apzure"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"Apzure"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"Apzure"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"Apzure"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"Apzure"},"content":"public class EventNameTest {","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"Apzure"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"Apzure"},"content":" assertThrows(NullPointerException.class, () -\u003e new EventName(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"Apzure"},"content":" public void equals() {","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"Apzure"},"content":" EventName eventName \u003d new EventName(\"Valid EventName\");","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"Apzure"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"Apzure"},"content":" assertTrue(eventName.equals(new EventName(\"Valid EventName\")));","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"Apzure"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"Apzure"},"content":" assertTrue(eventName.equals(eventName));","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"Apzure"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"Apzure"},"content":" assertFalse(eventName.equals(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"Apzure"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"Apzure"},"content":" assertFalse(eventName.equals(5.0f));","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"Apzure"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"Apzure"},"content":" assertFalse(eventName.equals(new EventName(\"Other Valid EventName\")));","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"Apzure"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"Apzure":36}},{"path":"src/test/java/seedu/address/model/event/EventTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Apzure"},"content":"package seedu.address.model.event;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"Apzure"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"Apzure"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"Apzure"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"Apzure"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"Apzure"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"Apzure"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"Apzure"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"Apzure"},"content":"import seedu.address.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"Apzure"},"content":"import seedu.address.model.person.exceptions.PersonNotFoundException;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"Apzure"},"content":"import seedu.address.testutil.EventBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"Apzure"},"content":"public class EventTest {","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"Apzure"},"content":" public void hasPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"Apzure"},"content":" Event event \u003d new EventBuilder().build();","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"Apzure"},"content":" assertThrows(NullPointerException.class, () -\u003e event.hasPerson(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"Apzure"},"content":" public void hasPerson_personNotInEvent_returnsFalse() {","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"Apzure"},"content":" Event event \u003d new EventBuilder().build();","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"Apzure"},"content":" assertFalse(event.hasPerson(ALICE));","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"Apzure"},"content":" public void hasPerson_personInEvent_returnsTrue() {","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"Apzure"},"content":" Event event \u003d new EventBuilder().withPerson(ALICE).build();","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"Apzure"},"content":" assertTrue(event.hasPerson(ALICE));","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"Apzure"},"content":" public void addPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"Apzure"},"content":" Event event \u003d new EventBuilder().build();","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"Apzure"},"content":" assertThrows(NullPointerException.class, () -\u003e event.addPerson(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"Apzure"},"content":" public void addPerson_personAlreadyInEvent_throwsDuplicatePersonException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"Apzure"},"content":" Event event \u003d new EventBuilder().withPerson(ALICE).build();","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"Apzure"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e event.addPerson(ALICE));","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"Apzure"},"content":" public void setPerson_nullTarget_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"Apzure"},"content":" Event event \u003d new EventBuilder().build();","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"Apzure"},"content":" assertThrows(NullPointerException.class, () -\u003e event.setPerson(null, ALICE));","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"Apzure"},"content":" public void setPerson_nullEditedPerson_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"Apzure"},"content":" Event event \u003d new EventBuilder().build();","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"Apzure"},"content":" assertThrows(NullPointerException.class, () -\u003e event.setPerson(ALICE, null));","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"Apzure"},"content":" public void setPerson_targetNotInEvent_throwsPersonNotFoundException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"Apzure"},"content":" Event event \u003d new EventBuilder().build();","lastModifiedDate":"2024-03-12"},{"lineNumber":63,"author":{"gitId":"Apzure"},"content":" assertThrows(PersonNotFoundException.class, () -\u003e event.setPerson(ALICE, BENSON));","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":66,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"Apzure"},"content":" public void setPerson_editedPersonIsSamePerson_success() {","lastModifiedDate":"2024-03-12"},{"lineNumber":68,"author":{"gitId":"Apzure"},"content":" Event event \u003d new EventBuilder().withPerson(ALICE).build();","lastModifiedDate":"2024-03-12"},{"lineNumber":69,"author":{"gitId":"Apzure"},"content":" event.setPerson(ALICE, ALICE);","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"Apzure"},"content":" assertTrue(event.getPersonList().contains(ALICE));","lastModifiedDate":"2024-03-12"},{"lineNumber":71,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":72,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":73,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":74,"author":{"gitId":"Apzure"},"content":" public void setPerson_editedPersonHasDifferentIdentity_success() {","lastModifiedDate":"2024-03-12"},{"lineNumber":75,"author":{"gitId":"Apzure"},"content":" Event event \u003d new EventBuilder().withPerson(ALICE).build();","lastModifiedDate":"2024-03-12"},{"lineNumber":76,"author":{"gitId":"Apzure"},"content":" event.setPerson(ALICE, BENSON);","lastModifiedDate":"2024-03-12"},{"lineNumber":77,"author":{"gitId":"Apzure"},"content":" assertFalse(event.getPersonList().contains(ALICE));","lastModifiedDate":"2024-03-12"},{"lineNumber":78,"author":{"gitId":"Apzure"},"content":" assertTrue(event.getPersonList().contains(BENSON));","lastModifiedDate":"2024-03-12"},{"lineNumber":79,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":80,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":81,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":82,"author":{"gitId":"Apzure"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-12"},{"lineNumber":83,"author":{"gitId":"Apzure"},"content":" Event event \u003d new EventBuilder().build();","lastModifiedDate":"2024-03-12"},{"lineNumber":84,"author":{"gitId":"Apzure"},"content":" String expected \u003d Event.class.getCanonicalName() + \"{eventName\u003d\" + event.getEventName()","lastModifiedDate":"2024-03-12"},{"lineNumber":85,"author":{"gitId":"Apzure"},"content":" + \", persons\u003d\" + event.getPersonList().toString() + \"}\";","lastModifiedDate":"2024-03-12"},{"lineNumber":86,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":87,"author":{"gitId":"Apzure"},"content":" assertEquals(expected, event.toString());","lastModifiedDate":"2024-03-12"},{"lineNumber":88,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":89,"author":{"gitId":"Apzure"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"Apzure":89}},{"path":"src/test/java/seedu/address/model/event/UniqueEventListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Apzure"},"content":"package seedu.address.model.event;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"Apzure"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"Apzure"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"Apzure"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"Apzure"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"myang2020"},"content":"import static seedu.address.testutil.TypicalEvents.getBingoEvent;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"myang2020"},"content":"import static seedu.address.testutil.TypicalEvents.getHikingEvent;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"Apzure"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"Apzure"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"Apzure"},"content":"import java.util.List;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"Apzure"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"Apzure"},"content":"import seedu.address.model.event.exceptions.DuplicateEventException;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"Apzure"},"content":"import seedu.address.model.event.exceptions.EventNotFoundException;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"Apzure"},"content":"import seedu.address.testutil.EventBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"Apzure"},"content":"public class UniqueEventListTest {","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"Apzure"},"content":" private final UniqueEventList uniqueEventList \u003d new UniqueEventList();","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"Apzure"},"content":" public void contains_nullEvent_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"Apzure"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueEventList.contains(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"Apzure"},"content":" public void contains_eventNotInList_returnsFalse() {","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"myang2020"},"content":" assertFalse(uniqueEventList.contains(getBingoEvent()));","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"Apzure"},"content":" public void contains_eventInList_returnsTrue() {","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"myang2020"},"content":" uniqueEventList.add(getBingoEvent());","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"myang2020"},"content":" assertTrue(uniqueEventList.contains(getBingoEvent()));","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"Apzure"},"content":" public void contains_eventWithSameIdentityFieldsInList_returnsTrue() {","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"myang2020"},"content":" uniqueEventList.add(getBingoEvent());","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"myang2020"},"content":" Event editedBingo \u003d new EventBuilder(getBingoEvent()).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"Apzure"},"content":" assertTrue(uniqueEventList.contains(editedBingo));","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"Apzure"},"content":" public void add_nullEvent_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"Apzure"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueEventList.add(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"Apzure"},"content":" public void add_duplicateEvent_throwsDuplicateEventException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"myang2020"},"content":" uniqueEventList.add(getBingoEvent());","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"myang2020"},"content":" assertThrows(DuplicateEventException.class, () -\u003e uniqueEventList.add(getBingoEvent()));","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"Apzure"},"content":" public void setEvent_nullTargetEvent_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"myang2020"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueEventList.setEvent(null, getBingoEvent()));","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":63,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"Apzure"},"content":" public void setEvent_nullEditedEvent_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"myang2020"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueEventList.setEvent(getBingoEvent(), null));","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":68,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":69,"author":{"gitId":"Apzure"},"content":" public void setEvent_targetEventNotInList_throwsEventNotFoundException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"myang2020"},"content":" assertThrows(EventNotFoundException.class, () -\u003e uniqueEventList.setEvent(getBingoEvent(), getBingoEvent()));","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":72,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":73,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":74,"author":{"gitId":"Apzure"},"content":" public void setEvent_editedEventIsSameEvent_success() {","lastModifiedDate":"2024-03-12"},{"lineNumber":75,"author":{"gitId":"myang2020"},"content":" uniqueEventList.add(getBingoEvent());","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"myang2020"},"content":" uniqueEventList.setEvent(getBingoEvent(), getBingoEvent());","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"Apzure"},"content":" UniqueEventList expectedUniqueEventList \u003d new UniqueEventList();","lastModifiedDate":"2024-03-12"},{"lineNumber":78,"author":{"gitId":"myang2020"},"content":" expectedUniqueEventList.add(getBingoEvent());","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"Apzure"},"content":" assertEquals(expectedUniqueEventList, uniqueEventList);","lastModifiedDate":"2024-03-12"},{"lineNumber":80,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":81,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":82,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":83,"author":{"gitId":"Apzure"},"content":" public void setEvent_editedEventHasSameIdentity_success() {","lastModifiedDate":"2024-03-12"},{"lineNumber":84,"author":{"gitId":"myang2020"},"content":" uniqueEventList.add(getBingoEvent());","lastModifiedDate":"2024-03-17"},{"lineNumber":85,"author":{"gitId":"myang2020"},"content":" Event editedBingo \u003d new EventBuilder(getBingoEvent()).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":86,"author":{"gitId":"myang2020"},"content":" uniqueEventList.setEvent(getBingoEvent(), editedBingo);","lastModifiedDate":"2024-03-17"},{"lineNumber":87,"author":{"gitId":"Apzure"},"content":" UniqueEventList expectedUniqueEventList \u003d new UniqueEventList();","lastModifiedDate":"2024-03-12"},{"lineNumber":88,"author":{"gitId":"Apzure"},"content":" expectedUniqueEventList.add(editedBingo);","lastModifiedDate":"2024-03-12"},{"lineNumber":89,"author":{"gitId":"Apzure"},"content":" assertEquals(expectedUniqueEventList, uniqueEventList);","lastModifiedDate":"2024-03-12"},{"lineNumber":90,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":91,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":92,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":93,"author":{"gitId":"Apzure"},"content":" public void setEvent_editedEventHasDifferentIdentity_success() {","lastModifiedDate":"2024-03-12"},{"lineNumber":94,"author":{"gitId":"myang2020"},"content":" uniqueEventList.add(getBingoEvent());","lastModifiedDate":"2024-03-17"},{"lineNumber":95,"author":{"gitId":"myang2020"},"content":" uniqueEventList.setEvent(getBingoEvent(), getHikingEvent());","lastModifiedDate":"2024-03-17"},{"lineNumber":96,"author":{"gitId":"Apzure"},"content":" UniqueEventList expectedUniqueEventList \u003d new UniqueEventList();","lastModifiedDate":"2024-03-12"},{"lineNumber":97,"author":{"gitId":"myang2020"},"content":" expectedUniqueEventList.add(getHikingEvent());","lastModifiedDate":"2024-03-17"},{"lineNumber":98,"author":{"gitId":"Apzure"},"content":" assertEquals(expectedUniqueEventList, uniqueEventList);","lastModifiedDate":"2024-03-12"},{"lineNumber":99,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":100,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":101,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":102,"author":{"gitId":"Apzure"},"content":" public void setEvent_editedEventHasNonUniqueIdentity_throwsDuplicateEventException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":103,"author":{"gitId":"myang2020"},"content":" uniqueEventList.add(getBingoEvent());","lastModifiedDate":"2024-03-17"},{"lineNumber":104,"author":{"gitId":"myang2020"},"content":" uniqueEventList.add(getHikingEvent());","lastModifiedDate":"2024-03-17"},{"lineNumber":105,"author":{"gitId":"myang2020"},"content":" assertThrows(DuplicateEventException.class, () -\u003e uniqueEventList.setEvent(getBingoEvent(), getHikingEvent()));","lastModifiedDate":"2024-03-17"},{"lineNumber":106,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":107,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":108,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":109,"author":{"gitId":"Apzure"},"content":" public void remove_nullEvent_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":110,"author":{"gitId":"Apzure"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueEventList.remove(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":111,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":112,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":113,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":114,"author":{"gitId":"Apzure"},"content":" public void remove_eventDoesNotExist_throwsEventNotFoundException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":115,"author":{"gitId":"myang2020"},"content":" assertThrows(EventNotFoundException.class, () -\u003e uniqueEventList.remove(getBingoEvent()));","lastModifiedDate":"2024-03-17"},{"lineNumber":116,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":117,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":118,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":119,"author":{"gitId":"Apzure"},"content":" public void remove_existingEvent_removesEvent() {","lastModifiedDate":"2024-03-12"},{"lineNumber":120,"author":{"gitId":"myang2020"},"content":" uniqueEventList.add(getBingoEvent());","lastModifiedDate":"2024-03-17"},{"lineNumber":121,"author":{"gitId":"myang2020"},"content":" uniqueEventList.remove(getBingoEvent());","lastModifiedDate":"2024-03-17"},{"lineNumber":122,"author":{"gitId":"Apzure"},"content":" UniqueEventList expectedUniqueEventList \u003d new UniqueEventList();","lastModifiedDate":"2024-03-12"},{"lineNumber":123,"author":{"gitId":"Apzure"},"content":" assertEquals(expectedUniqueEventList, uniqueEventList);","lastModifiedDate":"2024-03-12"},{"lineNumber":124,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":125,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":126,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":127,"author":{"gitId":"Apzure"},"content":" public void setEvents_nullUniqueEventList_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":128,"author":{"gitId":"Apzure"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueEventList.setEvents((UniqueEventList) null));","lastModifiedDate":"2024-03-12"},{"lineNumber":129,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":130,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":131,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":132,"author":{"gitId":"Apzure"},"content":" public void setEvents_uniqueEventList_replacesOwnListWithProvidedUniqueEventList() {","lastModifiedDate":"2024-03-12"},{"lineNumber":133,"author":{"gitId":"myang2020"},"content":" uniqueEventList.add(getBingoEvent());","lastModifiedDate":"2024-03-17"},{"lineNumber":134,"author":{"gitId":"Apzure"},"content":" UniqueEventList expectedUniqueEventList \u003d new UniqueEventList();","lastModifiedDate":"2024-03-12"},{"lineNumber":135,"author":{"gitId":"myang2020"},"content":" expectedUniqueEventList.add(getHikingEvent());","lastModifiedDate":"2024-03-17"},{"lineNumber":136,"author":{"gitId":"Apzure"},"content":" uniqueEventList.setEvents(expectedUniqueEventList);","lastModifiedDate":"2024-03-12"},{"lineNumber":137,"author":{"gitId":"Apzure"},"content":" assertEquals(expectedUniqueEventList, uniqueEventList);","lastModifiedDate":"2024-03-12"},{"lineNumber":138,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":139,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":140,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":141,"author":{"gitId":"Apzure"},"content":" public void setEvents_nullList_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":142,"author":{"gitId":"Apzure"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueEventList.setEvents((List\u003cEvent\u003e) null));","lastModifiedDate":"2024-03-12"},{"lineNumber":143,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":144,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":145,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":146,"author":{"gitId":"Apzure"},"content":" public void setEvents_list_replacesOwnListWithProvidedList() {","lastModifiedDate":"2024-03-12"},{"lineNumber":147,"author":{"gitId":"myang2020"},"content":" uniqueEventList.add(getBingoEvent());","lastModifiedDate":"2024-03-17"},{"lineNumber":148,"author":{"gitId":"myang2020"},"content":" List\u003cEvent\u003e eventList \u003d Collections.singletonList(getHikingEvent());","lastModifiedDate":"2024-03-17"},{"lineNumber":149,"author":{"gitId":"Apzure"},"content":" uniqueEventList.setEvents(eventList);","lastModifiedDate":"2024-03-12"},{"lineNumber":150,"author":{"gitId":"Apzure"},"content":" UniqueEventList expectedUniqueEventList \u003d new UniqueEventList();","lastModifiedDate":"2024-03-12"},{"lineNumber":151,"author":{"gitId":"myang2020"},"content":" expectedUniqueEventList.add(getHikingEvent());","lastModifiedDate":"2024-03-17"},{"lineNumber":152,"author":{"gitId":"Apzure"},"content":" assertEquals(expectedUniqueEventList, uniqueEventList);","lastModifiedDate":"2024-03-12"},{"lineNumber":153,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":154,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":155,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":156,"author":{"gitId":"Apzure"},"content":" public void setEvents_listWithDuplicateEvents_throwsDuplicateEventException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":157,"author":{"gitId":"myang2020"},"content":" List\u003cEvent\u003e listWithDuplicateEvents \u003d Arrays.asList(getBingoEvent(), getBingoEvent());","lastModifiedDate":"2024-03-17"},{"lineNumber":158,"author":{"gitId":"Apzure"},"content":" assertThrows(DuplicateEventException.class, () -\u003e uniqueEventList.setEvents(listWithDuplicateEvents));","lastModifiedDate":"2024-03-12"},{"lineNumber":159,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":160,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":161,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":162,"author":{"gitId":"Apzure"},"content":" public void asUnmodifiableObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":163,"author":{"gitId":"Apzure"},"content":" assertThrows(UnsupportedOperationException.class, ()","lastModifiedDate":"2024-03-12"},{"lineNumber":164,"author":{"gitId":"Apzure"},"content":" -\u003e uniqueEventList.asUnmodifiableObservableList().remove(0));","lastModifiedDate":"2024-03-12"},{"lineNumber":165,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":166,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":167,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":168,"author":{"gitId":"Apzure"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-12"},{"lineNumber":169,"author":{"gitId":"Apzure"},"content":" assertEquals(uniqueEventList.asUnmodifiableObservableList().toString(), uniqueEventList.toString());","lastModifiedDate":"2024-03-12"},{"lineNumber":170,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":171,"author":{"gitId":"Apzure"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"Apzure":138,"myang2020":33}},{"path":"src/test/java/seedu/address/testutil/EventBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Apzure"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"Apzure"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"Apzure"},"content":"import java.util.List;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"Apzure"},"content":"import seedu.address.model.event.Event;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"Apzure"},"content":"import seedu.address.model.event.EventName;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"Apzure"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"Apzure"},"content":"/**","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"Apzure"},"content":" * A utility class to help with building Event objects.","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"Apzure"},"content":"public class EventBuilder {","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"Apzure"},"content":" public static final String DEFAULT_EVENT_NAME \u003d \"Sample Event\";","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"Apzure"},"content":" private EventName eventName;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"Apzure"},"content":" private List\u003cPerson\u003e personList;","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"Apzure"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"Apzure"},"content":" * Creates an {@code EventBuilder} with the default details.","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"Apzure"},"content":" public EventBuilder() {","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"Apzure"},"content":" eventName \u003d new EventName(DEFAULT_EVENT_NAME);","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"Apzure"},"content":" personList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"Apzure"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"Apzure"},"content":" * Initializes the EventBuilder with the data of {@code eventToCopy}.","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"Apzure"},"content":" public EventBuilder(Event eventToCopy) {","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"Apzure"},"content":" eventName \u003d eventToCopy.getEventName();","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"Apzure"},"content":" personList \u003d eventToCopy.getPersonList();","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"Apzure"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"Apzure"},"content":" * Sets the {@code EventName} of the {@code Event} that we are building.","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"Apzure"},"content":" public EventBuilder withEventName(String eventName) {","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"Apzure"},"content":" this.eventName \u003d new EventName(eventName);","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"Apzure"},"content":" return this;","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"Apzure"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"Apzure"},"content":" * Sets the {@code UniquePersonList} of the {@code Event} that we are building.","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"Apzure"},"content":" public EventBuilder withPersonList(List\u003cPerson\u003e personList) {","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"Apzure"},"content":" this.personList \u003d personList;","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"Apzure"},"content":" return this;","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"Apzure"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"Apzure"},"content":" * Adds a person to the {@code UniquePersonList} of the {@code Event} that we are building.","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"Apzure"},"content":" public EventBuilder withPerson(Person person) {","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"Apzure"},"content":" this.personList.add(person);","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"Apzure"},"content":" return this;","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"Apzure"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"Apzure"},"content":" * Builds the event based on the fields filled in earlier","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"Apzure"},"content":" * @return event with fields","lastModifiedDate":"2024-03-12"},{"lineNumber":63,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"Apzure"},"content":" public Event build() {","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"Apzure"},"content":" Event event \u003d new Event(eventName);","lastModifiedDate":"2024-03-12"},{"lineNumber":66,"author":{"gitId":"Apzure"},"content":" event.setPersons(personList);","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"Apzure"},"content":" return event;","lastModifiedDate":"2024-03-12"},{"lineNumber":68,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":69,"author":{"gitId":"Apzure"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"Apzure":69}},{"path":"src/test/java/seedu/address/testutil/ModelStub.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"myang2020"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"myang2020"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"myang2020"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"myang2020"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"myang2020"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"myang2020"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"myang2020"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"myang2020"},"content":"import seedu.address.model.ReadOnlyEventBook;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"myang2020"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"myang2020"},"content":"import seedu.address.model.event.Event;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"myang2020"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"myang2020"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"myang2020"},"content":" * A stub class for Model.","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"myang2020"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"myang2020"},"content":"public class ModelStub implements Model {","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"myang2020"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"myang2020"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"myang2020"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"myang2020"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"myang2020"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"myang2020"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"myang2020"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"myang2020"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"myang2020"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"myang2020"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"myang2020"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"myang2020"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"myang2020"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"myang2020"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"myang2020"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"myang2020"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"myang2020"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"myang2020"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"myang2020"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"myang2020"},"content":" public void setAddressBook(ReadOnlyAddressBook addressBook) {","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"myang2020"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"myang2020"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"myang2020"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"myang2020"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"myang2020"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"myang2020"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"myang2020"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"myang2020"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"myang2020"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"myang2020"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"myang2020"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"myang2020"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"myang2020"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"myang2020"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"myang2020"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"myang2020"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"myang2020"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"myang2020"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"myang2020"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":82,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":83,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":84,"author":{"gitId":"myang2020"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":85,"author":{"gitId":"myang2020"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2024-03-17"},{"lineNumber":86,"author":{"gitId":"myang2020"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":87,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":88,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":89,"author":{"gitId":"myang2020"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":90,"author":{"gitId":"myang2020"},"content":" public void setEventBook(ReadOnlyEventBook eventBook) {","lastModifiedDate":"2024-03-17"},{"lineNumber":91,"author":{"gitId":"myang2020"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":92,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":94,"author":{"gitId":"myang2020"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":95,"author":{"gitId":"myang2020"},"content":" public ReadOnlyEventBook getEventBook() {","lastModifiedDate":"2024-03-17"},{"lineNumber":96,"author":{"gitId":"myang2020"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":97,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":98,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":99,"author":{"gitId":"myang2020"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":100,"author":{"gitId":"myang2020"},"content":" public boolean hasEvent(Event event) {","lastModifiedDate":"2024-03-17"},{"lineNumber":101,"author":{"gitId":"myang2020"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":102,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":103,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":104,"author":{"gitId":"myang2020"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":105,"author":{"gitId":"myang2020"},"content":" public void deleteEvent(Event target) {","lastModifiedDate":"2024-03-17"},{"lineNumber":106,"author":{"gitId":"myang2020"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":107,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":108,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":109,"author":{"gitId":"myang2020"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":110,"author":{"gitId":"myang2020"},"content":" public void addEvent(Event event) {","lastModifiedDate":"2024-03-17"},{"lineNumber":111,"author":{"gitId":"myang2020"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":112,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":113,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":114,"author":{"gitId":"myang2020"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":115,"author":{"gitId":"myang2020"},"content":" public void setEvent(Event target, Event editedEvent) {","lastModifiedDate":"2024-03-17"},{"lineNumber":116,"author":{"gitId":"myang2020"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":117,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":118,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":119,"author":{"gitId":"myang2020"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":120,"author":{"gitId":"myang2020"},"content":" public boolean isAnEventSelected() {","lastModifiedDate":"2024-03-17"},{"lineNumber":121,"author":{"gitId":"myang2020"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":122,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":123,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":124,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":125,"author":{"gitId":"taeewonnn"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":126,"author":{"gitId":"taeewonnn"},"content":" public boolean isSameSelectedEvent(Event event) {","lastModifiedDate":"2024-03-20"},{"lineNumber":127,"author":{"gitId":"taeewonnn"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-19"},{"lineNumber":128,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":129,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":130,"author":{"gitId":"myang2020"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":131,"author":{"gitId":"myang2020"},"content":" public void selectEvent(Event event) {","lastModifiedDate":"2024-03-17"},{"lineNumber":132,"author":{"gitId":"myang2020"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":133,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":134,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":135,"author":{"gitId":"myang2020"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":136,"author":{"gitId":"myang2020"},"content":" public void deselectEvent() {","lastModifiedDate":"2024-03-17"},{"lineNumber":137,"author":{"gitId":"myang2020"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":138,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":139,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":140,"author":{"gitId":"myang2020"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":141,"author":{"gitId":"myang2020"},"content":" public boolean isPersonInSelectedEvent(Person person) {","lastModifiedDate":"2024-03-17"},{"lineNumber":142,"author":{"gitId":"myang2020"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":143,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":144,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":145,"author":{"gitId":"myang2020"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":146,"author":{"gitId":"myang2020"},"content":" public void addPersonToSelectedEvent(Person person) {","lastModifiedDate":"2024-03-17"},{"lineNumber":147,"author":{"gitId":"myang2020"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":148,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":149,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":150,"author":{"gitId":"ChocoRagdoll"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":151,"author":{"gitId":"ChocoRagdoll"},"content":" public void deletePersonFromSelectedEvent(Person person) {","lastModifiedDate":"2024-03-20"},{"lineNumber":152,"author":{"gitId":"ChocoRagdoll"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-20"},{"lineNumber":153,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":154,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":155,"author":{"gitId":"myang2020"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":156,"author":{"gitId":"myang2020"},"content":" public ObservableList\u003cEvent\u003e getFilteredEventList() {","lastModifiedDate":"2024-03-17"},{"lineNumber":157,"author":{"gitId":"myang2020"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":158,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":159,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":160,"author":{"gitId":"myang2020"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":161,"author":{"gitId":"myang2020"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonListOfSelectedEvent() {","lastModifiedDate":"2024-03-17"},{"lineNumber":162,"author":{"gitId":"myang2020"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":163,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":164,"author":{"gitId":"myang2020"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"ChocoRagdoll":5,"taeewonnn":6,"myang2020":153}},{"path":"src/test/java/seedu/address/testutil/TypicalEvents.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Apzure"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"Apzure"},"content":"import seedu.address.model.EventBook;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"Apzure"},"content":"import seedu.address.model.event.Event;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"Apzure"},"content":"/**","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"Apzure"},"content":" * A utility class containing a list of {@code Event} objects to be used in tests.","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"Apzure"},"content":"public class TypicalEvents {","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"Apzure"},"content":" private TypicalEvents() {","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"Apzure"},"content":" } // prevents instantiation","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"myang2020"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"myang2020"},"content":" * Returns the getBingoEvent() event.","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"myang2020"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"myang2020"},"content":" public static Event getBingoEvent() {","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"myang2020"},"content":" return new EventBuilder().withEventName(\"bingo\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"myang2020"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"myang2020"},"content":" * Returns the getHikingEvent() event.","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"myang2020"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"myang2020"},"content":" public static Event getHikingEvent() {","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"myang2020"},"content":" return new EventBuilder().withEventName(\"hiking\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"myang2020"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"myang2020"},"content":" * Returns the CONCERT event.","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"myang2020"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"myang2020"},"content":" public static Event getConcertEvent() {","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"myang2020"},"content":" return new EventBuilder().withEventName(\"concert\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"myang2020"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"myang2020"},"content":" * Returns the PARTY event.","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"myang2020"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"myang2020"},"content":" public static Event getPartyEvent() {","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"myang2020"},"content":" return new EventBuilder().withEventName(\"party\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"myang2020"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"myang2020"},"content":" * Returns the CONFERENCE event.","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"myang2020"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"myang2020"},"content":" public static Event getConferenceEvent() {","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"myang2020"},"content":" return new EventBuilder().withEventName(\"conference\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"Apzure"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"Apzure"},"content":" * Returns an {@code EventBook} with all the typical events.","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"Apzure"},"content":" public static EventBook getTypicalEventBook() {","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"Apzure"},"content":" EventBook eventBook \u003d new EventBook();","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"Apzure"},"content":" for (Event event : getTypicalEvents()) {","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"Apzure"},"content":" eventBook.addEvent(event);","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"Apzure"},"content":" return eventBook;","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"myang2020"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"myang2020"},"content":" * Returns an {@code EventBook} with all the typical events.","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"myang2020"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"Apzure"},"content":" public static Event[] getTypicalEvents() {","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"myang2020"},"content":" Event bingo \u003d getBingoEvent();","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"myang2020"},"content":" Event hiking \u003d getHikingEvent();","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"myang2020"},"content":" Event concert \u003d getConcertEvent();","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"myang2020"},"content":" Event party \u003d getPartyEvent();","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"myang2020"},"content":" Event conference \u003d getConferenceEvent();","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"myang2020"},"content":" return new Event[]{bingo, hiking, concert, party, conference};","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":71,"author":{"gitId":"Apzure"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"Apzure":27,"myang2020":44}},{"path":"src/test/java/seedu/address/testutil/TypicalIndexes.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-08-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-08-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Index} objects to be used in tests.","lastModifiedDate":"2017-08-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class TypicalIndexes {","lastModifiedDate":"2017-08-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static final Index INDEX_FIRST_PERSON \u003d Index.fromOneBased(1);","lastModifiedDate":"2017-08-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final Index INDEX_SECOND_PERSON \u003d Index.fromOneBased(2);","lastModifiedDate":"2017-08-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final Index INDEX_THIRD_PERSON \u003d Index.fromOneBased(3);","lastModifiedDate":"2017-08-05"},{"lineNumber":12,"author":{"gitId":"taeewonnn"},"content":" public static final Index INDEX_FIRST_EVENT \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"taeewonnn"},"content":" public static final Index INDEX_SECOND_EVENT \u003d Index.fromOneBased(2);","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-08-05"}],"authorContributionMap":{"-":12,"taeewonnn":2}}] +[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"ChocoRagdoll"},"content":"[![CI Status](https://github.com/se-edu/addressbook-level3/workflows/Java%20CI/badge.svg)](https://github.com/AY2324S2-CS2103T-T10-3/tp/actions)","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"[![codecov](https://codecov.io/gh/AY2324S2-CS2103T-T10-3/tp/graph/badge.svg?token\u003dGBPS86G6DT)](https://codecov.io/gh/AY2324S2-CS2103T-T10-3/tp)","lastModifiedDate":"2024-02-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"ChocoRagdoll"},"content":"### Eventy","lastModifiedDate":"2024-03-22"},{"lineNumber":7,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":8,"author":{"gitId":"ChocoRagdoll"},"content":"* This CLI application serves as an event planner tailored for event planners in halls, facilitating efficient management of participants and events. This is a CLI application that is desgined for users who type fast\u003cbr\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":9,"author":{"gitId":"-"},"content":" Example usages:","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * as a starting point of a course project (as opposed to writing everything from scratch)","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * as a case study","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"ChocoRagdoll"},"content":"### What does this do","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"ChocoRagdoll"},"content":"* The project is tailored specifically for student event organizers and offers a new standard of convenient and easy event planning.","lastModifiedDate":"2024-03-22"},{"lineNumber":15,"author":{"gitId":"ChocoRagdoll"},"content":"* The application is targeted towards users who type fast and are used to CLI application.","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":"* The project simulates an ongoing software project for a desktop application (called _AddressBook_) used for managing contact details.","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * It is **written in OOP fashion**. It provides a **reasonably well-written** code base **bigger** (around 6 KLoC) than what students usually write in beginner-level SE modules, without being overwhelmingly big.","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * It comes with a **reasonable level of user and developer documentation**.","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"ChocoRagdoll"},"content":"* It is named `Eventy` (`ET` for short) because we want to insert playfulness and efficiency into event planning. Plus it reminds you of a certain character! doesn\u0027t it :)","lastModifiedDate":"2024-03-22"},{"lineNumber":20,"author":{"gitId":"-"},"content":"* For the detailed documentation of this project, see the **[Address Book Product Website](https://se-education.org/addressbook-level3)**.","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"* This project is a **part of the se-education.org** initiative. If you would like to contribute code to this project, see [se-education.org](https://se-education.org#https://se-education.org/#contributing) for more info.","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"ChocoRagdoll"},"content":"* This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-03-22"}],"authorContributionMap":{"ChocoRagdoll":10,"-":12}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"# About Us","lastModifiedDate":"2023-09-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"myang2020"},"content":"We are the developer team of event management app Eventy, based in the [School of Computing, National University of Singapore](http://www.comp.nus.edu.sg).","lastModifiedDate":"2024-03-06"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"myang2020"},"content":"### Nigel Lee","lastModifiedDate":"2024-02-29"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"myang2020"},"content":"\u003cimg src\u003d\"images/apzure.png\" width\u003d\"200px\" height\u003d\"250px\"\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"myang2020"},"content":"[[github](https://github.com/Apzure)]","lastModifiedDate":"2024-02-29"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"myang2020"},"content":"* Roles: Team Lead and Scheduling and Tracking, in charge of Model","lastModifiedDate":"2024-03-06"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"myang2020"},"content":"### Han Taeweon","lastModifiedDate":"2024-02-29"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"myang2020"},"content":"\u003cimg src\u003d\"images/taeewonnn.png\" width\u003d\"200px\" height\u003d\"250px\"\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"myang2020"},"content":"[[github](https://github.com/taeewonnn)]","lastModifiedDate":"2024-02-29"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"myang2020"},"content":"* Roles: Documentation, Deliverables and Deadlines, Git Expert","lastModifiedDate":"2024-03-06"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"myang2020"},"content":"### Max Yang","lastModifiedDate":"2024-02-29"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"myang2020"},"content":"\u003cimg src\u003d\"images/myang2020.png\" width\u003d\"200px\" height\u003d\"250px\"\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"myang2020"},"content":"[[github](https://github.com/myang2020)]","lastModifiedDate":"2024-03-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"myang2020"},"content":"* Roles: Testing, in charge of Logic","lastModifiedDate":"2024-03-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"myang2020"},"content":"### Liu Yifan","lastModifiedDate":"2024-02-29"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"myang2020"},"content":"\u003cimg src\u003d\"images/nusliuyifan.png\" width\u003d\"200px\" height\u003d\"250px\"\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"myang2020"},"content":"[[github](https://github.com/nusliuyifan)]","lastModifiedDate":"2024-02-29"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"myang2020"},"content":"* Roles: Integration, in charge of Storage","lastModifiedDate":"2024-03-06"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"myang2020"},"content":"### Yichao Song","lastModifiedDate":"2024-03-06"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"myang2020"},"content":"\u003cimg src\u003d\"images/chocoragdoll.png\" width\u003d\"200px\" height\u003d\"250px\"\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"myang2020"},"content":"[[github](https://github.com/ChocoRagdoll)]","lastModifiedDate":"2024-03-06"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"myang2020"},"content":"* Roles: Code Quality, in charge of UI","lastModifiedDate":"2024-03-06"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"}],"authorContributionMap":{"-":25,"myang2020":21}},{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"Developer Guide\"","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"# AB-3 Developer Guide","lastModifiedDate":"2023-09-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":14,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":16,"author":{"gitId":"-"},"content":"_{ list here sources of all reused/adapted ideas, code, documentation, and third-party libraries -- include links to the original source as well }_","lastModifiedDate":"2023-09-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureDiagram.puml\" width\u003d\"280\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":"The ***Architecture Diagram*** given above explains the high-level design of the App.","lastModifiedDate":"2021-07-31"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":"Given below is a quick overview of main components and how they interact with each other.","lastModifiedDate":"2021-07-31"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"**`Main`** (consisting of classes [`Main`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/Main.java) and [`MainApp`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/MainApp.java)) is in charge of the app launch and shut down.","lastModifiedDate":"2023-09-03"},{"lineNumber":39,"author":{"gitId":"-"},"content":"* At app launch, it initializes the other components in the correct sequence, and connects them up with each other.","lastModifiedDate":"2023-09-03"},{"lineNumber":40,"author":{"gitId":"-"},"content":"* At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2023-09-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"* [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"* [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"* [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"The *Sequence Diagram* below shows how the components interact with each other for the scenario where the user issues the command `delete 1`.","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureSequenceDiagram.puml\" width\u003d\"574\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":59,"author":{"gitId":"-"},"content":"* defines its *API* in an `interface` with the same name as the Component.","lastModifiedDate":"2021-07-31"},{"lineNumber":60,"author":{"gitId":"-"},"content":"* implements its functionality using a concrete `{Component Name}Manager` class (which follows the corresponding API `interface` mentioned in the previous point.","lastModifiedDate":"2021-07-31"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":62,"author":{"gitId":"-"},"content":"For example, the `Logic` component defines its API in the `Logic.java` interface and implements its functionality using the `LogicManager.java` class which follows the `Logic` interface. Other components interact with a given component through its interface rather than the concrete class (reason: to prevent outside component\u0027s being coupled to the implementation of a component), as illustrated in the (partial) class diagram below.","lastModifiedDate":"2021-07-31"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":64,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ComponentManagers.puml\" width\u003d\"300\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":66,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"The **API** of this component is specified in [`Ui.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/Ui.java)","lastModifiedDate":"2021-07-31"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UiClassDiagram.puml\" alt\u003d\"Structure of the UI Component\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"The UI consists of a `MainWindow` that is made up of parts e.g.`CommandBox`, `ResultDisplay`, `PersonListPanel`, `StatusBarFooter` etc. All these, including the `MainWindow`, inherit from the abstract `UiPart` class which captures the commonalities between classes that represent parts of the visible GUI.","lastModifiedDate":"2021-07-31"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"The `UI` component uses the JavaFx UI framework. The layout of these UI parts are defined in matching `.fxml` files that are in the `src/main/resources/view` folder. For example, the layout of the [`MainWindow`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/MainWindow.java) is specified in [`MainWindow.fxml`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/resources/view/MainWindow.fxml)","lastModifiedDate":"2021-07-31"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"* executes user commands using the `Logic` component.","lastModifiedDate":"2021-07-31"},{"lineNumber":81,"author":{"gitId":"-"},"content":"* listens for changes to `Model` data so that the UI can be updated with the modified data.","lastModifiedDate":"2021-07-31"},{"lineNumber":82,"author":{"gitId":"-"},"content":"* keeps a reference to the `Logic` component, because the `UI` relies on the `Logic` to execute commands.","lastModifiedDate":"2021-07-31"},{"lineNumber":83,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component, as it displays `Person` object residing in the `Model`.","lastModifiedDate":"2021-07-31"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"**API** : [`Logic.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/logic/Logic.java)","lastModifiedDate":"2021-07-31"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/LogicClassDiagram.puml\" width\u003d\"550\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"The sequence diagram below illustrates the interactions within the `Logic` component, taking `execute(\"delete 1\")` API call as an example.","lastModifiedDate":"2023-09-03"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/DeleteSequenceDiagram.puml\" alt\u003d\"Interactions Inside the Logic Component for the `delete 1` Command\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":97,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"**Note:** The lifeline for `DeleteCommandParser` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline continues till the end of diagram.","lastModifiedDate":"2023-09-12"},{"lineNumber":100,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":104,"author":{"gitId":"-"},"content":"1. When `Logic` is called upon to execute a command, it is passed to an `AddressBookParser` object which in turn creates a parser that matches the command (e.g., `DeleteCommandParser`) and uses it to parse the command.","lastModifiedDate":"2023-09-03"},{"lineNumber":105,"author":{"gitId":"-"},"content":"1. This results in a `Command` object (more precisely, an object of one of its subclasses e.g., `DeleteCommand`) which is executed by the `LogicManager`.","lastModifiedDate":"2023-09-03"},{"lineNumber":106,"author":{"gitId":"-"},"content":"1. The command can communicate with the `Model` when it is executed (e.g. to delete a person).\u003cbr\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":107,"author":{"gitId":"-"},"content":" Note that although this is shown as a single step in the diagram above (for simplicity), in the code it can take several interactions (between the command object and the `Model`) to achieve.","lastModifiedDate":"2024-02-09"},{"lineNumber":108,"author":{"gitId":"-"},"content":"1. The result of the command execution is encapsulated as a `CommandResult` object which is returned back from `Logic`.","lastModifiedDate":"2023-09-03"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":110,"author":{"gitId":"-"},"content":"Here are the other classes in `Logic` (omitted from the class diagram above) that are used for parsing a user command:","lastModifiedDate":"2021-07-31"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":112,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ParserClasses.puml\" width\u003d\"600\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31"},{"lineNumber":115,"author":{"gitId":"-"},"content":"* When called upon to parse a user command, the `AddressBookParser` class creates an `XYZCommandParser` (`XYZ` is a placeholder for the specific command name e.g., `AddCommandParser`) which uses the other classes shown above to parse the user command and create a `XYZCommand` object (e.g., `AddCommand`) which the `AddressBookParser` returns back as a `Command` object.","lastModifiedDate":"2021-07-31"},{"lineNumber":116,"author":{"gitId":"-"},"content":"* All `XYZCommandParser` classes (e.g., `AddCommandParser`, `DeleteCommandParser`, ...) inherit from the `Parser` interface so that they can be treated similarly where possible e.g, during testing.","lastModifiedDate":"2021-07-31"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31"},{"lineNumber":119,"author":{"gitId":"-"},"content":"**API** : [`Model.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/model/Model.java)","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":"* stores the address book data i.e., all `Person` objects (which are contained in a `UniquePersonList` object).","lastModifiedDate":"2021-07-31"},{"lineNumber":127,"author":{"gitId":"-"},"content":"* stores the currently \u0027selected\u0027 `Person` objects (e.g., results of a search query) as a separate _filtered_ list which is exposed to outsiders as an unmodifiable `ObservableList\u003cPerson\u003e` that can be \u0027observed\u0027 e.g. the UI can be bound to this list so that the UI automatically updates when the data in the list change.","lastModifiedDate":"2021-07-31"},{"lineNumber":128,"author":{"gitId":"-"},"content":"* stores a `UserPref` object that represents the user’s preferences. This is exposed to the outside as a `ReadOnlyUserPref` objects.","lastModifiedDate":"2021-07-31"},{"lineNumber":129,"author":{"gitId":"-"},"content":"* does not depend on any of the other three components (as the `Model` represents data entities of the domain, they should make sense on their own without depending on other components)","lastModifiedDate":"2021-07-31"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":131,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":133,"author":{"gitId":"-"},"content":"**Note:** An alternative (arguably, a more OOP) model is given below. It has a `Tag` list in the `AddressBook`, which `Person` references. This allows `AddressBook` to only require one `Tag` object per unique tag, instead of each `Person` needing their own `Tag` objects.\u003cbr\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":135,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/BetterModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":"**API** : [`Storage.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/storage/Storage.java)","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/StorageClassDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":146,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":"* can save both address book data and user preference data in JSON format, and read them back into corresponding objects.","lastModifiedDate":"2023-09-03"},{"lineNumber":148,"author":{"gitId":"-"},"content":"* inherits from both `AddressBookStorage` and `UserPrefStorage`, which means it can be treated as either one (if only the functionality of only one is needed).","lastModifiedDate":"2021-07-31"},{"lineNumber":149,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component (because the `Storage` component\u0027s job is to save/retrieve objects that belong to the `Model`)","lastModifiedDate":"2021-07-21"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.addressbook.commons` package.","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":"The proposed undo/redo mechanism is facilitated by `VersionedAddressBook`. It extends `AddressBook` with an undo/redo history, stored internally as an `addressBookStateList` and `currentStatePointer`. Additionally, it implements the following operations:","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":"These operations are exposed in the `Model` interface as `Model#commitAddressBook()`, `Model#undoAddressBook()` and `Model#redoAddressBook()` respectively.","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":"Given below is an example usage scenario and how the undo/redo mechanism behaves at each step.","lastModifiedDate":"2020-05-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":"Step 1. The user launches the application for the first time. The `VersionedAddressBook` will be initialized with the initial address book state, and the `currentStatePointer` pointing to that single address book state.","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState0.puml\" alt\u003d\"UndoRedoState0\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":"Step 2. The user executes `delete 5` command to delete the 5th person in the address book. The `delete` command calls `Model#commitAddressBook()`, causing the modified state of the address book after the `delete 5` command executes to be saved in the `addressBookStateList`, and the `currentStatePointer` is shifted to the newly inserted address book state.","lastModifiedDate":"2020-05-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState1.puml\" alt\u003d\"UndoRedoState1\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"Step 3. The user executes `add n/David …​` to add a new person. The `add` command also calls `Model#commitAddressBook()`, causing another modified address book state to be saved into the `addressBookStateList`.","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState2.puml\" alt\u003d\"UndoRedoState2\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":"**Note:** If a command fails its execution, it will not call `Model#commitAddressBook()`, so the address book state will not be saved into the `addressBookStateList`.","lastModifiedDate":"2023-09-12"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":191,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":"Step 4. The user now decides that adding the person was a mistake, and decides to undo that action by executing the `undo` command. The `undo` command will call `Model#undoAddressBook()`, which will shift the `currentStatePointer` once to the left, pointing it to the previous address book state, and restores the address book to that state.","lastModifiedDate":"2020-05-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState3.puml\" alt\u003d\"UndoRedoState3\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":198,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"author":{"gitId":"-"},"content":"**Note:** If the `currentStatePointer` is at index 0, pointing to the initial AddressBook state, then there are no previous AddressBook states to restore. The `undo` command uses `Model#canUndoAddressBook()` to check if this is the case. If so, it will return an error to the user rather","lastModifiedDate":"2023-09-12"},{"lineNumber":201,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Logic.puml\" alt\u003d\"UndoSequenceDiagram-Logic\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":209,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":"**Note:** The lifeline for `UndoCommand` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.","lastModifiedDate":"2023-09-12"},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":213,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":217,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Model.puml\" alt\u003d\"UndoSequenceDiagram-Model\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":219,"author":{"gitId":"-"},"content":"The `redo` command does the opposite — it calls `Model#redoAddressBook()`, which shifts the `currentStatePointer` once to the right, pointing to the previously undone state, and restores the address book to that state.","lastModifiedDate":"2020-05-23"},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":221,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":223,"author":{"gitId":"-"},"content":"**Note:** If the `currentStatePointer` is at index `addressBookStateList.size() - 1`, pointing to the latest address book state, then there are no undone AddressBook states to restore. The `redo` command uses `Model#canRedoAddressBook()` to check if this is the case. If so, it will return an error to the user rather than attempting to perform the redo.","lastModifiedDate":"2023-09-12"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"author":{"gitId":"-"},"content":"Step 5. The user then decides to execute the command `list`. Commands that do not modify the address book, such as `list`, will usually not call `Model#commitAddressBook()`, `Model#undoAddressBook()` or `Model#redoAddressBook()`. Thus, the `addressBookStateList` remains unchanged.","lastModifiedDate":"2020-05-23"},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState4.puml\" alt\u003d\"UndoRedoState4\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"author":{"gitId":"-"},"content":"Step 6. The user executes `clear`, which calls `Model#commitAddressBook()`. Since the `currentStatePointer` is not pointing at the end of the `addressBookStateList`, all address book states after the `currentStatePointer` will be purged. Reason: It no longer makes sense to redo the `add n/David …​` command. This is the behavior that most modern desktop applications follow.","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState5.puml\" alt\u003d\"UndoRedoState5\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/CommitActivityDiagram.puml\" width\u003d\"250\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31"},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31"},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":247,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23"},{"lineNumber":248,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23"},{"lineNumber":249,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23"},{"lineNumber":250,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":254,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23"},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":259,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07"},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":264,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":265,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":266,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":267,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":268,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":269,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":271,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":273,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23"},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":275,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23"},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":277,"author":{"gitId":"taeewonnn"},"content":"* Active members of university clubs and societies or school event committees","lastModifiedDate":"2024-03-21"},{"lineNumber":278,"author":{"gitId":"taeewonnn"},"content":"* Tech-savvy and reasonably comfortable with digital tools","lastModifiedDate":"2024-03-21"},{"lineNumber":279,"author":{"gitId":"taeewonnn"},"content":"* Fast typer","lastModifiedDate":"2024-03-21"},{"lineNumber":280,"author":{"gitId":"taeewonnn"},"content":"* Managing multiple events that range from small-scale meetings to large school-wide events","lastModifiedDate":"2024-03-21"},{"lineNumber":281,"author":{"gitId":"taeewonnn"},"content":"* Frequently communicating and coordinating with a variety of contacts including vendors, participants, volunteers, and school administrators","lastModifiedDate":"2024-03-21"},{"lineNumber":282,"author":{"gitId":"taeewonnn"},"content":"* Task driven with a need to balance multiple deadlines and responsibilities simultaneously","lastModifiedDate":"2024-03-21"},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":284,"author":{"gitId":"taeewonnn"},"content":"**Value proposition**:","lastModifiedDate":"2024-03-21"},{"lineNumber":285,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":286,"author":{"gitId":"taeewonnn"},"content":"The evolved AB3 contact management application, tailored specifically for student event organizers, offers a new standard of streamlined and automated contact organization. It serves as your single source of truth for storing,","lastModifiedDate":"2024-03-21"},{"lineNumber":287,"author":{"gitId":"taeewonnn"},"content":"managing, and retrieving all contact-related information.","lastModifiedDate":"2024-03-21"},{"lineNumber":288,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":290,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07"},{"lineNumber":291,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":292,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23"},{"lineNumber":293,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":294,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23"},{"lineNumber":295,"author":{"gitId":"-"},"content":"|----------|--------------------------------------------|------------------------------|------------------------------------------------------------------------|","lastModifiedDate":"2023-09-12"},{"lineNumber":296,"author":{"gitId":"taeewonnn"},"content":"| `* * *` | user | create a new event | plan and manage all the events that in one place |","lastModifiedDate":"2024-03-21"},{"lineNumber":297,"author":{"gitId":"taeewonnn"},"content":"| `* * *` | user | add a new person | manage all my contacts in one place |","lastModifiedDate":"2024-03-21"},{"lineNumber":298,"author":{"gitId":"taeewonnn"},"content":"| `* * *` | user | add participant to an event | manage and plan all the participant for a specific event |","lastModifiedDate":"2024-03-21"},{"lineNumber":299,"author":{"gitId":"taeewonnn"},"content":"| `* * *` | user | delete a person | remove contacts that I no longer need |","lastModifiedDate":"2024-03-21"},{"lineNumber":300,"author":{"gitId":"taeewonnn"},"content":"| `* * *` | user | remove specific participant | remove a specific participant from a specific event |","lastModifiedDate":"2024-03-21"},{"lineNumber":301,"author":{"gitId":"taeewonnn"},"content":"| `* *` | diligent user | edit contact information | update contact information whenever necessary |","lastModifiedDate":"2024-03-21"},{"lineNumber":302,"author":{"gitId":"taeewonnn"},"content":"| `* *` | user | select a specific event | search events by name without having to manually search","lastModifiedDate":"2024-03-21"},{"lineNumber":303,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":304,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":305,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07"},{"lineNumber":306,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":307,"author":{"gitId":"taeewonnn"},"content":"--------------------------------------------------------","lastModifiedDate":"2024-03-21"},{"lineNumber":308,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":309,"author":{"gitId":"taeewonnn"},"content":"### Creating an Event","lastModifiedDate":"2024-03-21"},{"lineNumber":310,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":311,"author":{"gitId":"taeewonnn"},"content":"**Use Case: UC01 - Create an event**","lastModifiedDate":"2024-03-21"},{"lineNumber":312,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":313,"author":{"gitId":"taeewonnn"},"content":"**Actor:** User","lastModifiedDate":"2024-03-21"},{"lineNumber":314,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":315,"author":{"gitId":"taeewonnn"},"content":"**MSS:**","lastModifiedDate":"2024-03-21"},{"lineNumber":316,"author":{"gitId":"taeewonnn"},"content":"1. User provides the details of an event to be created.","lastModifiedDate":"2024-03-21"},{"lineNumber":317,"author":{"gitId":"taeewonnn"},"content":"2. Eventy displays the details of the event added by the User in the Event List.","lastModifiedDate":"2024-03-21"},{"lineNumber":318,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":319,"author":{"gitId":"taeewonnn"},"content":"*Use case ends*","lastModifiedDate":"2024-03-21"},{"lineNumber":320,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":321,"author":{"gitId":"taeewonnn"},"content":"**Extensions:**","lastModifiedDate":"2024-03-21"},{"lineNumber":322,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":323,"author":{"gitId":"taeewonnn"},"content":"1a. Details provided by User are incomplete or invalid.","lastModifiedDate":"2024-03-21"},{"lineNumber":324,"author":{"gitId":"taeewonnn"},"content":"- 1a1. Eventy displays an error message to alert the User. \u003c/br\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":325,"author":{"gitId":"taeewonnn"},"content":" *Use case ends*","lastModifiedDate":"2024-03-21"},{"lineNumber":326,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":327,"author":{"gitId":"taeewonnn"},"content":"1b. Event to be added already exists in Eventy.","lastModifiedDate":"2024-03-21"},{"lineNumber":328,"author":{"gitId":"taeewonnn"},"content":"- 1b1. Eventy displays an error message to alert the User. \u003c/br\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":329,"author":{"gitId":"taeewonnn"},"content":" *Use case ends*","lastModifiedDate":"2024-03-21"},{"lineNumber":330,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":331,"author":{"gitId":"taeewonnn"},"content":"### Deleting an event","lastModifiedDate":"2024-03-21"},{"lineNumber":332,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":333,"author":{"gitId":"taeewonnn"},"content":"**Use case: UC02 - Delete an event**","lastModifiedDate":"2024-03-21"},{"lineNumber":334,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":335,"author":{"gitId":"taeewonnn"},"content":"**Actor:** User","lastModifiedDate":"2024-03-21"},{"lineNumber":336,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":337,"author":{"gitId":"taeewonnn"},"content":"**Preconditions:** User has added at least one event.","lastModifiedDate":"2024-03-21"},{"lineNumber":338,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":339,"author":{"gitId":"taeewonnn"},"content":"**Guarantees:**","lastModifiedDate":"2024-03-21"},{"lineNumber":340,"author":{"gitId":"taeewonnn"},"content":"A successful deletion deletes an event from the event list.","lastModifiedDate":"2024-03-21"},{"lineNumber":341,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":342,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23"},{"lineNumber":343,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":344,"author":{"gitId":"taeewonnn"},"content":"1. Eventy shows a list of events.","lastModifiedDate":"2024-03-21"},{"lineNumber":345,"author":{"gitId":"taeewonnn"},"content":"2. User requests to delete a specific event in the list.","lastModifiedDate":"2024-03-21"},{"lineNumber":346,"author":{"gitId":"taeewonnn"},"content":"3. Eventy deletes the event.","lastModifiedDate":"2024-03-21"},{"lineNumber":347,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":348,"author":{"gitId":"taeewonnn"},"content":"*Use case ends*","lastModifiedDate":"2024-03-21"},{"lineNumber":349,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":350,"author":{"gitId":"taeewonnn"},"content":"**Extensions:**","lastModifiedDate":"2024-03-21"},{"lineNumber":351,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":352,"author":{"gitId":"taeewonnn"},"content":"1a. The list is empty. \u003c/br\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":353,"author":{"gitId":"taeewonnn"},"content":"- 1a1. Eventy displays an error message to alert the User. \u003c/br\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":354,"author":{"gitId":"taeewonnn"},"content":" *Use case ends*","lastModifiedDate":"2024-03-21"},{"lineNumber":355,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":356,"author":{"gitId":"taeewonnn"},"content":"2a. Details provided by User are incomplete or invalid.","lastModifiedDate":"2024-03-21"},{"lineNumber":357,"author":{"gitId":"taeewonnn"},"content":"- 2a1. Eventy displays an error message to alert the User. \u003c/br\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":358,"author":{"gitId":"taeewonnn"},"content":" *Use case resumes at step 2.*","lastModifiedDate":"2024-03-21"},{"lineNumber":359,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":360,"author":{"gitId":"taeewonnn"},"content":"### Adding participants contact to the global list","lastModifiedDate":"2024-03-21"},{"lineNumber":361,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":362,"author":{"gitId":"taeewonnn"},"content":"**Use case: UC03 - Add participants contact**","lastModifiedDate":"2024-03-21"},{"lineNumber":363,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":364,"author":{"gitId":"taeewonnn"},"content":"**Actor:** User","lastModifiedDate":"2024-03-21"},{"lineNumber":365,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":366,"author":{"gitId":"taeewonnn"},"content":"**Guarantees:**","lastModifiedDate":"2024-03-21"},{"lineNumber":367,"author":{"gitId":"taeewonnn"},"content":"A successful addition adds a participant to the global list.","lastModifiedDate":"2024-03-21"},{"lineNumber":368,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":369,"author":{"gitId":"taeewonnn"},"content":"**MSS**","lastModifiedDate":"2024-03-21"},{"lineNumber":370,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":371,"author":{"gitId":"taeewonnn"},"content":"1. User provides the detail of the contact to be added.","lastModifiedDate":"2024-03-21"},{"lineNumber":372,"author":{"gitId":"taeewonnn"},"content":"2. Eventy displays the details of the contact added by the user. \u003c/br\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":373,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":374,"author":{"gitId":"taeewonnn"},"content":"*Use case ends*","lastModifiedDate":"2024-03-21"},{"lineNumber":375,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":376,"author":{"gitId":"taeewonnn"},"content":"**Extensions:**","lastModifiedDate":"2024-03-21"},{"lineNumber":377,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":378,"author":{"gitId":"taeewonnn"},"content":"1a. Details provided by User are incomplete or invalid","lastModifiedDate":"2024-03-21"},{"lineNumber":379,"author":{"gitId":"taeewonnn"},"content":"- 1a1. Eventy displays an error message to alert the User. \u003c/br\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":380,"author":{"gitId":"taeewonnn"},"content":" *Use case ends*","lastModifiedDate":"2024-03-21"},{"lineNumber":381,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":382,"author":{"gitId":"taeewonnn"},"content":"### Deleting participant","lastModifiedDate":"2024-03-21"},{"lineNumber":383,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":384,"author":{"gitId":"taeewonnn"},"content":"**Use Case: UC04 - Delete a participant from the global participant list**","lastModifiedDate":"2024-03-21"},{"lineNumber":385,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":386,"author":{"gitId":"taeewonnn"},"content":"**Actor:** User","lastModifiedDate":"2024-03-21"},{"lineNumber":387,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":388,"author":{"gitId":"taeewonnn"},"content":"**Preconditions:**","lastModifiedDate":"2024-03-21"},{"lineNumber":389,"author":{"gitId":"taeewonnn"},"content":"User has added one or more participant to the global participant list.","lastModifiedDate":"2024-03-21"},{"lineNumber":390,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":391,"author":{"gitId":"taeewonnn"},"content":"**Guarantees:**","lastModifiedDate":"2024-03-21"},{"lineNumber":392,"author":{"gitId":"taeewonnn"},"content":"A successful deletion deletes the participant from both the global list and all the events he participates in.","lastModifiedDate":"2024-03-21"},{"lineNumber":393,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":394,"author":{"gitId":"taeewonnn"},"content":"**MSS:**","lastModifiedDate":"2024-03-21"},{"lineNumber":395,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":396,"author":{"gitId":"taeewonnn"},"content":"1. User deletes a participant.","lastModifiedDate":"2024-03-21"},{"lineNumber":397,"author":{"gitId":"taeewonnn"},"content":"2. Eventy displays the updated global participant list. \u003c/br\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":398,"author":{"gitId":"taeewonnn"},"content":" *Use case ends*","lastModifiedDate":"2024-03-21"},{"lineNumber":399,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":400,"author":{"gitId":"taeewonnn"},"content":"**Extensions:**","lastModifiedDate":"2024-03-21"},{"lineNumber":401,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":402,"author":{"gitId":"taeewonnn"},"content":"1a. Participant index provided by the User is invalid.","lastModifiedDate":"2024-03-21"},{"lineNumber":403,"author":{"gitId":"taeewonnn"},"content":"- 1a1. Eventy displays an error message to alert the User. \u003c/br\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":404,"author":{"gitId":"taeewonnn"},"content":" *Use case resumes at step 2.*","lastModifiedDate":"2024-03-21"},{"lineNumber":405,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":406,"author":{"gitId":"taeewonnn"},"content":"### Removing participants from a specific event","lastModifiedDate":"2024-03-21"},{"lineNumber":407,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":408,"author":{"gitId":"taeewonnn"},"content":"**Use case: UC05 - Remove a participant from the specified event**","lastModifiedDate":"2024-03-21"},{"lineNumber":409,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":410,"author":{"gitId":"taeewonnn"},"content":"**Actor:** User","lastModifiedDate":"2024-03-21"},{"lineNumber":411,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":412,"author":{"gitId":"taeewonnn"},"content":"**Preconditions:** User has added one or more participant to the specified event.","lastModifiedDate":"2024-03-21"},{"lineNumber":413,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":414,"author":{"gitId":"taeewonnn"},"content":"**MSS:**","lastModifiedDate":"2024-03-21"},{"lineNumber":415,"author":{"gitId":"taeewonnn"},"content":"1. User requests to remove a participant from a certain event.","lastModifiedDate":"2024-03-21"},{"lineNumber":416,"author":{"gitId":"taeewonnn"},"content":"2. Eventy remove the participant from the event. \u003c/br\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":417,"author":{"gitId":"taeewonnn"},"content":" *Use case ends*","lastModifiedDate":"2024-03-21"},{"lineNumber":418,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":419,"author":{"gitId":"taeewonnn"},"content":"**Extensions:**","lastModifiedDate":"2024-03-21"},{"lineNumber":420,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":421,"author":{"gitId":"taeewonnn"},"content":"1a. The event index provided by the User is invalid.","lastModifiedDate":"2024-03-21"},{"lineNumber":422,"author":{"gitId":"taeewonnn"},"content":"- 1a1. Eventy displays an error message to alert the User. \u003c/br\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":423,"author":{"gitId":"taeewonnn"},"content":" *Use case ends*","lastModifiedDate":"2024-03-21"},{"lineNumber":424,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":425,"author":{"gitId":"taeewonnn"},"content":"1b. Participant index provided by the User is invalid.","lastModifiedDate":"2024-03-21"},{"lineNumber":426,"author":{"gitId":"taeewonnn"},"content":"- 1a1. Eventy displays an error message to alert the User. \u003c/br\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":427,"author":{"gitId":"taeewonnn"},"content":" *Use case ends*","lastModifiedDate":"2024-03-21"},{"lineNumber":428,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":429,"author":{"gitId":"taeewonnn"},"content":"### Selecting an event","lastModifiedDate":"2024-03-21"},{"lineNumber":430,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":431,"author":{"gitId":"taeewonnn"},"content":"**Use Case: UC06 - Select an event from the event list**","lastModifiedDate":"2024-03-21"},{"lineNumber":432,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":433,"author":{"gitId":"taeewonnn"},"content":"**Actor:** User","lastModifiedDate":"2024-03-21"},{"lineNumber":434,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":435,"author":{"gitId":"taeewonnn"},"content":"**Preconditions:** User has added one or more events to the event list.","lastModifiedDate":"2024-03-21"},{"lineNumber":436,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":437,"author":{"gitId":"taeewonnn"},"content":"**Guarantees:**","lastModifiedDate":"2024-03-21"},{"lineNumber":438,"author":{"gitId":"taeewonnn"},"content":"A successful selection displays the event details.","lastModifiedDate":"2024-03-21"},{"lineNumber":439,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":440,"author":{"gitId":"taeewonnn"},"content":"**MSS:**","lastModifiedDate":"2024-03-21"},{"lineNumber":441,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":442,"author":{"gitId":"taeewonnn"},"content":"1. User selects an event.","lastModifiedDate":"2024-03-21"},{"lineNumber":443,"author":{"gitId":"taeewonnn"},"content":"2. Eventy displays the details of the selected event. \u003c/br\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":444,"author":{"gitId":"taeewonnn"},"content":" *Use case ends*","lastModifiedDate":"2024-03-21"},{"lineNumber":445,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":446,"author":{"gitId":"taeewonnn"},"content":"**Extensions:**","lastModifiedDate":"2024-03-21"},{"lineNumber":447,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":448,"author":{"gitId":"taeewonnn"},"content":"1a. Event index provided by User is invalid.","lastModifiedDate":"2024-03-21"},{"lineNumber":449,"author":{"gitId":"taeewonnn"},"content":"- 1a1. Eventy displays an error message to alert the User. \u003c/br\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":450,"author":{"gitId":"taeewonnn"},"content":" *Use case ends*","lastModifiedDate":"2024-03-21"},{"lineNumber":451,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":452,"author":{"gitId":"taeewonnn"},"content":"### Add a participant to an event","lastModifiedDate":"2024-03-21"},{"lineNumber":453,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":454,"author":{"gitId":"taeewonnn"},"content":"**Use Case: UC07 - Add a participant to an event**","lastModifiedDate":"2024-03-21"},{"lineNumber":455,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":456,"author":{"gitId":"taeewonnn"},"content":"**Actor:** User","lastModifiedDate":"2024-03-21"},{"lineNumber":457,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":458,"author":{"gitId":"taeewonnn"},"content":"**Preconditions:**","lastModifiedDate":"2024-03-21"},{"lineNumber":459,"author":{"gitId":"taeewonnn"},"content":"User has added one or more contacts to the global contact list.","lastModifiedDate":"2024-03-21"},{"lineNumber":460,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":461,"author":{"gitId":"taeewonnn"},"content":"**Guarantees:**","lastModifiedDate":"2024-03-21"},{"lineNumber":462,"author":{"gitId":"taeewonnn"},"content":"A successful addition adds a participant from the global list to the selected event.","lastModifiedDate":"2024-03-21"},{"lineNumber":463,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":464,"author":{"gitId":"taeewonnn"},"content":"**MSS:**","lastModifiedDate":"2024-03-21"},{"lineNumber":465,"author":{"gitId":"taeewonnn"},"content":"1. User inputs the index of participant to be added.","lastModifiedDate":"2024-03-21"},{"lineNumber":466,"author":{"gitId":"taeewonnn"},"content":"2. Eventy displays the added participant in the panel showing list of participants in selected event. \u003c/br\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":467,"author":{"gitId":"taeewonnn"},"content":" *Use case ends*","lastModifiedDate":"2024-03-21"},{"lineNumber":468,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":469,"author":{"gitId":"taeewonnn"},"content":"**Extensions:**","lastModifiedDate":"2024-03-21"},{"lineNumber":470,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":471,"author":{"gitId":"taeewonnn"},"content":"1a. Index provided by user is invalid/out of range of global contact list.","lastModifiedDate":"2024-03-21"},{"lineNumber":472,"author":{"gitId":"taeewonnn"},"content":"- 1a1. Eventy displays an error message to alert the User. \u003c/br\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":473,"author":{"gitId":"taeewonnn"},"content":" *Use case ends*","lastModifiedDate":"2024-03-21"},{"lineNumber":474,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":475,"author":{"gitId":"taeewonnn"},"content":"1b. Contact to be added already exists in selected event.","lastModifiedDate":"2024-03-21"},{"lineNumber":476,"author":{"gitId":"taeewonnn"},"content":"- 1b1. Eventy displays an error message to alert the User. \u003c/br\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":477,"author":{"gitId":"taeewonnn"},"content":" *Use case ends*","lastModifiedDate":"2024-03-21"},{"lineNumber":478,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":479,"author":{"gitId":"taeewonnn"},"content":"1b. User does not provide an index.","lastModifiedDate":"2024-03-21"},{"lineNumber":480,"author":{"gitId":"taeewonnn"},"content":"- 1b1. Eventy displays an error message to alert the User. \u003c/br\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":481,"author":{"gitId":"taeewonnn"},"content":" *Use case ends*","lastModifiedDate":"2024-03-21"},{"lineNumber":482,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":483,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":484,"author":{"gitId":"taeewonnn"},"content":"### Non-Functional Requirements","lastModifiedDate":"2024-03-21"},{"lineNumber":485,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":486,"author":{"gitId":"taeewonnn"},"content":"1. The user should be able to use the application smoothly with a device running mainstream OS with Java 11 or above installed.","lastModifiedDate":"2024-03-21"},{"lineNumber":487,"author":{"gitId":"taeewonnn"},"content":"2. The application should be able to store up to 1000 participants and 50 events without a reduction in speed.","lastModifiedDate":"2024-03-21"},{"lineNumber":488,"author":{"gitId":"taeewonnn"},"content":"3. A user familiar with CLI applications with a reasonable typing speed should be able to navigate commands faster than using the mouse.","lastModifiedDate":"2024-03-21"},{"lineNumber":489,"author":{"gitId":"taeewonnn"},"content":"4. The user interface should be simple, clear, easily understandable and fast to navigate.","lastModifiedDate":"2024-03-21"},{"lineNumber":490,"author":{"gitId":"taeewonnn"},"content":"5. The application should gracefully handle errors by displaying error messages to prevent system crashes and data corruption.","lastModifiedDate":"2024-03-21"},{"lineNumber":491,"author":{"gitId":"taeewonnn"},"content":"6. The application should be released as a free application to the general public.","lastModifiedDate":"2024-03-21"},{"lineNumber":492,"author":{"gitId":"taeewonnn"},"content":"7. The average command response time of Eventy should be less than a second.","lastModifiedDate":"2024-03-21"},{"lineNumber":493,"author":{"gitId":"taeewonnn"},"content":"8. The application should consume no more than 200Mb of memory when holding less than 1000 participants and 50 events.","lastModifiedDate":"2024-03-21"},{"lineNumber":494,"author":{"gitId":"taeewonnn"},"content":"9. The application should launch in less than 5 seconds.","lastModifiedDate":"2024-03-21"},{"lineNumber":495,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":496,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23"},{"lineNumber":497,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":498,"author":{"gitId":"taeewonnn"},"content":"* **Mainstream OS:** Windows, Linux, Unix, OS-X","lastModifiedDate":"2024-03-21"},{"lineNumber":499,"author":{"gitId":"taeewonnn"},"content":"* **Eventy:** Name of the application.","lastModifiedDate":"2024-03-21"},{"lineNumber":500,"author":{"gitId":"taeewonnn"},"content":"* **Global participant list:** List of participants that are saved in the application.","lastModifiedDate":"2024-03-21"},{"lineNumber":501,"author":{"gitId":"taeewonnn"},"content":"* **Event list:** List of events created in the application to be managed.","lastModifiedDate":"2024-03-21"},{"lineNumber":502,"author":{"gitId":"taeewonnn"},"content":"* **Event participant list:** List of participants in the specific event.","lastModifiedDate":"2024-03-21"},{"lineNumber":503,"author":{"gitId":"taeewonnn"},"content":"* **Participant:** The contact whose information is stored in the application storage.","lastModifiedDate":"2024-03-21"},{"lineNumber":504,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":505,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":506,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":507,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23"},{"lineNumber":508,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":509,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":510,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":511,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":512,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":513,"author":{"gitId":"-"},"content":"**Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2023-09-12"},{"lineNumber":514,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":515,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":516,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":517,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":518,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":519,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":520,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":521,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":522,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23"},{"lineNumber":523,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":524,"author":{"gitId":"-"},"content":" 1. Double-click the jar file Expected: Shows the GUI with a set of sample contacts. The window size may not be optimum.","lastModifiedDate":"2020-05-23"},{"lineNumber":525,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":526,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23"},{"lineNumber":527,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":528,"author":{"gitId":"-"},"content":" 1. Resize the window to an optimum size. Move the window to a different location. Close the window.","lastModifiedDate":"2020-05-23"},{"lineNumber":529,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":530,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":531,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23"},{"lineNumber":532,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":533,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":534,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":535,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23"},{"lineNumber":536,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":537,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23"},{"lineNumber":538,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":539,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23"},{"lineNumber":540,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":541,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":542,"author":{"gitId":"-"},"content":" Expected: First contact is deleted from the list. Details of the deleted contact shown in the status message. Timestamp in the status bar is updated.","lastModifiedDate":"2020-05-23"},{"lineNumber":543,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":544,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":545,"author":{"gitId":"-"},"content":" Expected: No person is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2020-05-23"},{"lineNumber":546,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":547,"author":{"gitId":"-"},"content":" 1. Other incorrect delete commands to try: `delete`, `delete x`, `...` (where x is larger than the list size)\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":548,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":549,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":550,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":551,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":552,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":553,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":554,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":555,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":556,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23"},{"lineNumber":557,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":558,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"-":362,"taeewonnn":196}},{"path":"docs/UserGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: default.md","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: \"User Guide\"","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"pageNav: 3","lastModifiedDate":"2023-09-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"taeewonnn"},"content":"# Eventy User Guide","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"taeewonnn"},"content":"Eventy is a contact management application, tailored specifically for student event organizers, offers a new standard of streamlined and automated contact organization. It serves as your single source of truth for storing, managing, and retrieving all contact-related information.","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"## Quick start","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"1. Ensure you have Java `11` or above installed in your Computer.","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"taeewonnn"},"content":"1. Download the latest `eventy.jar` from [here](https://github.com/se-edu/addressbook-level3/releases).","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"taeewonnn"},"content":"1. Copy the file to the folder you want to use as the _home folder_ for your Eventy.","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"taeewonnn"},"content":"1. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar eventy.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" A GUI similar to the below should appear in a few seconds. Note how the app contains some sample data.\u003cbr\u003e","lastModifiedDate":"2023-01-01"},{"lineNumber":26,"author":{"gitId":"-"},"content":" ![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":"1. Refer to the [Features](#features) below for details of each command.","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"Apzure"},"content":"### Creating an event: `addev`","lastModifiedDate":"2024-03-10"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"ChocoRagdoll"},"content":"**Format:** `addev ev/\u003cevent name\u003e`","lastModifiedDate":"2024-03-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"Apzure"},"content":"**Description:**","lastModifiedDate":"2024-03-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"Apzure"},"content":"Adds a new event with the specified name for the Event List.","lastModifiedDate":"2024-03-10"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":42,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"warning\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":"**Caution:**","lastModifiedDate":"2023-09-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"Apzure"},"content":"* `\u003cevent name\u003e` should be **alphanumeric**, **non-empty** and **not longer than 64 characters**.","lastModifiedDate":"2024-03-05"},{"lineNumber":47,"author":{"gitId":"Apzure"},"content":"* Adding an event with a name that already exists, regardless of case, is **not allowed.**","lastModifiedDate":"2024-03-10"},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":50,"author":{"gitId":"Apzure"},"content":"**Examples:**","lastModifiedDate":"2024-03-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"ChocoRagdoll"},"content":"- `addev ev/Orientation camp` adds a new event with the name `Orientation camp`.","lastModifiedDate":"2024-03-22"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":54,"author":{"gitId":"taeewonnn"},"content":"### Deleting an event: `delev`","lastModifiedDate":"2024-03-10"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"taeewonnn"},"content":"**Format:** `delev \u003cindex\u003e`","lastModifiedDate":"2024-03-11"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"taeewonnn"},"content":"**Description:**","lastModifiedDate":"2024-03-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"author":{"gitId":"taeewonnn"},"content":"Deletes an event and all its relevant information with its index in the event list.","lastModifiedDate":"2024-03-10"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"author":{"gitId":"taeewonnn"},"content":"\u003cbox type\u003d\"warning\" seamless\u003e","lastModifiedDate":"2024-03-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":64,"author":{"gitId":"taeewonnn"},"content":"**Caution:**","lastModifiedDate":"2024-03-05"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":66,"author":{"gitId":"taeewonnn"},"content":"* `\u003cindex\u003e` should be **numeric** and **non-empty**.","lastModifiedDate":"2024-03-11"},{"lineNumber":67,"author":{"gitId":"taeewonnn"},"content":" \u003c/box\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"taeewonnn"},"content":"**Examples:**","lastModifiedDate":"2024-03-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"taeewonnn"},"content":"- `delev 1` deletes the 1st event in the displayed list.","lastModifiedDate":"2024-03-11"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"taeewonnn"},"content":"### Adding participant and their information to the global participant list: `addp`","lastModifiedDate":"2024-03-11"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"ChocoRagdoll"},"content":"**Format:** `addp n/\u003cparticipant name\u003e p/\u003cphone number\u003e e/\u003cemail\u003e`","lastModifiedDate":"2024-03-22"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"taeewonnn"},"content":"**Description:**","lastModifiedDate":"2024-03-05"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":79,"author":{"gitId":"taeewonnn"},"content":"Adds a new participant to the app, allowing them to be added to an event later.","lastModifiedDate":"2024-03-05"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":81,"author":{"gitId":"-"},"content":"**Caution:**","lastModifiedDate":"2023-09-12"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":83,"author":{"gitId":"taeewonnn"},"content":"* `\u003cparticipant name\u003e` should be **alphabetic**, **non-empty** and **not longer than 64 characters**.","lastModifiedDate":"2024-03-11"},{"lineNumber":84,"author":{"gitId":"taeewonnn"},"content":"* `\u003cphone number\u003e` should be **numeric**, **non-empty** and **not longer than 15 digits**.","lastModifiedDate":"2024-03-11"},{"lineNumber":85,"author":{"gitId":"taeewonnn"},"content":"* `\u003cemail\u003e` should be **alphanumeric**, **non-empty** and **not longer than 64 characters**.","lastModifiedDate":"2024-03-11"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":87,"author":{"gitId":"taeewonnn"},"content":"**Examples:**","lastModifiedDate":"2024-03-05"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"ChocoRagdoll"},"content":"- `addp n/David p/98987676 e/david@example.com` adds a participant named `David`","lastModifiedDate":"2024-03-22"},{"lineNumber":90,"author":{"gitId":"taeewonnn"},"content":" with the phone number `98987676` and email of `david@example.com` to the displayed contacts list.","lastModifiedDate":"2024-03-11"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"ChocoRagdoll"},"content":"### Invite person to selected event: `inv`","lastModifiedDate":"2024-03-22"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"ChocoRagdoll"},"content":"**Format:** `inv \u003cparticipant index\u003e`","lastModifiedDate":"2024-03-22"},{"lineNumber":95,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":96,"author":{"gitId":"myang2020"},"content":"**Description:**","lastModifiedDate":"2024-03-07"},{"lineNumber":97,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":98,"author":{"gitId":"myang2020"},"content":"Invite participants from the global participant list to the selected event.","lastModifiedDate":"2024-03-10"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"myang2020"},"content":"**Caution:**","lastModifiedDate":"2024-03-07"},{"lineNumber":101,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":102,"author":{"gitId":"myang2020"},"content":"* `\u003cparticipant index\u003e` should be within valid range of global participants","lastModifiedDate":"2024-03-12"},{"lineNumber":103,"author":{"gitId":"myang2020"},"content":"* Duplicate participants is **not allowed.**","lastModifiedDate":"2024-03-07"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":105,"author":{"gitId":"myang2020"},"content":"**Examples:**","lastModifiedDate":"2024-03-07"},{"lineNumber":106,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":107,"author":{"gitId":"ChocoRagdoll"},"content":"- `inv 5` Adds participant indexed 5 to selected event.","lastModifiedDate":"2024-03-22"},{"lineNumber":108,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":109,"author":{"gitId":"myang2020"},"content":"### Clearing all entries : `clear`","lastModifiedDate":"2024-03-12"},{"lineNumber":110,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":111,"author":{"gitId":"myang2020"},"content":"Clears all entries from the address book.","lastModifiedDate":"2024-03-12"},{"lineNumber":112,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":113,"author":{"gitId":"myang2020"},"content":"Format: `clear`","lastModifiedDate":"2024-03-12"},{"lineNumber":114,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":115,"author":{"gitId":"myang2020"},"content":"### Edit existing participant: `editp`","lastModifiedDate":"2024-03-10"},{"lineNumber":116,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":117,"author":{"gitId":"ChocoRagdoll"},"content":"**Format:** `editp \u003cparticipant index\u003e n/\u003cparticipant name\u003e p/\u003cphone number\u003e e/\u003cemail\u003e`","lastModifiedDate":"2024-03-22"},{"lineNumber":118,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":119,"author":{"gitId":"myang2020"},"content":"**Description:**","lastModifiedDate":"2024-03-10"},{"lineNumber":120,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":121,"author":{"gitId":"myang2020"},"content":"Updates the contact information of a participant in the app.","lastModifiedDate":"2024-03-10"},{"lineNumber":122,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":123,"author":{"gitId":"myang2020"},"content":"**Caution:**","lastModifiedDate":"2024-03-10"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":125,"author":{"gitId":"myang2020"},"content":"* `\u003cparticipant index\u003e` should be within valid range of global participants","lastModifiedDate":"2024-03-12"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":127,"author":{"gitId":"myang2020"},"content":"**Examples:**","lastModifiedDate":"2024-03-10"},{"lineNumber":128,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":129,"author":{"gitId":"ChocoRagdoll"},"content":"- `editp 5 n/Max p/00000000 e/test@gmail.com` Edits contact details of participant indexed 5.","lastModifiedDate":"2024-03-22"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":131,"author":{"gitId":"ChocoRagdoll"},"content":"### Selecting an event: `sel`","lastModifiedDate":"2024-03-13"},{"lineNumber":132,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":133,"author":{"gitId":"ChocoRagdoll"},"content":"**Format:** `sel \u003cevent index\u003e`","lastModifiedDate":"2024-03-13"},{"lineNumber":134,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":135,"author":{"gitId":"ChocoRagdoll"},"content":"**Description:**","lastModifiedDate":"2024-03-13"},{"lineNumber":136,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":137,"author":{"gitId":"ChocoRagdoll"},"content":"Selects an event from the event list by the event index.","lastModifiedDate":"2024-03-13"},{"lineNumber":138,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":139,"author":{"gitId":"ChocoRagdoll"},"content":"\u003cbox type\u003d\"warning\" seamless\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":140,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":141,"author":{"gitId":"ChocoRagdoll"},"content":"**Caution:**","lastModifiedDate":"2024-03-13"},{"lineNumber":142,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":143,"author":{"gitId":"ChocoRagdoll"},"content":"* `\u003cevent index\u003e` should be an **integer** no larger than the number of events in the event list.","lastModifiedDate":"2024-03-13"},{"lineNumber":144,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":146,"author":{"gitId":"ChocoRagdoll"},"content":"**Examples:**","lastModifiedDate":"2024-03-13"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":148,"author":{"gitId":"ChocoRagdoll"},"content":"- `sel 3` selects the 3rd event.","lastModifiedDate":"2024-03-14"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":150,"author":{"gitId":"ChocoRagdoll"},"content":"### Deselecting an event: `desel`","lastModifiedDate":"2024-03-13"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":152,"author":{"gitId":"ChocoRagdoll"},"content":"**Format:** `desel`","lastModifiedDate":"2024-03-13"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":154,"author":{"gitId":"ChocoRagdoll"},"content":"**Description:**","lastModifiedDate":"2024-03-13"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":156,"author":{"gitId":"ChocoRagdoll"},"content":"Deselects the selected event and returns to the global participant list.","lastModifiedDate":"2024-03-13"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":158,"author":{"gitId":"ChocoRagdoll"},"content":"**Examples:**","lastModifiedDate":"2024-03-13"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":160,"author":{"gitId":"ChocoRagdoll"},"content":"- After `select 3` which selects the event with index `3`, `desel` deselects the event indexed `3`.","lastModifiedDate":"2024-03-13"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":162,"author":{"gitId":"ChocoRagdoll"},"content":"### Deleting a participant from the global participant list or an event participant list: `delp`","lastModifiedDate":"2024-03-13"},{"lineNumber":163,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":164,"author":{"gitId":"ChocoRagdoll"},"content":"**Format:** `delp \u003cindex\u003e`","lastModifiedDate":"2024-03-13"},{"lineNumber":165,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":166,"author":{"gitId":"ChocoRagdoll"},"content":"**Description:**","lastModifiedDate":"2024-03-13"},{"lineNumber":167,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":168,"author":{"gitId":"ChocoRagdoll"},"content":"- If **no event is selected**, this deletes the participant from both the **global participant list** and **all the","lastModifiedDate":"2024-03-13"},{"lineNumber":169,"author":{"gitId":"ChocoRagdoll"},"content":" events** he/she is in by **his/her index in the global participant list**.","lastModifiedDate":"2024-03-13"},{"lineNumber":170,"author":{"gitId":"ChocoRagdoll"},"content":"- If **an event is selected**, this only removes the participant from the event by **his/her index in the","lastModifiedDate":"2024-03-13"},{"lineNumber":171,"author":{"gitId":"ChocoRagdoll"},"content":" event participant list**.","lastModifiedDate":"2024-03-13"},{"lineNumber":172,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":173,"author":{"gitId":"ChocoRagdoll"},"content":"\u003cbox type\u003d\"warning\" seamless\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":174,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":175,"author":{"gitId":"ChocoRagdoll"},"content":"**Caution:**","lastModifiedDate":"2024-03-13"},{"lineNumber":176,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":177,"author":{"gitId":"ChocoRagdoll"},"content":"* `\u003cindex\u003e` should be an **integer**.","lastModifiedDate":"2024-03-13"},{"lineNumber":178,"author":{"gitId":"ChocoRagdoll"},"content":"* A participant\u0027s `\u003cindex\u003e` in an event participant list can be **different** from that in the global participant list.","lastModifiedDate":"2024-03-13"},{"lineNumber":179,"author":{"gitId":"ChocoRagdoll"},"content":"* `\u003cindex\u003e` should be no larger than the number of participants in the global participant list if no event is selected.","lastModifiedDate":"2024-03-13"},{"lineNumber":180,"author":{"gitId":"ChocoRagdoll"},"content":"* `\u003cindex\u003e` should be no larger than the number of participants in the event participant list if an event is selected.","lastModifiedDate":"2024-03-13"},{"lineNumber":181,"author":{"gitId":"ChocoRagdoll"},"content":"\u003c/box\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":182,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":183,"author":{"gitId":"ChocoRagdoll"},"content":"**Examples:**","lastModifiedDate":"2024-03-13"},{"lineNumber":184,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":185,"author":{"gitId":"ChocoRagdoll"},"content":"- When no event is selected, `delp 9` deletes the 9th participant completely.","lastModifiedDate":"2024-03-14"},{"lineNumber":186,"author":{"gitId":"ChocoRagdoll"},"content":"- `delp 9` after `sel 3` removes the 9th participant from the 3rd event\u0027s participant list.","lastModifiedDate":"2024-03-14"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":188,"author":{"gitId":"-"},"content":"### Locating persons by name: `find`","lastModifiedDate":"2024-03-12"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":190,"author":{"gitId":"-"},"content":"Finds persons whose names contain any of the given keywords.","lastModifiedDate":"2024-03-12"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":192,"author":{"gitId":"-"},"content":"Format: `find KEYWORD [MORE_KEYWORDS]`","lastModifiedDate":"2024-03-12"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":194,"author":{"gitId":"-"},"content":"* The search is case-insensitive. e.g `hans` will match `Hans`","lastModifiedDate":"2024-03-12"},{"lineNumber":195,"author":{"gitId":"-"},"content":"* The order of the keywords does not matter. e.g. `Hans Bo` will match `Bo Hans`","lastModifiedDate":"2024-03-12"},{"lineNumber":196,"author":{"gitId":"-"},"content":"* Only the name is searched.","lastModifiedDate":"2024-03-12"},{"lineNumber":197,"author":{"gitId":"-"},"content":"* Only full words will be matched e.g. `Han` will not match `Hans`","lastModifiedDate":"2024-03-12"},{"lineNumber":198,"author":{"gitId":"-"},"content":"* Persons matching at least one keyword will be returned (i.e. `OR` search).","lastModifiedDate":"2024-03-12"},{"lineNumber":199,"author":{"gitId":"-"},"content":" e.g. `Hans Bo` will return `Hans Gruber`, `Bo Yang`","lastModifiedDate":"2024-03-12"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":201,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2024-03-12"},{"lineNumber":202,"author":{"gitId":"-"},"content":"* `find John` returns `john` and `John Doe`","lastModifiedDate":"2024-03-12"},{"lineNumber":203,"author":{"gitId":"-"},"content":"* `find alex david` returns `Alex Yeoh`, `David Li`\u003cbr\u003e","lastModifiedDate":"2024-03-12"},{"lineNumber":204,"author":{"gitId":"-"},"content":" ![result for \u0027find alex david\u0027](images/findAlexDavidResult.png)","lastModifiedDate":"2024-03-12"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":206,"author":{"gitId":"myang2020"},"content":"### Listing all persons : `list`","lastModifiedDate":"2024-03-12"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":208,"author":{"gitId":"myang2020"},"content":"Shows a list of all persons in the address book.","lastModifiedDate":"2024-03-12"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":210,"author":{"gitId":"myang2020"},"content":"Format: `list`","lastModifiedDate":"2024-03-12"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":212,"author":{"gitId":"myang2020"},"content":"### Viewing help : `help`","lastModifiedDate":"2024-03-12"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":214,"author":{"gitId":"ChocoRagdoll"},"content":"Shows a message explaining how to access the help page.","lastModifiedDate":"2024-03-14"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":216,"author":{"gitId":"myang2020"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2024-03-12"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":218,"author":{"gitId":"myang2020"},"content":"Format: `help`","lastModifiedDate":"2024-03-12"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":220,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2024-03-12"},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":222,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2024-03-12"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":224,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2024-03-12"},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":226,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2024-03-12"},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":228,"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":"2024-03-12"},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":230,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2024-03-12"},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":232,"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":"2024-03-12"},{"lineNumber":233,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":234,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":236,"author":{"gitId":"-"},"content":"**Caution:**","lastModifiedDate":"2024-03-12"},{"lineNumber":237,"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-03-12"},{"lineNumber":238,"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":"2024-03-12"},{"lineNumber":239,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2024-03-12"},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":241,"author":{"gitId":"-"},"content":"### Archiving data files `[coming in v2.0]`","lastModifiedDate":"2024-03-12"},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":243,"author":{"gitId":"-"},"content":"_Details coming soon ..._","lastModifiedDate":"2024-03-12"},{"lineNumber":244,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":247,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23"},{"lineNumber":248,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":249,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":250,"author":{"gitId":"-"},"content":"**A**: Install the app in the other computer and overwrite the empty data file it creates with the file that contains the data of your previous AddressBook home folder.","lastModifiedDate":"2020-05-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":254,"author":{"gitId":"-"},"content":"## Known issues","lastModifiedDate":"2023-09-08"},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":256,"author":{"gitId":"-"},"content":"1. **When using multiple screens**, if you move the application to a secondary screen, and later switch to using only the primary screen, the GUI will open off-screen. The remedy is to delete the `preferences.json` file created by the application before running the application again.","lastModifiedDate":"2023-09-08"},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":258,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08"},{"lineNumber":259,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":260,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":262,"author":{"gitId":"-"},"content":"Action | Format, Examples","lastModifiedDate":"2020-05-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":"-----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-12"},{"lineNumber":264,"author":{"gitId":"ChocoRagdoll"},"content":"**Add Event** | `addev ev/\u003cevent name\u003e` \u003cbr\u003e e.g., `addev ev/Orientation camp`","lastModifiedDate":"2024-03-22"},{"lineNumber":265,"author":{"gitId":"myang2020"},"content":"**Delete Event** | `delev \u003cindex\u003e` \u003cbr\u003e e.g., `delev 1`","lastModifiedDate":"2024-03-12"},{"lineNumber":266,"author":{"gitId":"ChocoRagdoll"},"content":"**Add Participant** | `addp n/\u003cparticipant name\u003e p/\u003cphone number\u003e e/\u003cemail\u003e` \u003cbr\u003e e.g., `addp n/David p/98987676 e/david@example.com`","lastModifiedDate":"2024-03-22"},{"lineNumber":267,"author":{"gitId":"ChocoRagdoll"},"content":"**Invite to Event** | `inv INDEX` \u003cbr\u003e e.g., `invite 5`","lastModifiedDate":"2024-03-22"},{"lineNumber":268,"author":{"gitId":"ChocoRagdoll"},"content":"**Edit Participant** | `editp \u003cparticipant index\u003e n/\u003cparticipant name\u003e p/\u003cphone number\u003e e/\u003cemail\u003e` \u003cbr\u003e e.g., `editp 5 n/Max p/00000000 e/test@gmail.com`","lastModifiedDate":"2024-03-22"},{"lineNumber":269,"author":{"gitId":"ChocoRagdoll"},"content":"**Select Event** | `sel \u003cevent index\u003e` \u003cbr\u003e e.g., `sel 3`","lastModifiedDate":"2024-03-22"},{"lineNumber":270,"author":{"gitId":"ChocoRagdoll"},"content":"**Delete Participant** | `delp \u003cindex\u003e` \u003cbr\u003e e.g., `delp 2`","lastModifiedDate":"2024-03-22"}],"authorContributionMap":{"Apzure":6,"ChocoRagdoll":67,"-":143,"taeewonnn":23,"myang2020":31}},{"path":"docs/diagrams/DeleteParticipantSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"ChocoRagdoll"},"content":"@startuml","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"ChocoRagdoll"},"content":"!include style.puml","lastModifiedDate":"2024-03-22"},{"lineNumber":3,"author":{"gitId":"ChocoRagdoll"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-22"},{"lineNumber":4,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":5,"author":{"gitId":"ChocoRagdoll"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2024-03-22"},{"lineNumber":6,"author":{"gitId":"ChocoRagdoll"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2024-03-22"},{"lineNumber":7,"author":{"gitId":"ChocoRagdoll"},"content":"participant \":AddressBookParser\" as AddressBookParser LOGIC_COLOR","lastModifiedDate":"2024-03-22"},{"lineNumber":8,"author":{"gitId":"ChocoRagdoll"},"content":"participant \":DeletePersonCommandParser\" as DeletePersonCommandParser LOGIC_COLOR","lastModifiedDate":"2024-03-22"},{"lineNumber":9,"author":{"gitId":"ChocoRagdoll"},"content":"participant \"d:DeletePersonCommand\" as DeletePersonCommand LOGIC_COLOR","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"ChocoRagdoll"},"content":"participant \"r:CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"ChocoRagdoll"},"content":"end box","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"ChocoRagdoll"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"ChocoRagdoll"},"content":"participant \"m:Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-22"},{"lineNumber":15,"author":{"gitId":"ChocoRagdoll"},"content":"end box","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":17,"author":{"gitId":"ChocoRagdoll"},"content":"[-\u003e LogicManager : execute(\"delp 1\")","lastModifiedDate":"2024-03-22"},{"lineNumber":18,"author":{"gitId":"ChocoRagdoll"},"content":"activate LogicManager","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":20,"author":{"gitId":"ChocoRagdoll"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(\"delp 1\")","lastModifiedDate":"2024-03-22"},{"lineNumber":21,"author":{"gitId":"ChocoRagdoll"},"content":"activate AddressBookParser","lastModifiedDate":"2024-03-22"},{"lineNumber":22,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"ChocoRagdoll"},"content":"create DeletePersonCommandParser","lastModifiedDate":"2024-03-22"},{"lineNumber":24,"author":{"gitId":"ChocoRagdoll"},"content":"AddressBookParser -\u003e DeletePersonCommandParser","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"ChocoRagdoll"},"content":"activate DeletePersonCommandParser","lastModifiedDate":"2024-03-22"},{"lineNumber":26,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":27,"author":{"gitId":"ChocoRagdoll"},"content":"DeletePersonCommandParser --\u003e AddressBookParser","lastModifiedDate":"2024-03-22"},{"lineNumber":28,"author":{"gitId":"ChocoRagdoll"},"content":"deactivate DeletePersonCommandParser","lastModifiedDate":"2024-03-22"},{"lineNumber":29,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":30,"author":{"gitId":"ChocoRagdoll"},"content":"AddressBookParser -\u003e DeletePersonCommandParser : parse(\"1\")","lastModifiedDate":"2024-03-22"},{"lineNumber":31,"author":{"gitId":"ChocoRagdoll"},"content":"activate DeletePersonCommandParser","lastModifiedDate":"2024-03-22"},{"lineNumber":32,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":33,"author":{"gitId":"ChocoRagdoll"},"content":"create DeletePersonCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":34,"author":{"gitId":"ChocoRagdoll"},"content":"DeletePersonCommandParser -\u003e DeletePersonCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":35,"author":{"gitId":"ChocoRagdoll"},"content":"activate DeletePersonCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":36,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":37,"author":{"gitId":"ChocoRagdoll"},"content":"DeletePersonCommand --\u003e DeletePersonCommandParser :","lastModifiedDate":"2024-03-22"},{"lineNumber":38,"author":{"gitId":"ChocoRagdoll"},"content":"deactivate DeletePersonCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":39,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":40,"author":{"gitId":"ChocoRagdoll"},"content":"DeletePersonCommandParser --\u003e AddressBookParser : d","lastModifiedDate":"2024-03-22"},{"lineNumber":41,"author":{"gitId":"ChocoRagdoll"},"content":"deactivate DeletePersonCommandParser","lastModifiedDate":"2024-03-22"},{"lineNumber":42,"author":{"gitId":"ChocoRagdoll"},"content":"\u0027Hidden arrow to position the destroy marker below the end of the activation bar.","lastModifiedDate":"2024-03-22"},{"lineNumber":43,"author":{"gitId":"ChocoRagdoll"},"content":"DeletePersonCommandParser -[hidden]-\u003e AddressBookParser","lastModifiedDate":"2024-03-22"},{"lineNumber":44,"author":{"gitId":"ChocoRagdoll"},"content":"destroy DeletePersonCommandParser","lastModifiedDate":"2024-03-22"},{"lineNumber":45,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":46,"author":{"gitId":"ChocoRagdoll"},"content":"AddressBookParser --\u003e LogicManager : d","lastModifiedDate":"2024-03-22"},{"lineNumber":47,"author":{"gitId":"ChocoRagdoll"},"content":"deactivate AddressBookParser","lastModifiedDate":"2024-03-22"},{"lineNumber":48,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":49,"author":{"gitId":"ChocoRagdoll"},"content":"LogicManager -\u003e DeletePersonCommand : execute(m)","lastModifiedDate":"2024-03-22"},{"lineNumber":50,"author":{"gitId":"ChocoRagdoll"},"content":"activate DeletePersonCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":51,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":52,"author":{"gitId":"ChocoRagdoll"},"content":"DeletePersonCommand -\u003e Model : isAnEventSelected()","lastModifiedDate":"2024-03-22"},{"lineNumber":53,"author":{"gitId":"ChocoRagdoll"},"content":"activate Model","lastModifiedDate":"2024-03-22"},{"lineNumber":54,"author":{"gitId":"ChocoRagdoll"},"content":"Model --\u003e DeletePersonCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":55,"author":{"gitId":"ChocoRagdoll"},"content":"deactivate Model","lastModifiedDate":"2024-03-22"},{"lineNumber":56,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":57,"author":{"gitId":"ChocoRagdoll"},"content":"alt isAnEventSelected","lastModifiedDate":"2024-03-22"},{"lineNumber":58,"author":{"gitId":"ChocoRagdoll"},"content":" DeletePersonCommand -\u003e DeletePersonCommand : deleteFromEvent()","lastModifiedDate":"2024-03-22"},{"lineNumber":59,"author":{"gitId":"ChocoRagdoll"},"content":" activate DeletePersonCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":60,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":61,"author":{"gitId":"ChocoRagdoll"},"content":" DeletePersonCommand -\u003e Model : deletePersonFromSelectedEvent(personToDelete)","lastModifiedDate":"2024-03-22"},{"lineNumber":62,"author":{"gitId":"ChocoRagdoll"},"content":" activate Model","lastModifiedDate":"2024-03-22"},{"lineNumber":63,"author":{"gitId":"ChocoRagdoll"},"content":" Model --\u003e DeletePersonCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":64,"author":{"gitId":"ChocoRagdoll"},"content":" deactivate Model","lastModifiedDate":"2024-03-22"},{"lineNumber":65,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":66,"author":{"gitId":"ChocoRagdoll"},"content":" deactivate DeletePersonCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":67,"author":{"gitId":"ChocoRagdoll"},"content":"else","lastModifiedDate":"2024-03-22"},{"lineNumber":68,"author":{"gitId":"ChocoRagdoll"},"content":" DeletePersonCommand -\u003e DeletePersonCommand : deleteFromGlobal()","lastModifiedDate":"2024-03-22"},{"lineNumber":69,"author":{"gitId":"ChocoRagdoll"},"content":" activate DeletePersonCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":70,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":71,"author":{"gitId":"ChocoRagdoll"},"content":" DeletePersonCommand -\u003e Model : deletePerson(personToDelete)","lastModifiedDate":"2024-03-22"},{"lineNumber":72,"author":{"gitId":"ChocoRagdoll"},"content":" activate Model","lastModifiedDate":"2024-03-22"},{"lineNumber":73,"author":{"gitId":"ChocoRagdoll"},"content":" Model --\u003e DeletePersonCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":74,"author":{"gitId":"ChocoRagdoll"},"content":" deactivate Model","lastModifiedDate":"2024-03-22"},{"lineNumber":75,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":76,"author":{"gitId":"ChocoRagdoll"},"content":" deactivate DeletePersonCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":77,"author":{"gitId":"ChocoRagdoll"},"content":"end","lastModifiedDate":"2024-03-22"},{"lineNumber":78,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":79,"author":{"gitId":"ChocoRagdoll"},"content":"create CommandResult","lastModifiedDate":"2024-03-22"},{"lineNumber":80,"author":{"gitId":"ChocoRagdoll"},"content":"DeletePersonCommand -\u003e CommandResult","lastModifiedDate":"2024-03-22"},{"lineNumber":81,"author":{"gitId":"ChocoRagdoll"},"content":"activate CommandResult","lastModifiedDate":"2024-03-22"},{"lineNumber":82,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":83,"author":{"gitId":"ChocoRagdoll"},"content":"CommandResult --\u003e DeletePersonCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":84,"author":{"gitId":"ChocoRagdoll"},"content":"deactivate CommandResult","lastModifiedDate":"2024-03-22"},{"lineNumber":85,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":86,"author":{"gitId":"ChocoRagdoll"},"content":"DeletePersonCommand --\u003e LogicManager : r","lastModifiedDate":"2024-03-22"},{"lineNumber":87,"author":{"gitId":"ChocoRagdoll"},"content":"deactivate DeletePersonCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":88,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":89,"author":{"gitId":"ChocoRagdoll"},"content":"[\u003c--LogicManager","lastModifiedDate":"2024-03-22"},{"lineNumber":90,"author":{"gitId":"ChocoRagdoll"},"content":"deactivate LogicManager","lastModifiedDate":"2024-03-22"},{"lineNumber":91,"author":{"gitId":"ChocoRagdoll"},"content":"@enduml","lastModifiedDate":"2024-03-22"}],"authorContributionMap":{"ChocoRagdoll":91}},{"path":"src/main/java/seedu/address/logic/Logic.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-03"},{"lineNumber":11,"author":{"gitId":"Apzure"},"content":"import seedu.address.model.event.Event;","lastModifiedDate":"2024-03-01"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * API of the Logic component","lastModifiedDate":"2016-09-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public interface Logic {","lastModifiedDate":"2016-09-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2016-09-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * @param commandText The command as entered by the user.","lastModifiedDate":"2016-09-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * @return the result of the command execution.","lastModifiedDate":"2016-09-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2017-02-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * @throws ParseException If an error occurs during parsing.","lastModifiedDate":"2017-03-11"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" CommandResult execute(String commandText) throws CommandException, ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Returns the AddressBook.","lastModifiedDate":"2018-12-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * @see seedu.address.model.Model#getAddressBook()","lastModifiedDate":"2018-12-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2018-12-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03"},{"lineNumber":34,"author":{"gitId":"Apzure"},"content":" /** Returns an unmodifiable view of the filtered list of events */","lastModifiedDate":"2024-03-15"},{"lineNumber":35,"author":{"gitId":"Apzure"},"content":" ObservableList\u003cEvent\u003e getFilteredEventList();","lastModifiedDate":"2024-03-15"},{"lineNumber":36,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":37,"author":{"gitId":"Apzure"},"content":" /** Returns an unmodifiable view of the filtered list of persons of the selected event */","lastModifiedDate":"2024-03-15"},{"lineNumber":38,"author":{"gitId":"Apzure"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonListOfSelectedEvent();","lastModifiedDate":"2024-03-15"},{"lineNumber":39,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":" /** Returns an unmodifiable view of the filtered list of persons */","lastModifiedDate":"2017-09-01"},{"lineNumber":41,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-26"},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Set the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"Apzure":7,"-":50}},{"path":"src/main/java/seedu/address/logic/LogicManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2016-09-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.AddressBookParser;","lastModifiedDate":"2017-07-07"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-03"},{"lineNumber":18,"author":{"gitId":"Apzure"},"content":"import seedu.address.model.event.Event;","lastModifiedDate":"2024-03-01"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.storage.Storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * The main LogicManager of the app.","lastModifiedDate":"2016-09-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class LogicManager implements Logic {","lastModifiedDate":"2018-12-09"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_ERROR_FORMAT \u003d \"Could not save data due to the following error: %s\";","lastModifiedDate":"2023-06-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_PERMISSION_ERROR_FORMAT \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \"Could not save data to file %s due to insufficient permissions to write to the file or the folder.\";","lastModifiedDate":"2023-06-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(LogicManager.class);","lastModifiedDate":"2016-09-29"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final Model model;","lastModifiedDate":"2016-09-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final Storage storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private final AddressBookParser addressBookParser;","lastModifiedDate":"2017-07-07"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Constructs a {@code LogicManager} with the given {@code Model} and {@code Storage}.","lastModifiedDate":"2020-05-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public LogicManager(Model model, Storage storage) {","lastModifiedDate":"2018-12-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.model \u003d model;","lastModifiedDate":"2016-09-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.storage \u003d storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":" addressBookParser \u003d new AddressBookParser();","lastModifiedDate":"2018-01-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public CommandResult execute(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":48,"author":{"gitId":"-"},"content":" logger.info(\"----------------[USER COMMAND][\" + commandText + \"]\");","lastModifiedDate":"2016-09-29"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":" CommandResult commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":" Command command \u003d addressBookParser.parseCommand(commandText);","lastModifiedDate":"2017-07-07"},{"lineNumber":52,"author":{"gitId":"-"},"content":" commandResult \u003d command.execute(model);","lastModifiedDate":"2019-01-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":55,"author":{"gitId":"-"},"content":" storage.saveAddressBook(model.getAddressBook());","lastModifiedDate":"2018-12-09"},{"lineNumber":56,"author":{"gitId":"-"},"content":" } catch (AccessDeniedException e) {","lastModifiedDate":"2023-06-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_PERMISSION_ERROR_FORMAT, e.getMessage()), e);","lastModifiedDate":"2023-06-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2018-12-09"},{"lineNumber":59,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_ERROR_FORMAT, ioe.getMessage()), ioe);","lastModifiedDate":"2023-06-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-03"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2018-12-03"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return model.getAddressBook();","lastModifiedDate":"2018-12-03"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-03"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03"},{"lineNumber":70,"author":{"gitId":"Apzure"},"content":" @Override","lastModifiedDate":"2024-03-01"},{"lineNumber":71,"author":{"gitId":"Apzure"},"content":" public ObservableList\u003cEvent\u003e getFilteredEventList() {","lastModifiedDate":"2024-03-15"},{"lineNumber":72,"author":{"gitId":"Apzure"},"content":" return model.getFilteredEventList();","lastModifiedDate":"2024-03-01"},{"lineNumber":73,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":74,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":75,"author":{"gitId":"Apzure"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":76,"author":{"gitId":"Apzure"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonListOfSelectedEvent() {","lastModifiedDate":"2024-03-15"},{"lineNumber":77,"author":{"gitId":"Apzure"},"content":" return model.getFilteredPersonListOfSelectedEvent();","lastModifiedDate":"2024-03-15"},{"lineNumber":78,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":79,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":82,"author":{"gitId":"-"},"content":" return model.getFilteredPersonList();","lastModifiedDate":"2016-09-25"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-29"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" return model.getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":92,"author":{"gitId":"-"},"content":" return model.getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":" model.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"Apzure":11,"-":88}},{"path":"src/main/java/seedu/address/logic/Messages.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2023-07-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-07-14"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-07-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2023-07-14"},{"lineNumber":8,"author":{"gitId":"Apzure"},"content":"import seedu.address.model.event.Event;","lastModifiedDate":"2024-03-02"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2019-02-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Container for user visible messages.","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class Messages {","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2016-09-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_PERSON_DISPLAYED_INDEX \u003d \"The person index provided is invalid\";","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String MESSAGE_PERSONS_LISTED_OVERVIEW \u003d \"%1$d persons listed!\";","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2023-07-14"},{"lineNumber":22,"author":{"gitId":"Apzure"},"content":" public static final String MESSAGE_INVALID_EVENT_DISPLAYED_INDEX \u003d \"The event index provided is invalid\";","lastModifiedDate":"2024-03-15"},{"lineNumber":23,"author":{"gitId":"myang2020"},"content":" public static final String MESSAGE_SELECT_EVENT \u003d \"No event is selected!\";","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-07-14"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2023-07-14"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2023-07-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":31,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-07-14"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":34,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Formats the {@code person} for display to the user.","lastModifiedDate":"2019-02-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static String format(Person person) {","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" builder.append(person.getName())","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" .append(\"; Phone: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" .append(person.getPhone())","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" .append(\"; Email: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" .append(person.getEmail())","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" .append(\"; Address: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" .append(person.getAddress())","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" .append(\"; Tags: \");","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" person.getTags().forEach(builder::append);","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"Apzure"},"content":" /**","lastModifiedDate":"2024-03-02"},{"lineNumber":55,"author":{"gitId":"Apzure"},"content":" * Formats the {@code event} for display to the user.","lastModifiedDate":"2024-03-02"},{"lineNumber":56,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-02"},{"lineNumber":57,"author":{"gitId":"Apzure"},"content":" public static String format(Event event) {","lastModifiedDate":"2024-03-02"},{"lineNumber":58,"author":{"gitId":"Apzure"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2024-03-02"},{"lineNumber":59,"author":{"gitId":"Apzure"},"content":" builder.append(event.getEventName());","lastModifiedDate":"2024-03-02"},{"lineNumber":60,"author":{"gitId":"Apzure"},"content":" return builder.toString();","lastModifiedDate":"2024-03-02"},{"lineNumber":61,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":62,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":63,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"Apzure":11,"-":51,"myang2020":1}},{"path":"src/main/java/seedu/address/logic/commands/AddEventCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Apzure"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-02"},{"lineNumber":2,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":3,"author":{"gitId":"Apzure"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-02"},{"lineNumber":4,"author":{"gitId":"Apzure"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EVENT_NAME;","lastModifiedDate":"2024-03-02"},{"lineNumber":5,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":6,"author":{"gitId":"Apzure"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-02"},{"lineNumber":7,"author":{"gitId":"Apzure"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-02"},{"lineNumber":8,"author":{"gitId":"Apzure"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-02"},{"lineNumber":9,"author":{"gitId":"Apzure"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-02"},{"lineNumber":10,"author":{"gitId":"Apzure"},"content":"import seedu.address.model.event.Event;","lastModifiedDate":"2024-03-02"},{"lineNumber":11,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":12,"author":{"gitId":"Apzure"},"content":"/**","lastModifiedDate":"2024-03-02"},{"lineNumber":13,"author":{"gitId":"Apzure"},"content":" * Creates and adds an event to the address book.","lastModifiedDate":"2024-03-02"},{"lineNumber":14,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-02"},{"lineNumber":15,"author":{"gitId":"Apzure"},"content":"public class AddEventCommand extends Command {","lastModifiedDate":"2024-03-10"},{"lineNumber":16,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":17,"author":{"gitId":"Apzure"},"content":" public static final String COMMAND_WORD \u003d \"addev\";","lastModifiedDate":"2024-03-10"},{"lineNumber":18,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":19,"author":{"gitId":"Apzure"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Creates and adds an event to the address book. \"","lastModifiedDate":"2024-03-02"},{"lineNumber":20,"author":{"gitId":"Apzure"},"content":" + \"Parameters: \"","lastModifiedDate":"2024-03-02"},{"lineNumber":21,"author":{"gitId":"Apzure"},"content":" + PREFIX_EVENT_NAME + \"EVENT_NAME\";","lastModifiedDate":"2024-03-02"},{"lineNumber":22,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":23,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":24,"author":{"gitId":"Apzure"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New event created: %1$s\";","lastModifiedDate":"2024-03-02"},{"lineNumber":25,"author":{"gitId":"Apzure"},"content":" public static final String MESSAGE_DUPLICATE_EVENT \u003d \"This event already exists in the address book\";","lastModifiedDate":"2024-03-02"},{"lineNumber":26,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":27,"author":{"gitId":"Apzure"},"content":" private final Event toAdd;","lastModifiedDate":"2024-03-02"},{"lineNumber":28,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":29,"author":{"gitId":"Apzure"},"content":" /**","lastModifiedDate":"2024-03-02"},{"lineNumber":30,"author":{"gitId":"Apzure"},"content":" * Creates a CreateEventCommand to add the specified {@code Event}.","lastModifiedDate":"2024-03-02"},{"lineNumber":31,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-02"},{"lineNumber":32,"author":{"gitId":"Apzure"},"content":" public AddEventCommand(Event event) {","lastModifiedDate":"2024-03-10"},{"lineNumber":33,"author":{"gitId":"Apzure"},"content":" requireNonNull(event);","lastModifiedDate":"2024-03-02"},{"lineNumber":34,"author":{"gitId":"Apzure"},"content":" toAdd \u003d event;","lastModifiedDate":"2024-03-02"},{"lineNumber":35,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":36,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":37,"author":{"gitId":"Apzure"},"content":" @Override","lastModifiedDate":"2024-03-02"},{"lineNumber":38,"author":{"gitId":"Apzure"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-02"},{"lineNumber":39,"author":{"gitId":"Apzure"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-02"},{"lineNumber":40,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":41,"author":{"gitId":"Apzure"},"content":" if (model.hasEvent(toAdd)) {","lastModifiedDate":"2024-03-02"},{"lineNumber":42,"author":{"gitId":"Apzure"},"content":" throw new CommandException(MESSAGE_DUPLICATE_EVENT);","lastModifiedDate":"2024-03-02"},{"lineNumber":43,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":44,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":45,"author":{"gitId":"Apzure"},"content":" model.addEvent(toAdd);","lastModifiedDate":"2024-03-02"},{"lineNumber":46,"author":{"gitId":"Apzure"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2024-03-02"},{"lineNumber":47,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":48,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":49,"author":{"gitId":"Apzure"},"content":" @Override","lastModifiedDate":"2024-03-02"},{"lineNumber":50,"author":{"gitId":"Apzure"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-02"},{"lineNumber":51,"author":{"gitId":"Apzure"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-02"},{"lineNumber":52,"author":{"gitId":"Apzure"},"content":" return true;","lastModifiedDate":"2024-03-02"},{"lineNumber":53,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":54,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":55,"author":{"gitId":"Apzure"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-02"},{"lineNumber":56,"author":{"gitId":"Apzure"},"content":" if (!(other instanceof AddEventCommand)) {","lastModifiedDate":"2024-03-10"},{"lineNumber":57,"author":{"gitId":"Apzure"},"content":" return false;","lastModifiedDate":"2024-03-02"},{"lineNumber":58,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":59,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":60,"author":{"gitId":"Apzure"},"content":" AddEventCommand otherCreateEventCommand \u003d (AddEventCommand) other;","lastModifiedDate":"2024-03-10"},{"lineNumber":61,"author":{"gitId":"Apzure"},"content":" return toAdd.equals(otherCreateEventCommand.toAdd);","lastModifiedDate":"2024-03-02"},{"lineNumber":62,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":63,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":64,"author":{"gitId":"Apzure"},"content":" @Override","lastModifiedDate":"2024-03-02"},{"lineNumber":65,"author":{"gitId":"Apzure"},"content":" public String toString() {","lastModifiedDate":"2024-03-02"},{"lineNumber":66,"author":{"gitId":"Apzure"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-02"},{"lineNumber":67,"author":{"gitId":"Apzure"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2024-03-02"},{"lineNumber":68,"author":{"gitId":"Apzure"},"content":" .toString();","lastModifiedDate":"2024-03-02"},{"lineNumber":69,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":70,"author":{"gitId":"Apzure"},"content":"}","lastModifiedDate":"2024-03-02"}],"authorContributionMap":{"Apzure":70}},{"path":"src/main/java/seedu/address/logic/commands/DeleteEventCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"taeewonnn"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"taeewonnn"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"taeewonnn"},"content":"import java.util.List;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"taeewonnn"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"taeewonnn"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"taeewonnn"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"taeewonnn"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"taeewonnn"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"taeewonnn"},"content":"import seedu.address.model.event.Event;","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"taeewonnn"},"content":"/**","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"taeewonnn"},"content":" * Deletes an event identified using it\u0027s displayed index from the address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"taeewonnn"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"taeewonnn"},"content":"public class DeleteEventCommand extends Command {","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"taeewonnn"},"content":" public static final String COMMAND_WORD \u003d \"delev\";","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"taeewonnn"},"content":" public static final String MESSAGE_INVALID_DELETE_EVENT \u003d \"Cannot delete the event that is currently selected\";","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"taeewonnn"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"taeewonnn"},"content":" + \": Deletes the event identified by the index number used in the displayed event list.\\n\"","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"taeewonnn"},"content":" + \"Parameters: INDEX (must be a positive integer)\\n\"","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"taeewonnn"},"content":" + \"Example: \" + COMMAND_WORD + \"1\";","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"taeewonnn"},"content":" public static final String MESSAGE_DELETE_EVENT_SUCCESS \u003d \"Deleted Event: %1$s\";","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"taeewonnn"},"content":" public final Index targetIndex;","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"taeewonnn"},"content":" public DeleteEventCommand(Index targetIndex) {","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"taeewonnn"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"taeewonnn"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"taeewonnn"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"taeewonnn"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"taeewonnn"},"content":" List\u003cEvent\u003e lastShownList \u003d model.getFilteredEventList();","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"taeewonnn"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"taeewonnn"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_EVENT_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"taeewonnn"},"content":" Event eventToDelete \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"taeewonnn"},"content":" if (model.isSameSelectedEvent(eventToDelete)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"taeewonnn"},"content":" throw new CommandException(MESSAGE_INVALID_DELETE_EVENT);","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"taeewonnn"},"content":" model.deleteEvent(eventToDelete);","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"taeewonnn"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_EVENT_SUCCESS, Messages.format(eventToDelete)));","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"taeewonnn"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"taeewonnn"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"taeewonnn"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"taeewonnn"},"content":" return true;","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"taeewonnn"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"taeewonnn"},"content":" if (!(other instanceof DeleteEventCommand)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"taeewonnn"},"content":" return false;","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"taeewonnn"},"content":" DeleteEventCommand otherDeleteEventCommand \u003d (DeleteEventCommand) other;","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"taeewonnn"},"content":" return targetIndex.equals(otherDeleteEventCommand.targetIndex);","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"taeewonnn"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"taeewonnn"},"content":" public String toString() {","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"taeewonnn"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"taeewonnn"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"taeewonnn"},"content":" .toString();","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"taeewonnn"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"taeewonnn":76}},{"path":"src/main/java/seedu/address/logic/commands/DeletePersonCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ChocoRagdoll"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"ChocoRagdoll"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"ChocoRagdoll"},"content":"import java.util.List;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"ChocoRagdoll"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"ChocoRagdoll"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"ChocoRagdoll"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"ChocoRagdoll"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"ChocoRagdoll"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"ChocoRagdoll"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"ChocoRagdoll"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"ChocoRagdoll"},"content":" * When no event is selected, deletes a person identified using it\u0027s displayed index from the address book.","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"ChocoRagdoll"},"content":" * When an event is selected, deletes a person identified using it\u0027s displayed index from the event.","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"ChocoRagdoll"},"content":"public class DeletePersonCommand extends Command {","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"ChocoRagdoll"},"content":" public static final String COMMAND_WORD \u003d \"delp\";","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"ChocoRagdoll"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"ChocoRagdoll"},"content":" + \": When no event is selected, deletes the person identified by the index number used in the displayed \"","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"ChocoRagdoll"},"content":" + \"person list; when an event is selected, deletes a person identified using it\u0027s displayed index from \"","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"ChocoRagdoll"},"content":" + \"the event.\\n\"","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"ChocoRagdoll"},"content":" + \"Parameters: INDEX (must be a positive integer)\\n\"","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"ChocoRagdoll"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"ChocoRagdoll"},"content":" public static final String MESSAGE_DELETE_PERSON_GLOBAL_SUCCESS \u003d \"Deleted Person: %1$s from the address book.\";","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"ChocoRagdoll"},"content":" public static final String MESSAGE_DELETE_PERSON_EVENT_SUCCESS \u003d \"Deleted Person: %1$s from the selected event.\";","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"ChocoRagdoll"},"content":" private final Index targetIndex;","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"ChocoRagdoll"},"content":" * Constructor of DeletePersonCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"ChocoRagdoll"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"ChocoRagdoll"},"content":" * @param targetIndex Index of person user wants to delete.","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"ChocoRagdoll"},"content":" public DeletePersonCommand(Index targetIndex) {","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"ChocoRagdoll"},"content":" requireNonNull(targetIndex);","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"ChocoRagdoll"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"ChocoRagdoll"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"ChocoRagdoll"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"ChocoRagdoll"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"ChocoRagdoll"},"content":" if (model.isAnEventSelected()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"ChocoRagdoll"},"content":" return deleteFromEvent(model);","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"ChocoRagdoll"},"content":" } else {","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"ChocoRagdoll"},"content":" return deleteFromGlobal(model);","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"ChocoRagdoll"},"content":" * Handles the deletion of a person from the global list. This method is called when no event is currently","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"ChocoRagdoll"},"content":" * selected in the model.","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"ChocoRagdoll"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"ChocoRagdoll"},"content":" * @param model The model from which the person will be deleted globally. Must not be null.","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"ChocoRagdoll"},"content":" * @return A {@link CommandResult} object containing the success message of the global deletion.","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"ChocoRagdoll"},"content":" * @throws CommandException If the target index is invalid, i.e., if it is out of bounds of the list size.","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"ChocoRagdoll"},"content":" public CommandResult deleteFromGlobal(Model model) throws CommandException {","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"ChocoRagdoll"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"ChocoRagdoll"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"ChocoRagdoll"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"ChocoRagdoll"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"ChocoRagdoll"},"content":" Person personToDelete \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"ChocoRagdoll"},"content":" model.deletePerson(personToDelete);","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"ChocoRagdoll"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_PERSON_GLOBAL_SUCCESS, Messages.format(personToDelete)));","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"ChocoRagdoll"},"content":" * Handles the deletion of a person from the list of a currently selected event. This method is called","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"ChocoRagdoll"},"content":" * when an event is selected in the model.","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"ChocoRagdoll"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"ChocoRagdoll"},"content":" * @param model The model from which the person will be deleted from the selected event. Must not be null.","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"ChocoRagdoll"},"content":" * @return A {@link CommandResult} object containing the success message of the event-specific deletion.","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"ChocoRagdoll"},"content":" * @throws CommandException If no event is selected, if the target index is invalid (out of bounds of the","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"ChocoRagdoll"},"content":" * list size), or if the person is not part of the selected event.","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"ChocoRagdoll"},"content":" public CommandResult deleteFromEvent(Model model) throws CommandException {","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"ChocoRagdoll"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"ChocoRagdoll"},"content":" if (!model.isAnEventSelected()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":88,"author":{"gitId":"ChocoRagdoll"},"content":" throw new CommandException(Messages.MESSAGE_SELECT_EVENT);","lastModifiedDate":"2024-03-20"},{"lineNumber":89,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":90,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":91,"author":{"gitId":"ChocoRagdoll"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonListOfSelectedEvent();","lastModifiedDate":"2024-03-20"},{"lineNumber":92,"author":{"gitId":"ChocoRagdoll"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":93,"author":{"gitId":"ChocoRagdoll"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-20"},{"lineNumber":94,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":95,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":96,"author":{"gitId":"ChocoRagdoll"},"content":" Person personToDelete \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2024-03-20"},{"lineNumber":97,"author":{"gitId":"ChocoRagdoll"},"content":" model.deletePersonFromSelectedEvent(personToDelete);","lastModifiedDate":"2024-03-20"},{"lineNumber":98,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":99,"author":{"gitId":"ChocoRagdoll"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_PERSON_EVENT_SUCCESS, personToDelete.getName()));","lastModifiedDate":"2024-03-20"},{"lineNumber":100,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":101,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":102,"author":{"gitId":"ChocoRagdoll"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":103,"author":{"gitId":"ChocoRagdoll"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-20"},{"lineNumber":104,"author":{"gitId":"ChocoRagdoll"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-20"},{"lineNumber":105,"author":{"gitId":"ChocoRagdoll"},"content":" return true;","lastModifiedDate":"2024-03-20"},{"lineNumber":106,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":107,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":108,"author":{"gitId":"ChocoRagdoll"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-20"},{"lineNumber":109,"author":{"gitId":"ChocoRagdoll"},"content":" if (!(other instanceof DeletePersonCommand)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":110,"author":{"gitId":"ChocoRagdoll"},"content":" return false;","lastModifiedDate":"2024-03-20"},{"lineNumber":111,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":112,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":113,"author":{"gitId":"ChocoRagdoll"},"content":" DeletePersonCommand otherDeleteCommand \u003d (DeletePersonCommand) other;","lastModifiedDate":"2024-03-20"},{"lineNumber":114,"author":{"gitId":"ChocoRagdoll"},"content":" return targetIndex.equals(otherDeleteCommand.targetIndex);","lastModifiedDate":"2024-03-20"},{"lineNumber":115,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":116,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":117,"author":{"gitId":"ChocoRagdoll"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":118,"author":{"gitId":"ChocoRagdoll"},"content":" public String toString() {","lastModifiedDate":"2024-03-20"},{"lineNumber":119,"author":{"gitId":"ChocoRagdoll"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-20"},{"lineNumber":120,"author":{"gitId":"ChocoRagdoll"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2024-03-20"},{"lineNumber":121,"author":{"gitId":"ChocoRagdoll"},"content":" .toString();","lastModifiedDate":"2024-03-20"},{"lineNumber":122,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":123,"author":{"gitId":"ChocoRagdoll"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"ChocoRagdoll":123}},{"path":"src/main/java/seedu/address/logic/commands/DeselectCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"myang2020"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"myang2020"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"myang2020"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"myang2020"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"myang2020"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"myang2020"},"content":" * Deselects the currently selected event.","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"myang2020"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"myang2020"},"content":"public class DeselectCommand extends Command {","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"myang2020"},"content":" public static final String COMMAND_WORD \u003d \"desel\";","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"myang2020"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"myang2020"},"content":" + \": Deselects the currently selected event.\\n\"","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"myang2020"},"content":" + \"Example: \" + COMMAND_WORD;","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"myang2020"},"content":" public static final String MESSAGE_DESELECT_EVENT_SUCCESS \u003d \"Event deselected.\";","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"myang2020"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"myang2020"},"content":" * Executes the deselect command.","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"myang2020"},"content":" *","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"myang2020"},"content":" * @param model {@code Model} which the command should operate on.","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"myang2020"},"content":" * @return Result of the command execution.","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"myang2020"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"myang2020"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"myang2020"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"myang2020"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"myang2020"},"content":" model.deselectEvent();","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"myang2020"},"content":" return new CommandResult(MESSAGE_DESELECT_EVENT_SUCCESS);","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"myang2020"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"myang2020"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"myang2020"},"content":" return other \u003d\u003d this || other instanceof DeselectCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"myang2020"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"myang2020"},"content":" public String toString() {","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"myang2020"},"content":" return new ToStringBuilder(this).toString();","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"myang2020"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"myang2020":42}},{"path":"src/main/java/seedu/address/logic/commands/InviteCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"myang2020"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"myang2020"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"myang2020"},"content":"import java.util.List;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"myang2020"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"myang2020"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"myang2020"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"myang2020"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"myang2020"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"myang2020"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"myang2020"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"myang2020"},"content":" * Invites a person to an event using their displayed index from the person list.","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"myang2020"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"myang2020"},"content":"public class InviteCommand extends Command {","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"myang2020"},"content":" public static final String COMMAND_WORD \u003d \"inv\";","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"myang2020"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"myang2020"},"content":" + \": Invites the person identified by the index number used in the displayed person list to \"","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"myang2020"},"content":" + \"the selected event.\\n\"","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"myang2020"},"content":" + \"Parameters: INDEX (must be a positive integer)\\n\"","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"myang2020"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"myang2020"},"content":" public static final String MESSAGE_INVITE_PERSON_SUCCESS \u003d \"Invited Person: %1$s to the selected event\";","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"myang2020"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the selected event\";","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"myang2020"},"content":" private final Index targetIndex;","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"myang2020"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"myang2020"},"content":" * Constructor of InviteCommand","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"myang2020"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"myang2020"},"content":" * @param targetIndex Index of person user wants to invite to selected event.","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"myang2020"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"myang2020"},"content":" public InviteCommand(Index targetIndex) {","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"myang2020"},"content":" requireNonNull(targetIndex);","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"myang2020"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"myang2020"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"myang2020"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"myang2020"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"myang2020"},"content":" if (!model.isAnEventSelected()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"myang2020"},"content":" throw new CommandException(Messages.MESSAGE_SELECT_EVENT);","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"myang2020"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"myang2020"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"myang2020"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"myang2020"},"content":" Person personToInvite \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"myang2020"},"content":" if (model.isPersonInSelectedEvent(personToInvite)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"myang2020"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"myang2020"},"content":" model.addPersonToSelectedEvent(personToInvite);","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"myang2020"},"content":" return new CommandResult(String.format(MESSAGE_INVITE_PERSON_SUCCESS, personToInvite.getName()));","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"myang2020"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"myang2020"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"myang2020"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"myang2020"},"content":" return true;","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"myang2020"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"myang2020"},"content":" if (!(other instanceof InviteCommand)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"myang2020"},"content":" return false;","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"myang2020"},"content":" InviteCommand otherInviteCommand \u003d (InviteCommand) other;","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"myang2020"},"content":" return targetIndex.equals(otherInviteCommand.targetIndex);","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"myang2020"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"myang2020"},"content":" public String toString() {","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"myang2020"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"myang2020"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2024-03-17"},{"lineNumber":82,"author":{"gitId":"myang2020"},"content":" .toString();","lastModifiedDate":"2024-03-17"},{"lineNumber":83,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":84,"author":{"gitId":"myang2020"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"myang2020":84}},{"path":"src/main/java/seedu/address/logic/commands/SelectCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Apzure"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-15"},{"lineNumber":2,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":3,"author":{"gitId":"Apzure"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-15"},{"lineNumber":4,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":5,"author":{"gitId":"Apzure"},"content":"import java.util.List;","lastModifiedDate":"2024-03-15"},{"lineNumber":6,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":7,"author":{"gitId":"Apzure"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-15"},{"lineNumber":8,"author":{"gitId":"Apzure"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-15"},{"lineNumber":9,"author":{"gitId":"Apzure"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-15"},{"lineNumber":10,"author":{"gitId":"Apzure"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-15"},{"lineNumber":11,"author":{"gitId":"Apzure"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-15"},{"lineNumber":12,"author":{"gitId":"Apzure"},"content":"import seedu.address.model.event.Event;","lastModifiedDate":"2024-03-15"},{"lineNumber":13,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":14,"author":{"gitId":"Apzure"},"content":"/**","lastModifiedDate":"2024-03-15"},{"lineNumber":15,"author":{"gitId":"Apzure"},"content":" * Selects an event using its displayed index from the event list.","lastModifiedDate":"2024-03-15"},{"lineNumber":16,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":17,"author":{"gitId":"Apzure"},"content":"public class SelectCommand extends Command {","lastModifiedDate":"2024-03-15"},{"lineNumber":18,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":19,"author":{"gitId":"Apzure"},"content":" public static final String COMMAND_WORD \u003d \"sel\";","lastModifiedDate":"2024-03-15"},{"lineNumber":20,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":21,"author":{"gitId":"Apzure"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-15"},{"lineNumber":22,"author":{"gitId":"Apzure"},"content":" + \": Selects the event identified by the index number used in the displayed event list.\\n\"","lastModifiedDate":"2024-03-15"},{"lineNumber":23,"author":{"gitId":"Apzure"},"content":" + \"Parameters: INDEX (must be a positive integer)\\n\"","lastModifiedDate":"2024-03-15"},{"lineNumber":24,"author":{"gitId":"Apzure"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2024-03-15"},{"lineNumber":25,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":26,"author":{"gitId":"Apzure"},"content":" public static final String MESSAGE_SELECT_EVENT_SUCCESS \u003d \"Selected Event: %1$s\";","lastModifiedDate":"2024-03-15"},{"lineNumber":27,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":28,"author":{"gitId":"myang2020"},"content":" private final Index targetIndex;","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":30,"author":{"gitId":"myang2020"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"myang2020"},"content":" * Constructor of SelectCommand","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"myang2020"},"content":" *","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"myang2020"},"content":" * @param targetIndex Index of event user wants to select.","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"myang2020"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"Apzure"},"content":" public SelectCommand(Index targetIndex) {","lastModifiedDate":"2024-03-15"},{"lineNumber":36,"author":{"gitId":"myang2020"},"content":" requireNonNull(targetIndex);","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"Apzure"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2024-03-15"},{"lineNumber":38,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":39,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":40,"author":{"gitId":"Apzure"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":41,"author":{"gitId":"Apzure"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-15"},{"lineNumber":42,"author":{"gitId":"Apzure"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-15"},{"lineNumber":43,"author":{"gitId":"Apzure"},"content":" List\u003cEvent\u003e lastShownList \u003d model.getFilteredEventList();","lastModifiedDate":"2024-03-15"},{"lineNumber":44,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":45,"author":{"gitId":"Apzure"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-03-15"},{"lineNumber":46,"author":{"gitId":"Apzure"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_EVENT_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-15"},{"lineNumber":47,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":48,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":49,"author":{"gitId":"Apzure"},"content":" Event selectedEvent \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2024-03-15"},{"lineNumber":50,"author":{"gitId":"Apzure"},"content":" model.selectEvent(selectedEvent);","lastModifiedDate":"2024-03-15"},{"lineNumber":51,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":52,"author":{"gitId":"Apzure"},"content":" return new CommandResult(String.format(MESSAGE_SELECT_EVENT_SUCCESS, Messages.format(selectedEvent)));","lastModifiedDate":"2024-03-15"},{"lineNumber":53,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":54,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":55,"author":{"gitId":"Apzure"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":56,"author":{"gitId":"Apzure"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-15"},{"lineNumber":57,"author":{"gitId":"Apzure"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-15"},{"lineNumber":58,"author":{"gitId":"Apzure"},"content":" return true;","lastModifiedDate":"2024-03-15"},{"lineNumber":59,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":60,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":61,"author":{"gitId":"Apzure"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-15"},{"lineNumber":62,"author":{"gitId":"Apzure"},"content":" if (!(other instanceof SelectCommand)) {","lastModifiedDate":"2024-03-15"},{"lineNumber":63,"author":{"gitId":"Apzure"},"content":" return false;","lastModifiedDate":"2024-03-15"},{"lineNumber":64,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":65,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":66,"author":{"gitId":"Apzure"},"content":" SelectCommand otherSelectCommand \u003d (SelectCommand) other;","lastModifiedDate":"2024-03-15"},{"lineNumber":67,"author":{"gitId":"Apzure"},"content":" return targetIndex.equals(otherSelectCommand.targetIndex);","lastModifiedDate":"2024-03-15"},{"lineNumber":68,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":69,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":70,"author":{"gitId":"Apzure"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":71,"author":{"gitId":"Apzure"},"content":" public String toString() {","lastModifiedDate":"2024-03-15"},{"lineNumber":72,"author":{"gitId":"Apzure"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-15"},{"lineNumber":73,"author":{"gitId":"Apzure"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2024-03-15"},{"lineNumber":74,"author":{"gitId":"Apzure"},"content":" .toString();","lastModifiedDate":"2024-03-15"},{"lineNumber":75,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":76,"author":{"gitId":"Apzure"},"content":"}","lastModifiedDate":"2024-03-15"}],"authorContributionMap":{"Apzure":69,"myang2020":7}},{"path":"src/main/java/seedu/address/logic/parser/AddEventCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Apzure"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-02"},{"lineNumber":2,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":3,"author":{"gitId":"Apzure"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-02"},{"lineNumber":4,"author":{"gitId":"Apzure"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EVENT_NAME;","lastModifiedDate":"2024-03-02"},{"lineNumber":5,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":6,"author":{"gitId":"Apzure"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-03-02"},{"lineNumber":7,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":8,"author":{"gitId":"Apzure"},"content":"import seedu.address.logic.commands.AddEventCommand;","lastModifiedDate":"2024-03-10"},{"lineNumber":9,"author":{"gitId":"Apzure"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-02"},{"lineNumber":10,"author":{"gitId":"Apzure"},"content":"import seedu.address.model.event.Event;","lastModifiedDate":"2024-03-02"},{"lineNumber":11,"author":{"gitId":"Apzure"},"content":"import seedu.address.model.event.EventName;","lastModifiedDate":"2024-03-02"},{"lineNumber":12,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":13,"author":{"gitId":"Apzure"},"content":"/**","lastModifiedDate":"2024-03-10"},{"lineNumber":14,"author":{"gitId":"Apzure"},"content":" * Parses input arguments and creates a new AddEventCommand object","lastModifiedDate":"2024-03-10"},{"lineNumber":15,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-10"},{"lineNumber":16,"author":{"gitId":"Apzure"},"content":"public class AddEventCommandParser implements Parser\u003cAddEventCommand\u003e {","lastModifiedDate":"2024-03-10"},{"lineNumber":17,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":18,"author":{"gitId":"Apzure"},"content":" /**","lastModifiedDate":"2024-03-02"},{"lineNumber":19,"author":{"gitId":"Apzure"},"content":" * Parses the given {@code String} of arguments in the context of the CreateEventCommand","lastModifiedDate":"2024-03-02"},{"lineNumber":20,"author":{"gitId":"Apzure"},"content":" * and returns an CreateEventComand object for execution.","lastModifiedDate":"2024-03-02"},{"lineNumber":21,"author":{"gitId":"Apzure"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-02"},{"lineNumber":22,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-02"},{"lineNumber":23,"author":{"gitId":"Apzure"},"content":" public AddEventCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-10"},{"lineNumber":24,"author":{"gitId":"Apzure"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-03-02"},{"lineNumber":25,"author":{"gitId":"Apzure"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_EVENT_NAME);","lastModifiedDate":"2024-03-02"},{"lineNumber":26,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":27,"author":{"gitId":"Apzure"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_EVENT_NAME)","lastModifiedDate":"2024-03-02"},{"lineNumber":28,"author":{"gitId":"Apzure"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-03-02"},{"lineNumber":29,"author":{"gitId":"Apzure"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddEventCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-10"},{"lineNumber":30,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":31,"author":{"gitId":"Apzure"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_EVENT_NAME);","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"Apzure"},"content":" EventName eventName \u003d ParserUtil.parseEventName(argMultimap.getValue(PREFIX_EVENT_NAME).get());","lastModifiedDate":"2024-03-02"},{"lineNumber":33,"author":{"gitId":"Apzure"},"content":" Event event \u003d new Event(eventName);","lastModifiedDate":"2024-03-02"},{"lineNumber":34,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":35,"author":{"gitId":"Apzure"},"content":" return new AddEventCommand(event);","lastModifiedDate":"2024-03-10"},{"lineNumber":36,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":37,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":38,"author":{"gitId":"Apzure"},"content":" /**","lastModifiedDate":"2024-03-02"},{"lineNumber":39,"author":{"gitId":"Apzure"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2024-03-02"},{"lineNumber":40,"author":{"gitId":"Apzure"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2024-03-02"},{"lineNumber":41,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-02"},{"lineNumber":42,"author":{"gitId":"Apzure"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-03-02"},{"lineNumber":43,"author":{"gitId":"Apzure"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-03-02"},{"lineNumber":44,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":45,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":46,"author":{"gitId":"Apzure"},"content":"}","lastModifiedDate":"2024-03-02"}],"authorContributionMap":{"Apzure":46}},{"path":"src/main/java/seedu/address/logic/parser/AddressBookParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-07-29"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-07-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":12,"author":{"gitId":"Apzure"},"content":"import seedu.address.logic.commands.AddEventCommand;","lastModifiedDate":"2024-03-10"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2017-01-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":16,"author":{"gitId":"taeewonnn"},"content":"import seedu.address.logic.commands.DeleteEventCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"ChocoRagdoll"},"content":"import seedu.address.logic.commands.DeletePersonCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"myang2020"},"content":"import seedu.address.logic.commands.DeselectCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":23,"author":{"gitId":"myang2020"},"content":"import seedu.address.logic.commands.InviteCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":25,"author":{"gitId":"Apzure"},"content":"import seedu.address.logic.commands.SelectCommand;","lastModifiedDate":"2024-03-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":28,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":48,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // Note to developers: Change the log level in config.json to enable lower level (i.e., FINE, FINER and lower)","lastModifiedDate":"2023-07-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29"},{"lineNumber":59,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":69,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":72,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":78,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":79,"author":{"gitId":"-"},"content":" return new ListCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24"},{"lineNumber":82,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":84,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26"},{"lineNumber":85,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":87,"author":{"gitId":"Apzure"},"content":" case AddEventCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-10"},{"lineNumber":88,"author":{"gitId":"Apzure"},"content":" return new AddEventCommandParser().parse(arguments);","lastModifiedDate":"2024-03-10"},{"lineNumber":89,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":90,"author":{"gitId":"Apzure"},"content":" case SelectCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-15"},{"lineNumber":91,"author":{"gitId":"Apzure"},"content":" return new SelectCommandParser().parse(arguments);","lastModifiedDate":"2024-03-15"},{"lineNumber":92,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":93,"author":{"gitId":"myang2020"},"content":" case DeselectCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-16"},{"lineNumber":94,"author":{"gitId":"myang2020"},"content":" return new DeselectCommand();","lastModifiedDate":"2024-03-16"},{"lineNumber":95,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":96,"author":{"gitId":"myang2020"},"content":" case InviteCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-17"},{"lineNumber":97,"author":{"gitId":"myang2020"},"content":" return new InviteCommandParser().parse(arguments);","lastModifiedDate":"2024-03-17"},{"lineNumber":98,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":99,"author":{"gitId":"ChocoRagdoll"},"content":" case DeletePersonCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-20"},{"lineNumber":100,"author":{"gitId":"ChocoRagdoll"},"content":" return new DeletePersonCommandParser().parse(arguments);","lastModifiedDate":"2024-03-20"},{"lineNumber":101,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":102,"author":{"gitId":"taeewonnn"},"content":" case DeleteEventCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-18"},{"lineNumber":103,"author":{"gitId":"taeewonnn"},"content":" return new DeleteEventCommandParser().parse(arguments);","lastModifiedDate":"2024-03-18"},{"lineNumber":104,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":105,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26"},{"lineNumber":106,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29"},{"lineNumber":107,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":111,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"Apzure":8,"ChocoRagdoll":4,"-":86,"taeewonnn":4,"myang2020":9}},{"path":"src/main/java/seedu/address/logic/parser/CliSyntax.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11"},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":" /* Prefix definitions */","lastModifiedDate":"2017-02-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"n/\");","lastModifiedDate":"2017-06-06"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"p/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"e/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_ADDRESS \u003d new Prefix(\"a/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"t/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":14,"author":{"gitId":"taeewonnn"},"content":" public static final Prefix PREFIX_EVENT_NAME \u003d new Prefix(\"ev/\");","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"-":15,"taeewonnn":1}},{"path":"src/main/java/seedu/address/logic/parser/DeleteEventCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"taeewonnn"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"taeewonnn"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"taeewonnn"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"taeewonnn"},"content":"import seedu.address.logic.commands.DeleteEventCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"taeewonnn"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"taeewonnn"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"taeewonnn"},"content":" * Parses input arguments and creates a new DeleteEventCommand object","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"taeewonnn"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"taeewonnn"},"content":"public class DeleteEventCommandParser implements Parser\u003cDeleteEventCommand\u003e {","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"taeewonnn"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"taeewonnn"},"content":" * Parses the given {@code String} of arguments in the context of the DeleteEventCommand","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"taeewonnn"},"content":" * and returns a DeleteEventCommand object for execution.","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"taeewonnn"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"taeewonnn"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"taeewonnn"},"content":" public DeleteEventCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"taeewonnn"},"content":" try {","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"taeewonnn"},"content":" Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"taeewonnn"},"content":" return new DeleteEventCommand(index);","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"taeewonnn"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"taeewonnn"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"taeewonnn"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteEventCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"taeewonnn"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"taeewonnn":29}},{"path":"src/main/java/seedu/address/logic/parser/DeletePersonCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ChocoRagdoll"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"ChocoRagdoll"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"ChocoRagdoll"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"ChocoRagdoll"},"content":"import seedu.address.logic.commands.DeletePersonCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"ChocoRagdoll"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"ChocoRagdoll"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"ChocoRagdoll"},"content":" * Parses input arguments and creates a new DeletePersonCommand object","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"ChocoRagdoll"},"content":"public class DeletePersonCommandParser implements Parser\u003cDeletePersonCommand\u003e {","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"ChocoRagdoll"},"content":" * Parses the given {@code String} of arguments in the context of the DeletePersonCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"ChocoRagdoll"},"content":" * and returns a DeletePersonCommand object for execution.","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"ChocoRagdoll"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"ChocoRagdoll"},"content":" public DeletePersonCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"ChocoRagdoll"},"content":" try {","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"ChocoRagdoll"},"content":" Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"ChocoRagdoll"},"content":" return new DeletePersonCommand(index);","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"ChocoRagdoll"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"ChocoRagdoll"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"ChocoRagdoll"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeletePersonCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"ChocoRagdoll"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"ChocoRagdoll":28}},{"path":"src/main/java/seedu/address/logic/parser/InviteCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"myang2020"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"myang2020"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"myang2020"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"myang2020"},"content":"import seedu.address.logic.commands.InviteCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"myang2020"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"myang2020"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"myang2020"},"content":" * Parses input arguments and creates a new InviteCommand object","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"myang2020"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"myang2020"},"content":"public class InviteCommandParser implements Parser\u003cInviteCommand\u003e {","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"myang2020"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"myang2020"},"content":" * Parses the given {@code String} of arguments in the context of the InviteCommand","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"myang2020"},"content":" * and returns an InviteCommand object for execution.","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"myang2020"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"myang2020"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"myang2020"},"content":" public InviteCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"myang2020"},"content":" try {","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"myang2020"},"content":" Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"myang2020"},"content":" return new InviteCommand(index);","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"myang2020"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"myang2020"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"myang2020"},"content":" String.format(Messages.MESSAGE_INVALID_COMMAND_FORMAT, InviteCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"myang2020"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"myang2020":28}},{"path":"src/main/java/seedu/address/logic/parser/ParserUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-02-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-02-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-02-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-02-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10"},{"lineNumber":12,"author":{"gitId":"Apzure"},"content":"import seedu.address.model.event.EventName;","lastModifiedDate":"2024-03-02"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-02-11"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-02-11"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-02-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-02-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-02-11"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02"},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2017-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":32,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02"},{"lineNumber":34,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":36,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29"},{"lineNumber":42,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":46,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29"},{"lineNumber":47,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29"},{"lineNumber":48,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":49,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":57,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":61,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30"},{"lineNumber":62,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":63,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":64,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","lastModifiedDate":"2017-05-30"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":69,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30"},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":72,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":76,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-30"},{"lineNumber":77,"author":{"gitId":"-"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":78,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(trimmedAddress)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":79,"author":{"gitId":"-"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":81,"author":{"gitId":"-"},"content":" return new Address(trimmedAddress);","lastModifiedDate":"2017-05-30"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":84,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":87,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":89,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":90,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":91,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30"},{"lineNumber":92,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":93,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":94,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":96,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","lastModifiedDate":"2017-05-30"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":99,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":102,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":105,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":106,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30"},{"lineNumber":107,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":108,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":109,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":111,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","lastModifiedDate":"2017-05-30"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":114,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":115,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2017-03-07"},{"lineNumber":116,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":117,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":118,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15"},{"lineNumber":119,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11"},{"lineNumber":120,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11"},{"lineNumber":121,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":123,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":125,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":126,"author":{"gitId":"Apzure"},"content":" /**","lastModifiedDate":"2024-03-10"},{"lineNumber":127,"author":{"gitId":"Apzure"},"content":" * Parses {@code String eventName} into a {@code EventName}.","lastModifiedDate":"2024-03-10"},{"lineNumber":128,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-10"},{"lineNumber":129,"author":{"gitId":"Apzure"},"content":" public static EventName parseEventName(String eventName) {","lastModifiedDate":"2024-03-02"},{"lineNumber":130,"author":{"gitId":"Apzure"},"content":" requireNonNull(eventName);","lastModifiedDate":"2024-03-02"},{"lineNumber":131,"author":{"gitId":"Apzure"},"content":" String trimmedEventName \u003d eventName.trim();","lastModifiedDate":"2024-03-02"},{"lineNumber":132,"author":{"gitId":"Apzure"},"content":" // Currently all event names are valid","lastModifiedDate":"2024-03-02"},{"lineNumber":133,"author":{"gitId":"Apzure"},"content":" return new EventName(trimmedEventName);","lastModifiedDate":"2024-03-02"},{"lineNumber":134,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":135,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":136,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"Apzure":12,"-":124}},{"path":"src/main/java/seedu/address/logic/parser/SelectCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Apzure"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-15"},{"lineNumber":2,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":3,"author":{"gitId":"Apzure"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-15"},{"lineNumber":4,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":5,"author":{"gitId":"Apzure"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-15"},{"lineNumber":6,"author":{"gitId":"Apzure"},"content":"import seedu.address.logic.commands.SelectCommand;","lastModifiedDate":"2024-03-15"},{"lineNumber":7,"author":{"gitId":"Apzure"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-15"},{"lineNumber":8,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":9,"author":{"gitId":"Apzure"},"content":"/**","lastModifiedDate":"2024-03-15"},{"lineNumber":10,"author":{"gitId":"Apzure"},"content":" * Parses input arguments and creates a new SelectCommand object","lastModifiedDate":"2024-03-15"},{"lineNumber":11,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":12,"author":{"gitId":"Apzure"},"content":"public class SelectCommandParser implements Parser\u003cSelectCommand\u003e {","lastModifiedDate":"2024-03-15"},{"lineNumber":13,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":14,"author":{"gitId":"Apzure"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":15,"author":{"gitId":"Apzure"},"content":" * Parses the given {@code String} of arguments in the context of the SelectCommand","lastModifiedDate":"2024-03-15"},{"lineNumber":16,"author":{"gitId":"Apzure"},"content":" * and returns a SelectCommand object for execution.","lastModifiedDate":"2024-03-15"},{"lineNumber":17,"author":{"gitId":"Apzure"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-15"},{"lineNumber":18,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":19,"author":{"gitId":"Apzure"},"content":" public SelectCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-15"},{"lineNumber":20,"author":{"gitId":"Apzure"},"content":" try {","lastModifiedDate":"2024-03-15"},{"lineNumber":21,"author":{"gitId":"Apzure"},"content":" Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2024-03-15"},{"lineNumber":22,"author":{"gitId":"Apzure"},"content":" return new SelectCommand(index);","lastModifiedDate":"2024-03-15"},{"lineNumber":23,"author":{"gitId":"Apzure"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-15"},{"lineNumber":24,"author":{"gitId":"Apzure"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-15"},{"lineNumber":25,"author":{"gitId":"Apzure"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, SelectCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-03-15"},{"lineNumber":26,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":27,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":28,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":29,"author":{"gitId":"Apzure"},"content":"}","lastModifiedDate":"2024-03-15"}],"authorContributionMap":{"Apzure":29}},{"path":"src/main/java/seedu/address/model/EventBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Apzure"},"content":"package seedu.address.model;","lastModifiedDate":"2024-03-01"},{"lineNumber":2,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":3,"author":{"gitId":"Apzure"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-01"},{"lineNumber":4,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":5,"author":{"gitId":"myang2020"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"Apzure"},"content":"import java.util.List;","lastModifiedDate":"2024-03-01"},{"lineNumber":7,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":8,"author":{"gitId":"Apzure"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-01"},{"lineNumber":9,"author":{"gitId":"Apzure"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-01"},{"lineNumber":10,"author":{"gitId":"Apzure"},"content":"import seedu.address.model.event.Event;","lastModifiedDate":"2024-03-01"},{"lineNumber":11,"author":{"gitId":"Apzure"},"content":"import seedu.address.model.event.UniqueEventList;","lastModifiedDate":"2024-03-01"},{"lineNumber":12,"author":{"gitId":"Apzure"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-15"},{"lineNumber":13,"author":{"gitId":"Apzure"},"content":"import seedu.address.model.person.UniquePersonList;","lastModifiedDate":"2024-03-15"},{"lineNumber":14,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":15,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":16,"author":{"gitId":"Apzure"},"content":"/**","lastModifiedDate":"2024-03-01"},{"lineNumber":17,"author":{"gitId":"Apzure"},"content":" * Wraps all data at the event-book level.","lastModifiedDate":"2024-03-01"},{"lineNumber":18,"author":{"gitId":"Apzure"},"content":" * Duplicates are not allowed (by .isSameEvent comparison).","lastModifiedDate":"2024-03-01"},{"lineNumber":19,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-01"},{"lineNumber":20,"author":{"gitId":"Apzure"},"content":"public class EventBook implements ReadOnlyEventBook {","lastModifiedDate":"2024-03-01"},{"lineNumber":21,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":22,"author":{"gitId":"Apzure"},"content":" private final UniqueEventList events;","lastModifiedDate":"2024-03-01"},{"lineNumber":23,"author":{"gitId":"Apzure"},"content":" private final UniquePersonList personsOfSelectedEvent;","lastModifiedDate":"2024-03-15"},{"lineNumber":24,"author":{"gitId":"Apzure"},"content":" private Event selectedEvent;","lastModifiedDate":"2024-03-15"},{"lineNumber":25,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":26,"author":{"gitId":"Apzure"},"content":" // Non-static initialization block","lastModifiedDate":"2024-03-01"},{"lineNumber":27,"author":{"gitId":"Apzure"},"content":" {","lastModifiedDate":"2024-03-01"},{"lineNumber":28,"author":{"gitId":"Apzure"},"content":" events \u003d new UniqueEventList();","lastModifiedDate":"2024-03-01"},{"lineNumber":29,"author":{"gitId":"Apzure"},"content":" personsOfSelectedEvent \u003d new UniquePersonList();","lastModifiedDate":"2024-03-15"},{"lineNumber":30,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":31,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":32,"author":{"gitId":"Apzure"},"content":" /**","lastModifiedDate":"2024-03-10"},{"lineNumber":33,"author":{"gitId":"Apzure"},"content":" * Creates an EventBook","lastModifiedDate":"2024-03-10"},{"lineNumber":34,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-10"},{"lineNumber":35,"author":{"gitId":"Apzure"},"content":" public EventBook() {","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":38,"author":{"gitId":"Apzure"},"content":" /**","lastModifiedDate":"2024-03-01"},{"lineNumber":39,"author":{"gitId":"Apzure"},"content":" * Creates an EventBook using the Events in the {@code toBeCopied}.","lastModifiedDate":"2024-03-01"},{"lineNumber":40,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-01"},{"lineNumber":41,"author":{"gitId":"Apzure"},"content":" public EventBook(ReadOnlyEventBook toBeCopied) {","lastModifiedDate":"2024-03-01"},{"lineNumber":42,"author":{"gitId":"Apzure"},"content":" this();","lastModifiedDate":"2024-03-01"},{"lineNumber":43,"author":{"gitId":"Apzure"},"content":" resetData(toBeCopied);","lastModifiedDate":"2024-03-01"},{"lineNumber":44,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":45,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":46,"author":{"gitId":"taeewonnn"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"taeewonnn"},"content":" * Returns true if the selected event with the same identity as {@code event} exists in the event book.","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"taeewonnn"},"content":" *","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"taeewonnn"},"content":" * @param event","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"taeewonnn"},"content":" * @return","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"taeewonnn"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"taeewonnn"},"content":" public boolean isSameSelectedEvent(Event event) {","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"taeewonnn"},"content":" requireNonNull(event);","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"taeewonnn"},"content":" return event.equals(selectedEvent);","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"Apzure"},"content":" // List overwrite operations","lastModifiedDate":"2024-03-01"},{"lineNumber":58,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":59,"author":{"gitId":"Apzure"},"content":" /**","lastModifiedDate":"2024-03-01"},{"lineNumber":60,"author":{"gitId":"Apzure"},"content":" * Replaces the contents of the event list with {@code events}.","lastModifiedDate":"2024-03-01"},{"lineNumber":61,"author":{"gitId":"Apzure"},"content":" * {@code events} must not contain duplicate events.","lastModifiedDate":"2024-03-01"},{"lineNumber":62,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-01"},{"lineNumber":63,"author":{"gitId":"Apzure"},"content":" public void setEvents(List\u003cEvent\u003e events) {","lastModifiedDate":"2024-03-01"},{"lineNumber":64,"author":{"gitId":"Apzure"},"content":" this.events.setEvents(events);","lastModifiedDate":"2024-03-01"},{"lineNumber":65,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":66,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":67,"author":{"gitId":"Apzure"},"content":" /**","lastModifiedDate":"2024-03-01"},{"lineNumber":68,"author":{"gitId":"Apzure"},"content":" * Resets the existing data of this {@code EventBook} with {@code newData}.","lastModifiedDate":"2024-03-01"},{"lineNumber":69,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-01"},{"lineNumber":70,"author":{"gitId":"Apzure"},"content":" public void resetData(ReadOnlyEventBook newData) {","lastModifiedDate":"2024-03-01"},{"lineNumber":71,"author":{"gitId":"Apzure"},"content":" requireNonNull(newData);","lastModifiedDate":"2024-03-01"},{"lineNumber":72,"author":{"gitId":"Apzure"},"content":" setEvents(newData.getEventList());","lastModifiedDate":"2024-03-01"},{"lineNumber":73,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":74,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":75,"author":{"gitId":"Apzure"},"content":" // Event-level operations","lastModifiedDate":"2024-03-01"},{"lineNumber":76,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":77,"author":{"gitId":"Apzure"},"content":" /**","lastModifiedDate":"2024-03-01"},{"lineNumber":78,"author":{"gitId":"Apzure"},"content":" * Returns true if an event with the same identity as {@code event} exists in the event book.","lastModifiedDate":"2024-03-01"},{"lineNumber":79,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-01"},{"lineNumber":80,"author":{"gitId":"Apzure"},"content":" public boolean hasEvent(Event event) {","lastModifiedDate":"2024-03-01"},{"lineNumber":81,"author":{"gitId":"Apzure"},"content":" requireNonNull(event);","lastModifiedDate":"2024-03-01"},{"lineNumber":82,"author":{"gitId":"Apzure"},"content":" return events.contains(event);","lastModifiedDate":"2024-03-01"},{"lineNumber":83,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":84,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":85,"author":{"gitId":"Apzure"},"content":" /**","lastModifiedDate":"2024-03-01"},{"lineNumber":86,"author":{"gitId":"Apzure"},"content":" * Adds an event to the event book.","lastModifiedDate":"2024-03-01"},{"lineNumber":87,"author":{"gitId":"Apzure"},"content":" * The event must not already exist in the event book.","lastModifiedDate":"2024-03-01"},{"lineNumber":88,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-01"},{"lineNumber":89,"author":{"gitId":"Apzure"},"content":" public void addEvent(Event event) {","lastModifiedDate":"2024-03-01"},{"lineNumber":90,"author":{"gitId":"Apzure"},"content":" events.add(event);","lastModifiedDate":"2024-03-01"},{"lineNumber":91,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":92,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":93,"author":{"gitId":"Apzure"},"content":" /**","lastModifiedDate":"2024-03-01"},{"lineNumber":94,"author":{"gitId":"Apzure"},"content":" * Replaces the given event {@code target} in the list with {@code editedEvent}.","lastModifiedDate":"2024-03-01"},{"lineNumber":95,"author":{"gitId":"Apzure"},"content":" * {@code target} must exist in the event book.","lastModifiedDate":"2024-03-01"},{"lineNumber":96,"author":{"gitId":"Apzure"},"content":" * The event identity of {@code editedEvent} must not be the same as another existing event in the event book.","lastModifiedDate":"2024-03-01"},{"lineNumber":97,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-01"},{"lineNumber":98,"author":{"gitId":"Apzure"},"content":" public void setEvent(Event target, Event editedEvent) {","lastModifiedDate":"2024-03-01"},{"lineNumber":99,"author":{"gitId":"Apzure"},"content":" requireNonNull(editedEvent);","lastModifiedDate":"2024-03-01"},{"lineNumber":100,"author":{"gitId":"Apzure"},"content":" events.setEvent(target, editedEvent);","lastModifiedDate":"2024-03-01"},{"lineNumber":101,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":102,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":103,"author":{"gitId":"Apzure"},"content":" /**","lastModifiedDate":"2024-03-01"},{"lineNumber":104,"author":{"gitId":"Apzure"},"content":" * Removes {@code key} from this {@code EventBook}.","lastModifiedDate":"2024-03-01"},{"lineNumber":105,"author":{"gitId":"Apzure"},"content":" * {@code key} must exist in the event book.","lastModifiedDate":"2024-03-01"},{"lineNumber":106,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-01"},{"lineNumber":107,"author":{"gitId":"Apzure"},"content":" public void removeEvent(Event key) {","lastModifiedDate":"2024-03-01"},{"lineNumber":108,"author":{"gitId":"Apzure"},"content":" events.remove(key);","lastModifiedDate":"2024-03-01"},{"lineNumber":109,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":110,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":111,"author":{"gitId":"Apzure"},"content":" // Select Event Methods","lastModifiedDate":"2024-03-15"},{"lineNumber":112,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":113,"author":{"gitId":"myang2020"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":114,"author":{"gitId":"myang2020"},"content":" * Checks if an event is currently selected.","lastModifiedDate":"2024-03-17"},{"lineNumber":115,"author":{"gitId":"myang2020"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":116,"author":{"gitId":"myang2020"},"content":" * @return true if an event is selected, false otherwise","lastModifiedDate":"2024-03-17"},{"lineNumber":117,"author":{"gitId":"myang2020"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":118,"author":{"gitId":"myang2020"},"content":" public boolean isAnEventSelected() {","lastModifiedDate":"2024-03-17"},{"lineNumber":119,"author":{"gitId":"myang2020"},"content":" return selectedEvent !\u003d null;","lastModifiedDate":"2024-03-17"},{"lineNumber":120,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":121,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":122,"author":{"gitId":"Apzure"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":123,"author":{"gitId":"Apzure"},"content":" * Selects the given event {@code event} from this {@code EventBook}","lastModifiedDate":"2024-03-15"},{"lineNumber":124,"author":{"gitId":"Apzure"},"content":" * @param event must exist in the event book","lastModifiedDate":"2024-03-15"},{"lineNumber":125,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":126,"author":{"gitId":"Apzure"},"content":" public void selectEvent(Event event) {","lastModifiedDate":"2024-03-15"},{"lineNumber":127,"author":{"gitId":"Apzure"},"content":" selectedEvent \u003d event;","lastModifiedDate":"2024-03-15"},{"lineNumber":128,"author":{"gitId":"Apzure"},"content":" personsOfSelectedEvent.setPersons(event.getPersonList());","lastModifiedDate":"2024-03-15"},{"lineNumber":129,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":130,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":131,"author":{"gitId":"myang2020"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":132,"author":{"gitId":"myang2020"},"content":" * Deselects event.","lastModifiedDate":"2024-03-16"},{"lineNumber":133,"author":{"gitId":"myang2020"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":134,"author":{"gitId":"myang2020"},"content":" public void deselectEvent() {","lastModifiedDate":"2024-03-16"},{"lineNumber":135,"author":{"gitId":"myang2020"},"content":" selectedEvent \u003d null;","lastModifiedDate":"2024-03-16"},{"lineNumber":136,"author":{"gitId":"myang2020"},"content":" personsOfSelectedEvent.setPersons(new ArrayList\u003c\u003e());","lastModifiedDate":"2024-03-16"},{"lineNumber":137,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":138,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":139,"author":{"gitId":"myang2020"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":140,"author":{"gitId":"myang2020"},"content":" * Checks if a person is part of the selected event.","lastModifiedDate":"2024-03-17"},{"lineNumber":141,"author":{"gitId":"myang2020"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":142,"author":{"gitId":"myang2020"},"content":" * @param person The person to check.","lastModifiedDate":"2024-03-17"},{"lineNumber":143,"author":{"gitId":"myang2020"},"content":" * @return {@code true} if the person is part of the selected event, {@code false} otherwise.","lastModifiedDate":"2024-03-17"},{"lineNumber":144,"author":{"gitId":"myang2020"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":145,"author":{"gitId":"myang2020"},"content":" public boolean isPersonInSelectedEvent(Person person) {","lastModifiedDate":"2024-03-17"},{"lineNumber":146,"author":{"gitId":"myang2020"},"content":" if (!isAnEventSelected()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":147,"author":{"gitId":"myang2020"},"content":" return false;","lastModifiedDate":"2024-03-17"},{"lineNumber":148,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":149,"author":{"gitId":"myang2020"},"content":" return selectedEvent.hasPerson(person);","lastModifiedDate":"2024-03-17"},{"lineNumber":150,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":151,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":152,"author":{"gitId":"myang2020"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":153,"author":{"gitId":"myang2020"},"content":" * Adds a person to the selected event if an event is currently selected.","lastModifiedDate":"2024-03-17"},{"lineNumber":154,"author":{"gitId":"myang2020"},"content":" * If no event is selected, the person will not be added.","lastModifiedDate":"2024-03-17"},{"lineNumber":155,"author":{"gitId":"myang2020"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":156,"author":{"gitId":"myang2020"},"content":" * @param person The person to be added to the selected event.","lastModifiedDate":"2024-03-17"},{"lineNumber":157,"author":{"gitId":"myang2020"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":158,"author":{"gitId":"myang2020"},"content":" public void addPersonToSelectedEvent(Person person) {","lastModifiedDate":"2024-03-17"},{"lineNumber":159,"author":{"gitId":"myang2020"},"content":" if (isAnEventSelected()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":160,"author":{"gitId":"myang2020"},"content":" selectedEvent.addPerson(person);","lastModifiedDate":"2024-03-17"},{"lineNumber":161,"author":{"gitId":"ChocoRagdoll"},"content":" personsOfSelectedEvent.add(person);","lastModifiedDate":"2024-03-20"},{"lineNumber":162,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":163,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":164,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":165,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":166,"author":{"gitId":"ChocoRagdoll"},"content":" * Deletes a person from the selected event if an event is currently selected.","lastModifiedDate":"2024-03-20"},{"lineNumber":167,"author":{"gitId":"ChocoRagdoll"},"content":" * If no event is selected, the person will not be deleted.","lastModifiedDate":"2024-03-20"},{"lineNumber":168,"author":{"gitId":"ChocoRagdoll"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":169,"author":{"gitId":"ChocoRagdoll"},"content":" * @param person The person to be added to the selected event.","lastModifiedDate":"2024-03-20"},{"lineNumber":170,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":171,"author":{"gitId":"ChocoRagdoll"},"content":" public void deletePersonFromSelectedEvent(Person person) {","lastModifiedDate":"2024-03-20"},{"lineNumber":172,"author":{"gitId":"ChocoRagdoll"},"content":" if (isAnEventSelected()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":173,"author":{"gitId":"ChocoRagdoll"},"content":" selectedEvent.deletePerson(person);","lastModifiedDate":"2024-03-20"},{"lineNumber":174,"author":{"gitId":"ChocoRagdoll"},"content":" personsOfSelectedEvent.remove(person);","lastModifiedDate":"2024-03-20"},{"lineNumber":175,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":176,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":177,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":178,"author":{"gitId":"Apzure"},"content":" // Util methods","lastModifiedDate":"2024-03-01"},{"lineNumber":179,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":180,"author":{"gitId":"Apzure"},"content":" @Override","lastModifiedDate":"2024-03-01"},{"lineNumber":181,"author":{"gitId":"Apzure"},"content":" public String toString() {","lastModifiedDate":"2024-03-01"},{"lineNumber":182,"author":{"gitId":"Apzure"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-01"},{"lineNumber":183,"author":{"gitId":"Apzure"},"content":" .add(\"events\", events)","lastModifiedDate":"2024-03-01"},{"lineNumber":184,"author":{"gitId":"Apzure"},"content":" .toString();","lastModifiedDate":"2024-03-01"},{"lineNumber":185,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":186,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":187,"author":{"gitId":"Apzure"},"content":" @Override","lastModifiedDate":"2024-03-01"},{"lineNumber":188,"author":{"gitId":"Apzure"},"content":" public ObservableList\u003cEvent\u003e getEventList() {","lastModifiedDate":"2024-03-01"},{"lineNumber":189,"author":{"gitId":"Apzure"},"content":" return events.asUnmodifiableObservableList();","lastModifiedDate":"2024-03-01"},{"lineNumber":190,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":191,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":192,"author":{"gitId":"Apzure"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":193,"author":{"gitId":"Apzure"},"content":" public ObservableList\u003cPerson\u003e getPersonsOfSelectedEventList() {","lastModifiedDate":"2024-03-15"},{"lineNumber":194,"author":{"gitId":"Apzure"},"content":" return personsOfSelectedEvent.asUnmodifiableObservableList();","lastModifiedDate":"2024-03-15"},{"lineNumber":195,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":196,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":197,"author":{"gitId":"Apzure"},"content":" @Override","lastModifiedDate":"2024-03-01"},{"lineNumber":198,"author":{"gitId":"Apzure"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-01"},{"lineNumber":199,"author":{"gitId":"Apzure"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-01"},{"lineNumber":200,"author":{"gitId":"Apzure"},"content":" return true;","lastModifiedDate":"2024-03-01"},{"lineNumber":201,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":202,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":203,"author":{"gitId":"Apzure"},"content":" if (!(other instanceof EventBook)) {","lastModifiedDate":"2024-03-01"},{"lineNumber":204,"author":{"gitId":"Apzure"},"content":" return false;","lastModifiedDate":"2024-03-01"},{"lineNumber":205,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":206,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":207,"author":{"gitId":"Apzure"},"content":" EventBook otherEventBook \u003d (EventBook) other;","lastModifiedDate":"2024-03-01"},{"lineNumber":208,"author":{"gitId":"Apzure"},"content":" return events.equals(otherEventBook.events);","lastModifiedDate":"2024-03-01"},{"lineNumber":209,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":210,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":211,"author":{"gitId":"Apzure"},"content":" @Override","lastModifiedDate":"2024-03-01"},{"lineNumber":212,"author":{"gitId":"Apzure"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-01"},{"lineNumber":213,"author":{"gitId":"Apzure"},"content":" return events.hashCode();","lastModifiedDate":"2024-03-01"},{"lineNumber":214,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":215,"author":{"gitId":"Apzure"},"content":"}","lastModifiedDate":"2024-03-01"}],"authorContributionMap":{"Apzure":147,"ChocoRagdoll":14,"taeewonnn":11,"myang2020":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"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":8,"author":{"gitId":"Apzure"},"content":"import seedu.address.model.event.Event;","lastModifiedDate":"2024-03-01"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * The API of the Model component.","lastModifiedDate":"2016-09-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public interface Model {","lastModifiedDate":"2016-09-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":" /** {@code Predicate} that always evaluate to true */","lastModifiedDate":"2017-08-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":" Predicate\u003cPerson\u003e PREDICATE_SHOW_ALL_PERSONS \u003d unused -\u003e true;","lastModifiedDate":"2018-01-10"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Replaces user prefs data with the data in {@code userPrefs}.","lastModifiedDate":"2018-12-06"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":" void setUserPrefs(ReadOnlyUserPrefs userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Returns the user prefs.","lastModifiedDate":"2018-11-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" ReadOnlyUserPrefs getUserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" void setAddressBookFilePath(Path addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Replaces address book data with the data in {@code addressBook}.","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" void setAddressBook(ReadOnlyAddressBook addressBook);","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":" /** Returns the AddressBook */","lastModifiedDate":"2016-09-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2016-09-25"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Returns true if a person with the same identity as {@code person} exists in the address book.","lastModifiedDate":"2018-08-06"},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":59,"author":{"gitId":"-"},"content":" boolean hasPerson(Person person);","lastModifiedDate":"2018-08-06"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Deletes the given person.","lastModifiedDate":"2018-08-07"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * The person must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":65,"author":{"gitId":"-"},"content":" void deletePerson(Person target);","lastModifiedDate":"2018-08-07"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":67,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":68,"author":{"gitId":"-"},"content":" * Adds the given person.","lastModifiedDate":"2018-08-07"},{"lineNumber":69,"author":{"gitId":"-"},"content":" * {@code person} must not already exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":70,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":71,"author":{"gitId":"-"},"content":" void addPerson(Person person);","lastModifiedDate":"2018-08-07"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":73,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * Replaces the given person {@code target} with {@code editedPerson}.","lastModifiedDate":"2017-06-07"},{"lineNumber":75,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":76,"author":{"gitId":"-"},"content":" * The person identity of {@code editedPerson} must not be the same as another existing person in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":77,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" void setPerson(Person target, Person editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" /** Returns an unmodifiable view of the filtered person list */","lastModifiedDate":"2017-09-01"},{"lineNumber":81,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":83,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-05"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * Updates the filter of the filtered person list to filter by the given {@code predicate}.","lastModifiedDate":"2017-08-05"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2017-08-05"},{"lineNumber":86,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05"},{"lineNumber":87,"author":{"gitId":"-"},"content":" void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate);","lastModifiedDate":"2018-01-10"},{"lineNumber":88,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":89,"author":{"gitId":"Apzure"},"content":" void setEventBook(ReadOnlyEventBook eventBook);","lastModifiedDate":"2024-03-02"},{"lineNumber":90,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":91,"author":{"gitId":"Apzure"},"content":" ReadOnlyEventBook getEventBook();","lastModifiedDate":"2024-03-02"},{"lineNumber":92,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":93,"author":{"gitId":"Apzure"},"content":" boolean hasEvent(Event event);","lastModifiedDate":"2024-03-02"},{"lineNumber":94,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":95,"author":{"gitId":"Apzure"},"content":" void deleteEvent(Event target);","lastModifiedDate":"2024-03-02"},{"lineNumber":96,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":97,"author":{"gitId":"Apzure"},"content":" void addEvent(Event event);","lastModifiedDate":"2024-03-02"},{"lineNumber":98,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":99,"author":{"gitId":"Apzure"},"content":" void setEvent(Event target, Event editedEvent);","lastModifiedDate":"2024-03-02"},{"lineNumber":100,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":101,"author":{"gitId":"myang2020"},"content":" boolean isAnEventSelected();","lastModifiedDate":"2024-03-17"},{"lineNumber":102,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":103,"author":{"gitId":"taeewonnn"},"content":" boolean isSameSelectedEvent(Event event);","lastModifiedDate":"2024-03-20"},{"lineNumber":104,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":105,"author":{"gitId":"Apzure"},"content":" void selectEvent(Event event);","lastModifiedDate":"2024-03-15"},{"lineNumber":106,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":107,"author":{"gitId":"myang2020"},"content":" void deselectEvent();","lastModifiedDate":"2024-03-16"},{"lineNumber":108,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":109,"author":{"gitId":"myang2020"},"content":" boolean isPersonInSelectedEvent(Person person);","lastModifiedDate":"2024-03-17"},{"lineNumber":110,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":111,"author":{"gitId":"myang2020"},"content":" void addPersonToSelectedEvent(Person person);","lastModifiedDate":"2024-03-17"},{"lineNumber":112,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":113,"author":{"gitId":"ChocoRagdoll"},"content":" void deletePersonFromSelectedEvent(Person person);","lastModifiedDate":"2024-03-20"},{"lineNumber":114,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":115,"author":{"gitId":"Apzure"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":116,"author":{"gitId":"Apzure"},"content":" * Returns an unmodifiable view of the filtered event list.","lastModifiedDate":"2024-03-15"},{"lineNumber":117,"author":{"gitId":"Apzure"},"content":" *","lastModifiedDate":"2024-03-15"},{"lineNumber":118,"author":{"gitId":"Apzure"},"content":" * @return An unmodifiable view of the filtered event list.","lastModifiedDate":"2024-03-15"},{"lineNumber":119,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":120,"author":{"gitId":"Apzure"},"content":" ObservableList\u003cEvent\u003e getFilteredEventList();","lastModifiedDate":"2024-03-01"},{"lineNumber":121,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":122,"author":{"gitId":"Apzure"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":123,"author":{"gitId":"Apzure"},"content":" * Returns an unmodifiable view of the filtered person list of the selected event.","lastModifiedDate":"2024-03-15"},{"lineNumber":124,"author":{"gitId":"Apzure"},"content":" * If no event is selected, returns an empty list.","lastModifiedDate":"2024-03-15"},{"lineNumber":125,"author":{"gitId":"Apzure"},"content":" *","lastModifiedDate":"2024-03-15"},{"lineNumber":126,"author":{"gitId":"Apzure"},"content":" * @return An unmodifiable view of the filtered person list of the selected event,","lastModifiedDate":"2024-03-15"},{"lineNumber":127,"author":{"gitId":"Apzure"},"content":" * or an empty list if no event is selected.","lastModifiedDate":"2024-03-15"},{"lineNumber":128,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":129,"author":{"gitId":"Apzure"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonListOfSelectedEvent();","lastModifiedDate":"2024-03-15"},{"lineNumber":130,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":131,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"Apzure":32,"ChocoRagdoll":2,"-":87,"taeewonnn":2,"myang2020":8}},{"path":"src/main/java/seedu/address/model/ModelManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-08-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2016-08-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23"},{"lineNumber":14,"author":{"gitId":"Apzure"},"content":"import seedu.address.model.event.Event;","lastModifiedDate":"2024-03-01"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Represents the in-memory model of the address book data.","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class ModelManager implements Model {","lastModifiedDate":"2018-12-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ModelManager.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"Apzure"},"content":" private final EventBook eventBook;","lastModifiedDate":"2024-03-01"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final AddressBook addressBook;","lastModifiedDate":"2019-01-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final UserPrefs userPrefs;","lastModifiedDate":"2018-12-06"},{"lineNumber":26,"author":{"gitId":"Apzure"},"content":" private final FilteredList\u003cEvent\u003e filteredEvents;","lastModifiedDate":"2024-03-01"},{"lineNumber":27,"author":{"gitId":"Apzure"},"content":" private final FilteredList\u003cPerson\u003e filteredPersonsOfSelectedEvent;","lastModifiedDate":"2024-03-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final FilteredList\u003cPerson\u003e filteredPersons;","lastModifiedDate":"2018-01-10"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Initializes a ModelManager with the given addressBook and userPrefs.","lastModifiedDate":"2016-12-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public ModelManager(ReadOnlyAddressBook addressBook, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":" requireAllNonNull(addressBook, userPrefs);","lastModifiedDate":"2017-05-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" logger.fine(\"Initializing with address book: \" + addressBook + \" and user prefs \" + userPrefs);","lastModifiedDate":"2016-12-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"Apzure"},"content":" this.eventBook \u003d new EventBook();","lastModifiedDate":"2024-03-01"},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.addressBook \u003d new AddressBook(addressBook);","lastModifiedDate":"2019-01-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":41,"author":{"gitId":"Apzure"},"content":" filteredEvents \u003d new FilteredList\u003c\u003e(this.eventBook.getEventList());","lastModifiedDate":"2024-03-01"},{"lineNumber":42,"author":{"gitId":"Apzure"},"content":" filteredPersonsOfSelectedEvent \u003d new FilteredList\u003c\u003e(this.eventBook.getPersonsOfSelectedEventList());","lastModifiedDate":"2024-03-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":" filteredPersons \u003d new FilteredList\u003c\u003e(this.addressBook.getPersonList());","lastModifiedDate":"2019-01-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public ModelManager() {","lastModifiedDate":"2016-09-22"},{"lineNumber":47,"author":{"gitId":"-"},"content":" this(new AddressBook(), new UserPrefs());","lastModifiedDate":"2016-09-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d UserPrefs \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":54,"author":{"gitId":"-"},"content":" requireNonNull(userPrefs);","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" this.userPrefs.resetData(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return userPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" return userPrefs.getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return userPrefs.getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":85,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d AddressBook \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook addressBook) {","lastModifiedDate":"2018-11-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":" this.addressBook.resetData(addressBook);","lastModifiedDate":"2019-01-25"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2016-09-21"},{"lineNumber":94,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2019-01-25"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":98,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":99,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":100,"author":{"gitId":"-"},"content":" return addressBook.hasPerson(person);","lastModifiedDate":"2019-01-25"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":103,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-15"},{"lineNumber":105,"author":{"gitId":"-"},"content":" addressBook.removePerson(target);","lastModifiedDate":"2019-01-25"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":109,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":110,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2019-01-25"},{"lineNumber":111,"author":{"gitId":"-"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26"},{"lineNumber":114,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":116,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2017-06-07"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":" addressBook.setPerson(target, editedPerson);","lastModifiedDate":"2019-01-25"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":121,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Filtered Person List Accessors \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2016-10-12"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19"},{"lineNumber":124,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the list of {@code Person} backed by the internal list of","lastModifiedDate":"2018-01-10"},{"lineNumber":125,"author":{"gitId":"-"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2018-06-11"},{"lineNumber":126,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19"},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":128,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":129,"author":{"gitId":"-"},"content":" return filteredPersons;","lastModifiedDate":"2018-12-09"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":133,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10"},{"lineNumber":134,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05"},{"lineNumber":135,"author":{"gitId":"-"},"content":" filteredPersons.setPredicate(predicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":138,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-31"},{"lineNumber":139,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13"},{"lineNumber":140,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":141,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":144,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31"},{"lineNumber":145,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":146,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-31"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":149,"author":{"gitId":"-"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":150,"author":{"gitId":"-"},"content":" return addressBook.equals(otherModelManager.addressBook)","lastModifiedDate":"2023-07-13"},{"lineNumber":151,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13"},{"lineNumber":152,"author":{"gitId":"-"},"content":" \u0026\u0026 filteredPersons.equals(otherModelManager.filteredPersons);","lastModifiedDate":"2023-07-13"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":155,"author":{"gitId":"Apzure"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d EventBook \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-03-02"},{"lineNumber":156,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":157,"author":{"gitId":"Apzure"},"content":" @Override","lastModifiedDate":"2024-03-02"},{"lineNumber":158,"author":{"gitId":"Apzure"},"content":" public void setEventBook(ReadOnlyEventBook eventBook) {","lastModifiedDate":"2024-03-02"},{"lineNumber":159,"author":{"gitId":"Apzure"},"content":" this.eventBook.resetData(eventBook);","lastModifiedDate":"2024-03-02"},{"lineNumber":160,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":161,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":162,"author":{"gitId":"Apzure"},"content":" @Override","lastModifiedDate":"2024-03-02"},{"lineNumber":163,"author":{"gitId":"Apzure"},"content":" public ReadOnlyEventBook getEventBook() {","lastModifiedDate":"2024-03-02"},{"lineNumber":164,"author":{"gitId":"Apzure"},"content":" return eventBook;","lastModifiedDate":"2024-03-02"},{"lineNumber":165,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":166,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":167,"author":{"gitId":"Apzure"},"content":" @Override","lastModifiedDate":"2024-03-02"},{"lineNumber":168,"author":{"gitId":"Apzure"},"content":" public boolean hasEvent(Event event) {","lastModifiedDate":"2024-03-02"},{"lineNumber":169,"author":{"gitId":"Apzure"},"content":" requireNonNull(event);","lastModifiedDate":"2024-03-02"},{"lineNumber":170,"author":{"gitId":"Apzure"},"content":" return eventBook.hasEvent(event);","lastModifiedDate":"2024-03-02"},{"lineNumber":171,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":172,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":173,"author":{"gitId":"Apzure"},"content":" @Override","lastModifiedDate":"2024-03-02"},{"lineNumber":174,"author":{"gitId":"Apzure"},"content":" public void deleteEvent(Event target) {","lastModifiedDate":"2024-03-02"},{"lineNumber":175,"author":{"gitId":"Apzure"},"content":" eventBook.removeEvent(target);","lastModifiedDate":"2024-03-02"},{"lineNumber":176,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":177,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":178,"author":{"gitId":"Apzure"},"content":" @Override","lastModifiedDate":"2024-03-02"},{"lineNumber":179,"author":{"gitId":"Apzure"},"content":" public void addEvent(Event event) {","lastModifiedDate":"2024-03-02"},{"lineNumber":180,"author":{"gitId":"Apzure"},"content":" eventBook.addEvent(event);","lastModifiedDate":"2024-03-02"},{"lineNumber":181,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":182,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":183,"author":{"gitId":"Apzure"},"content":" @Override","lastModifiedDate":"2024-03-02"},{"lineNumber":184,"author":{"gitId":"Apzure"},"content":" public void setEvent(Event target, Event editedEvent) {","lastModifiedDate":"2024-03-02"},{"lineNumber":185,"author":{"gitId":"Apzure"},"content":" requireAllNonNull(target, editedEvent);","lastModifiedDate":"2024-03-02"},{"lineNumber":186,"author":{"gitId":"Apzure"},"content":" eventBook.setEvent(target, editedEvent);","lastModifiedDate":"2024-03-02"},{"lineNumber":187,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":188,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":189,"author":{"gitId":"myang2020"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":190,"author":{"gitId":"myang2020"},"content":" public boolean isAnEventSelected() {","lastModifiedDate":"2024-03-17"},{"lineNumber":191,"author":{"gitId":"myang2020"},"content":" return eventBook.isAnEventSelected();","lastModifiedDate":"2024-03-17"},{"lineNumber":192,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":193,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":194,"author":{"gitId":"taeewonnn"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":195,"author":{"gitId":"taeewonnn"},"content":" public boolean isSameSelectedEvent(Event event) {","lastModifiedDate":"2024-03-20"},{"lineNumber":196,"author":{"gitId":"taeewonnn"},"content":" requireNonNull(event);","lastModifiedDate":"2024-03-19"},{"lineNumber":197,"author":{"gitId":"taeewonnn"},"content":" return eventBook.isSameSelectedEvent(event);","lastModifiedDate":"2024-03-19"},{"lineNumber":198,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":199,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":200,"author":{"gitId":"Apzure"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":201,"author":{"gitId":"Apzure"},"content":" public void selectEvent(Event event) {","lastModifiedDate":"2024-03-15"},{"lineNumber":202,"author":{"gitId":"Apzure"},"content":" eventBook.selectEvent(event);","lastModifiedDate":"2024-03-15"},{"lineNumber":203,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":204,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":205,"author":{"gitId":"myang2020"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":206,"author":{"gitId":"myang2020"},"content":" public void deselectEvent() {","lastModifiedDate":"2024-03-16"},{"lineNumber":207,"author":{"gitId":"myang2020"},"content":" eventBook.deselectEvent();","lastModifiedDate":"2024-03-16"},{"lineNumber":208,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":209,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":210,"author":{"gitId":"myang2020"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":211,"author":{"gitId":"myang2020"},"content":" public boolean isPersonInSelectedEvent(Person person) {","lastModifiedDate":"2024-03-17"},{"lineNumber":212,"author":{"gitId":"myang2020"},"content":" requireNonNull(person);","lastModifiedDate":"2024-03-17"},{"lineNumber":213,"author":{"gitId":"myang2020"},"content":" return eventBook.isPersonInSelectedEvent(person);","lastModifiedDate":"2024-03-17"},{"lineNumber":214,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":215,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":216,"author":{"gitId":"myang2020"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":217,"author":{"gitId":"myang2020"},"content":" public void addPersonToSelectedEvent(Person person) {","lastModifiedDate":"2024-03-17"},{"lineNumber":218,"author":{"gitId":"myang2020"},"content":" requireNonNull(person);","lastModifiedDate":"2024-03-17"},{"lineNumber":219,"author":{"gitId":"myang2020"},"content":" eventBook.addPersonToSelectedEvent(person);","lastModifiedDate":"2024-03-17"},{"lineNumber":220,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":221,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":222,"author":{"gitId":"ChocoRagdoll"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":223,"author":{"gitId":"ChocoRagdoll"},"content":" public void deletePersonFromSelectedEvent(Person person) {","lastModifiedDate":"2024-03-20"},{"lineNumber":224,"author":{"gitId":"ChocoRagdoll"},"content":" requireNonNull(person);","lastModifiedDate":"2024-03-20"},{"lineNumber":225,"author":{"gitId":"ChocoRagdoll"},"content":" eventBook.deletePersonFromSelectedEvent(person);","lastModifiedDate":"2024-03-20"},{"lineNumber":226,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":227,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":228,"author":{"gitId":"Apzure"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Filtered Event List and Person List of Selected Event 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","lastModifiedDate":"2024-03-15"},{"lineNumber":229,"author":{"gitId":"Apzure"},"content":" @Override","lastModifiedDate":"2024-03-02"},{"lineNumber":230,"author":{"gitId":"Apzure"},"content":" public ObservableList\u003cEvent\u003e getFilteredEventList() {","lastModifiedDate":"2024-03-02"},{"lineNumber":231,"author":{"gitId":"Apzure"},"content":" return filteredEvents;","lastModifiedDate":"2024-03-02"},{"lineNumber":232,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":233,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":234,"author":{"gitId":"Apzure"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":235,"author":{"gitId":"Apzure"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonListOfSelectedEvent() {","lastModifiedDate":"2024-03-15"},{"lineNumber":236,"author":{"gitId":"Apzure"},"content":" return filteredPersonsOfSelectedEvent;","lastModifiedDate":"2024-03-15"},{"lineNumber":237,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":238,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":239,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"Apzure":58,"ChocoRagdoll":5,"-":148,"taeewonnn":6,"myang2020":22}},{"path":"src/main/java/seedu/address/model/ReadOnlyEventBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Apzure"},"content":"package seedu.address.model;","lastModifiedDate":"2024-03-01"},{"lineNumber":2,"author":{"gitId":"Apzure"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-01"},{"lineNumber":3,"author":{"gitId":"Apzure"},"content":"import seedu.address.model.event.Event;","lastModifiedDate":"2024-03-01"},{"lineNumber":4,"author":{"gitId":"Apzure"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-15"},{"lineNumber":5,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":6,"author":{"gitId":"Apzure"},"content":"/**","lastModifiedDate":"2024-03-10"},{"lineNumber":7,"author":{"gitId":"Apzure"},"content":" * Unmodifiable view of an event book","lastModifiedDate":"2024-03-10"},{"lineNumber":8,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-10"},{"lineNumber":9,"author":{"gitId":"Apzure"},"content":"public interface ReadOnlyEventBook {","lastModifiedDate":"2024-03-02"},{"lineNumber":10,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":11,"author":{"gitId":"Apzure"},"content":" /**","lastModifiedDate":"2024-03-01"},{"lineNumber":12,"author":{"gitId":"Apzure"},"content":" * Returns an unmodifiable view of the events list.","lastModifiedDate":"2024-03-01"},{"lineNumber":13,"author":{"gitId":"Apzure"},"content":" * This list will not contain any duplicate events.","lastModifiedDate":"2024-03-01"},{"lineNumber":14,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-01"},{"lineNumber":15,"author":{"gitId":"Apzure"},"content":" ObservableList\u003cEvent\u003e getEventList();","lastModifiedDate":"2024-03-01"},{"lineNumber":16,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":17,"author":{"gitId":"Apzure"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":18,"author":{"gitId":"Apzure"},"content":" * Returns an unmodifiable view of the persons list of the selected event.","lastModifiedDate":"2024-03-15"},{"lineNumber":19,"author":{"gitId":"Apzure"},"content":" * This list will not contain any duplicate events.","lastModifiedDate":"2024-03-15"},{"lineNumber":20,"author":{"gitId":"Apzure"},"content":" * This list is empty is no event is currently selected.","lastModifiedDate":"2024-03-15"},{"lineNumber":21,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":22,"author":{"gitId":"Apzure"},"content":" ObservableList\u003cPerson\u003e getPersonsOfSelectedEventList();","lastModifiedDate":"2024-03-15"},{"lineNumber":23,"author":{"gitId":"Apzure"},"content":"}","lastModifiedDate":"2024-03-01"}],"authorContributionMap":{"Apzure":23}},{"path":"src/main/java/seedu/address/model/event/Event.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Apzure"},"content":"package seedu.address.model.event;","lastModifiedDate":"2024-03-01"},{"lineNumber":2,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":3,"author":{"gitId":"Apzure"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-04"},{"lineNumber":4,"author":{"gitId":"Apzure"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-01"},{"lineNumber":5,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":6,"author":{"gitId":"Apzure"},"content":"import java.util.List;","lastModifiedDate":"2024-03-04"},{"lineNumber":7,"author":{"gitId":"Apzure"},"content":"import java.util.Objects;","lastModifiedDate":"2024-03-01"},{"lineNumber":8,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":9,"author":{"gitId":"Apzure"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-04"},{"lineNumber":10,"author":{"gitId":"Apzure"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-01"},{"lineNumber":11,"author":{"gitId":"Apzure"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-04"},{"lineNumber":12,"author":{"gitId":"Apzure"},"content":"import seedu.address.model.person.UniquePersonList;","lastModifiedDate":"2024-03-02"},{"lineNumber":13,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":14,"author":{"gitId":"Apzure"},"content":"/**","lastModifiedDate":"2024-03-01"},{"lineNumber":15,"author":{"gitId":"Apzure"},"content":" * Represents an Event in the event book.","lastModifiedDate":"2024-03-04"},{"lineNumber":16,"author":{"gitId":"Apzure"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2024-03-01"},{"lineNumber":17,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-01"},{"lineNumber":18,"author":{"gitId":"Apzure"},"content":"public class Event {","lastModifiedDate":"2024-03-01"},{"lineNumber":19,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":20,"author":{"gitId":"Apzure"},"content":" private final EventName eventName;","lastModifiedDate":"2024-03-01"},{"lineNumber":21,"author":{"gitId":"Apzure"},"content":" private final UniquePersonList persons;","lastModifiedDate":"2024-03-04"},{"lineNumber":22,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":23,"author":{"gitId":"Apzure"},"content":" /**","lastModifiedDate":"2024-03-01"},{"lineNumber":24,"author":{"gitId":"Apzure"},"content":" * Every field must be present and not null.","lastModifiedDate":"2024-03-01"},{"lineNumber":25,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-01"},{"lineNumber":26,"author":{"gitId":"Apzure"},"content":" public Event(EventName eventName) {","lastModifiedDate":"2024-03-01"},{"lineNumber":27,"author":{"gitId":"Apzure"},"content":" requireAllNonNull(eventName);","lastModifiedDate":"2024-03-01"},{"lineNumber":28,"author":{"gitId":"Apzure"},"content":" this.eventName \u003d eventName;","lastModifiedDate":"2024-03-01"},{"lineNumber":29,"author":{"gitId":"Apzure"},"content":" persons \u003d new UniquePersonList();","lastModifiedDate":"2024-03-04"},{"lineNumber":30,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":31,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":32,"author":{"gitId":"Apzure"},"content":" public EventName getEventName() {","lastModifiedDate":"2024-03-01"},{"lineNumber":33,"author":{"gitId":"Apzure"},"content":" return eventName;","lastModifiedDate":"2024-03-01"},{"lineNumber":34,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":35,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":36,"author":{"gitId":"Apzure"},"content":" //// person-level operations","lastModifiedDate":"2024-03-04"},{"lineNumber":37,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":38,"author":{"gitId":"Apzure"},"content":" /**","lastModifiedDate":"2024-03-04"},{"lineNumber":39,"author":{"gitId":"Apzure"},"content":" * Replaces the contents of the person list with {@code persons}.","lastModifiedDate":"2024-03-04"},{"lineNumber":40,"author":{"gitId":"Apzure"},"content":" * {@code persons} must not contain duplicate persons.","lastModifiedDate":"2024-03-04"},{"lineNumber":41,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-04"},{"lineNumber":42,"author":{"gitId":"Apzure"},"content":" public void setPersons(List\u003cPerson\u003e persons) {","lastModifiedDate":"2024-03-04"},{"lineNumber":43,"author":{"gitId":"Apzure"},"content":" this.persons.setPersons(persons);","lastModifiedDate":"2024-03-04"},{"lineNumber":44,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":45,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":46,"author":{"gitId":"Apzure"},"content":" /**","lastModifiedDate":"2024-03-04"},{"lineNumber":47,"author":{"gitId":"Apzure"},"content":" * Returns true if a person with the same identity as {@code person} exists in the address book.","lastModifiedDate":"2024-03-04"},{"lineNumber":48,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-04"},{"lineNumber":49,"author":{"gitId":"Apzure"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2024-03-04"},{"lineNumber":50,"author":{"gitId":"Apzure"},"content":" requireNonNull(person);","lastModifiedDate":"2024-03-04"},{"lineNumber":51,"author":{"gitId":"Apzure"},"content":" return persons.contains(person);","lastModifiedDate":"2024-03-04"},{"lineNumber":52,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":53,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":54,"author":{"gitId":"Apzure"},"content":" /**","lastModifiedDate":"2024-03-04"},{"lineNumber":55,"author":{"gitId":"Apzure"},"content":" * Adds a person to the event.","lastModifiedDate":"2024-03-04"},{"lineNumber":56,"author":{"gitId":"Apzure"},"content":" * The person must not already exist in the event.","lastModifiedDate":"2024-03-04"},{"lineNumber":57,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-04"},{"lineNumber":58,"author":{"gitId":"Apzure"},"content":" public void addPerson(Person p) {","lastModifiedDate":"2024-03-04"},{"lineNumber":59,"author":{"gitId":"Apzure"},"content":" persons.add(p);","lastModifiedDate":"2024-03-04"},{"lineNumber":60,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":61,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":62,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"ChocoRagdoll"},"content":" * Deletes a person to the event.","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"ChocoRagdoll"},"content":" * The person must already exist in the event.","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"ChocoRagdoll"},"content":" public void deletePerson(Person p) {","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"ChocoRagdoll"},"content":" persons.remove(p);","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"Apzure"},"content":" /**","lastModifiedDate":"2024-03-04"},{"lineNumber":71,"author":{"gitId":"Apzure"},"content":" * Replaces the given person {@code target} in the list with {@code editedPerson}.","lastModifiedDate":"2024-03-04"},{"lineNumber":72,"author":{"gitId":"Apzure"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2024-03-04"},{"lineNumber":73,"author":{"gitId":"Apzure"},"content":" * The person identity of {@code editedPerson} must not be the same as another existing person in the address book.","lastModifiedDate":"2024-03-04"},{"lineNumber":74,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-04"},{"lineNumber":75,"author":{"gitId":"Apzure"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2024-03-04"},{"lineNumber":76,"author":{"gitId":"Apzure"},"content":" requireNonNull(editedPerson);","lastModifiedDate":"2024-03-04"},{"lineNumber":77,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":78,"author":{"gitId":"Apzure"},"content":" persons.setPerson(target, editedPerson);","lastModifiedDate":"2024-03-04"},{"lineNumber":79,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":80,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":81,"author":{"gitId":"Apzure"},"content":" //// util methods","lastModifiedDate":"2024-03-04"},{"lineNumber":82,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":83,"author":{"gitId":"Apzure"},"content":" public ObservableList\u003cPerson\u003e getPersonList() {","lastModifiedDate":"2024-03-04"},{"lineNumber":84,"author":{"gitId":"Apzure"},"content":" return persons.asUnmodifiableObservableList();","lastModifiedDate":"2024-03-04"},{"lineNumber":85,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":86,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":87,"author":{"gitId":"Apzure"},"content":" /**","lastModifiedDate":"2024-03-01"},{"lineNumber":88,"author":{"gitId":"Apzure"},"content":" * Returns true if both events have the same event name.","lastModifiedDate":"2024-03-01"},{"lineNumber":89,"author":{"gitId":"Apzure"},"content":" * This defines a weaker notion of equality between two events.","lastModifiedDate":"2024-03-01"},{"lineNumber":90,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-01"},{"lineNumber":91,"author":{"gitId":"Apzure"},"content":" public boolean isSameEvent(Event otherEvent) {","lastModifiedDate":"2024-03-01"},{"lineNumber":92,"author":{"gitId":"Apzure"},"content":" if (otherEvent \u003d\u003d this) {","lastModifiedDate":"2024-03-01"},{"lineNumber":93,"author":{"gitId":"Apzure"},"content":" return true;","lastModifiedDate":"2024-03-01"},{"lineNumber":94,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":95,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":96,"author":{"gitId":"Apzure"},"content":" return otherEvent !\u003d null","lastModifiedDate":"2024-03-01"},{"lineNumber":97,"author":{"gitId":"Apzure"},"content":" \u0026\u0026 otherEvent.getEventName().equals(getEventName());","lastModifiedDate":"2024-03-01"},{"lineNumber":98,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":99,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":100,"author":{"gitId":"Apzure"},"content":" /**","lastModifiedDate":"2024-03-01"},{"lineNumber":101,"author":{"gitId":"Apzure"},"content":" * Returns true if both events have the same identity and data fields.","lastModifiedDate":"2024-03-01"},{"lineNumber":102,"author":{"gitId":"Apzure"},"content":" * This defines a stronger notion of equality between two events.","lastModifiedDate":"2024-03-01"},{"lineNumber":103,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-01"},{"lineNumber":104,"author":{"gitId":"Apzure"},"content":" @Override","lastModifiedDate":"2024-03-01"},{"lineNumber":105,"author":{"gitId":"Apzure"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-01"},{"lineNumber":106,"author":{"gitId":"Apzure"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-01"},{"lineNumber":107,"author":{"gitId":"Apzure"},"content":" return true;","lastModifiedDate":"2024-03-01"},{"lineNumber":108,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":109,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":110,"author":{"gitId":"Apzure"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-01"},{"lineNumber":111,"author":{"gitId":"Apzure"},"content":" if (!(other instanceof Event)) {","lastModifiedDate":"2024-03-01"},{"lineNumber":112,"author":{"gitId":"Apzure"},"content":" return false;","lastModifiedDate":"2024-03-01"},{"lineNumber":113,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":114,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":115,"author":{"gitId":"Apzure"},"content":" Event otherEvent \u003d (Event) other;","lastModifiedDate":"2024-03-01"},{"lineNumber":116,"author":{"gitId":"Apzure"},"content":" return eventName.equals(otherEvent.eventName);","lastModifiedDate":"2024-03-01"},{"lineNumber":117,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":118,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":119,"author":{"gitId":"Apzure"},"content":" @Override","lastModifiedDate":"2024-03-01"},{"lineNumber":120,"author":{"gitId":"Apzure"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-01"},{"lineNumber":121,"author":{"gitId":"Apzure"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2024-03-01"},{"lineNumber":122,"author":{"gitId":"Apzure"},"content":" return Objects.hash(eventName);","lastModifiedDate":"2024-03-01"},{"lineNumber":123,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":124,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":125,"author":{"gitId":"Apzure"},"content":" @Override","lastModifiedDate":"2024-03-01"},{"lineNumber":126,"author":{"gitId":"Apzure"},"content":" public String toString() {","lastModifiedDate":"2024-03-01"},{"lineNumber":127,"author":{"gitId":"Apzure"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-01"},{"lineNumber":128,"author":{"gitId":"Apzure"},"content":" .add(\"eventName\", eventName)","lastModifiedDate":"2024-03-01"},{"lineNumber":129,"author":{"gitId":"Apzure"},"content":" .add(\"persons\", persons.toString())","lastModifiedDate":"2024-03-04"},{"lineNumber":130,"author":{"gitId":"Apzure"},"content":" .toString();","lastModifiedDate":"2024-03-01"},{"lineNumber":131,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":132,"author":{"gitId":"Apzure"},"content":"}","lastModifiedDate":"2024-03-01"}],"authorContributionMap":{"Apzure":124,"ChocoRagdoll":8}},{"path":"src/main/java/seedu/address/model/event/EventName.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Apzure"},"content":"package seedu.address.model.event;","lastModifiedDate":"2024-03-01"},{"lineNumber":2,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":3,"author":{"gitId":"Apzure"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-01"},{"lineNumber":4,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":5,"author":{"gitId":"Apzure"},"content":"/**","lastModifiedDate":"2024-03-10"},{"lineNumber":6,"author":{"gitId":"Apzure"},"content":" * Represents an Event\u0027s name.","lastModifiedDate":"2024-03-10"},{"lineNumber":7,"author":{"gitId":"Apzure"},"content":" * Guarantees: immutable","lastModifiedDate":"2024-03-10"},{"lineNumber":8,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-10"},{"lineNumber":9,"author":{"gitId":"Apzure"},"content":"public class EventName {","lastModifiedDate":"2024-03-01"},{"lineNumber":10,"author":{"gitId":"Apzure"},"content":" public final String eventName;","lastModifiedDate":"2024-03-01"},{"lineNumber":11,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":12,"author":{"gitId":"Apzure"},"content":" /**","lastModifiedDate":"2024-03-10"},{"lineNumber":13,"author":{"gitId":"Apzure"},"content":" * Constructs a {@code EventName}.","lastModifiedDate":"2024-03-10"},{"lineNumber":14,"author":{"gitId":"Apzure"},"content":" *","lastModifiedDate":"2024-03-10"},{"lineNumber":15,"author":{"gitId":"Apzure"},"content":" * @param eventName A valid name.","lastModifiedDate":"2024-03-10"},{"lineNumber":16,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-10"},{"lineNumber":17,"author":{"gitId":"Apzure"},"content":" public EventName(String eventName) {","lastModifiedDate":"2024-03-01"},{"lineNumber":18,"author":{"gitId":"Apzure"},"content":" requireNonNull(eventName);","lastModifiedDate":"2024-03-01"},{"lineNumber":19,"author":{"gitId":"Apzure"},"content":" this.eventName \u003d eventName;","lastModifiedDate":"2024-03-01"},{"lineNumber":20,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":21,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":22,"author":{"gitId":"Apzure"},"content":" @Override","lastModifiedDate":"2024-03-01"},{"lineNumber":23,"author":{"gitId":"Apzure"},"content":" public String toString() {","lastModifiedDate":"2024-03-01"},{"lineNumber":24,"author":{"gitId":"Apzure"},"content":" return eventName;","lastModifiedDate":"2024-03-01"},{"lineNumber":25,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":26,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":27,"author":{"gitId":"Apzure"},"content":" @Override","lastModifiedDate":"2024-03-01"},{"lineNumber":28,"author":{"gitId":"Apzure"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-01"},{"lineNumber":29,"author":{"gitId":"Apzure"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-01"},{"lineNumber":30,"author":{"gitId":"Apzure"},"content":" return true;","lastModifiedDate":"2024-03-01"},{"lineNumber":31,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":32,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":33,"author":{"gitId":"Apzure"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-01"},{"lineNumber":34,"author":{"gitId":"Apzure"},"content":" if (!(other instanceof EventName)) {","lastModifiedDate":"2024-03-01"},{"lineNumber":35,"author":{"gitId":"Apzure"},"content":" return false;","lastModifiedDate":"2024-03-01"},{"lineNumber":36,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":37,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":38,"author":{"gitId":"Apzure"},"content":" EventName otherName \u003d (EventName) other;","lastModifiedDate":"2024-03-01"},{"lineNumber":39,"author":{"gitId":"Apzure"},"content":" return eventName.equals(otherName.eventName);","lastModifiedDate":"2024-03-01"},{"lineNumber":40,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":41,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":42,"author":{"gitId":"Apzure"},"content":" @Override","lastModifiedDate":"2024-03-01"},{"lineNumber":43,"author":{"gitId":"Apzure"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-01"},{"lineNumber":44,"author":{"gitId":"Apzure"},"content":" return eventName.hashCode();","lastModifiedDate":"2024-03-01"},{"lineNumber":45,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":46,"author":{"gitId":"Apzure"},"content":"}","lastModifiedDate":"2024-03-01"}],"authorContributionMap":{"Apzure":46}},{"path":"src/main/java/seedu/address/model/event/UniqueEventList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Apzure"},"content":"package seedu.address.model.event;","lastModifiedDate":"2024-03-01"},{"lineNumber":2,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":3,"author":{"gitId":"Apzure"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-01"},{"lineNumber":4,"author":{"gitId":"Apzure"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-01"},{"lineNumber":5,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":6,"author":{"gitId":"Apzure"},"content":"import java.util.Iterator;","lastModifiedDate":"2024-03-01"},{"lineNumber":7,"author":{"gitId":"Apzure"},"content":"import java.util.List;","lastModifiedDate":"2024-03-01"},{"lineNumber":8,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":9,"author":{"gitId":"Apzure"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-03-01"},{"lineNumber":10,"author":{"gitId":"Apzure"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-01"},{"lineNumber":11,"author":{"gitId":"Apzure"},"content":"import seedu.address.model.event.exceptions.DuplicateEventException;","lastModifiedDate":"2024-03-01"},{"lineNumber":12,"author":{"gitId":"Apzure"},"content":"import seedu.address.model.event.exceptions.EventNotFoundException;","lastModifiedDate":"2024-03-01"},{"lineNumber":13,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":14,"author":{"gitId":"Apzure"},"content":"/**","lastModifiedDate":"2024-03-01"},{"lineNumber":15,"author":{"gitId":"Apzure"},"content":" * A list of events that enforces uniqueness between its elements and does not allow nulls.","lastModifiedDate":"2024-03-01"},{"lineNumber":16,"author":{"gitId":"Apzure"},"content":" * An event is considered unique by comparing using {@code Event#isSameEvent(Event)}.","lastModifiedDate":"2024-03-01"},{"lineNumber":17,"author":{"gitId":"Apzure"},"content":" * Adding and updating of events use Event#isSameEvent(Event) for equality to ensure that the event being added or","lastModifiedDate":"2024-03-01"},{"lineNumber":18,"author":{"gitId":"Apzure"},"content":" * updated is unique in terms of identity in the UniqueEventList.","lastModifiedDate":"2024-03-01"},{"lineNumber":19,"author":{"gitId":"Apzure"},"content":" * However, the removal of an event uses Event#equals(Object) so as to ensure that the event with exactly the same","lastModifiedDate":"2024-03-01"},{"lineNumber":20,"author":{"gitId":"Apzure"},"content":" * fields will be removed.","lastModifiedDate":"2024-03-01"},{"lineNumber":21,"author":{"gitId":"Apzure"},"content":" * \u003cp\u003e","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"Apzure"},"content":" * Supports a minimal set of list operations.","lastModifiedDate":"2024-03-01"},{"lineNumber":23,"author":{"gitId":"Apzure"},"content":" *","lastModifiedDate":"2024-03-01"},{"lineNumber":24,"author":{"gitId":"Apzure"},"content":" * @see Event#isSameEvent(Event)","lastModifiedDate":"2024-03-01"},{"lineNumber":25,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-01"},{"lineNumber":26,"author":{"gitId":"Apzure"},"content":"public class UniqueEventList implements Iterable\u003cEvent\u003e {","lastModifiedDate":"2024-03-01"},{"lineNumber":27,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":28,"author":{"gitId":"Apzure"},"content":" private final ObservableList\u003cEvent\u003e internalList \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-03-01"},{"lineNumber":29,"author":{"gitId":"Apzure"},"content":" private final ObservableList\u003cEvent\u003e internalUnmodifiableList \u003d","lastModifiedDate":"2024-03-01"},{"lineNumber":30,"author":{"gitId":"Apzure"},"content":" FXCollections.unmodifiableObservableList(internalList);","lastModifiedDate":"2024-03-01"},{"lineNumber":31,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":32,"author":{"gitId":"Apzure"},"content":" /**","lastModifiedDate":"2024-03-01"},{"lineNumber":33,"author":{"gitId":"Apzure"},"content":" * Returns true if the list contains an equivalent event as the given argument.","lastModifiedDate":"2024-03-01"},{"lineNumber":34,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-01"},{"lineNumber":35,"author":{"gitId":"Apzure"},"content":" public boolean contains(Event toCheck) {","lastModifiedDate":"2024-03-01"},{"lineNumber":36,"author":{"gitId":"Apzure"},"content":" requireNonNull(toCheck);","lastModifiedDate":"2024-03-01"},{"lineNumber":37,"author":{"gitId":"Apzure"},"content":" return internalList.stream().anyMatch(toCheck::isSameEvent);","lastModifiedDate":"2024-03-01"},{"lineNumber":38,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":39,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":40,"author":{"gitId":"Apzure"},"content":" /**","lastModifiedDate":"2024-03-01"},{"lineNumber":41,"author":{"gitId":"Apzure"},"content":" * Adds an event to the list.","lastModifiedDate":"2024-03-01"},{"lineNumber":42,"author":{"gitId":"Apzure"},"content":" * The event must not already exist in the list.","lastModifiedDate":"2024-03-01"},{"lineNumber":43,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-01"},{"lineNumber":44,"author":{"gitId":"Apzure"},"content":" public void add(Event toAdd) {","lastModifiedDate":"2024-03-01"},{"lineNumber":45,"author":{"gitId":"Apzure"},"content":" requireNonNull(toAdd);","lastModifiedDate":"2024-03-01"},{"lineNumber":46,"author":{"gitId":"Apzure"},"content":" if (contains(toAdd)) {","lastModifiedDate":"2024-03-01"},{"lineNumber":47,"author":{"gitId":"Apzure"},"content":" throw new DuplicateEventException();","lastModifiedDate":"2024-03-01"},{"lineNumber":48,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":49,"author":{"gitId":"Apzure"},"content":" internalList.add(toAdd);","lastModifiedDate":"2024-03-01"},{"lineNumber":50,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":51,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":52,"author":{"gitId":"Apzure"},"content":" /**","lastModifiedDate":"2024-03-01"},{"lineNumber":53,"author":{"gitId":"Apzure"},"content":" * Replaces the event {@code target} in the list with {@code editedEvent}.","lastModifiedDate":"2024-03-01"},{"lineNumber":54,"author":{"gitId":"Apzure"},"content":" * {@code target} must exist in the list.","lastModifiedDate":"2024-03-01"},{"lineNumber":55,"author":{"gitId":"Apzure"},"content":" * The event identity of {@code editedEvent} must not be the same as another existing event in the list.","lastModifiedDate":"2024-03-01"},{"lineNumber":56,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-01"},{"lineNumber":57,"author":{"gitId":"Apzure"},"content":" public void setEvent(Event target, Event editedEvent) {","lastModifiedDate":"2024-03-01"},{"lineNumber":58,"author":{"gitId":"Apzure"},"content":" requireAllNonNull(target, editedEvent);","lastModifiedDate":"2024-03-01"},{"lineNumber":59,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":60,"author":{"gitId":"Apzure"},"content":" int index \u003d internalList.indexOf(target);","lastModifiedDate":"2024-03-01"},{"lineNumber":61,"author":{"gitId":"Apzure"},"content":" if (index \u003d\u003d -1) {","lastModifiedDate":"2024-03-01"},{"lineNumber":62,"author":{"gitId":"Apzure"},"content":" throw new EventNotFoundException();","lastModifiedDate":"2024-03-01"},{"lineNumber":63,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":64,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":65,"author":{"gitId":"Apzure"},"content":" if (!target.isSameEvent(editedEvent) \u0026\u0026 contains(editedEvent)) {","lastModifiedDate":"2024-03-01"},{"lineNumber":66,"author":{"gitId":"Apzure"},"content":" throw new DuplicateEventException();","lastModifiedDate":"2024-03-01"},{"lineNumber":67,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":68,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":69,"author":{"gitId":"Apzure"},"content":" internalList.set(index, editedEvent);","lastModifiedDate":"2024-03-01"},{"lineNumber":70,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":71,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":72,"author":{"gitId":"Apzure"},"content":" /**","lastModifiedDate":"2024-03-01"},{"lineNumber":73,"author":{"gitId":"Apzure"},"content":" * Removes the equivalent event from the list.","lastModifiedDate":"2024-03-01"},{"lineNumber":74,"author":{"gitId":"Apzure"},"content":" * The event must exist in the list.","lastModifiedDate":"2024-03-01"},{"lineNumber":75,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-01"},{"lineNumber":76,"author":{"gitId":"Apzure"},"content":" public void remove(Event toRemove) {","lastModifiedDate":"2024-03-01"},{"lineNumber":77,"author":{"gitId":"Apzure"},"content":" requireNonNull(toRemove);","lastModifiedDate":"2024-03-01"},{"lineNumber":78,"author":{"gitId":"Apzure"},"content":" if (!internalList.remove(toRemove)) {","lastModifiedDate":"2024-03-01"},{"lineNumber":79,"author":{"gitId":"Apzure"},"content":" throw new EventNotFoundException();","lastModifiedDate":"2024-03-01"},{"lineNumber":80,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":81,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":82,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":83,"author":{"gitId":"Apzure"},"content":" public void setEvents(UniqueEventList replacement) {","lastModifiedDate":"2024-03-01"},{"lineNumber":84,"author":{"gitId":"Apzure"},"content":" requireNonNull(replacement);","lastModifiedDate":"2024-03-01"},{"lineNumber":85,"author":{"gitId":"Apzure"},"content":" internalList.setAll(replacement.internalList);","lastModifiedDate":"2024-03-01"},{"lineNumber":86,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":87,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":88,"author":{"gitId":"Apzure"},"content":" /**","lastModifiedDate":"2024-03-01"},{"lineNumber":89,"author":{"gitId":"Apzure"},"content":" * Replaces the contents of this list with {@code events}.","lastModifiedDate":"2024-03-01"},{"lineNumber":90,"author":{"gitId":"Apzure"},"content":" * {@code events} must not contain duplicate events.","lastModifiedDate":"2024-03-01"},{"lineNumber":91,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-01"},{"lineNumber":92,"author":{"gitId":"Apzure"},"content":" public void setEvents(List\u003cEvent\u003e events) {","lastModifiedDate":"2024-03-01"},{"lineNumber":93,"author":{"gitId":"Apzure"},"content":" requireAllNonNull(events);","lastModifiedDate":"2024-03-01"},{"lineNumber":94,"author":{"gitId":"Apzure"},"content":" if (!eventsAreUnique(events)) {","lastModifiedDate":"2024-03-01"},{"lineNumber":95,"author":{"gitId":"Apzure"},"content":" throw new DuplicateEventException();","lastModifiedDate":"2024-03-01"},{"lineNumber":96,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":97,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":98,"author":{"gitId":"Apzure"},"content":" internalList.setAll(events);","lastModifiedDate":"2024-03-01"},{"lineNumber":99,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":100,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":101,"author":{"gitId":"Apzure"},"content":" /**","lastModifiedDate":"2024-03-01"},{"lineNumber":102,"author":{"gitId":"Apzure"},"content":" * Returns the backing list as an unmodifiable {@code ObservableList}.","lastModifiedDate":"2024-03-01"},{"lineNumber":103,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-01"},{"lineNumber":104,"author":{"gitId":"Apzure"},"content":" public ObservableList\u003cEvent\u003e asUnmodifiableObservableList() {","lastModifiedDate":"2024-03-01"},{"lineNumber":105,"author":{"gitId":"Apzure"},"content":" return internalUnmodifiableList;","lastModifiedDate":"2024-03-01"},{"lineNumber":106,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":107,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":108,"author":{"gitId":"Apzure"},"content":" /// Utils","lastModifiedDate":"2024-03-04"},{"lineNumber":109,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":110,"author":{"gitId":"Apzure"},"content":" @Override","lastModifiedDate":"2024-03-01"},{"lineNumber":111,"author":{"gitId":"Apzure"},"content":" public Iterator\u003cEvent\u003e iterator() {","lastModifiedDate":"2024-03-01"},{"lineNumber":112,"author":{"gitId":"Apzure"},"content":" return internalList.iterator();","lastModifiedDate":"2024-03-01"},{"lineNumber":113,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":114,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":115,"author":{"gitId":"Apzure"},"content":" @Override","lastModifiedDate":"2024-03-01"},{"lineNumber":116,"author":{"gitId":"Apzure"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-01"},{"lineNumber":117,"author":{"gitId":"Apzure"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-01"},{"lineNumber":118,"author":{"gitId":"Apzure"},"content":" return true;","lastModifiedDate":"2024-03-01"},{"lineNumber":119,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":120,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":121,"author":{"gitId":"Apzure"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-01"},{"lineNumber":122,"author":{"gitId":"Apzure"},"content":" if (!(other instanceof UniqueEventList)) {","lastModifiedDate":"2024-03-01"},{"lineNumber":123,"author":{"gitId":"Apzure"},"content":" return false;","lastModifiedDate":"2024-03-01"},{"lineNumber":124,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":125,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":126,"author":{"gitId":"Apzure"},"content":" UniqueEventList otherUniqueEventList \u003d (UniqueEventList) other;","lastModifiedDate":"2024-03-01"},{"lineNumber":127,"author":{"gitId":"Apzure"},"content":" return internalList.equals(otherUniqueEventList.internalList);","lastModifiedDate":"2024-03-01"},{"lineNumber":128,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":129,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":130,"author":{"gitId":"Apzure"},"content":" @Override","lastModifiedDate":"2024-03-01"},{"lineNumber":131,"author":{"gitId":"Apzure"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-01"},{"lineNumber":132,"author":{"gitId":"Apzure"},"content":" return internalList.hashCode();","lastModifiedDate":"2024-03-01"},{"lineNumber":133,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":134,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":135,"author":{"gitId":"Apzure"},"content":" @Override","lastModifiedDate":"2024-03-01"},{"lineNumber":136,"author":{"gitId":"Apzure"},"content":" public String toString() {","lastModifiedDate":"2024-03-01"},{"lineNumber":137,"author":{"gitId":"Apzure"},"content":" return internalList.toString();","lastModifiedDate":"2024-03-01"},{"lineNumber":138,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":139,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":140,"author":{"gitId":"Apzure"},"content":" /**","lastModifiedDate":"2024-03-01"},{"lineNumber":141,"author":{"gitId":"Apzure"},"content":" * Returns true if {@code events} contains only unique events.","lastModifiedDate":"2024-03-01"},{"lineNumber":142,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-01"},{"lineNumber":143,"author":{"gitId":"Apzure"},"content":" private boolean eventsAreUnique(List\u003cEvent\u003e events) {","lastModifiedDate":"2024-03-01"},{"lineNumber":144,"author":{"gitId":"Apzure"},"content":" for (int i \u003d 0; i \u003c events.size() - 1; i++) {","lastModifiedDate":"2024-03-01"},{"lineNumber":145,"author":{"gitId":"Apzure"},"content":" for (int j \u003d i + 1; j \u003c events.size(); j++) {","lastModifiedDate":"2024-03-01"},{"lineNumber":146,"author":{"gitId":"Apzure"},"content":" if (events.get(i).isSameEvent(events.get(j))) {","lastModifiedDate":"2024-03-01"},{"lineNumber":147,"author":{"gitId":"Apzure"},"content":" return false;","lastModifiedDate":"2024-03-01"},{"lineNumber":148,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":149,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":150,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":151,"author":{"gitId":"Apzure"},"content":" return true;","lastModifiedDate":"2024-03-01"},{"lineNumber":152,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":153,"author":{"gitId":"Apzure"},"content":"}","lastModifiedDate":"2024-03-01"}],"authorContributionMap":{"Apzure":153}},{"path":"src/main/java/seedu/address/model/event/exceptions/DuplicateEventException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Apzure"},"content":"package seedu.address.model.event.exceptions;","lastModifiedDate":"2024-03-01"},{"lineNumber":2,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":3,"author":{"gitId":"Apzure"},"content":"/**","lastModifiedDate":"2024-03-01"},{"lineNumber":4,"author":{"gitId":"Apzure"},"content":" * Signals that the operation will result in duplicate Persons (Persons are considered duplicates if they have the same","lastModifiedDate":"2024-03-01"},{"lineNumber":5,"author":{"gitId":"Apzure"},"content":" * identity).","lastModifiedDate":"2024-03-01"},{"lineNumber":6,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-01"},{"lineNumber":7,"author":{"gitId":"Apzure"},"content":"public class DuplicateEventException extends RuntimeException {","lastModifiedDate":"2024-03-01"},{"lineNumber":8,"author":{"gitId":"Apzure"},"content":" public DuplicateEventException() {","lastModifiedDate":"2024-03-01"},{"lineNumber":9,"author":{"gitId":"Apzure"},"content":" super(\"Operation would result in duplicate events\");","lastModifiedDate":"2024-03-01"},{"lineNumber":10,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":11,"author":{"gitId":"Apzure"},"content":"}","lastModifiedDate":"2024-03-01"}],"authorContributionMap":{"Apzure":11}},{"path":"src/main/java/seedu/address/model/event/exceptions/EventNotFoundException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Apzure"},"content":"package seedu.address.model.event.exceptions;","lastModifiedDate":"2024-03-01"},{"lineNumber":2,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":3,"author":{"gitId":"Apzure"},"content":"/**","lastModifiedDate":"2024-03-01"},{"lineNumber":4,"author":{"gitId":"Apzure"},"content":" * Signals that the operation is unable to find the specified person.","lastModifiedDate":"2024-03-01"},{"lineNumber":5,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-01"},{"lineNumber":6,"author":{"gitId":"Apzure"},"content":"public class EventNotFoundException extends RuntimeException {}","lastModifiedDate":"2024-03-01"}],"authorContributionMap":{"Apzure":6}},{"path":"src/main/java/seedu/address/ui/EventCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Apzure"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-03-01"},{"lineNumber":2,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":3,"author":{"gitId":"Apzure"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-03-01"},{"lineNumber":4,"author":{"gitId":"Apzure"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2024-03-01"},{"lineNumber":5,"author":{"gitId":"Apzure"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2024-03-01"},{"lineNumber":6,"author":{"gitId":"Apzure"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-03-01"},{"lineNumber":7,"author":{"gitId":"Apzure"},"content":"import seedu.address.model.event.Event;","lastModifiedDate":"2024-03-01"},{"lineNumber":8,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":9,"author":{"gitId":"Apzure"},"content":"/**","lastModifiedDate":"2024-03-01"},{"lineNumber":10,"author":{"gitId":"Apzure"},"content":" * A UI component that displays information of an {@code Event}.","lastModifiedDate":"2024-03-01"},{"lineNumber":11,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-01"},{"lineNumber":12,"author":{"gitId":"Apzure"},"content":"public class EventCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-03-01"},{"lineNumber":13,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":14,"author":{"gitId":"Apzure"},"content":" private static final String FXML \u003d \"EventListCard.fxml\";","lastModifiedDate":"2024-03-01"},{"lineNumber":15,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":16,"author":{"gitId":"Apzure"},"content":" @FXML","lastModifiedDate":"2024-03-01"},{"lineNumber":17,"author":{"gitId":"Apzure"},"content":" private HBox cardPane;","lastModifiedDate":"2024-03-01"},{"lineNumber":18,"author":{"gitId":"Apzure"},"content":" @FXML","lastModifiedDate":"2024-03-01"},{"lineNumber":19,"author":{"gitId":"Apzure"},"content":" private Label id;","lastModifiedDate":"2024-03-01"},{"lineNumber":20,"author":{"gitId":"Apzure"},"content":" @FXML","lastModifiedDate":"2024-03-01"},{"lineNumber":21,"author":{"gitId":"Apzure"},"content":" private Label name;","lastModifiedDate":"2024-03-01"},{"lineNumber":22,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":23,"author":{"gitId":"Apzure"},"content":" /**","lastModifiedDate":"2024-03-01"},{"lineNumber":24,"author":{"gitId":"Apzure"},"content":" * Creates a {@code EventCard} with the given {@code Event} and index to display.","lastModifiedDate":"2024-03-01"},{"lineNumber":25,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-01"},{"lineNumber":26,"author":{"gitId":"Apzure"},"content":" public EventCard(Event event, int displayedIndex) {","lastModifiedDate":"2024-03-01"},{"lineNumber":27,"author":{"gitId":"Apzure"},"content":" super(FXML);","lastModifiedDate":"2024-03-01"},{"lineNumber":28,"author":{"gitId":"Apzure"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2024-03-01"},{"lineNumber":29,"author":{"gitId":"Apzure"},"content":" name.setText(event.getEventName().eventName);","lastModifiedDate":"2024-03-01"},{"lineNumber":30,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":31,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":32,"author":{"gitId":"Apzure"},"content":" public Region getRoot() {","lastModifiedDate":"2024-03-01"},{"lineNumber":33,"author":{"gitId":"Apzure"},"content":" return cardPane;","lastModifiedDate":"2024-03-01"},{"lineNumber":34,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":35,"author":{"gitId":"Apzure"},"content":"}","lastModifiedDate":"2024-03-01"}],"authorContributionMap":{"Apzure":35}},{"path":"src/main/java/seedu/address/ui/EventListPanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Apzure"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-03-01"},{"lineNumber":2,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":3,"author":{"gitId":"Apzure"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-03-01"},{"lineNumber":4,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":5,"author":{"gitId":"Apzure"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-01"},{"lineNumber":6,"author":{"gitId":"Apzure"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-03-01"},{"lineNumber":7,"author":{"gitId":"Apzure"},"content":"import javafx.scene.control.ListCell;","lastModifiedDate":"2024-03-01"},{"lineNumber":8,"author":{"gitId":"Apzure"},"content":"import javafx.scene.control.ListView;","lastModifiedDate":"2024-03-01"},{"lineNumber":9,"author":{"gitId":"Apzure"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-03-01"},{"lineNumber":10,"author":{"gitId":"Apzure"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-03-01"},{"lineNumber":11,"author":{"gitId":"Apzure"},"content":"import seedu.address.model.event.Event;","lastModifiedDate":"2024-03-01"},{"lineNumber":12,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":13,"author":{"gitId":"Apzure"},"content":"/**","lastModifiedDate":"2024-03-01"},{"lineNumber":14,"author":{"gitId":"Apzure"},"content":" * Panel containing the list of events.","lastModifiedDate":"2024-03-01"},{"lineNumber":15,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-01"},{"lineNumber":16,"author":{"gitId":"Apzure"},"content":"public class EventListPanel extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-03-01"},{"lineNumber":17,"author":{"gitId":"Apzure"},"content":" private static final String FXML \u003d \"EventListPanel.fxml\";","lastModifiedDate":"2024-03-01"},{"lineNumber":18,"author":{"gitId":"Apzure"},"content":" private final Logger logger \u003d LogsCenter.getLogger(EventListPanel.class);","lastModifiedDate":"2024-03-01"},{"lineNumber":19,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":20,"author":{"gitId":"Apzure"},"content":" @FXML","lastModifiedDate":"2024-03-01"},{"lineNumber":21,"author":{"gitId":"Apzure"},"content":" private ListView\u003cEvent\u003e eventListView;","lastModifiedDate":"2024-03-01"},{"lineNumber":22,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":23,"author":{"gitId":"Apzure"},"content":" /**","lastModifiedDate":"2024-03-01"},{"lineNumber":24,"author":{"gitId":"Apzure"},"content":" * Creates an {@code EventListPanel} with the given {@code ObservableList}.","lastModifiedDate":"2024-03-01"},{"lineNumber":25,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-01"},{"lineNumber":26,"author":{"gitId":"Apzure"},"content":" public EventListPanel(ObservableList\u003cEvent\u003e eventList) {","lastModifiedDate":"2024-03-01"},{"lineNumber":27,"author":{"gitId":"Apzure"},"content":" super(FXML);","lastModifiedDate":"2024-03-01"},{"lineNumber":28,"author":{"gitId":"Apzure"},"content":" eventListView.setItems(eventList);","lastModifiedDate":"2024-03-01"},{"lineNumber":29,"author":{"gitId":"Apzure"},"content":" eventListView.setCellFactory(listView -\u003e new EventListViewCell());","lastModifiedDate":"2024-03-01"},{"lineNumber":30,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":31,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":32,"author":{"gitId":"Apzure"},"content":" /**","lastModifiedDate":"2024-03-01"},{"lineNumber":33,"author":{"gitId":"Apzure"},"content":" * Custom {@code ListCell} that displays the graphics of an {@code Event} using an {@code EventCard}.","lastModifiedDate":"2024-03-01"},{"lineNumber":34,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-01"},{"lineNumber":35,"author":{"gitId":"Apzure"},"content":" class EventListViewCell extends ListCell\u003cEvent\u003e {","lastModifiedDate":"2024-03-01"},{"lineNumber":36,"author":{"gitId":"Apzure"},"content":" @Override","lastModifiedDate":"2024-03-01"},{"lineNumber":37,"author":{"gitId":"Apzure"},"content":" protected void updateItem(Event event, boolean empty) {","lastModifiedDate":"2024-03-01"},{"lineNumber":38,"author":{"gitId":"Apzure"},"content":" super.updateItem(event, empty);","lastModifiedDate":"2024-03-01"},{"lineNumber":39,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":40,"author":{"gitId":"Apzure"},"content":" if (empty || event \u003d\u003d null) {","lastModifiedDate":"2024-03-01"},{"lineNumber":41,"author":{"gitId":"Apzure"},"content":" setGraphic(null);","lastModifiedDate":"2024-03-01"},{"lineNumber":42,"author":{"gitId":"Apzure"},"content":" setText(null);","lastModifiedDate":"2024-03-01"},{"lineNumber":43,"author":{"gitId":"Apzure"},"content":" } else {","lastModifiedDate":"2024-03-01"},{"lineNumber":44,"author":{"gitId":"Apzure"},"content":" setGraphic(new EventCard(event, getIndex() + 1).getRoot());","lastModifiedDate":"2024-03-01"},{"lineNumber":45,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":46,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":47,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":48,"author":{"gitId":"Apzure"},"content":"}","lastModifiedDate":"2024-03-01"}],"authorContributionMap":{"Apzure":48}},{"path":"src/main/java/seedu/address/ui/MainWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-06-16"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.event.ActionEvent;","lastModifiedDate":"2016-12-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-08-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.MenuItem;","lastModifiedDate":"2016-08-26"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.control.TextInputControl;","lastModifiedDate":"2016-12-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyCombination;","lastModifiedDate":"2016-08-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyEvent;","lastModifiedDate":"2016-12-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.scene.layout.StackPane;","lastModifiedDate":"2017-05-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2016-09-28"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2017-06-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.Logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * The Main Window. Provides the basic application layout containing","lastModifiedDate":"2016-08-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * a menu bar and space where other JavaFX elements can be placed.","lastModifiedDate":"2016-08-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class MainWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-11-29"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"MainWindow.fxml\";","lastModifiedDate":"2016-08-18"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(getClass());","lastModifiedDate":"2018-08-14"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Stage primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // Independent Ui parts residing in this Ui container","lastModifiedDate":"2016-08-18"},{"lineNumber":34,"author":{"gitId":"Apzure"},"content":" private EventListPanel eventListPanel;","lastModifiedDate":"2024-03-01"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private PersonListPanel personListPanel;","lastModifiedDate":"2016-08-18"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private ResultDisplay resultDisplay;","lastModifiedDate":"2018-12-09"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private HelpWindow helpWindow;","lastModifiedDate":"2018-03-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private StackPane commandBoxPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":43,"author":{"gitId":"-"},"content":" private MenuItem helpMenuItem;","lastModifiedDate":"2016-08-18"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":45,"author":{"gitId":"Apzure"},"content":" @FXML","lastModifiedDate":"2024-03-01"},{"lineNumber":46,"author":{"gitId":"Apzure"},"content":" private StackPane eventListPanelPlaceholder;","lastModifiedDate":"2024-03-01"},{"lineNumber":47,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":" private StackPane personListPanelPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":51,"author":{"gitId":"Apzure"},"content":" @FXML","lastModifiedDate":"2024-03-15"},{"lineNumber":52,"author":{"gitId":"Apzure"},"content":" private StackPane personListOfSelectedEventPanelPlaceholder;","lastModifiedDate":"2024-03-15"},{"lineNumber":53,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" private StackPane resultDisplayPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" private StackPane statusbarPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * Creates a {@code MainWindow} with the given {@code Stage} and {@code Logic}.","lastModifiedDate":"2020-05-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public MainWindow(Stage primaryStage, Logic logic) {","lastModifiedDate":"2018-12-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" super(FXML, primaryStage);","lastModifiedDate":"2017-11-29"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":" // Set dependencies","lastModifiedDate":"2016-09-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":" this.primaryStage \u003d primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":68,"author":{"gitId":"-"},"content":" this.logic \u003d logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":70,"author":{"gitId":"-"},"content":" // Configure the UI","lastModifiedDate":"2016-09-21"},{"lineNumber":71,"author":{"gitId":"-"},"content":" setWindowDefaultSize(logic.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":73,"author":{"gitId":"-"},"content":" setAccelerators();","lastModifiedDate":"2016-09-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":75,"author":{"gitId":"-"},"content":" helpWindow \u003d new HelpWindow();","lastModifiedDate":"2018-03-15"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public Stage getPrimaryStage() {","lastModifiedDate":"2016-12-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":" return primaryStage;","lastModifiedDate":"2016-12-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":82,"author":{"gitId":"-"},"content":" private void setAccelerators() {","lastModifiedDate":"2016-09-21"},{"lineNumber":83,"author":{"gitId":"-"},"content":" setAccelerator(helpMenuItem, KeyCombination.valueOf(\"F1\"));","lastModifiedDate":"2016-12-18"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Sets the accelerator of a MenuItem.","lastModifiedDate":"2016-12-18"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * @param keyCombination the KeyCombination value of the accelerator","lastModifiedDate":"2016-12-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":" private void setAccelerator(MenuItem menuItem, KeyCombination keyCombination) {","lastModifiedDate":"2016-12-18"},{"lineNumber":91,"author":{"gitId":"-"},"content":" menuItem.setAccelerator(keyCombination);","lastModifiedDate":"2016-12-18"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":93,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-12-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * TODO: the code below can be removed once the bug reported here","lastModifiedDate":"2016-12-18"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * https://bugs.openjdk.java.net/browse/JDK-8131666","lastModifiedDate":"2016-12-18"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * is fixed in later version of SDK.","lastModifiedDate":"2016-12-18"},{"lineNumber":97,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * According to the bug report, TextInputControl (TextField, TextArea) will","lastModifiedDate":"2016-12-18"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * consume function-key events. Because CommandBox contains a TextField, and","lastModifiedDate":"2016-12-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * ResultDisplay contains a TextArea, thus some accelerators (e.g F1) will","lastModifiedDate":"2016-12-18"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * not work when the focus is in them because the key event is consumed by","lastModifiedDate":"2016-12-18"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * the TextInputControl(s).","lastModifiedDate":"2016-12-18"},{"lineNumber":103,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":104,"author":{"gitId":"-"},"content":" * For now, we add following event filter to capture such key events and open","lastModifiedDate":"2016-12-18"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * help window purposely so to support accelerators even when focus is","lastModifiedDate":"2016-12-18"},{"lineNumber":106,"author":{"gitId":"-"},"content":" * in CommandBox or ResultDisplay.","lastModifiedDate":"2016-12-18"},{"lineNumber":107,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":108,"author":{"gitId":"-"},"content":" getRoot().addEventFilter(KeyEvent.KEY_PRESSED, event -\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":109,"author":{"gitId":"-"},"content":" if (event.getTarget() instanceof TextInputControl \u0026\u0026 keyCombination.match(event)) {","lastModifiedDate":"2016-12-18"},{"lineNumber":110,"author":{"gitId":"-"},"content":" menuItem.getOnAction().handle(new ActionEvent());","lastModifiedDate":"2016-12-18"},{"lineNumber":111,"author":{"gitId":"-"},"content":" event.consume();","lastModifiedDate":"2016-12-18"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":113,"author":{"gitId":"-"},"content":" });","lastModifiedDate":"2016-12-18"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":116,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":117,"author":{"gitId":"-"},"content":" * Fills up all the placeholders of this window.","lastModifiedDate":"2017-08-16"},{"lineNumber":118,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":119,"author":{"gitId":"-"},"content":" void fillInnerParts() {","lastModifiedDate":"2016-09-21"},{"lineNumber":120,"author":{"gitId":"-"},"content":" personListPanel \u003d new PersonListPanel(logic.getFilteredPersonList());","lastModifiedDate":"2019-01-25"},{"lineNumber":121,"author":{"gitId":"-"},"content":" personListPanelPlaceholder.getChildren().add(personListPanel.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":123,"author":{"gitId":"Apzure"},"content":" eventListPanel \u003d new EventListPanel(logic.getFilteredEventList());","lastModifiedDate":"2024-03-15"},{"lineNumber":124,"author":{"gitId":"Apzure"},"content":" eventListPanelPlaceholder.getChildren().add(eventListPanel.getRoot());","lastModifiedDate":"2024-03-01"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":126,"author":{"gitId":"-"},"content":" resultDisplay \u003d new ResultDisplay();","lastModifiedDate":"2018-12-09"},{"lineNumber":127,"author":{"gitId":"-"},"content":" resultDisplayPlaceholder.getChildren().add(resultDisplay.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":129,"author":{"gitId":"-"},"content":" StatusBarFooter statusBarFooter \u003d new StatusBarFooter(logic.getAddressBookFilePath());","lastModifiedDate":"2019-01-25"},{"lineNumber":130,"author":{"gitId":"-"},"content":" statusbarPlaceholder.getChildren().add(statusBarFooter.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":132,"author":{"gitId":"-"},"content":" CommandBox commandBox \u003d new CommandBox(this::executeCommand);","lastModifiedDate":"2019-01-25"},{"lineNumber":133,"author":{"gitId":"-"},"content":" commandBoxPlaceholder.getChildren().add(commandBox.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":136,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":137,"author":{"gitId":"-"},"content":" * Sets the default size based on {@code guiSettings}.","lastModifiedDate":"2018-11-27"},{"lineNumber":138,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":139,"author":{"gitId":"-"},"content":" private void setWindowDefaultSize(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":140,"author":{"gitId":"-"},"content":" primaryStage.setHeight(guiSettings.getWindowHeight());","lastModifiedDate":"2018-11-27"},{"lineNumber":141,"author":{"gitId":"-"},"content":" primaryStage.setWidth(guiSettings.getWindowWidth());","lastModifiedDate":"2018-11-27"},{"lineNumber":142,"author":{"gitId":"-"},"content":" if (guiSettings.getWindowCoordinates() !\u003d null) {","lastModifiedDate":"2018-11-27"},{"lineNumber":143,"author":{"gitId":"-"},"content":" primaryStage.setX(guiSettings.getWindowCoordinates().getX());","lastModifiedDate":"2018-11-27"},{"lineNumber":144,"author":{"gitId":"-"},"content":" primaryStage.setY(guiSettings.getWindowCoordinates().getY());","lastModifiedDate":"2018-11-27"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":148,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":149,"author":{"gitId":"-"},"content":" * Opens the help window or focuses on it if it\u0027s already opened.","lastModifiedDate":"2018-03-15"},{"lineNumber":150,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":151,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":152,"author":{"gitId":"-"},"content":" public void handleHelp() {","lastModifiedDate":"2016-08-31"},{"lineNumber":153,"author":{"gitId":"-"},"content":" if (!helpWindow.isShowing()) {","lastModifiedDate":"2018-03-15"},{"lineNumber":154,"author":{"gitId":"-"},"content":" helpWindow.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":155,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-15"},{"lineNumber":156,"author":{"gitId":"-"},"content":" helpWindow.focus();","lastModifiedDate":"2018-03-15"},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":158,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":160,"author":{"gitId":"-"},"content":" void show() {","lastModifiedDate":"2016-10-15"},{"lineNumber":161,"author":{"gitId":"-"},"content":" primaryStage.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":162,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":164,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":165,"author":{"gitId":"-"},"content":" * Closes the application.","lastModifiedDate":"2016-08-18"},{"lineNumber":166,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":167,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":168,"author":{"gitId":"-"},"content":" private void handleExit() {","lastModifiedDate":"2016-08-18"},{"lineNumber":169,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(primaryStage.getWidth(), primaryStage.getHeight(),","lastModifiedDate":"2018-12-08"},{"lineNumber":170,"author":{"gitId":"-"},"content":" (int) primaryStage.getX(), (int) primaryStage.getY());","lastModifiedDate":"2018-12-08"},{"lineNumber":171,"author":{"gitId":"-"},"content":" logic.setGuiSettings(guiSettings);","lastModifiedDate":"2018-12-08"},{"lineNumber":172,"author":{"gitId":"-"},"content":" helpWindow.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":173,"author":{"gitId":"-"},"content":" primaryStage.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-25"},{"lineNumber":176,"author":{"gitId":"Apzure"},"content":" public EventListPanel getEventListPanel() {","lastModifiedDate":"2024-03-01"},{"lineNumber":177,"author":{"gitId":"Apzure"},"content":" return eventListPanel;","lastModifiedDate":"2024-03-01"},{"lineNumber":178,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":179,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":180,"author":{"gitId":"-"},"content":" public PersonListPanel getPersonListPanel() {","lastModifiedDate":"2016-08-25"},{"lineNumber":181,"author":{"gitId":"-"},"content":" return personListPanel;","lastModifiedDate":"2018-08-14"},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-25"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":184,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":185,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2018-12-09"},{"lineNumber":186,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09"},{"lineNumber":187,"author":{"gitId":"-"},"content":" * @see seedu.address.logic.Logic#execute(String)","lastModifiedDate":"2018-12-09"},{"lineNumber":188,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":189,"author":{"gitId":"-"},"content":" private CommandResult executeCommand(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2018-12-09"},{"lineNumber":190,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":191,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d logic.execute(commandText);","lastModifiedDate":"2018-12-09"},{"lineNumber":192,"author":{"gitId":"-"},"content":" logger.info(\"Result: \" + commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":193,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":195,"author":{"gitId":"-"},"content":" if (commandResult.isShowHelp()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":196,"author":{"gitId":"-"},"content":" handleHelp();","lastModifiedDate":"2018-12-09"},{"lineNumber":197,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":199,"author":{"gitId":"-"},"content":" if (commandResult.isExit()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":200,"author":{"gitId":"-"},"content":" handleExit();","lastModifiedDate":"2018-12-09"},{"lineNumber":201,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":203,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":204,"author":{"gitId":"-"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2018-12-09"},{"lineNumber":205,"author":{"gitId":"-"},"content":" logger.info(\"An error occurred while executing command: \" + commandText);","lastModifiedDate":"2023-06-13"},{"lineNumber":206,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(e.getMessage());","lastModifiedDate":"2018-12-09"},{"lineNumber":207,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2018-12-09"},{"lineNumber":208,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":209,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":210,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"Apzure":13,"-":197}},{"path":"src/main/resources/view/EventListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Apzure"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-03-01"},{"lineNumber":2,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":3,"author":{"gitId":"Apzure"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-03-01"},{"lineNumber":4,"author":{"gitId":"Apzure"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-03-01"},{"lineNumber":5,"author":{"gitId":"Apzure"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2024-03-01"},{"lineNumber":6,"author":{"gitId":"Apzure"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2024-03-01"},{"lineNumber":7,"author":{"gitId":"Apzure"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2024-03-01"},{"lineNumber":8,"author":{"gitId":"Apzure"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-03-01"},{"lineNumber":9,"author":{"gitId":"Apzure"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2024-03-01"},{"lineNumber":10,"author":{"gitId":"Apzure"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-03-01"},{"lineNumber":11,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":12,"author":{"gitId":"Apzure"},"content":"\u003cHBox id\u003d\"cardPane\" fx:id\u003d\"cardPane\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-03-01"},{"lineNumber":13,"author":{"gitId":"Apzure"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-01"},{"lineNumber":14,"author":{"gitId":"Apzure"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2024-03-01"},{"lineNumber":15,"author":{"gitId":"Apzure"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2024-03-01"},{"lineNumber":16,"author":{"gitId":"Apzure"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2024-03-01"},{"lineNumber":17,"author":{"gitId":"Apzure"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2024-03-01"},{"lineNumber":18,"author":{"gitId":"Apzure"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-01"},{"lineNumber":19,"author":{"gitId":"Apzure"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2024-03-01"},{"lineNumber":20,"author":{"gitId":"Apzure"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-01"},{"lineNumber":21,"author":{"gitId":"Apzure"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-03-01"},{"lineNumber":22,"author":{"gitId":"Apzure"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2024-03-01"},{"lineNumber":23,"author":{"gitId":"Apzure"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2024-03-01"},{"lineNumber":24,"author":{"gitId":"Apzure"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2024-03-01"},{"lineNumber":25,"author":{"gitId":"Apzure"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2024-03-01"},{"lineNumber":26,"author":{"gitId":"Apzure"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2024-03-01"},{"lineNumber":27,"author":{"gitId":"Apzure"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-03-01"},{"lineNumber":28,"author":{"gitId":"Apzure"},"content":" \u003cLabel fx:id\u003d\"name\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2024-03-01"},{"lineNumber":29,"author":{"gitId":"Apzure"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-01"},{"lineNumber":30,"author":{"gitId":"Apzure"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-01"},{"lineNumber":31,"author":{"gitId":"Apzure"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2024-03-01"},{"lineNumber":32,"author":{"gitId":"Apzure"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2024-03-01"}],"authorContributionMap":{"Apzure":32}},{"path":"src/main/resources/view/EventListPanel.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Apzure"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-03-01"},{"lineNumber":2,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":3,"author":{"gitId":"Apzure"},"content":"\u003c?import javafx.scene.control.ListView?\u003e","lastModifiedDate":"2024-03-01"},{"lineNumber":4,"author":{"gitId":"Apzure"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-03-01"},{"lineNumber":5,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":6,"author":{"gitId":"Apzure"},"content":"\u003cVBox xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-03-01"},{"lineNumber":7,"author":{"gitId":"Apzure"},"content":" \u003cListView fx:id\u003d\"eventListView\" VBox.vgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2024-03-01"},{"lineNumber":8,"author":{"gitId":"Apzure"},"content":"\u003c/VBox\u003e","lastModifiedDate":"2024-03-01"}],"authorContributionMap":{"Apzure":8}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2016-08-26"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Menu?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuBar?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuItem?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.SplitPane?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"\u003cfx:root type\u003d\"javafx.stage.Stage\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"","lastModifiedDate":"2023-07-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":" title\u003d\"Address App\" minWidth\u003d\"450\" minHeight\u003d\"600\" onCloseRequest\u003d\"#handleExit\"\u003e","lastModifiedDate":"2018-12-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cicons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cImage url\u003d\"@/images/address_book_32.png\"/\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/icons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cscene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cScene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@DarkTheme.css\"/\u003e","lastModifiedDate":"2016-08-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@Extensions.css\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003cVBox\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cMenuBar fx:id\u003d\"menuBar\" VBox.vgrow\u003d\"NEVER\"\u003e","lastModifiedDate":"2017-06-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"File\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003cMenuItem mnemonicParsing\u003d\"false\" onAction\u003d\"#handleExit\" text\u003d\"Exit\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"Help\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cMenuItem fx:id\u003d\"helpMenuItem\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleHelp\" text\u003d\"Help\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003c/MenuBar\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"commandBoxPlaceholder\" styleClass\u003d\"pane-with-border\"\u003e","lastModifiedDate":"2017-05-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\"/\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"resultDisplayPlaceholder\" styleClass\u003d\"pane-with-border\"","lastModifiedDate":"2017-05-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":" minHeight\u003d\"100\" prefHeight\u003d\"100\" maxHeight\u003d\"100\"\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":45,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\"/\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":47,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":49,"author":{"gitId":"Apzure"},"content":" \u003cSplitPane dividerPositions\u003d\"0.3, 0.6\" VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":50,"author":{"gitId":"Apzure"},"content":" \u003citems\u003e","lastModifiedDate":"2024-03-01"},{"lineNumber":51,"author":{"gitId":"Apzure"},"content":" \u003cStackPane fx:id\u003d\"eventListPanelPlaceholder\" styleClass\u003d\"pane-with-border\" minWidth\u003d\"200\" prefWidth\u003d\"200\" SplitPane.resizableWithParent\u003d\"false\"\u003e","lastModifiedDate":"2024-03-01"},{"lineNumber":52,"author":{"gitId":"Apzure"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-01"},{"lineNumber":53,"author":{"gitId":"Apzure"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"10\" left\u003d\"10\"/\u003e","lastModifiedDate":"2024-03-01"},{"lineNumber":54,"author":{"gitId":"Apzure"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-01"},{"lineNumber":55,"author":{"gitId":"Apzure"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2024-03-01"},{"lineNumber":56,"author":{"gitId":"Apzure"},"content":" \u003cStackPane fx:id\u003d\"personListPanelPlaceholder\" styleClass\u003d\"pane-with-border\" minWidth\u003d\"200\" prefWidth\u003d\"200\" SplitPane.resizableWithParent\u003d\"false\"\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":57,"author":{"gitId":"Apzure"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":58,"author":{"gitId":"Apzure"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"10\" left\u003d\"10\"/\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":59,"author":{"gitId":"Apzure"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":60,"author":{"gitId":"Apzure"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":61,"author":{"gitId":"Apzure"},"content":" \u003c/items\u003e","lastModifiedDate":"2024-03-01"},{"lineNumber":62,"author":{"gitId":"Apzure"},"content":" \u003c/SplitPane\u003e","lastModifiedDate":"2024-03-01"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":64,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"statusbarPlaceholder\" VBox.vgrow\u003d\"NEVER\"/\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":65,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":67,"author":{"gitId":"-"},"content":" \u003c/scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":68,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-11-29"}],"authorContributionMap":{"Apzure":14,"-":54}},{"path":"src/test/java/seedu/address/logic/LogicManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2018-12-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2017-01-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2016-09-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-31"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-12-09"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-12-09"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2018-12-09"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2018-12-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-12-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":"public class LogicManagerTest {","lastModifiedDate":"2016-09-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_IO_EXCEPTION \u003d new IOException(\"dummy IO exception\");","lastModifiedDate":"2023-06-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_AD_EXCEPTION \u003d new AccessDeniedException(\"dummy access denied exception\");","lastModifiedDate":"2023-06-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public Path temporaryFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-20"},{"lineNumber":44,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2018-12-09"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":46,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2019-04-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d","lastModifiedDate":"2019-04-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(temporaryFolder.resolve(\"addressBook.json\"));","lastModifiedDate":"2019-04-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2019-04-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2018-12-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-20"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void execute_invalidCommandFormat_throwsParseException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":57,"author":{"gitId":"-"},"content":" String invalidCommand \u003d \"uicfhmowqewca\";","lastModifiedDate":"2017-06-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertParseException(invalidCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-06-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-14"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void execute_commandExecutionError_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":63,"author":{"gitId":"-"},"content":" String deleteCommand \u003d \"delete 9\";","lastModifiedDate":"2017-06-14"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertCommandException(deleteCommand, MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2017-06-14"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void execute_validCommand_success() throws Exception {","lastModifiedDate":"2019-03-14"},{"lineNumber":69,"author":{"gitId":"-"},"content":" String listCommand \u003d ListCommand.COMMAND_WORD;","lastModifiedDate":"2017-06-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertCommandSuccess(listCommand, ListCommand.MESSAGE_SUCCESS, model);","lastModifiedDate":"2017-06-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20"},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2019-04-25"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-06-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-06-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2023-06-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":85,"author":{"gitId":"myang2020"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":86,"author":{"gitId":"myang2020"},"content":" public void getFilteredPersonListOfSelectedEvent_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":87,"author":{"gitId":"myang2020"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredPersonListOfSelectedEvent().remove(0));","lastModifiedDate":"2024-03-16"},{"lineNumber":88,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":89,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":95,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":101,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":102,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14"},{"lineNumber":103,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14"},{"lineNumber":104,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14"},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14"},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":109,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"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"},{"lineNumber":111,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":112,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":113,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":117,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14"},{"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"},{"lineNumber":119,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"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"},{"lineNumber":127,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":128,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":129,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":130,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14"},{"lineNumber":131,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-05-31"},{"lineNumber":132,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":135,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":136,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":137,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":138,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":139,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":140,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":141,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":142,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":143,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31"},{"lineNumber":144,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14"},{"lineNumber":145,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19"},{"lineNumber":148,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":149,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13"},{"lineNumber":150,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13"},{"lineNumber":151,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13"},{"lineNumber":152,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13"},{"lineNumber":153,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":154,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13"},{"lineNumber":155,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":157,"author":{"gitId":"-"},"content":" // Inject LogicManager with an AddressBookStorage that throws the IOException e when saving","lastModifiedDate":"2023-06-13"},{"lineNumber":158,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(prefPath) {","lastModifiedDate":"2023-06-13"},{"lineNumber":159,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":160,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath)","lastModifiedDate":"2023-06-13"},{"lineNumber":161,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13"},{"lineNumber":162,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13"},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":164,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":166,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":167,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13"},{"lineNumber":168,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2023-06-13"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":170,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":172,"author":{"gitId":"-"},"content":" // Triggers the saveAddressBook method by executing an add command","lastModifiedDate":"2023-06-13"},{"lineNumber":173,"author":{"gitId":"-"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2023-06-13"},{"lineNumber":174,"author":{"gitId":"-"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY;","lastModifiedDate":"2023-06-13"},{"lineNumber":175,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2023-06-13"},{"lineNumber":176,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13"},{"lineNumber":177,"author":{"gitId":"-"},"content":" expectedModel.addPerson(expectedPerson);","lastModifiedDate":"2023-06-13"},{"lineNumber":178,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13"},{"lineNumber":179,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":180,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"-":175,"myang2020":5}},{"path":"src/test/java/seedu/address/logic/commands/AddCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-01-10"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-05-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-05-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2017-05-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-12"},{"lineNumber":20,"author":{"gitId":"myang2020"},"content":"import seedu.address.testutil.ModelStub;","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class AddCommandTest {","lastModifiedDate":"2017-05-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddCommand(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void execute_personAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2017-05-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" ModelStubAcceptingPersonAdded modelStub \u003d new ModelStubAcceptingPersonAdded();","lastModifiedDate":"2017-05-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new AddCommand(validPerson).execute(modelStub);","lastModifiedDate":"2019-01-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertEquals(String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validPerson)),","lastModifiedDate":"2019-02-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2019-02-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(validPerson), modelStub.personsAdded);","lastModifiedDate":"2017-05-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(validPerson);","lastModifiedDate":"2018-08-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":" ModelStub modelStub \u003d new ModelStubWithPerson(validPerson);","lastModifiedDate":"2018-08-07"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, AddCommand.MESSAGE_DUPLICATE_PERSON, () -\u003e addCommand.execute(modelStub));","lastModifiedDate":"2019-05-03"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-22"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":53,"author":{"gitId":"-"},"content":" Person alice \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2017-06-22"},{"lineNumber":54,"author":{"gitId":"-"},"content":" Person bob \u003d new PersonBuilder().withName(\"Bob\").build();","lastModifiedDate":"2017-06-22"},{"lineNumber":55,"author":{"gitId":"-"},"content":" AddCommand addAliceCommand \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22"},{"lineNumber":56,"author":{"gitId":"-"},"content":" AddCommand addBobCommand \u003d new AddCommand(bob);","lastModifiedDate":"2017-06-22"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":58,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommand));","lastModifiedDate":"2017-06-22"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":61,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":62,"author":{"gitId":"-"},"content":" AddCommand addAliceCommandCopy \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommandCopy));","lastModifiedDate":"2017-06-22"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(1));","lastModifiedDate":"2017-06-22"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(null));","lastModifiedDate":"2017-06-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(addBobCommand));","lastModifiedDate":"2017-06-22"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(ALICE);","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":" String expected \u003d AddCommand.class.getCanonicalName() + \"{toAdd\u003d\" + ALICE + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertEquals(expected, addCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * A Model stub that contains a single person.","lastModifiedDate":"2018-08-07"},{"lineNumber":84,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":85,"author":{"gitId":"-"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2018-08-07"},{"lineNumber":86,"author":{"gitId":"-"},"content":" private final Person person;","lastModifiedDate":"2018-08-07"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":88,"author":{"gitId":"-"},"content":" ModelStubWithPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":89,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":90,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2018-08-07"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":94,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":95,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":96,"author":{"gitId":"-"},"content":" return this.person.isSamePerson(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":100,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2017-05-12"},{"lineNumber":102,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":103,"author":{"gitId":"-"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2017-05-12"},{"lineNumber":104,"author":{"gitId":"-"},"content":" final ArrayList\u003cPerson\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2017-05-12"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":108,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":109,"author":{"gitId":"-"},"content":" return personsAdded.stream().anyMatch(person::isSamePerson);","lastModifiedDate":"2018-08-07"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":113,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":115,"author":{"gitId":"-"},"content":" personsAdded.add(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":118,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":119,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04"},{"lineNumber":120,"author":{"gitId":"-"},"content":" return new AddressBook();","lastModifiedDate":"2017-05-04"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":124,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12"}],"authorContributionMap":{"-":123,"myang2020":1}},{"path":"src/test/java/seedu/address/logic/commands/AddEventCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Apzure"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"Apzure"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"Apzure"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"Apzure"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"Apzure"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"Apzure"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"Apzure"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"Apzure"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"Apzure"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"Apzure"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"Apzure"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"Apzure"},"content":"import seedu.address.model.event.Event;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"Apzure"},"content":"import seedu.address.testutil.EventBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"myang2020"},"content":"import seedu.address.testutil.ModelStub;","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"Apzure"},"content":"public class AddEventCommandTest {","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"Apzure"},"content":" public void constructor_nullEvent_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"Apzure"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddEventCommand(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"Apzure"},"content":" public void execute_eventAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"Apzure"},"content":" ModelStubAcceptingEventAdded modelStub \u003d new ModelStubAcceptingEventAdded();","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"Apzure"},"content":" Event validEvent \u003d new EventBuilder().build();","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"Apzure"},"content":" CommandResult commandResult \u003d new AddEventCommand(validEvent).execute(modelStub);","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"Apzure"},"content":" assertEquals(String.format(AddEventCommand.MESSAGE_SUCCESS, Messages.format(validEvent)),","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"Apzure"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"Apzure"},"content":" assertEquals(Arrays.asList(validEvent), modelStub.eventsAdded);","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"Apzure"},"content":" public void execute_duplicateEvent_throwsCommandException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"Apzure"},"content":" Event validEvent \u003d new EventBuilder().build();","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"Apzure"},"content":" AddEventCommand addEventCommand \u003d new AddEventCommand(validEvent);","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"Apzure"},"content":" ModelStub modelStub \u003d new ModelStubWithEvent(validEvent);","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"Apzure"},"content":" assertThrows(CommandException.class, AddEventCommand.MESSAGE_DUPLICATE_EVENT, (","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"Apzure"},"content":" ) -\u003e addEventCommand.execute(modelStub));","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"Apzure"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"Apzure"},"content":" Event eventToAdd \u003d new EventBuilder().withEventName(\"Sample Event\").build();","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"Apzure"},"content":" AddEventCommand addEventCommand \u003d new AddEventCommand(eventToAdd);","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"Apzure"},"content":" String expected \u003d AddEventCommand.class.getCanonicalName() + \"{toAdd\u003d\" + eventToAdd + \"}\";","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"Apzure"},"content":" assertEquals(expected, addEventCommand.toString());","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"Apzure"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"Apzure"},"content":" * A Model stub that contains a single event.","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"Apzure"},"content":" private class ModelStubWithEvent extends ModelStub {","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"Apzure"},"content":" private final Event event;","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":63,"author":{"gitId":"Apzure"},"content":" ModelStubWithEvent(Event event) {","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"Apzure"},"content":" requireNonNull(event);","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"Apzure"},"content":" this.event \u003d event;","lastModifiedDate":"2024-03-12"},{"lineNumber":66,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":68,"author":{"gitId":"Apzure"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":69,"author":{"gitId":"Apzure"},"content":" public boolean hasEvent(Event event) {","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"Apzure"},"content":" requireNonNull(event);","lastModifiedDate":"2024-03-12"},{"lineNumber":71,"author":{"gitId":"Apzure"},"content":" return this.event.isSameEvent(event);","lastModifiedDate":"2024-03-12"},{"lineNumber":72,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":73,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":74,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":75,"author":{"gitId":"Apzure"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":76,"author":{"gitId":"Apzure"},"content":" * A Model stub that always accept the Event being added.","lastModifiedDate":"2024-03-12"},{"lineNumber":77,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":78,"author":{"gitId":"Apzure"},"content":" private class ModelStubAcceptingEventAdded extends ModelStub {","lastModifiedDate":"2024-03-12"},{"lineNumber":79,"author":{"gitId":"Apzure"},"content":" final ArrayList\u003cEvent\u003e eventsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-12"},{"lineNumber":80,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":81,"author":{"gitId":"Apzure"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":82,"author":{"gitId":"Apzure"},"content":" public boolean hasEvent(Event event) {","lastModifiedDate":"2024-03-12"},{"lineNumber":83,"author":{"gitId":"Apzure"},"content":" requireNonNull(event);","lastModifiedDate":"2024-03-12"},{"lineNumber":84,"author":{"gitId":"Apzure"},"content":" return eventsAdded.stream().anyMatch(event::isSameEvent);","lastModifiedDate":"2024-03-12"},{"lineNumber":85,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":86,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":87,"author":{"gitId":"Apzure"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":88,"author":{"gitId":"Apzure"},"content":" public void addEvent(Event event) {","lastModifiedDate":"2024-03-12"},{"lineNumber":89,"author":{"gitId":"Apzure"},"content":" requireNonNull(event);","lastModifiedDate":"2024-03-12"},{"lineNumber":90,"author":{"gitId":"Apzure"},"content":" eventsAdded.add(event);","lastModifiedDate":"2024-03-12"},{"lineNumber":91,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":92,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":93,"author":{"gitId":"Apzure"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":94,"author":{"gitId":"Apzure"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2024-03-12"},{"lineNumber":95,"author":{"gitId":"Apzure"},"content":" return new AddressBook();","lastModifiedDate":"2024-03-12"},{"lineNumber":96,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":97,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":98,"author":{"gitId":"Apzure"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"Apzure":97,"myang2020":1}},{"path":"src/test/java/seedu/address/logic/commands/CommandTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-07-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"Apzure"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EVENT_NAME;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-06-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-07-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-07-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_AMY \u003d \"11111111\";","lastModifiedDate":"2017-07-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_BOB \u003d \"22222222\";","lastModifiedDate":"2017-07-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_AMY \u003d \"Block 312, Amy Street 1\";","lastModifiedDate":"2017-07-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_BOB \u003d \"Block 123, Bobby Street 3\";","lastModifiedDate":"2017-07-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_HUSBAND \u003d \"husband\";","lastModifiedDate":"2017-07-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_FRIEND \u003d \"friend\";","lastModifiedDate":"2017-07-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + PREFIX_TAG + VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + PREFIX_TAG + VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final String INVALID_NAME_DESC \u003d \" \" + PREFIX_NAME + \"James\u0026\"; // \u0027\u0026\u0027 not allowed in names","lastModifiedDate":"2017-07-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String INVALID_PHONE_DESC \u003d \" \" + PREFIX_PHONE + \"911a\"; // \u0027a\u0027 not allowed in phones","lastModifiedDate":"2017-07-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final String INVALID_ADDRESS_DESC \u003d \" \" + PREFIX_ADDRESS; // empty string not allowed for addresses","lastModifiedDate":"2017-07-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final String INVALID_TAG_DESC \u003d \" \" + PREFIX_TAG + \"hubby*\"; // \u0027*\u0027 not allowed in tags","lastModifiedDate":"2017-07-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":64,"author":{"gitId":"Apzure"},"content":" public static final String VALID_EVENT_NAME_BINGO \u003d \"bingo\";","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"Apzure"},"content":" public static final String EVENT_NAME_DESC_BINGO \u003d \" \" + PREFIX_EVENT_NAME + VALID_EVENT_NAME_BINGO;","lastModifiedDate":"2024-03-12"},{"lineNumber":66,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05"},{"lineNumber":68,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05"},{"lineNumber":69,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-07-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05"},{"lineNumber":71,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05"},{"lineNumber":72,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2017-07-05"},{"lineNumber":73,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":76,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":77,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25"},{"lineNumber":82,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":83,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":84,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":87,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09"},{"lineNumber":95,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":96,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25"},{"lineNumber":97,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":98,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09"},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":102,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":104,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":106,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25"},{"lineNumber":107,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25"},{"lineNumber":109,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05"},{"lineNumber":110,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05"},{"lineNumber":111,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":112,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03"},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":116,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":118,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20"},{"lineNumber":119,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show only the person at the given {@code targetIndex} in the","lastModifiedDate":"2018-01-31"},{"lineNumber":120,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31"},{"lineNumber":121,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20"},{"lineNumber":122,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31"},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31"},{"lineNumber":125,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31"},{"lineNumber":126,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20"},{"lineNumber":127,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":132,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"Apzure":4,"-":128}},{"path":"src/test/java/seedu/address/logic/commands/DeleteEventCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"taeewonnn"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"taeewonnn"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"taeewonnn"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"taeewonnn"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"taeewonnn"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"taeewonnn"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"taeewonnn"},"content":"import static seedu.address.testutil.TypicalEvents.getBingoEvent;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"taeewonnn"},"content":"import static seedu.address.testutil.TypicalEvents.getTypicalEventBook;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"taeewonnn"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_EVENT;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"taeewonnn"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_EVENT;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"taeewonnn"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"taeewonnn"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"taeewonnn"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"taeewonnn"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"taeewonnn"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"taeewonnn"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"taeewonnn"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"taeewonnn"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"taeewonnn"},"content":"/**","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"taeewonnn"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"taeewonnn"},"content":" * {@code DeleteEventCommand}.","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"taeewonnn"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"taeewonnn"},"content":"public class DeleteEventCommandTest {","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"taeewonnn"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"taeewonnn"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"taeewonnn"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"taeewonnn"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredEventList().size() + 1);","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"taeewonnn"},"content":" DeleteEventCommand deleteEventCommand \u003d new DeleteEventCommand(outOfBoundIndex);","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"taeewonnn"},"content":" assertCommandFailure(deleteEventCommand, model, Messages.MESSAGE_INVALID_EVENT_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"taeewonnn"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"taeewonnn"},"content":" public void execute_selectModel_throwsCommandException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"taeewonnn"},"content":" SelectCommand selectCommand \u003d new SelectCommand(Index.fromZeroBased(1));","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"taeewonnn"},"content":" assertThrows(CommandException.class, () -\u003e new DeleteEventCommand(Index.fromZeroBased(1)).execute(model));","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"taeewonnn"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"taeewonnn"},"content":" public void execute_deleteEvent_success() throws CommandException {","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"taeewonnn"},"content":" ModelManager model \u003d new ModelManager();","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"taeewonnn"},"content":" model.setEventBook(getTypicalEventBook());","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"taeewonnn"},"content":" DeleteEventCommand deleteEventCommand \u003d new DeleteEventCommand(Index.fromZeroBased(0));","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"taeewonnn"},"content":" CommandResult commandResult \u003d deleteEventCommand.execute(model);","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"taeewonnn"},"content":" assertEquals(String.format(DeleteEventCommand.MESSAGE_DELETE_EVENT_SUCCESS,","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"taeewonnn"},"content":" Messages.format(getBingoEvent())),","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"taeewonnn"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"taeewonnn"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"taeewonnn"},"content":" public void equals() {","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"taeewonnn"},"content":" DeleteEventCommand deleteFirstEventCommand \u003d new DeleteEventCommand(INDEX_FIRST_EVENT);","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"taeewonnn"},"content":" DeleteEventCommand deleteSecondEventCommand \u003d new DeleteEventCommand(INDEX_SECOND_EVENT);","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"taeewonnn"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"taeewonnn"},"content":" assertTrue(deleteFirstEventCommand.equals(deleteFirstEventCommand));","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"taeewonnn"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"taeewonnn"},"content":" DeleteEventCommand deleteFirstEventCommandCopy \u003d new DeleteEventCommand(INDEX_FIRST_EVENT);","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"taeewonnn"},"content":" assertTrue(deleteFirstEventCommand.equals(deleteFirstEventCommandCopy));","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"taeewonnn"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"taeewonnn"},"content":" assertFalse(deleteFirstEventCommand.equals(1));","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"taeewonnn"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"taeewonnn"},"content":" assertFalse(deleteFirstEventCommand.equals(null));","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":75,"author":{"gitId":"taeewonnn"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"taeewonnn"},"content":" assertFalse(deleteFirstEventCommand.equals(deleteSecondEventCommand));","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":79,"author":{"gitId":"taeewonnn"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":80,"author":{"gitId":"taeewonnn"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-19"},{"lineNumber":81,"author":{"gitId":"taeewonnn"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-03-19"},{"lineNumber":82,"author":{"gitId":"taeewonnn"},"content":" DeleteEventCommand deleteEventCommand \u003d new DeleteEventCommand(targetIndex);","lastModifiedDate":"2024-03-19"},{"lineNumber":83,"author":{"gitId":"taeewonnn"},"content":" String expected \u003d DeleteEventCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex + \"}\";","lastModifiedDate":"2024-03-19"},{"lineNumber":84,"author":{"gitId":"taeewonnn"},"content":" assertEquals(expected, deleteEventCommand.toString());","lastModifiedDate":"2024-03-19"},{"lineNumber":85,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":86,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":87,"author":{"gitId":"taeewonnn"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":88,"author":{"gitId":"taeewonnn"},"content":" * Updates {@code model}\u0027s filtered list to show no event.","lastModifiedDate":"2024-03-20"},{"lineNumber":89,"author":{"gitId":"taeewonnn"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":90,"author":{"gitId":"taeewonnn"},"content":" private void showNoEvent(Model model) {","lastModifiedDate":"2024-03-19"},{"lineNumber":91,"author":{"gitId":"taeewonnn"},"content":" model.updateFilteredPersonList(p -\u003e false);","lastModifiedDate":"2024-03-19"},{"lineNumber":92,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":93,"author":{"gitId":"taeewonnn"},"content":" assertTrue(model.getFilteredEventList().isEmpty());","lastModifiedDate":"2024-03-19"},{"lineNumber":94,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":95,"author":{"gitId":"taeewonnn"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"taeewonnn":95}},{"path":"src/test/java/seedu/address/logic/commands/DeletePersonCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ChocoRagdoll"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"ChocoRagdoll"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"ChocoRagdoll"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"ChocoRagdoll"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"ChocoRagdoll"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"ChocoRagdoll"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"ChocoRagdoll"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"ChocoRagdoll"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"ChocoRagdoll"},"content":"import static seedu.address.testutil.TypicalEvents.getTypicalEventBook;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"ChocoRagdoll"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"ChocoRagdoll"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"ChocoRagdoll"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"ChocoRagdoll"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"ChocoRagdoll"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"ChocoRagdoll"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"ChocoRagdoll"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"ChocoRagdoll"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"ChocoRagdoll"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"ChocoRagdoll"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"ChocoRagdoll"},"content":"import seedu.address.model.event.Event;","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"ChocoRagdoll"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"ChocoRagdoll"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"ChocoRagdoll"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"ChocoRagdoll"},"content":" * {@code DeleteCommand}.","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"ChocoRagdoll"},"content":"public class DeletePersonCommandTest {","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"ChocoRagdoll"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"ChocoRagdoll"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"ChocoRagdoll"},"content":" public void constructor_nullIndex_throwsNullPointerException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"ChocoRagdoll"},"content":" assertThrows(NullPointerException.class, () -\u003e new DeletePersonCommand(null));","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"ChocoRagdoll"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"ChocoRagdoll"},"content":" public void execute_nullModel_throwsNullPointerException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"ChocoRagdoll"},"content":" assertThrows(NullPointerException.class, () -\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"ChocoRagdoll"},"content":" new DeletePersonCommand(Index.fromZeroBased(0)).execute(null));","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"ChocoRagdoll"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"ChocoRagdoll"},"content":" public void deleteFromGlobal_validIndexUnfilteredList_success() {","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"ChocoRagdoll"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"ChocoRagdoll"},"content":" DeletePersonCommand deletePersonCommand \u003d new DeletePersonCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"ChocoRagdoll"},"content":" String expectedMessage \u003d String.format(DeletePersonCommand.MESSAGE_DELETE_PERSON_GLOBAL_SUCCESS,","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"ChocoRagdoll"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"ChocoRagdoll"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"ChocoRagdoll"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"ChocoRagdoll"},"content":" assertCommandSuccess(deletePersonCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"ChocoRagdoll"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"ChocoRagdoll"},"content":" public void deleteFromGlobal_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"ChocoRagdoll"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"ChocoRagdoll"},"content":" DeletePersonCommand deletePersonCommand \u003d new DeletePersonCommand(outOfBoundIndex);","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"ChocoRagdoll"},"content":" assertCommandFailure(deletePersonCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"ChocoRagdoll"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"ChocoRagdoll"},"content":" public void deleteFromGlobal_validIndexFilteredList_success() {","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"ChocoRagdoll"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"ChocoRagdoll"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"ChocoRagdoll"},"content":" DeletePersonCommand deletePersonCommand \u003d new DeletePersonCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"ChocoRagdoll"},"content":" String expectedMessage \u003d String.format(DeletePersonCommand.MESSAGE_DELETE_PERSON_GLOBAL_SUCCESS,","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"ChocoRagdoll"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"ChocoRagdoll"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"ChocoRagdoll"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"ChocoRagdoll"},"content":" showNoPerson(expectedModel);","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"ChocoRagdoll"},"content":" assertCommandSuccess(deletePersonCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"ChocoRagdoll"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"ChocoRagdoll"},"content":" public void deleteFromGlobal_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"ChocoRagdoll"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":88,"author":{"gitId":"ChocoRagdoll"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2024-03-20"},{"lineNumber":89,"author":{"gitId":"ChocoRagdoll"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2024-03-20"},{"lineNumber":90,"author":{"gitId":"ChocoRagdoll"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2024-03-20"},{"lineNumber":91,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":92,"author":{"gitId":"ChocoRagdoll"},"content":" DeletePersonCommand deletePersonCommand \u003d new DeletePersonCommand(outOfBoundIndex);","lastModifiedDate":"2024-03-20"},{"lineNumber":93,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":94,"author":{"gitId":"ChocoRagdoll"},"content":" assertCommandFailure(deletePersonCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-20"},{"lineNumber":95,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":96,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":97,"author":{"gitId":"ChocoRagdoll"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":98,"author":{"gitId":"ChocoRagdoll"},"content":" public void deleteFromEvent_validIndex_success() throws Exception {","lastModifiedDate":"2024-03-20"},{"lineNumber":99,"author":{"gitId":"ChocoRagdoll"},"content":" ModelManager model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-20"},{"lineNumber":100,"author":{"gitId":"ChocoRagdoll"},"content":" model.setEventBook(getTypicalEventBook());","lastModifiedDate":"2024-03-20"},{"lineNumber":101,"author":{"gitId":"ChocoRagdoll"},"content":" DeletePersonCommand deletePersonCommand \u003d new DeletePersonCommand(Index.fromZeroBased(0));","lastModifiedDate":"2024-03-20"},{"lineNumber":102,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":103,"author":{"gitId":"ChocoRagdoll"},"content":" Event event \u003d model.getEventBook().getEventList().get(0);","lastModifiedDate":"2024-03-20"},{"lineNumber":104,"author":{"gitId":"ChocoRagdoll"},"content":" Person personToDelete \u003d getTypicalAddressBook().getPersonList().get(0);","lastModifiedDate":"2024-03-20"},{"lineNumber":105,"author":{"gitId":"ChocoRagdoll"},"content":" // Select an event first","lastModifiedDate":"2024-03-20"},{"lineNumber":106,"author":{"gitId":"ChocoRagdoll"},"content":" model.selectEvent(event);","lastModifiedDate":"2024-03-20"},{"lineNumber":107,"author":{"gitId":"ChocoRagdoll"},"content":" // Add person","lastModifiedDate":"2024-03-20"},{"lineNumber":108,"author":{"gitId":"ChocoRagdoll"},"content":" event.addPerson(personToDelete);","lastModifiedDate":"2024-03-20"},{"lineNumber":109,"author":{"gitId":"ChocoRagdoll"},"content":" model.selectEvent(event);","lastModifiedDate":"2024-03-20"},{"lineNumber":110,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":111,"author":{"gitId":"ChocoRagdoll"},"content":" deletePersonCommand.execute(model);","lastModifiedDate":"2024-03-20"},{"lineNumber":112,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":113,"author":{"gitId":"ChocoRagdoll"},"content":" assertFalse(model.isPersonInSelectedEvent(personToDelete));","lastModifiedDate":"2024-03-20"},{"lineNumber":114,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":115,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":116,"author":{"gitId":"ChocoRagdoll"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":117,"author":{"gitId":"ChocoRagdoll"},"content":" public void deleteFromEvent_invalidIndex_throwsCommandException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":118,"author":{"gitId":"ChocoRagdoll"},"content":" ModelManager model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-20"},{"lineNumber":119,"author":{"gitId":"ChocoRagdoll"},"content":" model.setEventBook(getTypicalEventBook());","lastModifiedDate":"2024-03-20"},{"lineNumber":120,"author":{"gitId":"ChocoRagdoll"},"content":" Event event \u003d model.getEventBook().getEventList().get(0);","lastModifiedDate":"2024-03-20"},{"lineNumber":121,"author":{"gitId":"ChocoRagdoll"},"content":" model.selectEvent(event);","lastModifiedDate":"2024-03-20"},{"lineNumber":122,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":123,"author":{"gitId":"ChocoRagdoll"},"content":" assertThrows(CommandException.class, () -\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":124,"author":{"gitId":"ChocoRagdoll"},"content":" new DeletePersonCommand(Index.fromZeroBased(100)).execute(model));","lastModifiedDate":"2024-03-20"},{"lineNumber":125,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":126,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":127,"author":{"gitId":"ChocoRagdoll"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":128,"author":{"gitId":"ChocoRagdoll"},"content":" public void deleteFromEvent_noEventSelected_throwsCommandException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":129,"author":{"gitId":"ChocoRagdoll"},"content":" ModelManager model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-20"},{"lineNumber":130,"author":{"gitId":"ChocoRagdoll"},"content":" model.setEventBook(getTypicalEventBook());","lastModifiedDate":"2024-03-20"},{"lineNumber":131,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":132,"author":{"gitId":"ChocoRagdoll"},"content":" assertThrows(CommandException.class, () -\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":133,"author":{"gitId":"ChocoRagdoll"},"content":" new DeletePersonCommand(Index.fromZeroBased(100)).deleteFromEvent(model));","lastModifiedDate":"2024-03-20"},{"lineNumber":134,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":135,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":136,"author":{"gitId":"ChocoRagdoll"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":137,"author":{"gitId":"ChocoRagdoll"},"content":" public void equals() {","lastModifiedDate":"2024-03-20"},{"lineNumber":138,"author":{"gitId":"ChocoRagdoll"},"content":" DeletePersonCommand deleteFirstPersonCommand \u003d new DeletePersonCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-03-20"},{"lineNumber":139,"author":{"gitId":"ChocoRagdoll"},"content":" DeletePersonCommand deleteSecondPersonCommand \u003d new DeletePersonCommand(INDEX_SECOND_PERSON);","lastModifiedDate":"2024-03-20"},{"lineNumber":140,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":141,"author":{"gitId":"ChocoRagdoll"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-20"},{"lineNumber":142,"author":{"gitId":"ChocoRagdoll"},"content":" assertTrue(deleteFirstPersonCommand.equals(deleteFirstPersonCommand));","lastModifiedDate":"2024-03-20"},{"lineNumber":143,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":144,"author":{"gitId":"ChocoRagdoll"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-20"},{"lineNumber":145,"author":{"gitId":"ChocoRagdoll"},"content":" DeletePersonCommand deleteFirstPersonCommandCopy \u003d new DeletePersonCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-03-20"},{"lineNumber":146,"author":{"gitId":"ChocoRagdoll"},"content":" assertTrue(deleteFirstPersonCommandCopy.equals(deleteFirstPersonCommandCopy));","lastModifiedDate":"2024-03-20"},{"lineNumber":147,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":148,"author":{"gitId":"ChocoRagdoll"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-20"},{"lineNumber":149,"author":{"gitId":"ChocoRagdoll"},"content":" assertFalse(deleteFirstPersonCommand.equals(1));","lastModifiedDate":"2024-03-20"},{"lineNumber":150,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":151,"author":{"gitId":"ChocoRagdoll"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-20"},{"lineNumber":152,"author":{"gitId":"ChocoRagdoll"},"content":" assertFalse(deleteFirstPersonCommand.equals(null));","lastModifiedDate":"2024-03-20"},{"lineNumber":153,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":154,"author":{"gitId":"ChocoRagdoll"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-03-20"},{"lineNumber":155,"author":{"gitId":"ChocoRagdoll"},"content":" assertFalse(deleteFirstPersonCommand.equals(deleteSecondPersonCommand));","lastModifiedDate":"2024-03-20"},{"lineNumber":156,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":157,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":158,"author":{"gitId":"ChocoRagdoll"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":159,"author":{"gitId":"ChocoRagdoll"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-20"},{"lineNumber":160,"author":{"gitId":"ChocoRagdoll"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-03-20"},{"lineNumber":161,"author":{"gitId":"ChocoRagdoll"},"content":" DeletePersonCommand deletePersonCommand \u003d new DeletePersonCommand(targetIndex);","lastModifiedDate":"2024-03-20"},{"lineNumber":162,"author":{"gitId":"ChocoRagdoll"},"content":" String expected \u003d DeletePersonCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex + \"}\";","lastModifiedDate":"2024-03-20"},{"lineNumber":163,"author":{"gitId":"ChocoRagdoll"},"content":" assertEquals(expected, deletePersonCommand.toString());","lastModifiedDate":"2024-03-20"},{"lineNumber":164,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":165,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":166,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":167,"author":{"gitId":"ChocoRagdoll"},"content":" * Updates {@code model}\u0027s filtered list to show no one.","lastModifiedDate":"2024-03-20"},{"lineNumber":168,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":169,"author":{"gitId":"ChocoRagdoll"},"content":" private void showNoPerson(Model model) {","lastModifiedDate":"2024-03-20"},{"lineNumber":170,"author":{"gitId":"ChocoRagdoll"},"content":" model.updateFilteredPersonList(p -\u003e false);","lastModifiedDate":"2024-03-20"},{"lineNumber":171,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":172,"author":{"gitId":"ChocoRagdoll"},"content":" assertTrue(model.getFilteredPersonList().isEmpty());","lastModifiedDate":"2024-03-20"},{"lineNumber":173,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":174,"author":{"gitId":"ChocoRagdoll"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"ChocoRagdoll":174}},{"path":"src/test/java/seedu/address/logic/commands/DeselectCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"myang2020"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"myang2020"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"myang2020"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"myang2020"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"myang2020"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"myang2020"},"content":"import seedu.address.testutil.TypicalEvents;","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"myang2020"},"content":"public class DeselectCommandTest {","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"myang2020"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"myang2020"},"content":" public void execute_deselect_success() throws CommandException {","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"myang2020"},"content":" ModelManager model \u003d new ModelManager();","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"myang2020"},"content":" model.setEventBook(TypicalEvents.getTypicalEventBook());","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"myang2020"},"content":" model.selectEvent(TypicalEvents.getBingoEvent());","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"myang2020"},"content":" DeselectCommand deselectCommand \u003d new DeselectCommand();","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"myang2020"},"content":" CommandResult commandResult \u003d deselectCommand.execute(model);","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"myang2020"},"content":" assertEquals(DeselectCommand.MESSAGE_DESELECT_EVENT_SUCCESS, commandResult.getFeedbackToUser());","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"myang2020"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"myang2020"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"myang2020"},"content":" DeselectCommand deselectCommand \u003d new DeselectCommand();","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"myang2020"},"content":" String expected \u003d DeselectCommand.class.getCanonicalName() + \"{}\";","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"myang2020"},"content":" assertEquals(expected, deselectCommand.toString());","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"myang2020"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"myang2020":29}},{"path":"src/test/java/seedu/address/logic/commands/InviteCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"myang2020"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"myang2020"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"myang2020"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"myang2020"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"myang2020"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"myang2020"},"content":"import static seedu.address.testutil.TypicalEvents.getTypicalEventBook;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"myang2020"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"myang2020"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"myang2020"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"myang2020"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"myang2020"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"myang2020"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"myang2020"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"myang2020"},"content":"import seedu.address.model.event.Event;","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"myang2020"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"myang2020"},"content":"import seedu.address.testutil.TypicalPersons;","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"myang2020"},"content":"public class InviteCommandTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"myang2020"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"myang2020"},"content":" public void constructor_nullIndex_throwsNullPointerException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"myang2020"},"content":" assertThrows(NullPointerException.class, () -\u003e new InviteCommand(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"myang2020"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"myang2020"},"content":" public void execute_nullModel_throwsNullPointerException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"myang2020"},"content":" assertThrows(NullPointerException.class, () -\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"myang2020"},"content":" new InviteCommand(Index.fromZeroBased(0)).execute(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"myang2020"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"myang2020"},"content":" public void eventIndex_outOfRange_throwsCommandException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"myang2020"},"content":" ModelManager model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"myang2020"},"content":" model.setEventBook(getTypicalEventBook());","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"myang2020"},"content":" assertThrows(CommandException.class, () -\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"myang2020"},"content":" new InviteCommand(Index.fromZeroBased(100)).execute(model));","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"myang2020"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"myang2020"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"myang2020"},"content":" ModelManager model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"myang2020"},"content":" model.setEventBook(getTypicalEventBook());","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"myang2020"},"content":" InviteCommand inviteCommand \u003d new InviteCommand(Index.fromZeroBased(0));","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"myang2020"},"content":" // Select an event first","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"myang2020"},"content":" Event event \u003d model.getEventBook().getEventList().get(0);","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"myang2020"},"content":" model.selectEvent(event);","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"myang2020"},"content":" // Add person","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"myang2020"},"content":" event.addPerson(getTypicalAddressBook().getPersonList().get(0));","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"myang2020"},"content":" model.selectEvent(event);","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"myang2020"},"content":" assertThrows(CommandException.class, InviteCommand.MESSAGE_DUPLICATE_PERSON, ()","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"myang2020"},"content":" -\u003e inviteCommand.execute(model));","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"myang2020"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"myang2020"},"content":" public void execute_eventNotSelected_throwsCommandException() throws CommandException {","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"myang2020"},"content":" ModelManager model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"myang2020"},"content":" model.setEventBook(getTypicalEventBook());","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"myang2020"},"content":" InviteCommand inviteCommand \u003d new InviteCommand(Index.fromZeroBased(0));","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"myang2020"},"content":" assertThrows(CommandException.class, Messages.MESSAGE_SELECT_EVENT, () -\u003e inviteCommand.execute(model));","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"myang2020"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"myang2020"},"content":" public void execute_selectEventAndInvitePerson_successful() throws CommandException {","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"myang2020"},"content":" ModelManager model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"myang2020"},"content":" model.setEventBook(getTypicalEventBook());","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"myang2020"},"content":" InviteCommand inviteCommand \u003d new InviteCommand(Index.fromZeroBased(0));","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"myang2020"},"content":" // Select an event first","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"myang2020"},"content":" model.selectEvent(model.getEventBook().getEventList().get(0));","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"myang2020"},"content":" // Invite person","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"myang2020"},"content":" inviteCommand.execute(model);","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"myang2020"},"content":" // Ensure the person is added to the selected event","lastModifiedDate":"2024-03-17"},{"lineNumber":82,"author":{"gitId":"myang2020"},"content":" Person personToInvite \u003d TypicalPersons.getTypicalPersons().get(0);","lastModifiedDate":"2024-03-17"},{"lineNumber":83,"author":{"gitId":"myang2020"},"content":" assertTrue(model.isPersonInSelectedEvent(personToInvite));","lastModifiedDate":"2024-03-17"},{"lineNumber":84,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":85,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":86,"author":{"gitId":"myang2020"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":87,"author":{"gitId":"myang2020"},"content":" public void equals_sameIndex_returnsTrue() {","lastModifiedDate":"2024-03-17"},{"lineNumber":88,"author":{"gitId":"myang2020"},"content":" InviteCommand one \u003d new InviteCommand(Index.fromZeroBased(5));","lastModifiedDate":"2024-03-17"},{"lineNumber":89,"author":{"gitId":"myang2020"},"content":" InviteCommand two \u003d new InviteCommand(Index.fromZeroBased(5));","lastModifiedDate":"2024-03-17"},{"lineNumber":90,"author":{"gitId":"myang2020"},"content":" assertEquals(one, two);","lastModifiedDate":"2024-03-17"},{"lineNumber":91,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":92,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"myang2020"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":94,"author":{"gitId":"myang2020"},"content":" public void equals_handles_null() {","lastModifiedDate":"2024-03-17"},{"lineNumber":95,"author":{"gitId":"myang2020"},"content":" InviteCommand one \u003d new InviteCommand(Index.fromZeroBased(5));","lastModifiedDate":"2024-03-17"},{"lineNumber":96,"author":{"gitId":"myang2020"},"content":" assertNotEquals(null, one);","lastModifiedDate":"2024-03-17"},{"lineNumber":97,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":98,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":99,"author":{"gitId":"myang2020"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":100,"author":{"gitId":"myang2020"},"content":" public void equals_sameObject_returnsTrue() {","lastModifiedDate":"2024-03-17"},{"lineNumber":101,"author":{"gitId":"myang2020"},"content":" InviteCommand one \u003d new InviteCommand(Index.fromZeroBased(5));","lastModifiedDate":"2024-03-17"},{"lineNumber":102,"author":{"gitId":"myang2020"},"content":" assertEquals(one, one);","lastModifiedDate":"2024-03-17"},{"lineNumber":103,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":104,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":105,"author":{"gitId":"myang2020"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":106,"author":{"gitId":"myang2020"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-17"},{"lineNumber":107,"author":{"gitId":"myang2020"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-03-17"},{"lineNumber":108,"author":{"gitId":"myang2020"},"content":" InviteCommand inviteCommand \u003d new InviteCommand(targetIndex);","lastModifiedDate":"2024-03-17"},{"lineNumber":109,"author":{"gitId":"myang2020"},"content":" String expected \u003d InviteCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex + \"}\";","lastModifiedDate":"2024-03-17"},{"lineNumber":110,"author":{"gitId":"myang2020"},"content":" assertEquals(expected, inviteCommand.toString());","lastModifiedDate":"2024-03-17"},{"lineNumber":111,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":112,"author":{"gitId":"myang2020"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"myang2020":112}},{"path":"src/test/java/seedu/address/logic/commands/SelectCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"myang2020"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"myang2020"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"myang2020"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"myang2020"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"myang2020"},"content":"import static seedu.address.testutil.TypicalEvents.getTypicalEventBook;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"myang2020"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"myang2020"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"myang2020"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"myang2020"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"myang2020"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"myang2020"},"content":"public class SelectCommandTest {","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"myang2020"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"myang2020"},"content":" public void constructor_nullIndex_throwsNullPointerException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"myang2020"},"content":" assertThrows(NullPointerException.class, () -\u003e new SelectCommand(null));","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"myang2020"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"myang2020"},"content":" public void execute_nullModel_throwsNullPointerException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"myang2020"},"content":" assertThrows(NullPointerException.class, () -\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"myang2020"},"content":" new SelectCommand(Index.fromZeroBased(0)).execute(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"myang2020"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"myang2020"},"content":" public void eventIndex_outOfRange_throwsCommandException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"myang2020"},"content":" ModelManager model \u003d new ModelManager();","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"myang2020"},"content":" model.setEventBook(getTypicalEventBook());","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"myang2020"},"content":" assertThrows(CommandException.class, () -\u003e new SelectCommand(Index.fromZeroBased(100)).execute(model));","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"myang2020"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"myang2020"},"content":" public void equals_sameIndex_returnsTrue() {","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"myang2020"},"content":" SelectCommand one \u003d new SelectCommand(Index.fromZeroBased(5));","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"myang2020"},"content":" SelectCommand two \u003d new SelectCommand(Index.fromZeroBased(5));","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"myang2020"},"content":" assertEquals(one, two);","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"myang2020"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"myang2020"},"content":" public void equals_handles_null() {","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"myang2020"},"content":" SelectCommand one \u003d new SelectCommand(Index.fromZeroBased(5));","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"myang2020"},"content":" assertNotEquals(null, one);","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"myang2020"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"myang2020"},"content":" public void equals_sameObject_returnsTrue() {","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"myang2020"},"content":" SelectCommand one \u003d new SelectCommand(Index.fromZeroBased(5));","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"myang2020"},"content":" assertEquals(one, one);","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"myang2020"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"myang2020"},"content":" public void execute_selectSuccessful() throws CommandException {","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"myang2020"},"content":" ModelManager model \u003d new ModelManager();","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"myang2020"},"content":" model.setEventBook(getTypicalEventBook());","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"myang2020"},"content":" SelectCommand selectCommand \u003d new SelectCommand(Index.fromZeroBased(0));","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"myang2020"},"content":" CommandResult commandResult \u003d selectCommand.execute(model);","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"myang2020"},"content":" assertEquals(String.format(SelectCommand.MESSAGE_SELECT_EVENT_SUCCESS,","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"myang2020"},"content":" Messages.format(model.getEventBook().getEventList().get(0))),","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"myang2020"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":66,"author":{"gitId":"myang2020"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":67,"author":{"gitId":"myang2020"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-16"},{"lineNumber":68,"author":{"gitId":"myang2020"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"myang2020"},"content":" SelectCommand selectCommand \u003d new SelectCommand(targetIndex);","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"myang2020"},"content":" String expected \u003d SelectCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex + \"}\";","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"myang2020"},"content":" assertEquals(expected, selectCommand.toString());","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"myang2020"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"myang2020":74}},{"path":"src/test/java/seedu/address/logic/parser/AddEventCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Apzure"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"Apzure"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"Apzure"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EVENT_NAME_DESC_BINGO;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"Apzure"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EVENT_NAME_BINGO;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"Apzure"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EVENT_NAME;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"Apzure"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"Apzure"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"myang2020"},"content":"import static seedu.address.testutil.TypicalEvents.getBingoEvent;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"Apzure"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"Apzure"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"Apzure"},"content":"import seedu.address.logic.commands.AddEventCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"Apzure"},"content":"import seedu.address.model.event.Event;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"Apzure"},"content":"import seedu.address.testutil.EventBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"Apzure"},"content":"public class AddEventCommandParserTest {","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"Apzure"},"content":" private AddEventCommandParser parser \u003d new AddEventCommandParser();","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"Apzure"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"myang2020"},"content":" Event expectedEvent \u003d new EventBuilder(getBingoEvent()).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"Apzure"},"content":" assertParseSuccess(parser, EVENT_NAME_DESC_BINGO, new AddEventCommand(expectedEvent));","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"Apzure"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"Apzure"},"content":" String validExpectedEventString \u003d EVENT_NAME_DESC_BINGO;","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"Apzure"},"content":" assertParseFailure(parser, EVENT_NAME_DESC_BINGO + validExpectedEventString,","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"Apzure"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EVENT_NAME));","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"Apzure"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"Apzure"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddEventCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"Apzure"},"content":" assertParseFailure(parser, VALID_EVENT_NAME_BINGO, expectedMessage);","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"Apzure"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"Apzure":41,"myang2020":2}},{"path":"src/test/java/seedu/address/logic/parser/AddressBookParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"taeewonnn"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_EVENT;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-06-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":20,"author":{"gitId":"taeewonnn"},"content":"import seedu.address.logic.commands.DeleteEventCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"ChocoRagdoll"},"content":"import seedu.address.logic.commands.DeletePersonCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-06-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":28,"author":{"gitId":"myang2020"},"content":"import seedu.address.logic.commands.SelectCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-06-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonUtil;","lastModifiedDate":"2017-06-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(PersonUtil.getAddCommand(person));","lastModifiedDate":"2017-06-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertEquals(new AddCommand(person), command);","lastModifiedDate":"2017-06-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" DeleteCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2017-06-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertEquals(new DeleteCommand(INDEX_FIRST_PERSON), command);","lastModifiedDate":"2017-06-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":60,"author":{"gitId":"taeewonnn"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"ChocoRagdoll"},"content":" public void parseCommand_deleteEvent() throws Exception {","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"taeewonnn"},"content":" DeleteEventCommand command \u003d (DeleteEventCommand) parser.parseCommand(","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"taeewonnn"},"content":" DeleteEventCommand.COMMAND_WORD + \" \" + INDEX_FIRST_EVENT.getOneBased());","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"taeewonnn"},"content":" assertEquals(new DeleteEventCommand(INDEX_FIRST_EVENT), command);","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(person).build();","lastModifiedDate":"2017-06-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" + INDEX_FIRST_PERSON.getOneBased() + \" \" + PersonUtil.getEditPersonDescriptorDetails(descriptor));","lastModifiedDate":"2018-03-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertEquals(new EditCommand(INDEX_FIRST_PERSON, descriptor), command);","lastModifiedDate":"2017-06-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2017-06-12"},{"lineNumber":85,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":" FindCommand.COMMAND_WORD + \" \" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2017-06-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertEquals(new FindCommand(new NameContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2017-06-12"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD) instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" 3\") instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":102,"author":{"gitId":"ChocoRagdoll"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":103,"author":{"gitId":"ChocoRagdoll"},"content":" public void parseCommand_deleteParticipant() throws Exception {","lastModifiedDate":"2024-03-20"},{"lineNumber":104,"author":{"gitId":"ChocoRagdoll"},"content":" assertTrue(parser.parseCommand(DeletePersonCommand.COMMAND_WORD + \" 3\")","lastModifiedDate":"2024-03-20"},{"lineNumber":105,"author":{"gitId":"ChocoRagdoll"},"content":" instanceof DeletePersonCommand);","lastModifiedDate":"2024-03-20"},{"lineNumber":106,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":107,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":109,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":114,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":115,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":118,"author":{"gitId":"myang2020"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":119,"author":{"gitId":"myang2020"},"content":" public void parseCommand_select() throws Exception {","lastModifiedDate":"2024-03-16"},{"lineNumber":120,"author":{"gitId":"myang2020"},"content":" SelectCommand selectCommand \u003d (SelectCommand) parser.parseCommand(","lastModifiedDate":"2024-03-16"},{"lineNumber":121,"author":{"gitId":"myang2020"},"content":" SelectCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2024-03-16"},{"lineNumber":122,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":123,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"ChocoRagdoll":8,"-":101,"taeewonnn":8,"myang2020":6}},{"path":"src/test/java/seedu/address/logic/parser/DeleteEventCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"taeewonnn"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"taeewonnn"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"taeewonnn"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"taeewonnn"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"taeewonnn"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_EVENT;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"taeewonnn"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"taeewonnn"},"content":"import seedu.address.logic.commands.DeleteEventCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"taeewonnn"},"content":"public class DeleteEventCommandParserTest {","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"taeewonnn"},"content":" private DeleteEventCommandParser parser \u003d new DeleteEventCommandParser();","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"taeewonnn"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"taeewonnn"},"content":" public void parse_validArgs_returnsDeleteCommand() {","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"taeewonnn"},"content":" assertParseSuccess(parser, \"1\", new DeleteEventCommand(INDEX_FIRST_EVENT));","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"taeewonnn"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"taeewonnn"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"taeewonnn"},"content":" assertParseFailure(parser, \"a\", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"taeewonnn"},"content":" DeleteEventCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"taeewonnn"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"taeewonnn":26}},{"path":"src/test/java/seedu/address/logic/parser/DeletePersonCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ChocoRagdoll"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"ChocoRagdoll"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"ChocoRagdoll"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"ChocoRagdoll"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"ChocoRagdoll"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"ChocoRagdoll"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"ChocoRagdoll"},"content":"import seedu.address.logic.commands.DeletePersonCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"ChocoRagdoll"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"ChocoRagdoll"},"content":" * Tests the DeletePersonCommandParser class.","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"ChocoRagdoll"},"content":"public class DeletePersonCommandParserTest {","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"ChocoRagdoll"},"content":" private DeletePersonCommandParser parser \u003d new DeletePersonCommandParser();","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"ChocoRagdoll"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"ChocoRagdoll"},"content":" public void parse_validArgs_returnsDeletePersonCommand() {","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"ChocoRagdoll"},"content":" assertParseSuccess(parser, \"1\", new DeletePersonCommand(INDEX_FIRST_PERSON));","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"ChocoRagdoll"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"ChocoRagdoll"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"ChocoRagdoll"},"content":" assertParseFailure(parser, \"a\", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"ChocoRagdoll"},"content":" DeletePersonCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"ChocoRagdoll"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"ChocoRagdoll":29}},{"path":"src/test/java/seedu/address/logic/parser/InviteCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"myang2020"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"myang2020"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"myang2020"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"myang2020"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"myang2020"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"myang2020"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"myang2020"},"content":"import seedu.address.logic.commands.InviteCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"myang2020"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"myang2020"},"content":" * Contains unit tests for InviteCommandParser.","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"myang2020"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"myang2020"},"content":"public class InviteCommandParserTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"myang2020"},"content":" private final InviteCommandParser parser \u003d new InviteCommandParser();","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"myang2020"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"myang2020"},"content":" public void parse_validArgs_returnsInviteCommand() {","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"myang2020"},"content":" assertParseSuccess(parser, \"1\", new InviteCommand(INDEX_FIRST_PERSON));","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"myang2020"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"myang2020"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"myang2020"},"content":" assertParseFailure(parser, \"a\", String.format(Messages.MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"myang2020"},"content":" InviteCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"myang2020"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"myang2020":29}},{"path":"src/test/java/seedu/address/logic/parser/SelectCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"myang2020"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"myang2020"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"myang2020"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"myang2020"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"myang2020"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"myang2020"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"myang2020"},"content":"import seedu.address.logic.commands.SelectCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"myang2020"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"myang2020"},"content":"public class SelectCommandParserTest {","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"myang2020"},"content":" private SelectCommandParser selectCommandParser \u003d new SelectCommandParser();","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"myang2020"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"myang2020"},"content":" public void parse_success() {","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"myang2020"},"content":" assertParseSuccess(selectCommandParser, \"1\", new SelectCommand(Index.fromZeroBased(0)));","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"myang2020"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"myang2020"},"content":" public void parse_failure() throws ParseException {","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"myang2020"},"content":" assertParseFailure(selectCommandParser, \"0abd\",","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"myang2020"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, SelectCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"myang2020"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"myang2020":26}},{"path":"src/test/java/seedu/address/model/EventBookTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Apzure"},"content":"package seedu.address.model;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"Apzure"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"Apzure"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"Apzure"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"Apzure"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"myang2020"},"content":"import static seedu.address.testutil.TypicalEvents.getBingoEvent;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"Apzure"},"content":"import static seedu.address.testutil.TypicalEvents.getTypicalEventBook;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"Apzure"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"Apzure"},"content":"import java.util.Collection;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"Apzure"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"Apzure"},"content":"import java.util.List;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"Apzure"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"Apzure"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"Apzure"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"Apzure"},"content":"import seedu.address.model.event.Event;","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"Apzure"},"content":"import seedu.address.model.event.exceptions.DuplicateEventException;","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"Apzure"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-15"},{"lineNumber":22,"author":{"gitId":"Apzure"},"content":"import seedu.address.testutil.EventBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"Apzure"},"content":"public class EventBookTest {","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"Apzure"},"content":" private final EventBook eventBook \u003d new EventBook();","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"Apzure"},"content":" public void constructor() {","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"Apzure"},"content":" assertEquals(Collections.emptyList(), eventBook.getEventList());","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"Apzure"},"content":" public void resetData_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"Apzure"},"content":" assertThrows(NullPointerException.class, () -\u003e eventBook.resetData(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"Apzure"},"content":" public void resetData_withValidReadOnlyEventBook_replacesData() {","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"Apzure"},"content":" EventBook newData \u003d getTypicalEventBook();","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"Apzure"},"content":" eventBook.resetData(newData);","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"Apzure"},"content":" assertEquals(newData, eventBook);","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"Apzure"},"content":" public void resetData_withDuplicateEvents_throwsDuplicateEventException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"Apzure"},"content":" // Two events with the same identity fields","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"myang2020"},"content":" Event editedBingo \u003d new EventBuilder(getBingoEvent())","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"Apzure"},"content":" .build();","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"myang2020"},"content":" List\u003cEvent\u003e newEvents \u003d Arrays.asList(getBingoEvent(), editedBingo);","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"Apzure"},"content":" EventBookStub newData \u003d new EventBookStub(newEvents);","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"Apzure"},"content":" assertThrows(DuplicateEventException.class, () -\u003e eventBook.resetData(newData));","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"Apzure"},"content":" public void hasEvent_nullEvent_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"Apzure"},"content":" assertThrows(NullPointerException.class, () -\u003e eventBook.hasEvent(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"Apzure"},"content":" public void hasEvent_eventNotInEventBook_returnsFalse() {","lastModifiedDate":"2024-03-12"},{"lineNumber":63,"author":{"gitId":"myang2020"},"content":" assertFalse(eventBook.hasEvent(getBingoEvent()));","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":66,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"Apzure"},"content":" public void hasEvent_eventInEventBook_returnsTrue() {","lastModifiedDate":"2024-03-12"},{"lineNumber":68,"author":{"gitId":"myang2020"},"content":" eventBook.addEvent(getBingoEvent());","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"myang2020"},"content":" assertTrue(eventBook.hasEvent(getBingoEvent()));","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":71,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":72,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":73,"author":{"gitId":"Apzure"},"content":" public void hasEvent_eventWithSameIdentityFieldsInEventBook_returnsTrue() {","lastModifiedDate":"2024-03-12"},{"lineNumber":74,"author":{"gitId":"myang2020"},"content":" eventBook.addEvent(getBingoEvent());","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"myang2020"},"content":" Event editedBingo \u003d new EventBuilder(getBingoEvent())","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"Apzure"},"content":" .build();","lastModifiedDate":"2024-03-12"},{"lineNumber":77,"author":{"gitId":"Apzure"},"content":" assertTrue(eventBook.hasEvent(editedBingo));","lastModifiedDate":"2024-03-12"},{"lineNumber":78,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":79,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":80,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":81,"author":{"gitId":"Apzure"},"content":" public void getEventList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":82,"author":{"gitId":"Apzure"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e eventBook.getEventList().remove(0));","lastModifiedDate":"2024-03-12"},{"lineNumber":83,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":84,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":85,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":86,"author":{"gitId":"Apzure"},"content":" public void equals_sameObject_returnsTrue() {","lastModifiedDate":"2024-03-12"},{"lineNumber":87,"author":{"gitId":"Apzure"},"content":" EventBook eventBook \u003d new EventBook();","lastModifiedDate":"2024-03-12"},{"lineNumber":88,"author":{"gitId":"Apzure"},"content":" assertTrue(eventBook.equals(eventBook));","lastModifiedDate":"2024-03-12"},{"lineNumber":89,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":90,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":91,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":92,"author":{"gitId":"Apzure"},"content":" public void equals_differentClass_returnsFalse() {","lastModifiedDate":"2024-03-12"},{"lineNumber":93,"author":{"gitId":"Apzure"},"content":" EventBook eventBook \u003d new EventBook();","lastModifiedDate":"2024-03-12"},{"lineNumber":94,"author":{"gitId":"Apzure"},"content":" Object differentObject \u003d new Object();","lastModifiedDate":"2024-03-12"},{"lineNumber":95,"author":{"gitId":"Apzure"},"content":" assertFalse(eventBook.equals(differentObject));","lastModifiedDate":"2024-03-12"},{"lineNumber":96,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":97,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":98,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":99,"author":{"gitId":"Apzure"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-12"},{"lineNumber":100,"author":{"gitId":"Apzure"},"content":" String expected \u003d EventBook.class.getCanonicalName() + \"{events\u003d\" + eventBook.getEventList() + \"}\";","lastModifiedDate":"2024-03-12"},{"lineNumber":101,"author":{"gitId":"Apzure"},"content":" assertEquals(expected, eventBook.toString());","lastModifiedDate":"2024-03-12"},{"lineNumber":102,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":103,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":104,"author":{"gitId":"Apzure"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":105,"author":{"gitId":"Apzure"},"content":" * A stub ReadOnlyEventBook whose events list can violate interface constraints.","lastModifiedDate":"2024-03-12"},{"lineNumber":106,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":107,"author":{"gitId":"Apzure"},"content":" private static class EventBookStub implements ReadOnlyEventBook {","lastModifiedDate":"2024-03-12"},{"lineNumber":108,"author":{"gitId":"Apzure"},"content":" private final ObservableList\u003cEvent\u003e events \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-03-12"},{"lineNumber":109,"author":{"gitId":"Apzure"},"content":" private final ObservableList\u003cPerson\u003e persons \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-03-15"},{"lineNumber":110,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":111,"author":{"gitId":"Apzure"},"content":" EventBookStub(Collection\u003cEvent\u003e events) {","lastModifiedDate":"2024-03-12"},{"lineNumber":112,"author":{"gitId":"Apzure"},"content":" this.events.setAll(events);","lastModifiedDate":"2024-03-12"},{"lineNumber":113,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":114,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":115,"author":{"gitId":"Apzure"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":116,"author":{"gitId":"Apzure"},"content":" public ObservableList\u003cEvent\u003e getEventList() {","lastModifiedDate":"2024-03-12"},{"lineNumber":117,"author":{"gitId":"Apzure"},"content":" return events;","lastModifiedDate":"2024-03-12"},{"lineNumber":118,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":119,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":120,"author":{"gitId":"Apzure"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":121,"author":{"gitId":"Apzure"},"content":" public ObservableList\u003cPerson\u003e getPersonsOfSelectedEventList() {","lastModifiedDate":"2024-03-15"},{"lineNumber":122,"author":{"gitId":"Apzure"},"content":" return persons;","lastModifiedDate":"2024-03-15"},{"lineNumber":123,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":124,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":125,"author":{"gitId":"Apzure"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"Apzure":117,"myang2020":8}},{"path":"src/test/java/seedu/address/model/ModelManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2017-05-31"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"myang2020"},"content":"import static seedu.address.testutil.TypicalEvents.getBingoEvent;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2017-07-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2017-07-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-31"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":19,"author":{"gitId":"Apzure"},"content":"import seedu.address.model.event.Event;","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"Apzure"},"content":"import seedu.address.model.event.exceptions.EventNotFoundException;","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.testutil.AddressBookBuilder;","lastModifiedDate":"2017-05-31"},{"lineNumber":23,"author":{"gitId":"Apzure"},"content":"import seedu.address.testutil.EventBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class ModelManagerTest {","lastModifiedDate":"2017-05-31"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private ModelManager modelManager \u003d new ModelManager();","lastModifiedDate":"2018-08-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2018-11-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertEquals(new UserPrefs(), modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertEquals(new GuiSettings(), modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertEquals(new AddressBook(), new AddressBook(modelManager.getAddressBook()));","lastModifiedDate":"2018-11-27"},{"lineNumber":34,"author":{"gitId":"Apzure"},"content":" assertEquals(new EventBook(), new EventBook(modelManager.getEventBook()));","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void setUserPrefs_nullUserPrefs_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setUserPrefs(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void setUserPrefs_validUserPrefs_copiesUserPrefs() {","lastModifiedDate":"2018-12-06"},{"lineNumber":44,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"address/book/file/path\"));","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(new GuiSettings(1, 2, 3, 4));","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" modelManager.setUserPrefs(userPrefs);","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertEquals(userPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":50,"author":{"gitId":"-"},"content":" // Modifying userPrefs should not modify modelManager\u0027s userPrefs","lastModifiedDate":"2018-12-06"},{"lineNumber":51,"author":{"gitId":"-"},"content":" UserPrefs oldUserPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":52,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"new/address/book/file/path\"));","lastModifiedDate":"2018-12-06"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertEquals(oldUserPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-12-06"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void setGuiSettings_nullGuiSettings_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setGuiSettings(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void setGuiSettings_validGuiSettings_setsGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(1, 2, 3, 4);","lastModifiedDate":"2018-11-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" modelManager.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertEquals(guiSettings, modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setAddressBookFilePath(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_validPath_setsAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" Path path \u003d Paths.get(\"address/book/file/path\");","lastModifiedDate":"2018-11-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":" modelManager.setAddressBookFilePath(path);","lastModifiedDate":"2018-11-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertEquals(path, modelManager.getAddressBookFilePath());","lastModifiedDate":"2018-11-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void hasPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-06"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasPerson(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void hasPerson_personNotInAddressBook_returnsFalse() {","lastModifiedDate":"2018-08-06"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertFalse(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public void hasPerson_personInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07"},{"lineNumber":92,"author":{"gitId":"-"},"content":" modelManager.addPerson(ALICE);","lastModifiedDate":"2018-08-06"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertTrue(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e modelManager.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":101,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":102,"author":{"gitId":"Apzure"},"content":" public void hasEvent_nullEvent_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":103,"author":{"gitId":"Apzure"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasEvent(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":104,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":105,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":106,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":107,"author":{"gitId":"Apzure"},"content":" public void hasEvent_eventNotInEventBook_returnsFalse() {","lastModifiedDate":"2024-03-12"},{"lineNumber":108,"author":{"gitId":"myang2020"},"content":" assertFalse(modelManager.hasEvent(getBingoEvent()));","lastModifiedDate":"2024-03-17"},{"lineNumber":109,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":110,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":111,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":112,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":113,"author":{"gitId":"Apzure"},"content":" public void hasEvent_eventInEventBook_returnsTrue() {","lastModifiedDate":"2024-03-12"},{"lineNumber":114,"author":{"gitId":"myang2020"},"content":" modelManager.addEvent(getBingoEvent());","lastModifiedDate":"2024-03-17"},{"lineNumber":115,"author":{"gitId":"myang2020"},"content":" assertTrue(modelManager.hasEvent(getBingoEvent()));","lastModifiedDate":"2024-03-17"},{"lineNumber":116,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":117,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":118,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":119,"author":{"gitId":"Apzure"},"content":" public void deleteEvent_nullEvent_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":120,"author":{"gitId":"Apzure"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.deleteEvent(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":121,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":122,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":123,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":124,"author":{"gitId":"Apzure"},"content":" public void deleteEvent_eventNotInEventBook_throwsEventNotFoundException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":125,"author":{"gitId":"myang2020"},"content":" assertThrows(EventNotFoundException.class, () -\u003e modelManager.deleteEvent(getBingoEvent()));","lastModifiedDate":"2024-03-17"},{"lineNumber":126,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":127,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":128,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":129,"author":{"gitId":"Apzure"},"content":" public void deleteEvent_eventInEventBook_removesEvent() {","lastModifiedDate":"2024-03-12"},{"lineNumber":130,"author":{"gitId":"myang2020"},"content":" modelManager.addEvent(getBingoEvent());","lastModifiedDate":"2024-03-17"},{"lineNumber":131,"author":{"gitId":"myang2020"},"content":" modelManager.deleteEvent(getBingoEvent());","lastModifiedDate":"2024-03-17"},{"lineNumber":132,"author":{"gitId":"myang2020"},"content":" assertFalse(modelManager.hasEvent(getBingoEvent()));","lastModifiedDate":"2024-03-17"},{"lineNumber":133,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":134,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":135,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":136,"author":{"gitId":"Apzure"},"content":" public void setEventBook_nullEventBook_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":137,"author":{"gitId":"Apzure"},"content":" ModelManager modelManager \u003d new ModelManager();","lastModifiedDate":"2024-03-12"},{"lineNumber":138,"author":{"gitId":"Apzure"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setEventBook(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":139,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":140,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":141,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":142,"author":{"gitId":"Apzure"},"content":" public void setEventBook_validEventBook_success() {","lastModifiedDate":"2024-03-12"},{"lineNumber":143,"author":{"gitId":"Apzure"},"content":" ModelManager modelManager \u003d new ModelManager();","lastModifiedDate":"2024-03-12"},{"lineNumber":144,"author":{"gitId":"Apzure"},"content":" ReadOnlyEventBook newEventBook \u003d new EventBook();","lastModifiedDate":"2024-03-12"},{"lineNumber":145,"author":{"gitId":"Apzure"},"content":" modelManager.setEventBook(newEventBook);","lastModifiedDate":"2024-03-12"},{"lineNumber":146,"author":{"gitId":"Apzure"},"content":" assertEquals(newEventBook, modelManager.getEventBook());","lastModifiedDate":"2024-03-12"},{"lineNumber":147,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":148,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":149,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":150,"author":{"gitId":"Apzure"},"content":" public void setEvent_nullTargetAndEditedEvent_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":151,"author":{"gitId":"Apzure"},"content":" ModelManager modelManager \u003d new ModelManager();","lastModifiedDate":"2024-03-12"},{"lineNumber":152,"author":{"gitId":"Apzure"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setEvent(null, null));","lastModifiedDate":"2024-03-12"},{"lineNumber":153,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":154,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":155,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":156,"author":{"gitId":"Apzure"},"content":" public void setEvent_nullTargetEvent_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":157,"author":{"gitId":"Apzure"},"content":" ModelManager modelManager \u003d new ModelManager();","lastModifiedDate":"2024-03-12"},{"lineNumber":158,"author":{"gitId":"Apzure"},"content":" Event editedEvent \u003d new EventBuilder().build();","lastModifiedDate":"2024-03-12"},{"lineNumber":159,"author":{"gitId":"Apzure"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setEvent(null, editedEvent));","lastModifiedDate":"2024-03-12"},{"lineNumber":160,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":161,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":162,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":163,"author":{"gitId":"Apzure"},"content":" public void setEvent_nullEditedEvent_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":164,"author":{"gitId":"Apzure"},"content":" ModelManager modelManager \u003d new ModelManager();","lastModifiedDate":"2024-03-12"},{"lineNumber":165,"author":{"gitId":"Apzure"},"content":" Event targetEvent \u003d new EventBuilder().build();","lastModifiedDate":"2024-03-12"},{"lineNumber":166,"author":{"gitId":"Apzure"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setEvent(targetEvent, null));","lastModifiedDate":"2024-03-12"},{"lineNumber":167,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":168,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":169,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":170,"author":{"gitId":"Apzure"},"content":" public void setEvent_validTargetAndEditedEvent_success() {","lastModifiedDate":"2024-03-12"},{"lineNumber":171,"author":{"gitId":"Apzure"},"content":" ModelManager modelManager \u003d new ModelManager();","lastModifiedDate":"2024-03-12"},{"lineNumber":172,"author":{"gitId":"Apzure"},"content":" Event targetEvent \u003d new EventBuilder().build();","lastModifiedDate":"2024-03-12"},{"lineNumber":173,"author":{"gitId":"Apzure"},"content":" Event editedEvent \u003d new EventBuilder().withEventName(\"Edited Event\").build();","lastModifiedDate":"2024-03-12"},{"lineNumber":174,"author":{"gitId":"Apzure"},"content":" modelManager.addEvent(targetEvent);","lastModifiedDate":"2024-03-12"},{"lineNumber":175,"author":{"gitId":"Apzure"},"content":" modelManager.setEvent(targetEvent, editedEvent);","lastModifiedDate":"2024-03-12"},{"lineNumber":176,"author":{"gitId":"Apzure"},"content":" assertTrue(modelManager.getFilteredEventList().contains(editedEvent));","lastModifiedDate":"2024-03-12"},{"lineNumber":177,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":178,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":179,"author":{"gitId":"taeewonnn"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":180,"author":{"gitId":"taeewonnn"},"content":" public void isEqualSelectedEvent_nullEvent_throwsNullPointerException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":181,"author":{"gitId":"taeewonnn"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.isSameSelectedEvent(null));","lastModifiedDate":"2024-03-20"},{"lineNumber":182,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":183,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":184,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":185,"author":{"gitId":"Apzure"},"content":" public void getFilteredEventList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":186,"author":{"gitId":"Apzure"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e modelManager.getFilteredEventList().remove(0));","lastModifiedDate":"2024-03-12"},{"lineNumber":187,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":188,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":189,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-31"},{"lineNumber":190,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":191,"author":{"gitId":"-"},"content":" AddressBook addressBook \u003d new AddressBookBuilder().withPerson(ALICE).withPerson(BENSON).build();","lastModifiedDate":"2017-07-19"},{"lineNumber":192,"author":{"gitId":"-"},"content":" AddressBook differentAddressBook \u003d new AddressBook();","lastModifiedDate":"2017-05-31"},{"lineNumber":193,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":195,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":196,"author":{"gitId":"-"},"content":" modelManager \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2018-08-06"},{"lineNumber":197,"author":{"gitId":"-"},"content":" ModelManager modelManagerCopy \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2017-05-31"},{"lineNumber":198,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManagerCopy));","lastModifiedDate":"2017-05-31"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":200,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":201,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManager));","lastModifiedDate":"2017-05-31"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":203,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":204,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(null));","lastModifiedDate":"2017-05-31"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":206,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":207,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(5));","lastModifiedDate":"2017-05-31"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":209,"author":{"gitId":"-"},"content":" // different addressBook -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":210,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(differentAddressBook, userPrefs)));","lastModifiedDate":"2017-05-31"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":212,"author":{"gitId":"-"},"content":" // different filteredList -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":213,"author":{"gitId":"-"},"content":" String[] keywords \u003d ALICE.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-19"},{"lineNumber":214,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(keywords)));","lastModifiedDate":"2017-06-12"},{"lineNumber":215,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, userPrefs)));","lastModifiedDate":"2017-05-31"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":217,"author":{"gitId":"-"},"content":" // resets modelManager to initial state for upcoming tests","lastModifiedDate":"2017-08-05"},{"lineNumber":218,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":220,"author":{"gitId":"-"},"content":" // different userPrefs -\u003e returns false","lastModifiedDate":"2018-11-27"},{"lineNumber":221,"author":{"gitId":"-"},"content":" UserPrefs differentUserPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":222,"author":{"gitId":"-"},"content":" differentUserPrefs.setAddressBookFilePath(Paths.get(\"differentFilePath\"));","lastModifiedDate":"2018-08-09"},{"lineNumber":223,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, differentUserPrefs)));","lastModifiedDate":"2018-11-27"},{"lineNumber":224,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":225,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-31"}],"authorContributionMap":{"Apzure":79,"-":132,"taeewonnn":6,"myang2020":8}},{"path":"src/test/java/seedu/address/model/event/EventNameTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Apzure"},"content":"package seedu.address.model.event;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"Apzure"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"Apzure"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"Apzure"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"Apzure"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"Apzure"},"content":"public class EventNameTest {","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"Apzure"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"Apzure"},"content":" assertThrows(NullPointerException.class, () -\u003e new EventName(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"Apzure"},"content":" public void equals() {","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"Apzure"},"content":" EventName eventName \u003d new EventName(\"Valid EventName\");","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"Apzure"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"Apzure"},"content":" assertTrue(eventName.equals(new EventName(\"Valid EventName\")));","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"Apzure"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"Apzure"},"content":" assertTrue(eventName.equals(eventName));","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"Apzure"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"Apzure"},"content":" assertFalse(eventName.equals(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"Apzure"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"Apzure"},"content":" assertFalse(eventName.equals(5.0f));","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"Apzure"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"Apzure"},"content":" assertFalse(eventName.equals(new EventName(\"Other Valid EventName\")));","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"Apzure"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"Apzure":36}},{"path":"src/test/java/seedu/address/model/event/EventTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Apzure"},"content":"package seedu.address.model.event;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"Apzure"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"Apzure"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"Apzure"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"Apzure"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"Apzure"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"Apzure"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"Apzure"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"Apzure"},"content":"import seedu.address.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"Apzure"},"content":"import seedu.address.model.person.exceptions.PersonNotFoundException;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"Apzure"},"content":"import seedu.address.testutil.EventBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"Apzure"},"content":"public class EventTest {","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"Apzure"},"content":" public void hasPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"Apzure"},"content":" Event event \u003d new EventBuilder().build();","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"Apzure"},"content":" assertThrows(NullPointerException.class, () -\u003e event.hasPerson(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"Apzure"},"content":" public void hasPerson_personNotInEvent_returnsFalse() {","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"Apzure"},"content":" Event event \u003d new EventBuilder().build();","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"Apzure"},"content":" assertFalse(event.hasPerson(ALICE));","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"Apzure"},"content":" public void hasPerson_personInEvent_returnsTrue() {","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"Apzure"},"content":" Event event \u003d new EventBuilder().withPerson(ALICE).build();","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"Apzure"},"content":" assertTrue(event.hasPerson(ALICE));","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"Apzure"},"content":" public void addPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"Apzure"},"content":" Event event \u003d new EventBuilder().build();","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"Apzure"},"content":" assertThrows(NullPointerException.class, () -\u003e event.addPerson(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"Apzure"},"content":" public void addPerson_personAlreadyInEvent_throwsDuplicatePersonException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"Apzure"},"content":" Event event \u003d new EventBuilder().withPerson(ALICE).build();","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"Apzure"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e event.addPerson(ALICE));","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"Apzure"},"content":" public void setPerson_nullTarget_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"Apzure"},"content":" Event event \u003d new EventBuilder().build();","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"Apzure"},"content":" assertThrows(NullPointerException.class, () -\u003e event.setPerson(null, ALICE));","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"Apzure"},"content":" public void setPerson_nullEditedPerson_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"Apzure"},"content":" Event event \u003d new EventBuilder().build();","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"Apzure"},"content":" assertThrows(NullPointerException.class, () -\u003e event.setPerson(ALICE, null));","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"Apzure"},"content":" public void setPerson_targetNotInEvent_throwsPersonNotFoundException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"Apzure"},"content":" Event event \u003d new EventBuilder().build();","lastModifiedDate":"2024-03-12"},{"lineNumber":63,"author":{"gitId":"Apzure"},"content":" assertThrows(PersonNotFoundException.class, () -\u003e event.setPerson(ALICE, BENSON));","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":66,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"Apzure"},"content":" public void setPerson_editedPersonIsSamePerson_success() {","lastModifiedDate":"2024-03-12"},{"lineNumber":68,"author":{"gitId":"Apzure"},"content":" Event event \u003d new EventBuilder().withPerson(ALICE).build();","lastModifiedDate":"2024-03-12"},{"lineNumber":69,"author":{"gitId":"Apzure"},"content":" event.setPerson(ALICE, ALICE);","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"Apzure"},"content":" assertTrue(event.getPersonList().contains(ALICE));","lastModifiedDate":"2024-03-12"},{"lineNumber":71,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":72,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":73,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":74,"author":{"gitId":"Apzure"},"content":" public void setPerson_editedPersonHasDifferentIdentity_success() {","lastModifiedDate":"2024-03-12"},{"lineNumber":75,"author":{"gitId":"Apzure"},"content":" Event event \u003d new EventBuilder().withPerson(ALICE).build();","lastModifiedDate":"2024-03-12"},{"lineNumber":76,"author":{"gitId":"Apzure"},"content":" event.setPerson(ALICE, BENSON);","lastModifiedDate":"2024-03-12"},{"lineNumber":77,"author":{"gitId":"Apzure"},"content":" assertFalse(event.getPersonList().contains(ALICE));","lastModifiedDate":"2024-03-12"},{"lineNumber":78,"author":{"gitId":"Apzure"},"content":" assertTrue(event.getPersonList().contains(BENSON));","lastModifiedDate":"2024-03-12"},{"lineNumber":79,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":80,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":81,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":82,"author":{"gitId":"Apzure"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-12"},{"lineNumber":83,"author":{"gitId":"Apzure"},"content":" Event event \u003d new EventBuilder().build();","lastModifiedDate":"2024-03-12"},{"lineNumber":84,"author":{"gitId":"Apzure"},"content":" String expected \u003d Event.class.getCanonicalName() + \"{eventName\u003d\" + event.getEventName()","lastModifiedDate":"2024-03-12"},{"lineNumber":85,"author":{"gitId":"Apzure"},"content":" + \", persons\u003d\" + event.getPersonList().toString() + \"}\";","lastModifiedDate":"2024-03-12"},{"lineNumber":86,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":87,"author":{"gitId":"Apzure"},"content":" assertEquals(expected, event.toString());","lastModifiedDate":"2024-03-12"},{"lineNumber":88,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":89,"author":{"gitId":"Apzure"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"Apzure":89}},{"path":"src/test/java/seedu/address/model/event/UniqueEventListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Apzure"},"content":"package seedu.address.model.event;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"Apzure"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"Apzure"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"Apzure"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"Apzure"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"myang2020"},"content":"import static seedu.address.testutil.TypicalEvents.getBingoEvent;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"myang2020"},"content":"import static seedu.address.testutil.TypicalEvents.getHikingEvent;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"Apzure"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"Apzure"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"Apzure"},"content":"import java.util.List;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"Apzure"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"Apzure"},"content":"import seedu.address.model.event.exceptions.DuplicateEventException;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"Apzure"},"content":"import seedu.address.model.event.exceptions.EventNotFoundException;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"Apzure"},"content":"import seedu.address.testutil.EventBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"Apzure"},"content":"public class UniqueEventListTest {","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"Apzure"},"content":" private final UniqueEventList uniqueEventList \u003d new UniqueEventList();","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"Apzure"},"content":" public void contains_nullEvent_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"Apzure"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueEventList.contains(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"Apzure"},"content":" public void contains_eventNotInList_returnsFalse() {","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"myang2020"},"content":" assertFalse(uniqueEventList.contains(getBingoEvent()));","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"Apzure"},"content":" public void contains_eventInList_returnsTrue() {","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"myang2020"},"content":" uniqueEventList.add(getBingoEvent());","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"myang2020"},"content":" assertTrue(uniqueEventList.contains(getBingoEvent()));","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"Apzure"},"content":" public void contains_eventWithSameIdentityFieldsInList_returnsTrue() {","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"myang2020"},"content":" uniqueEventList.add(getBingoEvent());","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"myang2020"},"content":" Event editedBingo \u003d new EventBuilder(getBingoEvent()).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"Apzure"},"content":" assertTrue(uniqueEventList.contains(editedBingo));","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"Apzure"},"content":" public void add_nullEvent_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"Apzure"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueEventList.add(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"Apzure"},"content":" public void add_duplicateEvent_throwsDuplicateEventException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"myang2020"},"content":" uniqueEventList.add(getBingoEvent());","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"myang2020"},"content":" assertThrows(DuplicateEventException.class, () -\u003e uniqueEventList.add(getBingoEvent()));","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"Apzure"},"content":" public void setEvent_nullTargetEvent_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"myang2020"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueEventList.setEvent(null, getBingoEvent()));","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":63,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"Apzure"},"content":" public void setEvent_nullEditedEvent_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"myang2020"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueEventList.setEvent(getBingoEvent(), null));","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":68,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":69,"author":{"gitId":"Apzure"},"content":" public void setEvent_targetEventNotInList_throwsEventNotFoundException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"myang2020"},"content":" assertThrows(EventNotFoundException.class, () -\u003e uniqueEventList.setEvent(getBingoEvent(), getBingoEvent()));","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":72,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":73,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":74,"author":{"gitId":"Apzure"},"content":" public void setEvent_editedEventIsSameEvent_success() {","lastModifiedDate":"2024-03-12"},{"lineNumber":75,"author":{"gitId":"myang2020"},"content":" uniqueEventList.add(getBingoEvent());","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"myang2020"},"content":" uniqueEventList.setEvent(getBingoEvent(), getBingoEvent());","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"Apzure"},"content":" UniqueEventList expectedUniqueEventList \u003d new UniqueEventList();","lastModifiedDate":"2024-03-12"},{"lineNumber":78,"author":{"gitId":"myang2020"},"content":" expectedUniqueEventList.add(getBingoEvent());","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"Apzure"},"content":" assertEquals(expectedUniqueEventList, uniqueEventList);","lastModifiedDate":"2024-03-12"},{"lineNumber":80,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":81,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":82,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":83,"author":{"gitId":"Apzure"},"content":" public void setEvent_editedEventHasSameIdentity_success() {","lastModifiedDate":"2024-03-12"},{"lineNumber":84,"author":{"gitId":"myang2020"},"content":" uniqueEventList.add(getBingoEvent());","lastModifiedDate":"2024-03-17"},{"lineNumber":85,"author":{"gitId":"myang2020"},"content":" Event editedBingo \u003d new EventBuilder(getBingoEvent()).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":86,"author":{"gitId":"myang2020"},"content":" uniqueEventList.setEvent(getBingoEvent(), editedBingo);","lastModifiedDate":"2024-03-17"},{"lineNumber":87,"author":{"gitId":"Apzure"},"content":" UniqueEventList expectedUniqueEventList \u003d new UniqueEventList();","lastModifiedDate":"2024-03-12"},{"lineNumber":88,"author":{"gitId":"Apzure"},"content":" expectedUniqueEventList.add(editedBingo);","lastModifiedDate":"2024-03-12"},{"lineNumber":89,"author":{"gitId":"Apzure"},"content":" assertEquals(expectedUniqueEventList, uniqueEventList);","lastModifiedDate":"2024-03-12"},{"lineNumber":90,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":91,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":92,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":93,"author":{"gitId":"Apzure"},"content":" public void setEvent_editedEventHasDifferentIdentity_success() {","lastModifiedDate":"2024-03-12"},{"lineNumber":94,"author":{"gitId":"myang2020"},"content":" uniqueEventList.add(getBingoEvent());","lastModifiedDate":"2024-03-17"},{"lineNumber":95,"author":{"gitId":"myang2020"},"content":" uniqueEventList.setEvent(getBingoEvent(), getHikingEvent());","lastModifiedDate":"2024-03-17"},{"lineNumber":96,"author":{"gitId":"Apzure"},"content":" UniqueEventList expectedUniqueEventList \u003d new UniqueEventList();","lastModifiedDate":"2024-03-12"},{"lineNumber":97,"author":{"gitId":"myang2020"},"content":" expectedUniqueEventList.add(getHikingEvent());","lastModifiedDate":"2024-03-17"},{"lineNumber":98,"author":{"gitId":"Apzure"},"content":" assertEquals(expectedUniqueEventList, uniqueEventList);","lastModifiedDate":"2024-03-12"},{"lineNumber":99,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":100,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":101,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":102,"author":{"gitId":"Apzure"},"content":" public void setEvent_editedEventHasNonUniqueIdentity_throwsDuplicateEventException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":103,"author":{"gitId":"myang2020"},"content":" uniqueEventList.add(getBingoEvent());","lastModifiedDate":"2024-03-17"},{"lineNumber":104,"author":{"gitId":"myang2020"},"content":" uniqueEventList.add(getHikingEvent());","lastModifiedDate":"2024-03-17"},{"lineNumber":105,"author":{"gitId":"myang2020"},"content":" assertThrows(DuplicateEventException.class, () -\u003e uniqueEventList.setEvent(getBingoEvent(), getHikingEvent()));","lastModifiedDate":"2024-03-17"},{"lineNumber":106,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":107,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":108,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":109,"author":{"gitId":"Apzure"},"content":" public void remove_nullEvent_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":110,"author":{"gitId":"Apzure"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueEventList.remove(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":111,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":112,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":113,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":114,"author":{"gitId":"Apzure"},"content":" public void remove_eventDoesNotExist_throwsEventNotFoundException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":115,"author":{"gitId":"myang2020"},"content":" assertThrows(EventNotFoundException.class, () -\u003e uniqueEventList.remove(getBingoEvent()));","lastModifiedDate":"2024-03-17"},{"lineNumber":116,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":117,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":118,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":119,"author":{"gitId":"Apzure"},"content":" public void remove_existingEvent_removesEvent() {","lastModifiedDate":"2024-03-12"},{"lineNumber":120,"author":{"gitId":"myang2020"},"content":" uniqueEventList.add(getBingoEvent());","lastModifiedDate":"2024-03-17"},{"lineNumber":121,"author":{"gitId":"myang2020"},"content":" uniqueEventList.remove(getBingoEvent());","lastModifiedDate":"2024-03-17"},{"lineNumber":122,"author":{"gitId":"Apzure"},"content":" UniqueEventList expectedUniqueEventList \u003d new UniqueEventList();","lastModifiedDate":"2024-03-12"},{"lineNumber":123,"author":{"gitId":"Apzure"},"content":" assertEquals(expectedUniqueEventList, uniqueEventList);","lastModifiedDate":"2024-03-12"},{"lineNumber":124,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":125,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":126,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":127,"author":{"gitId":"Apzure"},"content":" public void setEvents_nullUniqueEventList_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":128,"author":{"gitId":"Apzure"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueEventList.setEvents((UniqueEventList) null));","lastModifiedDate":"2024-03-12"},{"lineNumber":129,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":130,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":131,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":132,"author":{"gitId":"Apzure"},"content":" public void setEvents_uniqueEventList_replacesOwnListWithProvidedUniqueEventList() {","lastModifiedDate":"2024-03-12"},{"lineNumber":133,"author":{"gitId":"myang2020"},"content":" uniqueEventList.add(getBingoEvent());","lastModifiedDate":"2024-03-17"},{"lineNumber":134,"author":{"gitId":"Apzure"},"content":" UniqueEventList expectedUniqueEventList \u003d new UniqueEventList();","lastModifiedDate":"2024-03-12"},{"lineNumber":135,"author":{"gitId":"myang2020"},"content":" expectedUniqueEventList.add(getHikingEvent());","lastModifiedDate":"2024-03-17"},{"lineNumber":136,"author":{"gitId":"Apzure"},"content":" uniqueEventList.setEvents(expectedUniqueEventList);","lastModifiedDate":"2024-03-12"},{"lineNumber":137,"author":{"gitId":"Apzure"},"content":" assertEquals(expectedUniqueEventList, uniqueEventList);","lastModifiedDate":"2024-03-12"},{"lineNumber":138,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":139,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":140,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":141,"author":{"gitId":"Apzure"},"content":" public void setEvents_nullList_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":142,"author":{"gitId":"Apzure"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueEventList.setEvents((List\u003cEvent\u003e) null));","lastModifiedDate":"2024-03-12"},{"lineNumber":143,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":144,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":145,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":146,"author":{"gitId":"Apzure"},"content":" public void setEvents_list_replacesOwnListWithProvidedList() {","lastModifiedDate":"2024-03-12"},{"lineNumber":147,"author":{"gitId":"myang2020"},"content":" uniqueEventList.add(getBingoEvent());","lastModifiedDate":"2024-03-17"},{"lineNumber":148,"author":{"gitId":"myang2020"},"content":" List\u003cEvent\u003e eventList \u003d Collections.singletonList(getHikingEvent());","lastModifiedDate":"2024-03-17"},{"lineNumber":149,"author":{"gitId":"Apzure"},"content":" uniqueEventList.setEvents(eventList);","lastModifiedDate":"2024-03-12"},{"lineNumber":150,"author":{"gitId":"Apzure"},"content":" UniqueEventList expectedUniqueEventList \u003d new UniqueEventList();","lastModifiedDate":"2024-03-12"},{"lineNumber":151,"author":{"gitId":"myang2020"},"content":" expectedUniqueEventList.add(getHikingEvent());","lastModifiedDate":"2024-03-17"},{"lineNumber":152,"author":{"gitId":"Apzure"},"content":" assertEquals(expectedUniqueEventList, uniqueEventList);","lastModifiedDate":"2024-03-12"},{"lineNumber":153,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":154,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":155,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":156,"author":{"gitId":"Apzure"},"content":" public void setEvents_listWithDuplicateEvents_throwsDuplicateEventException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":157,"author":{"gitId":"myang2020"},"content":" List\u003cEvent\u003e listWithDuplicateEvents \u003d Arrays.asList(getBingoEvent(), getBingoEvent());","lastModifiedDate":"2024-03-17"},{"lineNumber":158,"author":{"gitId":"Apzure"},"content":" assertThrows(DuplicateEventException.class, () -\u003e uniqueEventList.setEvents(listWithDuplicateEvents));","lastModifiedDate":"2024-03-12"},{"lineNumber":159,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":160,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":161,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":162,"author":{"gitId":"Apzure"},"content":" public void asUnmodifiableObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":163,"author":{"gitId":"Apzure"},"content":" assertThrows(UnsupportedOperationException.class, ()","lastModifiedDate":"2024-03-12"},{"lineNumber":164,"author":{"gitId":"Apzure"},"content":" -\u003e uniqueEventList.asUnmodifiableObservableList().remove(0));","lastModifiedDate":"2024-03-12"},{"lineNumber":165,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":166,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":167,"author":{"gitId":"Apzure"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":168,"author":{"gitId":"Apzure"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-12"},{"lineNumber":169,"author":{"gitId":"Apzure"},"content":" assertEquals(uniqueEventList.asUnmodifiableObservableList().toString(), uniqueEventList.toString());","lastModifiedDate":"2024-03-12"},{"lineNumber":170,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":171,"author":{"gitId":"Apzure"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"Apzure":138,"myang2020":33}},{"path":"src/test/java/seedu/address/testutil/EventBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Apzure"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"Apzure"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"Apzure"},"content":"import java.util.List;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"Apzure"},"content":"import seedu.address.model.event.Event;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"Apzure"},"content":"import seedu.address.model.event.EventName;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"Apzure"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"Apzure"},"content":"/**","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"Apzure"},"content":" * A utility class to help with building Event objects.","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"Apzure"},"content":"public class EventBuilder {","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"Apzure"},"content":" public static final String DEFAULT_EVENT_NAME \u003d \"Sample Event\";","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"Apzure"},"content":" private EventName eventName;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"Apzure"},"content":" private List\u003cPerson\u003e personList;","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"Apzure"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"Apzure"},"content":" * Creates an {@code EventBuilder} with the default details.","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"Apzure"},"content":" public EventBuilder() {","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"Apzure"},"content":" eventName \u003d new EventName(DEFAULT_EVENT_NAME);","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"Apzure"},"content":" personList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"Apzure"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"Apzure"},"content":" * Initializes the EventBuilder with the data of {@code eventToCopy}.","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"Apzure"},"content":" public EventBuilder(Event eventToCopy) {","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"Apzure"},"content":" eventName \u003d eventToCopy.getEventName();","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"Apzure"},"content":" personList \u003d eventToCopy.getPersonList();","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"Apzure"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"Apzure"},"content":" * Sets the {@code EventName} of the {@code Event} that we are building.","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"Apzure"},"content":" public EventBuilder withEventName(String eventName) {","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"Apzure"},"content":" this.eventName \u003d new EventName(eventName);","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"Apzure"},"content":" return this;","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"Apzure"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"Apzure"},"content":" * Sets the {@code UniquePersonList} of the {@code Event} that we are building.","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"Apzure"},"content":" public EventBuilder withPersonList(List\u003cPerson\u003e personList) {","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"Apzure"},"content":" this.personList \u003d personList;","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"Apzure"},"content":" return this;","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"Apzure"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"Apzure"},"content":" * Adds a person to the {@code UniquePersonList} of the {@code Event} that we are building.","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"Apzure"},"content":" public EventBuilder withPerson(Person person) {","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"Apzure"},"content":" this.personList.add(person);","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"Apzure"},"content":" return this;","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"Apzure"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"Apzure"},"content":" * Builds the event based on the fields filled in earlier","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"Apzure"},"content":" * @return event with fields","lastModifiedDate":"2024-03-12"},{"lineNumber":63,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"Apzure"},"content":" public Event build() {","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"Apzure"},"content":" Event event \u003d new Event(eventName);","lastModifiedDate":"2024-03-12"},{"lineNumber":66,"author":{"gitId":"Apzure"},"content":" event.setPersons(personList);","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"Apzure"},"content":" return event;","lastModifiedDate":"2024-03-12"},{"lineNumber":68,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":69,"author":{"gitId":"Apzure"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"Apzure":69}},{"path":"src/test/java/seedu/address/testutil/ModelStub.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"myang2020"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"myang2020"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"myang2020"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"myang2020"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"myang2020"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"myang2020"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"myang2020"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"myang2020"},"content":"import seedu.address.model.ReadOnlyEventBook;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"myang2020"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"myang2020"},"content":"import seedu.address.model.event.Event;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"myang2020"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"myang2020"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"myang2020"},"content":" * A stub class for Model.","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"myang2020"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"myang2020"},"content":"public class ModelStub implements Model {","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"myang2020"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"myang2020"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"myang2020"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"myang2020"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"myang2020"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"myang2020"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"myang2020"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"myang2020"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"myang2020"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"myang2020"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"myang2020"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"myang2020"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"myang2020"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"myang2020"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"myang2020"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"myang2020"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"myang2020"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"myang2020"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"myang2020"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"myang2020"},"content":" public void setAddressBook(ReadOnlyAddressBook addressBook) {","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"myang2020"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"myang2020"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"myang2020"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"myang2020"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"myang2020"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"myang2020"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"myang2020"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"myang2020"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"myang2020"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"myang2020"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"myang2020"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"myang2020"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"myang2020"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"myang2020"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"myang2020"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"myang2020"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"myang2020"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"myang2020"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"myang2020"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":82,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":83,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":84,"author":{"gitId":"myang2020"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":85,"author":{"gitId":"myang2020"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2024-03-17"},{"lineNumber":86,"author":{"gitId":"myang2020"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":87,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":88,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":89,"author":{"gitId":"myang2020"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":90,"author":{"gitId":"myang2020"},"content":" public void setEventBook(ReadOnlyEventBook eventBook) {","lastModifiedDate":"2024-03-17"},{"lineNumber":91,"author":{"gitId":"myang2020"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":92,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":94,"author":{"gitId":"myang2020"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":95,"author":{"gitId":"myang2020"},"content":" public ReadOnlyEventBook getEventBook() {","lastModifiedDate":"2024-03-17"},{"lineNumber":96,"author":{"gitId":"myang2020"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":97,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":98,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":99,"author":{"gitId":"myang2020"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":100,"author":{"gitId":"myang2020"},"content":" public boolean hasEvent(Event event) {","lastModifiedDate":"2024-03-17"},{"lineNumber":101,"author":{"gitId":"myang2020"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":102,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":103,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":104,"author":{"gitId":"myang2020"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":105,"author":{"gitId":"myang2020"},"content":" public void deleteEvent(Event target) {","lastModifiedDate":"2024-03-17"},{"lineNumber":106,"author":{"gitId":"myang2020"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":107,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":108,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":109,"author":{"gitId":"myang2020"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":110,"author":{"gitId":"myang2020"},"content":" public void addEvent(Event event) {","lastModifiedDate":"2024-03-17"},{"lineNumber":111,"author":{"gitId":"myang2020"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":112,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":113,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":114,"author":{"gitId":"myang2020"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":115,"author":{"gitId":"myang2020"},"content":" public void setEvent(Event target, Event editedEvent) {","lastModifiedDate":"2024-03-17"},{"lineNumber":116,"author":{"gitId":"myang2020"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":117,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":118,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":119,"author":{"gitId":"myang2020"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":120,"author":{"gitId":"myang2020"},"content":" public boolean isAnEventSelected() {","lastModifiedDate":"2024-03-17"},{"lineNumber":121,"author":{"gitId":"myang2020"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":122,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":123,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":124,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":125,"author":{"gitId":"taeewonnn"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":126,"author":{"gitId":"taeewonnn"},"content":" public boolean isSameSelectedEvent(Event event) {","lastModifiedDate":"2024-03-20"},{"lineNumber":127,"author":{"gitId":"taeewonnn"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-19"},{"lineNumber":128,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":129,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":130,"author":{"gitId":"myang2020"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":131,"author":{"gitId":"myang2020"},"content":" public void selectEvent(Event event) {","lastModifiedDate":"2024-03-17"},{"lineNumber":132,"author":{"gitId":"myang2020"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":133,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":134,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":135,"author":{"gitId":"myang2020"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":136,"author":{"gitId":"myang2020"},"content":" public void deselectEvent() {","lastModifiedDate":"2024-03-17"},{"lineNumber":137,"author":{"gitId":"myang2020"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":138,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":139,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":140,"author":{"gitId":"myang2020"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":141,"author":{"gitId":"myang2020"},"content":" public boolean isPersonInSelectedEvent(Person person) {","lastModifiedDate":"2024-03-17"},{"lineNumber":142,"author":{"gitId":"myang2020"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":143,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":144,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":145,"author":{"gitId":"myang2020"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":146,"author":{"gitId":"myang2020"},"content":" public void addPersonToSelectedEvent(Person person) {","lastModifiedDate":"2024-03-17"},{"lineNumber":147,"author":{"gitId":"myang2020"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":148,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":149,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":150,"author":{"gitId":"ChocoRagdoll"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":151,"author":{"gitId":"ChocoRagdoll"},"content":" public void deletePersonFromSelectedEvent(Person person) {","lastModifiedDate":"2024-03-20"},{"lineNumber":152,"author":{"gitId":"ChocoRagdoll"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-20"},{"lineNumber":153,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":154,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":155,"author":{"gitId":"myang2020"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":156,"author":{"gitId":"myang2020"},"content":" public ObservableList\u003cEvent\u003e getFilteredEventList() {","lastModifiedDate":"2024-03-17"},{"lineNumber":157,"author":{"gitId":"myang2020"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":158,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":159,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":160,"author":{"gitId":"myang2020"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":161,"author":{"gitId":"myang2020"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonListOfSelectedEvent() {","lastModifiedDate":"2024-03-17"},{"lineNumber":162,"author":{"gitId":"myang2020"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":163,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":164,"author":{"gitId":"myang2020"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"ChocoRagdoll":5,"taeewonnn":6,"myang2020":153}},{"path":"src/test/java/seedu/address/testutil/TypicalEvents.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Apzure"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"Apzure"},"content":"import seedu.address.model.EventBook;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"Apzure"},"content":"import seedu.address.model.event.Event;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"Apzure"},"content":"/**","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"Apzure"},"content":" * A utility class containing a list of {@code Event} objects to be used in tests.","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"Apzure"},"content":"public class TypicalEvents {","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"Apzure"},"content":" private TypicalEvents() {","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"Apzure"},"content":" } // prevents instantiation","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"myang2020"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"myang2020"},"content":" * Returns the getBingoEvent() event.","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"myang2020"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"myang2020"},"content":" public static Event getBingoEvent() {","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"myang2020"},"content":" return new EventBuilder().withEventName(\"bingo\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"myang2020"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"myang2020"},"content":" * Returns the getHikingEvent() event.","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"myang2020"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"myang2020"},"content":" public static Event getHikingEvent() {","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"myang2020"},"content":" return new EventBuilder().withEventName(\"hiking\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"myang2020"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"myang2020"},"content":" * Returns the CONCERT event.","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"myang2020"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"myang2020"},"content":" public static Event getConcertEvent() {","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"myang2020"},"content":" return new EventBuilder().withEventName(\"concert\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"myang2020"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"myang2020"},"content":" * Returns the PARTY event.","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"myang2020"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"myang2020"},"content":" public static Event getPartyEvent() {","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"myang2020"},"content":" return new EventBuilder().withEventName(\"party\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"myang2020"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"myang2020"},"content":" * Returns the CONFERENCE event.","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"myang2020"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"myang2020"},"content":" public static Event getConferenceEvent() {","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"myang2020"},"content":" return new EventBuilder().withEventName(\"conference\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"myang2020"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"myang2020"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"Apzure"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"Apzure"},"content":" * Returns an {@code EventBook} with all the typical events.","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"Apzure"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"Apzure"},"content":" public static EventBook getTypicalEventBook() {","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"Apzure"},"content":" EventBook eventBook \u003d new EventBook();","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"Apzure"},"content":" for (Event event : getTypicalEvents()) {","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"Apzure"},"content":" eventBook.addEvent(event);","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"Apzure"},"content":" return eventBook;","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"myang2020"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"myang2020"},"content":" * Returns an {@code EventBook} with all the typical events.","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"myang2020"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"Apzure"},"content":" public static Event[] getTypicalEvents() {","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"myang2020"},"content":" Event bingo \u003d getBingoEvent();","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"myang2020"},"content":" Event hiking \u003d getHikingEvent();","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"myang2020"},"content":" Event concert \u003d getConcertEvent();","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"myang2020"},"content":" Event party \u003d getPartyEvent();","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"myang2020"},"content":" Event conference \u003d getConferenceEvent();","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"myang2020"},"content":" return new Event[]{bingo, hiking, concert, party, conference};","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":71,"author":{"gitId":"Apzure"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"Apzure":27,"myang2020":44}},{"path":"src/test/java/seedu/address/testutil/TypicalIndexes.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-08-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-08-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Index} objects to be used in tests.","lastModifiedDate":"2017-08-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class TypicalIndexes {","lastModifiedDate":"2017-08-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static final Index INDEX_FIRST_PERSON \u003d Index.fromOneBased(1);","lastModifiedDate":"2017-08-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final Index INDEX_SECOND_PERSON \u003d Index.fromOneBased(2);","lastModifiedDate":"2017-08-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final Index INDEX_THIRD_PERSON \u003d Index.fromOneBased(3);","lastModifiedDate":"2017-08-05"},{"lineNumber":12,"author":{"gitId":"taeewonnn"},"content":" public static final Index INDEX_FIRST_EVENT \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"taeewonnn"},"content":" public static final Index INDEX_SECOND_EVENT \u003d Index.fromOneBased(2);","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-08-05"}],"authorContributionMap":{"-":12,"taeewonnn":2}}] diff --git a/AY2324S2-CS2103T-T10-3_tp_master/commits.json b/AY2324S2-CS2103T-T10-3_tp_master/commits.json index 71801c9c..a02009b8 100644 --- a/AY2324S2-CS2103T-T10-3_tp_master/commits.json +++ b/AY2324S2-CS2103T-T10-3_tp_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"Apzure":[{"date":"2024-03-01","commitResults":[{"hash":"7cf00ce62f5c66c95e74d5206be3c397635ca505","isMergeCommit":true,"messageTitle":"Merge pull request #9 from taeewonnn/update-README","messageBody":"Update readme","fileTypesAndContributionMap":{}},{"hash":"73c189c07b6867e6b48f08ac3eec20a1c2524b9d","isMergeCommit":false,"messageTitle":"Implement Event class and EventListPanel UI","messageBody":"Event class currently only has a field of name, it does not have\nfunctionality to contain person objects yet.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":616,"deletions":15},"test-code":{"insertions":6,"deletions":0}}}]},{"date":"2024-03-02","commitResults":[{"hash":"3d350a79286ee104de719219a69ac6632e408824","isMergeCommit":false,"messageTitle":"Add CreateEventCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":197,"deletions":8},"test-code":{"insertions":31,"deletions":0}}}]},{"date":"2024-03-03","commitResults":[{"hash":"bd1eadc4b81baead532e60bcb7fb7e826fccde11","isMergeCommit":true,"messageTitle":"Merge pull request #12 from taeewonnn/update-README","messageBody":"Fix GFMD","fileTypesAndContributionMap":{}}]},{"date":"2024-03-04","commitResults":[{"hash":"1ec12600ddbaab22def461ec31474ef2f5809d5b","isMergeCommit":false,"messageTitle":"Add UniquePersonList field to Event class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":59,"deletions":18}}}]},{"date":"2024-03-05","commitResults":[{"hash":"71b54dc2dc68913e28508b22b40a3a955f70d18a","isMergeCommit":false,"messageTitle":"Document Create Event Command in UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":122}}}]},{"date":"2024-03-07","commitResults":[{"hash":"32b4f3bded6bc4f2aca6c121939ffffd0bcef0f1","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into Event-Feature","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"81dd327a4ce186191fafba4593b5ba6b90f4ea24","isMergeCommit":true,"messageTitle":"Merge pull request #13 from myang2020/AboutUs","messageBody":"Update AboutUs","fileTypesAndContributionMap":{}},{"hash":"4acc6fc0ccda79e2ee616f944a79a9aa7f8007c0","isMergeCommit":true,"messageTitle":"Merge pull request #18 from taeewonnn/document-DG","messageBody":"Modify DG","fileTypesAndContributionMap":{}}]},{"date":"2024-03-10","commitResults":[{"hash":"4b3685a2bfa825dce9848876f971580e05481ce8","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-add-event-command","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"1f41d109b0c58bc5e51c0cf6fbc3f2eadbf33980","isMergeCommit":false,"messageTitle":"Change Command Name to Add Event","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":8},"other":{"insertions":10,"deletions":11}}},{"hash":"bfb18ca07a1f4d35d4f75ef9e94c95b744cf3b45","isMergeCommit":false,"messageTitle":"Add new line at EOF","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"786625dd9f99159290d1199357addc362d5dd522","isMergeCommit":false,"messageTitle":"Change Command name to addev","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}},{"hash":"90a5396f53fb282f23bf93bc47b70608ac16f529","isMergeCommit":false,"messageTitle":"Fix Checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":27,"deletions":12}}}]},{"date":"2024-03-12","commitResults":[{"hash":"6d88327d17dbe9d668201b8118080b4ad51e930e","isMergeCommit":false,"messageTitle":"Add Testing","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":6},"test-code":{"insertions":517,"deletions":0}}},{"hash":"2fc1abaa0fbef58d1f58ca930a5832c27ce08bf9","isMergeCommit":false,"messageTitle":"Fix Checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":1}}},{"hash":"934b33a9d672d2200ada704742132fcec133c426","isMergeCommit":false,"messageTitle":"Add Testing for ModelManager and UniqueEventList","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":2},"test-code":{"insertions":125,"deletions":25}}},{"hash":"123b8bde91b3f98ba3c167bbc7223e402b48a898","isMergeCommit":false,"messageTitle":"Add UniqueEventList Testing","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":171,"deletions":0}}},{"hash":"d7fdee62127116a04faf0c93742749872a7ec569","isMergeCommit":false,"messageTitle":"Add Testing for EventBook Equals() and Event toString","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":23,"deletions":0}}},{"hash":"e4196929153f928e891b0580e6906c2be6b91deb","isMergeCommit":false,"messageTitle":"Add Test for AddEventCommand toString and for ModelManager","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":54,"deletions":0}}}]},{"date":"2024-03-15","commitResults":[{"hash":"2bd0cf2246904374a83cd3b1b241ecfe3cb7e86d","isMergeCommit":true,"messageTitle":"Merge pull request #26 from Apzure/branch-add-event-command","messageBody":"Implement add event command","fileTypesAndContributionMap":{}},{"hash":"580d791e80a5c619c1d020e0d2bbb77f4e3e6920","isMergeCommit":false,"messageTitle":"Implement select commmand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":341,"deletions":55}}},{"hash":"dd9ff38fc84d965b3b9ada483173c421fdd3b0d4","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":19},"test-code":{"insertions":27,"deletions":0}}},{"hash":"39b57cd5ad7b4500f39ba8290eb1a413d67b74c0","isMergeCommit":false,"messageTitle":"Fix EOF","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-16","commitResults":[{"hash":"a960fae918be0ac0556c3cf24f8f2b69127e1050","isMergeCommit":true,"messageTitle":"Merge pull request #34 from myang2020/branch-implement-select-command","messageBody":"Implement select command","fileTypesAndContributionMap":{}}]},{"date":"2024-03-17","commitResults":[{"hash":"5cb7510398dcd4864cefcc4a938a790fb9ce26b2","isMergeCommit":true,"messageTitle":"Merge pull request #40 from myang2020/implement-invite","messageBody":"Implement Invite Command","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"7939df43a64e71fa99cdec5fa0f1054adfdbcad4","isMergeCommit":true,"messageTitle":"Merge pull request #45 from taeewonnn/update-CLISyntax","messageBody":"Modify event prefix","fileTypesAndContributionMap":{}}]},{"date":"2024-03-22","commitResults":[{"hash":"3c45ab22238bbb7211df31bd757d8ff54339bef4","isMergeCommit":true,"messageTitle":"Merge pull request #48 from ChocoRagdoll/branch-UpdateReadMe","messageBody":"Update README","fileTypesAndContributionMap":{}},{"hash":"389952b35e3cee80e9f163fc88da3cb0f1e54915","isMergeCommit":true,"messageTitle":"Merge pull request #49 from ChocoRagdoll/branch-README","messageBody":"Move the README to main folder","fileTypesAndContributionMap":{}},{"hash":"c924b12c93faa9f7677c2cf79f1368f6e463038c","isMergeCommit":true,"messageTitle":"Merge pull request #50 from ChocoRagdoll/branch-README","messageBody":"Update flags","fileTypesAndContributionMap":{}}]}],"nusliuyifan":[],"ChocoRagdoll":[{"date":"2024-03-13","commitResults":[{"hash":"da164ebad48d877f597c6b0ebdbba7fcc08a97e5","isMergeCommit":false,"messageTitle":"Document select, deselect and delete participant","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":61,"deletions":14}}},{"hash":"409848f2ac5f54a0e3e6a6442a35fbc1a8fc9dfe","isMergeCommit":true,"messageTitle":"Merge pull request #30 from taeewonnn/document-Fix","messageBody":"Update UG","fileTypesAndContributionMap":{}}]},{"date":"2024-03-14","commitResults":[{"hash":"a9ad951bcc328d1260435569a0996f7f7d517959","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-T10-3/tp into branch-DocumentSelectDelete","messageBody":"# Conflicts:\n#\tdocs/UserGuide.md\n","fileTypesAndContributionMap":{}},{"hash":"a7f158ccda50dd298ce917f5b84280be09f5898c","isMergeCommit":true,"messageTitle":"Merge pull request #31 from ChocoRagdoll/branch-DocumentSelectDelete","messageBody":"Document select, deselect and delete participant","fileTypesAndContributionMap":{}}]},{"date":"2024-03-20","commitResults":[{"hash":"c97839bcf9ac0a0cc4383beb72839967ca0abd10","isMergeCommit":false,"messageTitle":"Implement Delete Participant Command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":166,"deletions":0}}},{"hash":"fb7902e5a2ff2d1bbdec252f7837b87ffcacfd7b","isMergeCommit":false,"messageTitle":"Fix bug and fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":25,"deletions":8},"test-code":{"insertions":5,"deletions":0}}},{"hash":"2a8e7bf61afb87c76235c46823b9ed22e6944b9c","isMergeCommit":false,"messageTitle":"Add tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0},"test-code":{"insertions":210,"deletions":0}}},{"hash":"78e522b1c7323d5d9bee53e85dce48afa8c8674c","isMergeCommit":false,"messageTitle":"Add JavaDoc","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":0}}},{"hash":"5ea294e3f7b1037a610f7316154c6d6573e729dd","isMergeCommit":false,"messageTitle":"Make minor changes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":7}}},{"hash":"02d5524aa676d715de330dc7cbdd9a07d6808ff2","isMergeCommit":false,"messageTitle":"Delete unused declaration","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":2}}},{"hash":"e6951987f7f4c13b5599fe4e22fe4821c4a48ff3","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-ImplementDeleteParticipant","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a2936206a333c6d7dc68361ac25cdfe21e6930f0","isMergeCommit":true,"messageTitle":"Merge pull request #42 from ChocoRagdoll/branch-ImplementDeleteParticipant","messageBody":"Implement Delete Participant Command","fileTypesAndContributionMap":{}}]},{"date":"2024-03-22","commitResults":[{"hash":"cc4e77aff17f827ceeceb242babe42f378967963","isMergeCommit":false,"messageTitle":"Update README","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":22,"deletions":0}}},{"hash":"40c0d9cd0d0e8bf533ae89b1e594dc56981e15f0","isMergeCommit":false,"messageTitle":"Fix formatting errors","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}},{"hash":"8a2fad3222183a00d7578a1c01636fe266e6264b","isMergeCommit":false,"messageTitle":"Move the README to main folder","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":14,"deletions":29}}},{"hash":"dcbc4651f3de7feff5c253bf6d15f662362466e6","isMergeCommit":false,"messageTitle":"Update flags","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":9,"deletions":9}}},{"hash":"7f7ea7386f2e43d2c175d4d8e10d19a2e81be5ca","isMergeCommit":false,"messageTitle":"Update User Guide command summary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":4}}},{"hash":"d68465ba6c54f1ed86e4b68b930044c13d3229a6","isMergeCommit":false,"messageTitle":"Fix formatting error","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]}],"taeewonnn":[{"date":"2024-02-29","commitResults":[{"hash":"159f028e4b4133b90bd9129ac30d346895c02ce5","isMergeCommit":false,"messageTitle":"Update README","messageBody":"Let\u0027s update README file and upload mock UI image\n","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":3}}}]},{"date":"2024-03-01","commitResults":[{"hash":"8ac632def05a6dabddebfc9f65e0f457b48cfb4b","isMergeCommit":false,"messageTitle":"Update README","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-02","commitResults":[{"hash":"35d21a156592acc62436aa9a7d097d6f0a78b4a9","isMergeCommit":false,"messageTitle":"Fix GFMD","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}}]},{"date":"2024-03-05","commitResults":[{"hash":"23a1cf86fd275dab1532cc7676ea50f30ff07468","isMergeCommit":false,"messageTitle":"Document Delete and Add Command in UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":19,"deletions":114}}},{"hash":"4f605e5315aff61dcf6ffc555e7f94d4bc5b0262","isMergeCommit":false,"messageTitle":"Modify DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":16,"deletions":12}}}]},{"date":"2024-03-07","commitResults":[{"hash":"2f796666b1104c7b60071a3e0637dbdffa97618a","isMergeCommit":false,"messageTitle":"Update DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":179,"deletions":22}}}]},{"date":"2024-03-10","commitResults":[{"hash":"996df9f81c651cda57276b70766b548d692f85ea","isMergeCommit":false,"messageTitle":"Modify delete event and add part command","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":7}}}]},{"date":"2024-03-11","commitResults":[{"hash":"f0c2a718fc2f7b803e7014c1d4c14b431f0a5ef0","isMergeCommit":true,"messageTitle":"Merge pull request #16 from Apzure/branch-user-guide","messageBody":"Document Create Event Command in UG","fileTypesAndContributionMap":{}},{"hash":"64a6ccc63d139e4da0e919f0dc4ead48cb58257a","isMergeCommit":false,"messageTitle":"Modify UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"3f7944d6a6884706732b8247dd7cf53d1d5b7e86","isMergeCommit":true,"messageTitle":"Fix merge conflict one","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b07c1e0a352e7c630e1eb43d69782044ac537d31","isMergeCommit":false,"messageTitle":"Modify examples","messageBody":"Examples given seem very technical\n\nLet\u0027s fix that\n","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"81dc21fa1073f1edbebe98c3a1e98353a8d8872f","isMergeCommit":false,"messageTitle":"Update parameters","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":6}}},{"hash":"000acd70cb1942b6fcd47ae0ae16fb03514086f9","isMergeCommit":true,"messageTitle":"Merge pull request #17 from taeewonnn/document-delete,createCommand","messageBody":"Document Delete and Add Command in UG","fileTypesAndContributionMap":{}}]},{"date":"2024-03-13","commitResults":[{"hash":"7ed73b7df43ce373274f7855eda1738eee413ba2","isMergeCommit":true,"messageTitle":"Merge pull request #20 from myang2020/branch-updateUG","messageBody":"Document Add Participant to Selected Event Command in UG","fileTypesAndContributionMap":{}},{"hash":"d3c7719020b5d85f70b78116a6b4472cccd5a43c","isMergeCommit":false,"messageTitle":"Update UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":139}}}]},{"date":"2024-03-18","commitResults":[{"hash":"0902873a00d3659751b722dd502e08a704adc321","isMergeCommit":false,"messageTitle":"Add delete event command and parser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":104,"deletions":0}}}]},{"date":"2024-03-19","commitResults":[{"hash":"7a901a193820928d10293ed16b08a0c01af342d6","isMergeCommit":false,"messageTitle":"Add test","messageBody":"Let\u0027s add testing to multiple delete event command and fix check style\nerrors\n","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":2},"test-code":{"insertions":110,"deletions":0}}},{"hash":"793b0c0a3a372a5743b5b47dc18791e59a4a22ac","isMergeCommit":false,"messageTitle":"Update delete command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":2}}},{"hash":"0ca0bebb67c9842bc0fefe4b1d2fb6ff95dfa728","isMergeCommit":false,"messageTitle":"Modify delete event command","messageBody":"Let\u0027s change event command to delete other non selected events\nwhen a specific event is selected\n","fileTypesAndContributionMap":{"functional-code":{"insertions":21,"deletions":4}}},{"hash":"fc76fb0f7589c736aa32427c858ba5ac1ca0d6ce","isMergeCommit":false,"messageTitle":"Fix errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":7},"test-code":{"insertions":6,"deletions":0}}}]},{"date":"2024-03-20","commitResults":[{"hash":"20b6180aab5561c43487c6a203596a987bfe7a2c","isMergeCommit":false,"messageTitle":"Add tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":29,"deletions":1}}},{"hash":"21dc312b3b22f7797fa9fe465d12ee80fbf456bd","isMergeCommit":false,"messageTitle":"Update names","messageBody":"Let\u0027s fix the names and improve code quality\n","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4},"test-code":{"insertions":4,"deletions":4}}},{"hash":"1f4c01145ad678b21e7e87a02df9147dc9ba04af","isMergeCommit":true,"messageTitle":"Merge pull request #41 from taeewonnn/command-DeleteEvent","messageBody":"Command delete event","fileTypesAndContributionMap":{}},{"hash":"eaace81be488104500fb3fee150762b0a7926bdc","isMergeCommit":false,"messageTitle":"Modify event prefix","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-21","commitResults":[{"hash":"67e6595184516a9dc1b6173c890fe2d8860782e1","isMergeCommit":false,"messageTitle":"Modify DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":196,"deletions":34}}},{"hash":"71da5eab595540ddc9cb7ed098337a59cb1643c7","isMergeCommit":true,"messageTitle":"Merge pull request #46 from taeewonnn/update-DG","messageBody":"Modify DG","tags":["v1.2"],"fileTypesAndContributionMap":{}}]}],"myang2020":[{"date":"2024-02-29","commitResults":[{"hash":"17f988724f313f112ea30f88ed1b6ed07c9d2368","isMergeCommit":false,"messageTitle":"Add images to AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":15,"deletions":15}}}]},{"date":"2024-03-03","commitResults":[{"hash":"118e8c6cee2e6e2fe86583a23972c614e14a80a0","isMergeCommit":false,"messageTitle":"Edit AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":9}}}]},{"date":"2024-03-06","commitResults":[{"hash":"d9196a2529d661340ec72c68afba364d5d82dcbb","isMergeCommit":false,"messageTitle":"Fixed roles and responsibilities","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":14,"deletions":17}}},{"hash":"110878606fe34bbb2065a897506e34ec8d323258","isMergeCommit":false,"messageTitle":"Fix AboutUs layout","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"250a091f5e9cb32a66b0378bd04f3f0fa48f8441","isMergeCommit":false,"messageTitle":"no message","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":5}}}]},{"date":"2024-03-07","commitResults":[{"hash":"1bd7789455ac95ece0bd58fc95c361c390b5961e","isMergeCommit":false,"messageTitle":"Add \u0027add\u0027 and \u0027new_event\u0027 commands","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":99}}},{"hash":"4b12d51b2f4621da610f55c8904138744f53b30f","isMergeCommit":false,"messageTitle":"Add \"add to event\" command","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":15}}},{"hash":"7418f75d7eec29eb373bf6dddbeea4eddc1c6597","isMergeCommit":false,"messageTitle":"Fix bug","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"dcb82341ecef35e9f6bd90799f0b446090ad4fd4","isMergeCommit":false,"messageTitle":"no message","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"e21762174f160dc6812734e612b5e76babc41267","isMergeCommit":false,"messageTitle":"Fix typo","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":2}}},{"hash":"3fe644039831685e44d98c2a7d0b88e4189a7e09","isMergeCommit":false,"messageTitle":"Fix typo","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":11}}},{"hash":"5409793dea670f1e9340414896573a08b3df95ed","isMergeCommit":false,"messageTitle":"Beautify AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":31,"deletions":19}}},{"hash":"f40bf1dde86de78da50030293f24a2dc49994772","isMergeCommit":false,"messageTitle":"Finalize AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":29,"deletions":33}}},{"hash":"bb9a36868f78633cb42c2c37c208722f27acca40","isMergeCommit":false,"messageTitle":"Fix formatting","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":1}}},{"hash":"b2eb78d5ac9c2f731ea2368390351ab506d51076","isMergeCommit":false,"messageTitle":"Fix formatting","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}},{"hash":"a51c1c5b4d713a64b1215c1c6f555f39bff5eed1","isMergeCommit":false,"messageTitle":"Fix formatting","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"2e38c3dc6ac1551ffd5d3664e1aef35246f6bf94","isMergeCommit":false,"messageTitle":"Fix EOF error","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-10","commitResults":[{"hash":"fc65243ef9ed6f4c4b94e11a23dd34777d9c8bf6","isMergeCommit":false,"messageTitle":"Update commands","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":19,"deletions":5}}},{"hash":"d12580f75895a2b5b959e22495c2ad11603b0c2a","isMergeCommit":false,"messageTitle":"Update command summary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}}]},{"date":"2024-03-12","commitResults":[{"hash":"cafc58809ca63a0e3fb0d753ada7b847de04406e","isMergeCommit":false,"messageTitle":"Fix parameter format","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":27}}},{"hash":"80da75a326302abdeab0fb9f1789e46b1123d397","isMergeCommit":true,"messageTitle":"Fix order and command format","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"9c3dcb071cde984f9b9a8b5fa82aba8b9c49bd9d","isMergeCommit":false,"messageTitle":"Fix order and command format","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-16","commitResults":[{"hash":"0378ca23683731d38af54ce2782f02e721b0ad4a","isMergeCommit":false,"messageTitle":"Add SelectCommandTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":67,"deletions":0}}},{"hash":"20b141f1c0b370d9046e5296ec1ea1886b6a4eae","isMergeCommit":false,"messageTitle":"Test SelectCommand moethods in LogicManagerTest","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":5,"deletions":0}}},{"hash":"15346627985a98cd4d26b3e932659f4b283dc37a","isMergeCommit":false,"messageTitle":"Reformat code to align with coding standard","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":0},"test-code":{"insertions":45,"deletions":21}}},{"hash":"485ccbad6c84c933b80cf8f4fb863f16f8c5f810","isMergeCommit":false,"messageTitle":"Add tests for AddressBookParser","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":20,"deletions":1}}},{"hash":"46f45f2b6f6fce323f65f83d00c51b1e23401e9e","isMergeCommit":false,"messageTitle":"Implement deselect event","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":64,"deletions":0},"test-code":{"insertions":37,"deletions":0}}},{"hash":"d01bfd5c140370d31f3f618f5892e9b019988731","isMergeCommit":false,"messageTitle":"Add testing","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":6},"test-code":{"insertions":62,"deletions":1}}},{"hash":"e933a10c9bedbcd6b39346bad7a2ff8d2ff10ce2","isMergeCommit":false,"messageTitle":"Remove unnecessary tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":7},"test-code":{"insertions":0,"deletions":59}}},{"hash":"ed0cdfdae8ef02a48dceb24030e30eed082ad16b","isMergeCommit":false,"messageTitle":"Add test","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":1},"test-code":{"insertions":79,"deletions":0}}},{"hash":"cfabbed0e11a02d635a3a6ec4b0a39ea7f9eddef","isMergeCommit":false,"messageTitle":"Fix formatting","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":1}}},{"hash":"e1de45ba217e2cbecb36eb4d6fc88443992b95ed","isMergeCommit":false,"messageTitle":"Fix formatting","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}},{"hash":"c34adfc9fa2d5b8a1407aba4f4abbfa7618f88e1","isMergeCommit":false,"messageTitle":"Fix newline format","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":78,"deletions":78}}},{"hash":"4a7fb61ae55d88776145f6a08ff937110c54b34f","isMergeCommit":false,"messageTitle":"Setup toolkit in tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":7,"deletions":18}}},{"hash":"c6bac293a89710c07fbf736a3246b13722654bee","isMergeCommit":false,"messageTitle":"Remove unused variables","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":7}}},{"hash":"8c04ef23e43d7dadd3bf4b184afdd83fe7316689","isMergeCommit":false,"messageTitle":"Fix tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":33,"deletions":24}}},{"hash":"8236295ad042f5f315b7ea9e9ed6afc5f91904ad","isMergeCommit":false,"messageTitle":"Remove test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":69}}},{"hash":"00c99a9fad2a0c998bbfc1604719468bbc878f9d","isMergeCommit":false,"messageTitle":"Remove UI","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":92}}},{"hash":"68e29e99e84ecd1b1bf10f4acb849f0b8c02370e","isMergeCommit":false,"messageTitle":"Improve code quality","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":2},"test-code":{"insertions":4,"deletions":4}}},{"hash":"94a55e3db29040279807f819f3aaf35b73cb1bfc","isMergeCommit":false,"messageTitle":"Change access modifiers","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":4,"deletions":6}}},{"hash":"2d125487a4273229c884d54c99b84583ae3ce9cd","isMergeCommit":false,"messageTitle":"Fix style","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":1}}}]},{"date":"2024-03-17","commitResults":[{"hash":"afbe3d920c23f604aebf606a3f3224f53c2cee6d","isMergeCommit":false,"messageTitle":"Implement invite command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":174,"deletions":3},"test-code":{"insertions":397,"deletions":331}}}]}]},"authorFileTypeContributionMap":{"Apzure":{"docs":6,"functional-code":1013,"test-code":697},"nusliuyifan":{"docs":0,"functional-code":0,"test-code":0},"ChocoRagdoll":{"docs":77,"functional-code":184,"test-code":216},"taeewonnn":{"docs":219,"functional-code":129,"test-code":143},"myang2020":{"docs":52,"functional-code":244,"test-code":531}},"authorContributionVariance":{"Apzure":45963.543,"nusliuyifan":0.0,"ChocoRagdoll":6581.03,"taeewonnn":4856.6567,"myang2020":55167.004},"authorDisplayNameMap":{"Apzure":"CS2103T-T10-3 NIGE..N YI","nusliuyifan":"CS2103T-T10-3 LIU ..IFAN","ChocoRagdoll":"CS2103T-T10-3 SONG..CHAO","taeewonnn":"CS2103T-T10-3 HAN .. WON","myang2020":"CS2103T-T10-3 YANG..X CK"}} +{"authorDailyContributionsMap":{"Apzure":[{"date":"2024-03-01","commitResults":[{"hash":"7cf00ce62f5c66c95e74d5206be3c397635ca505","isMergeCommit":true,"messageTitle":"Merge pull request #9 from taeewonnn/update-README","messageBody":"Update readme","fileTypesAndContributionMap":{}},{"hash":"73c189c07b6867e6b48f08ac3eec20a1c2524b9d","isMergeCommit":false,"messageTitle":"Implement Event class and EventListPanel UI","messageBody":"Event class currently only has a field of name, it does not have\nfunctionality to contain person objects yet.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":616,"deletions":15},"test-code":{"insertions":6,"deletions":0}}}]},{"date":"2024-03-02","commitResults":[{"hash":"3d350a79286ee104de719219a69ac6632e408824","isMergeCommit":false,"messageTitle":"Add CreateEventCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":197,"deletions":8},"test-code":{"insertions":31,"deletions":0}}}]},{"date":"2024-03-03","commitResults":[{"hash":"bd1eadc4b81baead532e60bcb7fb7e826fccde11","isMergeCommit":true,"messageTitle":"Merge pull request #12 from taeewonnn/update-README","messageBody":"Fix GFMD","fileTypesAndContributionMap":{}}]},{"date":"2024-03-04","commitResults":[{"hash":"1ec12600ddbaab22def461ec31474ef2f5809d5b","isMergeCommit":false,"messageTitle":"Add UniquePersonList field to Event class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":59,"deletions":18}}}]},{"date":"2024-03-05","commitResults":[{"hash":"71b54dc2dc68913e28508b22b40a3a955f70d18a","isMergeCommit":false,"messageTitle":"Document Create Event Command in UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":122}}}]},{"date":"2024-03-07","commitResults":[{"hash":"32b4f3bded6bc4f2aca6c121939ffffd0bcef0f1","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into Event-Feature","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"81dd327a4ce186191fafba4593b5ba6b90f4ea24","isMergeCommit":true,"messageTitle":"Merge pull request #13 from myang2020/AboutUs","messageBody":"Update AboutUs","fileTypesAndContributionMap":{}},{"hash":"4acc6fc0ccda79e2ee616f944a79a9aa7f8007c0","isMergeCommit":true,"messageTitle":"Merge pull request #18 from taeewonnn/document-DG","messageBody":"Modify DG","fileTypesAndContributionMap":{}}]},{"date":"2024-03-10","commitResults":[{"hash":"4b3685a2bfa825dce9848876f971580e05481ce8","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-add-event-command","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"1f41d109b0c58bc5e51c0cf6fbc3f2eadbf33980","isMergeCommit":false,"messageTitle":"Change Command Name to Add Event","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":8},"other":{"insertions":10,"deletions":11}}},{"hash":"bfb18ca07a1f4d35d4f75ef9e94c95b744cf3b45","isMergeCommit":false,"messageTitle":"Add new line at EOF","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"786625dd9f99159290d1199357addc362d5dd522","isMergeCommit":false,"messageTitle":"Change Command name to addev","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}},{"hash":"90a5396f53fb282f23bf93bc47b70608ac16f529","isMergeCommit":false,"messageTitle":"Fix Checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":27,"deletions":12}}}]},{"date":"2024-03-12","commitResults":[{"hash":"6d88327d17dbe9d668201b8118080b4ad51e930e","isMergeCommit":false,"messageTitle":"Add Testing","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":6},"test-code":{"insertions":517,"deletions":0}}},{"hash":"2fc1abaa0fbef58d1f58ca930a5832c27ce08bf9","isMergeCommit":false,"messageTitle":"Fix Checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":1}}},{"hash":"934b33a9d672d2200ada704742132fcec133c426","isMergeCommit":false,"messageTitle":"Add Testing for ModelManager and UniqueEventList","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":2},"test-code":{"insertions":125,"deletions":25}}},{"hash":"123b8bde91b3f98ba3c167bbc7223e402b48a898","isMergeCommit":false,"messageTitle":"Add UniqueEventList Testing","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":171,"deletions":0}}},{"hash":"d7fdee62127116a04faf0c93742749872a7ec569","isMergeCommit":false,"messageTitle":"Add Testing for EventBook Equals() and Event toString","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":23,"deletions":0}}},{"hash":"e4196929153f928e891b0580e6906c2be6b91deb","isMergeCommit":false,"messageTitle":"Add Test for AddEventCommand toString and for ModelManager","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":54,"deletions":0}}}]},{"date":"2024-03-15","commitResults":[{"hash":"2bd0cf2246904374a83cd3b1b241ecfe3cb7e86d","isMergeCommit":true,"messageTitle":"Merge pull request #26 from Apzure/branch-add-event-command","messageBody":"Implement add event command","fileTypesAndContributionMap":{}},{"hash":"580d791e80a5c619c1d020e0d2bbb77f4e3e6920","isMergeCommit":false,"messageTitle":"Implement select commmand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":341,"deletions":55}}},{"hash":"dd9ff38fc84d965b3b9ada483173c421fdd3b0d4","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":19},"test-code":{"insertions":27,"deletions":0}}},{"hash":"39b57cd5ad7b4500f39ba8290eb1a413d67b74c0","isMergeCommit":false,"messageTitle":"Fix EOF","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-16","commitResults":[{"hash":"a960fae918be0ac0556c3cf24f8f2b69127e1050","isMergeCommit":true,"messageTitle":"Merge pull request #34 from myang2020/branch-implement-select-command","messageBody":"Implement select command","fileTypesAndContributionMap":{}}]},{"date":"2024-03-17","commitResults":[{"hash":"5cb7510398dcd4864cefcc4a938a790fb9ce26b2","isMergeCommit":true,"messageTitle":"Merge pull request #40 from myang2020/implement-invite","messageBody":"Implement Invite Command","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"7939df43a64e71fa99cdec5fa0f1054adfdbcad4","isMergeCommit":true,"messageTitle":"Merge pull request #45 from taeewonnn/update-CLISyntax","messageBody":"Modify event prefix","fileTypesAndContributionMap":{}}]},{"date":"2024-03-22","commitResults":[{"hash":"3c45ab22238bbb7211df31bd757d8ff54339bef4","isMergeCommit":true,"messageTitle":"Merge pull request #48 from ChocoRagdoll/branch-UpdateReadMe","messageBody":"Update README","fileTypesAndContributionMap":{}},{"hash":"389952b35e3cee80e9f163fc88da3cb0f1e54915","isMergeCommit":true,"messageTitle":"Merge pull request #49 from ChocoRagdoll/branch-README","messageBody":"Move the README to main folder","fileTypesAndContributionMap":{}},{"hash":"c924b12c93faa9f7677c2cf79f1368f6e463038c","isMergeCommit":true,"messageTitle":"Merge pull request #50 from ChocoRagdoll/branch-README","messageBody":"Update flags","fileTypesAndContributionMap":{}},{"hash":"973f3d8fe1391ca4e09c84e2fd7ffc79e6d74b58","isMergeCommit":true,"messageTitle":"Merge pull request #52 from ChocoRagdoll/branch-UpdateDeleteParticipantUML","messageBody":"Update UML sequence diagram for delete participant command","fileTypesAndContributionMap":{}}]}],"nusliuyifan":[],"ChocoRagdoll":[{"date":"2024-03-13","commitResults":[{"hash":"da164ebad48d877f597c6b0ebdbba7fcc08a97e5","isMergeCommit":false,"messageTitle":"Document select, deselect and delete participant","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":61,"deletions":14}}},{"hash":"409848f2ac5f54a0e3e6a6442a35fbc1a8fc9dfe","isMergeCommit":true,"messageTitle":"Merge pull request #30 from taeewonnn/document-Fix","messageBody":"Update UG","fileTypesAndContributionMap":{}}]},{"date":"2024-03-14","commitResults":[{"hash":"a9ad951bcc328d1260435569a0996f7f7d517959","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-T10-3/tp into branch-DocumentSelectDelete","messageBody":"# Conflicts:\n#\tdocs/UserGuide.md\n","fileTypesAndContributionMap":{}},{"hash":"a7f158ccda50dd298ce917f5b84280be09f5898c","isMergeCommit":true,"messageTitle":"Merge pull request #31 from ChocoRagdoll/branch-DocumentSelectDelete","messageBody":"Document select, deselect and delete participant","fileTypesAndContributionMap":{}}]},{"date":"2024-03-20","commitResults":[{"hash":"c97839bcf9ac0a0cc4383beb72839967ca0abd10","isMergeCommit":false,"messageTitle":"Implement Delete Participant Command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":166,"deletions":0}}},{"hash":"fb7902e5a2ff2d1bbdec252f7837b87ffcacfd7b","isMergeCommit":false,"messageTitle":"Fix bug and fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":25,"deletions":8},"test-code":{"insertions":5,"deletions":0}}},{"hash":"2a8e7bf61afb87c76235c46823b9ed22e6944b9c","isMergeCommit":false,"messageTitle":"Add tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0},"test-code":{"insertions":210,"deletions":0}}},{"hash":"78e522b1c7323d5d9bee53e85dce48afa8c8674c","isMergeCommit":false,"messageTitle":"Add JavaDoc","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":0}}},{"hash":"5ea294e3f7b1037a610f7316154c6d6573e729dd","isMergeCommit":false,"messageTitle":"Make minor changes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":7}}},{"hash":"02d5524aa676d715de330dc7cbdd9a07d6808ff2","isMergeCommit":false,"messageTitle":"Delete unused declaration","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":2}}},{"hash":"e6951987f7f4c13b5599fe4e22fe4821c4a48ff3","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-ImplementDeleteParticipant","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a2936206a333c6d7dc68361ac25cdfe21e6930f0","isMergeCommit":true,"messageTitle":"Merge pull request #42 from ChocoRagdoll/branch-ImplementDeleteParticipant","messageBody":"Implement Delete Participant Command","fileTypesAndContributionMap":{}}]},{"date":"2024-03-22","commitResults":[{"hash":"cc4e77aff17f827ceeceb242babe42f378967963","isMergeCommit":false,"messageTitle":"Update README","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":22,"deletions":0}}},{"hash":"40c0d9cd0d0e8bf533ae89b1e594dc56981e15f0","isMergeCommit":false,"messageTitle":"Fix formatting errors","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}},{"hash":"8a2fad3222183a00d7578a1c01636fe266e6264b","isMergeCommit":false,"messageTitle":"Move the README to main folder","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":14,"deletions":29}}},{"hash":"dcbc4651f3de7feff5c253bf6d15f662362466e6","isMergeCommit":false,"messageTitle":"Update flags","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":9,"deletions":9}}},{"hash":"7f7ea7386f2e43d2c175d4d8e10d19a2e81be5ca","isMergeCommit":false,"messageTitle":"Update User Guide command summary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":4}}},{"hash":"d68465ba6c54f1ed86e4b68b930044c13d3229a6","isMergeCommit":false,"messageTitle":"Fix formatting error","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"32b52a795f2a2606e512c22874e3d5bff1c188e8","isMergeCommit":false,"messageTitle":"Update UML sequence diagram for delete participant command","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":91,"deletions":0}}}]}],"taeewonnn":[{"date":"2024-02-29","commitResults":[{"hash":"159f028e4b4133b90bd9129ac30d346895c02ce5","isMergeCommit":false,"messageTitle":"Update README","messageBody":"Let\u0027s update README file and upload mock UI image\n","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":3}}}]},{"date":"2024-03-01","commitResults":[{"hash":"8ac632def05a6dabddebfc9f65e0f457b48cfb4b","isMergeCommit":false,"messageTitle":"Update README","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-02","commitResults":[{"hash":"35d21a156592acc62436aa9a7d097d6f0a78b4a9","isMergeCommit":false,"messageTitle":"Fix GFMD","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}}]},{"date":"2024-03-05","commitResults":[{"hash":"23a1cf86fd275dab1532cc7676ea50f30ff07468","isMergeCommit":false,"messageTitle":"Document Delete and Add Command in UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":19,"deletions":114}}},{"hash":"4f605e5315aff61dcf6ffc555e7f94d4bc5b0262","isMergeCommit":false,"messageTitle":"Modify DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":16,"deletions":12}}}]},{"date":"2024-03-07","commitResults":[{"hash":"2f796666b1104c7b60071a3e0637dbdffa97618a","isMergeCommit":false,"messageTitle":"Update DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":179,"deletions":22}}}]},{"date":"2024-03-10","commitResults":[{"hash":"996df9f81c651cda57276b70766b548d692f85ea","isMergeCommit":false,"messageTitle":"Modify delete event and add part command","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":7}}}]},{"date":"2024-03-11","commitResults":[{"hash":"f0c2a718fc2f7b803e7014c1d4c14b431f0a5ef0","isMergeCommit":true,"messageTitle":"Merge pull request #16 from Apzure/branch-user-guide","messageBody":"Document Create Event Command in UG","fileTypesAndContributionMap":{}},{"hash":"64a6ccc63d139e4da0e919f0dc4ead48cb58257a","isMergeCommit":false,"messageTitle":"Modify UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"3f7944d6a6884706732b8247dd7cf53d1d5b7e86","isMergeCommit":true,"messageTitle":"Fix merge conflict one","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b07c1e0a352e7c630e1eb43d69782044ac537d31","isMergeCommit":false,"messageTitle":"Modify examples","messageBody":"Examples given seem very technical\n\nLet\u0027s fix that\n","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"81dc21fa1073f1edbebe98c3a1e98353a8d8872f","isMergeCommit":false,"messageTitle":"Update parameters","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":6}}},{"hash":"000acd70cb1942b6fcd47ae0ae16fb03514086f9","isMergeCommit":true,"messageTitle":"Merge pull request #17 from taeewonnn/document-delete,createCommand","messageBody":"Document Delete and Add Command in UG","fileTypesAndContributionMap":{}}]},{"date":"2024-03-13","commitResults":[{"hash":"7ed73b7df43ce373274f7855eda1738eee413ba2","isMergeCommit":true,"messageTitle":"Merge pull request #20 from myang2020/branch-updateUG","messageBody":"Document Add Participant to Selected Event Command in UG","fileTypesAndContributionMap":{}},{"hash":"d3c7719020b5d85f70b78116a6b4472cccd5a43c","isMergeCommit":false,"messageTitle":"Update UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":139}}}]},{"date":"2024-03-18","commitResults":[{"hash":"0902873a00d3659751b722dd502e08a704adc321","isMergeCommit":false,"messageTitle":"Add delete event command and parser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":104,"deletions":0}}}]},{"date":"2024-03-19","commitResults":[{"hash":"7a901a193820928d10293ed16b08a0c01af342d6","isMergeCommit":false,"messageTitle":"Add test","messageBody":"Let\u0027s add testing to multiple delete event command and fix check style\nerrors\n","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":2},"test-code":{"insertions":110,"deletions":0}}},{"hash":"793b0c0a3a372a5743b5b47dc18791e59a4a22ac","isMergeCommit":false,"messageTitle":"Update delete command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":2}}},{"hash":"0ca0bebb67c9842bc0fefe4b1d2fb6ff95dfa728","isMergeCommit":false,"messageTitle":"Modify delete event command","messageBody":"Let\u0027s change event command to delete other non selected events\nwhen a specific event is selected\n","fileTypesAndContributionMap":{"functional-code":{"insertions":21,"deletions":4}}},{"hash":"fc76fb0f7589c736aa32427c858ba5ac1ca0d6ce","isMergeCommit":false,"messageTitle":"Fix errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":7},"test-code":{"insertions":6,"deletions":0}}}]},{"date":"2024-03-20","commitResults":[{"hash":"20b6180aab5561c43487c6a203596a987bfe7a2c","isMergeCommit":false,"messageTitle":"Add tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":29,"deletions":1}}},{"hash":"21dc312b3b22f7797fa9fe465d12ee80fbf456bd","isMergeCommit":false,"messageTitle":"Update names","messageBody":"Let\u0027s fix the names and improve code quality\n","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4},"test-code":{"insertions":4,"deletions":4}}},{"hash":"1f4c01145ad678b21e7e87a02df9147dc9ba04af","isMergeCommit":true,"messageTitle":"Merge pull request #41 from taeewonnn/command-DeleteEvent","messageBody":"Command delete event","fileTypesAndContributionMap":{}},{"hash":"eaace81be488104500fb3fee150762b0a7926bdc","isMergeCommit":false,"messageTitle":"Modify event prefix","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-21","commitResults":[{"hash":"67e6595184516a9dc1b6173c890fe2d8860782e1","isMergeCommit":false,"messageTitle":"Modify DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":196,"deletions":34}}},{"hash":"71da5eab595540ddc9cb7ed098337a59cb1643c7","isMergeCommit":true,"messageTitle":"Merge pull request #46 from taeewonnn/update-DG","messageBody":"Modify DG","tags":["v1.2"],"fileTypesAndContributionMap":{}}]}],"myang2020":[{"date":"2024-02-29","commitResults":[{"hash":"17f988724f313f112ea30f88ed1b6ed07c9d2368","isMergeCommit":false,"messageTitle":"Add images to AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":15,"deletions":15}}}]},{"date":"2024-03-03","commitResults":[{"hash":"118e8c6cee2e6e2fe86583a23972c614e14a80a0","isMergeCommit":false,"messageTitle":"Edit AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":9}}}]},{"date":"2024-03-06","commitResults":[{"hash":"d9196a2529d661340ec72c68afba364d5d82dcbb","isMergeCommit":false,"messageTitle":"Fixed roles and responsibilities","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":14,"deletions":17}}},{"hash":"110878606fe34bbb2065a897506e34ec8d323258","isMergeCommit":false,"messageTitle":"Fix AboutUs layout","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"250a091f5e9cb32a66b0378bd04f3f0fa48f8441","isMergeCommit":false,"messageTitle":"no message","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":5}}}]},{"date":"2024-03-07","commitResults":[{"hash":"1bd7789455ac95ece0bd58fc95c361c390b5961e","isMergeCommit":false,"messageTitle":"Add \u0027add\u0027 and \u0027new_event\u0027 commands","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":99}}},{"hash":"4b12d51b2f4621da610f55c8904138744f53b30f","isMergeCommit":false,"messageTitle":"Add \"add to event\" command","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":15}}},{"hash":"7418f75d7eec29eb373bf6dddbeea4eddc1c6597","isMergeCommit":false,"messageTitle":"Fix bug","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"dcb82341ecef35e9f6bd90799f0b446090ad4fd4","isMergeCommit":false,"messageTitle":"no message","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"e21762174f160dc6812734e612b5e76babc41267","isMergeCommit":false,"messageTitle":"Fix typo","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":2}}},{"hash":"3fe644039831685e44d98c2a7d0b88e4189a7e09","isMergeCommit":false,"messageTitle":"Fix typo","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":11}}},{"hash":"5409793dea670f1e9340414896573a08b3df95ed","isMergeCommit":false,"messageTitle":"Beautify AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":31,"deletions":19}}},{"hash":"f40bf1dde86de78da50030293f24a2dc49994772","isMergeCommit":false,"messageTitle":"Finalize AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":29,"deletions":33}}},{"hash":"bb9a36868f78633cb42c2c37c208722f27acca40","isMergeCommit":false,"messageTitle":"Fix formatting","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":1}}},{"hash":"b2eb78d5ac9c2f731ea2368390351ab506d51076","isMergeCommit":false,"messageTitle":"Fix formatting","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}},{"hash":"a51c1c5b4d713a64b1215c1c6f555f39bff5eed1","isMergeCommit":false,"messageTitle":"Fix formatting","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"2e38c3dc6ac1551ffd5d3664e1aef35246f6bf94","isMergeCommit":false,"messageTitle":"Fix EOF error","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-10","commitResults":[{"hash":"fc65243ef9ed6f4c4b94e11a23dd34777d9c8bf6","isMergeCommit":false,"messageTitle":"Update commands","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":19,"deletions":5}}},{"hash":"d12580f75895a2b5b959e22495c2ad11603b0c2a","isMergeCommit":false,"messageTitle":"Update command summary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}}]},{"date":"2024-03-12","commitResults":[{"hash":"cafc58809ca63a0e3fb0d753ada7b847de04406e","isMergeCommit":false,"messageTitle":"Fix parameter format","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":27}}},{"hash":"80da75a326302abdeab0fb9f1789e46b1123d397","isMergeCommit":true,"messageTitle":"Fix order and command format","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"9c3dcb071cde984f9b9a8b5fa82aba8b9c49bd9d","isMergeCommit":false,"messageTitle":"Fix order and command format","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-16","commitResults":[{"hash":"0378ca23683731d38af54ce2782f02e721b0ad4a","isMergeCommit":false,"messageTitle":"Add SelectCommandTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":67,"deletions":0}}},{"hash":"20b141f1c0b370d9046e5296ec1ea1886b6a4eae","isMergeCommit":false,"messageTitle":"Test SelectCommand moethods in LogicManagerTest","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":5,"deletions":0}}},{"hash":"15346627985a98cd4d26b3e932659f4b283dc37a","isMergeCommit":false,"messageTitle":"Reformat code to align with coding standard","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":0},"test-code":{"insertions":45,"deletions":21}}},{"hash":"485ccbad6c84c933b80cf8f4fb863f16f8c5f810","isMergeCommit":false,"messageTitle":"Add tests for AddressBookParser","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":20,"deletions":1}}},{"hash":"46f45f2b6f6fce323f65f83d00c51b1e23401e9e","isMergeCommit":false,"messageTitle":"Implement deselect event","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":64,"deletions":0},"test-code":{"insertions":37,"deletions":0}}},{"hash":"d01bfd5c140370d31f3f618f5892e9b019988731","isMergeCommit":false,"messageTitle":"Add testing","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":6},"test-code":{"insertions":62,"deletions":1}}},{"hash":"e933a10c9bedbcd6b39346bad7a2ff8d2ff10ce2","isMergeCommit":false,"messageTitle":"Remove unnecessary tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":7},"test-code":{"insertions":0,"deletions":59}}},{"hash":"ed0cdfdae8ef02a48dceb24030e30eed082ad16b","isMergeCommit":false,"messageTitle":"Add test","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":1},"test-code":{"insertions":79,"deletions":0}}},{"hash":"cfabbed0e11a02d635a3a6ec4b0a39ea7f9eddef","isMergeCommit":false,"messageTitle":"Fix formatting","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":1}}},{"hash":"e1de45ba217e2cbecb36eb4d6fc88443992b95ed","isMergeCommit":false,"messageTitle":"Fix formatting","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}},{"hash":"c34adfc9fa2d5b8a1407aba4f4abbfa7618f88e1","isMergeCommit":false,"messageTitle":"Fix newline format","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":78,"deletions":78}}},{"hash":"4a7fb61ae55d88776145f6a08ff937110c54b34f","isMergeCommit":false,"messageTitle":"Setup toolkit in tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":7,"deletions":18}}},{"hash":"c6bac293a89710c07fbf736a3246b13722654bee","isMergeCommit":false,"messageTitle":"Remove unused variables","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":7}}},{"hash":"8c04ef23e43d7dadd3bf4b184afdd83fe7316689","isMergeCommit":false,"messageTitle":"Fix tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":33,"deletions":24}}},{"hash":"8236295ad042f5f315b7ea9e9ed6afc5f91904ad","isMergeCommit":false,"messageTitle":"Remove test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":69}}},{"hash":"00c99a9fad2a0c998bbfc1604719468bbc878f9d","isMergeCommit":false,"messageTitle":"Remove UI","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":92}}},{"hash":"68e29e99e84ecd1b1bf10f4acb849f0b8c02370e","isMergeCommit":false,"messageTitle":"Improve code quality","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":2},"test-code":{"insertions":4,"deletions":4}}},{"hash":"94a55e3db29040279807f819f3aaf35b73cb1bfc","isMergeCommit":false,"messageTitle":"Change access modifiers","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":4,"deletions":6}}},{"hash":"2d125487a4273229c884d54c99b84583ae3ce9cd","isMergeCommit":false,"messageTitle":"Fix style","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":1}}}]},{"date":"2024-03-17","commitResults":[{"hash":"afbe3d920c23f604aebf606a3f3224f53c2cee6d","isMergeCommit":false,"messageTitle":"Implement invite command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":174,"deletions":3},"test-code":{"insertions":397,"deletions":331}}}]}]},"authorFileTypeContributionMap":{"Apzure":{"docs":6,"functional-code":1013,"test-code":697},"nusliuyifan":{"docs":0,"functional-code":0,"test-code":0},"ChocoRagdoll":{"docs":168,"functional-code":184,"test-code":216},"taeewonnn":{"docs":219,"functional-code":129,"test-code":143},"myang2020":{"docs":52,"functional-code":244,"test-code":531}},"authorContributionVariance":{"Apzure":45963.543,"nusliuyifan":0.0,"ChocoRagdoll":7370.9224,"taeewonnn":4856.6567,"myang2020":55167.004},"authorDisplayNameMap":{"Apzure":"CS2103T-T10-3 NIGE..N YI","nusliuyifan":"CS2103T-T10-3 LIU ..IFAN","ChocoRagdoll":"CS2103T-T10-3 SONG..CHAO","taeewonnn":"CS2103T-T10-3 HAN .. WON","myang2020":"CS2103T-T10-3 YANG..X CK"}} diff --git a/AY2324S2-CS2103T-T14-2_tp_master/authorship.json b/AY2324S2-CS2103T-T14-2_tp_master/authorship.json index 19bdeb97..bb87009e 100644 --- a/AY2324S2-CS2103T-T14-2_tp_master/authorship.json +++ b/AY2324S2-CS2103T-T14-2_tp_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"Vision-2000"},"content":"[![CI Status](https://github.com/AY2324S2-CS2103T-T14-2/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2324S2-CS2103T-T14-2/tp/actions)","lastModifiedDate":"2024-03-07"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"Vision-2000"},"content":"**MediTrack is a desktop application for managing your patient details.** While it has a GUI, most of the user interactions happen using a CLI (Command Line Interface).","lastModifiedDate":"2024-03-07"},{"lineNumber":6,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":7,"author":{"gitId":"Vision-2000"},"content":"This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-03-07"}],"authorContributionMap":{"-":3,"Vision-2000":4}},{"path":"build.gradle","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2016-08-29"},{"lineNumber":2,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2017-12-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2017-12-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2022-06-17"},{"lineNumber":5,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2016-12-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":" id \u0027jacoco\u0027","lastModifiedDate":"2020-08-07"},{"lineNumber":7,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-29"},{"lineNumber":9,"author":{"gitId":"-"},"content":"mainClassName \u003d \u0027seedu.address.Main\u0027","lastModifiedDate":"2019-02-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"sourceCompatibility \u003d JavaVersion.VERSION_11","lastModifiedDate":"2019-02-20"},{"lineNumber":12,"author":{"gitId":"-"},"content":"targetCompatibility \u003d JavaVersion.VERSION_11","lastModifiedDate":"2019-02-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" maven { url \u0027https://oss.sonatype.org/content/repositories/snapshots/\u0027 }","lastModifiedDate":"2018-04-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"checkstyle {","lastModifiedDate":"2016-10-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2022-04-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-10-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2018-03-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2018-03-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":" finalizedBy jacocoTestReport","lastModifiedDate":"2020-08-07"},{"lineNumber":26,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-08-07"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-08-07"},{"lineNumber":28,"author":{"gitId":"-"},"content":"task coverage(type: JacocoReport) {","lastModifiedDate":"2020-08-07"},{"lineNumber":29,"author":{"gitId":"-"},"content":" sourceDirectories.from files(sourceSets.main.allSource.srcDirs)","lastModifiedDate":"2020-08-07"},{"lineNumber":30,"author":{"gitId":"-"},"content":" classDirectories.from files(sourceSets.main.output)","lastModifiedDate":"2020-08-07"},{"lineNumber":31,"author":{"gitId":"-"},"content":" executionData.from files(jacocoTestReport.executionData)","lastModifiedDate":"2020-08-07"},{"lineNumber":32,"author":{"gitId":"-"},"content":" afterEvaluate {","lastModifiedDate":"2020-08-07"},{"lineNumber":33,"author":{"gitId":"-"},"content":" classDirectories.from files(classDirectories.files.collect {","lastModifiedDate":"2020-08-07"},{"lineNumber":34,"author":{"gitId":"-"},"content":" fileTree(dir: it, exclude: [\u0027**/*.jar\u0027])","lastModifiedDate":"2020-08-07"},{"lineNumber":35,"author":{"gitId":"-"},"content":" })","lastModifiedDate":"2020-08-07"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07"},{"lineNumber":37,"author":{"gitId":"-"},"content":" reports {","lastModifiedDate":"2020-08-07"},{"lineNumber":38,"author":{"gitId":"-"},"content":" html.required \u003d true","lastModifiedDate":"2022-06-17"},{"lineNumber":39,"author":{"gitId":"-"},"content":" xml.required \u003d true","lastModifiedDate":"2022-06-17"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07"},{"lineNumber":41,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-03-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" String jUnitVersion \u003d \u00275.4.0\u0027","lastModifiedDate":"2019-02-10"},{"lineNumber":45,"author":{"gitId":"-"},"content":" String javaFxVersion \u003d \u002717.0.7\u0027","lastModifiedDate":"2023-07-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":48,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":" implementation group: \u0027com.fasterxml.jackson.core\u0027, name: \u0027jackson-databind\u0027, version: \u00272.7.0\u0027","lastModifiedDate":"2018-03-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":" implementation group: \u0027com.fasterxml.jackson.datatype\u0027, name: \u0027jackson-datatype-jsr310\u0027, version: \u00272.7.4\u0027","lastModifiedDate":"2018-03-29"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-29"},{"lineNumber":68,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2016-08-29"},{"lineNumber":69,"author":{"gitId":"jskimdev"},"content":" archiveFileName \u003d \u0027MediTrack.jar\u0027","lastModifiedDate":"2024-03-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":"defaultTasks \u0027clean\u0027, \u0027test\u0027","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"jskimdev":1,"-":71}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"About Us\"","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"# About Us","lastModifiedDate":"2023-09-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"We are a team based in the [School of Computing, National University of Singapore](http://www.comp.nus.edu.sg).","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"You can reach us at the email `seer[at]comp.nus.edu.sg`","lastModifiedDate":"2020-06-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"jskimdev"},"content":"### Sivakumar Aishvarya","lastModifiedDate":"2024-03-06"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"S-Aishvarya"},"content":"\u003cimg src\u003d\"images/s-aishvarya.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-07"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"S-Aishvarya"},"content":"[[github](https://github.com/S-Aishvarya)]","lastModifiedDate":"2024-03-07"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":22,"author":{"gitId":"S-Aishvarya"},"content":"* Role: Developer","lastModifiedDate":"2024-03-07"},{"lineNumber":23,"author":{"gitId":"jeong-jaeho"},"content":"* Responsibilities: Scheduling and tracking + Documentation + Commons","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"jskimdev"},"content":"### Eugene Hirose","lastModifiedDate":"2024-03-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"Vision-2000"},"content":"\u003cimg src\u003d\"images/vision-2000.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-07"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"Vision-2000"},"content":"[[github](http://github.com/Vision-2000)]","lastModifiedDate":"2024-03-07"},{"lineNumber":30,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2024-03-07"},{"lineNumber":33,"author":{"gitId":"jeong-jaeho"},"content":"* Responsibilities: Testing + UI + Logic","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"jskimdev"},"content":"### Jeong Jaeho","lastModifiedDate":"2024-03-06"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"jeong-jaeho"},"content":"\u003cimg src\u003d\"images/jeong-jaeho.png\" width\u003d\"200px\"\u003e ","lastModifiedDate":"2024-03-07"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"jeong-jaeho"},"content":"[[github](http://github.com/jeong-jaeho)]","lastModifiedDate":"2024-03-07"},{"lineNumber":40,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"jeong-jaeho"},"content":"* Responsibilities: Team lead + Integration + Storage","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"jskimdev"},"content":"### Kim Junseo","lastModifiedDate":"2024-03-06"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"jskimdev"},"content":"\u003cimg src\u003d\"images/jskimdev.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"jskimdev"},"content":"[[github](https://github.com/jskimdev)]","lastModifiedDate":"2024-03-06"},{"lineNumber":50,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"jeong-jaeho"},"content":"* Responsibilities: Code Quality + Model + JavaFX visuals","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"jskimdev":6,"S-Aishvarya":3,"-":36,"jeong-jaeho":6,"Vision-2000":2}},{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"Developer Guide\"","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":7,"author":{"gitId":"Vision-2000"},"content":"# MediTrack Developer Guide","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":14,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":16,"author":{"gitId":"-"},"content":"_{ list here sources of all reused/adapted ideas, code, documentation, and third-party libraries -- include links to the original source as well }_","lastModifiedDate":"2023-09-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureDiagram.puml\" width\u003d\"280\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":"The ***Architecture Diagram*** given above explains the high-level design of the App.","lastModifiedDate":"2021-07-31"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":"Given below is a quick overview of main components and how they interact with each other.","lastModifiedDate":"2021-07-31"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"**`Main`** (consisting of classes [`Main`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/Main.java) and [`MainApp`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/MainApp.java)) is in charge of the app launch and shut down.","lastModifiedDate":"2023-09-03"},{"lineNumber":39,"author":{"gitId":"-"},"content":"* At app launch, it initializes the other components in the correct sequence, and connects them up with each other.","lastModifiedDate":"2023-09-03"},{"lineNumber":40,"author":{"gitId":"-"},"content":"* At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2023-09-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"* [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"* [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"* [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"The *Sequence Diagram* below shows how the components interact with each other for the scenario where the user issues the command `delete 1`.","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureSequenceDiagram.puml\" width\u003d\"574\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":59,"author":{"gitId":"-"},"content":"* defines its *API* in an `interface` with the same name as the Component.","lastModifiedDate":"2021-07-31"},{"lineNumber":60,"author":{"gitId":"-"},"content":"* implements its functionality using a concrete `{Component Name}Manager` class (which follows the corresponding API `interface` mentioned in the previous point.","lastModifiedDate":"2021-07-31"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":62,"author":{"gitId":"-"},"content":"For example, the `Logic` component defines its API in the `Logic.java` interface and implements its functionality using the `LogicManager.java` class which follows the `Logic` interface. Other components interact with a given component through its interface rather than the concrete class (reason: to prevent outside component\u0027s being coupled to the implementation of a component), as illustrated in the (partial) class diagram below.","lastModifiedDate":"2021-07-31"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":64,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ComponentManagers.puml\" width\u003d\"300\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":66,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"The **API** of this component is specified in [`Ui.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/Ui.java)","lastModifiedDate":"2021-07-31"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UiClassDiagram.puml\" alt\u003d\"Structure of the UI Component\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"The UI consists of a `MainWindow` that is made up of parts e.g.`CommandBox`, `ResultDisplay`, `PersonListPanel`, `StatusBarFooter` etc. All these, including the `MainWindow`, inherit from the abstract `UiPart` class which captures the commonalities between classes that represent parts of the visible GUI.","lastModifiedDate":"2021-07-31"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"The `UI` component uses the JavaFx UI framework. The layout of these UI parts are defined in matching `.fxml` files that are in the `src/main/resources/view` folder. For example, the layout of the [`MainWindow`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/MainWindow.java) is specified in [`MainWindow.fxml`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/resources/view/MainWindow.fxml)","lastModifiedDate":"2021-07-31"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"* executes user commands using the `Logic` component.","lastModifiedDate":"2021-07-31"},{"lineNumber":81,"author":{"gitId":"-"},"content":"* listens for changes to `Model` data so that the UI can be updated with the modified data.","lastModifiedDate":"2021-07-31"},{"lineNumber":82,"author":{"gitId":"-"},"content":"* keeps a reference to the `Logic` component, because the `UI` relies on the `Logic` to execute commands.","lastModifiedDate":"2021-07-31"},{"lineNumber":83,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component, as it displays `Person` object residing in the `Model`.","lastModifiedDate":"2021-07-31"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"**API** : [`Logic.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/logic/Logic.java)","lastModifiedDate":"2021-07-31"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/LogicClassDiagram.puml\" width\u003d\"550\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"The sequence diagram below illustrates the interactions within the `Logic` component, taking `execute(\"delete 1\")` API call as an example.","lastModifiedDate":"2023-09-03"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/DeleteSequenceDiagram.puml\" alt\u003d\"Interactions Inside the Logic Component for the `delete 1` Command\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":97,"author":{"gitId":"Vision-2000"},"content":"\u003c type\u003d\"info\" seamless\u003e","lastModifiedDate":"2024-03-07"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"**Note:** The lifeline for `DeleteCommandParser` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline continues till the end of diagram.","lastModifiedDate":"2023-09-12"},{"lineNumber":100,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":104,"author":{"gitId":"-"},"content":"1. When `Logic` is called upon to execute a command, it is passed to an `AddressBookParser` object which in turn creates a parser that matches the command (e.g., `DeleteCommandParser`) and uses it to parse the command.","lastModifiedDate":"2023-09-03"},{"lineNumber":105,"author":{"gitId":"-"},"content":"1. This results in a `Command` object (more precisely, an object of one of its subclasses e.g., `DeleteCommand`) which is executed by the `LogicManager`.","lastModifiedDate":"2023-09-03"},{"lineNumber":106,"author":{"gitId":"jskimdev"},"content":"1. The command can communicate with the `Model` when it is executed (e.g. to delete a patient).\u003cbr\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":107,"author":{"gitId":"-"},"content":" Note that although this is shown as a single step in the diagram above (for simplicity), in the code it can take several interactions (between the command object and the `Model`) to achieve.","lastModifiedDate":"2024-02-09"},{"lineNumber":108,"author":{"gitId":"-"},"content":"1. The result of the command execution is encapsulated as a `CommandResult` object which is returned back from `Logic`.","lastModifiedDate":"2023-09-03"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":110,"author":{"gitId":"-"},"content":"Here are the other classes in `Logic` (omitted from the class diagram above) that are used for parsing a user command:","lastModifiedDate":"2021-07-31"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":112,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ParserClasses.puml\" width\u003d\"600\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31"},{"lineNumber":115,"author":{"gitId":"-"},"content":"* When called upon to parse a user command, the `AddressBookParser` class creates an `XYZCommandParser` (`XYZ` is a placeholder for the specific command name e.g., `AddCommandParser`) which uses the other classes shown above to parse the user command and create a `XYZCommand` object (e.g., `AddCommand`) which the `AddressBookParser` returns back as a `Command` object.","lastModifiedDate":"2021-07-31"},{"lineNumber":116,"author":{"gitId":"-"},"content":"* All `XYZCommandParser` classes (e.g., `AddCommandParser`, `DeleteCommandParser`, ...) inherit from the `Parser` interface so that they can be treated similarly where possible e.g, during testing.","lastModifiedDate":"2021-07-31"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31"},{"lineNumber":119,"author":{"gitId":"-"},"content":"**API** : [`Model.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/model/Model.java)","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":"* stores the address book data i.e., all `Person` objects (which are contained in a `UniquePersonList` object).","lastModifiedDate":"2021-07-31"},{"lineNumber":127,"author":{"gitId":"-"},"content":"* stores the currently \u0027selected\u0027 `Person` objects (e.g., results of a search query) as a separate _filtered_ list which is exposed to outsiders as an unmodifiable `ObservableList\u003cPerson\u003e` that can be \u0027observed\u0027 e.g. the UI can be bound to this list so that the UI automatically updates when the data in the list change.","lastModifiedDate":"2021-07-31"},{"lineNumber":128,"author":{"gitId":"-"},"content":"* stores a `UserPref` object that represents the user’s preferences. This is exposed to the outside as a `ReadOnlyUserPref` objects.","lastModifiedDate":"2021-07-31"},{"lineNumber":129,"author":{"gitId":"-"},"content":"* does not depend on any of the other three components (as the `Model` represents data entities of the domain, they should make sense on their own without depending on other components)","lastModifiedDate":"2021-07-31"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":131,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":133,"author":{"gitId":"-"},"content":"**Note:** An alternative (arguably, a more OOP) model is given below. It has a `Tag` list in the `AddressBook`, which `Person` references. This allows `AddressBook` to only require one `Tag` object per unique tag, instead of each `Person` needing their own `Tag` objects.\u003cbr\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":135,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/BetterModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":"**API** : [`Storage.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/storage/Storage.java)","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/StorageClassDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":146,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":"* can save both address book data and user preference data in JSON format, and read them back into corresponding objects.","lastModifiedDate":"2023-09-03"},{"lineNumber":148,"author":{"gitId":"-"},"content":"* inherits from both `AddressBookStorage` and `UserPrefStorage`, which means it can be treated as either one (if only the functionality of only one is needed).","lastModifiedDate":"2021-07-31"},{"lineNumber":149,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component (because the `Storage` component\u0027s job is to save/retrieve objects that belong to the `Model`)","lastModifiedDate":"2021-07-21"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.addressbook.commons` package.","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":"The proposed undo/redo mechanism is facilitated by `VersionedAddressBook`. It extends `AddressBook` with an undo/redo history, stored internally as an `addressBookStateList` and `currentStatePointer`. Additionally, it implements the following operations:","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":"These operations are exposed in the `Model` interface as `Model#commitAddressBook()`, `Model#undoAddressBook()` and `Model#redoAddressBook()` respectively.","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":"Given below is an example usage scenario and how the undo/redo mechanism behaves at each step.","lastModifiedDate":"2020-05-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":"Step 1. The user launches the application for the first time. The `VersionedAddressBook` will be initialized with the initial address book state, and the `currentStatePointer` pointing to that single address book state.","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState0.puml\" alt\u003d\"UndoRedoState0\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"jskimdev"},"content":"Step 2. The user executes `delete 5` command to delete the 5th patient in the address book. The `delete` command calls `Model#commitAddressBook()`, causing the modified state of the address book after the `delete 5` command executes to be saved in the `addressBookStateList`, and the `currentStatePointer` is shifted to the newly inserted address book state.","lastModifiedDate":"2024-03-19"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState1.puml\" alt\u003d\"UndoRedoState1\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"jskimdev"},"content":"Step 3. The user executes `add n/David …​` to add a new patient. The `add` command also calls `Model#commitAddressBook()`, causing another modified address book state to be saved into the `addressBookStateList`.","lastModifiedDate":"2024-03-19"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState2.puml\" alt\u003d\"UndoRedoState2\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":"**Note:** If a command fails its execution, it will not call `Model#commitAddressBook()`, so the address book state will not be saved into the `addressBookStateList`.","lastModifiedDate":"2023-09-12"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":191,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"author":{"gitId":"jskimdev"},"content":"Step 4. The user now decides that adding the patient was a mistake, and decides to undo that action by executing the `undo` command. The `undo` command will call `Model#undoAddressBook()`, which will shift the `currentStatePointer` once to the left, pointing it to the previous address book state, and restores the address book to that state.","lastModifiedDate":"2024-03-19"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState3.puml\" alt\u003d\"UndoRedoState3\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":198,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"author":{"gitId":"-"},"content":"**Note:** If the `currentStatePointer` is at index 0, pointing to the initial AddressBook state, then there are no previous AddressBook states to restore. The `undo` command uses `Model#canUndoAddressBook()` to check if this is the case. If so, it will return an error to the user rather","lastModifiedDate":"2023-09-12"},{"lineNumber":201,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Logic.puml\" alt\u003d\"UndoSequenceDiagram-Logic\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":209,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":"**Note:** The lifeline for `UndoCommand` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.","lastModifiedDate":"2023-09-12"},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":213,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":217,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Model.puml\" alt\u003d\"UndoSequenceDiagram-Model\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":219,"author":{"gitId":"-"},"content":"The `redo` command does the opposite — it calls `Model#redoAddressBook()`, which shifts the `currentStatePointer` once to the right, pointing to the previously undone state, and restores the address book to that state.","lastModifiedDate":"2020-05-23"},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":221,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":223,"author":{"gitId":"-"},"content":"**Note:** If the `currentStatePointer` is at index `addressBookStateList.size() - 1`, pointing to the latest address book state, then there are no undone AddressBook states to restore. The `redo` command uses `Model#canRedoAddressBook()` to check if this is the case. If so, it will return an error to the user rather than attempting to perform the redo.","lastModifiedDate":"2023-09-12"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"author":{"gitId":"-"},"content":"Step 5. The user then decides to execute the command `list`. Commands that do not modify the address book, such as `list`, will usually not call `Model#commitAddressBook()`, `Model#undoAddressBook()` or `Model#redoAddressBook()`. Thus, the `addressBookStateList` remains unchanged.","lastModifiedDate":"2020-05-23"},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState4.puml\" alt\u003d\"UndoRedoState4\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"author":{"gitId":"-"},"content":"Step 6. The user executes `clear`, which calls `Model#commitAddressBook()`. Since the `currentStatePointer` is not pointing at the end of the `addressBookStateList`, all address book states after the `currentStatePointer` will be purged. Reason: It no longer makes sense to redo the `add n/David …​` command. This is the behavior that most modern desktop applications follow.","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState5.puml\" alt\u003d\"UndoRedoState5\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/CommitActivityDiagram.puml\" width\u003d\"250\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31"},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31"},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":247,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23"},{"lineNumber":248,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23"},{"lineNumber":249,"author":{"gitId":"jskimdev"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the patient being deleted).","lastModifiedDate":"2024-03-19"},{"lineNumber":250,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":254,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23"},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":259,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07"},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":264,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":265,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":266,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":267,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":268,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":269,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":271,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":273,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23"},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":275,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23"},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":277,"author":{"gitId":"Vision-2000"},"content":"* has a need to manage a significant number of patient details","lastModifiedDate":"2024-03-07"},{"lineNumber":278,"author":{"gitId":"-"},"content":"* prefer desktop apps over other types","lastModifiedDate":"2020-05-23"},{"lineNumber":279,"author":{"gitId":"-"},"content":"* can type fast","lastModifiedDate":"2020-05-23"},{"lineNumber":280,"author":{"gitId":"-"},"content":"* prefers typing to mouse interactions","lastModifiedDate":"2020-05-26"},{"lineNumber":281,"author":{"gitId":"-"},"content":"* is reasonably comfortable using CLI apps","lastModifiedDate":"2020-05-23"},{"lineNumber":282,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":283,"author":{"gitId":"Vision-2000"},"content":"**Value proposition**: MediTrack can manage patient details faster than a typical mouse/GUI driven app.","lastModifiedDate":"2024-03-07"},{"lineNumber":284,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":286,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":287,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07"},{"lineNumber":288,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":289,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23"},{"lineNumber":290,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":291,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23"},{"lineNumber":292,"author":{"gitId":"Vision-2000"},"content":"|----------|--------------|----------------------------------|--------------------------------------------------------------------------|","lastModifiedDate":"2024-03-07"},{"lineNumber":293,"author":{"gitId":"Vision-2000"},"content":"| `* * *` | receptionist | see usage instructions | refer to instructions when I forget how to use the App |","lastModifiedDate":"2024-03-07"},{"lineNumber":294,"author":{"gitId":"Vision-2000"},"content":"| `* * *` | receptionist | see the list of patients | check the index of all patients |","lastModifiedDate":"2024-03-07"},{"lineNumber":295,"author":{"gitId":"Vision-2000"},"content":"| `* * *` | receptionist | add a new patient | |","lastModifiedDate":"2024-03-07"},{"lineNumber":296,"author":{"gitId":"Vision-2000"},"content":"| `* * *` | receptionist | delete a patient | remove entries that are outdated |","lastModifiedDate":"2024-03-07"},{"lineNumber":297,"author":{"gitId":"Vision-2000"},"content":"| `* * *` | receptionist | find a patient by name | locate details of a patient without having to go through the entire list |","lastModifiedDate":"2024-03-07"},{"lineNumber":298,"author":{"gitId":"Vision-2000"},"content":"| `* *` | receptionist | find a patient by contact number | look for a specific patient without worrying about duplicate names |","lastModifiedDate":"2024-03-07"},{"lineNumber":299,"author":{"gitId":"Vision-2000"},"content":"| `* *` | receptionist | delete all patients | easily reset the list to a blank state |","lastModifiedDate":"2024-03-07"},{"lineNumber":300,"author":{"gitId":"Vision-2000"},"content":"| `* *` | receptionist | exit with a command | close the application with keyboard inputs only |","lastModifiedDate":"2024-03-07"},{"lineNumber":301,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":302,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":303,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":304,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07"},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":306,"author":{"gitId":"Vision-2000"},"content":"(For all use cases below, the **System** is the `MediTrack` and the **Actor** is the `receptionist`, unless specified otherwise)","lastModifiedDate":"2024-03-07"},{"lineNumber":307,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":308,"author":{"gitId":"Vision-2000"},"content":"**Use case: UC01 - Add a patient**","lastModifiedDate":"2024-03-07"},{"lineNumber":309,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":310,"author":{"gitId":"-"},"content":"**MSS** ","lastModifiedDate":"2020-05-23"},{"lineNumber":311,"author":{"gitId":"Vision-2000"},"content":"1. Receptionist requests to add a patient’s data in the list.","lastModifiedDate":"2024-03-07"},{"lineNumber":312,"author":{"gitId":"Vision-2000"},"content":"2. MediTrack adds the patient’s data into the list.","lastModifiedDate":"2024-03-07"},{"lineNumber":313,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":314,"author":{"gitId":"Vision-2000"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":315,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":316,"author":{"gitId":"Vision-2000"},"content":"**Extensions**","lastModifiedDate":"2024-03-07"},{"lineNumber":317,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":318,"author":{"gitId":"Vision-2000"},"content":"* 1a. There is already a patient with the same phone number. ","lastModifiedDate":"2024-03-07"},{"lineNumber":319,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":320,"author":{"gitId":"Vision-2000"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":321,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":322,"author":{"gitId":"Vision-2000"},"content":"**Use case: UC02 - Delete a patient**","lastModifiedDate":"2024-03-07"},{"lineNumber":323,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":324,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2024-03-07"},{"lineNumber":325,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":326,"author":{"gitId":"Vision-2000"},"content":"1. Receptionist requests to list patients.","lastModifiedDate":"2024-03-07"},{"lineNumber":327,"author":{"gitId":"Vision-2000"},"content":"2. MediTrack shows a list of patients.","lastModifiedDate":"2024-03-07"},{"lineNumber":328,"author":{"gitId":"Vision-2000"},"content":"3. Receptionist requests to delete a specific patient in the list.","lastModifiedDate":"2024-03-07"},{"lineNumber":329,"author":{"gitId":"Vision-2000"},"content":"4. MediTrack deletes the patient.","lastModifiedDate":"2024-03-07"},{"lineNumber":330,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":331,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":332,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":333,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23"},{"lineNumber":334,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":335,"author":{"gitId":"-"},"content":"* 2a. The list is empty.","lastModifiedDate":"2020-05-23"},{"lineNumber":336,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":337,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":338,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":339,"author":{"gitId":"-"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2020-05-23"},{"lineNumber":340,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":341,"author":{"gitId":"Vision-2000"},"content":" * 3a1. MediTrack shows an error message.","lastModifiedDate":"2024-03-07"},{"lineNumber":342,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":343,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2020-05-23"},{"lineNumber":344,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":345,"author":{"gitId":"Vision-2000"},"content":"**Use case: UC03 - Find a patient**","lastModifiedDate":"2024-03-07"},{"lineNumber":346,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":347,"author":{"gitId":"Vision-2000"},"content":"**MSS**","lastModifiedDate":"2024-03-07"},{"lineNumber":348,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":349,"author":{"gitId":"Vision-2000"},"content":"1. Receptionist requests for a patient\u0027s information.","lastModifiedDate":"2024-03-07"},{"lineNumber":350,"author":{"gitId":"Vision-2000"},"content":"2. MediTrack returns the patient\u0027s information.","lastModifiedDate":"2024-03-07"},{"lineNumber":351,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":352,"author":{"gitId":"Vision-2000"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":353,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":354,"author":{"gitId":"Vision-2000"},"content":"**Extensions**","lastModifiedDate":"2024-03-07"},{"lineNumber":355,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":356,"author":{"gitId":"Vision-2000"},"content":"* 1a. The patient\u0027s information is not found in the list.","lastModifiedDate":"2024-03-07"},{"lineNumber":357,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":358,"author":{"gitId":"Vision-2000"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":359,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":360,"author":{"gitId":"Vision-2000"},"content":"**Use case: UC04 - Exit**","lastModifiedDate":"2024-03-07"},{"lineNumber":361,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":362,"author":{"gitId":"Vision-2000"},"content":"**MSS**","lastModifiedDate":"2024-03-07"},{"lineNumber":363,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":364,"author":{"gitId":"Vision-2000"},"content":"1. Receptionist requests to exit the program.","lastModifiedDate":"2024-03-07"},{"lineNumber":365,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":366,"author":{"gitId":"Vision-2000"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":367,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":368,"author":{"gitId":"Vision-2000"},"content":"**Use case: UC05 - Delete all patients**","lastModifiedDate":"2024-03-07"},{"lineNumber":369,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":370,"author":{"gitId":"Vision-2000"},"content":"**MSS**","lastModifiedDate":"2024-03-07"},{"lineNumber":371,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":372,"author":{"gitId":"Vision-2000"},"content":"1. Receptionist requests to delete all patients.","lastModifiedDate":"2024-03-07"},{"lineNumber":373,"author":{"gitId":"Vision-2000"},"content":"2. MediTrack asks for confirmation.","lastModifiedDate":"2024-03-07"},{"lineNumber":374,"author":{"gitId":"Vision-2000"},"content":"3. Receptionist confirms.","lastModifiedDate":"2024-03-07"},{"lineNumber":375,"author":{"gitId":"Vision-2000"},"content":"4. MediTrack deletes all patient information.","lastModifiedDate":"2024-03-07"},{"lineNumber":376,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":377,"author":{"gitId":"Vision-2000"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":378,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":379,"author":{"gitId":"Vision-2000"},"content":"**Extensions**","lastModifiedDate":"2024-03-07"},{"lineNumber":380,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":381,"author":{"gitId":"Vision-2000"},"content":"* 1a. There are no patient information.","lastModifiedDate":"2024-03-07"},{"lineNumber":382,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":383,"author":{"gitId":"Vision-2000"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":384,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":385,"author":{"gitId":"Vision-2000"},"content":"* 3a. Receptionist cancels.","lastModifiedDate":"2024-03-07"},{"lineNumber":386,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":387,"author":{"gitId":"Vision-2000"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":388,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":389,"author":{"gitId":"Vision-2000"},"content":"**Use case: UC06 - Start the system**","lastModifiedDate":"2024-03-07"},{"lineNumber":390,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":391,"author":{"gitId":"Vision-2000"},"content":"**MSS**","lastModifiedDate":"2024-03-07"},{"lineNumber":392,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":393,"author":{"gitId":"Vision-2000"},"content":"1. Receptionist starts the program","lastModifiedDate":"2024-03-07"},{"lineNumber":394,"author":{"gitId":"Vision-2000"},"content":"2. MediTrack shows a list of patients","lastModifiedDate":"2024-03-07"},{"lineNumber":395,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":396,"author":{"gitId":"Vision-2000"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":397,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":398,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":399,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":400,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23"},{"lineNumber":401,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":402,"author":{"gitId":"-"},"content":"1. Should work on any _mainstream OS_ as long as it has Java `11` or above installed.","lastModifiedDate":"2020-05-23"},{"lineNumber":403,"author":{"gitId":"Vision-2000"},"content":"2. Should be able to hold up to 100 patients without a noticeable lag in performance for typical usage.","lastModifiedDate":"2024-03-07"},{"lineNumber":404,"author":{"gitId":"-"},"content":"3. A user with above average typing speed for regular English text (i.e. not code, not system admin commands) should be able to accomplish most of the tasks faster using commands than using the mouse.","lastModifiedDate":"2020-05-23"},{"lineNumber":405,"author":{"gitId":"Vision-2000"},"content":"4. Should work without internet connection.","lastModifiedDate":"2024-03-07"},{"lineNumber":406,"author":{"gitId":"Vision-2000"},"content":"5. Can only be used by a registered receptionist.","lastModifiedDate":"2024-03-07"},{"lineNumber":407,"author":{"gitId":"Vision-2000"},"content":"6. Each command should take no more than 1 second until a response is displayed.","lastModifiedDate":"2024-03-07"},{"lineNumber":408,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":409,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":410,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":411,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23"},{"lineNumber":412,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":413,"author":{"gitId":"Vision-2000"},"content":"* **Mainstream OS**: Windows, Linux, MacOS","lastModifiedDate":"2024-03-07"},{"lineNumber":414,"author":{"gitId":"jskimdev"},"content":"* **Patient**: A patient who has visited the clinic at least once due to an illness","lastModifiedDate":"2024-03-19"},{"lineNumber":415,"author":{"gitId":"Vision-2000"},"content":"* **Receptionist** The user operating MediTrack","lastModifiedDate":"2024-03-07"},{"lineNumber":416,"author":{"gitId":"Vision-2000"},"content":"* **Patient information**: Name, contact number, address, email, date of birth, symptoms, date of visit ","lastModifiedDate":"2024-03-07"},{"lineNumber":417,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":418,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":419,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":420,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23"},{"lineNumber":421,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":422,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":423,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":424,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":425,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":426,"author":{"gitId":"-"},"content":"**Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2023-09-12"},{"lineNumber":427,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":428,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":429,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":430,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":431,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":432,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":433,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":434,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":435,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":436,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23"},{"lineNumber":437,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":438,"author":{"gitId":"-"},"content":" 1. Double-click the jar file Expected: Shows the GUI with a set of sample contacts. The window size may not be optimum.","lastModifiedDate":"2020-05-23"},{"lineNumber":439,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":440,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23"},{"lineNumber":441,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":442,"author":{"gitId":"-"},"content":" 1. Resize the window to an optimum size. Move the window to a different location. Close the window.","lastModifiedDate":"2020-05-23"},{"lineNumber":443,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":444,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":445,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23"},{"lineNumber":446,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":447,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":448,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":449,"author":{"gitId":"jskimdev"},"content":"### Deleting a patient","lastModifiedDate":"2024-03-19"},{"lineNumber":450,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":451,"author":{"gitId":"jskimdev"},"content":"1. Deleting a patient while all patients are being shown","lastModifiedDate":"2024-03-19"},{"lineNumber":452,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":453,"author":{"gitId":"jskimdev"},"content":" 1. Prerequisites: List all patients using the `list` command. Multiple patients in the list.","lastModifiedDate":"2024-03-19"},{"lineNumber":454,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":455,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":456,"author":{"gitId":"-"},"content":" Expected: First contact is deleted from the list. Details of the deleted contact shown in the status message. Timestamp in the status bar is updated.","lastModifiedDate":"2020-05-23"},{"lineNumber":457,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":458,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":459,"author":{"gitId":"jskimdev"},"content":" Expected: No patient is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2024-03-19"},{"lineNumber":460,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":461,"author":{"gitId":"-"},"content":" 1. Other incorrect delete commands to try: `delete`, `delete x`, `...` (where x is larger than the list size)\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":462,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":463,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":464,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":465,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":466,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":467,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":468,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":469,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":470,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23"},{"lineNumber":471,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":472,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"jskimdev":10,"-":370,"Vision-2000":92}},{"path":"docs/UserGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"User Guide\"","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"Vision-2000"},"content":"# MediTrack User Guide","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"Vision-2000"},"content":"MediTrack is a **desktop app for managing patient details, 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 patient management tasks done faster than traditional GUI apps.","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"## Quick start","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"1. Ensure you have Java `11` or above installed in your Computer.","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"1. Download the latest `addressbook.jar` from [here](https://github.com/se-edu/addressbook-level3/releases).","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"1. Copy the file to the folder you want to use as the _home folder_ for your AddressBook.","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"1. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar addressbook.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2023-01-01"},{"lineNumber":25,"author":{"gitId":"-"},"content":" A GUI similar to the below should appear in a few seconds. Note how the app contains some sample data.\u003cbr\u003e","lastModifiedDate":"2023-01-01"},{"lineNumber":26,"author":{"gitId":"-"},"content":" ![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":"1. Type the command in the command box and press Enter to execute it. e.g. typing **`help`** and pressing Enter will open the help window.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":" Some example commands you can try:","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * `list` : Lists all contacts.","lastModifiedDate":"2023-01-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01` : Adds a contact named `John Doe` to the Address Book.","lastModifiedDate":"2023-01-01"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * `delete 3` : Deletes the 3rd contact shown in the current list.","lastModifiedDate":"2023-01-01"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * `clear` : Deletes all contacts.","lastModifiedDate":"2023-01-01"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * `exit` : Exits the app.","lastModifiedDate":"2023-01-01"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"1. Refer to the [Features](#features) below for details of each command.","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"**Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"* Words in `UPPER_CASE` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" e.g. in `add n/NAME`, `NAME` is a parameter which can be used as `add n/John Doe`.","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"* Items in square brackets are optional.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" e.g `n/NAME [t/TAG]` can be used as `n/John Doe t/friend` or as `n/John Doe`.","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"* Items with `…`​ after them can be used multiple times including zero times.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" e.g. `[t/TAG]…​` can be used as ` ` (i.e. 0 times), `t/friend`, `t/friend t/family` etc.","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"* Parameters can be in any order.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" e.g. if the command specifies `n/NAME p/PHONE_NUMBER`, `p/PHONE_NUMBER n/NAME` is also acceptable.","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":"* Extraneous parameters for commands that do not take in parameters (such as `help`, `list`, `exit` and `clear`) will be ignored.\u003cbr\u003e","lastModifiedDate":"2021-02-03"},{"lineNumber":64,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2021-02-03"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03"},{"lineNumber":66,"author":{"gitId":"-"},"content":"* If you are using a PDF version of this document, be careful when copying and pasting commands that span multiple lines as space characters surrounding line-breaks may be omitted when copied over to the application.","lastModifiedDate":"2023-06-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"### Viewing help : `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"Shows a message explaning how to access the help page.","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"Format: `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"jskimdev"},"content":"### Adding a patient: `add`","lastModifiedDate":"2024-03-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"jskimdev"},"content":"Adds a patient to the address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"Format: `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]…​`","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":86,"author":{"gitId":"jskimdev"},"content":"**Tip:** A patient can have any number of tags (including 0)","lastModifiedDate":"2024-03-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":"* `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01`","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"* `add n/Betsy Crowe t/friend e/betsycrowe@example.com a/Newgate Prison p/1234567 t/criminal`","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"jskimdev"},"content":"### Listing all patients : `list`","lastModifiedDate":"2024-03-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"jskimdev"},"content":"Shows a list of all patients in the address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":"Format: `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"jskimdev"},"content":"### Editing a patient : `edit`","lastModifiedDate":"2024-03-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"jskimdev"},"content":"Edits an existing patient in the address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":"Format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAG]…​`","lastModifiedDate":"2020-05-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":105,"author":{"gitId":"jskimdev"},"content":"* Edits the patient at the specified `INDEX`. The index refers to the index number shown in the displayed patient list. The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2024-03-19"},{"lineNumber":106,"author":{"gitId":"-"},"content":"* At least one of the optional fields must be provided.","lastModifiedDate":"2020-05-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":"* Existing values will be updated to the input values.","lastModifiedDate":"2020-05-23"},{"lineNumber":108,"author":{"gitId":"jskimdev"},"content":"* When editing tags, the existing tags of the patient will be removed i.e adding of tags is not cumulative.","lastModifiedDate":"2024-03-19"},{"lineNumber":109,"author":{"gitId":"jskimdev"},"content":"* You can remove all the patient’s tags by typing `t/` without","lastModifiedDate":"2024-03-19"},{"lineNumber":110,"author":{"gitId":"-"},"content":" specifying any tags after it.","lastModifiedDate":"2020-05-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"jskimdev"},"content":"* `edit 1 p/91234567 e/johndoe@example.com` Edits the phone number and email address of the 1st patient to be `91234567` and `johndoe@example.com` respectively.","lastModifiedDate":"2024-03-19"},{"lineNumber":114,"author":{"gitId":"jskimdev"},"content":"* `edit 2 n/Betsy Crower t/` Edits the name of the 2nd patient to be `Betsy Crower` and clears all existing tags.","lastModifiedDate":"2024-03-19"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"jskimdev"},"content":"### Locating patients by name: `find`","lastModifiedDate":"2024-03-19"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"jskimdev"},"content":"Finds patients whose names contain any of the given keywords.","lastModifiedDate":"2024-03-19"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":"Format: `find KEYWORD [MORE_KEYWORDS]`","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":"* The search is case-insensitive. e.g `hans` will match `Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":"* The order of the keywords does not matter. e.g. `Hans Bo` will match `Bo Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":"* Only the name is searched.","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":"* Only full words will be matched e.g. `Han` will not match `Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":"* Persons matching at least one keyword will be returned (i.e. `OR` search).","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":" e.g. `Hans Bo` will return `Hans Gruber`, `Bo Yang`","lastModifiedDate":"2020-05-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":"* `find John` returns `john` and `John Doe`","lastModifiedDate":"2020-05-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":"* `find alex david` returns `Alex Yeoh`, `David Li`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":" ![result for \u0027find alex david\u0027](images/findAlexDavidResult.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":134,"author":{"gitId":"jskimdev"},"content":"### Deleting a patient : `delete`","lastModifiedDate":"2024-03-19"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":136,"author":{"gitId":"jskimdev"},"content":"Deletes the specified patient from the address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":"Format: `delete INDEX`","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"jskimdev"},"content":"* Deletes the patient at the specified `INDEX`.","lastModifiedDate":"2024-03-19"},{"lineNumber":141,"author":{"gitId":"jskimdev"},"content":"* The index refers to the index number shown in the displayed patient list.","lastModifiedDate":"2024-03-19"},{"lineNumber":142,"author":{"gitId":"-"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"jskimdev"},"content":"* `list` followed by `delete 2` deletes the 2nd patient in the address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":146,"author":{"gitId":"jskimdev"},"content":"* `find Betsy` followed by `delete 1` deletes the 1st patient in the results of the `find` command.","lastModifiedDate":"2024-03-19"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":"### Clearing all entries : `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":"Clears all entries from the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":"Format: `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"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"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"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"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":168,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"warning\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":170,"author":{"gitId":"-"},"content":"**Caution:**","lastModifiedDate":"2023-09-12"},{"lineNumber":171,"author":{"gitId":"-"},"content":"If your changes to the data file makes its format invalid, AddressBook will discard all data and start with an empty data file at the next run. Hence, it is recommended to take a backup of the file before editing it.\u003cbr\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":172,"author":{"gitId":"-"},"content":"Furthermore, certain edits can cause the AddressBook to behave in unexpected ways (e.g., if a value entered is outside the acceptable range). Therefore, edit the data file only if you are confident that you can update it correctly.","lastModifiedDate":"2023-09-12"},{"lineNumber":173,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":175,"author":{"gitId":"-"},"content":"### Archiving data files `[coming in v2.0]`","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":"_Details coming soon ..._","lastModifiedDate":"2021-02-04"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"**A**: Install the app in the other computer and overwrite the empty data file it creates with the file that contains the data of your previous AddressBook home folder.","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":"## Known issues","lastModifiedDate":"2023-09-08"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":190,"author":{"gitId":"-"},"content":"1. **When using multiple screens**, if you move the application to a secondary screen, and later switch to using only the primary screen, the GUI will open off-screen. The remedy is to delete the `preferences.json` file created by the application before running the application again.","lastModifiedDate":"2023-09-08"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":192,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":194,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":"Action | Format, Examples","lastModifiedDate":"2020-05-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":"-----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-12"},{"lineNumber":198,"author":{"gitId":"-"},"content":"**Add** | `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]…​` \u003cbr\u003e e.g., `add n/James Ho p/22224444 e/jamesho@example.com a/123, Clementi Rd, 1234665 t/friend t/colleague`","lastModifiedDate":"2020-05-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":"**Clear** | `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"author":{"gitId":"-"},"content":"**Delete** | `delete INDEX`\u003cbr\u003e e.g., `delete 3`","lastModifiedDate":"2020-05-23"},{"lineNumber":201,"author":{"gitId":"-"},"content":"**Edit** | `edit INDEX [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [t/TAG]…​`\u003cbr\u003e e.g.,`edit 2 n/James Lee e/jameslee@example.com`","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":"**Find** | `find KEYWORD [MORE_KEYWORDS]`\u003cbr\u003e e.g., `find James Jake`","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":"**List** | `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":204,"author":{"gitId":"-"},"content":"**Help** | `help`","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"jskimdev":20,"-":182,"Vision-2000":2}},{"path":"docs/index.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"\"","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"Vision-2000"},"content":"# MediTrack","lastModifiedDate":"2024-03-06"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":8,"author":{"gitId":"Vision-2000"},"content":"[![CI Status](https://github.com/AY2324S2-CS2103T-T14-2/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2324S2-CS2103T-T14-2/tp/actions)","lastModifiedDate":"2024-03-06"},{"lineNumber":9,"author":{"gitId":"Vision-2000"},"content":"[![codecov](https://codecov.io/gh/AY2324S2-CS2103T-T14-2/tp/graph/badge.svg?token\u003dyYHlxxXkJQ)](https://codecov.io/gh/AY2324S2-CS2103T-T14-2/tp)","lastModifiedDate":"2024-03-06"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"Vision-2000"},"content":"**MediTrack is a desktop application for managing your patient details.** While it has a GUI, most of the user interactions happen using a CLI (Command Line Interface).","lastModifiedDate":"2024-03-06"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"Vision-2000"},"content":"* If you are interested in using MediTrack, head over to the [_Quick Start_ section of the **User Guide**](UserGuide.html#quick-start).","lastModifiedDate":"2024-03-06"},{"lineNumber":16,"author":{"gitId":"Vision-2000"},"content":"* If you are interested about developing MediTrack, the [**Developer Guide**](DeveloperGuide.html) is a good place to start.","lastModifiedDate":"2024-03-06"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"**Acknowledgements**","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"Vision-2000"},"content":"* This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-03-06"}],"authorContributionMap":{"-":14,"Vision-2000":7}},{"path":"docs/tutorials/AddRemark.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-07-29"},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"Tutorial: Adding a command\"","lastModifiedDate":"2020-07-29"},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-07-29"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":7,"author":{"gitId":"-"},"content":"# Tutorial: Adding a command","lastModifiedDate":"2023-09-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"Let\u0027s walk you through the implementation of a new command — `remark`.","lastModifiedDate":"2020-07-29"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"This command allows users of the AddressBook application to add optional remarks to people in their address book and edit it if required. The command should have the following format:","lastModifiedDate":"2020-07-29"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":13,"author":{"gitId":"-"},"content":"`remark INDEX r/REMARK` (e.g., `remark 2 r/Likes baseball`)","lastModifiedDate":"2020-07-29"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":"We’ll assume that you have already set up the development environment as outlined in the Developer’s Guide.","lastModifiedDate":"2020-07-29"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":18,"author":{"gitId":"-"},"content":"## Create a new `remark` command","lastModifiedDate":"2020-07-29"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Looking in the `logic.command` package, you will notice that each existing command have their own class. All the commands inherit from the abstract class `Command` which means that they must override `execute()`. Each `Command` returns an instance of `CommandResult` upon success and `CommandResult#feedbackToUser` is printed to the `ResultDisplay`.","lastModifiedDate":"2020-07-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":22,"author":{"gitId":"-"},"content":"Let’s start by creating a new `RemarkCommand` class in the `src/main/java/seedu/address/logic/command` directory.","lastModifiedDate":"2020-07-29"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":24,"author":{"gitId":"-"},"content":"For now, let’s keep `RemarkCommand` as simple as possible and print some output. We accomplish that by returning a `CommandResult` with an accompanying message.","lastModifiedDate":"2020-07-29"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":26,"author":{"gitId":"-"},"content":"**`RemarkCommand.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":28,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":29,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2020-07-29"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2020-07-29"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":33,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-07-29"},{"lineNumber":34,"author":{"gitId":"jskimdev"},"content":" * Changes the remark of an existing patient in the address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":36,"author":{"gitId":"-"},"content":"public class RemarkCommand extends Command {","lastModifiedDate":"2020-07-29"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"remark\";","lastModifiedDate":"2020-07-29"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2020-07-29"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return new CommandResult(\"Hello from remark\");","lastModifiedDate":"2020-07-29"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":44,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":45,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":47,"author":{"gitId":"-"},"content":"### Hook `RemarkCommand` into the application","lastModifiedDate":"2020-07-29"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":49,"author":{"gitId":"-"},"content":"Now that we have our `RemarkCommand` ready to be executed, we need to update `AddressBookParser#parseCommand()` to recognize the `remark` keyword. Add the new command to the `switch` block by creating a new `case` that returns a new instance of `RemarkCommand`.","lastModifiedDate":"2020-07-29"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":51,"author":{"gitId":"-"},"content":"You can refer to the changes in this [diff](https://github.com/se-edu/addressbook-level3/commit/35eb7286f18a029d39cb7a29df8f172a001e4fd8#diff-399c284cb892c20b7c04a69116fcff6ccc0666c5230a1db8e4a9145def8fa4ee).","lastModifiedDate":"2022-01-02"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":"### Run the application","lastModifiedDate":"2020-07-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":55,"author":{"gitId":"-"},"content":"Run `Main#main` and try out your new `RemarkCommand`. If everything went well, you should see something like this:","lastModifiedDate":"2020-07-29"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":"![Output displayed](../images/add-remark/RemarkHello.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":59,"author":{"gitId":"-"},"content":"## Change `RemarkCommand` to throw an exception","lastModifiedDate":"2020-07-29"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":"While we have successfully printed a message to `ResultDisplay`, the command does not do what it is supposed to do. Let’s change the command to throw a `CommandException` to accurately reflect that our command is still a work in progress.","lastModifiedDate":"2020-12-12"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":63,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"../diagrams/add-remark/RemarkClass.puml\" alt\u003d\"The relationship between RemarkCommand and Command\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":65,"author":{"gitId":"-"},"content":"Following the convention in other commands, we add relevant messages as constants and use them.","lastModifiedDate":"2020-07-29"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":67,"author":{"gitId":"-"},"content":"**`RemarkCommand.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":69,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2021-08-01"},{"lineNumber":71,"author":{"gitId":"jskimdev"},"content":" + \": Edits the remark of the patient identified \"","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"jskimdev"},"content":" + \"by the index number used in the last patient listing. \"","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":" + \"Existing remark will be overwritten by the input.\\n\"","lastModifiedDate":"2020-07-29"},{"lineNumber":74,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2020-07-29"},{"lineNumber":75,"author":{"gitId":"-"},"content":" + \"r/ [REMARK]\\n\"","lastModifiedDate":"2020-07-29"},{"lineNumber":76,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2020-07-29"},{"lineNumber":77,"author":{"gitId":"-"},"content":" + \"r/ Likes to swim.\";","lastModifiedDate":"2020-07-29"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_IMPLEMENTED_YET \u003d","lastModifiedDate":"2021-08-01"},{"lineNumber":80,"author":{"gitId":"-"},"content":" \"Remark command not implemented yet\";","lastModifiedDate":"2021-08-01"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2020-07-29"},{"lineNumber":84,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_NOT_IMPLEMENTED_YET);","lastModifiedDate":"2020-07-29"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":86,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":88,"author":{"gitId":"-"},"content":"## Enhancing `RemarkCommand`","lastModifiedDate":"2020-07-29"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":90,"author":{"gitId":"-"},"content":"Let’s change `RemarkCommand` to parse input from the user.","lastModifiedDate":"2020-07-29"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":92,"author":{"gitId":"-"},"content":"### Make the command accept parameters","lastModifiedDate":"2020-07-29"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":94,"author":{"gitId":"-"},"content":"We start by modifying the constructor of `RemarkCommand` to accept an `Index` and a `String`. While we are at it, let’s change the error message to echo the values. While this is not a replacement for tests, it is an obvious way to tell if our code is functioning as intended.","lastModifiedDate":"2020-07-29"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":96,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":97,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2020-07-29"},{"lineNumber":98,"author":{"gitId":"-"},"content":"//...","lastModifiedDate":"2020-07-29"},{"lineNumber":99,"author":{"gitId":"-"},"content":"public class RemarkCommand extends Command {","lastModifiedDate":"2020-07-29"},{"lineNumber":100,"author":{"gitId":"-"},"content":" //...","lastModifiedDate":"2020-07-29"},{"lineNumber":101,"author":{"gitId":"-"},"content":" public static final String MESSAGE_ARGUMENTS \u003d \"Index: %1$d, Remark: %2$s\";","lastModifiedDate":"2020-07-29"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":103,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2020-07-29"},{"lineNumber":104,"author":{"gitId":"-"},"content":" private final String remark;","lastModifiedDate":"2020-07-29"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":106,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-07-29"},{"lineNumber":107,"author":{"gitId":"jskimdev"},"content":" * @param index of the patient in the filtered patient list to edit the remark","lastModifiedDate":"2024-03-19"},{"lineNumber":108,"author":{"gitId":"jskimdev"},"content":" * @param remark of the patient to be updated to","lastModifiedDate":"2024-03-19"},{"lineNumber":109,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":110,"author":{"gitId":"-"},"content":" public RemarkCommand(Index index, String remark) {","lastModifiedDate":"2020-07-29"},{"lineNumber":111,"author":{"gitId":"-"},"content":" requireAllNonNull(index, remark);","lastModifiedDate":"2020-07-29"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":113,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2020-07-29"},{"lineNumber":114,"author":{"gitId":"-"},"content":" this.remark \u003d remark;","lastModifiedDate":"2020-07-29"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":117,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2020-07-29"},{"lineNumber":118,"author":{"gitId":"-"},"content":" throw new CommandException(","lastModifiedDate":"2021-08-01"},{"lineNumber":119,"author":{"gitId":"-"},"content":" String.format(MESSAGE_ARGUMENTS, index.getOneBased(), remark));","lastModifiedDate":"2021-08-01"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":123,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2020-07-29"},{"lineNumber":124,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2020-07-29"},{"lineNumber":125,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2020-07-29"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":128,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2020-07-29"},{"lineNumber":129,"author":{"gitId":"-"},"content":" if (!(other instanceof RemarkCommand)) {","lastModifiedDate":"2020-07-29"},{"lineNumber":130,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2020-07-29"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":133,"author":{"gitId":"-"},"content":" RemarkCommand e \u003d (RemarkCommand) other;","lastModifiedDate":"2020-07-29"},{"lineNumber":134,"author":{"gitId":"-"},"content":" return index.equals(e.index)","lastModifiedDate":"2020-07-29"},{"lineNumber":135,"author":{"gitId":"-"},"content":" \u0026\u0026 remark.equals(e.remark);","lastModifiedDate":"2020-07-29"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":137,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":138,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":140,"author":{"gitId":"-"},"content":"Your code should look something like [this](https://github.com/se-edu/addressbook-level3/commit/dc6d5139d08f6403da0ec624ea32bd79a2ae0cbf#diff-a8e35af8f9c251525063fae36c9852922a7e7195763018eacec60f3a4d87c594) after you are done.","lastModifiedDate":"2022-01-02"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":142,"author":{"gitId":"-"},"content":"### Parse user input","lastModifiedDate":"2020-07-29"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":144,"author":{"gitId":"-"},"content":"Now let’s move on to writing a parser that will extract the index and remark from the input provided by the user.","lastModifiedDate":"2020-07-29"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":146,"author":{"gitId":"-"},"content":"Create a `RemarkCommandParser` class in the `seedu.address.logic.parser` package. The class must extend the `Parser` interface.","lastModifiedDate":"2020-07-29"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":148,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"../diagrams/add-remark/ParserClass.puml\" alt\u003d\"The relationship between Parser and RemarkCommandParser\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":150,"author":{"gitId":"-"},"content":"Thankfully, `ArgumentTokenizer#tokenize()` makes it trivial to parse user input. Let’s take a look at the JavaDoc provided for the function to understand what it does.","lastModifiedDate":"2020-07-29"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":152,"author":{"gitId":"-"},"content":"**`ArgumentTokenizer.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":154,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":155,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-07-29"},{"lineNumber":156,"author":{"gitId":"-"},"content":" * Tokenizes an arguments string and returns an {@code ArgumentMultimap}","lastModifiedDate":"2020-07-29"},{"lineNumber":157,"author":{"gitId":"-"},"content":" * object that maps prefixes to their respective argument values. Only the","lastModifiedDate":"2020-07-29"},{"lineNumber":158,"author":{"gitId":"-"},"content":" * given prefixes will be recognized in the arguments string.","lastModifiedDate":"2020-07-29"},{"lineNumber":159,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2020-07-29"},{"lineNumber":160,"author":{"gitId":"-"},"content":" * @param argsString Arguments string of the form:","lastModifiedDate":"2020-07-29"},{"lineNumber":161,"author":{"gitId":"-"},"content":" * {@code preamble \u003cprefix\u003evalue \u003cprefix\u003evalue ...}","lastModifiedDate":"2020-07-29"},{"lineNumber":162,"author":{"gitId":"-"},"content":" * @param prefixes Prefixes to tokenize the arguments string with","lastModifiedDate":"2020-07-29"},{"lineNumber":163,"author":{"gitId":"-"},"content":" * @return ArgumentMultimap object that maps prefixes to their","lastModifiedDate":"2020-07-29"},{"lineNumber":164,"author":{"gitId":"-"},"content":" * arguments","lastModifiedDate":"2020-07-29"},{"lineNumber":165,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":166,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":168,"author":{"gitId":"-"},"content":"We can tell `ArgumentTokenizer#tokenize()` to look out for our new prefix `r/` and it will return us an instance of `ArgumentMultimap`. Now let’s find out what we need to do in order to obtain the Index and String that we need. Let’s look through `ArgumentMultimap` :","lastModifiedDate":"2020-07-29"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":170,"author":{"gitId":"-"},"content":"**`ArgumentMultimap.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":172,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":173,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-07-29"},{"lineNumber":174,"author":{"gitId":"-"},"content":" * Returns the last value of {@code prefix}.","lastModifiedDate":"2020-07-29"},{"lineNumber":175,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":176,"author":{"gitId":"-"},"content":"public Optional\u003cString\u003e getValue(Prefix prefix) {","lastModifiedDate":"2020-07-29"},{"lineNumber":177,"author":{"gitId":"-"},"content":" List\u003cString\u003e values \u003d getAllValues(prefix);","lastModifiedDate":"2020-07-29"},{"lineNumber":178,"author":{"gitId":"-"},"content":" return values.isEmpty() ? Optional.empty() :","lastModifiedDate":"2020-07-29"},{"lineNumber":179,"author":{"gitId":"-"},"content":" Optional.of(values.get(values.size() - 1));","lastModifiedDate":"2020-07-29"},{"lineNumber":180,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":181,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":183,"author":{"gitId":"-"},"content":"This appears to be what we need to get a String of the remark. But what about the Index? Let\u0027s take a quick peek at existing `Command` that uses an index to see how it is done.","lastModifiedDate":"2020-07-29"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":185,"author":{"gitId":"-"},"content":"**`DeleteCommandParser.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":187,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":188,"author":{"gitId":"-"},"content":"Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2020-07-29"},{"lineNumber":189,"author":{"gitId":"-"},"content":"return new DeleteCommand(index);","lastModifiedDate":"2020-07-29"},{"lineNumber":190,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":192,"author":{"gitId":"-"},"content":"There appears to be another utility class that obtains an `Index` from the input provided by the user.","lastModifiedDate":"2020-07-29"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":194,"author":{"gitId":"-"},"content":"Now that we have the know-how to extract the data that we need from the user’s input, we can parse the user command and create a new instance of `RemarkCommand`, as given below.","lastModifiedDate":"2020-07-29"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":196,"author":{"gitId":"-"},"content":"**`RemarkCommandParser.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":198,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":199,"author":{"gitId":"-"},"content":"public RemarkCommand parse(String args) throws ParseException {","lastModifiedDate":"2020-07-29"},{"lineNumber":200,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2020-07-29"},{"lineNumber":201,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args,","lastModifiedDate":"2020-07-29"},{"lineNumber":202,"author":{"gitId":"-"},"content":" PREFIX_REMARK);","lastModifiedDate":"2020-07-29"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":204,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2020-07-29"},{"lineNumber":205,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2020-07-29"},{"lineNumber":206,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2020-07-29"},{"lineNumber":207,"author":{"gitId":"-"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2020-07-29"},{"lineNumber":208,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2020-07-29"},{"lineNumber":209,"author":{"gitId":"-"},"content":" RemarkCommand.MESSAGE_USAGE), ive);","lastModifiedDate":"2020-07-29"},{"lineNumber":210,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":212,"author":{"gitId":"-"},"content":" String remark \u003d argMultimap.getValue(PREFIX_REMARK).orElse(\"\");","lastModifiedDate":"2020-07-29"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":214,"author":{"gitId":"-"},"content":" return new RemarkCommand(index, remark);","lastModifiedDate":"2020-07-29"},{"lineNumber":215,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":216,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":218,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":220,"author":{"gitId":"-"},"content":"Don’t forget to update `AddressBookParser` to use our new `RemarkCommandParser`!","lastModifiedDate":"2023-09-12"},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":222,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":224,"author":{"gitId":"-"},"content":"If you are stuck, check out the sample","lastModifiedDate":"2020-07-29"},{"lineNumber":225,"author":{"gitId":"-"},"content":"[here](https://github.com/se-edu/addressbook-level3/commit/dc6d5139d08f6403da0ec624ea32bd79a2ae0cbf#diff-8bf239e8e9529369b577701303ddd96af93178b4ed6735f91c2d8488b20c6b4a).","lastModifiedDate":"2022-01-02"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":227,"author":{"gitId":"-"},"content":"## Add `Remark` to the model","lastModifiedDate":"2020-07-29"},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":229,"author":{"gitId":"jskimdev"},"content":"Now that we have all the information that we need, let’s lay the groundwork for propagating the remarks added into the in-memory storage of patient data. We achieve that by working with the `Person` model. Each field in a Person is implemented as a separate class (e.g. a `Name` object represents the patient’s name). That means we should add a `Remark` class so that we can use a `Remark` object to represent a remark given to a patient.","lastModifiedDate":"2024-03-19"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":231,"author":{"gitId":"-"},"content":"### Add a new `Remark` class","lastModifiedDate":"2020-07-29"},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":233,"author":{"gitId":"jskimdev"},"content":"Create a new `Remark` in `seedu.address.model.patient`. Since a `Remark` is a field that is similar to `Address`, we can reuse a significant bit of code.","lastModifiedDate":"2024-03-19"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":235,"author":{"gitId":"-"},"content":"A copy-paste and search-replace later, you should have something like [this](https://github.com/se-edu/addressbook-level3/commit/4516e099699baa9e2d51801bd26f016d812dedcc#diff-41bb13c581e280c686198251ad6cc337cd5e27032772f06ed9bf7f1440995ece). Note how `Remark` has no constrains and thus does not require input","lastModifiedDate":"2022-01-02"},{"lineNumber":236,"author":{"gitId":"-"},"content":"validation.","lastModifiedDate":"2020-07-29"},{"lineNumber":237,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":238,"author":{"gitId":"-"},"content":"### Make use of `Remark`","lastModifiedDate":"2020-07-29"},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":240,"author":{"gitId":"-"},"content":"Let’s change `RemarkCommand` and `RemarkCommandParser` to use the new `Remark` class instead of plain `String`. These should be relatively simple changes.","lastModifiedDate":"2020-07-29"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":242,"author":{"gitId":"-"},"content":"## Add a placeholder element for remark to the UI","lastModifiedDate":"2020-07-29"},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":244,"author":{"gitId":"jskimdev"},"content":"Without getting too deep into `fxml`, let’s go on a 5 minute adventure to get some placeholder text to show up for each patient.","lastModifiedDate":"2024-03-19"},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":246,"author":{"gitId":"-"},"content":"Simply add the following to [`seedu.address.ui.PersonCard`](https://github.com/se-edu/addressbook-level3/commit/850b78879582f38accb05dd20c245963c65ea599#diff-639834f1e05afe2276a86372adf0fe5f69314642c2d93cfa543d614ce5a76688).","lastModifiedDate":"2022-01-02"},{"lineNumber":247,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":248,"author":{"gitId":"-"},"content":"**`PersonCard.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":250,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":251,"author":{"gitId":"-"},"content":"@FXML","lastModifiedDate":"2020-07-29"},{"lineNumber":252,"author":{"gitId":"-"},"content":"private Label remark;","lastModifiedDate":"2020-07-29"},{"lineNumber":253,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":256,"author":{"gitId":"-"},"content":"`@FXML` is an annotation that marks a private or protected field and makes it accessible to FXML. It might sound like Greek to you right now, don’t worry — we will get back to it later.","lastModifiedDate":"2020-07-29"},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":258,"author":{"gitId":"-"},"content":"Then insert the following into [`main/resources/view/PersonListCard.fxml`](https://github.com/se-edu/addressbook-level3/commit/850b78879582f38accb05dd20c245963c65ea599#diff-d44c4f51c24f6253c277a2bb9bc440b8064d9c15ad7cb7ceda280bca032efce9).","lastModifiedDate":"2022-01-02"},{"lineNumber":259,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":260,"author":{"gitId":"-"},"content":"**`PersonListCard.fxml`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":261,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":262,"author":{"gitId":"-"},"content":"``` xml","lastModifiedDate":"2020-07-29"},{"lineNumber":263,"author":{"gitId":"-"},"content":"\u003cLabel fx:id\u003d\"remark\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$remark\" /\u003e","lastModifiedDate":"2020-07-29"},{"lineNumber":264,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":266,"author":{"gitId":"-"},"content":"That’s it! Fire up the application again and you should see something like this:","lastModifiedDate":"2020-07-29"},{"lineNumber":267,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":268,"author":{"gitId":"-"},"content":"![$remark shows up in each entry](../images/add-remark/$Remark.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":269,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":270,"author":{"gitId":"-"},"content":"## Modify `Person` to support a `Remark` field","lastModifiedDate":"2020-07-29"},{"lineNumber":271,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":272,"author":{"gitId":"-"},"content":"Since `PersonCard` displays data from a `Person`, we need to update `Person` to get our `Remark` displayed!","lastModifiedDate":"2020-07-29"},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":274,"author":{"gitId":"-"},"content":"### Modify `Person`","lastModifiedDate":"2020-07-29"},{"lineNumber":275,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":276,"author":{"gitId":"-"},"content":"We change the constructor of `Person` to take a `Remark`. We will also need to define new fields and accessors accordingly to store our new addition.","lastModifiedDate":"2020-07-29"},{"lineNumber":277,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":278,"author":{"gitId":"-"},"content":"### Update other usages of `Person`","lastModifiedDate":"2020-07-29"},{"lineNumber":279,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":280,"author":{"gitId":"-"},"content":"Unfortunately, a change to `Person` will cause other commands to break, you will have to modify these commands to use the updated `Person`!","lastModifiedDate":"2020-07-29"},{"lineNumber":281,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":282,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":284,"author":{"gitId":"-"},"content":"Use the `Find Usages` feature in IntelliJ IDEA on the `Person` class to find these commands.","lastModifiedDate":"2023-09-12"},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":286,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":288,"author":{"gitId":"-"},"content":"Refer to [this commit](https://github.com/se-edu/addressbook-level3/commit/ce998c37e65b92d35c91d28c7822cd139c2c0a5c) and check that you have got everything in order!","lastModifiedDate":"2020-07-29"},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":290,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":291,"author":{"gitId":"-"},"content":"## Updating Storage","lastModifiedDate":"2020-07-29"},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":293,"author":{"gitId":"-"},"content":"AddressBook stores data by serializing `JsonAdaptedPerson` into `json` with the help of an external library — Jackson. Let’s update `JsonAdaptedPerson` to work with our new `Person`!","lastModifiedDate":"2020-07-29"},{"lineNumber":294,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":295,"author":{"gitId":"-"},"content":"While the changes to code may be minimal, the test data will have to be updated as well.","lastModifiedDate":"2020-07-29"},{"lineNumber":296,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":297,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"warning\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":298,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":299,"author":{"gitId":"-"},"content":"You must delete AddressBook’s storage file located at `/data/addressbook.json` before running it! Not doing so will cause AddressBook to default to an empty address book!","lastModifiedDate":"2023-09-12"},{"lineNumber":300,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":301,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":302,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":303,"author":{"gitId":"-"},"content":"Check out [this commit](https://github.com/se-edu/addressbook-level3/commit/556cbd0e03ff224d7a68afba171ad2eb0ce56bbf)","lastModifiedDate":"2020-07-29"},{"lineNumber":304,"author":{"gitId":"-"},"content":"to see what the changes entail.","lastModifiedDate":"2020-07-29"},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":306,"author":{"gitId":"-"},"content":"## Finalizing the UI","lastModifiedDate":"2020-07-29"},{"lineNumber":307,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":308,"author":{"gitId":"-"},"content":"Now that we have finalized the `Person` class and its dependencies, we can now bind the `Remark` field to the UI.","lastModifiedDate":"2020-07-29"},{"lineNumber":309,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":310,"author":{"gitId":"-"},"content":"Just add [this one line of code!](https://github.com/se-edu/addressbook-level3/commit/5b98fee11b6b3f5749b6b943c4f3bd3aa049b692)","lastModifiedDate":"2020-07-29"},{"lineNumber":311,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":312,"author":{"gitId":"-"},"content":"**`PersonCard.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":313,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":314,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":315,"author":{"gitId":"jskimdev"},"content":"public PersonCard(Person patient, int displayedIndex) {","lastModifiedDate":"2024-03-19"},{"lineNumber":316,"author":{"gitId":"-"},"content":" //...","lastModifiedDate":"2020-07-29"},{"lineNumber":317,"author":{"gitId":"jskimdev"},"content":" remark.setText(patient.getRemark().value);","lastModifiedDate":"2024-03-19"},{"lineNumber":318,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":319,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":320,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":321,"author":{"gitId":"-"},"content":"![The remark label is bound properly!](../images/add-remark/RemarkBound.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":322,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":323,"author":{"gitId":"-"},"content":"## Putting everything together","lastModifiedDate":"2020-07-29"},{"lineNumber":324,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":325,"author":{"gitId":"-"},"content":"After the previous step, we notice a peculiar regression — we went from displaying something to nothing at all. However, this is expected behavior as we are yet to update the `RemarkCommand` to make use of the code we\u0027ve been adding in the last few steps.","lastModifiedDate":"2020-07-29"},{"lineNumber":326,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":327,"author":{"gitId":"-"},"content":"### Update `RemarkCommand` and `RemarkCommandParser`","lastModifiedDate":"2020-07-29"},{"lineNumber":328,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":329,"author":{"gitId":"-"},"content":"In this last step, we modify `RemarkCommand#execute()` to change the `Remark` of a `Person`. Since all fields in a `Person` are immutable, we create a new instance of a `Person` with the values that we want and","lastModifiedDate":"2020-07-29"},{"lineNumber":330,"author":{"gitId":"-"},"content":"save it with `Model#setPerson()`.","lastModifiedDate":"2020-07-29"},{"lineNumber":331,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":332,"author":{"gitId":"-"},"content":"**`RemarkCommand.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":333,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":334,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":335,"author":{"gitId":"-"},"content":"//...","lastModifiedDate":"2020-07-29"},{"lineNumber":336,"author":{"gitId":"-"},"content":" public static final String MESSAGE_ADD_REMARK_SUCCESS \u003d \"Added remark to Person: %1$s\";","lastModifiedDate":"2020-07-29"},{"lineNumber":337,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DELETE_REMARK_SUCCESS \u003d \"Removed remark from Person: %1$s\";","lastModifiedDate":"2020-07-29"},{"lineNumber":338,"author":{"gitId":"-"},"content":"//...","lastModifiedDate":"2020-07-29"},{"lineNumber":339,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":340,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2020-07-29"},{"lineNumber":341,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2020-07-29"},{"lineNumber":342,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":343,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2020-07-29"},{"lineNumber":344,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2020-07-29"},{"lineNumber":345,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":346,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":347,"author":{"gitId":"jskimdev"},"content":" Person patientToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-03-19"},{"lineNumber":348,"author":{"gitId":"jskimdev"},"content":" Person editedPatient \u003d new Person(","lastModifiedDate":"2024-03-19"},{"lineNumber":349,"author":{"gitId":"jskimdev"},"content":" patientToEdit.getName(), patientToEdit.getPhone(), patientToEdit.getEmail(),","lastModifiedDate":"2024-03-19"},{"lineNumber":350,"author":{"gitId":"jskimdev"},"content":" patientToEdit.getAddress(), remark, patientToEdit.getTags());","lastModifiedDate":"2024-03-19"},{"lineNumber":351,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":352,"author":{"gitId":"jskimdev"},"content":" model.setPerson(patientToEdit, editedPatient);","lastModifiedDate":"2024-03-19"},{"lineNumber":353,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2020-07-29"},{"lineNumber":354,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":355,"author":{"gitId":"jskimdev"},"content":" return new CommandResult(generateSuccessMessage(editedPatient));","lastModifiedDate":"2024-03-19"},{"lineNumber":356,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":357,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":358,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-07-29"},{"lineNumber":359,"author":{"gitId":"-"},"content":" * Generates a command execution success message based on whether","lastModifiedDate":"2021-08-01"},{"lineNumber":360,"author":{"gitId":"-"},"content":" * the remark is added to or removed from","lastModifiedDate":"2021-08-01"},{"lineNumber":361,"author":{"gitId":"jskimdev"},"content":" * {@code patientToEdit}.","lastModifiedDate":"2024-03-19"},{"lineNumber":362,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":363,"author":{"gitId":"jskimdev"},"content":" private String generateSuccessMessage(Person patientToEdit) {","lastModifiedDate":"2024-03-19"},{"lineNumber":364,"author":{"gitId":"-"},"content":" String message \u003d !remark.value.isEmpty() ? MESSAGE_ADD_REMARK_SUCCESS : MESSAGE_DELETE_REMARK_SUCCESS;","lastModifiedDate":"2020-07-29"},{"lineNumber":365,"author":{"gitId":"jskimdev"},"content":" return String.format(message, patientToEdit);","lastModifiedDate":"2024-03-19"},{"lineNumber":366,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":367,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":368,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":369,"author":{"gitId":"-"},"content":"![Congratulations!](../images/add-remark/RemarkComplete.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":370,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":371,"author":{"gitId":"-"},"content":"## Writing tests","lastModifiedDate":"2020-07-29"},{"lineNumber":372,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":373,"author":{"gitId":"-"},"content":"Tests are crucial to ensuring that bugs don’t slip into the codebase unnoticed. This is especially true for large code bases where a change might lead to unintended behavior.","lastModifiedDate":"2020-07-29"},{"lineNumber":374,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":375,"author":{"gitId":"-"},"content":"Let’s verify the correctness of our code by writing some tests!","lastModifiedDate":"2020-07-29"},{"lineNumber":376,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":377,"author":{"gitId":"-"},"content":"Of course you can simply add the test cases manually, like you\u0027ve been doing all along this tutorial. The result would be like the test cases in [here](https://github.com/se-edu/addressbook-level3/commit/fac8f3fd855d55831ca0cc73313b5943d49d4d6e#diff-ff58f7c10338b34f76645df49b71ecb2bafaf7611b20e7ff59ebc98475538a01). Alternatively, you can get the help of IntelliJ to generate the skeletons of the test cases, as explained in the next section.","lastModifiedDate":"2022-01-02"},{"lineNumber":378,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-08-01"},{"lineNumber":379,"author":{"gitId":"-"},"content":"### Automatically generating tests","lastModifiedDate":"2020-07-29"},{"lineNumber":380,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":381,"author":{"gitId":"-"},"content":"The goal is to write effective and efficient tests to ensure that `RemarkCommand#execute()` behaves as expected.","lastModifiedDate":"2020-07-29"},{"lineNumber":382,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":383,"author":{"gitId":"-"},"content":"The convention for test names is `methodName_testScenario_expectedResult`. An example would be","lastModifiedDate":"2020-07-29"},{"lineNumber":384,"author":{"gitId":"-"},"content":"`execute_filteredList_success`.","lastModifiedDate":"2020-07-29"},{"lineNumber":385,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":386,"author":{"gitId":"-"},"content":"Let’s create a test for `RemarkCommand#execute()` to test that adding a remark works. On `IntelliJ IDEA` you can bring up the context menu and choose to `Go To` \\\u003e `Test` or use the appropriate keyboard shortcut.","lastModifiedDate":"2020-07-29"},{"lineNumber":387,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":388,"author":{"gitId":"-"},"content":"![Using the context menu to jump to tests](../images/add-remark/ContextMenu.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":389,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":390,"author":{"gitId":"-"},"content":"Then, create a test for the `execute` method.","lastModifiedDate":"2020-07-29"},{"lineNumber":391,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":392,"author":{"gitId":"-"},"content":"![Creating a test for `execute`.](../images/add-remark/CreateTest.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":393,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":394,"author":{"gitId":"-"},"content":"Following convention, let’s change the name of the generated method to `execute_addRemarkUnfilteredList_success`.","lastModifiedDate":"2020-07-29"},{"lineNumber":395,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":396,"author":{"gitId":"-"},"content":"Let’s use the utility functions provided in `CommandTestUtil`. The functions ensure that commands produce the expected `CommandResult` and output the correct message. In this case, `CommandTestUtil#assertCommandSuccess` is the best fit as we are testing that a `RemarkCommand` will successfully add a `Remark`.","lastModifiedDate":"2020-07-29"},{"lineNumber":397,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":398,"author":{"gitId":"-"},"content":"You should end up with a test that looks something like [this](https://github.com/se-edu/addressbook-level3/commit/fac8f3fd855d55831ca0cc73313b5943d49d4d6e#diff-ff58f7c10338b34f76645df49b71ecb2bafaf7611b20e7ff59ebc98475538a01R36-R49).","lastModifiedDate":"2022-01-02"},{"lineNumber":399,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":400,"author":{"gitId":"-"},"content":"## Conclusion","lastModifiedDate":"2020-07-29"},{"lineNumber":401,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":402,"author":{"gitId":"-"},"content":"This concludes the tutorial for adding a new `Command` to AddressBook.","lastModifiedDate":"2020-07-29"}],"authorContributionMap":{"jskimdev":19,"-":383}},{"path":"docs/tutorials/RemovingFields.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"Tutorial: Removing Fields\"","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"# Tutorial: Removing Fields","lastModifiedDate":"2023-09-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003e Perfection is achieved, not when there is nothing more to add, but when there is nothing left to take away.","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003e — Antoine de Saint-Exupery","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"When working on an existing code base, you will most likely find that some features that are no longer necessary.","lastModifiedDate":"2021-08-01"},{"lineNumber":14,"author":{"gitId":"-"},"content":"This tutorial aims to give you some practice on such a code \u0027removal\u0027 activity by removing the `address` field from `Person` class.","lastModifiedDate":"2021-08-01"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-08-01"},{"lineNumber":16,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"success\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-08-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":"**If you have done the [Add `remark` command tutorial](AddRemark.html) already**, you should know where the code had to be updated to add the field `remark`. From that experience, you can deduce where the code needs to be changed to _remove_ that field too. The removing of the `address` field can be done similarly.","lastModifiedDate":"2021-08-01"},{"lineNumber":19,"author":{"gitId":"-"},"content":"\u003cbr\u003e","lastModifiedDate":"2021-08-01"},{"lineNumber":20,"author":{"gitId":"-"},"content":"\u003cbr\u003e","lastModifiedDate":"2021-08-01"},{"lineNumber":21,"author":{"gitId":"-"},"content":"However, if you have no such prior knowledge, removing a field can take a quite a bit of detective work. This tutorial takes you through that process. **At least have a read even if you don\u0027t actually do the steps yourself.**","lastModifiedDate":"2021-08-01"},{"lineNumber":22,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":"\u003c!-- {:toc} --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":"## Safely deleting `Address`","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"IntelliJ IDEA provides a refactoring tool that can identify *most* parts of a removal easily. Let’s try to use it as much as we can.","lastModifiedDate":"2021-08-01"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":"### Assisted refactoring","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"jskimdev"},"content":"The `address` field in `Person` is actually an instance of the `seedu.address.model.patient.Address` class. Since removing the `Address` class will break the application, we start by identifying `Address`\u0027s usages. This allows us to see code that depends on `Address` to function properly and edit them on a case-by-case basis. Right-click the `Address` class and select `Refactor` \\\u003e `Safe Delete` through the menu.","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":"* :bulb: To make things simpler, you can unselect the options `Search in comments and strings` and `Search for text occurrences`","lastModifiedDate":"2021-08-01"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":"![Usages detected](../images/remove/UnsafeDelete.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"Choose to `View Usages` and you should be presented with a list of `Safe Delete Conflicts`. These conflicts describe locations in which the `Address` class is used.","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"![List of conflicts](../images/remove/SafeDeleteConflicts.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"Remove usages of `Address` by performing `Safe Delete`s on each entry i.e., double-click on the entry (which takes you to the code in concern, right-click on that entity, and choose `Refactor` -\u003e `Safe delete` as before). You will need to exercise discretion when removing usages of `Address`. Functions like `ParserUtil#parseAddress()` can be safely removed but its usages must be removed as well. Other usages like in `EditPersonDescriptor` may require more careful inspection.","lastModifiedDate":"2021-08-01"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"Let’s try removing references to `Address` in `EditPersonDescriptor`.","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"1. Safe delete the field `address` in `EditPersonDescriptor`.","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"1. Select `Yes` when prompted to remove getters and setters.","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"1. Select `View Usages` again.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" ![UnsafeDeleteOnField](../images/remove/UnsafeDeleteOnField.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"1. Remove the usages of `address` and select `Do refactor` when you are done.","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" **Tip:** Removing usages may result in errors. Exercise discretion and fix them. For example, removing the `address` field from the `Person` class will require you to modify its constructor.","lastModifiedDate":"2023-09-12"},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"1. Repeat the steps for the remaining usages of `Address`","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":"After you are done, verify that the application still works by compiling and running it again.","lastModifiedDate":"2020-05-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":"### Manual refactoring","lastModifiedDate":"2020-05-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"Unfortunately, there are usages of `Address` that IntelliJ IDEA cannot identify. You can find them by searching for instances of the word `address` in your code (`Edit` \\\u003e `Find` \\\u003e `Find in path`).","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"Places of interest to look out for would be resources used by the application. `main/resources` contains images and `fxml` files used by the application and `test/resources` contains test data. For example, there is a `$address` in each `PersonCard` that has not been removed nor identified.","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"![$address](../images/remove/$address.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"A quick look at the `PersonCard` class and its `fxml` file quickly reveals why it slipped past the automated refactoring.","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"**`PersonCard.java`**","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"@FXML","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"private Label address;","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"**`PersonCard.fxml`**","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"``` xml","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"\u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"\u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" /\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":"\u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":"After removing the `Label`, we can proceed to formally test our code. If everything went well, you should have most of your tests pass. Fix any remaining errors until the tests all pass.","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"## Tidying up","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"At this point, your application is working as intended and all your tests are passing. What’s left to do is to clean up references to `Address` in test data and documentation.","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"In `src/test/data/`, data meant for testing purposes are stored. While keeping the `address` field in the json files does not cause the tests to fail, it is not good practice to let cruft from old features accumulate.","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"**`invalidPersonAddressBook.json`:**","lastModifiedDate":"2020-05-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":"```json","lastModifiedDate":"2020-05-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":"{","lastModifiedDate":"2020-05-23"},{"lineNumber":106,"author":{"gitId":"jskimdev"},"content":" \"patients\": [ {","lastModifiedDate":"2024-03-19"},{"lineNumber":107,"author":{"gitId":"-"},"content":" \"name\": \"Person with invalid name field: Ha!ns Mu@ster\",","lastModifiedDate":"2020-05-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":" \"phone\": \"9482424\",","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":" \"email\": \"hans@example.com\",","lastModifiedDate":"2020-05-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":" \"address\": \"4th street\"","lastModifiedDate":"2020-05-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":" } ]","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":"You can go through each individual `json` file and manually remove the `address` field.","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"jskimdev":2,"-":113}},{"path":"docs/tutorials/TracingCode.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"Tutorial: Tracing code\"","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"# Tutorial: Tracing code","lastModifiedDate":"2023-09-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003e Indeed, the ratio of time spent reading versus writing is well over 10 to 1. We are constantly reading old code as part of the effort to write new code. …​\\[Therefore,\\] making it easy to read makes it easier to write.","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003e — Robert C. Martin Clean Code: A Handbook of Agile Software Craftsmanship","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"When trying to understand an unfamiliar code base, one common strategy used is to trace some representative execution path through the code base. One easy way to trace an execution path is to use a debugger to step through the code. In this tutorial, you will be using the IntelliJ IDEA’s debugger to trace the execution path of a specific user command.","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"\u003c!-- {:toc} --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"## Before we start","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"Before we jump into the code, it is useful to get an idea of the overall structure and the high-level behavior of the application. This is provided in the \u0027Architecture\u0027 section of the developer guide. In particular, the architecture diagram (reproduced below), tells us that the App consists of several components.","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"../diagrams/ArchitectureDiagram.puml\" alt\u003d\"ArchitectureDiagram\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"It also has a sequence diagram (reproduced below) that tells us how a command propagates through the App.","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"../diagrams/ArchitectureSequenceDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"Note how the diagram shows only the execution flows _between_ the main components. That is, it does not show details of the execution path *inside* each component. By hiding those details, the diagram aims to inform the reader about the overall execution path of a command without overwhelming the reader with too much details. In this tutorial, you aim to find those omitted details so that you get a more in-depth understanding of how the code works.","lastModifiedDate":"2021-07-31"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":"Before we proceed, ensure that you have done the following:","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":"1. Read the [*Architecture* section of the DG](../DeveloperGuide.md#architecture)","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":"1. Set up the project in Intellij IDEA","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":"1. Learn basic debugging features of Intellij IDEA","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * If you are using a different IDE, we\u0027ll leave it to you to figure out the equivalent feature to use in your IDE.","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * If you are not using an IDE, we\u0027ll let you figure out how to achieve the same using your coding toolchain.","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"## Setting a breakpoint","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"As you know, the first step of debugging is to put in a breakpoint where you want the debugger to pause the execution. For example, if you are trying to understand how the App starts up, you would put a breakpoint in the first statement of the `main` method.","lastModifiedDate":"2021-07-31"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"In our case, we would want to begin the tracing at the very point where the App start processing user input (i.e., somewhere in the UI component), and then trace through how the execution proceeds through the UI component. However, the execution path through a GUI is often somewhat obscure due to various *event-driven mechanisms* used by GUI frameworks, which happens to be the case here too. Therefore, let us put the breakpoint where the `UI` transfers control to the `Logic` component.","lastModifiedDate":"2021-07-31"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"../diagrams/ArchitectureSequenceDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":46,"author":{"gitId":"-"},"content":"According to the sequence diagram you saw earlier (and repeated above for reference), the `UI` component yields control to the `Logic` component through a method named `execute`. Searching through the code base for an `execute()` method that belongs to the `Logic` component yields a promising candidate in `seedu.address.logic.Logic`.","lastModifiedDate":"2021-07-31"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":48,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"../images/tracing/searchResultsForExecuteMethod.png\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":50,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":52,"author":{"gitId":"-"},"content":"**Intellij Tip:** The [\u0027**Search Everywhere**\u0027 feature](https://www.jetbrains.com/help/idea/searching-everywhere.html) can be used here. In particular, the \u0027**Find Symbol**\u0027 (\u0027Symbol\u0027 here refers to methods, variables, classes etc.) variant of that feature is quite useful here as we are looking for a _method_ named `execute`, not simply the text `execute`.","lastModifiedDate":"2023-09-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":55,"author":{"gitId":"-"},"content":"A quick look at the `seedu.address.logic.Logic` (an extract given below) confirms that this indeed might be what we’re looking for.","lastModifiedDate":"2021-07-31"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":57,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2021-07-31"},{"lineNumber":58,"author":{"gitId":"-"},"content":"public interface Logic {","lastModifiedDate":"2021-07-31"},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2021-07-31"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2021-07-31"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * @param commandText The command as entered by the user.","lastModifiedDate":"2021-07-31"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * @return the result of the command execution.","lastModifiedDate":"2021-07-31"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2021-07-31"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * @throws ParseException If an error occurs during parsing.","lastModifiedDate":"2021-07-31"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2021-07-31"},{"lineNumber":66,"author":{"gitId":"-"},"content":" CommandResult execute(String commandText) throws CommandException, ParseException;","lastModifiedDate":"2021-07-31"},{"lineNumber":67,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2021-07-31"},{"lineNumber":68,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-07-31"},{"lineNumber":69,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2021-07-31"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":71,"author":{"gitId":"-"},"content":"But apparently, this is an interface, not a concrete implementation.","lastModifiedDate":"2021-07-31"},{"lineNumber":72,"author":{"gitId":"-"},"content":"That should be fine because the [Architecture section of the Developer Guide](../DeveloperGuide.html#architecture) tells us that components interact through interfaces. Here\u0027s the relevant diagram:","lastModifiedDate":"2021-07-31"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":74,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"../diagrams/ComponentManagers.puml\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":76,"author":{"gitId":"-"},"content":"Next, let\u0027s find out which statement(s) in the `UI` code is calling this method, thus transferring control from the `UI` to the `Logic`.","lastModifiedDate":"2021-07-31"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":78,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":80,"author":{"gitId":"-"},"content":"**Intellij Tip:** The [\u0027**Find Usages**\u0027 feature](https://www.jetbrains.com/help/idea/find-highlight-usages.html#find-usages) can find from which parts of the code a class/method/variable is being used.","lastModifiedDate":"2023-09-12"},{"lineNumber":81,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"![`Find Usages` tool window. `Edit` \\\u003e `Find` \\\u003e `Find Usages`.](../images/tracing/FindUsages.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"Bingo\\! `MainWindow#executeCommand()` seems to be exactly what we’re looking for\\!","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"Now let’s set the breakpoint. First, double-click the item to reach the corresponding code. Once there, click on the left gutter to set a breakpoint, as shown below.","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" ![LeftGutter](../images/tracing/LeftGutter.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":"## Tracing the execution path","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":"Recall from the User Guide that the `edit` command has the format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAG]…​` For this tutorial we will be issuing the command `edit 1 n/Alice Yeoh`.","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"**Tip:** Over the course of the debugging session, you will encounter every major component in the application. Try to keep track of what happens inside the component and where the execution transfers to another component.","lastModifiedDate":"2023-09-12"},{"lineNumber":97,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"1. To start the debugging session, simply `Run` \\\u003e `Debug Main`","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"1. When the GUI appears, enter `edit 1 n/Alice Yeoh` into the command box and press `Enter`.","lastModifiedDate":"2021-07-31"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":"1. The Debugger tool window should show up and show something like this:\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":104,"author":{"gitId":"-"},"content":" ![DebuggerStep1](../images/tracing/DebuggerStep1.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":"1. Use the _Show execution point_ feature to jump to the line of code that we stopped at:\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":107,"author":{"gitId":"-"},"content":" ![ShowExecutionPoint](../images/tracing/ShowExecutionPoint.png)\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":108,"author":{"gitId":"-"},"content":" `CommandResult commandResult \u003d logic.execute(commandText);` is the line that you end up at (i.e., the place where we put the breakpoint).","lastModifiedDate":"2021-07-31"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":"1. We are interested in the `logic.execute(commandText)` portion of that line so let’s _Step in_ into that method call:\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":111,"author":{"gitId":"-"},"content":" ![StepInto](../images/tracing/StepInto.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":"1. We end up in `LogicManager#execute()` (not `Logic#execute` -- but this is expected because we know the `execute()` method in the `Logic` interface is actually implemented by the `LogicManager` class). Let’s take a look at the body of the method. Given below is the same code, with additional explanatory comments.","lastModifiedDate":"2021-07-31"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":" **LogicManager\\#execute().**","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":" ```java","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":" public CommandResult execute(String commandText)","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":" throws CommandException, ParseException {","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":" //Logging, safe to ignore","lastModifiedDate":"2020-05-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":" logger.info(\"----------------[USER COMMAND][\" + commandText + \"]\");","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":" CommandResult commandResult;","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":" //Parse user input from String to a Command","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":" Command command \u003d addressBookParser.parseCommand(commandText);","lastModifiedDate":"2020-05-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":" //Executes the Command and stores the result","lastModifiedDate":"2020-05-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":" commandResult \u003d command.execute(model);","lastModifiedDate":"2020-05-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2020-05-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":" //We can deduce that the previous line of code modifies model in some way","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":" // since it\u0027s being stored here.","lastModifiedDate":"2020-05-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":" storage.saveAddressBook(model.getAddressBook());","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2020-05-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":" throw new CommandException(FILE_OPS_ERROR_MESSAGE + ioe, ioe);","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":"1. `LogicManager#execute()` appears to delegate most of the heavy lifting to other components. Let’s take a closer look at each one.","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":"1. _Step over_ the logging code since it is of no interest to us now.","lastModifiedDate":"2021-07-31"},{"lineNumber":146,"author":{"gitId":"-"},"content":" ![StepOver](../images/tracing/StepOver.png)","lastModifiedDate":"2021-07-31"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":"1. _Step into_ the line where user input in parsed from a String to a Command, which should bring you to the `AddressBookParser#parseCommand()` method (partial code given below):","lastModifiedDate":"2021-07-31"},{"lineNumber":149,"author":{"gitId":"-"},"content":" ```java","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"1. _Step over_ the statements in that method until you reach the `switch` statement. The \u0027Variables\u0027 window now shows the value of both `commandWord` and `arguments`:\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":158,"author":{"gitId":"-"},"content":" ![Variables](../images/tracing/Variables.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"1. We see that the value of `commandWord` is now `edit` but `arguments` is still not processed in any meaningful way.","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":"1. Stepping through the `switch` block, we end up at a call to `EditCommandParser().parse()` as expected (because the command we typed is an edit command).","lastModifiedDate":"2021-07-31"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":" ```java","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":"1. Let’s see what `EditCommandParser#parse()` does by stepping into it. You might have to click the \u0027step into\u0027 button multiple times here because there are two method calls in that statement: `EditCommandParser()` and `parse()`.","lastModifiedDate":"2021-07-31"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":" \u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":175,"author":{"gitId":"-"},"content":" **Intellij Tip:** Sometimes, you might end up stepping into functions that are not of interest. Simply use the `step out` button to get out of them!","lastModifiedDate":"2023-09-12"},{"lineNumber":176,"author":{"gitId":"-"},"content":" \u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":"1. Stepping through the method shows that it calls `ArgumentTokenizer#tokenize()` and `ParserUtil#parseIndex()` to obtain the arguments and index required.","lastModifiedDate":"2021-07-31"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":180,"author":{"gitId":"-"},"content":"1. The rest of the method seems to exhaustively check for the existence of each possible parameter of the `edit` command and store any possible changes in an `EditPersonDescriptor`. Recall that we can verify the contents of `editPersonDesciptor` through the \u0027Variables\u0027 window.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":181,"author":{"gitId":"-"},"content":" ![EditCommand](../images/tracing/EditCommand.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"1. As you just traced through some code involved in parsing a command, you can take a look at this class diagram to see where the various parsing-related classes you encountered fit into the design of the `Logic` component.","lastModifiedDate":"2021-07-31"},{"lineNumber":184,"author":{"gitId":"-"},"content":" \u003cpuml src\u003d\"../diagrams/ParserClasses.puml\" width\u003d\"600\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":186,"author":{"gitId":"-"},"content":"1. Let’s continue stepping through until we return to `LogicManager#execute()`.","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":" The sequence diagram below shows the details of the execution path through the Logic component. Does the execution path you traced in the code so far match the diagram?\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":189,"author":{"gitId":"-"},"content":" \u003cpuml src\u003d\"../diagrams/tracing/LogicSequenceDiagram.puml\" alt\u003d\"Tracing an `edit` command through the Logic component\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":"1. Now, step over until you read the statement that calls the `execute()` method of the `EditCommand` object received, and step into that `execute()` method (partial code given below):","lastModifiedDate":"2021-07-31"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":" **`EditCommand#execute()`:**","lastModifiedDate":"2021-07-31"},{"lineNumber":194,"author":{"gitId":"-"},"content":" ```java","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-05-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2020-05-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2020-05-23"},{"lineNumber":198,"author":{"gitId":"jskimdev"},"content":" Person patientToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-03-19"},{"lineNumber":199,"author":{"gitId":"jskimdev"},"content":" Person editedPatient \u003d createEditedPerson(patientToEdit, editPersonDescriptor);","lastModifiedDate":"2024-03-19"},{"lineNumber":200,"author":{"gitId":"jskimdev"},"content":" if (!patientToEdit.isSamePerson(editedPatient) \u0026\u0026 model.hasPerson(editedPatient)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":201,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"jskimdev"},"content":" model.setPerson(patientToEdit, editedPatient);","lastModifiedDate":"2024-03-19"},{"lineNumber":204,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"jskimdev"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, editedPatient));","lastModifiedDate":"2024-03-19"},{"lineNumber":206,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-23"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":209,"author":{"gitId":"-"},"content":"1. As suspected, `command#execute()` does indeed make changes to the `model` object. Specifically,","lastModifiedDate":"2021-07-31"},{"lineNumber":210,"author":{"gitId":"jskimdev"},"content":" * it uses the `setPerson()` method (defined in the interface `Model` and implemented in `ModelManager` as per the usual pattern) to update the patient data.","lastModifiedDate":"2024-03-19"},{"lineNumber":211,"author":{"gitId":"jskimdev"},"content":" * it uses the `updateFilteredPersonList` method to ask the `Model` to populate the \u0027filtered list\u0027 with _all_ patients.\u003cbr\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":212,"author":{"gitId":"jskimdev"},"content":" FYI, The \u0027filtered list\u0027 is the list of patients resulting from the most recent operation that will be shown to the user immediately after. For the `edit` command, we populate it with all the patients so that the user can see the edited patient along with all other patients. If this was a `find` command, we would be setting that list to contain the search results instead.\u003cbr\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":213,"author":{"gitId":"jskimdev"},"content":" To provide some context, given below is the class diagram of the `Model` component. See if you can figure out where the \u0027filtered list\u0027 of patients is being tracked.","lastModifiedDate":"2024-03-19"},{"lineNumber":214,"author":{"gitId":"-"},"content":" \u003cpuml src\u003d\"../diagrams/ModelClassDiagram.puml\" width\u003d\"450\" /\u003e\u003cbr\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":215,"author":{"gitId":"-"},"content":" * :bulb: This may be a good time to read through the [`Model` component section of the DG](../DeveloperGuide.html#model-component)","lastModifiedDate":"2021-07-31"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":217,"author":{"gitId":"-"},"content":"1. As you step through the rest of the statements in the `EditCommand#execute()` method, you\u0027ll see that it creates a `CommandResult` object (containing information about the result of the execution) and returns it.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":218,"author":{"gitId":"-"},"content":" Advancing the debugger by one more step should take you back to the middle of the `LogicManager#execute()` method.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":220,"author":{"gitId":"-"},"content":"1. Given that you have already seen quite a few classes in the `Logic` component in action, see if you can identify in this partial class diagram some of the classes you\u0027ve encountered so far, and see how they fit into the class structure of the `Logic` component:","lastModifiedDate":"2021-07-31"},{"lineNumber":221,"author":{"gitId":"-"},"content":" \u003cpuml src\u003d\"../diagrams/LogicClassDiagram.puml\" width\u003d\"550\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":223,"author":{"gitId":"-"},"content":" * :bulb: This may be a good time to read through the [`Logic` component section of the DG](../DeveloperGuide.html#logic-component)","lastModifiedDate":"2021-07-31"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":"1. Similar to before, you can step over/into statements in the `LogicManager#execute()` method to examine how the control is transferred to the `Storage` component and what happens inside that component.","lastModifiedDate":"2021-07-31"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":227,"author":{"gitId":"-"},"content":" \u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":229,"author":{"gitId":"-"},"content":" **Intellij Tip:** When trying to step into a statement such as `storage.saveAddressBook(model.getAddressBook())` which contains multiple method calls, Intellij will let you choose (by clicking) which one you want to step into.","lastModifiedDate":"2023-09-12"},{"lineNumber":230,"author":{"gitId":"-"},"content":" \u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":"1. As you step through the code inside the `Storage` component, you will eventually arrive at the `JsonAddressBook#saveAddressBook()` method which calls the `JsonSerializableAddressBook` constructor, to create an object that can be _serialized_ (i.e., stored in storage medium) in JSON format. That constructor is given below (with added line breaks for easier readability):","lastModifiedDate":"2021-07-31"},{"lineNumber":233,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":234,"author":{"gitId":"-"},"content":" **`JsonSerializableAddressBook` constructor:**","lastModifiedDate":"2021-07-31"},{"lineNumber":235,"author":{"gitId":"-"},"content":" ```java","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":" * Converts a given {@code ReadOnlyAddressBook} into this class for Jackson use.","lastModifiedDate":"2020-05-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":" * @param source future changes to this will not affect the created","lastModifiedDate":"2020-05-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":" * {@code JsonSerializableAddressBook}.","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":" public JsonSerializableAddressBook(ReadOnlyAddressBook source) {","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"jskimdev"},"content":" patients.addAll(","lastModifiedDate":"2024-03-19"},{"lineNumber":244,"author":{"gitId":"-"},"content":" source.getPersonList()","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":" .stream()","lastModifiedDate":"2020-05-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":" .map(JsonAdaptedPerson::new)","lastModifiedDate":"2020-05-23"},{"lineNumber":247,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2020-05-23"},{"lineNumber":248,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":249,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-23"},{"lineNumber":250,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":"1. It appears that a `JsonAdaptedPerson` is created for each `Person` and then added to the `JsonSerializableAddressBook`.","lastModifiedDate":"2020-05-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":" This is because regular Java objects need to go through an _adaptation_ for them to be suitable to be saved in JSON format.","lastModifiedDate":"2021-07-31"},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":254,"author":{"gitId":"-"},"content":"1. While you are stepping through the classes in the `Storage` component, here is the component\u0027s class diagram to help you understand how those classes fit into the structure of the component.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":255,"author":{"gitId":"-"},"content":" \u003cpuml src\u003d\"../diagrams/StorageClassDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":256,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":257,"author":{"gitId":"-"},"content":" * :bulb: This may be a good time to read through the [`Storage` component section of the DG](../DeveloperGuide.html#storage-component)","lastModifiedDate":"2021-07-31"},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":259,"author":{"gitId":"-"},"content":"1. We can continue to step through until you reach the end of the `LogicManager#execute()` method and return to the `MainWindow#executeCommand()` method (the place where we put the original breakpoint).","lastModifiedDate":"2021-07-31"},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":"1. Stepping into `resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser());`, we end up in:","lastModifiedDate":"2021-07-31"},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":" **`ResultDisplay#setFeedbackToUser()`**","lastModifiedDate":"2021-07-31"},{"lineNumber":264,"author":{"gitId":"-"},"content":" ```java","lastModifiedDate":"2020-05-23"},{"lineNumber":265,"author":{"gitId":"-"},"content":" public void setFeedbackToUser(String feedbackToUser) {","lastModifiedDate":"2020-05-23"},{"lineNumber":266,"author":{"gitId":"-"},"content":" requireNonNull(feedbackToUser);","lastModifiedDate":"2020-05-23"},{"lineNumber":267,"author":{"gitId":"-"},"content":" resultDisplay.setText(feedbackToUser);","lastModifiedDate":"2020-05-23"},{"lineNumber":268,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":269,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-23"},{"lineNumber":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":271,"author":{"gitId":"-"},"content":"1. Finally, you can step through until you reach the end of`MainWindow#executeCommand()`.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":272,"author":{"gitId":"-"},"content":" :bulb: This may be a good time to read through the [`UI` component section of the DG](../DeveloperGuide.html#ui-component)","lastModifiedDate":"2021-07-31"},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":275,"author":{"gitId":"-"},"content":"## Conclusion","lastModifiedDate":"2020-05-23"},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":277,"author":{"gitId":"-"},"content":"In this tutorial, we traced a valid edit command from raw user input to the result being displayed to the user. From this tutorial, you learned more about how the various components work together to produce a response to a user command.","lastModifiedDate":"2021-07-31"},{"lineNumber":278,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":279,"author":{"gitId":"-"},"content":"Here are some quick questions you can try to answer based on your execution path tracing. In some cases, you can do further tracing for the given commands to find exactly what happens.","lastModifiedDate":"2021-07-31"},{"lineNumber":280,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":281,"author":{"gitId":"-"},"content":"1. In this tutorial, we traced the \"happy path\" (i.e., no errors). What","lastModifiedDate":"2020-05-23"},{"lineNumber":282,"author":{"gitId":"-"},"content":" do you think will happen if we traced the following commands","lastModifiedDate":"2020-05-23"},{"lineNumber":283,"author":{"gitId":"-"},"content":" instead? What exceptions do you think will be thrown (if any), where","lastModifiedDate":"2020-05-23"},{"lineNumber":284,"author":{"gitId":"-"},"content":" will the exceptions be thrown and where will they be handled?","lastModifiedDate":"2020-05-23"},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":286,"author":{"gitId":"-"},"content":" 1. `redit 1 n/Alice Yu`","lastModifiedDate":"2020-05-23"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":288,"author":{"gitId":"-"},"content":" 2. `edit 0 n/Alice Yu`","lastModifiedDate":"2020-05-23"},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":290,"author":{"gitId":"-"},"content":" 3. `edit 1 n/Alex Yeoh`","lastModifiedDate":"2020-05-23"},{"lineNumber":291,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":292,"author":{"gitId":"-"},"content":" 4. `edit 1`","lastModifiedDate":"2020-05-23"},{"lineNumber":293,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":294,"author":{"gitId":"-"},"content":" 5. `edit 1 n/アリス ユー`","lastModifiedDate":"2020-05-23"},{"lineNumber":295,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":296,"author":{"gitId":"-"},"content":" 6. `edit 1 t/one t/two t/three t/one`","lastModifiedDate":"2020-05-23"},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":298,"author":{"gitId":"-"},"content":"2. What components will you have to modify to perform the following","lastModifiedDate":"2020-05-23"},{"lineNumber":299,"author":{"gitId":"-"},"content":" enhancements to the application?","lastModifiedDate":"2020-05-23"},{"lineNumber":300,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":301,"author":{"gitId":"-"},"content":" 1. Make command words case-insensitive","lastModifiedDate":"2020-05-23"},{"lineNumber":302,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":303,"author":{"gitId":"-"},"content":" 2. Allow `delete` to remove more than one index at a time","lastModifiedDate":"2020-05-23"},{"lineNumber":304,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":305,"author":{"gitId":"-"},"content":" 3. Save the address book in the CSV format instead","lastModifiedDate":"2020-05-23"},{"lineNumber":306,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":307,"author":{"gitId":"-"},"content":" 4. Add a new command","lastModifiedDate":"2020-05-23"},{"lineNumber":308,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":309,"author":{"gitId":"-"},"content":" 5. Add a new field to `Person`","lastModifiedDate":"2020-05-23"},{"lineNumber":310,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":311,"author":{"gitId":"-"},"content":" 6. Add a new entity to the address book","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"jskimdev":10,"-":301}},{"path":"src/main/java/seedu/address/logic/Logic.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-03"},{"lineNumber":11,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * API of the Logic component","lastModifiedDate":"2016-09-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public interface Logic {","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2016-09-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * @param commandText The command as entered by the user.","lastModifiedDate":"2016-09-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * @return the result of the command execution.","lastModifiedDate":"2016-09-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2017-02-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * @throws ParseException If an error occurs during parsing.","lastModifiedDate":"2017-03-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" CommandResult execute(String commandText) throws CommandException, ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Returns the AddressBook.","lastModifiedDate":"2018-12-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * @see seedu.address.model.Model#getAddressBook()","lastModifiedDate":"2018-12-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2018-12-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":" /** Returns an unmodifiable view of the filtered list of persons */","lastModifiedDate":"2017-09-01"},{"lineNumber":34,"author":{"gitId":"jskimdev"},"content":" ObservableList\u003cPatient\u003e getFilteredPersonList();","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-26"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Set the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"jskimdev":2,"-":48}},{"path":"src/main/java/seedu/address/logic/LogicManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2016-09-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.AddressBookParser;","lastModifiedDate":"2017-07-07"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-03"},{"lineNumber":18,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.storage.Storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * The main LogicManager of the app.","lastModifiedDate":"2016-09-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class LogicManager implements Logic {","lastModifiedDate":"2018-12-09"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_ERROR_FORMAT \u003d \"Could not save data due to the following error: %s\";","lastModifiedDate":"2023-06-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_PERMISSION_ERROR_FORMAT \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \"Could not save data to file %s due to insufficient permissions to write to the file or the folder.\";","lastModifiedDate":"2023-06-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(LogicManager.class);","lastModifiedDate":"2016-09-29"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final Model model;","lastModifiedDate":"2016-09-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final Storage storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final AddressBookParser addressBookParser;","lastModifiedDate":"2017-07-07"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Constructs a {@code LogicManager} with the given {@code Model} and {@code Storage}.","lastModifiedDate":"2020-05-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public LogicManager(Model model, Storage storage) {","lastModifiedDate":"2018-12-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.model \u003d model;","lastModifiedDate":"2016-09-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.storage \u003d storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":" addressBookParser \u003d new AddressBookParser();","lastModifiedDate":"2018-01-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public CommandResult execute(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":47,"author":{"gitId":"-"},"content":" logger.info(\"----------------[USER COMMAND][\" + commandText + \"]\");","lastModifiedDate":"2016-09-29"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":" CommandResult commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":" Command command \u003d addressBookParser.parseCommand(commandText);","lastModifiedDate":"2017-07-07"},{"lineNumber":51,"author":{"gitId":"-"},"content":" commandResult \u003d command.execute(model);","lastModifiedDate":"2019-01-25"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":" storage.saveAddressBook(model.getAddressBook());","lastModifiedDate":"2018-12-09"},{"lineNumber":55,"author":{"gitId":"-"},"content":" } catch (AccessDeniedException e) {","lastModifiedDate":"2023-06-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_PERMISSION_ERROR_FORMAT, e.getMessage()), e);","lastModifiedDate":"2023-06-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2018-12-09"},{"lineNumber":58,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_ERROR_FORMAT, ioe.getMessage()), ioe);","lastModifiedDate":"2023-06-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-03"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2018-12-03"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return model.getAddressBook();","lastModifiedDate":"2018-12-03"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-03"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":70,"author":{"gitId":"jskimdev"},"content":" public ObservableList\u003cPatient\u003e getFilteredPersonList() {","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return model.getFilteredPersonList();","lastModifiedDate":"2016-09-25"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-29"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return model.getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":" return model.getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":" model.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"jskimdev":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"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-07-14"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-07-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2023-07-14"},{"lineNumber":8,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Container for user visible messages.","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class Messages {","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2016-09-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"jskimdev"},"content":" public static final String MESSAGE_INVALID_PERSON_DISPLAYED_INDEX \u003d \"The patient index provided is invalid\";","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String MESSAGE_PERSONS_LISTED_OVERVIEW \u003d \"%1$d persons listed!\";","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2023-07-14"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-07-14"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2023-07-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2023-07-14"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":28,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":29,"author":{"gitId":"-"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-07-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":31,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23"},{"lineNumber":35,"author":{"gitId":"jskimdev"},"content":" * Formats the {@code patient} for display to the user.","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23"},{"lineNumber":37,"author":{"gitId":"jskimdev"},"content":" public static String format(Patient patient) {","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23"},{"lineNumber":39,"author":{"gitId":"jskimdev"},"content":" builder.append(patient.getName())","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":" .append(\"; Phone: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"jskimdev"},"content":" .append(patient.getPhone())","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":" .append(\"; Email: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"jskimdev"},"content":" .append(patient.getEmail())","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"-"},"content":" .append(\"; Address: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"jskimdev"},"content":" .append(patient.getAddress())","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"jskimdev"},"content":" .append(\"; Date Of birth: \")","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"Vision-2000"},"content":" .append(patient.getDateOfBirth())","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"Vision-2000"},"content":" .append(\"; Sex: \")","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"Vision-2000"},"content":" .append(patient.getSex());","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"jskimdev":9,"-":41,"Vision-2000":3}},{"path":"src/main/java/seedu/address/logic/commands/AddCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DATEOFBIRTH;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SEX;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":15,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"jskimdev"},"content":" * Adds a patient to the address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"add\";","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"jskimdev"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a patient to the address book. \"","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2017-06-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2017-06-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2017-05-09"},{"lineNumber":28,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2017-05-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"ADDRESS \"","lastModifiedDate":"2017-05-09"},{"lineNumber":30,"author":{"gitId":"jskimdev"},"content":" + PREFIX_DATEOFBIRTH + \"DATE OF BIRTH \"","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"jskimdev"},"content":" + PREFIX_SEX + \"Sex \\n\"","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2017-06-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2017-05-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"311, Clementi Ave 2, #02-25 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":37,"author":{"gitId":"jskimdev"},"content":" + PREFIX_DATEOFBIRTH + \"25/2/2024 \"","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"jskimdev"},"content":" + PREFIX_SEX + \"Male\";","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"jskimdev"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New patient added: %1$s\";","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"jskimdev"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This patient already exists in the address book\";","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"jskimdev"},"content":" private final Patient toAdd;","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":46,"author":{"gitId":"jskimdev"},"content":" * Creates an AddCommand to add the specified {@code Patient}","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":48,"author":{"gitId":"jskimdev"},"content":" public AddCommand(Patient patient) {","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"jskimdev"},"content":" requireNonNull(patient);","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"jskimdev"},"content":" toAdd \u003d patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":55,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":57,"author":{"gitId":"-"},"content":" if (model.hasPerson(toAdd)) {","lastModifiedDate":"2018-08-07"},{"lineNumber":58,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":61,"author":{"gitId":"-"},"content":" model.addPerson(toAdd);","lastModifiedDate":"2016-09-25"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2019-02-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-22"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22"},{"lineNumber":67,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" if (!(other instanceof AddCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" AddCommand otherAddCommand \u003d (AddCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2023-07-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"jskimdev":16,"-":70}},{"path":"src/main/java/seedu/address/logic/commands/DeleteAllCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"jeong-jaeho"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":8,"author":{"gitId":"jeong-jaeho"},"content":" * Deletes all entries in the address book.","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"jeong-jaeho"},"content":"public class DeleteAllCommand extends Command {","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"jeong-jaeho"},"content":" public static final String COMMAND_WORD \u003d \"delete-all\";","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"jeong-jaeho"},"content":" public static final String CONFIRMATION \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"jeong-jaeho"},"content":" \"Are you sure you want to delete all? This action is irreversible. If yes, enter ‘delete-all-f’. \"","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"jeong-jaeho"},"content":" + \"If not, simply enter \u0027no\u0027.\";","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"jeong-jaeho"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"jeong-jaeho"},"content":" * Executes the command and returns the result message.","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"jeong-jaeho"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"jeong-jaeho"},"content":" * @param model {@code Model} which the command should operate on.","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"jeong-jaeho"},"content":" * @return feedback message of the operation result for display","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"jeong-jaeho"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15"},{"lineNumber":26,"author":{"gitId":"jeong-jaeho"},"content":" return new CommandResult(CONFIRMATION);","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"-":14,"jeong-jaeho":14}},{"path":"src/main/java/seedu/address/logic/commands/DeleteByIndexCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-09-01"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":12,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"jskimdev"},"content":" * Deletes a patient identified using it\u0027s displayed index from the address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"jeong-jaeho"},"content":"public class DeleteByIndexCommand extends Command {","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"delete\";","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"jskimdev"},"content":" + \": Deletes the patient identified by the index number used in the displayed patient list.\\n\"","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer)\\n\"","lastModifiedDate":"2016-09-29"},{"lineNumber":24,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"jskimdev"},"content":" public static final String MESSAGE_DELETE_PERSON_SUCCESS \u003d \"Deleted Patient: %1$s\";","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final Index targetIndex;","lastModifiedDate":"2017-06-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"jeong-jaeho"},"content":" public DeleteByIndexCommand(Index targetIndex) {","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2016-09-22"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":36,"author":{"gitId":"jskimdev"},"content":" List\u003cPatient\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19"},{"lineNumber":39,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":42,"author":{"gitId":"jskimdev"},"content":" Patient patientToDelete \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"jskimdev"},"content":" model.deletePerson(patientToDelete);","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"jskimdev"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_PERSON_SUCCESS, Messages.format(patientToDelete)));","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":54,"author":{"gitId":"jeong-jaeho"},"content":" if (!(other instanceof DeleteByIndexCommand)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"jeong-jaeho"},"content":" DeleteByIndexCommand otherDeleteByIndexCommand \u003d (DeleteByIndexCommand) other;","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"jeong-jaeho"},"content":" return targetIndex.equals(otherDeleteByIndexCommand.targetIndex);","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2019-02-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"jskimdev":8,"-":55,"jeong-jaeho":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"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DATEOFBIRTH;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SEX;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2016-12-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":22,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Address;","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.DateOfBirth;","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Email;","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Name;","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Phone;","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Sex;","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26"},{"lineNumber":31,"author":{"gitId":"jskimdev"},"content":" * Edits the details of an existing patient in the address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2016-12-26"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":37,"author":{"gitId":"jskimdev"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the patient identified \"","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"jskimdev"},"content":" + \"by the index number used in the displayed patient list. \"","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26"},{"lineNumber":40,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2017-06-06"},{"lineNumber":41,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06"},{"lineNumber":42,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":44,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":45,"author":{"gitId":"jskimdev"},"content":" + \"[\" + PREFIX_DATEOFBIRTH + \"DATEOFBIRTH] \"","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"jskimdev"},"content":" + \"[\" + PREFIX_SEX + \"SEX] \\n\"","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"91234567 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2017-05-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":51,"author":{"gitId":"jskimdev"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Patient: %1$s\";","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2016-12-26"},{"lineNumber":53,"author":{"gitId":"jskimdev"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This patient already exists in the address book.\";","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2017-05-25"},{"lineNumber":56,"author":{"gitId":"jskimdev"},"content":" private final EditPatientDescriptor editPatientDescriptor;","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":59,"author":{"gitId":"jskimdev"},"content":" * @param index of the patient in the filtered patient list to edit","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"jskimdev"},"content":" * @param editPatientDescriptor details to edit the patient with","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":62,"author":{"gitId":"jskimdev"},"content":" public EditCommand(Index index, EditPatientDescriptor editPatientDescriptor) {","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25"},{"lineNumber":64,"author":{"gitId":"jskimdev"},"content":" requireNonNull(editPatientDescriptor);","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25"},{"lineNumber":67,"author":{"gitId":"jskimdev"},"content":" this.editPatientDescriptor \u003d new EditPatientDescriptor(editPatientDescriptor);","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":72,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":73,"author":{"gitId":"jskimdev"},"content":" List\u003cPatient\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":79,"author":{"gitId":"jskimdev"},"content":" Patient patientToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-03-19"},{"lineNumber":80,"author":{"gitId":"jskimdev"},"content":" Patient editedPatient \u003d createEditedPerson(patientToEdit, editPatientDescriptor);","lastModifiedDate":"2024-03-19"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":82,"author":{"gitId":"jskimdev"},"content":" if (!patientToEdit.isSamePatient(editedPatient) \u0026\u0026 model.hasPerson(editedPatient)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":86,"author":{"gitId":"jskimdev"},"content":" model.setPerson(patientToEdit, editedPatient);","lastModifiedDate":"2024-03-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":88,"author":{"gitId":"jskimdev"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPatient)));","lastModifiedDate":"2024-03-19"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":91,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":92,"author":{"gitId":"jskimdev"},"content":" * Creates and returns a {@code Patient} with the details of {@code patientToEdit}","lastModifiedDate":"2024-03-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2016-12-26"},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":95,"author":{"gitId":"jskimdev"},"content":" private static Patient createEditedPerson(Patient patientToEdit, EditPatientDescriptor editPatientDescriptor) {","lastModifiedDate":"2024-03-19"},{"lineNumber":96,"author":{"gitId":"jskimdev"},"content":" assert patientToEdit !\u003d null;","lastModifiedDate":"2024-03-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":98,"author":{"gitId":"jskimdev"},"content":" Name updatedName \u003d editPatientDescriptor.getName().orElse(patientToEdit.getName());","lastModifiedDate":"2024-03-19"},{"lineNumber":99,"author":{"gitId":"jskimdev"},"content":" Phone updatedPhone \u003d editPatientDescriptor.getPhone().orElse(patientToEdit.getPhone());","lastModifiedDate":"2024-03-19"},{"lineNumber":100,"author":{"gitId":"jskimdev"},"content":" Email updatedEmail \u003d editPatientDescriptor.getEmail().orElse(patientToEdit.getEmail());","lastModifiedDate":"2024-03-19"},{"lineNumber":101,"author":{"gitId":"jskimdev"},"content":" Address updatedAddress \u003d editPatientDescriptor.getAddress().orElse(patientToEdit.getAddress());","lastModifiedDate":"2024-03-19"},{"lineNumber":102,"author":{"gitId":"jskimdev"},"content":" DateOfBirth updatedDateOfBirth \u003d editPatientDescriptor.getDateOfBirth().orElse(patientToEdit.getDateOfBirth());","lastModifiedDate":"2024-03-19"},{"lineNumber":103,"author":{"gitId":"jskimdev"},"content":" Sex updatedSex \u003d editPatientDescriptor.getSex().orElse(patientToEdit.getSex());","lastModifiedDate":"2024-03-19"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":105,"author":{"gitId":"jskimdev"},"content":" return new Patient(updatedName, updatedPhone, updatedEmail, updatedAddress, updatedDateOfBirth, updatedSex);","lastModifiedDate":"2024-03-19"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08"},{"lineNumber":109,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08"},{"lineNumber":110,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08"},{"lineNumber":111,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13"},{"lineNumber":121,"author":{"gitId":"jskimdev"},"content":" \u0026\u0026 editPatientDescriptor.equals(otherEditCommand.editPatientDescriptor);","lastModifiedDate":"2024-03-19"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23"},{"lineNumber":128,"author":{"gitId":"jskimdev"},"content":" .add(\"editPersonDescriptor\", editPatientDescriptor)","lastModifiedDate":"2024-03-19"},{"lineNumber":129,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":133,"author":{"gitId":"jskimdev"},"content":" * Stores the details to edit the patient with. Each non-empty field value will replace the","lastModifiedDate":"2024-03-19"},{"lineNumber":134,"author":{"gitId":"jskimdev"},"content":" * corresponding field value of the patient.","lastModifiedDate":"2024-03-19"},{"lineNumber":135,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":136,"author":{"gitId":"jskimdev"},"content":" public static class EditPatientDescriptor {","lastModifiedDate":"2024-03-19"},{"lineNumber":137,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21"},{"lineNumber":138,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":139,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21"},{"lineNumber":140,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-06-21"},{"lineNumber":141,"author":{"gitId":"jskimdev"},"content":" private DateOfBirth dateOfBirth;","lastModifiedDate":"2024-03-17"},{"lineNumber":142,"author":{"gitId":"jskimdev"},"content":" private Sex sex;","lastModifiedDate":"2024-03-18"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":144,"author":{"gitId":"jskimdev"},"content":" public EditPatientDescriptor() {}","lastModifiedDate":"2024-03-19"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":146,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":147,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11"},{"lineNumber":148,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":149,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":150,"author":{"gitId":"jskimdev"},"content":" public EditPatientDescriptor(EditPatientDescriptor toCopy) {","lastModifiedDate":"2024-03-19"},{"lineNumber":151,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15"},{"lineNumber":152,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15"},{"lineNumber":153,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15"},{"lineNumber":154,"author":{"gitId":"-"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2018-01-15"},{"lineNumber":155,"author":{"gitId":"jskimdev"},"content":" setDateOfBirth(toCopy.dateOfBirth);","lastModifiedDate":"2024-03-17"},{"lineNumber":156,"author":{"gitId":"jskimdev"},"content":" setSex(toCopy.sex);","lastModifiedDate":"2024-03-18"},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":159,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":160,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26"},{"lineNumber":161,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":162,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26"},{"lineNumber":163,"author":{"gitId":"Vision-2000"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, address, dateOfBirth, sex);","lastModifiedDate":"2024-03-21"},{"lineNumber":164,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":166,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21"},{"lineNumber":167,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21"},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":170,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26"},{"lineNumber":171,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21"},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":174,"author":{"gitId":"-"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2017-06-21"},{"lineNumber":175,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":178,"author":{"gitId":"-"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26"},{"lineNumber":179,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2017-06-21"},{"lineNumber":180,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":182,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2017-06-21"},{"lineNumber":183,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-06-21"},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":186,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26"},{"lineNumber":187,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21"},{"lineNumber":188,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":190,"author":{"gitId":"-"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2017-06-21"},{"lineNumber":191,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-06-21"},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":194,"author":{"gitId":"-"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2016-12-26"},{"lineNumber":195,"author":{"gitId":"-"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2017-06-21"},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":198,"author":{"gitId":"jskimdev"},"content":" public void setDateOfBirth(DateOfBirth dateOfBirth) {","lastModifiedDate":"2024-03-17"},{"lineNumber":199,"author":{"gitId":"jskimdev"},"content":" this.dateOfBirth \u003d dateOfBirth;","lastModifiedDate":"2024-03-17"},{"lineNumber":200,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":202,"author":{"gitId":"jskimdev"},"content":" public Optional\u003cDateOfBirth\u003e getDateOfBirth() {","lastModifiedDate":"2024-03-17"},{"lineNumber":203,"author":{"gitId":"jskimdev"},"content":" return Optional.ofNullable(dateOfBirth);","lastModifiedDate":"2024-03-17"},{"lineNumber":204,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":206,"author":{"gitId":"jskimdev"},"content":" public void setSex(Sex sex) {","lastModifiedDate":"2024-03-18"},{"lineNumber":207,"author":{"gitId":"jskimdev"},"content":" this.sex \u003d sex;","lastModifiedDate":"2024-03-18"},{"lineNumber":208,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":209,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":210,"author":{"gitId":"jskimdev"},"content":" public Optional\u003cSex\u003e getSex() {","lastModifiedDate":"2024-03-18"},{"lineNumber":211,"author":{"gitId":"jskimdev"},"content":" return Optional.ofNullable(sex);","lastModifiedDate":"2024-03-18"},{"lineNumber":212,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":214,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05"},{"lineNumber":215,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05"},{"lineNumber":216,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05"},{"lineNumber":217,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05"},{"lineNumber":218,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":220,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05"},{"lineNumber":221,"author":{"gitId":"jskimdev"},"content":" if (!(other instanceof EditPatientDescriptor)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":222,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05"},{"lineNumber":223,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":225,"author":{"gitId":"jskimdev"},"content":" EditPatientDescriptor otherEditPatientDescriptor \u003d (EditPatientDescriptor) other;","lastModifiedDate":"2024-03-19"},{"lineNumber":226,"author":{"gitId":"jskimdev"},"content":" return Objects.equals(name, otherEditPatientDescriptor.name)","lastModifiedDate":"2024-03-19"},{"lineNumber":227,"author":{"gitId":"jskimdev"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPatientDescriptor.phone)","lastModifiedDate":"2024-03-19"},{"lineNumber":228,"author":{"gitId":"jskimdev"},"content":" \u0026\u0026 Objects.equals(email, otherEditPatientDescriptor.email)","lastModifiedDate":"2024-03-19"},{"lineNumber":229,"author":{"gitId":"jskimdev"},"content":" \u0026\u0026 Objects.equals(address, otherEditPatientDescriptor.address)","lastModifiedDate":"2024-03-19"},{"lineNumber":230,"author":{"gitId":"jskimdev"},"content":" \u0026\u0026 Objects.equals(dateOfBirth, otherEditPatientDescriptor.dateOfBirth)","lastModifiedDate":"2024-03-19"},{"lineNumber":231,"author":{"gitId":"jskimdev"},"content":" \u0026\u0026 Objects.equals(sex, otherEditPatientDescriptor.sex);","lastModifiedDate":"2024-03-19"},{"lineNumber":232,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":233,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":234,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":241,"author":{"gitId":"jskimdev"},"content":" .add(\"date of birth\", dateOfBirth)","lastModifiedDate":"2024-03-17"},{"lineNumber":242,"author":{"gitId":"jskimdev"},"content":" .add(\"sex\", sex)","lastModifiedDate":"2024-03-18"},{"lineNumber":243,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":246,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26"}],"authorContributionMap":{"jskimdev":69,"-":176,"Vision-2000":1}},{"path":"src/main/java/seedu/address/logic/commands/FindCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"Vision-2000"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"Vision-2000"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"Vision-2000"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":12,"author":{"gitId":"Vision-2000"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-22"},{"lineNumber":16,"author":{"gitId":"Vision-2000"},"content":" * Finds and lists all persons whose name or phone number matches any of the argument inputs.","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"Vision-2000"},"content":" * Name matching is case insensitive.","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class FindCommand extends Command {","lastModifiedDate":"2016-09-22"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"find\";","lastModifiedDate":"2016-09-22"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":24,"author":{"gitId":"Vision-2000"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Finds all persons whose names or phone numbers \"","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"Vision-2000"},"content":" + \"matches any of the inputs (case-insensitive for names) and displays them as a list with index numbers.\\n\"","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"Vision-2000"},"content":" + \"Parameters: \"","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"Vision-2000"},"content":" + \"[\" + PREFIX_NAME + \"KEYWORD] \"","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"Vision-2000"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"Vision-2000"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"Vision-2000"},"content":" + PREFIX_NAME + \"alice \"","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"Vision-2000"},"content":" + PREFIX_PHONE + \"91234567\";","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"Vision-2000"},"content":" private final Predicate\u003cPatient\u003e namePredicate;","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"Vision-2000"},"content":" private final Predicate\u003cPatient\u003e phonePredicate;","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":38,"author":{"gitId":"Vision-2000"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"Vision-2000"},"content":" * @param namePredicate condition patient name must meet","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"Vision-2000"},"content":" * @param phonePredicate condition patient phone must meet","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"Vision-2000"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"Vision-2000"},"content":" public FindCommand(Predicate\u003cPatient\u003e namePredicate, Predicate\u003cPatient\u003e phonePredicate) {","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"Vision-2000"},"content":" this.namePredicate \u003d namePredicate;","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"Vision-2000"},"content":" this.phonePredicate \u003d phonePredicate;","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-22"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":50,"author":{"gitId":"Vision-2000"},"content":" model.updateFilteredPersonList(namePredicate.and(phonePredicate));","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return new CommandResult(","lastModifiedDate":"2018-04-01"},{"lineNumber":52,"author":{"gitId":"-"},"content":" String.format(Messages.MESSAGE_PERSONS_LISTED_OVERVIEW, model.getFilteredPersonList().size()));","lastModifiedDate":"2018-04-01"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" if (!(other instanceof FindCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" FindCommand otherFindCommand \u003d (FindCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":67,"author":{"gitId":"Vision-2000"},"content":" return namePredicate.equals(otherFindCommand.namePredicate)","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"Vision-2000"},"content":" \u0026\u0026 phonePredicate.equals(otherFindCommand.phonePredicate);","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":74,"author":{"gitId":"Vision-2000"},"content":" .add(\"namePredicate\", namePredicate)","lastModifiedDate":"2024-03-19"},{"lineNumber":75,"author":{"gitId":"Vision-2000"},"content":" .add(\"phonePredicate\", phonePredicate)","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22"}],"authorContributionMap":{"-":45,"Vision-2000":33}},{"path":"src/main/java/seedu/address/logic/commands/ForceDeleteAllCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jeong-jaeho"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"jeong-jaeho"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"jeong-jaeho"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"jeong-jaeho"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"jeong-jaeho"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"jeong-jaeho"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"jeong-jaeho"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"jeong-jaeho"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"jeong-jaeho"},"content":" * Deletes all persons in the address book forcefully.","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"jeong-jaeho"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"jeong-jaeho"},"content":"public class ForceDeleteAllCommand extends Command {","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"jeong-jaeho"},"content":" public static final String COMMAND_WORD \u003d \"delete-all-f\";","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"jeong-jaeho"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Successfully deleted all data\";","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"jeong-jaeho"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"jeong-jaeho"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"jeong-jaeho"},"content":" * Executes the command and returns the result message.","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"jeong-jaeho"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"jeong-jaeho"},"content":" * @param model {@code Model} which the command should operate on.","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"jeong-jaeho"},"content":" * @return feedback message of the operation result for display","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"jeong-jaeho"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"jeong-jaeho"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"jeong-jaeho"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"jeong-jaeho"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"jeong-jaeho"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"jeong-jaeho"},"content":" model.setAddressBook(new AddressBook());","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"jeong-jaeho"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"jeong-jaeho"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"jeong-jaeho"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"jeong-jaeho":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"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"S-Aishvarya"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"S-Aishvarya"},"content":"import java.util.Comparator;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"S-Aishvarya"},"content":"import java.util.List;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"S-Aishvarya"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Lists all persons in the address book to the user.","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2016-09-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"list\";","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Listed all persons\";","lastModifiedDate":"2016-09-21"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":27,"author":{"gitId":"S-Aishvarya"},"content":" List\u003cPatient\u003e sortedList \u003d new ArrayList\u003cPatient\u003e();","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"S-Aishvarya"},"content":" sortedList.addAll(model.getFilteredPersonList());","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"S-Aishvarya"},"content":" Comparator\u003cPatient\u003e comparator \u003d (patient1, patient2) -\u003e {","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"S-Aishvarya"},"content":" return patient1.getName().fullName.compareTo(patient2.getName().fullName);","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"S-Aishvarya"},"content":" };","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"S-Aishvarya"},"content":" sortedList.sort(comparator);","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"S-Aishvarya"},"content":" for ( Patient patient : sortedList ) {","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"S-Aishvarya"},"content":" model.deletePerson(patient);","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"S-Aishvarya"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"S-Aishvarya"},"content":" for ( Patient patient : sortedList ) {","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"S-Aishvarya"},"content":" model.addPerson(patient);","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"S-Aishvarya"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2016-09-22"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"S-Aishvarya":16,"-":25}},{"path":"src/main/java/seedu/address/logic/commands/NoCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jeong-jaeho"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"jeong-jaeho"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"jeong-jaeho"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"jeong-jaeho"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"jeong-jaeho"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"jeong-jaeho"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"jeong-jaeho"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"jeong-jaeho"},"content":" * No command, do nothing.","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"jeong-jaeho"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"jeong-jaeho"},"content":"public class NoCommand extends Command {","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"jeong-jaeho"},"content":" public static final String COMMAND_WORD \u003d \"no\";","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"jeong-jaeho"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"jeong-jaeho"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"jeong-jaeho"},"content":" * Executes the command and returns the result message.","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"jeong-jaeho"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"jeong-jaeho"},"content":" * @param model {@code Model} which the command should operate on.","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"jeong-jaeho"},"content":" * @return feedback message of the operation result for display","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"jeong-jaeho"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"jeong-jaeho"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"jeong-jaeho"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"jeong-jaeho"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"jeong-jaeho"},"content":" return new CommandResult(\"\");","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"jeong-jaeho"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"jeong-jaeho"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"jeong-jaeho":24}},{"path":"src/main/java/seedu/address/logic/commands/exceptions/CommandException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands.exceptions;","lastModifiedDate":"2017-02-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":3,"author":{"gitId":"Vision-2000"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * Represents an error which occurs during execution of a {@link Command}.","lastModifiedDate":"2017-02-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class CommandException extends Exception {","lastModifiedDate":"2017-02-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":" public CommandException(String message) {","lastModifiedDate":"2017-02-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":" super(message);","lastModifiedDate":"2017-02-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":13,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Constructs a new {@code CommandException} with the specified detail {@code message} and {@code cause}.","lastModifiedDate":"2018-08-06"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public CommandException(String message, Throwable cause) {","lastModifiedDate":"2018-08-06"},{"lineNumber":17,"author":{"gitId":"-"},"content":" super(message, cause);","lastModifiedDate":"2018-08-06"},{"lineNumber":18,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":19,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05"}],"authorContributionMap":{"-":17,"Vision-2000":2}},{"path":"src/main/java/seedu/address/logic/parser/AddCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DATEOFBIRTH;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SEX;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-02-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":15,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Address;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.DateOfBirth;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Email;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Name;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Phone;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Sex;","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":34,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":35,"author":{"gitId":"jskimdev"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"jskimdev"},"content":" PREFIX_DATEOFBIRTH, PREFIX_SEX);","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":38,"author":{"gitId":"jskimdev"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_ADDRESS, PREFIX_PHONE, PREFIX_EMAIL,","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"jskimdev"},"content":" PREFIX_DATEOFBIRTH, PREFIX_SEX)","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":44,"author":{"gitId":"jskimdev"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"jskimdev"},"content":" PREFIX_DATEOFBIRTH, PREFIX_SEX);","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":47,"author":{"gitId":"-"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":48,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":49,"author":{"gitId":"-"},"content":" Address address \u003d ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":50,"author":{"gitId":"jskimdev"},"content":" DateOfBirth dateOfBirth \u003d ParserUtil.parseDateOfBirth(argMultimap.getValue(PREFIX_DATEOFBIRTH).get());","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"jskimdev"},"content":" Sex sex \u003d ParserUtil.parseSex(argMultimap.getValue(PREFIX_SEX).get());","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":53,"author":{"gitId":"jskimdev"},"content":" Patient patient \u003d new Patient(name, phone, email, address, dateOfBirth, sex);","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":55,"author":{"gitId":"jskimdev"},"content":" return new AddCommand(patient);","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17"},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17"},{"lineNumber":62,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05"}],"authorContributionMap":{"jskimdev":19,"-":47}},{"path":"src/main/java/seedu/address/logic/parser/AddressBookParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-07-29"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-07-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2017-01-18"},{"lineNumber":13,"author":{"gitId":"jeong-jaeho"},"content":"import seedu.address.logic.commands.DeleteAllCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"jeong-jaeho"},"content":"import seedu.address.logic.commands.DeleteByIndexCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":18,"author":{"gitId":"jeong-jaeho"},"content":"import seedu.address.logic.commands.ForceDeleteAllCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":21,"author":{"gitId":"jeong-jaeho"},"content":"import seedu.address.logic.commands.NoCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":43,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // Note to developers: Change the log level in config.json to enable lower level (i.e., FINE, FINER and lower)","lastModifiedDate":"2023-07-29"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":56,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":64,"author":{"gitId":"jeong-jaeho"},"content":" case DeleteByIndexCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":67,"author":{"gitId":"jeong-jaeho"},"content":" case DeleteAllCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"jeong-jaeho"},"content":" return new DeleteAllCommand();","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":70,"author":{"gitId":"jeong-jaeho"},"content":" case ForceDeleteAllCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"jeong-jaeho"},"content":" return new ForceDeleteAllCommand();","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return new ListCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":82,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26"},{"lineNumber":83,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":85,"author":{"gitId":"jeong-jaeho"},"content":" case NoCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"jeong-jaeho"},"content":" return new NoCommand();","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"jeong-jaeho"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":88,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26"},{"lineNumber":89,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29"},{"lineNumber":90,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"-":82,"jeong-jaeho":12}},{"path":"src/main/java/seedu/address/logic/parser/CliSyntax.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11"},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":" /* Prefix definitions */","lastModifiedDate":"2017-02-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"n/\");","lastModifiedDate":"2017-06-06"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"p/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"e/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_ADDRESS \u003d new Prefix(\"a/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":13,"author":{"gitId":"jskimdev"},"content":" public static final Prefix PREFIX_DATEOFBIRTH \u003d new Prefix(\"b/\");","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"jskimdev"},"content":" public static final Prefix PREFIX_SEX \u003d new Prefix(\"s/\");","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"jskimdev":2,"-":13}},{"path":"src/main/java/seedu/address/logic/parser/DeleteCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":6,"author":{"gitId":"jeong-jaeho"},"content":"import seedu.address.logic.commands.DeleteByIndexCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new DeleteCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":12,"author":{"gitId":"jeong-jaeho"},"content":"public class DeleteCommandParser implements Parser\u003cDeleteByIndexCommand\u003e {","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the DeleteCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * and returns a DeleteCommand object for execution.","lastModifiedDate":"2019-05-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":19,"author":{"gitId":"jeong-jaeho"},"content":" public DeleteByIndexCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15"},{"lineNumber":21,"author":{"gitId":"-"},"content":" Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2017-05-25"},{"lineNumber":22,"author":{"gitId":"jeong-jaeho"},"content":" return new DeleteByIndexCommand(index);","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10"},{"lineNumber":24,"author":{"gitId":"-"},"content":" throw new ParseException(","lastModifiedDate":"2017-03-11"},{"lineNumber":25,"author":{"gitId":"jeong-jaeho"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteByIndexCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"-":24,"jeong-jaeho":5}},{"path":"src/main/java/seedu/address/logic/parser/EditCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DATEOFBIRTH;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"Vision-2000"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SEX;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-26"},{"lineNumber":14,"author":{"gitId":"jskimdev"},"content":"import seedu.address.logic.commands.EditCommand.EditPatientDescriptor;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new EditCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class EditCommandParser implements Parser\u003cEditCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the EditCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * and returns an EditCommand object for execution.","lastModifiedDate":"2017-01-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public EditCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":28,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2017-05-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":30,"author":{"gitId":"jskimdev"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"Vision-2000"},"content":" PREFIX_DATEOFBIRTH, PREFIX_SEX);","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2017-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":35,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2017-06-06"},{"lineNumber":37,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10"},{"lineNumber":38,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2018-08-06"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":41,"author":{"gitId":"Vision-2000"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"Vision-2000"},"content":" PREFIX_DATEOFBIRTH, PREFIX_SEX);","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":44,"author":{"gitId":"jskimdev"},"content":" EditPatientDescriptor editPersonDescriptor \u003d new EditPatientDescriptor();","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":46,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":47,"author":{"gitId":"-"},"content":" editPersonDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":49,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":50,"author":{"gitId":"-"},"content":" editPersonDescriptor.setPhone(ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":52,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":53,"author":{"gitId":"-"},"content":" editPersonDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":55,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_ADDRESS).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":56,"author":{"gitId":"-"},"content":" editPersonDescriptor.setAddress(ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":58,"author":{"gitId":"jskimdev"},"content":" if (argMultimap.getValue(PREFIX_DATEOFBIRTH).isPresent()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"jskimdev"},"content":" editPersonDescriptor.setDateOfBirth(ParserUtil.parseDateOfBirth(argMultimap","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"jskimdev"},"content":" .getValue(PREFIX_DATEOFBIRTH).get()));","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"Vision-2000"},"content":" if (argMultimap.getValue(PREFIX_SEX).isPresent()) {","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"Vision-2000"},"content":" editPersonDescriptor.setSex(ParserUtil.parseSex(argMultimap.getValue(PREFIX_SEX).get()));","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":" if (!editPersonDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2017-01-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-03-11"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2017-05-15"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"jskimdev":8,"-":57,"Vision-2000":7}},{"path":"src/main/java/seedu/address/logic/parser/FindCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"Vision-2000"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"Vision-2000"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"Vision-2000"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"Vision-2000"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-01-26"},{"lineNumber":10,"author":{"gitId":"Vision-2000"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"Vision-2000"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":13,"author":{"gitId":"Vision-2000"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":16,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"Vision-2000"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"Vision-2000"},"content":"import seedu.address.model.patient.PhoneMatchesPredicate;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new FindCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class FindCommandParser implements Parser\u003cFindCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":25,"author":{"gitId":"Vision-2000"},"content":" private final Logger logger \u003d LogsCenter.getLogger(getClass());","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the FindCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * and returns a FindCommand object for execution.","lastModifiedDate":"2019-05-11"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public FindCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":33,"author":{"gitId":"Vision-2000"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"Vision-2000"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"Vision-2000"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE);","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"Vision-2000"},"content":" if (!argMultimap.getPreamble().equals(\"\")) {","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"Vision-2000"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"Vision-2000"},"content":" if (!argMultimap.getValue(PREFIX_NAME).isPresent() \u0026\u0026 !argMultimap.getValue(PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"Vision-2000"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"Vision-2000"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE);","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"Vision-2000"},"content":" Predicate\u003cPatient\u003e namePredicate;","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"Vision-2000"},"content":" Predicate\u003cPatient\u003e phonePredicate;","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"Vision-2000"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"Vision-2000"},"content":" String keyword \u003d argMultimap.getValue(PREFIX_NAME).get().trim();","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"Vision-2000"},"content":" if (keyword.isEmpty()) {","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" throw new ParseException(","lastModifiedDate":"2017-03-11"},{"lineNumber":54,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-01-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":56,"author":{"gitId":"Vision-2000"},"content":" String [] nameKeywords \u003d keyword.split(\"\\\\s+\");","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"Vision-2000"},"content":" namePredicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(nameKeywords));","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"Vision-2000"},"content":" } else {","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"Vision-2000"},"content":" namePredicate \u003d PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"Vision-2000"},"content":" if (argMultimap.getValue(PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"Vision-2000"},"content":" phonePredicate \u003d new PhoneMatchesPredicate(ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get()));","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"Vision-2000"},"content":" } else {","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"Vision-2000"},"content":" phonePredicate \u003d PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":68,"author":{"gitId":"Vision-2000"},"content":" logger.info(\"----------------[namePredicate][\" + namePredicate + \"]\");","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"Vision-2000"},"content":" logger.info(\"----------------[phonePredicate][\" + phonePredicate + \"]\");","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":71,"author":{"gitId":"Vision-2000"},"content":" return new FindCommand(namePredicate, phonePredicate);","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":74,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"jskimdev":1,"-":29,"Vision-2000":44}},{"path":"src/main/java/seedu/address/logic/parser/ParserUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-02-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10"},{"lineNumber":8,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Address;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.DateOfBirth;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Email;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Name;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Phone;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Sex;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2017-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":28,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02"},{"lineNumber":30,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":32,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29"},{"lineNumber":38,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":42,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29"},{"lineNumber":43,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29"},{"lineNumber":44,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":45,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":47,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":50,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":53,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":57,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30"},{"lineNumber":58,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":59,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":60,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","lastModifiedDate":"2017-05-30"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":65,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":66,"author":{"gitId":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30"},{"lineNumber":67,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":68,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":69,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":70,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":72,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-30"},{"lineNumber":73,"author":{"gitId":"-"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":74,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(trimmedAddress)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":75,"author":{"gitId":"-"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return new Address(trimmedAddress);","lastModifiedDate":"2017-05-30"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":80,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30"},{"lineNumber":82,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":83,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":85,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":87,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30"},{"lineNumber":88,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":89,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":90,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":92,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","lastModifiedDate":"2017-05-30"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":95,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":96,"author":{"gitId":"jskimdev"},"content":" * Parses a {@code String dateOfBirth} into an {@code DateOfBirth}.","lastModifiedDate":"2024-03-17"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":98,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":99,"author":{"gitId":"jskimdev"},"content":" * @throws ParseException if the given {@code dateOfBirth} is invalid.","lastModifiedDate":"2024-03-17"},{"lineNumber":100,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":101,"author":{"gitId":"jskimdev"},"content":" public static DateOfBirth parseDateOfBirth(String dateOfBirth) throws ParseException {","lastModifiedDate":"2024-03-17"},{"lineNumber":102,"author":{"gitId":"jskimdev"},"content":" requireNonNull(dateOfBirth);","lastModifiedDate":"2024-03-17"},{"lineNumber":103,"author":{"gitId":"jskimdev"},"content":" String trimmedDateOfBirth \u003d dateOfBirth.trim();","lastModifiedDate":"2024-03-17"},{"lineNumber":104,"author":{"gitId":"jskimdev"},"content":" if (!DateOfBirth.isValidDateOfBirth(trimmedDateOfBirth)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":105,"author":{"gitId":"jskimdev"},"content":" throw new ParseException(DateOfBirth.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":107,"author":{"gitId":"jskimdev"},"content":" return new DateOfBirth(trimmedDateOfBirth);","lastModifiedDate":"2024-03-18"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":110,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":111,"author":{"gitId":"jskimdev"},"content":" * Parses a {@code String sex} into an {@code Sex}.","lastModifiedDate":"2024-03-18"},{"lineNumber":112,"author":{"gitId":"jskimdev"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-18"},{"lineNumber":113,"author":{"gitId":"jskimdev"},"content":" *","lastModifiedDate":"2024-03-18"},{"lineNumber":114,"author":{"gitId":"jskimdev"},"content":" * @throws ParseException if the given {@code Sex} is invalid.","lastModifiedDate":"2024-03-18"},{"lineNumber":115,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":116,"author":{"gitId":"jskimdev"},"content":" public static Sex parseSex(String sex) throws ParseException {","lastModifiedDate":"2024-03-18"},{"lineNumber":117,"author":{"gitId":"jskimdev"},"content":" requireNonNull(sex);","lastModifiedDate":"2024-03-18"},{"lineNumber":118,"author":{"gitId":"jskimdev"},"content":" String trimmedSex \u003d sex.trim();","lastModifiedDate":"2024-03-18"},{"lineNumber":119,"author":{"gitId":"jskimdev"},"content":" if (!Sex.isValidSex(trimmedSex)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":120,"author":{"gitId":"jskimdev"},"content":" throw new ParseException(Sex.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-18"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":122,"author":{"gitId":"jskimdev"},"content":" return new Sex(trimmedSex);","lastModifiedDate":"2024-03-18"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":124,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"jskimdev":24,"-":100}},{"path":"src/main/java/seedu/address/model/AddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.UniquePatientList;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * Wraps all data at the address-book level","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Duplicates are not allowed (by .isSamePerson comparison)","lastModifiedDate":"2018-04-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class AddressBook implements ReadOnlyAddressBook {","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"jskimdev"},"content":" private final UniquePatientList patients;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * The \u0027unusual\u0027 code block below is a non-static initialization block, sometimes used to avoid duplication","lastModifiedDate":"2019-05-11"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * between constructors. See https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html","lastModifiedDate":"2016-10-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Note that non-static init blocks are not recommended to use. There are other ways to avoid duplication","lastModifiedDate":"2016-10-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * among constructors.","lastModifiedDate":"2016-10-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" {","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"jskimdev"},"content":" patients \u003d new UniquePatientList();","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public AddressBook() {}","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Creates an AddressBook using the Persons in the {@code toBeCopied}","lastModifiedDate":"2018-03-29"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public AddressBook(ReadOnlyAddressBook toBeCopied) {","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" this();","lastModifiedDate":"2016-12-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" resetData(toBeCopied);","lastModifiedDate":"2016-12-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":41,"author":{"gitId":"-"},"content":" //// list overwrite operations","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":44,"author":{"gitId":"jskimdev"},"content":" * Replaces the contents of the patient list with {@code patients}.","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"jskimdev"},"content":" * {@code patients} must not contain duplicate patients.","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":47,"author":{"gitId":"jskimdev"},"content":" public void setPatients(List\u003cPatient\u003e patients) {","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"jskimdev"},"content":" this.patients.setPatients(patients);","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Resets the existing data of this {@code AddressBook} with {@code newData}.","lastModifiedDate":"2017-08-16"},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void resetData(ReadOnlyAddressBook newData) {","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":" requireNonNull(newData);","lastModifiedDate":"2017-05-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-20"},{"lineNumber":57,"author":{"gitId":"jskimdev"},"content":" setPatients(newData.getPersonList());","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"jskimdev"},"content":" //// patient-level operations","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":63,"author":{"gitId":"jskimdev"},"content":" * Returns true if a patient with the same identity as {@code patient} exists in the address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":65,"author":{"gitId":"jskimdev"},"content":" public boolean hasPerson(Patient patient) {","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"jskimdev"},"content":" requireNonNull(patient);","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"jskimdev"},"content":" return patients.contains(patient);","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":71,"author":{"gitId":"jskimdev"},"content":" * Adds a patient to the address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"jskimdev"},"content":" * The patient must not already exist in the address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":74,"author":{"gitId":"jskimdev"},"content":" public void addPerson(Patient p) {","lastModifiedDate":"2024-03-19"},{"lineNumber":75,"author":{"gitId":"jskimdev"},"content":" patients.add(p);","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":79,"author":{"gitId":"jskimdev"},"content":" * Replaces the given patient {@code target} in the list with {@code editedPatient}.","lastModifiedDate":"2024-03-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":81,"author":{"gitId":"jskimdev"},"content":" * The patient identity of {@code editedPatient} must not be the same as another existing patient","lastModifiedDate":"2024-03-19"},{"lineNumber":82,"author":{"gitId":"jskimdev"},"content":" * in the address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":84,"author":{"gitId":"jskimdev"},"content":" public void setPerson(Patient target, Patient editedPatient) {","lastModifiedDate":"2024-03-19"},{"lineNumber":85,"author":{"gitId":"jskimdev"},"content":" requireNonNull(editedPatient);","lastModifiedDate":"2024-03-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":87,"author":{"gitId":"jskimdev"},"content":" patients.setPatient(target, editedPatient);","lastModifiedDate":"2024-03-19"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":90,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * Removes {@code key} from this {@code AddressBook}.","lastModifiedDate":"2017-08-16"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * {@code key} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":93,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":94,"author":{"gitId":"jskimdev"},"content":" public void removePerson(Patient key) {","lastModifiedDate":"2024-03-19"},{"lineNumber":95,"author":{"gitId":"jskimdev"},"content":" patients.remove(key);","lastModifiedDate":"2024-03-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":" //// util methods","lastModifiedDate":"2016-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":103,"author":{"gitId":"jskimdev"},"content":" .add(\"patients\", patients)","lastModifiedDate":"2024-03-19"},{"lineNumber":104,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":108,"author":{"gitId":"jskimdev"},"content":" public ObservableList\u003cPatient\u003e getPersonList() {","lastModifiedDate":"2024-03-19"},{"lineNumber":109,"author":{"gitId":"jskimdev"},"content":" return patients.asUnmodifiableObservableList();","lastModifiedDate":"2024-03-19"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-01"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-01"},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":113,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-21"},{"lineNumber":114,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":119,"author":{"gitId":"-"},"content":" if (!(other instanceof AddressBook)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":123,"author":{"gitId":"-"},"content":" AddressBook otherAddressBook \u003d (AddressBook) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":124,"author":{"gitId":"jskimdev"},"content":" return patients.equals(otherAddressBook.patients);","lastModifiedDate":"2024-03-19"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":128,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-21"},{"lineNumber":129,"author":{"gitId":"jskimdev"},"content":" return patients.hashCode();","lastModifiedDate":"2024-03-19"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":131,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"jskimdev":31,"-":100}},{"path":"src/main/java/seedu/address/model/Model.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":8,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * The API of the Model component.","lastModifiedDate":"2016-09-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public interface Model {","lastModifiedDate":"2016-09-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":" /** {@code Predicate} that always evaluate to true */","lastModifiedDate":"2017-08-05"},{"lineNumber":15,"author":{"gitId":"jskimdev"},"content":" Predicate\u003cPatient\u003e PREDICATE_SHOW_ALL_PERSONS \u003d unused -\u003e true;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Replaces user prefs data with the data in {@code userPrefs}.","lastModifiedDate":"2018-12-06"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":" void setUserPrefs(ReadOnlyUserPrefs userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Returns the user prefs.","lastModifiedDate":"2018-11-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" ReadOnlyUserPrefs getUserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" void setAddressBookFilePath(Path addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Replaces address book data with the data in {@code addressBook}.","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" void setAddressBook(ReadOnlyAddressBook addressBook);","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":52,"author":{"gitId":"-"},"content":" /** Returns the AddressBook */","lastModifiedDate":"2016-09-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2016-09-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":56,"author":{"gitId":"jskimdev"},"content":" * Returns true if a patient with the same identity as {@code patient} exists in the address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":58,"author":{"gitId":"jskimdev"},"content":" boolean hasPerson(Patient patient);","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":61,"author":{"gitId":"jskimdev"},"content":" * Deletes the given patient.","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"jskimdev"},"content":" * The patient must exist in the address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":64,"author":{"gitId":"jskimdev"},"content":" void deletePerson(Patient target);","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":66,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":67,"author":{"gitId":"jskimdev"},"content":" * Adds the given patient.","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"jskimdev"},"content":" * {@code patient} must not already exist in the address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":70,"author":{"gitId":"jskimdev"},"content":" void addPerson(Patient patient);","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":73,"author":{"gitId":"jskimdev"},"content":" * Replaces the given patient {@code target} with {@code editedPatient}.","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":75,"author":{"gitId":"jskimdev"},"content":" * The patient identity of {@code editedPatient} must not be the same as","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"jskimdev"},"content":" * another existing patient in the address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":78,"author":{"gitId":"jskimdev"},"content":" void setPerson(Patient target, Patient editedPatient);","lastModifiedDate":"2024-03-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":80,"author":{"gitId":"jskimdev"},"content":" /** Returns an unmodifiable view of the filtered patient list */","lastModifiedDate":"2024-03-19"},{"lineNumber":81,"author":{"gitId":"jskimdev"},"content":" ObservableList\u003cPatient\u003e getFilteredPersonList();","lastModifiedDate":"2024-03-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":83,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-05"},{"lineNumber":84,"author":{"gitId":"jskimdev"},"content":" * Updates the filter of the filtered patient list to filter by the given {@code predicate}.","lastModifiedDate":"2024-03-19"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2017-08-05"},{"lineNumber":86,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05"},{"lineNumber":87,"author":{"gitId":"jskimdev"},"content":" void updateFilteredPersonList(Predicate\u003cPatient\u003e predicate);","lastModifiedDate":"2024-03-19"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"jskimdev":18,"-":70}},{"path":"src/main/java/seedu/address/model/ModelManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-08-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2016-08-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23"},{"lineNumber":14,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Represents the in-memory model of the address book data.","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class ModelManager implements Model {","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ModelManager.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final AddressBook addressBook;","lastModifiedDate":"2019-01-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final UserPrefs userPrefs;","lastModifiedDate":"2018-12-06"},{"lineNumber":24,"author":{"gitId":"jskimdev"},"content":" private final FilteredList\u003cPatient\u003e filteredPatients;","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Initializes a ModelManager with the given addressBook and userPrefs.","lastModifiedDate":"2016-12-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public ModelManager(ReadOnlyAddressBook addressBook, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":" requireAllNonNull(addressBook, userPrefs);","lastModifiedDate":"2017-05-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" logger.fine(\"Initializing with address book: \" + addressBook + \" and user prefs \" + userPrefs);","lastModifiedDate":"2016-12-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" this.addressBook \u003d new AddressBook(addressBook);","lastModifiedDate":"2019-01-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":36,"author":{"gitId":"jskimdev"},"content":" filteredPatients \u003d new FilteredList\u003c\u003e(this.addressBook.getPersonList());","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public ModelManager() {","lastModifiedDate":"2016-09-22"},{"lineNumber":40,"author":{"gitId":"-"},"content":" this(new AddressBook(), new UserPrefs());","lastModifiedDate":"2016-09-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d UserPrefs \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":47,"author":{"gitId":"-"},"content":" requireNonNull(userPrefs);","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" this.userPrefs.resetData(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return userPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return userPrefs.getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return userPrefs.getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d AddressBook \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook addressBook) {","lastModifiedDate":"2018-11-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" this.addressBook.resetData(addressBook);","lastModifiedDate":"2019-01-25"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2016-09-21"},{"lineNumber":87,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2019-01-25"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":91,"author":{"gitId":"jskimdev"},"content":" public boolean hasPerson(Patient patient) {","lastModifiedDate":"2024-03-19"},{"lineNumber":92,"author":{"gitId":"jskimdev"},"content":" requireNonNull(patient);","lastModifiedDate":"2024-03-19"},{"lineNumber":93,"author":{"gitId":"jskimdev"},"content":" return addressBook.hasPerson(patient);","lastModifiedDate":"2024-03-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":97,"author":{"gitId":"jskimdev"},"content":" public void deletePerson(Patient target) {","lastModifiedDate":"2024-03-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" addressBook.removePerson(target);","lastModifiedDate":"2019-01-25"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":102,"author":{"gitId":"jskimdev"},"content":" public void addPerson(Patient patient) {","lastModifiedDate":"2024-03-19"},{"lineNumber":103,"author":{"gitId":"jskimdev"},"content":" addressBook.addPerson(patient);","lastModifiedDate":"2024-03-19"},{"lineNumber":104,"author":{"gitId":"-"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-13"},{"lineNumber":108,"author":{"gitId":"jskimdev"},"content":" public void setPerson(Patient target, Patient editedPatient) {","lastModifiedDate":"2024-03-19"},{"lineNumber":109,"author":{"gitId":"jskimdev"},"content":" requireAllNonNull(target, editedPatient);","lastModifiedDate":"2024-03-19"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":111,"author":{"gitId":"jskimdev"},"content":" addressBook.setPerson(target, editedPatient);","lastModifiedDate":"2024-03-19"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":114,"author":{"gitId":"jskimdev"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Filtered Patient List Accessors \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-03-19"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19"},{"lineNumber":117,"author":{"gitId":"jskimdev"},"content":" * Returns an unmodifiable view of the list of {@code Patient} backed by the internal list of","lastModifiedDate":"2024-03-19"},{"lineNumber":118,"author":{"gitId":"-"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2018-06-11"},{"lineNumber":119,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19"},{"lineNumber":120,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":121,"author":{"gitId":"jskimdev"},"content":" public ObservableList\u003cPatient\u003e getFilteredPersonList() {","lastModifiedDate":"2024-03-19"},{"lineNumber":122,"author":{"gitId":"jskimdev"},"content":" return filteredPatients;","lastModifiedDate":"2024-03-19"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":125,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":126,"author":{"gitId":"jskimdev"},"content":" public void updateFilteredPersonList(Predicate\u003cPatient\u003e predicate) {","lastModifiedDate":"2024-03-19"},{"lineNumber":127,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05"},{"lineNumber":128,"author":{"gitId":"jskimdev"},"content":" filteredPatients.setPredicate(predicate);","lastModifiedDate":"2024-03-19"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":131,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-31"},{"lineNumber":132,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13"},{"lineNumber":133,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":134,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":137,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31"},{"lineNumber":138,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":139,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-31"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":142,"author":{"gitId":"-"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":143,"author":{"gitId":"-"},"content":" return addressBook.equals(otherModelManager.addressBook)","lastModifiedDate":"2023-07-13"},{"lineNumber":144,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13"},{"lineNumber":145,"author":{"gitId":"jskimdev"},"content":" \u0026\u0026 filteredPatients.equals(otherModelManager.filteredPatients);","lastModifiedDate":"2024-03-19"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":148,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"jskimdev":19,"-":129}},{"path":"src/main/java/seedu/address/model/ReadOnlyAddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * Unmodifiable view of an address book","lastModifiedDate":"2016-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public interface ReadOnlyAddressBook {","lastModifiedDate":"2019-01-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the persons list.","lastModifiedDate":"2016-12-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * This list will not contain any duplicate persons.","lastModifiedDate":"2016-12-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"jskimdev"},"content":" ObservableList\u003cPatient\u003e getPersonList();","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"jskimdev":2,"-":15}},{"path":"src/main/java/seedu/address/model/patient/Address.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jskimdev"},"content":"package seedu.address.model.patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"jskimdev"},"content":" * Represents a Patient\u0027s address in the address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidAddress(String)}","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Address {","lastModifiedDate":"2016-09-21"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Addresses can take any values, and it should not be blank\";","lastModifiedDate":"2018-09-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":14,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2017-01-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2017-01-16"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2017-01-16"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d \"[^\\\\s].*\";","lastModifiedDate":"2018-09-22"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public final String value;","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Constructs an {@code Address}.","lastModifiedDate":"2017-05-30"},{"lineNumber":24,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * @param address A valid address.","lastModifiedDate":"2017-05-30"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public Address(String address) {","lastModifiedDate":"2017-05-30"},{"lineNumber":28,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":" checkArgument(isValidAddress(address), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":30,"author":{"gitId":"-"},"content":" value \u003d address;","lastModifiedDate":"2018-08-14"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid email.","lastModifiedDate":"2018-04-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static boolean isValidAddress(String test) {","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return value;","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" if (!(other instanceof Address)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" Address otherAddress \u003d (Address) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return value.equals(otherAddress.value);","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return value.hashCode();","lastModifiedDate":"2016-08-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"jskimdev":2,"-":63}},{"path":"src/main/java/seedu/address/model/patient/DateOfBirth.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jskimdev"},"content":"package seedu.address.model.patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"jskimdev"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"jskimdev"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"jskimdev"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"jskimdev"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"jskimdev"},"content":"/**","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"jskimdev"},"content":" * Represents a Patient\u0027s date of birth.","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"jskimdev"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidDateOfBirth(String)}","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"jskimdev"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"jskimdev"},"content":"public class DateOfBirth {","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"jskimdev"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"jskimdev"},"content":" \"Date of birth should only contain numeric values in dd/MM/yyyy or yyyy-MM-dd format, and it should not \"","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"jskimdev"},"content":" + \"be left blank\";","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"Vision-2000"},"content":" public static final DateTimeFormatter INPUTFORMAT1 \u003d DateTimeFormatter.ofPattern(\"d/M/yyyy\");","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"Vision-2000"},"content":" public static final DateTimeFormatter INPUTFORMAT2 \u003d DateTimeFormatter.ofPattern(\"yyyy-M-d\");","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"Vision-2000"},"content":" public static final DateTimeFormatter OUTPUTFORMAT \u003d DateTimeFormatter.ofPattern(\"yyyy-M-d\");","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"jskimdev"},"content":" public final LocalDate dateOfBirth;","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"jskimdev"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"jskimdev"},"content":" * Constructs a {@code DateOfBirth}.","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"jskimdev"},"content":" *","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"jskimdev"},"content":" * @param dateOfBirth A valid date of birth.","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"jskimdev"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"jskimdev"},"content":" public DateOfBirth(String dateOfBirth) {","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"jskimdev"},"content":" requireNonNull(dateOfBirth);","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"jskimdev"},"content":" checkArgument(isValidDateOfBirth(dateOfBirth), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"jskimdev"},"content":" this.dateOfBirth \u003d parseDateOfBirth(dateOfBirth);","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"jskimdev"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"jskimdev"},"content":" * Returns true if a given string is a valid date of birth.","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"jskimdev"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"jskimdev"},"content":" public static boolean isValidDateOfBirth(String test) {","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"jskimdev"},"content":" return parseDateOfBirth(test) \u003d\u003d null ? false : true;","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"jskimdev"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"jskimdev"},"content":" * Parse String date of birth into LocalDate.","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"jskimdev"},"content":" *","lastModifiedDate":"2024-03-14"},{"lineNumber":46,"author":{"gitId":"jskimdev"},"content":" * @param dateOfBirthString date of birth input.","lastModifiedDate":"2024-03-14"},{"lineNumber":47,"author":{"gitId":"jskimdev"},"content":" * @return date of birth in LocalDate type.","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"jskimdev"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":49,"author":{"gitId":"jskimdev"},"content":" public static LocalDate parseDateOfBirth(String dateOfBirthString) {","lastModifiedDate":"2024-03-14"},{"lineNumber":50,"author":{"gitId":"jskimdev"},"content":" String cleanDateString \u003d dateOfBirthString.strip();","lastModifiedDate":"2024-03-14"},{"lineNumber":51,"author":{"gitId":"jskimdev"},"content":" DateTimeFormatter inputFormat \u003d determineInputFormat(cleanDateString);","lastModifiedDate":"2024-03-14"},{"lineNumber":52,"author":{"gitId":"jskimdev"},"content":" LocalDate dateOfBirth \u003d null;","lastModifiedDate":"2024-03-14"},{"lineNumber":53,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":54,"author":{"gitId":"jskimdev"},"content":" try {","lastModifiedDate":"2024-03-14"},{"lineNumber":55,"author":{"gitId":"jskimdev"},"content":" dateOfBirth \u003d LocalDate.parse(cleanDateString, inputFormat);","lastModifiedDate":"2024-03-14"},{"lineNumber":56,"author":{"gitId":"jskimdev"},"content":" return dateOfBirth;","lastModifiedDate":"2024-03-14"},{"lineNumber":57,"author":{"gitId":"jskimdev"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-03-14"},{"lineNumber":58,"author":{"gitId":"jskimdev"},"content":" return null;","lastModifiedDate":"2024-03-14"},{"lineNumber":59,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":60,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":61,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":62,"author":{"gitId":"jskimdev"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":63,"author":{"gitId":"jskimdev"},"content":" * Determines in which format the date of birth is input.","lastModifiedDate":"2024-03-14"},{"lineNumber":64,"author":{"gitId":"jskimdev"},"content":" *","lastModifiedDate":"2024-03-14"},{"lineNumber":65,"author":{"gitId":"jskimdev"},"content":" * @return the input format of String date of birth.","lastModifiedDate":"2024-03-14"},{"lineNumber":66,"author":{"gitId":"jskimdev"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":67,"author":{"gitId":"jskimdev"},"content":" private static DateTimeFormatter determineInputFormat(String dateOfBirth) {","lastModifiedDate":"2024-03-14"},{"lineNumber":68,"author":{"gitId":"jskimdev"},"content":" boolean isInputFromat1 \u003d dateOfBirth.split(\"/\").length \u003e 1;","lastModifiedDate":"2024-03-14"},{"lineNumber":69,"author":{"gitId":"Vision-2000"},"content":" return isInputFromat1 ? INPUTFORMAT1 : INPUTFORMAT2;","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":71,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":72,"author":{"gitId":"jskimdev"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":73,"author":{"gitId":"jskimdev"},"content":" public String toString() {","lastModifiedDate":"2024-03-14"},{"lineNumber":74,"author":{"gitId":"Vision-2000"},"content":" return dateOfBirth.format(OUTPUTFORMAT);","lastModifiedDate":"2024-03-19"},{"lineNumber":75,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":76,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"jskimdev"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"jskimdev"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"jskimdev"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"jskimdev"},"content":" return true;","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":82,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":83,"author":{"gitId":"jskimdev"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-17"},{"lineNumber":84,"author":{"gitId":"jskimdev"},"content":" if (!(other instanceof DateOfBirth)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":85,"author":{"gitId":"jskimdev"},"content":" return false;","lastModifiedDate":"2024-03-17"},{"lineNumber":86,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":87,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":88,"author":{"gitId":"jskimdev"},"content":" DateOfBirth otherDateOfBirth \u003d (DateOfBirth) other;","lastModifiedDate":"2024-03-17"},{"lineNumber":89,"author":{"gitId":"jskimdev"},"content":" return dateOfBirth.equals(otherDateOfBirth.dateOfBirth);","lastModifiedDate":"2024-03-17"},{"lineNumber":90,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":91,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":92,"author":{"gitId":"jskimdev"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"jskimdev"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-17"},{"lineNumber":94,"author":{"gitId":"jskimdev"},"content":" return dateOfBirth.hashCode();","lastModifiedDate":"2024-03-17"},{"lineNumber":95,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":96,"author":{"gitId":"jskimdev"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"jskimdev":91,"Vision-2000":5}},{"path":"src/main/java/seedu/address/model/patient/Email.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jskimdev"},"content":"package seedu.address.model.patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"jskimdev"},"content":" * Represents a Patient\u0027s email in the address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidEmail(String)}","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Email {","lastModifiedDate":"2016-09-21"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" private static final String SPECIAL_CHARACTERS \u003d \"+_.-\";","lastModifiedDate":"2021-07-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Emails should be of the format local-part@domain \"","lastModifiedDate":"2018-09-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":" + \"and adhere to the following constraints:\\n\"","lastModifiedDate":"2018-02-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":" + \"1. The local-part should only contain alphanumeric characters and these special characters, excluding \"","lastModifiedDate":"2018-02-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":" + \"the parentheses, (\" + SPECIAL_CHARACTERS + \"). The local-part may not start or end with any special \"","lastModifiedDate":"2021-07-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":" + \"characters.\\n\"","lastModifiedDate":"2021-07-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":" + \"2. This is followed by a \u0027@\u0027 and then a domain name. The domain name is made up of domain labels \"","lastModifiedDate":"2021-07-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":" + \"separated by periods.\\n\"","lastModifiedDate":"2021-07-20"},{"lineNumber":20,"author":{"gitId":"-"},"content":" + \"The domain name must:\\n\"","lastModifiedDate":"2018-02-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":" + \" - end with a domain label at least 2 characters long\\n\"","lastModifiedDate":"2021-07-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":" + \" - have each domain label start and end with alphanumeric characters\\n\"","lastModifiedDate":"2021-07-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":" + \" - have each domain label consist of alphanumeric characters, separated only by hyphens, if any.\";","lastModifiedDate":"2021-07-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // alphanumeric and special characters","lastModifiedDate":"2018-02-09"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String ALPHANUMERIC_NO_UNDERSCORE \u003d \"[^\\\\W_]+\"; // alphanumeric characters except underscore","lastModifiedDate":"2021-07-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String LOCAL_PART_REGEX \u003d \"^\" + ALPHANUMERIC_NO_UNDERSCORE + \"([\" + SPECIAL_CHARACTERS + \"]\"","lastModifiedDate":"2021-07-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" + ALPHANUMERIC_NO_UNDERSCORE + \")*\";","lastModifiedDate":"2021-07-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String DOMAIN_PART_REGEX \u003d ALPHANUMERIC_NO_UNDERSCORE","lastModifiedDate":"2021-07-20"},{"lineNumber":29,"author":{"gitId":"-"},"content":" + \"(-\" + ALPHANUMERIC_NO_UNDERSCORE + \")*\";","lastModifiedDate":"2021-07-20"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String DOMAIN_LAST_PART_REGEX \u003d \"(\" + DOMAIN_PART_REGEX + \"){2,}$\"; // At least two chars","lastModifiedDate":"2021-07-20"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String DOMAIN_REGEX \u003d \"(\" + DOMAIN_PART_REGEX + \"\\\\.)*\" + DOMAIN_LAST_PART_REGEX;","lastModifiedDate":"2021-07-20"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d LOCAL_PART_REGEX + \"@\" + DOMAIN_REGEX;","lastModifiedDate":"2021-07-20"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public final String value;","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Constructs an {@code Email}.","lastModifiedDate":"2017-05-30"},{"lineNumber":38,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * @param email A valid email address.","lastModifiedDate":"2017-05-30"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public Email(String email) {","lastModifiedDate":"2017-05-30"},{"lineNumber":42,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":" checkArgument(isValidEmail(email), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":44,"author":{"gitId":"-"},"content":" value \u003d email;","lastModifiedDate":"2018-08-14"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Returns if a given string is a valid email.","lastModifiedDate":"2018-04-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static boolean isValidEmail(String test) {","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" return value;","lastModifiedDate":"2016-08-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" if (!(other instanceof Email)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" Email otherEmail \u003d (Email) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return value.equals(otherEmail.value);","lastModifiedDate":"2023-07-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return value.hashCode();","lastModifiedDate":"2016-08-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"jskimdev":2,"-":77}},{"path":"src/main/java/seedu/address/model/patient/Name.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jskimdev"},"content":"package seedu.address.model.patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"jskimdev"},"content":" * Represents a Patient\u0027s name in the address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidName(String)}","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Name {","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2018-09-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \"Names should only contain alphanumeric characters and spaces, and it should not be blank\";","lastModifiedDate":"2018-04-04"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2017-01-16"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2017-01-16"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2017-01-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d \"[\\\\p{Alnum}][\\\\p{Alnum} ]*\";","lastModifiedDate":"2018-09-22"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public final String fullName;","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Constructs a {@code Name}.","lastModifiedDate":"2017-05-30"},{"lineNumber":25,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * @param name A valid name.","lastModifiedDate":"2017-05-30"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public Name(String name) {","lastModifiedDate":"2017-05-30"},{"lineNumber":29,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":" checkArgument(isValidName(name), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":31,"author":{"gitId":"-"},"content":" fullName \u003d name;","lastModifiedDate":"2018-08-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid name.","lastModifiedDate":"2018-04-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static boolean isValidName(String test) {","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" return fullName;","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (!(other instanceof Name)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" Name otherName \u003d (Name) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return fullName.equals(otherName.fullName);","lastModifiedDate":"2023-07-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return fullName.hashCode();","lastModifiedDate":"2016-08-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"jskimdev":2,"-":65}},{"path":"src/main/java/seedu/address/model/patient/NameContainsKeywordsPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jskimdev"},"content":"package seedu.address.model.patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-06-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":10,"author":{"gitId":"jskimdev"},"content":" * Tests that a {@code Patient}\u0027s {@code Name} matches any of the keywords given.","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":12,"author":{"gitId":"jskimdev"},"content":"public class NameContainsKeywordsPredicate implements Predicate\u003cPatient\u003e {","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":" private final List\u003cString\u003e keywords;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public NameContainsKeywordsPredicate(List\u003cString\u003e keywords) {","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":" this.keywords \u003d keywords;","lastModifiedDate":"2017-06-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"jskimdev"},"content":" public boolean test(Patient patient) {","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":" return keywords.stream()","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"jskimdev"},"content":" .anyMatch(keyword -\u003e StringUtil.containsWordIgnoreCase(patient.getName().fullName, keyword));","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" if (!(other instanceof NameContainsKeywordsPredicate)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate otherNameContainsKeywordsPredicate \u003d (NameContainsKeywordsPredicate) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" return keywords.equals(otherNameContainsKeywordsPredicate.keywords);","lastModifiedDate":"2023-07-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this).add(\"keywords\", keywords).toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"jskimdev":5,"-":39}},{"path":"src/main/java/seedu/address/model/patient/Patient.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jskimdev"},"content":"package seedu.address.model.patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"jskimdev"},"content":" * Represents a Patient in the address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2017-12-20"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"jskimdev"},"content":"public class Patient {","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":" private final Phone phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private final Email email;","lastModifiedDate":"2017-12-20"},{"lineNumber":19,"author":{"gitId":"jskimdev"},"content":" private final DateOfBirth dateOfBirth;","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"jskimdev"},"content":" private final Sex sex;","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final Address address;","lastModifiedDate":"2018-04-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"jskimdev"},"content":" public Patient(Name name, Phone phone, Email email, Address address, DateOfBirth dateOfBirth, Sex sex) {","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"jskimdev"},"content":" requireAllNonNull(name, phone, email, address, dateOfBirth, sex);","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20"},{"lineNumber":31,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":32,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20"},{"lineNumber":33,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-12-20"},{"lineNumber":34,"author":{"gitId":"jskimdev"},"content":" this.dateOfBirth \u003d dateOfBirth;","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"jskimdev"},"content":" this.sex \u003d sex;","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2017-07-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":" return phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2017-12-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public Address getAddress() {","lastModifiedDate":"2017-07-12"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return address;","lastModifiedDate":"2017-12-20"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":54,"author":{"gitId":"jskimdev"},"content":" public DateOfBirth getDateOfBirth() {","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"jskimdev"},"content":" return dateOfBirth;","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":58,"author":{"gitId":"jskimdev"},"content":" public Sex getSex() {","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"jskimdev"},"content":" return sex;","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same name.","lastModifiedDate":"2020-12-18"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":66,"author":{"gitId":"jskimdev"},"content":" public boolean isSamePatient(Patient otherPatient) {","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"jskimdev"},"content":" if (otherPatient \u003d\u003d this) {","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":71,"author":{"gitId":"jskimdev"},"content":" return otherPatient !\u003d null","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"jskimdev"},"content":" \u0026\u0026 otherPatient.getName().equals(getName())","lastModifiedDate":"2024-03-22"},{"lineNumber":73,"author":{"gitId":"jskimdev"},"content":" \u0026\u0026 otherPatient.getPhone().equals(getPhone());","lastModifiedDate":"2024-03-22"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":77,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":82,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10"},{"lineNumber":83,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":86,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":87,"author":{"gitId":"jskimdev"},"content":" if (!(other instanceof Patient)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":88,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":91,"author":{"gitId":"jskimdev"},"content":" Patient otherPatient \u003d (Patient) other;","lastModifiedDate":"2024-03-19"},{"lineNumber":92,"author":{"gitId":"jskimdev"},"content":" return name.equals(otherPatient.name)","lastModifiedDate":"2024-03-19"},{"lineNumber":93,"author":{"gitId":"jskimdev"},"content":" \u0026\u0026 phone.equals(otherPatient.phone)","lastModifiedDate":"2024-03-19"},{"lineNumber":94,"author":{"gitId":"jskimdev"},"content":" \u0026\u0026 email.equals(otherPatient.email)","lastModifiedDate":"2024-03-19"},{"lineNumber":95,"author":{"gitId":"jskimdev"},"content":" \u0026\u0026 address.equals(otherPatient.address)","lastModifiedDate":"2024-03-19"},{"lineNumber":96,"author":{"gitId":"jskimdev"},"content":" \u0026\u0026 dateOfBirth.equals(otherPatient.dateOfBirth)","lastModifiedDate":"2024-03-19"},{"lineNumber":97,"author":{"gitId":"jskimdev"},"content":" \u0026\u0026 sex.equals(otherPatient.sex);","lastModifiedDate":"2024-03-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":100,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":101,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":102,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24"},{"lineNumber":103,"author":{"gitId":"jskimdev"},"content":" return Objects.hash(name, phone, email, address, dateOfBirth, sex);","lastModifiedDate":"2024-03-18"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":108,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":113,"author":{"gitId":"jskimdev"},"content":" .add(\"date of birth\", dateOfBirth)","lastModifiedDate":"2024-03-17"},{"lineNumber":114,"author":{"gitId":"jskimdev"},"content":" .add(\"sex\", sex)","lastModifiedDate":"2024-03-18"},{"lineNumber":115,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":118,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"jskimdev":29,"-":89}},{"path":"src/main/java/seedu/address/model/patient/Phone.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jskimdev"},"content":"package seedu.address.model.patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"jskimdev"},"content":" * Represents a Patient\u0027s phone number in the address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidPhone(String)}","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Phone {","lastModifiedDate":"2016-09-21"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2018-09-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \"Phone numbers should only contain numbers, and it should be at least 3 digits long\";","lastModifiedDate":"2018-04-04"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d \"\\\\d{3,}\";","lastModifiedDate":"2018-09-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public final String value;","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Constructs a {@code Phone}.","lastModifiedDate":"2017-05-30"},{"lineNumber":20,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * @param phone A valid phone number.","lastModifiedDate":"2017-05-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public Phone(String phone) {","lastModifiedDate":"2017-05-30"},{"lineNumber":24,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" checkArgument(isValidPhone(phone), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":26,"author":{"gitId":"-"},"content":" value \u003d phone;","lastModifiedDate":"2018-08-14"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid phone number.","lastModifiedDate":"2018-04-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static boolean isValidPhone(String test) {","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" return value;","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" if (!(other instanceof Phone)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" Phone otherPhone \u003d (Phone) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return value.equals(otherPhone.value);","lastModifiedDate":"2023-07-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return value.hashCode();","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"jskimdev":2,"-":59}},{"path":"src/main/java/seedu/address/model/patient/PhoneMatchesPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Vision-2000"},"content":"package seedu.address.model.patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"Vision-2000"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"Vision-2000"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"Vision-2000"},"content":"/**","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"Vision-2000"},"content":" * Tests that a {@code Person}\u0027s {@code Phone} matches the number given.","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"Vision-2000"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"Vision-2000"},"content":"public class PhoneMatchesPredicate implements Predicate\u003cPatient\u003e {","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"Vision-2000"},"content":" private final Phone phone;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"Vision-2000"},"content":" public PhoneMatchesPredicate(Phone phone) {","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"Vision-2000"},"content":" this.phone \u003d phone;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"Vision-2000"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"Vision-2000"},"content":" public boolean test(Patient patient) {","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"Vision-2000"},"content":" if (patient \u003d\u003d null) {","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"Vision-2000"},"content":" return false;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"Vision-2000"},"content":" return patient.getPhone().equals(this.phone);","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"Vision-2000"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"Vision-2000"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"Vision-2000"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"Vision-2000"},"content":" return true;","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"Vision-2000"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"Vision-2000"},"content":" if (!(other instanceof PhoneMatchesPredicate)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"Vision-2000"},"content":" return false;","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"Vision-2000"},"content":" PhoneMatchesPredicate otherPhoneMatchesPredicate \u003d (PhoneMatchesPredicate) other;","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"Vision-2000"},"content":" return phone.equals(otherPhoneMatchesPredicate.phone);","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"Vision-2000"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"Vision-2000"},"content":" public String toString() {","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"Vision-2000"},"content":" return new ToStringBuilder(this).add(\"phone\", phone).toString();","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"Vision-2000"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"Vision-2000":44}},{"path":"src/main/java/seedu/address/model/patient/Sex.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jskimdev"},"content":"package seedu.address.model.patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"jskimdev"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"jskimdev"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"jskimdev"},"content":" * Represents a Patient\u0027s sex in the patient list.","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"jskimdev"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidSex(String)}","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"jskimdev"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"jskimdev"},"content":"public class Sex {","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"jskimdev"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Sex should only be Male or Female\";","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"jskimdev"},"content":" public final SexOption sex;","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"jskimdev"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"jskimdev"},"content":" * Constructus a {@code Sex}.","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"jskimdev"},"content":" *","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"jskimdev"},"content":" * @param sex A valid sex.","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"jskimdev"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"jskimdev"},"content":" public Sex(String sex) {","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"jskimdev"},"content":" requireNonNull(sex);","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"jskimdev"},"content":" checkArgument(isValidSex(sex), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"jskimdev"},"content":" this.sex \u003d assignSex(sex);","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"jskimdev"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"jskimdev"},"content":" * Returns true if a given string is a valid sex.","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"jskimdev"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"jskimdev"},"content":" public static boolean isValidSex(String test) {","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"jskimdev"},"content":" return test.equals(\"Male\") || test.equals(\"Female\") ? true : false;","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"jskimdev"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"jskimdev"},"content":" * Assign one of SexOption, Male or Female, depending on the sex input.","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"jskimdev"},"content":" *","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"jskimdev"},"content":" * @param sex sex input.","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"jskimdev"},"content":" * @return one of SexOption","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"jskimdev"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"jskimdev"},"content":" public SexOption assignSex(String sex) {","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"jskimdev"},"content":" if (sex.equals(\"Male\")) {","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"jskimdev"},"content":" return SexOption.MALE;","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"jskimdev"},"content":" } else if (sex.equals(\"Female\")) {","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"jskimdev"},"content":" return SexOption.FEMALE;","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"jskimdev"},"content":" } else {","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"jskimdev"},"content":" return null;","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"jskimdev"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"jskimdev"},"content":" public String toString() {","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"jskimdev"},"content":" return sex.getLabel();","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"jskimdev"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"jskimdev"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"jskimdev"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"jskimdev"},"content":" return true;","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"jskimdev"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"jskimdev"},"content":" if (!(other instanceof Sex)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"jskimdev"},"content":" return false;","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"jskimdev"},"content":" Sex otherSex \u003d (Sex) other;","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"jskimdev"},"content":" return sex.equals(otherSex.sex);","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"jskimdev"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"jskimdev"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"jskimdev"},"content":" return sex.hashCode();","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"jskimdev"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"jskimdev":73}},{"path":"src/main/java/seedu/address/model/patient/SexOption.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jskimdev"},"content":"package seedu.address.model.patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"jskimdev"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"jskimdev"},"content":" * Represents one of sex, Male or Female.","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"jskimdev"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"jskimdev"},"content":"public enum SexOption {","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"jskimdev"},"content":" MALE(\"Male\"),","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"jskimdev"},"content":" FEMALE(\"Female\");","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"jskimdev"},"content":" private final String label;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"jskimdev"},"content":" SexOption(String label) {","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"jskimdev"},"content":" this.label \u003d label;","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"jskimdev"},"content":" public String getLabel() {","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"jskimdev"},"content":" return label;","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"jskimdev"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"jskimdev":19}},{"path":"src/main/java/seedu/address/model/patient/UniquePatientList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jskimdev"},"content":"package seedu.address.model.patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2018-01-10"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Iterator;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.exceptions.DuplicatePatientException;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.exceptions.PatientNotFoundException;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"jskimdev"},"content":" * A list of patients that enforces uniqueness between its elements and does not allow nulls.","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"jskimdev"},"content":" * A patient is considered unique by comparing using {@code Patient#isSamePerson(Patient)}. As such,","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"jskimdev"},"content":" * adding and updating of persons uses Patient#isSamePerson(Patient) for equality so as to ensure that the patient","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"jskimdev"},"content":" * being added or updated is unique in terms of identity in the UniquePersonList. However, the removal of a patient","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"jskimdev"},"content":" * uses Patient#equals(Object) so as to ensure that the patient with exactly the same fields will be removed.","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Supports a minimal set of list operations.","lastModifiedDate":"2016-09-22"},{"lineNumber":22,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"jskimdev"},"content":" * @see Patient#isSamePatient(Patient)","lastModifiedDate":"2024-03-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"jskimdev"},"content":"public class UniquePatientList implements Iterable\u003cPatient\u003e {","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"jskimdev"},"content":" private final ObservableList\u003cPatient\u003e internalList \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"jskimdev"},"content":" private final ObservableList\u003cPatient\u003e internalUnmodifiableList \u003d","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" FXCollections.unmodifiableObservableList(internalList);","lastModifiedDate":"2018-12-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"jskimdev"},"content":" * Returns true if the list contains an equivalent patient as the given argument.","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"jskimdev"},"content":" public boolean contains(Patient toCheck) {","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":" requireNonNull(toCheck);","lastModifiedDate":"2017-05-15"},{"lineNumber":36,"author":{"gitId":"jskimdev"},"content":" return internalList.stream().anyMatch(toCheck::isSamePatient);","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"jskimdev"},"content":" * Adds a patient to the list.","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"jskimdev"},"content":" * The patient must not already exist in the list.","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"jskimdev"},"content":" public void add(Patient toAdd) {","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"-"},"content":" requireNonNull(toAdd);","lastModifiedDate":"2017-05-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":" if (contains(toAdd)) {","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"jskimdev"},"content":" throw new DuplicatePatientException();","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" internalList.add(toAdd);","lastModifiedDate":"2018-01-10"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":52,"author":{"gitId":"jskimdev"},"content":" * Replaces the patient {@code target} in the list with {@code editedPatient}.","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * {@code target} must exist in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":54,"author":{"gitId":"jskimdev"},"content":" * The patient identity of {@code editedPatient} must not be the same as another existing patient in the list.","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":56,"author":{"gitId":"jskimdev"},"content":" public void setPatient(Patient target, Patient editedPatient) {","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"jskimdev"},"content":" requireAllNonNull(target, editedPatient);","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" int index \u003d internalList.indexOf(target);","lastModifiedDate":"2017-06-07"},{"lineNumber":60,"author":{"gitId":"-"},"content":" if (index \u003d\u003d -1) {","lastModifiedDate":"2017-06-07"},{"lineNumber":61,"author":{"gitId":"jskimdev"},"content":" throw new PatientNotFoundException();","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-07"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-07"},{"lineNumber":64,"author":{"gitId":"jskimdev"},"content":" if (!target.isSamePatient(editedPatient) \u0026\u0026 contains(editedPatient)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"jskimdev"},"content":" throw new DuplicatePatientException();","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":68,"author":{"gitId":"jskimdev"},"content":" internalList.set(index, editedPatient);","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":72,"author":{"gitId":"jskimdev"},"content":" * Removes the equivalent patient from the list.","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"jskimdev"},"content":" * The patient must exist in the list.","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":75,"author":{"gitId":"jskimdev"},"content":" public void remove(Patient toRemove) {","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":" requireNonNull(toRemove);","lastModifiedDate":"2017-05-15"},{"lineNumber":77,"author":{"gitId":"-"},"content":" if (!internalList.remove(toRemove)) {","lastModifiedDate":"2018-02-28"},{"lineNumber":78,"author":{"gitId":"jskimdev"},"content":" throw new PatientNotFoundException();","lastModifiedDate":"2024-03-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":82,"author":{"gitId":"jskimdev"},"content":" public void setPatients(UniquePatientList replacement) {","lastModifiedDate":"2024-03-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":" requireNonNull(replacement);","lastModifiedDate":"2018-08-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":" internalList.setAll(replacement.internalList);","lastModifiedDate":"2018-08-14"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":88,"author":{"gitId":"jskimdev"},"content":" * Replaces the contents of this list with {@code patients}.","lastModifiedDate":"2024-03-19"},{"lineNumber":89,"author":{"gitId":"jskimdev"},"content":" * {@code patients} must not contain duplicate patients.","lastModifiedDate":"2024-03-19"},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":91,"author":{"gitId":"jskimdev"},"content":" public void setPatients(List\u003cPatient\u003e patients) {","lastModifiedDate":"2024-03-19"},{"lineNumber":92,"author":{"gitId":"jskimdev"},"content":" requireAllNonNull(patients);","lastModifiedDate":"2024-03-19"},{"lineNumber":93,"author":{"gitId":"jskimdev"},"content":" if (!patientsAreUnique(patients)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":94,"author":{"gitId":"jskimdev"},"content":" throw new DuplicatePatientException();","lastModifiedDate":"2024-03-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-21"},{"lineNumber":97,"author":{"gitId":"jskimdev"},"content":" internalList.setAll(patients);","lastModifiedDate":"2024-03-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":100,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-09-01"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * Returns the backing list as an unmodifiable {@code ObservableList}.","lastModifiedDate":"2017-09-01"},{"lineNumber":102,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-09-01"},{"lineNumber":103,"author":{"gitId":"jskimdev"},"content":" public ObservableList\u003cPatient\u003e asUnmodifiableObservableList() {","lastModifiedDate":"2024-03-19"},{"lineNumber":104,"author":{"gitId":"-"},"content":" return internalUnmodifiableList;","lastModifiedDate":"2018-12-09"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":108,"author":{"gitId":"jskimdev"},"content":" public Iterator\u003cPatient\u003e iterator() {","lastModifiedDate":"2024-03-19"},{"lineNumber":109,"author":{"gitId":"-"},"content":" return internalList.iterator();","lastModifiedDate":"2016-08-24"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":113,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-21"},{"lineNumber":114,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":119,"author":{"gitId":"jskimdev"},"content":" if (!(other instanceof UniquePatientList)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":120,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":123,"author":{"gitId":"jskimdev"},"content":" UniquePatientList otherUniquePatientList \u003d (UniquePatientList) other;","lastModifiedDate":"2024-03-19"},{"lineNumber":124,"author":{"gitId":"jskimdev"},"content":" return internalList.equals(otherUniquePatientList.internalList);","lastModifiedDate":"2024-03-19"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":128,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-21"},{"lineNumber":129,"author":{"gitId":"-"},"content":" return internalList.hashCode();","lastModifiedDate":"2016-09-21"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-24"},{"lineNumber":133,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-24"},{"lineNumber":134,"author":{"gitId":"-"},"content":" return internalList.toString();","lastModifiedDate":"2019-02-24"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-24"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-24"},{"lineNumber":137,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":138,"author":{"gitId":"jskimdev"},"content":" * Returns true if {@code patients} contains only unique patients.","lastModifiedDate":"2024-03-19"},{"lineNumber":139,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":140,"author":{"gitId":"jskimdev"},"content":" private boolean patientsAreUnique(List\u003cPatient\u003e patients) {","lastModifiedDate":"2024-03-19"},{"lineNumber":141,"author":{"gitId":"jskimdev"},"content":" for (int i \u003d 0; i \u003c patients.size() - 1; i++) {","lastModifiedDate":"2024-03-19"},{"lineNumber":142,"author":{"gitId":"jskimdev"},"content":" for (int j \u003d i + 1; j \u003c patients.size(); j++) {","lastModifiedDate":"2024-03-19"},{"lineNumber":143,"author":{"gitId":"jskimdev"},"content":" if (patients.get(i).isSamePatient(patients.get(j))) {","lastModifiedDate":"2024-03-19"},{"lineNumber":144,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-04-19"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":148,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":150,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"jskimdev":49,"-":101}},{"path":"src/main/java/seedu/address/model/patient/exceptions/DuplicatePatientException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jskimdev"},"content":"package seedu.address.model.patient.exceptions;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-09"},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Signals that the operation will result in duplicate Persons (Persons are considered duplicates if they have the same","lastModifiedDate":"2018-04-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":" * identity).","lastModifiedDate":"2018-04-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-09"},{"lineNumber":7,"author":{"gitId":"jskimdev"},"content":"public class DuplicatePatientException extends RuntimeException {","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"jskimdev"},"content":" public DuplicatePatientException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":" super(\"Operation would result in duplicate persons\");","lastModifiedDate":"2017-06-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-09"}],"authorContributionMap":{"jskimdev":3,"-":8}},{"path":"src/main/java/seedu/address/model/patient/exceptions/PatientNotFoundException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jskimdev"},"content":"package seedu.address.model.patient.exceptions;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"jskimdev"},"content":"/**","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"jskimdev"},"content":" * Signals that the operation is unable to find the specified patient.","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"jskimdev"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"jskimdev"},"content":"public class PatientNotFoundException extends RuntimeException {}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"jskimdev":6}},{"path":"src/main/java/seedu/address/model/util/SampleDataUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.util;","lastModifiedDate":"2016-12-20"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-12-20"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-12-20"},{"lineNumber":5,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Address;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.DateOfBirth;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Email;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Name;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Phone;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Sex;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20"},{"lineNumber":17,"author":{"gitId":"jskimdev"},"content":" public static Patient[] getSamplePersons() {","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"jskimdev"},"content":" return new Patient[] {","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"jskimdev"},"content":" new Patient(new Name(\"Alex Yeoh\"), new Phone(\"87438807\"), new Email(\"alexyeoh@example.com\"),","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":" new Address(\"Blk 30 Geylang Street 29, #06-40\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":21,"author":{"gitId":"jskimdev"},"content":" new DateOfBirth(\"25/2/2024\"), new Sex(\"Male\")),","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"jskimdev"},"content":" new Patient(new Name(\"Bernice Yu\"), new Phone(\"99272758\"), new Email(\"berniceyu@example.com\"),","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":" new Address(\"Blk 30 Lorong 3 Serangoon Gardens, #07-18\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":24,"author":{"gitId":"Vision-2000"},"content":" new DateOfBirth(\"2024-2-25\"), new Sex(\"Female\")),","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"jskimdev"},"content":" new Patient(new Name(\"Charlotte Oliveiro\"), new Phone(\"93210283\"), new Email(\"charlotte@example.com\"),","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" new Address(\"Blk 11 Ang Mo Kio Street 74, #11-04\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":27,"author":{"gitId":"Vision-2000"},"content":" new DateOfBirth(\"12/12/2024\"), new Sex(\"Female\")),","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"jskimdev"},"content":" new Patient(new Name(\"David Li\"), new Phone(\"91031282\"), new Email(\"lidavid@example.com\"),","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" new Address(\"Blk 436 Serangoon Gardens Street 26, #16-43\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":30,"author":{"gitId":"jskimdev"},"content":" new DateOfBirth(\"25/2/2024\"), new Sex(\"Male\")),","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"jskimdev"},"content":" new Patient(new Name(\"Irfan Ibrahim\"), new Phone(\"92492021\"), new Email(\"irfan@example.com\"),","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":" new Address(\"Blk 47 Tampines Street 20, #17-35\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":33,"author":{"gitId":"jskimdev"},"content":" new DateOfBirth(\"25/2/2024\"), new Sex(\"Male\")),","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"jskimdev"},"content":" new Patient(new Name(\"Roy Balakrishnan\"), new Phone(\"92624417\"), new Email(\"royb@example.com\"),","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":" new Address(\"Blk 45 Aljunied Street 85, #11-31\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":36,"author":{"gitId":"jskimdev"},"content":" new DateOfBirth(\"25/2/2024\"), new Sex(\"Male\")),","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20"},{"lineNumber":41,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07"},{"lineNumber":42,"author":{"gitId":"jskimdev"},"content":" for (Patient samplePatient : getSamplePersons()) {","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"jskimdev"},"content":" sampleAb.addPerson(samplePatient);","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":45,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":47,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20"}],"authorContributionMap":{"jskimdev":21,"-":24,"Vision-2000":2}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedPerson.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Address;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.DateOfBirth;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Email;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Name;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Phone;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Sex;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":15,"author":{"gitId":"jskimdev"},"content":" * Jackson-friendly version of {@link Patient}.","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"class JsonAdaptedPerson {","lastModifiedDate":"2018-12-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"jskimdev"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Patient\u0027s %s field is missing!\";","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private final String name;","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final String phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final String address;","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"jskimdev"},"content":" private final String dateOfBirth;","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"jskimdev"},"content":" private final String sex;","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"jskimdev"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given patient details.","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(@JsonProperty(\"name\") String name, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @JsonProperty(\"email\") String email, @JsonProperty(\"address\") String address,","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"jskimdev"},"content":" @JsonProperty(\"date of birth\") String dateOfBirth,","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"jskimdev"},"content":" @JsonProperty(\"sex\") String sex) {","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"jskimdev"},"content":" this.dateOfBirth \u003d dateOfBirth;","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"jskimdev"},"content":" this.sex \u003d sex;","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"jskimdev"},"content":" * Converts a given {@code Patient} into this class for Jackson use.","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"jskimdev"},"content":" public JsonAdaptedPerson(Patient source) {","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" phone \u003d source.getPhone().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" address \u003d source.getAddress().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"jskimdev"},"content":" dateOfBirth \u003d source.getDateOfBirth().dateOfBirth.toString();","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"jskimdev"},"content":" sex \u003d source.getSex().sex.getLabel();","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"jskimdev"},"content":" * Converts this Jackson-friendly adapted patient object into the model\u0027s {@code Patient} object.","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":59,"author":{"gitId":"jskimdev"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted patient.","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":61,"author":{"gitId":"jskimdev"},"content":" public Patient toModelType() throws IllegalValueException {","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" if (address \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(address)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":" final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2018-08-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":95,"author":{"gitId":"jskimdev"},"content":" if (dateOfBirth \u003d\u003d null) {","lastModifiedDate":"2024-03-17"},{"lineNumber":96,"author":{"gitId":"jskimdev"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-03-17"},{"lineNumber":97,"author":{"gitId":"jskimdev"},"content":" DateOfBirth.class.getSimpleName()));","lastModifiedDate":"2024-03-17"},{"lineNumber":98,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":99,"author":{"gitId":"jskimdev"},"content":" if (!DateOfBirth.isValidDateOfBirth(dateOfBirth)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":100,"author":{"gitId":"jskimdev"},"content":" throw new IllegalValueException(DateOfBirth.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":101,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":102,"author":{"gitId":"jskimdev"},"content":" final DateOfBirth modelDateOfBirth \u003d new DateOfBirth(dateOfBirth);","lastModifiedDate":"2024-03-17"},{"lineNumber":103,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":104,"author":{"gitId":"jskimdev"},"content":" if (sex \u003d\u003d null) {","lastModifiedDate":"2024-03-18"},{"lineNumber":105,"author":{"gitId":"jskimdev"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-03-18"},{"lineNumber":106,"author":{"gitId":"jskimdev"},"content":" Sex.class.getSimpleName()));","lastModifiedDate":"2024-03-18"},{"lineNumber":107,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":108,"author":{"gitId":"jskimdev"},"content":" if (!Sex.isValidSex(sex)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":109,"author":{"gitId":"jskimdev"},"content":" throw new IllegalValueException(Sex.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-18"},{"lineNumber":110,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":111,"author":{"gitId":"jskimdev"},"content":" final Sex modelSex \u003d new Sex(sex);","lastModifiedDate":"2024-03-18"},{"lineNumber":112,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":113,"author":{"gitId":"jskimdev"},"content":" return new Patient(modelName, modelPhone, modelEmail, modelAddress, modelDateOfBirth, modelSex);","lastModifiedDate":"2024-03-19"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"jskimdev":42,"-":74}},{"path":"src/main/java/seedu/address/storage/JsonSerializableAddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonRootName;","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2018-08-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * An Immutable AddressBook that is serializable to JSON format.","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":"@JsonRootName(value \u003d \"addressbook\")","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"class JsonSerializableAddressBook {","lastModifiedDate":"2018-12-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"jskimdev"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"Persons list contains duplicate patient(s).\";","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedPerson\u003e persons \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonSerializableAddressBook} with the given persons.","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public JsonSerializableAddressBook(@JsonProperty(\"persons\") List\u003cJsonAdaptedPerson\u003e persons) {","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" this.persons.addAll(persons);","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Converts a given {@code ReadOnlyAddressBook} into this class for Jackson use.","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * @param source future changes to this will not affect the created {@code JsonSerializableAddressBook}.","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public JsonSerializableAddressBook(ReadOnlyAddressBook source) {","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" persons.addAll(source.getPersonList().stream().map(JsonAdaptedPerson::new).collect(Collectors.toList()));","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Converts this address book into the model\u0027s {@code AddressBook} object.","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated.","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public AddressBook toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" for (JsonAdaptedPerson jsonAdaptedPerson : persons) {","lastModifiedDate":"2018-08-13"},{"lineNumber":51,"author":{"gitId":"jskimdev"},"content":" Patient patient \u003d jsonAdaptedPerson.toModelType();","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"jskimdev"},"content":" if (addressBook.hasPerson(patient)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"jskimdev"},"content":" addressBook.addPerson(patient);","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"jskimdev":5,"-":55}},{"path":"src/main/java/seedu/address/ui/HelpWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-12-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2019-08-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2019-08-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.input.Clipboard;","lastModifiedDate":"2019-08-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.input.ClipboardContent;","lastModifiedDate":"2019-08-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Controller for a help page","lastModifiedDate":"2016-08-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class HelpWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-12-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":18,"author":{"gitId":"Vision-2000"},"content":" public static final String USERGUIDE_URL \u003d \"https://ay2324s2-cs2103t-t14-2.github.io/tp/UserGuide.html\";","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String HELP_MESSAGE \u003d \"Refer to the user guide: \" + USERGUIDE_URL;","lastModifiedDate":"2019-08-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(HelpWindow.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"HelpWindow.fxml\";","lastModifiedDate":"2016-09-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-12-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private Button copyButton;","lastModifiedDate":"2019-08-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-08-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2019-08-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Label helpMessage;","lastModifiedDate":"2019-08-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-12-01"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-12-01"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * @param root Stage to use as the root of the HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-12-01"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public HelpWindow(Stage root) {","lastModifiedDate":"2017-12-01"},{"lineNumber":36,"author":{"gitId":"-"},"content":" super(FXML, root);","lastModifiedDate":"2017-12-01"},{"lineNumber":37,"author":{"gitId":"-"},"content":" helpMessage.setText(HELP_MESSAGE);","lastModifiedDate":"2019-08-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-12-01"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-12-01"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public HelpWindow() {","lastModifiedDate":"2017-12-01"},{"lineNumber":44,"author":{"gitId":"-"},"content":" this(new Stage());","lastModifiedDate":"2017-12-01"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-01"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-01"},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Shows the help window.","lastModifiedDate":"2017-08-16"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * @throws IllegalStateException","lastModifiedDate":"2017-08-16"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * \u003cul\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * if this method is called on a thread other than the JavaFX Application Thread.","lastModifiedDate":"2017-08-16"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * if this method is called during animation or layout processing.","lastModifiedDate":"2017-08-16"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * if this method is called on the primary stage.","lastModifiedDate":"2017-08-16"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * if {@code dialogStage} is already showing.","lastModifiedDate":"2017-08-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * \u003c/ul\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void show() {","lastModifiedDate":"2016-08-18"},{"lineNumber":66,"author":{"gitId":"-"},"content":" logger.fine(\"Showing help page about the application.\");","lastModifiedDate":"2016-12-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":" getRoot().show();","lastModifiedDate":"2018-02-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" getRoot().centerOnScreen();","lastModifiedDate":"2019-08-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-15"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * Returns true if the help window is currently being shown.","lastModifiedDate":"2018-03-15"},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-15"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public boolean isShowing() {","lastModifiedDate":"2018-03-15"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return getRoot().isShowing();","lastModifiedDate":"2018-03-15"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Hides the help window.","lastModifiedDate":"2018-12-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void hide() {","lastModifiedDate":"2018-12-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":" getRoot().hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-15"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Focuses on the help window.","lastModifiedDate":"2018-03-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void focus() {","lastModifiedDate":"2018-03-15"},{"lineNumber":89,"author":{"gitId":"-"},"content":" getRoot().requestFocus();","lastModifiedDate":"2018-03-15"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-08-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-08-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Copies the URL to the user guide to the clipboard.","lastModifiedDate":"2019-08-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-08-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2019-08-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":" private void copyUrl() {","lastModifiedDate":"2019-08-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":" final Clipboard clipboard \u003d Clipboard.getSystemClipboard();","lastModifiedDate":"2019-08-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" final ClipboardContent url \u003d new ClipboardContent();","lastModifiedDate":"2019-08-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" url.putString(USERGUIDE_URL);","lastModifiedDate":"2019-08-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":" clipboard.setContent(url);","lastModifiedDate":"2019-08-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-08-19"},{"lineNumber":102,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"-":101,"Vision-2000":1}},{"path":"src/main/java/seedu/address/ui/PersonCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-09-21"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2016-09-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2016-09-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24"},{"lineNumber":7,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":10,"author":{"gitId":"jskimdev"},"content":" * An UI component that displays information of a {@code Patient}.","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class PersonCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":14,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"PersonListCard.fxml\";","lastModifiedDate":"2016-09-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2017-03-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2017-03-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2017-03-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * @see \u003ca href\u003d\"https://github.com/se-edu/addressbook-level4/issues/336\"\u003eThe issue on AddressBook level 4\u003c/a\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":24,"author":{"gitId":"jskimdev"},"content":" public final Patient patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private HBox cardPane;","lastModifiedDate":"2016-09-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private Label name;","lastModifiedDate":"2016-09-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Label id;","lastModifiedDate":"2016-09-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private Label phone;","lastModifiedDate":"2016-09-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private Label address;","lastModifiedDate":"2016-09-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private Label email;","lastModifiedDate":"2016-09-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":39,"author":{"gitId":"jskimdev"},"content":" private Label dateOfBirth;","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"Vision-2000"},"content":" @FXML","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"Vision-2000"},"content":" private Label sex;","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":44,"author":{"gitId":"jskimdev"},"content":" * Creates a {@code PersonCode} with the given {@code Patient} and index to display.","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":46,"author":{"gitId":"jskimdev"},"content":" public PersonCard(Patient patient, int displayedIndex) {","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":48,"author":{"gitId":"jskimdev"},"content":" this.patient \u003d patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21"},{"lineNumber":50,"author":{"gitId":"jskimdev"},"content":" name.setText(patient.getName().fullName);","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"jskimdev"},"content":" phone.setText(patient.getPhone().value);","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"jskimdev"},"content":" address.setText(patient.getAddress().value);","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"jskimdev"},"content":" email.setText(patient.getEmail().value);","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"jskimdev"},"content":" dateOfBirth.setText(patient.getDateOfBirth().toString());","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"Vision-2000"},"content":" sex.setText(patient.getSex().toString());","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":57,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"jskimdev":12,"-":42,"Vision-2000":3}},{"path":"src/main/java/seedu/address/ui/PersonListPanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-08-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-08-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.ListCell;","lastModifiedDate":"2016-09-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.control.ListView;","lastModifiedDate":"2016-08-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Panel containing the list of persons.","lastModifiedDate":"2016-09-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class PersonListPanel extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"PersonListPanel.fxml\";","lastModifiedDate":"2016-09-14"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(PersonListPanel.class);","lastModifiedDate":"2017-04-01"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":21,"author":{"gitId":"jskimdev"},"content":" private ListView\u003cPatient\u003e personListView;","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Creates a {@code PersonListPanel} with the given {@code ObservableList}.","lastModifiedDate":"2020-05-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":26,"author":{"gitId":"jskimdev"},"content":" public PersonListPanel(ObservableList\u003cPatient\u003e patientList) {","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":28,"author":{"gitId":"jskimdev"},"content":" personListView.setItems(patientList);","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" personListView.setCellFactory(listView -\u003e new PersonListViewCell());","lastModifiedDate":"2016-08-18"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":33,"author":{"gitId":"jskimdev"},"content":" * Custom {@code ListCell} that displays the graphics of a {@code Patient} using a {@code PersonCard}.","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":35,"author":{"gitId":"jskimdev"},"content":" class PersonListViewCell extends ListCell\u003cPatient\u003e {","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":37,"author":{"gitId":"jskimdev"},"content":" protected void updateItem(Patient patient, boolean empty) {","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"jskimdev"},"content":" super.updateItem(patient, empty);","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":40,"author":{"gitId":"jskimdev"},"content":" if (empty || patient \u003d\u003d null) {","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":" setGraphic(null);","lastModifiedDate":"2016-09-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" setText(null);","lastModifiedDate":"2016-09-21"},{"lineNumber":43,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2016-09-21"},{"lineNumber":44,"author":{"gitId":"jskimdev"},"content":" setGraphic(new PersonCard(patient, getIndex() + 1).getRoot());","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"jskimdev":10,"-":39}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2016-08-26"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Menu?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuBar?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuItem?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.SplitPane?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"\u003cfx:root type\u003d\"javafx.stage.Stage\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"","lastModifiedDate":"2023-07-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":" title\u003d\"Address App\" minWidth\u003d\"450\" minHeight\u003d\"600\" onCloseRequest\u003d\"#handleExit\"\u003e","lastModifiedDate":"2018-12-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cicons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cImage url\u003d\"@/images/address_book_32.png\" /\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/icons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cscene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cScene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@DarkTheme.css\" /\u003e","lastModifiedDate":"2016-08-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@Extensions.css\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003cVBox\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cMenuBar fx:id\u003d\"menuBar\" VBox.vgrow\u003d\"NEVER\"\u003e","lastModifiedDate":"2017-06-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"File\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003cMenuItem mnemonicParsing\u003d\"false\" onAction\u003d\"#handleExit\" text\u003d\"Exit\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"Help\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cMenuItem fx:id\u003d\"helpMenuItem\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleHelp\" text\u003d\"Help\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003c/MenuBar\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"commandBoxPlaceholder\" styleClass\u003d\"pane-with-border\"\u003e","lastModifiedDate":"2017-05-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"resultDisplayPlaceholder\" styleClass\u003d\"pane-with-border\"","lastModifiedDate":"2017-05-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":" minHeight\u003d\"100\" prefHeight\u003d\"100\" maxHeight\u003d\"100\"\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":45,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":47,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":49,"author":{"gitId":"jskimdev"},"content":" \u003cVBox fx:id\u003d\"patientList\" styleClass\u003d\"pane-with-border\" minWidth\u003d\"340\" prefWidth\u003d\"340\" VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"10\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"personListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\"/\u003e","lastModifiedDate":"2017-06-21"},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"statusbarPlaceholder\" VBox.vgrow\u003d\"NEVER\" /\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003c/scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":60,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-11-29"}],"authorContributionMap":{"jskimdev":1,"-":59}},{"path":"src/main/resources/view/PersonListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003cHBox id\u003d\"cardPane\" fx:id\u003d\"cardPane\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-07-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2017-03-28"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"jskimdev"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"120\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003c/Label\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"name\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2016-09-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"jskimdev"},"content":" \u003cLabel fx:id\u003d\"dateOfBirth\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$dateOfBirth\" /\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"Vision-2000"},"content":" \u003cLabel fx:id\u003d\"sex\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$sex\" /\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"jskimdev":2,"-":34,"Vision-2000":1}},{"path":"src/test/java/seedu/address/logic/LogicManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DATEOFBIRTH_DESC_AMY;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SEX_DESC_AMY;","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":13,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.testutil.TypicalPatients.AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2018-12-09"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2017-01-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2016-09-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-09"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-31"},{"lineNumber":32,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-12-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2018-12-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2018-12-09"},{"lineNumber":36,"author":{"gitId":"jskimdev"},"content":"import seedu.address.testutil.PatientBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":"public class LogicManagerTest {","lastModifiedDate":"2016-09-22"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_IO_EXCEPTION \u003d new IOException(\"dummy IO exception\");","lastModifiedDate":"2023-06-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_AD_EXCEPTION \u003d new AccessDeniedException(\"dummy access denied exception\");","lastModifiedDate":"2023-06-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public Path temporaryFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":45,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2018-12-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2019-04-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d","lastModifiedDate":"2019-04-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(temporaryFolder.resolve(\"addressBook.json\"));","lastModifiedDate":"2019-04-25"},{"lineNumber":52,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2019-04-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2018-12-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void execute_invalidCommandFormat_throwsParseException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":59,"author":{"gitId":"-"},"content":" String invalidCommand \u003d \"uicfhmowqewca\";","lastModifiedDate":"2017-06-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertParseException(invalidCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-06-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-14"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void execute_commandExecutionError_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":65,"author":{"gitId":"-"},"content":" String deleteCommand \u003d \"delete 9\";","lastModifiedDate":"2017-06-14"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertCommandException(deleteCommand, MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2017-06-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void execute_validCommand_success() throws Exception {","lastModifiedDate":"2019-03-14"},{"lineNumber":71,"author":{"gitId":"-"},"content":" String listCommand \u003d ListCommand.COMMAND_WORD;","lastModifiedDate":"2017-06-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertCommandSuccess(listCommand, ListCommand.MESSAGE_SUCCESS, model);","lastModifiedDate":"2017-06-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2019-04-25"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-06-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-06-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2023-06-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":98,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":99,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14"},{"lineNumber":100,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14"},{"lineNumber":101,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14"},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":106,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":107,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a ParseException is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":108,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":109,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":110,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11"},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":114,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14"},{"lineNumber":115,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a CommandException is thrown and that the result message is correct.","lastModifiedDate":"2017-06-14"},{"lineNumber":116,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":117,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14"},{"lineNumber":118,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":123,"author":{"gitId":"-"},"content":" * Executes the command, confirms that the exception is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":124,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":126,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":127,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14"},{"lineNumber":128,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-05-31"},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":132,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":133,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":134,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":135,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":136,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":137,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":138,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":139,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":140,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31"},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14"},{"lineNumber":142,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19"},{"lineNumber":145,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":146,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13"},{"lineNumber":147,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13"},{"lineNumber":148,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13"},{"lineNumber":149,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13"},{"lineNumber":150,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":151,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13"},{"lineNumber":152,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":154,"author":{"gitId":"-"},"content":" // Inject LogicManager with an AddressBookStorage that throws the IOException e when saving","lastModifiedDate":"2023-06-13"},{"lineNumber":155,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(prefPath) {","lastModifiedDate":"2023-06-13"},{"lineNumber":156,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":157,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath)","lastModifiedDate":"2023-06-13"},{"lineNumber":158,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13"},{"lineNumber":159,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13"},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":161,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":163,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":164,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13"},{"lineNumber":165,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2023-06-13"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":167,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":169,"author":{"gitId":"-"},"content":" // Triggers the saveAddressBook method by executing an add command","lastModifiedDate":"2023-06-13"},{"lineNumber":170,"author":{"gitId":"-"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2023-06-13"},{"lineNumber":171,"author":{"gitId":"jskimdev"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + DATEOFBIRTH_DESC_AMY + SEX_DESC_AMY;","lastModifiedDate":"2024-03-18"},{"lineNumber":172,"author":{"gitId":"jskimdev"},"content":" Patient expectedPatient \u003d new PatientBuilder(AMY).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":173,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13"},{"lineNumber":174,"author":{"gitId":"jskimdev"},"content":" expectedModel.addPerson(expectedPatient);","lastModifiedDate":"2024-03-19"},{"lineNumber":175,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13"},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":177,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"jskimdev":8,"-":169}},{"path":"src/test/java/seedu/address/logic/commands/AddCommandIntegrationTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-15"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":5,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.testutil.TypicalPatients.getTypicalAddressBook;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-15"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-15"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-15"},{"lineNumber":14,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"jskimdev"},"content":"import seedu.address.testutil.PatientBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-15"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code AddCommand}.","lastModifiedDate":"2017-06-15"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-15"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class AddCommandIntegrationTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void execute_newPerson_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":31,"author":{"gitId":"jskimdev"},"content":" Patient validPatient \u003d new PatientBuilder().build();","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-15"},{"lineNumber":34,"author":{"gitId":"jskimdev"},"content":" expectedModel.addPerson(validPatient);","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":36,"author":{"gitId":"jskimdev"},"content":" assertCommandSuccess(new AddCommand(validPatient), model,","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"jskimdev"},"content":" String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validPatient)),","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":" expectedModel);","lastModifiedDate":"2019-02-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":43,"author":{"gitId":"jskimdev"},"content":" Patient patientInList \u003d model.getAddressBook().getPersonList().get(0);","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"jskimdev"},"content":" assertCommandFailure(new AddCommand(patientInList), model,","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"-"},"content":" AddCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"jskimdev":9,"-":39}},{"path":"src/test/java/seedu/address/logic/commands/AddCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-01-10"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.testutil.TypicalPatients.ALICE;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-05-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-05-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2017-05-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":25,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"jskimdev"},"content":"import seedu.address.testutil.PatientBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class AddCommandTest {","lastModifiedDate":"2017-05-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddCommand(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public void execute_personAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2017-05-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" ModelStubAcceptingPersonAdded modelStub \u003d new ModelStubAcceptingPersonAdded();","lastModifiedDate":"2017-05-12"},{"lineNumber":38,"author":{"gitId":"jskimdev"},"content":" Patient validPatient \u003d new PatientBuilder().build();","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":40,"author":{"gitId":"jskimdev"},"content":" CommandResult commandResult \u003d new AddCommand(validPatient).execute(modelStub);","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":42,"author":{"gitId":"jskimdev"},"content":" assertEquals(String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validPatient)),","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"jskimdev"},"content":" assertEquals(Arrays.asList(validPatient), modelStub.personsAdded);","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":49,"author":{"gitId":"jskimdev"},"content":" Patient validPatient \u003d new PatientBuilder().build();","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"jskimdev"},"content":" AddCommand addCommand \u003d new AddCommand(validPatient);","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"jskimdev"},"content":" ModelStub modelStub \u003d new ModelStubWithPerson(validPatient);","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, AddCommand.MESSAGE_DUPLICATE_PERSON, () -\u003e addCommand.execute(modelStub));","lastModifiedDate":"2019-05-03"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-22"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":58,"author":{"gitId":"jskimdev"},"content":" Patient alice \u003d new PatientBuilder().withName(\"Alice\").build();","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"jskimdev"},"content":" Patient bob \u003d new PatientBuilder().withName(\"Bob\").build();","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":" AddCommand addAliceCommand \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22"},{"lineNumber":61,"author":{"gitId":"-"},"content":" AddCommand addBobCommand \u003d new AddCommand(bob);","lastModifiedDate":"2017-06-22"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":63,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommand));","lastModifiedDate":"2017-06-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":66,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":67,"author":{"gitId":"-"},"content":" AddCommand addAliceCommandCopy \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommandCopy));","lastModifiedDate":"2017-06-22"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(1));","lastModifiedDate":"2017-06-22"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":73,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(null));","lastModifiedDate":"2017-06-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":76,"author":{"gitId":"jskimdev"},"content":" // different patient -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(addBobCommand));","lastModifiedDate":"2017-06-22"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(ALICE);","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" String expected \u003d AddCommand.class.getCanonicalName() + \"{toAdd\u003d\" + ALICE + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertEquals(expected, addCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2017-05-12"},{"lineNumber":89,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":90,"author":{"gitId":"-"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2017-05-12"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":93,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":101,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":102,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":108,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":112,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":113,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":117,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27"},{"lineNumber":118,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":122,"author":{"gitId":"jskimdev"},"content":" public void addPerson(Patient patient) {","lastModifiedDate":"2024-03-19"},{"lineNumber":123,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":127,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2018-11-27"},{"lineNumber":128,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":131,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":132,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-12"},{"lineNumber":133,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":136,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":137,"author":{"gitId":"jskimdev"},"content":" public boolean hasPerson(Patient patient) {","lastModifiedDate":"2024-03-19"},{"lineNumber":138,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":141,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":142,"author":{"gitId":"jskimdev"},"content":" public void deletePerson(Patient target) {","lastModifiedDate":"2024-03-19"},{"lineNumber":143,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":146,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":147,"author":{"gitId":"jskimdev"},"content":" public void setPerson(Patient target, Patient editedPatient) {","lastModifiedDate":"2024-03-19"},{"lineNumber":148,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":151,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":152,"author":{"gitId":"jskimdev"},"content":" public ObservableList\u003cPatient\u003e getFilteredPersonList() {","lastModifiedDate":"2024-03-19"},{"lineNumber":153,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":156,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":157,"author":{"gitId":"jskimdev"},"content":" public void updateFilteredPersonList(Predicate\u003cPatient\u003e predicate) {","lastModifiedDate":"2024-03-19"},{"lineNumber":158,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":162,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":163,"author":{"gitId":"jskimdev"},"content":" * A Model stub that contains a single patient.","lastModifiedDate":"2024-03-19"},{"lineNumber":164,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":165,"author":{"gitId":"-"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2018-08-07"},{"lineNumber":166,"author":{"gitId":"jskimdev"},"content":" private final Patient patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":168,"author":{"gitId":"jskimdev"},"content":" ModelStubWithPerson(Patient patient) {","lastModifiedDate":"2024-03-19"},{"lineNumber":169,"author":{"gitId":"jskimdev"},"content":" requireNonNull(patient);","lastModifiedDate":"2024-03-19"},{"lineNumber":170,"author":{"gitId":"jskimdev"},"content":" this.patient \u003d patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":173,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":174,"author":{"gitId":"jskimdev"},"content":" public boolean hasPerson(Patient patient) {","lastModifiedDate":"2024-03-19"},{"lineNumber":175,"author":{"gitId":"jskimdev"},"content":" requireNonNull(patient);","lastModifiedDate":"2024-03-19"},{"lineNumber":176,"author":{"gitId":"jskimdev"},"content":" return this.patient.isSamePatient(patient);","lastModifiedDate":"2024-03-19"},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":180,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":181,"author":{"gitId":"jskimdev"},"content":" * A Model stub that always accept the patient being added.","lastModifiedDate":"2024-03-19"},{"lineNumber":182,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":183,"author":{"gitId":"-"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2017-05-12"},{"lineNumber":184,"author":{"gitId":"jskimdev"},"content":" final ArrayList\u003cPatient\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-19"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":186,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07"},{"lineNumber":187,"author":{"gitId":"jskimdev"},"content":" public boolean hasPerson(Patient patient) {","lastModifiedDate":"2024-03-19"},{"lineNumber":188,"author":{"gitId":"jskimdev"},"content":" requireNonNull(patient);","lastModifiedDate":"2024-03-19"},{"lineNumber":189,"author":{"gitId":"jskimdev"},"content":" return personsAdded.stream().anyMatch(patient::isSamePatient);","lastModifiedDate":"2024-03-19"},{"lineNumber":190,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":192,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":193,"author":{"gitId":"jskimdev"},"content":" public void addPerson(Patient patient) {","lastModifiedDate":"2024-03-19"},{"lineNumber":194,"author":{"gitId":"jskimdev"},"content":" requireNonNull(patient);","lastModifiedDate":"2024-03-19"},{"lineNumber":195,"author":{"gitId":"jskimdev"},"content":" personsAdded.add(patient);","lastModifiedDate":"2024-03-19"},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":198,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":199,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04"},{"lineNumber":200,"author":{"gitId":"-"},"content":" return new AddressBook();","lastModifiedDate":"2017-05-04"},{"lineNumber":201,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":202,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":204,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12"}],"authorContributionMap":{"jskimdev":35,"-":169}},{"path":"src/test/java/seedu/address/logic/commands/CommandTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DATEOFBIRTH;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SEX;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-06-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05"},{"lineNumber":21,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"jskimdev"},"content":"import seedu.address.testutil.EditPatientDescriptorBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_AMY \u003d \"11111111\";","lastModifiedDate":"2017-07-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_BOB \u003d \"22222222\";","lastModifiedDate":"2017-07-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_AMY \u003d \"Block 312, Amy Street 1\";","lastModifiedDate":"2017-07-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_BOB \u003d \"Block 123, Bobby Street 3\";","lastModifiedDate":"2017-07-05"},{"lineNumber":38,"author":{"gitId":"jskimdev"},"content":" public static final String VALID_DATEOFBIRTH_AMY \u003d \"1/12/2024\";","lastModifiedDate":"2024-03-22"},{"lineNumber":39,"author":{"gitId":"jskimdev"},"content":" public static final String VALID_DATEOFBIRTH_BOB \u003d \"2024-1-3\";","lastModifiedDate":"2024-03-22"},{"lineNumber":40,"author":{"gitId":"jskimdev"},"content":" public static final String VALID_SEX_AMY \u003d \"Female\";","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"jskimdev"},"content":" public static final String VALID_SEX_BOB \u003d \"Male\";","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":51,"author":{"gitId":"jskimdev"},"content":" public static final String DATEOFBIRTH_DESC_AMY \u003d \" \" + PREFIX_DATEOFBIRTH + VALID_DATEOFBIRTH_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"jskimdev"},"content":" public static final String DATEOFBIRTH_DESC_BOB \u003d \" \" + PREFIX_DATEOFBIRTH + VALID_DATEOFBIRTH_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"jskimdev"},"content":" public static final String SEX_DESC_AMY \u003d \" \" + PREFIX_SEX + VALID_SEX_AMY;","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"jskimdev"},"content":" public static final String SEX_DESC_BOB \u003d \" \" + PREFIX_SEX + VALID_SEX_BOB;","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final String INVALID_NAME_DESC \u003d \" \" + PREFIX_NAME + \"James\u0026\"; // \u0027\u0026\u0027 not allowed in names","lastModifiedDate":"2017-07-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static final String INVALID_PHONE_DESC \u003d \" \" + PREFIX_PHONE + \"911a\"; // \u0027a\u0027 not allowed in phones","lastModifiedDate":"2017-07-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static final String INVALID_ADDRESS_DESC \u003d \" \" + PREFIX_ADDRESS; // empty string not allowed for addresses","lastModifiedDate":"2017-07-05"},{"lineNumber":60,"author":{"gitId":"jskimdev"},"content":" public static final String INVALID_DATEOFBIRTH_DESC \u003d \" \" + PREFIX_DATEOFBIRTH; // empty string not allowed for","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"jskimdev"},"content":" // date of birth","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"jskimdev"},"content":" public static final String INVALID_SEX_DESC \u003d \" \" + PREFIX_SEX + \"Others\";","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":67,"author":{"gitId":"jskimdev"},"content":" public static final EditCommand.EditPatientDescriptor DESC_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"jskimdev"},"content":" public static final EditCommand.EditPatientDescriptor DESC_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05"},{"lineNumber":71,"author":{"gitId":"jskimdev"},"content":" DESC_AMY \u003d new EditPatientDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-07-05"},{"lineNumber":73,"author":{"gitId":"jskimdev"},"content":" .withDateOfBirth(VALID_DATEOFBIRTH_AMY).withSex(VALID_SEX_AMY).build();","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"jskimdev"},"content":" DESC_BOB \u003d new EditPatientDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2024-03-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2017-07-05"},{"lineNumber":76,"author":{"gitId":"jskimdev"},"content":" .withDateOfBirth(VALID_DATEOFBIRTH_BOB).withSex(VALID_SEX_BOB).build();","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":79,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09"},{"lineNumber":82,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25"},{"lineNumber":83,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25"},{"lineNumber":85,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":86,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":90,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15"},{"lineNumber":91,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":95,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09"},{"lineNumber":98,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":99,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25"},{"lineNumber":100,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":101,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":105,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":106,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":107,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":108,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":109,"author":{"gitId":"jskimdev"},"content":" * - the address book, filtered patient list and selected patient in {@code actualModel} remain unchanged","lastModifiedDate":"2024-03-19"},{"lineNumber":110,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":111,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25"},{"lineNumber":112,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05"},{"lineNumber":113,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05"},{"lineNumber":114,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":115,"author":{"gitId":"jskimdev"},"content":" List\u003cPatient\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2024-03-19"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03"},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":121,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20"},{"lineNumber":122,"author":{"gitId":"jskimdev"},"content":" * Updates {@code model}\u0027s filtered list to show only the patient at the given {@code targetIndex} in the","lastModifiedDate":"2024-03-19"},{"lineNumber":123,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31"},{"lineNumber":124,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20"},{"lineNumber":125,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31"},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31"},{"lineNumber":128,"author":{"gitId":"jskimdev"},"content":" Patient patient \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2024-03-19"},{"lineNumber":129,"author":{"gitId":"jskimdev"},"content":" final String[] splitName \u003d patient.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2024-03-19"},{"lineNumber":130,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":132,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":135,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"jskimdev":27,"-":108}},{"path":"src/test/java/seedu/address/logic/commands/DeleteByIndexCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":11,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.testutil.TypicalPatients.getTypicalAddressBook;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-06-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-05"},{"lineNumber":20,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2020-12-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * {@code DeleteCommand}.","lastModifiedDate":"2018-01-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":26,"author":{"gitId":"jeong-jaeho"},"content":"public class DeleteByIndexCommandTest {","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void execute_validIndexUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":32,"author":{"gitId":"jskimdev"},"content":" Patient patientToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"jeong-jaeho"},"content":" DeleteByIndexCommand deleteByIndexCommand \u003d new DeleteByIndexCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":35,"author":{"gitId":"jeong-jaeho"},"content":" String expectedMessage \u003d String.format(DeleteByIndexCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"jskimdev"},"content":" Messages.format(patientToDelete));","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":39,"author":{"gitId":"jskimdev"},"content":" expectedModel.deletePerson(patientToDelete);","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":41,"author":{"gitId":"jeong-jaeho"},"content":" assertCommandSuccess(deleteByIndexCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-06-05"},{"lineNumber":47,"author":{"gitId":"jeong-jaeho"},"content":" DeleteByIndexCommand deleteByIndexCommand \u003d new DeleteByIndexCommand(outOfBoundIndex);","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":49,"author":{"gitId":"jeong-jaeho"},"content":" assertCommandFailure(deleteByIndexCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void execute_validIndexFilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":54,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":56,"author":{"gitId":"jskimdev"},"content":" Patient patientToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"jeong-jaeho"},"content":" DeleteByIndexCommand deleteByIndexCommand \u003d new DeleteByIndexCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":59,"author":{"gitId":"jeong-jaeho"},"content":" String expectedMessage \u003d String.format(DeleteByIndexCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"jskimdev"},"content":" Messages.format(patientToDelete));","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":63,"author":{"gitId":"jskimdev"},"content":" expectedModel.deletePerson(patientToDelete);","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"-"},"content":" showNoPerson(expectedModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":66,"author":{"gitId":"jeong-jaeho"},"content":" assertCommandSuccess(deleteByIndexCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void execute_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":71,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":73,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-06-05"},{"lineNumber":74,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-06-05"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-06-05"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":77,"author":{"gitId":"jeong-jaeho"},"content":" DeleteByIndexCommand deleteByIndexCommand \u003d new DeleteByIndexCommand(outOfBoundIndex);","lastModifiedDate":"2024-03-21"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":79,"author":{"gitId":"jeong-jaeho"},"content":" assertCommandFailure(deleteByIndexCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":84,"author":{"gitId":"jeong-jaeho"},"content":" DeleteByIndexCommand deleteFirstCommand \u003d new DeleteByIndexCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-03-21"},{"lineNumber":85,"author":{"gitId":"jeong-jaeho"},"content":" DeleteByIndexCommand deleteSecondCommand \u003d new DeleteByIndexCommand(INDEX_SECOND_PERSON);","lastModifiedDate":"2024-03-21"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":91,"author":{"gitId":"jeong-jaeho"},"content":" DeleteByIndexCommand deleteFirstCommandCopy \u003d new DeleteByIndexCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-03-21"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2017-06-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2017-06-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2017-06-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":100,"author":{"gitId":"jskimdev"},"content":" // different patient -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23"},{"lineNumber":107,"author":{"gitId":"jeong-jaeho"},"content":" DeleteByIndexCommand deleteByIndexCommand \u003d new DeleteByIndexCommand(targetIndex);","lastModifiedDate":"2024-03-21"},{"lineNumber":108,"author":{"gitId":"jeong-jaeho"},"content":" String expected \u003d DeleteByIndexCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex + \"}\";","lastModifiedDate":"2024-03-21"},{"lineNumber":109,"author":{"gitId":"jeong-jaeho"},"content":" assertEquals(expected, deleteByIndexCommand.toString());","lastModifiedDate":"2024-03-21"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":113,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show no one.","lastModifiedDate":"2017-06-05"},{"lineNumber":114,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":115,"author":{"gitId":"-"},"content":" private void showNoPerson(Model model) {","lastModifiedDate":"2017-06-05"},{"lineNumber":116,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(p -\u003e false);","lastModifiedDate":"2017-06-12"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertTrue(model.getFilteredPersonList().isEmpty());","lastModifiedDate":"2018-02-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":120,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"jskimdev":9,"-":94,"jeong-jaeho":17}},{"path":"src/test/java/seedu/address/logic/commands/EditCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":15,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.testutil.TypicalPatients.getTypicalAddressBook;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":21,"author":{"gitId":"jskimdev"},"content":"import seedu.address.logic.commands.EditCommand.EditPatientDescriptor;","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-04"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-05-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-04"},{"lineNumber":26,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"jskimdev"},"content":"import seedu.address.testutil.EditPatientDescriptorBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"jskimdev"},"content":"import seedu.address.testutil.PatientBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-04"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for EditCommand.","lastModifiedDate":"2020-12-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-04"},{"lineNumber":33,"author":{"gitId":"-"},"content":"public class EditCommandTest {","lastModifiedDate":"2017-05-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":39,"author":{"gitId":"jskimdev"},"content":" Patient editedPatient \u003d new PatientBuilder().build();","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"jskimdev"},"content":" EditPatientDescriptor descriptor \u003d new EditPatientDescriptorBuilder(editedPatient).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":43,"author":{"gitId":"jskimdev"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPatient));","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":45,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":46,"author":{"gitId":"jskimdev"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPatient);","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":53,"author":{"gitId":"-"},"content":" Index indexLastPerson \u003d Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2017-05-18"},{"lineNumber":54,"author":{"gitId":"jskimdev"},"content":" Patient lastPatient \u003d model.getFilteredPersonList().get(indexLastPerson.getZeroBased());","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":56,"author":{"gitId":"jskimdev"},"content":" PatientBuilder personInList \u003d new PatientBuilder(lastPatient);","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"jskimdev"},"content":" Patient editedPatient \u003d personInList.withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"jskimdev"},"content":" .build();","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":60,"author":{"gitId":"jskimdev"},"content":" EditPatientDescriptor descriptor \u003d new EditPatientDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"jskimdev"},"content":" .withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(indexLastPerson, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":64,"author":{"gitId":"jskimdev"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPatient));","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":66,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":67,"author":{"gitId":"jskimdev"},"content":" expectedModel.setPerson(lastPatient, editedPatient);","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":74,"author":{"gitId":"jskimdev"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, new EditPatientDescriptor());","lastModifiedDate":"2024-03-19"},{"lineNumber":75,"author":{"gitId":"jskimdev"},"content":" Patient editedPatient \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":77,"author":{"gitId":"jskimdev"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPatient));","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":79,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":86,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":88,"author":{"gitId":"jskimdev"},"content":" Patient patientInFilteredList \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-03-19"},{"lineNumber":89,"author":{"gitId":"jskimdev"},"content":" Patient editedPatient \u003d new PatientBuilder(patientInFilteredList).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":90,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08"},{"lineNumber":91,"author":{"gitId":"jskimdev"},"content":" new EditPatientDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2024-03-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":93,"author":{"gitId":"jskimdev"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPatient));","lastModifiedDate":"2024-03-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":95,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":96,"author":{"gitId":"jskimdev"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPatient);","lastModifiedDate":"2024-03-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":101,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":102,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonUnfilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":103,"author":{"gitId":"jskimdev"},"content":" Patient firstPatient \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-03-19"},{"lineNumber":104,"author":{"gitId":"jskimdev"},"content":" EditPatientDescriptor descriptor \u003d new EditPatientDescriptorBuilder(firstPatient).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":105,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_SECOND_PERSON, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":111,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonFilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":112,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":114,"author":{"gitId":"jskimdev"},"content":" // edit patient in filtered list into a duplicate in address book","lastModifiedDate":"2024-03-19"},{"lineNumber":115,"author":{"gitId":"jskimdev"},"content":" Patient patientInList \u003d model.getAddressBook().getPersonList().get(INDEX_SECOND_PERSON.getZeroBased());","lastModifiedDate":"2024-03-19"},{"lineNumber":116,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08"},{"lineNumber":117,"author":{"gitId":"jskimdev"},"content":" new EditPatientDescriptorBuilder(patientInList).build());","lastModifiedDate":"2024-03-19"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":123,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":124,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-05-18"},{"lineNumber":125,"author":{"gitId":"jskimdev"},"content":" EditPatientDescriptor descriptor \u003d new EditPatientDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":126,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":131,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-18"},{"lineNumber":132,"author":{"gitId":"-"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2017-05-18"},{"lineNumber":133,"author":{"gitId":"-"},"content":" * but smaller than size of address book","lastModifiedDate":"2017-05-18"},{"lineNumber":134,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-18"},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":136,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":137,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":138,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-18"},{"lineNumber":139,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-05-18"},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-05-18"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":142,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex,","lastModifiedDate":"2018-08-08"},{"lineNumber":143,"author":{"gitId":"jskimdev"},"content":" new EditPatientDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2024-03-19"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":145,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":148,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":150,"author":{"gitId":"-"},"content":" final EditCommand standardCommand \u003d new EditCommand(INDEX_FIRST_PERSON, DESC_AMY);","lastModifiedDate":"2018-08-08"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":152,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":153,"author":{"gitId":"jskimdev"},"content":" EditPatientDescriptor copyDescriptor \u003d new EditPatientDescriptor(DESC_AMY);","lastModifiedDate":"2024-03-19"},{"lineNumber":154,"author":{"gitId":"-"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(INDEX_FIRST_PERSON, copyDescriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":155,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":157,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":158,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":160,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":163,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":164,"author":{"gitId":"jeong-jaeho"},"content":" assertFalse(standardCommand.equals(new DeleteAllCommand()));","lastModifiedDate":"2024-03-20"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":166,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_SECOND_PERSON, DESC_AMY)));","lastModifiedDate":"2017-05-25"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":169,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":170,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_FIRST_PERSON, DESC_BOB)));","lastModifiedDate":"2017-05-25"},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":173,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23"},{"lineNumber":176,"author":{"gitId":"jskimdev"},"content":" EditPatientDescriptor editPersonDescriptor \u003d new EditPatientDescriptor();","lastModifiedDate":"2024-03-19"},{"lineNumber":177,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2019-02-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":" String expected \u003d EditCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", editPersonDescriptor\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":" + editPersonDescriptor + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08"}],"authorContributionMap":{"jskimdev":34,"-":148,"jeong-jaeho":1}},{"path":"src/test/java/seedu/address/logic/commands/EditPatientDescriptorTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":15,"author":{"gitId":"jskimdev"},"content":"import seedu.address.logic.commands.EditCommand.EditPatientDescriptor;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"jskimdev"},"content":"import seedu.address.testutil.EditPatientDescriptorBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":18,"author":{"gitId":"jskimdev"},"content":"public class EditPatientDescriptorTest {","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":22,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-05"},{"lineNumber":23,"author":{"gitId":"jskimdev"},"content":" EditPatientDescriptor descriptorWithSameValues \u003d new EditPatientDescriptor(DESC_AMY);","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"jskimdev"},"content":" System.out.println(DESC_AMY);","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"jskimdev"},"content":" System.out.println(descriptorWithSameValues);","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(descriptorWithSameValues));","lastModifiedDate":"2017-05-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(DESC_AMY));","lastModifiedDate":"2017-05-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(null));","lastModifiedDate":"2017-05-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(5));","lastModifiedDate":"2017-05-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(DESC_BOB));","lastModifiedDate":"2017-05-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":41,"author":{"gitId":"jskimdev"},"content":" EditPatientDescriptor editedAmy \u003d new EditPatientDescriptorBuilder(DESC_AMY).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":45,"author":{"gitId":"jskimdev"},"content":" editedAmy \u003d new EditPatientDescriptorBuilder(DESC_AMY).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":49,"author":{"gitId":"jskimdev"},"content":" editedAmy \u003d new EditPatientDescriptorBuilder(DESC_AMY).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":53,"author":{"gitId":"jskimdev"},"content":" editedAmy \u003d new EditPatientDescriptorBuilder(DESC_AMY).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"jskimdev"},"content":" EditPatientDescriptor editPersonDescriptor \u003d new EditPatientDescriptor();","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"jskimdev"},"content":" String expected \u003d EditPatientDescriptor.class.getCanonicalName() + \"{name\u003d\"","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getName().orElse(null) + \", phone\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getPhone().orElse(null) + \", email\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getEmail().orElse(null) + \", address\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":64,"author":{"gitId":"jskimdev"},"content":" + editPersonDescriptor.getAddress().orElse(null) + \", date of birth\u003d\"","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"jskimdev"},"content":" + editPersonDescriptor.getDateOfBirth().orElse(null) + \", sex\u003d\"","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"jskimdev"},"content":" + editPersonDescriptor.getSex().orElse(null) + \"}\";","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertEquals(expected, editPersonDescriptor.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"jskimdev":15,"-":54}},{"path":"src/test/java/seedu/address/logic/commands/FindCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_PERSONS_LISTED_OVERVIEW;","lastModifiedDate":"2023-07-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2018-08-08"},{"lineNumber":8,"author":{"gitId":"Vision-2000"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.testutil.TypicalPatients.CARL;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.testutil.TypicalPatients.ELLE;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.testutil.TypicalPatients.FIONA;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.testutil.TypicalPatients.getTypicalAddressBook;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"Vision-2000"},"content":"import seedu.address.model.patient.Phone;","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"Vision-2000"},"content":"import seedu.address.model.patient.PhoneMatchesPredicate;","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code FindCommand}.","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class FindCommandTest {","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2018-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicate \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"first\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate secondPredicate \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"second\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":39,"author":{"gitId":"Vision-2000"},"content":" PhoneMatchesPredicate thirdPredicate \u003d","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"Vision-2000"},"content":" new PhoneMatchesPredicate(new Phone(\"99999999\"));","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":42,"author":{"gitId":"Vision-2000"},"content":" FindCommand findFirstCommand \u003d new FindCommand(firstPredicate, PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"Vision-2000"},"content":" FindCommand findSecondCommand \u003d new FindCommand(secondPredicate, PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"Vision-2000"},"content":" FindCommand findThirdCommand \u003d new FindCommand(thirdPredicate, PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"Vision-2000"},"content":" FindCommand findFirstCommandCopy \u003d new FindCommand(firstPredicate, PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommandCopy));","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(1));","lastModifiedDate":"2017-06-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(null));","lastModifiedDate":"2017-06-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":59,"author":{"gitId":"Vision-2000"},"content":" // different name -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(findSecondCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":61,"author":{"gitId":"Vision-2000"},"content":" assertFalse(findFirstCommand.equals(findThirdCommand));","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void execute_zeroKeywords_noPersonFound() {","lastModifiedDate":"2017-08-15"},{"lineNumber":66,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2017-06-12"},{"lineNumber":67,"author":{"gitId":"Vision-2000"},"content":" NameContainsKeywordsPredicate namePredicate \u003d prepareNamePredicate(\" \");","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"Vision-2000"},"content":" FindCommand command \u003d new FindCommand(namePredicate, PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"Vision-2000"},"content":" expectedModel.updateFilteredPersonList(namePredicate);","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void execute_multipleKeywords_multiplePersonsFound() {","lastModifiedDate":"2017-08-15"},{"lineNumber":76,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 3);","lastModifiedDate":"2017-06-12"},{"lineNumber":77,"author":{"gitId":"Vision-2000"},"content":" NameContainsKeywordsPredicate namePredicate \u003d prepareNamePredicate(\"Kurz Elle Kunz\");","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"Vision-2000"},"content":" FindCommand command \u003d new FindCommand(namePredicate, PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"Vision-2000"},"content":" expectedModel.updateFilteredPersonList(namePredicate);","lastModifiedDate":"2024-03-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(CARL, ELLE, FIONA), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"Vision-2000"},"content":" NameContainsKeywordsPredicate namePredicate \u003d prepareNamePredicate(\"name\");","lastModifiedDate":"2024-03-19"},{"lineNumber":87,"author":{"gitId":"Vision-2000"},"content":" PhoneMatchesPredicate phonePredicate \u003d preparePhonePredicate(\"12345678\");","lastModifiedDate":"2024-03-19"},{"lineNumber":88,"author":{"gitId":"Vision-2000"},"content":" FindCommand findCommand \u003d new FindCommand(namePredicate, phonePredicate);","lastModifiedDate":"2024-03-19"},{"lineNumber":89,"author":{"gitId":"Vision-2000"},"content":" String expected \u003d FindCommand.class.getCanonicalName() + \"{namePredicate\u003d\" + namePredicate + \", \"","lastModifiedDate":"2024-03-19"},{"lineNumber":90,"author":{"gitId":"Vision-2000"},"content":" + \"phonePredicate\u003d\" + phonePredicate + \"}\";","lastModifiedDate":"2024-03-19"},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertEquals(expected, findCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-12"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * Parses {@code userInput} into a {@code NameContainsKeywordsPredicate}.","lastModifiedDate":"2018-08-08"},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":97,"author":{"gitId":"Vision-2000"},"content":" private NameContainsKeywordsPredicate prepareNamePredicate(String userInput) {","lastModifiedDate":"2024-03-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" return new NameContainsKeywordsPredicate(Arrays.asList(userInput.split(\"\\\\s+\")));","lastModifiedDate":"2018-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":100,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":101,"author":{"gitId":"Vision-2000"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":102,"author":{"gitId":"Vision-2000"},"content":" * Parses {@code userInput} into a {@code PhoneMatchesPredicate}.","lastModifiedDate":"2024-03-19"},{"lineNumber":103,"author":{"gitId":"Vision-2000"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":104,"author":{"gitId":"Vision-2000"},"content":" private PhoneMatchesPredicate preparePhonePredicate(String userInput) {","lastModifiedDate":"2024-03-19"},{"lineNumber":105,"author":{"gitId":"Vision-2000"},"content":" return new PhoneMatchesPredicate(new Phone(userInput));","lastModifiedDate":"2024-03-19"},{"lineNumber":106,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":107,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"jskimdev":5,"-":72,"Vision-2000":30}},{"path":"src/test/java/seedu/address/logic/commands/ForceDeleteAllCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":4,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.testutil.TypicalPatients.getTypicalAddressBook;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2018-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":13,"author":{"gitId":"jeong-jaeho"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"jeong-jaeho"},"content":" * Contains integration and unit tests for DeleteAllCommand.","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"jeong-jaeho"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"jeong-jaeho"},"content":"public class ForceDeleteAllCommandTest {","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"jeong-jaeho"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"jeong-jaeho"},"content":" * Tests when AddressBook is empty.","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"jeong-jaeho"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public void execute_emptyAddressBook_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":22,"author":{"gitId":"-"},"content":" Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2018-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":25,"author":{"gitId":"jeong-jaeho"},"content":" assertCommandSuccess(new ForceDeleteAllCommand(), model, ForceDeleteAllCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":28,"author":{"gitId":"jeong-jaeho"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"jeong-jaeho"},"content":" * Tests when AddressBook is not empty.","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"jeong-jaeho"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void execute_nonEmptyAddressBook_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":" Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2018-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" expectedModel.setAddressBook(new AddressBook());","lastModifiedDate":"2018-11-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":37,"author":{"gitId":"jeong-jaeho"},"content":" assertCommandSuccess(new ForceDeleteAllCommand(), model, ForceDeleteAllCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-08"}],"authorContributionMap":{"jskimdev":1,"-":26,"jeong-jaeho":12}},{"path":"src/test/java/seedu/address/logic/commands/ListCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2018-01-31"},{"lineNumber":6,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.testutil.TypicalPatients.getTypicalAddressBook;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for ListCommand.","lastModifiedDate":"2017-06-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class ListCommandTest {","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private Model expectedModel;","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void execute_listIsNotFiltered_showsSameList() {","lastModifiedDate":"2017-08-15"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ListCommand(), model, ListCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public void execute_listIsFiltered_showsEverything() {","lastModifiedDate":"2017-08-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ListCommand(), model, ListCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"jskimdev":1,"-":38}},{"path":"src/test/java/seedu/address/logic/parser/AddCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-15"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DATEOFBIRTH_DESC_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DATEOFBIRTH_DESC_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_DATEOFBIRTH_DESC;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_SEX_DESC;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SEX_DESC_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SEX_DESC_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_DATEOFBIRTH_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SEX_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14"},{"lineNumber":31,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DATEOFBIRTH;","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-07-14"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14"},{"lineNumber":35,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SEX;","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":38,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.testutil.TypicalPatients.AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.testutil.TypicalPatients.BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-15"},{"lineNumber":45,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Address;","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.DateOfBirth;","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Email;","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Name;","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Phone;","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Sex;","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"jskimdev"},"content":"import seedu.address.testutil.PatientBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2017-06-15"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":60,"author":{"gitId":"jskimdev"},"content":" Patient expectedPatient \u003d new PatientBuilder(BOB).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":62,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":64,"author":{"gitId":"jskimdev"},"content":" + ADDRESS_DESC_BOB + DATEOFBIRTH_DESC_BOB + SEX_DESC_BOB, new AddCommand(expectedPatient));","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":67,"author":{"gitId":"-"},"content":" // multiple tags - all accepted","lastModifiedDate":"2017-06-15"},{"lineNumber":68,"author":{"gitId":"jskimdev"},"content":" Patient expectedPatientMultipleTags \u003d new PatientBuilder(BOB)","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-07-25"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":71,"author":{"gitId":"jskimdev"},"content":" NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB + DATEOFBIRTH_DESC_BOB","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"jskimdev"},"content":" + SEX_DESC_BOB,","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"jskimdev"},"content":" new AddCommand(expectedPatientMultipleTags));","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":78,"author":{"gitId":"-"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-07-14"},{"lineNumber":79,"author":{"gitId":"jskimdev"},"content":" + ADDRESS_DESC_BOB + DATEOFBIRTH_DESC_BOB + SEX_DESC_BOB;","lastModifiedDate":"2024-03-18"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":81,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":83,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":85,"author":{"gitId":"-"},"content":" // multiple phones","lastModifiedDate":"2023-07-14"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":87,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":89,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":91,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":93,"author":{"gitId":"-"},"content":" // multiple addresses","lastModifiedDate":"2023-07-14"},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertParseFailure(parser, ADDRESS_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":95,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":97,"author":{"gitId":"jskimdev"},"content":" // multiple date of birth","lastModifiedDate":"2024-03-19"},{"lineNumber":98,"author":{"gitId":"jskimdev"},"content":" assertParseFailure(parser, DATEOFBIRTH_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-03-19"},{"lineNumber":99,"author":{"gitId":"jskimdev"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_DATEOFBIRTH));","lastModifiedDate":"2024-03-19"},{"lineNumber":100,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":101,"author":{"gitId":"jskimdev"},"content":" // multiple sex","lastModifiedDate":"2024-03-19"},{"lineNumber":102,"author":{"gitId":"jskimdev"},"content":" assertParseFailure(parser, SEX_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-03-19"},{"lineNumber":103,"author":{"gitId":"jskimdev"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_SEX));","lastModifiedDate":"2024-03-19"},{"lineNumber":104,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":105,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":107,"author":{"gitId":"-"},"content":" validExpectedPersonString + PHONE_DESC_AMY + EMAIL_DESC_AMY + NAME_DESC_AMY + ADDRESS_DESC_AMY","lastModifiedDate":"2023-07-14"},{"lineNumber":108,"author":{"gitId":"jskimdev"},"content":" + DATEOFBIRTH_DESC_AMY + SEX_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-03-18"},{"lineNumber":109,"author":{"gitId":"jskimdev"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_ADDRESS, PREFIX_EMAIL, PREFIX_PHONE,","lastModifiedDate":"2024-03-17"},{"lineNumber":110,"author":{"gitId":"jskimdev"},"content":" PREFIX_DATEOFBIRTH, PREFIX_SEX));","lastModifiedDate":"2024-03-18"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":112,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":114,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":116,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":118,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_PHONE_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":126,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":127,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_ADDRESS_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":128,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":130,"author":{"gitId":"jskimdev"},"content":" // invalid date of birth","lastModifiedDate":"2024-03-19"},{"lineNumber":131,"author":{"gitId":"jskimdev"},"content":" assertParseFailure(parser, INVALID_DATEOFBIRTH_DESC + validExpectedPersonString,","lastModifiedDate":"2024-03-19"},{"lineNumber":132,"author":{"gitId":"jskimdev"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_DATEOFBIRTH));","lastModifiedDate":"2024-03-19"},{"lineNumber":133,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":134,"author":{"gitId":"jskimdev"},"content":" // invalid sex","lastModifiedDate":"2024-03-19"},{"lineNumber":135,"author":{"gitId":"jskimdev"},"content":" assertParseFailure(parser, INVALID_SEX_DESC + validExpectedPersonString,","lastModifiedDate":"2024-03-19"},{"lineNumber":136,"author":{"gitId":"jskimdev"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_SEX));","lastModifiedDate":"2024-03-19"},{"lineNumber":137,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":138,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":140,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":142,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":144,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":145,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":146,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":148,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":149,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_PHONE_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":150,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":152,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":153,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_ADDRESS_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":154,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":155,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":156,"author":{"gitId":"jskimdev"},"content":" // invalid date of birth","lastModifiedDate":"2024-03-19"},{"lineNumber":157,"author":{"gitId":"jskimdev"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_DATEOFBIRTH_DESC,","lastModifiedDate":"2024-03-19"},{"lineNumber":158,"author":{"gitId":"jskimdev"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_DATEOFBIRTH));","lastModifiedDate":"2024-03-19"},{"lineNumber":159,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":160,"author":{"gitId":"jskimdev"},"content":" // invalid sex","lastModifiedDate":"2024-03-19"},{"lineNumber":161,"author":{"gitId":"jskimdev"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_SEX_DESC,","lastModifiedDate":"2024-03-19"},{"lineNumber":162,"author":{"gitId":"jskimdev"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_SEX));","lastModifiedDate":"2024-03-19"},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":165,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":166,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":167,"author":{"gitId":"-"},"content":" // zero tags","lastModifiedDate":"2017-06-15"},{"lineNumber":168,"author":{"gitId":"jskimdev"},"content":" Patient expectedPatient \u003d new PatientBuilder(AMY).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":169,"author":{"gitId":"jskimdev"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY + ADDRESS_DESC_AMY","lastModifiedDate":"2024-03-17"},{"lineNumber":170,"author":{"gitId":"jskimdev"},"content":" + DATEOFBIRTH_DESC_AMY + SEX_DESC_AMY,","lastModifiedDate":"2024-03-19"},{"lineNumber":171,"author":{"gitId":"jskimdev"},"content":" new AddCommand(expectedPatient));","lastModifiedDate":"2024-03-19"},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":174,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":175,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":176,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":178,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":179,"author":{"gitId":"jskimdev"},"content":" assertParseFailure(parser, VALID_NAME_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-19"},{"lineNumber":180,"author":{"gitId":"jskimdev"},"content":" + DATEOFBIRTH_DESC_BOB + SEX_DESC_BOB,","lastModifiedDate":"2024-03-19"},{"lineNumber":181,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":183,"author":{"gitId":"-"},"content":" // missing phone prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":184,"author":{"gitId":"jskimdev"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_PHONE_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-19"},{"lineNumber":185,"author":{"gitId":"jskimdev"},"content":" + DATEOFBIRTH_DESC_BOB + SEX_DESC_BOB,","lastModifiedDate":"2024-03-19"},{"lineNumber":186,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":188,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":189,"author":{"gitId":"jskimdev"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-19"},{"lineNumber":190,"author":{"gitId":"jskimdev"},"content":" + DATEOFBIRTH_DESC_BOB + SEX_DESC_BOB,","lastModifiedDate":"2024-03-19"},{"lineNumber":191,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":193,"author":{"gitId":"-"},"content":" // missing address prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":194,"author":{"gitId":"jskimdev"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + VALID_ADDRESS_BOB","lastModifiedDate":"2024-03-19"},{"lineNumber":195,"author":{"gitId":"jskimdev"},"content":" + DATEOFBIRTH_DESC_BOB + SEX_DESC_BOB,","lastModifiedDate":"2024-03-19"},{"lineNumber":196,"author":{"gitId":"jskimdev"},"content":" expectedMessage);","lastModifiedDate":"2024-03-19"},{"lineNumber":197,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":198,"author":{"gitId":"jskimdev"},"content":" // missing date of birth prefix","lastModifiedDate":"2024-03-19"},{"lineNumber":199,"author":{"gitId":"jskimdev"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-19"},{"lineNumber":200,"author":{"gitId":"jskimdev"},"content":" + VALID_DATEOFBIRTH_BOB + SEX_DESC_BOB,","lastModifiedDate":"2024-03-19"},{"lineNumber":201,"author":{"gitId":"jskimdev"},"content":" expectedMessage);","lastModifiedDate":"2024-03-19"},{"lineNumber":202,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":203,"author":{"gitId":"jskimdev"},"content":" // missing sex prefix","lastModifiedDate":"2024-03-19"},{"lineNumber":204,"author":{"gitId":"jskimdev"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-19"},{"lineNumber":205,"author":{"gitId":"jskimdev"},"content":" + DATEOFBIRTH_DESC_BOB + VALID_SEX_BOB,","lastModifiedDate":"2024-03-19"},{"lineNumber":206,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":208,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15"},{"lineNumber":209,"author":{"gitId":"jskimdev"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_PHONE_BOB + VALID_EMAIL_BOB + VALID_ADDRESS_BOB","lastModifiedDate":"2024-03-19"},{"lineNumber":210,"author":{"gitId":"jskimdev"},"content":" + VALID_DATEOFBIRTH_BOB + VALID_SEX_BOB,","lastModifiedDate":"2024-03-19"},{"lineNumber":211,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":212,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":214,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":215,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":216,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15"},{"lineNumber":217,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-17"},{"lineNumber":218,"author":{"gitId":"jskimdev"},"content":" + DATEOFBIRTH_DESC_BOB + SEX_DESC_BOB,","lastModifiedDate":"2024-03-18"},{"lineNumber":219,"author":{"gitId":"jskimdev"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":221,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15"},{"lineNumber":222,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_PHONE_DESC + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-17"},{"lineNumber":223,"author":{"gitId":"jskimdev"},"content":" + DATEOFBIRTH_DESC_BOB + SEX_DESC_BOB,","lastModifiedDate":"2024-03-18"},{"lineNumber":224,"author":{"gitId":"jskimdev"},"content":" Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":226,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15"},{"lineNumber":227,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-17"},{"lineNumber":228,"author":{"gitId":"jskimdev"},"content":" + DATEOFBIRTH_DESC_BOB + SEX_DESC_BOB,","lastModifiedDate":"2024-03-18"},{"lineNumber":229,"author":{"gitId":"jskimdev"},"content":" Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":231,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2017-06-15"},{"lineNumber":232,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2024-03-17"},{"lineNumber":233,"author":{"gitId":"jskimdev"},"content":" + DATEOFBIRTH_DESC_BOB + SEX_DESC_BOB,","lastModifiedDate":"2024-03-18"},{"lineNumber":234,"author":{"gitId":"jskimdev"},"content":" Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":236,"author":{"gitId":"jskimdev"},"content":" // invalid date of birth","lastModifiedDate":"2024-03-19"},{"lineNumber":237,"author":{"gitId":"jskimdev"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-19"},{"lineNumber":238,"author":{"gitId":"jskimdev"},"content":" + INVALID_DATEOFBIRTH_DESC + SEX_DESC_BOB,","lastModifiedDate":"2024-03-19"},{"lineNumber":239,"author":{"gitId":"jskimdev"},"content":" DateOfBirth.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-19"},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":241,"author":{"gitId":"jskimdev"},"content":" // invalid sex","lastModifiedDate":"2024-03-19"},{"lineNumber":242,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-19"},{"lineNumber":243,"author":{"gitId":"jskimdev"},"content":" + DATEOFBIRTH_DESC_BOB + INVALID_SEX_DESC,","lastModifiedDate":"2024-03-19"},{"lineNumber":244,"author":{"gitId":"jskimdev"},"content":" Sex.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-19"},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":246,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15"},{"lineNumber":247,"author":{"gitId":"jskimdev"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2024-03-17"},{"lineNumber":248,"author":{"gitId":"jskimdev"},"content":" + DATEOFBIRTH_DESC_BOB + SEX_DESC_BOB,","lastModifiedDate":"2024-03-18"},{"lineNumber":249,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":250,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":253,"author":{"gitId":"jskimdev"},"content":" + ADDRESS_DESC_BOB + DATEOFBIRTH_DESC_BOB + SEX_DESC_BOB,","lastModifiedDate":"2024-03-18"},{"lineNumber":254,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-12-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":256,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"jskimdev":96,"-":160}},{"path":"src/test/java/seedu/address/logic/parser/AddressBookParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":7,"author":{"gitId":"Vision-2000"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-06-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":18,"author":{"gitId":"jeong-jaeho"},"content":"import seedu.address.logic.commands.DeleteAllCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"jeong-jaeho"},"content":"import seedu.address.logic.commands.DeleteByIndexCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":21,"author":{"gitId":"jskimdev"},"content":"import seedu.address.logic.commands.EditCommand.EditPatientDescriptor;","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24"},{"lineNumber":27,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"jskimdev"},"content":"import seedu.address.testutil.EditPatientDescriptorBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"jskimdev"},"content":"import seedu.address.testutil.PatientBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"jskimdev"},"content":"import seedu.address.testutil.PatientUtil;","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":39,"author":{"gitId":"jskimdev"},"content":" Patient patient \u003d new PatientBuilder().build();","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"jskimdev"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(PatientUtil.getAddCommand(patient));","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"jskimdev"},"content":" assertEquals(new AddCommand(patient), command);","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":46,"author":{"gitId":"jeong-jaeho"},"content":" assertTrue(parser.parseCommand(DeleteAllCommand.COMMAND_WORD) instanceof DeleteAllCommand);","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"jeong-jaeho"},"content":" assertTrue(parser.parseCommand(DeleteAllCommand.COMMAND_WORD + \" 3\") instanceof DeleteAllCommand);","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"jeong-jaeho"},"content":" DeleteByIndexCommand command \u003d (DeleteByIndexCommand) parser.parseCommand(","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"jeong-jaeho"},"content":" DeleteByIndexCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"jeong-jaeho"},"content":" assertEquals(new DeleteByIndexCommand(INDEX_FIRST_PERSON), command);","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":59,"author":{"gitId":"jskimdev"},"content":" Patient patient \u003d new PatientBuilder().build();","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"jskimdev"},"content":" EditPatientDescriptor descriptor \u003d new EditPatientDescriptorBuilder(patient).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-27"},{"lineNumber":62,"author":{"gitId":"jskimdev"},"content":" + INDEX_FIRST_PERSON.getOneBased() + \" \" + PatientUtil.getEditPersonDescriptorDetails(descriptor));","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertEquals(new EditCommand(INDEX_FIRST_PERSON, descriptor), command);","lastModifiedDate":"2017-06-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2017-06-12"},{"lineNumber":75,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":76,"author":{"gitId":"Vision-2000"},"content":" FindCommand.COMMAND_WORD + \" n/\" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"Vision-2000"},"content":" assertEquals(new FindCommand(new NameContainsKeywordsPredicate(keywords),","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"Vision-2000"},"content":" PREDICATE_SHOW_ALL_PERSONS), command);","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD) instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" 3\") instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"jskimdev":12,"-":80,"jeong-jaeho":7,"Vision-2000":4}},{"path":"src/test/java/seedu/address/logic/parser/DeleteByIndexCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-09"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":10,"author":{"gitId":"jeong-jaeho"},"content":"import seedu.address.logic.commands.DeleteByIndexCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * As we are only doing white-box testing, our test cases do not cover path variations","lastModifiedDate":"2017-06-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * outside of the DeleteCommand code. For example, inputs \"1\" and \"1 abc\" take the","lastModifiedDate":"2017-06-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * same path through the DeleteCommand, and therefore we test only one of them.","lastModifiedDate":"2017-06-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * The path variation for those two cases occur inside the ParserUtil, and","lastModifiedDate":"2017-06-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * therefore should be covered by the ParserUtilTest.","lastModifiedDate":"2017-06-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-09"},{"lineNumber":19,"author":{"gitId":"jeong-jaeho"},"content":"public class DeleteByIndexCommandParserTest {","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private DeleteCommandParser parser \u003d new DeleteCommandParser();","lastModifiedDate":"2017-06-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void parse_validArgs_returnsDeleteCommand() {","lastModifiedDate":"2017-08-15"},{"lineNumber":25,"author":{"gitId":"jeong-jaeho"},"content":" assertParseSuccess(parser, \"1\", new DeleteByIndexCommand(INDEX_FIRST_PERSON));","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":30,"author":{"gitId":"jeong-jaeho"},"content":" assertParseFailure(parser, \"a\",","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"jeong-jaeho"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteByIndexCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09"},{"lineNumber":33,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-09"}],"authorContributionMap":{"-":28,"jeong-jaeho":5}},{"path":"src/test/java/seedu/address/logic/parser/EditCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-04"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-05-04"},{"lineNumber":34,"author":{"gitId":"jskimdev"},"content":"import seedu.address.logic.commands.EditCommand.EditPatientDescriptor;","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Address;","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Email;","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Name;","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Phone;","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"jskimdev"},"content":"import seedu.address.testutil.EditPatientDescriptorBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":41,"author":{"gitId":"-"},"content":"public class EditCommandParserTest {","lastModifiedDate":"2017-05-04"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":43,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2017-05-04"},{"lineNumber":44,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-05-04"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":46,"author":{"gitId":"-"},"content":" private EditCommandParser parser \u003d new EditCommandParser();","lastModifiedDate":"2017-05-04"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":" // no index specified","lastModifiedDate":"2017-05-04"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\", EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-07-06"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // no index and no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2017-06-06"},{"lineNumber":62,"author":{"gitId":"-"},"content":" // negative index","lastModifiedDate":"2017-05-04"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"-5\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":65,"author":{"gitId":"-"},"content":" // zero index","lastModifiedDate":"2017-06-06"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"0\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06"},{"lineNumber":68,"author":{"gitId":"-"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2017-06-06"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2017-06-06"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 i/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2018-09-22"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC, Phone.MESSAGE_CONSTRAINTS); // invalid phone","lastModifiedDate":"2018-09-22"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_EMAIL_DESC, Email.MESSAGE_CONSTRAINTS); // invalid email","lastModifiedDate":"2018-09-22"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_ADDRESS_DESC, Address.MESSAGE_CONSTRAINTS); // invalid address","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":82,"author":{"gitId":"-"},"content":" // invalid phone followed by valid email","lastModifiedDate":"2017-05-04"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC + EMAIL_DESC_AMY, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":85,"author":{"gitId":"jskimdev"},"content":" // while parsing {@code PREFIX_TAG} alone will reset the tags of the {@code Patient} being edited,","lastModifiedDate":"2024-03-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":87,"author":{"gitId":"-"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2017-05-04"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC + INVALID_EMAIL_DESC + VALID_ADDRESS_AMY + VALID_PHONE_AMY,","lastModifiedDate":"2017-07-06"},{"lineNumber":89,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":94,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":95,"author":{"gitId":"jskimdev"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB","lastModifiedDate":"2024-03-17"},{"lineNumber":96,"author":{"gitId":"jskimdev"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + NAME_DESC_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":98,"author":{"gitId":"jskimdev"},"content":" EditPatientDescriptor descriptor \u003d new EditPatientDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2024-03-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-05-04"},{"lineNumber":100,"author":{"gitId":"jskimdev"},"content":" .build();","lastModifiedDate":"2024-03-17"},{"lineNumber":101,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":108,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":109,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":111,"author":{"gitId":"jskimdev"},"content":" EditPatientDescriptor descriptor \u003d new EditPatientDescriptorBuilder().withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-03-19"},{"lineNumber":112,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":113,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":118,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":119,"author":{"gitId":"-"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":120,"author":{"gitId":"-"},"content":" // name","lastModifiedDate":"2017-05-04"},{"lineNumber":121,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":122,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + NAME_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":123,"author":{"gitId":"jskimdev"},"content":" EditPatientDescriptor descriptor \u003d new EditPatientDescriptorBuilder().withName(VALID_NAME_AMY).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":124,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":127,"author":{"gitId":"-"},"content":" // phone","lastModifiedDate":"2017-05-04"},{"lineNumber":128,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":129,"author":{"gitId":"jskimdev"},"content":" descriptor \u003d new EditPatientDescriptorBuilder().withPhone(VALID_PHONE_AMY).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":130,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":131,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":133,"author":{"gitId":"-"},"content":" // email","lastModifiedDate":"2017-05-04"},{"lineNumber":134,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":135,"author":{"gitId":"jskimdev"},"content":" descriptor \u003d new EditPatientDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":136,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":137,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":139,"author":{"gitId":"-"},"content":" // address","lastModifiedDate":"2017-05-04"},{"lineNumber":140,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + ADDRESS_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":141,"author":{"gitId":"jskimdev"},"content":" descriptor \u003d new EditPatientDescriptorBuilder().withAddress(VALID_ADDRESS_AMY).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":142,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":143,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":146,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":147,"author":{"gitId":"-"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":148,"author":{"gitId":"-"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2023-07-14"},{"lineNumber":149,"author":{"gitId":"-"},"content":" // AddCommandParserTest#parse_repeatedNonTagValue_failure()","lastModifiedDate":"2023-07-14"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":151,"author":{"gitId":"-"},"content":" // valid followed by invalid","lastModifiedDate":"2023-07-14"},{"lineNumber":152,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":153,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + PHONE_DESC_BOB;","lastModifiedDate":"2023-07-14"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":155,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":157,"author":{"gitId":"-"},"content":" // invalid followed by valid","lastModifiedDate":"2023-07-14"},{"lineNumber":158,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + INVALID_PHONE_DESC;","lastModifiedDate":"2023-07-14"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":160,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":162,"author":{"gitId":"-"},"content":" // mulltiple valid fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":163,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2023-07-14"},{"lineNumber":164,"author":{"gitId":"jskimdev"},"content":" + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2024-03-17"},{"lineNumber":165,"author":{"gitId":"jskimdev"},"content":" + PHONE_DESC_BOB + ADDRESS_DESC_BOB + EMAIL_DESC_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":167,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":168,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":170,"author":{"gitId":"-"},"content":" // multiple invalid values","lastModifiedDate":"2023-07-14"},{"lineNumber":171,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2023-07-14"},{"lineNumber":172,"author":{"gitId":"-"},"content":" + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC;","lastModifiedDate":"2023-07-14"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":174,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":175,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":177,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-04"}],"authorContributionMap":{"jskimdev":18,"-":159}},{"path":"src/test/java/seedu/address/logic/parser/FindCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-27"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":6,"author":{"gitId":"Vision-2000"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":8,"author":{"gitId":"Vision-2000"},"content":"import java.util.List;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":13,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"Vision-2000"},"content":"import seedu.address.model.patient.Phone;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"Vision-2000"},"content":"import seedu.address.model.patient.PhoneMatchesPredicate;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class FindCommandParserTest {","lastModifiedDate":"2017-06-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private FindCommandParser parser \u003d new FindCommandParser();","lastModifiedDate":"2017-06-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":22,"author":{"gitId":"Vision-2000"},"content":" public void parse_invalidArg_throwsParseException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"Vision-2000"},"content":" assertParseFailure(parser, \" \", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"Vision-2000"},"content":" FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"Vision-2000"},"content":" assertParseFailure(parser, \"1 n/name\", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"Vision-2000"},"content":" FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"Vision-2000"},"content":" assertParseFailure(parser, \"n/ p/\", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"Vision-2000"},"content":" FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"Vision-2000"},"content":" assertParseFailure(parser, \"name\", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"Vision-2000"},"content":" FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":33,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public void parse_validArgs_returnsFindCommand() {","lastModifiedDate":"2017-08-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" FindCommand expectedFindCommand \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":37,"author":{"gitId":"Vision-2000"},"content":" new FindCommand(new NameContainsKeywordsPredicate(List.of(\"Alice\")),","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"Vision-2000"},"content":" new PhoneMatchesPredicate(new Phone(\"99999999\")));","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"Vision-2000"},"content":" assertParseSuccess(parser, \" n/Alice p/99999999\", expectedFindCommand);","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"Vision-2000"},"content":" assertParseSuccess(parser, \" \\n n/Alice \\n \\t p/99999999 \\t\", expectedFindCommand);","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"Vision-2000"},"content":" expectedFindCommand \u003d","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"Vision-2000"},"content":" new FindCommand(new NameContainsKeywordsPredicate(List.of(\"Alice\")),","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"Vision-2000"},"content":" PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"Vision-2000"},"content":" assertParseSuccess(parser, \" n/Alice\", expectedFindCommand);","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"Vision-2000"},"content":" expectedFindCommand \u003d","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"Vision-2000"},"content":" new FindCommand(PREDICATE_SHOW_ALL_PERSONS,","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"Vision-2000"},"content":" new PhoneMatchesPredicate(new Phone(\"99999999\")));","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"Vision-2000"},"content":" assertParseSuccess(parser, \" p/99999999\", expectedFindCommand);","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-27"}],"authorContributionMap":{"jskimdev":1,"-":23,"Vision-2000":28}},{"path":"src/test/java/seedu/address/logic/parser/ParserUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.ParserUtil.MESSAGE_INVALID_INDEX;","lastModifiedDate":"2017-06-02"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10"},{"lineNumber":11,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Address;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Email;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Name;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Phone;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class ParserUtilTest {","lastModifiedDate":"2017-05-22"},{"lineNumber":17,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2017-05-22"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2017-05-22"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2017-05-22"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2017-05-22"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d \"Rachel Walker\";","lastModifiedDate":"2017-05-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d \"123456\";","lastModifiedDate":"2017-05-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d \"123 Main Street #0505\";","lastModifiedDate":"2017-05-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d \"rachel@example.com\";","lastModifiedDate":"2017-05-22"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String WHITESPACE \u003d \" \\t\\r\\n\";","lastModifiedDate":"2017-05-29"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void parseIndex_invalidInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseIndex(\"10 a\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public void parseIndex_outOfRangeInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_INVALID_INDEX, ()","lastModifiedDate":"2019-03-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" -\u003e ParserUtil.parseIndex(Long.toString(Integer.MAX_VALUE + 1)));","lastModifiedDate":"2019-03-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public void parseIndex_validInput_success() throws Exception {","lastModifiedDate":"2017-05-26"},{"lineNumber":42,"author":{"gitId":"-"},"content":" // No whitespaces","lastModifiedDate":"2017-05-26"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\"1\"));","lastModifiedDate":"2017-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // Leading and trailing whitespaces","lastModifiedDate":"2017-05-26"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\" 1 \"));","lastModifiedDate":"2017-05-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void parseName_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-29"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseName((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void parseName_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseName(INVALID_NAME));","lastModifiedDate":"2019-03-14"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void parseName_validValueWithoutWhitespace_returnsName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-22"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(VALID_NAME));","lastModifiedDate":"2017-05-29"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-29"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void parseName_validValueWithWhitespace_returnsTrimmedName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":67,"author":{"gitId":"-"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_NAME + WHITESPACE;","lastModifiedDate":"2017-05-29"},{"lineNumber":68,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-29"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(nameWithWhitespace));","lastModifiedDate":"2017-05-29"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void parsePhone_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parsePhone((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void parsePhone_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parsePhone(INVALID_PHONE));","lastModifiedDate":"2019-03-14"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithoutWhitespace_returnsPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":84,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-22"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(VALID_PHONE));","lastModifiedDate":"2017-05-30"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithWhitespace_returnsTrimmedPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":90,"author":{"gitId":"-"},"content":" String phoneWithWhitespace \u003d WHITESPACE + VALID_PHONE + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":91,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-30"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(phoneWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":96,"author":{"gitId":"-"},"content":" public void parseAddress_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseAddress((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":100,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":101,"author":{"gitId":"-"},"content":" public void parseAddress_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseAddress(INVALID_ADDRESS));","lastModifiedDate":"2019-03-14"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":106,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithoutWhitespace_returnsAddress() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":107,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-22"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(VALID_ADDRESS));","lastModifiedDate":"2017-05-30"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":112,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithWhitespace_returnsTrimmedAddress() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":113,"author":{"gitId":"-"},"content":" String addressWithWhitespace \u003d WHITESPACE + VALID_ADDRESS + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":114,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-30"},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(addressWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":118,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":119,"author":{"gitId":"-"},"content":" public void parseEmail_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseEmail((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":124,"author":{"gitId":"-"},"content":" public void parseEmail_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseEmail(INVALID_EMAIL));","lastModifiedDate":"2019-03-14"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":129,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithoutWhitespace_returnsEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":130,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-22"},{"lineNumber":131,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(VALID_EMAIL));","lastModifiedDate":"2017-05-30"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":134,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":135,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithWhitespace_returnsTrimmedEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":136,"author":{"gitId":"-"},"content":" String emailWithWhitespace \u003d WHITESPACE + VALID_EMAIL + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":137,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-30"},{"lineNumber":138,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(emailWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":140,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-22"}],"authorContributionMap":{"jskimdev":4,"-":136}},{"path":"src/test/java/seedu/address/model/AddressBookTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-12-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.testutil.TypicalPatients.ALICE;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.testutil.TypicalPatients.getTypicalAddressBook;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2016-12-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2016-12-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2016-12-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2016-12-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-12-24"},{"lineNumber":20,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.exceptions.DuplicatePatientException;","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"jskimdev"},"content":"import seedu.address.testutil.PatientBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class AddressBookTest {","lastModifiedDate":"2016-12-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2016-12-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2016-12-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), addressBook.getPersonList());","lastModifiedDate":"2016-12-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public void resetData_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.resetData(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void resetData_withValidReadOnlyAddressBook_replacesData() {","lastModifiedDate":"2016-12-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" AddressBook newData \u003d getTypicalAddressBook();","lastModifiedDate":"2017-07-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":" addressBook.resetData(newData);","lastModifiedDate":"2016-12-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertEquals(newData, addressBook);","lastModifiedDate":"2016-12-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void resetData_withDuplicatePersons_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-07"},{"lineNumber":47,"author":{"gitId":"jskimdev"},"content":" // Two patients with the same identity fields","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"jskimdev"},"content":" Patient editedAlice \u003d new PatientBuilder(ALICE).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-04-19"},{"lineNumber":50,"author":{"gitId":"jskimdev"},"content":" List\u003cPatient\u003e newPatients \u003d Arrays.asList(ALICE, editedAlice);","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"jskimdev"},"content":" AddressBookStub newData \u003d new AddressBookStub(newPatients);","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":53,"author":{"gitId":"jskimdev"},"content":" assertThrows(DuplicatePatientException.class, () -\u003e addressBook.resetData(newData));","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void hasPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-06"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.hasPerson(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void hasPerson_personNotInAddressBook_returnsFalse() {","lastModifiedDate":"2018-08-06"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertFalse(addressBook.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void hasPerson_personInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07"},{"lineNumber":68,"author":{"gitId":"-"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2018-08-06"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertTrue(addressBook.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void hasPerson_personWithSameIdentityFieldsInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07"},{"lineNumber":74,"author":{"gitId":"-"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2018-08-06"},{"lineNumber":75,"author":{"gitId":"jskimdev"},"content":" Patient editedAlice \u003d new PatientBuilder(ALICE).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-06"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertTrue(addressBook.hasPerson(editedAlice));","lastModifiedDate":"2018-08-06"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void getPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e addressBook.getPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"jskimdev"},"content":" String expected \u003d AddressBook.class.getCanonicalName() + \"{patients\u003d\" + addressBook.getPersonList() + \"}\";","lastModifiedDate":"2024-03-19"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertEquals(expected, addressBook.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-24"},{"lineNumber":92,"author":{"gitId":"jskimdev"},"content":" * A stub ReadOnlyAddressBook whose patients list can violate interface constraints.","lastModifiedDate":"2024-03-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-24"},{"lineNumber":94,"author":{"gitId":"-"},"content":" private static class AddressBookStub implements ReadOnlyAddressBook {","lastModifiedDate":"2016-12-24"},{"lineNumber":95,"author":{"gitId":"jskimdev"},"content":" private final ObservableList\u003cPatient\u003e patients \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-03-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":97,"author":{"gitId":"jskimdev"},"content":" AddressBookStub(Collection\u003cPatient\u003e patients) {","lastModifiedDate":"2024-03-19"},{"lineNumber":98,"author":{"gitId":"jskimdev"},"content":" this.patients.setAll(patients);","lastModifiedDate":"2024-03-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":101,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-24"},{"lineNumber":102,"author":{"gitId":"jskimdev"},"content":" public ObservableList\u003cPatient\u003e getPersonList() {","lastModifiedDate":"2024-03-19"},{"lineNumber":103,"author":{"gitId":"jskimdev"},"content":" return patients;","lastModifiedDate":"2024-03-19"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":107,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-24"}],"authorContributionMap":{"jskimdev":18,"-":89}},{"path":"src/test/java/seedu/address/model/ModelManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2017-05-31"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.testutil.TypicalPatients.ALICE;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.testutil.TypicalPatients.BENSON;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-31"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":18,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.testutil.AddressBookBuilder;","lastModifiedDate":"2017-05-31"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class ModelManagerTest {","lastModifiedDate":"2017-05-31"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private ModelManager modelManager \u003d new ModelManager();","lastModifiedDate":"2018-08-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2018-11-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertEquals(new UserPrefs(), modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertEquals(new GuiSettings(), modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertEquals(new AddressBook(), new AddressBook(modelManager.getAddressBook()));","lastModifiedDate":"2018-11-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public void setUserPrefs_nullUserPrefs_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setUserPrefs(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void setUserPrefs_validUserPrefs_copiesUserPrefs() {","lastModifiedDate":"2018-12-06"},{"lineNumber":39,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"address/book/file/path\"));","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(new GuiSettings(1, 2, 3, 4));","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" modelManager.setUserPrefs(userPrefs);","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertEquals(userPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // Modifying userPrefs should not modify modelManager\u0027s userPrefs","lastModifiedDate":"2018-12-06"},{"lineNumber":46,"author":{"gitId":"-"},"content":" UserPrefs oldUserPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":47,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"new/address/book/file/path\"));","lastModifiedDate":"2018-12-06"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertEquals(oldUserPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-12-06"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void setGuiSettings_nullGuiSettings_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setGuiSettings(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void setGuiSettings_validGuiSettings_setsGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(1, 2, 3, 4);","lastModifiedDate":"2018-11-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" modelManager.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertEquals(guiSettings, modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setAddressBookFilePath(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_validPath_setsAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" Path path \u003d Paths.get(\"address/book/file/path\");","lastModifiedDate":"2018-11-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" modelManager.setAddressBookFilePath(path);","lastModifiedDate":"2018-11-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertEquals(path, modelManager.getAddressBookFilePath());","lastModifiedDate":"2018-11-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void hasPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-06"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasPerson(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void hasPerson_personNotInAddressBook_returnsFalse() {","lastModifiedDate":"2018-08-06"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertFalse(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void hasPerson_personInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07"},{"lineNumber":87,"author":{"gitId":"-"},"content":" modelManager.addPerson(ALICE);","lastModifiedDate":"2018-08-06"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertTrue(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e modelManager.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-31"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":98,"author":{"gitId":"-"},"content":" AddressBook addressBook \u003d new AddressBookBuilder().withPerson(ALICE).withPerson(BENSON).build();","lastModifiedDate":"2017-07-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" AddressBook differentAddressBook \u003d new AddressBook();","lastModifiedDate":"2017-05-31"},{"lineNumber":100,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":102,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":103,"author":{"gitId":"-"},"content":" modelManager \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2018-08-06"},{"lineNumber":104,"author":{"gitId":"-"},"content":" ModelManager modelManagerCopy \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2017-05-31"},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManagerCopy));","lastModifiedDate":"2017-05-31"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":107,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManager));","lastModifiedDate":"2017-05-31"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":110,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(null));","lastModifiedDate":"2017-05-31"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":113,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(5));","lastModifiedDate":"2017-05-31"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":116,"author":{"gitId":"-"},"content":" // different addressBook -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(differentAddressBook, userPrefs)));","lastModifiedDate":"2017-05-31"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":119,"author":{"gitId":"-"},"content":" // different filteredList -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":120,"author":{"gitId":"-"},"content":" String[] keywords \u003d ALICE.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-19"},{"lineNumber":121,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(keywords)));","lastModifiedDate":"2017-06-12"},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, userPrefs)));","lastModifiedDate":"2017-05-31"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":124,"author":{"gitId":"-"},"content":" // resets modelManager to initial state for upcoming tests","lastModifiedDate":"2017-08-05"},{"lineNumber":125,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":127,"author":{"gitId":"-"},"content":" // different userPrefs -\u003e returns false","lastModifiedDate":"2018-11-27"},{"lineNumber":128,"author":{"gitId":"-"},"content":" UserPrefs differentUserPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":129,"author":{"gitId":"-"},"content":" differentUserPrefs.setAddressBookFilePath(Paths.get(\"differentFilePath\"));","lastModifiedDate":"2018-08-09"},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, differentUserPrefs)));","lastModifiedDate":"2018-11-27"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":132,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-31"}],"authorContributionMap":{"jskimdev":3,"-":129}},{"path":"src/test/java/seedu/address/model/patient/AddressTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jskimdev"},"content":"package seedu.address.model.patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class AddressTest {","lastModifiedDate":"2017-01-16"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04"},{"lineNumber":13,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new Address(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":14,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void constructor_invalidAddress_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":" String invalidAddress \u003d \"\";","lastModifiedDate":"2017-05-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Address(invalidAddress));","lastModifiedDate":"2019-03-14"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void isValidAddress() {","lastModifiedDate":"2017-01-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // null address","lastModifiedDate":"2017-12-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Address.isValidAddress(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // invalid addresses","lastModifiedDate":"2017-01-16"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertFalse(Address.isValidAddress(\"\")); // empty string","lastModifiedDate":"2017-01-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(Address.isValidAddress(\" \")); // spaces only","lastModifiedDate":"2017-01-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // valid addresses","lastModifiedDate":"2017-01-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertTrue(Address.isValidAddress(\"Blk 456, Den Road, #01-355\"));","lastModifiedDate":"2017-01-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertTrue(Address.isValidAddress(\"-\")); // one character","lastModifiedDate":"2017-01-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertTrue(Address.isValidAddress(\"Leng Inc; 1234 Market St; San Francisco CA 2349879; USA\")); // long address","lastModifiedDate":"2017-01-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" Address address \u003d new Address(\"Valid Address\");","lastModifiedDate":"2019-02-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertTrue(address.equals(new Address(\"Valid Address\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertTrue(address.equals(address));","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertFalse(address.equals(null));","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(address.equals(5.0f));","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertFalse(address.equals(new Address(\"Other Valid Address\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16"}],"authorContributionMap":{"jskimdev":1,"-":55}},{"path":"src/test/java/seedu/address/model/patient/DateOfBirthTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jskimdev"},"content":"package seedu.address.model.patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"jskimdev"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"jskimdev"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"jskimdev"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"jskimdev"},"content":"public class DateOfBirthTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"jskimdev"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"jskimdev"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"jskimdev"},"content":" assertThrows(NullPointerException.class, () -\u003e new DateOfBirth(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"jskimdev"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"jskimdev"},"content":" public void constuctor_invalidDateOfBirth_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"jskimdev"},"content":" String invalidDateOfBirth \u003d \"\";","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"jskimdev"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new DateOfBirth(invalidDateOfBirth));","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"jskimdev"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"jskimdev"},"content":" public void isValidDateOfBirth() {","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"jskimdev"},"content":" // null date of birth","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"jskimdev"},"content":" assertThrows(NullPointerException.class, () -\u003e DateOfBirth.isValidDateOfBirth(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"jskimdev"},"content":" // invalid date of birth","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"jskimdev"},"content":" assertFalse(DateOfBirth.isValidDateOfBirth(\"\")); // empty string","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"jskimdev"},"content":" assertFalse(DateOfBirth.isValidDateOfBirth(\" \")); // spaces only","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"jskimdev"},"content":" assertFalse(DateOfBirth.isValidDateOfBirth(\"wdalsjdaj\")); // random string","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"jskimdev"},"content":" assertFalse(DateOfBirth.isValidDateOfBirth(\"12/2024\")); // without date","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"jskimdev"},"content":" assertFalse(DateOfBirth.isValidDateOfBirth(\"245/2/2024\")); // invalid date","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"jskimdev"},"content":" assertFalse(DateOfBirth.isValidDateOfBirth(\"25/24/2024\")); // invalid month","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"jskimdev"},"content":" assertFalse(DateOfBirth.isValidDateOfBirth(\"25/2/22\")); // invalid year","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"jskimdev"},"content":" // valid date of birth","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"jskimdev"},"content":" assertTrue(DateOfBirth.isValidDateOfBirth(\"25/2/2024\")); // valid first input foramt","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"jskimdev"},"content":" assertTrue(DateOfBirth.isValidDateOfBirth(\"2024-2-24\")); // valid second input format","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"jskimdev"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"jskimdev"},"content":" public void equals() {","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"jskimdev"},"content":" DateOfBirth dateOfBirth \u003d new DateOfBirth(\"2024-2-5\");","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"jskimdev"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"jskimdev"},"content":" assertTrue(dateOfBirth.equals(new DateOfBirth(\"2024-2-5\")));","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"jskimdev"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"jskimdev"},"content":" assertTrue(dateOfBirth.equals(new DateOfBirth(\"2024-02-05\")));","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"jskimdev"},"content":" // another acceptable input format -\u003e returns true","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"jskimdev"},"content":" assertTrue(dateOfBirth.equals(new DateOfBirth(\"5/2/2024\")));","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"jskimdev"},"content":" //another acceptable input format -\u003e returns true","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"jskimdev"},"content":" assertTrue(dateOfBirth.equals(new DateOfBirth(\"05/02/2024\")));","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"jskimdev"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"jskimdev"},"content":" assertTrue(dateOfBirth.equals(dateOfBirth));","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"jskimdev"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"jskimdev"},"content":" assertFalse(dateOfBirth.equals(null));","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"jskimdev"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"jskimdev"},"content":" assertFalse(dateOfBirth.equals(5.0f));","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"jskimdev"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"jskimdev"},"content":" assertFalse(dateOfBirth.equals(new DateOfBirth(\"2026-12-5\")));","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"jskimdev"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"jskimdev":68}},{"path":"src/test/java/seedu/address/model/patient/EmailTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jskimdev"},"content":"package seedu.address.model.patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class EmailTest {","lastModifiedDate":"2017-01-16"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04"},{"lineNumber":13,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new Email(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":14,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void constructor_invalidEmail_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":" String invalidEmail \u003d \"\";","lastModifiedDate":"2017-05-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Email(invalidEmail));","lastModifiedDate":"2019-03-14"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void isValidEmail() {","lastModifiedDate":"2017-01-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // null email","lastModifiedDate":"2017-12-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Email.isValidEmail(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // blank email","lastModifiedDate":"2017-01-16"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"\")); // empty string","lastModifiedDate":"2017-01-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\" \")); // spaces only","lastModifiedDate":"2017-01-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // missing parts","lastModifiedDate":"2017-01-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"@example.com\")); // missing local part","lastModifiedDate":"2017-04-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjackexample.com\")); // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-04-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@\")); // missing domain name","lastModifiedDate":"2017-01-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" // invalid parts","lastModifiedDate":"2017-01-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@-\")); // invalid domain name","lastModifiedDate":"2017-01-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@exam_ple.com\")); // underscore in domain name","lastModifiedDate":"2018-02-09"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peter jack@example.com\")); // spaces in local part","lastModifiedDate":"2017-04-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@exam ple.com\")); // spaces in domain name","lastModifiedDate":"2017-04-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\" peterjack@example.com\")); // leading space","lastModifiedDate":"2018-02-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.com \")); // trailing space","lastModifiedDate":"2018-02-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@@example.com\")); // double \u0027@\u0027 symbol","lastModifiedDate":"2017-04-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peter@jack@example.com\")); // \u0027@\u0027 symbol in local part","lastModifiedDate":"2017-04-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"-peterjack@example.com\")); // local part starts with a hyphen","lastModifiedDate":"2021-07-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack-@example.com\")); // local part ends with a hyphen","lastModifiedDate":"2021-07-20"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peter..jack@example.com\")); // local part has two consecutive periods","lastModifiedDate":"2021-07-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example@com\")); // \u0027@\u0027 symbol in domain name","lastModifiedDate":"2017-04-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@.example.com\")); // domain name starts with a period","lastModifiedDate":"2018-02-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.com.\")); // domain name ends with a period","lastModifiedDate":"2018-02-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@-example.com\")); // domain name starts with a hyphen","lastModifiedDate":"2018-02-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.com-\")); // domain name ends with a hyphen","lastModifiedDate":"2018-02-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.c\")); // top level domain has less than two chars","lastModifiedDate":"2021-07-20"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // valid email","lastModifiedDate":"2017-01-16"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack_1190@example.com\")); // underscore in local part","lastModifiedDate":"2021-07-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack.1190@example.com\")); // period in local part","lastModifiedDate":"2021-07-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack+1190@example.com\")); // \u0027+\u0027 symbol in local part","lastModifiedDate":"2021-07-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack-1190@example.com\")); // hyphen in local part","lastModifiedDate":"2021-07-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"a@bc\")); // minimal","lastModifiedDate":"2018-02-09"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"test@localhost\")); // alphabets only","lastModifiedDate":"2017-01-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"123@145\")); // numeric local part and domain name","lastModifiedDate":"2017-01-16"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"a1+be.d@example1.com\")); // mixture of alphanumeric and special characters","lastModifiedDate":"2021-07-20"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"peter_jack@very-very-very-long-example.com\")); // long domain name","lastModifiedDate":"2018-02-09"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"if.you.dream.it_you.can.do.it@example.com\")); // long local part","lastModifiedDate":"2017-04-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"e1234567@u.nus.edu\")); // more than one period in domain","lastModifiedDate":"2021-07-20"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" Email email \u003d new Email(\"valid@email\");","lastModifiedDate":"2019-02-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertTrue(email.equals(new Email(\"valid@email\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertTrue(email.equals(email));","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertFalse(email.equals(null));","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertFalse(email.equals(5.0f));","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertFalse(email.equals(new Email(\"other.valid@email\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16"}],"authorContributionMap":{"jskimdev":1,"-":87}},{"path":"src/test/java/seedu/address/model/patient/NameContainsKeywordsPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jskimdev"},"content":"package seedu.address.model.patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"jskimdev"},"content":"import seedu.address.testutil.PatientBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class NameContainsKeywordsPredicateTest {","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" List\u003cString\u003e firstPredicateKeywordList \u003d Collections.singletonList(\"first\");","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":" List\u003cString\u003e secondPredicateKeywordList \u003d Arrays.asList(\"first\", \"second\");","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicate \u003d new NameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate secondPredicate \u003d new NameContainsKeywordsPredicate(secondPredicateKeywordList);","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" assertTrue(firstPredicate.equals(firstPredicate));","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicateCopy \u003d new NameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertTrue(firstPredicate.equals(firstPredicateCopy));","lastModifiedDate":"2017-06-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(1));","lastModifiedDate":"2017-06-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(null));","lastModifiedDate":"2017-06-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":38,"author":{"gitId":"jskimdev"},"content":" // different patient -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(secondPredicate));","lastModifiedDate":"2017-06-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void test_nameContainsKeywords_returnsTrue() {","lastModifiedDate":"2017-08-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // One keyword","lastModifiedDate":"2017-06-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Collections.singletonList(\"Alice\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":46,"author":{"gitId":"jskimdev"},"content":" assertTrue(predicate.test(new PatientBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // Multiple keywords","lastModifiedDate":"2017-06-12"},{"lineNumber":49,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Alice\", \"Bob\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":50,"author":{"gitId":"jskimdev"},"content":" assertTrue(predicate.test(new PatientBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // Only one matching keyword","lastModifiedDate":"2017-06-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Bob\", \"Carol\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":54,"author":{"gitId":"jskimdev"},"content":" assertTrue(predicate.test(new PatientBuilder().withName(\"Alice Carol\").build()));","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // Mixed-case keywords","lastModifiedDate":"2017-06-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"aLIce\", \"bOB\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":58,"author":{"gitId":"jskimdev"},"content":" assertTrue(predicate.test(new PatientBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void test_nameDoesNotContainKeywords_returnsFalse() {","lastModifiedDate":"2017-08-15"},{"lineNumber":63,"author":{"gitId":"-"},"content":" // Zero keywords","lastModifiedDate":"2017-06-12"},{"lineNumber":64,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Collections.emptyList());","lastModifiedDate":"2017-06-12"},{"lineNumber":65,"author":{"gitId":"jskimdev"},"content":" assertFalse(predicate.test(new PatientBuilder().withName(\"Alice\").build()));","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":" // Non-matching keyword","lastModifiedDate":"2017-06-12"},{"lineNumber":68,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Carol\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":69,"author":{"gitId":"jskimdev"},"content":" assertFalse(predicate.test(new PatientBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // Keywords match phone, email and address, but does not match name","lastModifiedDate":"2017-06-12"},{"lineNumber":72,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"12345\", \"alice@email.com\", \"Main\", \"Street\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":73,"author":{"gitId":"jskimdev"},"content":" assertFalse(predicate.test(new PatientBuilder().withName(\"Alice\").withPhone(\"12345\")","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" .withEmail(\"alice@email.com\").withAddress(\"Main Street\").build()));","lastModifiedDate":"2017-06-12"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d List.of(\"keyword1\", \"keyword2\");","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(keywords);","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" String expected \u003d NameContainsKeywordsPredicate.class.getCanonicalName() + \"{keywords\u003d\" + keywords + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"jskimdev":10,"-":75}},{"path":"src/test/java/seedu/address/model/patient/NameTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jskimdev"},"content":"package seedu.address.model.patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class NameTest {","lastModifiedDate":"2017-01-16"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04"},{"lineNumber":13,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new Name(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":14,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void constructor_invalidName_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":" String invalidName \u003d \"\";","lastModifiedDate":"2017-05-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Name(invalidName));","lastModifiedDate":"2019-03-14"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void isValidName() {","lastModifiedDate":"2017-01-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // null name","lastModifiedDate":"2017-12-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Name.isValidName(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-01-16"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"\")); // empty string","lastModifiedDate":"2017-01-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\" \")); // spaces only","lastModifiedDate":"2017-01-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"^\")); // only non-alphanumeric characters","lastModifiedDate":"2017-01-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"peter*\")); // contains non-alphanumeric characters","lastModifiedDate":"2017-01-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // valid name","lastModifiedDate":"2017-01-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"peter jack\")); // alphabets only","lastModifiedDate":"2017-01-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"12345\")); // numbers only","lastModifiedDate":"2017-01-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"peter the 2nd\")); // alphanumeric characters","lastModifiedDate":"2017-01-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"Capital Tan\")); // with capital letters","lastModifiedDate":"2017-01-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"David Roger Jackson Ray Jr 2nd\")); // long names","lastModifiedDate":"2017-01-16"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" Name name \u003d new Name(\"Valid Name\");","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(name.equals(new Name(\"Valid Name\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertTrue(name.equals(name));","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(name.equals(null));","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertFalse(name.equals(5.0f));","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertFalse(name.equals(new Name(\"Other Valid Name\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16"}],"authorContributionMap":{"jskimdev":1,"-":59}},{"path":"src/test/java/seedu/address/model/patient/PatientTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jskimdev"},"content":"package seedu.address.model.patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_DATEOFBIRTH_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SEX_BOB;","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.testutil.TypicalPatients.ALICE;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.testutil.TypicalPatients.BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":19,"author":{"gitId":"jskimdev"},"content":"import seedu.address.testutil.PatientBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":21,"author":{"gitId":"jskimdev"},"content":"public class PatientTest {","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19"},{"lineNumber":25,"author":{"gitId":"jskimdev"},"content":" public void isSamePatient() {","lastModifiedDate":"2024-03-22"},{"lineNumber":26,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":27,"author":{"gitId":"jskimdev"},"content":" assertTrue(ALICE.isSamePatient(ALICE));","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":30,"author":{"gitId":"jskimdev"},"content":" assertFalse(ALICE.isSamePatient(null));","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":32,"author":{"gitId":"jskimdev"},"content":" // same name and phone number, all other attributes different -\u003e returns true","lastModifiedDate":"2024-03-22"},{"lineNumber":33,"author":{"gitId":"jskimdev"},"content":" Patient editedAlice \u003d new PatientBuilder(ALICE).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2024-03-22"},{"lineNumber":34,"author":{"gitId":"jskimdev"},"content":" .withAddress(VALID_ADDRESS_BOB).withDateOfBirth(VALID_DATEOFBIRTH_BOB).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"jskimdev"},"content":" assertTrue(ALICE.isSamePatient(editedAlice));","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":" // different name, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":38,"author":{"gitId":"jskimdev"},"content":" editedAlice \u003d new PatientBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"jskimdev"},"content":" assertFalse(ALICE.isSamePatient(editedAlice));","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":" // name differs in case, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":42,"author":{"gitId":"jskimdev"},"content":" Patient editedBob \u003d new PatientBuilder(BOB).withName(VALID_NAME_BOB.toLowerCase()).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"jskimdev"},"content":" assertFalse(BOB.isSamePatient(editedBob));","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":45,"author":{"gitId":"jskimdev"},"content":" // different phone number, all other attributes same -\u003e returns false","lastModifiedDate":"2024-03-22"},{"lineNumber":46,"author":{"gitId":"jskimdev"},"content":" editedBob \u003d new PatientBuilder(BOB).withPhone(VALID_PHONE_AMY).build();","lastModifiedDate":"2024-03-22"},{"lineNumber":47,"author":{"gitId":"jskimdev"},"content":" assertFalse(BOB.isSamePatient(editedBob));","lastModifiedDate":"2024-03-22"},{"lineNumber":48,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":49,"author":{"gitId":"jskimdev"},"content":" // different phone number and different name, all other attributes same -\u003e returns false","lastModifiedDate":"2024-03-22"},{"lineNumber":50,"author":{"gitId":"jskimdev"},"content":" editedBob \u003d new PatientBuilder(BOB).withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY).build();","lastModifiedDate":"2024-03-22"},{"lineNumber":51,"author":{"gitId":"jskimdev"},"content":" assertFalse(BOB.isSamePatient(editedBob));","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":57,"author":{"gitId":"jskimdev"},"content":" Patient aliceCopy \u003d new PatientBuilder(ALICE).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2018-04-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2018-04-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(null));","lastModifiedDate":"2018-04-19"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2018-04-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":69,"author":{"gitId":"jskimdev"},"content":" // different patient -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2018-04-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":73,"author":{"gitId":"jskimdev"},"content":" Patient editedAlice \u003d new PatientBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":77,"author":{"gitId":"jskimdev"},"content":" editedAlice \u003d new PatientBuilder(ALICE).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":81,"author":{"gitId":"jskimdev"},"content":" editedAlice \u003d new PatientBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":84,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":85,"author":{"gitId":"jskimdev"},"content":" editedAlice \u003d new PatientBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":87,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":88,"author":{"gitId":"jskimdev"},"content":" // different date of birth -\u003e returns false","lastModifiedDate":"2024-03-22"},{"lineNumber":89,"author":{"gitId":"jskimdev"},"content":" editedAlice \u003d new PatientBuilder(ALICE).withDateOfBirth(VALID_DATEOFBIRTH_BOB).build();","lastModifiedDate":"2024-03-22"},{"lineNumber":90,"author":{"gitId":"jskimdev"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2024-03-22"},{"lineNumber":91,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":92,"author":{"gitId":"jskimdev"},"content":" // different sex -\u003e returns false","lastModifiedDate":"2024-03-22"},{"lineNumber":93,"author":{"gitId":"jskimdev"},"content":" editedAlice \u003d new PatientBuilder(ALICE).withSex(VALID_SEX_BOB).build();","lastModifiedDate":"2024-03-22"},{"lineNumber":94,"author":{"gitId":"jskimdev"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2024-03-22"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":99,"author":{"gitId":"jskimdev"},"content":" String expected \u003d Patient.class.getCanonicalName() + \"{name\u003d\" + ALICE.getName() + \", phone\u003d\" + ALICE.getPhone()","lastModifiedDate":"2024-03-19"},{"lineNumber":100,"author":{"gitId":"jskimdev"},"content":" + \", email\u003d\" + ALICE.getEmail() + \", address\u003d\" + ALICE.getAddress() + \", date of birth\u003d\"","lastModifiedDate":"2024-03-17"},{"lineNumber":101,"author":{"gitId":"jskimdev"},"content":" + ALICE.getDateOfBirth() + \", sex\u003d\" + ALICE.getSex() + \"}\";","lastModifiedDate":"2024-03-18"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"jskimdev":48,"-":56}},{"path":"src/test/java/seedu/address/model/patient/PhoneMatchesPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Vision-2000"},"content":"package seedu.address.model.patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"Vision-2000"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"Vision-2000"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"Vision-2000"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"Vision-2000"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"Vision-2000"},"content":"import seedu.address.testutil.PatientBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"Vision-2000"},"content":"public class PhoneMatchesPredicateTest {","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"Vision-2000"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"Vision-2000"},"content":" public void equals() {","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"Vision-2000"},"content":" String firstPhoneString \u003d \"99999999\";","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"Vision-2000"},"content":" Phone firstPhone \u003d new Phone(firstPhoneString);","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"Vision-2000"},"content":" String secondPhoneString \u003d \"88888888\";","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"Vision-2000"},"content":" Phone secondPhone \u003d new Phone(secondPhoneString);","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"Vision-2000"},"content":" PhoneMatchesPredicate firstPredicate \u003d new PhoneMatchesPredicate(firstPhone);","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"Vision-2000"},"content":" PhoneMatchesPredicate secondPredicate \u003d new PhoneMatchesPredicate(secondPhone);","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"Vision-2000"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"Vision-2000"},"content":" assertTrue(firstPredicate.equals(firstPredicate));","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"Vision-2000"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"Vision-2000"},"content":" String firstPhoneStringCopy \u003d \"99999999\";","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"Vision-2000"},"content":" Phone firstPhoneCopy \u003d new Phone(firstPhoneStringCopy);","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"Vision-2000"},"content":" PhoneMatchesPredicate firstPredicateCopy \u003d new PhoneMatchesPredicate(firstPhoneCopy);","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"Vision-2000"},"content":" assertTrue(firstPredicate.equals(firstPredicateCopy));","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"Vision-2000"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"Vision-2000"},"content":" assertFalse(firstPredicate.equals(1));","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"Vision-2000"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"Vision-2000"},"content":" assertFalse(firstPredicate.equals(null));","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"Vision-2000"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"Vision-2000"},"content":" assertFalse(firstPredicate.equals(secondPredicate));","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"Vision-2000"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"Vision-2000"},"content":" public void test_phoneMatches_returnsTrue() {","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"Vision-2000"},"content":" String phoneNumber \u003d \"98765432\";","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"Vision-2000"},"content":" PhoneMatchesPredicate predicate \u003d new PhoneMatchesPredicate(new Phone(phoneNumber));","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"Vision-2000"},"content":" assertTrue(predicate.test(new PatientBuilder().withPhone(phoneNumber).build()));","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"Vision-2000"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"Vision-2000"},"content":" public void test_phoneDoesNotMatch_returnsFalse() {","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"Vision-2000"},"content":" // Null check","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"Vision-2000"},"content":" String phoneNumber \u003d \"98765432\";","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"Vision-2000"},"content":" PhoneMatchesPredicate predicate \u003d new PhoneMatchesPredicate(new Phone(phoneNumber));","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"Vision-2000"},"content":" assertFalse(predicate.test(null));","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"Vision-2000"},"content":" // Non-matching phones","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"Vision-2000"},"content":" assertFalse(predicate.test(new PatientBuilder().withPhone(\"99999999\").build()));","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"Vision-2000"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"Vision-2000"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"Vision-2000"},"content":" Phone phone \u003d new Phone(\"99999999\");","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"Vision-2000"},"content":" PhoneMatchesPredicate predicate \u003d new PhoneMatchesPredicate(phone);","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"Vision-2000"},"content":" String expected \u003d PhoneMatchesPredicate.class.getCanonicalName() + \"{phone\u003d\" + phone + \"}\";","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"Vision-2000"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"Vision-2000"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"Vision-2000":69}},{"path":"src/test/java/seedu/address/model/patient/PhoneTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jskimdev"},"content":"package seedu.address.model.patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class PhoneTest {","lastModifiedDate":"2017-01-16"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04"},{"lineNumber":13,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new Phone(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":14,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void constructor_invalidPhone_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":" String invalidPhone \u003d \"\";","lastModifiedDate":"2017-05-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Phone(invalidPhone));","lastModifiedDate":"2019-03-14"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void isValidPhone() {","lastModifiedDate":"2017-01-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // null phone number","lastModifiedDate":"2017-12-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Phone.isValidPhone(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // invalid phone numbers","lastModifiedDate":"2017-01-16"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"\")); // empty string","lastModifiedDate":"2017-01-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\" \")); // spaces only","lastModifiedDate":"2017-01-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"91\")); // less than 3 numbers","lastModifiedDate":"2017-05-04"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"phone\")); // non-numeric","lastModifiedDate":"2017-01-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"9011p041\")); // alphabets within digits","lastModifiedDate":"2017-01-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"9312 1534\")); // spaces within digits","lastModifiedDate":"2017-01-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // valid phone numbers","lastModifiedDate":"2017-01-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertTrue(Phone.isValidPhone(\"911\")); // exactly 3 numbers","lastModifiedDate":"2017-05-04"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertTrue(Phone.isValidPhone(\"93121534\"));","lastModifiedDate":"2017-01-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertTrue(Phone.isValidPhone(\"124293842033123\")); // long phone numbers","lastModifiedDate":"2017-01-16"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" Phone phone \u003d new Phone(\"999\");","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(phone.equals(new Phone(\"999\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertTrue(phone.equals(phone));","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(phone.equals(null));","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertFalse(phone.equals(5.0f));","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertFalse(phone.equals(new Phone(\"995\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16"}],"authorContributionMap":{"jskimdev":1,"-":59}},{"path":"src/test/java/seedu/address/model/patient/SexTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jskimdev"},"content":"package seedu.address.model.patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"jskimdev"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"jskimdev"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"jskimdev"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"jskimdev"},"content":"public class SexTest {","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"jskimdev"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"jskimdev"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"jskimdev"},"content":" assertThrows(NullPointerException.class, () -\u003e new Sex(null));","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"jskimdev"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"jskimdev"},"content":" public void constructor_invalidSex_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"jskimdev"},"content":" String invalidSex \u003d \"\";","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"jskimdev"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Sex(invalidSex));","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"jskimdev"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"jskimdev"},"content":" public void isValidSex() {","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"jskimdev"},"content":" // null sex","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"jskimdev"},"content":" assertThrows(NullPointerException.class, () -\u003e Sex.isValidSex(null));","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"jskimdev"},"content":" // invalid sex","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"jskimdev"},"content":" assertFalse(Sex.isValidSex(\"\")); // empty string","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"jskimdev"},"content":" assertFalse(Sex.isValidSex(\" \")); // spaces only","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"jskimdev"},"content":" assertFalse(Sex.isValidSex(\"akldjkldf\")); // random string","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"jskimdev"},"content":" assertFalse(Sex.isValidSex(\"Malet\")); // similar to valid string","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"jskimdev"},"content":" // valid sex","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"jskimdev"},"content":" assertTrue(Sex.isValidSex(\"Male\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"jskimdev"},"content":" assertTrue(Sex.isValidSex(\"Female\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"jskimdev"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"jskimdev"},"content":" public void equals() {","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"jskimdev"},"content":" Sex sex \u003d new Sex(\"Male\");","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"jskimdev"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"jskimdev"},"content":" assertTrue(sex.equals(new Sex(\"Male\")));","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"jskimdev"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"jskimdev"},"content":" assertTrue(sex.equals(sex));","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"jskimdev"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"jskimdev"},"content":" assertFalse(sex.equals(null));","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"jskimdev"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"jskimdev"},"content":" assertFalse(sex.equals(5.0f));","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"jskimdev"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"jskimdev"},"content":" assertFalse(sex.equals(new Sex(\"Female\")));","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"jskimdev"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"jskimdev":56}},{"path":"src/test/java/seedu/address/model/patient/UniquePatientListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jskimdev"},"content":"package seedu.address.model.patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.testutil.TypicalPatients.ALICE;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.testutil.TypicalPatients.BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":17,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.exceptions.DuplicatePatientException;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.exceptions.PatientNotFoundException;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"jskimdev"},"content":"import seedu.address.testutil.PatientBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":21,"author":{"gitId":"jskimdev"},"content":"public class UniquePatientListTest {","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":23,"author":{"gitId":"jskimdev"},"content":" private final UniquePatientList uniquePatientList \u003d new UniquePatientList();","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":26,"author":{"gitId":"jskimdev"},"content":" public void contains_nullPatient_throwsNullPointerException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"jskimdev"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePatientList.contains(null));","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":31,"author":{"gitId":"jskimdev"},"content":" public void contains_patientNotInList_returnsFalse() {","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"jskimdev"},"content":" assertFalse(uniquePatientList.contains(ALICE));","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":36,"author":{"gitId":"jskimdev"},"content":" public void contains_patientInList_returnsTrue() {","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"jskimdev"},"content":" uniquePatientList.add(ALICE);","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"jskimdev"},"content":" assertTrue(uniquePatientList.contains(ALICE));","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":42,"author":{"gitId":"jskimdev"},"content":" public void contains_patientWithSameIdentityFieldsInList_returnsTrue() {","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"jskimdev"},"content":" uniquePatientList.add(ALICE);","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"jskimdev"},"content":" Patient editedAlice \u003d new PatientBuilder(ALICE).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-08"},{"lineNumber":46,"author":{"gitId":"jskimdev"},"content":" assertTrue(uniquePatientList.contains(editedAlice));","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":50,"author":{"gitId":"jskimdev"},"content":" public void add_nullPatient_throwsNullPointerException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"jskimdev"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePatientList.add(null));","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":55,"author":{"gitId":"jskimdev"},"content":" public void add_duplicatePatient_throwsDuplicatePatientException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"jskimdev"},"content":" uniquePatientList.add(ALICE);","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"jskimdev"},"content":" assertThrows(DuplicatePatientException.class, () -\u003e uniquePatientList.add(ALICE));","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":61,"author":{"gitId":"jskimdev"},"content":" public void setPatient_nullTargetPatient_throwsNullPointerException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"jskimdev"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePatientList.setPatient(null, ALICE));","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":66,"author":{"gitId":"jskimdev"},"content":" public void setPatient_nullEditedPatient_throwsNullPointerException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"jskimdev"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePatientList.setPatient(ALICE, null));","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":71,"author":{"gitId":"jskimdev"},"content":" public void setPatient_targetPatientNotInList_throwsPatientNotFoundException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"jskimdev"},"content":" assertThrows(PatientNotFoundException.class, () -\u003e uniquePatientList.setPatient(ALICE, ALICE));","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":76,"author":{"gitId":"jskimdev"},"content":" public void setPatient_editedPatientIsSamePatient_success() {","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"jskimdev"},"content":" uniquePatientList.add(ALICE);","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"jskimdev"},"content":" uniquePatientList.setPatient(ALICE, ALICE);","lastModifiedDate":"2024-03-19"},{"lineNumber":79,"author":{"gitId":"jskimdev"},"content":" UniquePatientList expectedUniquePatientList \u003d new UniquePatientList();","lastModifiedDate":"2024-03-19"},{"lineNumber":80,"author":{"gitId":"jskimdev"},"content":" expectedUniquePatientList.add(ALICE);","lastModifiedDate":"2024-03-19"},{"lineNumber":81,"author":{"gitId":"jskimdev"},"content":" assertEquals(expectedUniquePatientList, uniquePatientList);","lastModifiedDate":"2024-03-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":85,"author":{"gitId":"jskimdev"},"content":" public void setPatient_editedPatientHasSameIdentity_success() {","lastModifiedDate":"2024-03-19"},{"lineNumber":86,"author":{"gitId":"jskimdev"},"content":" uniquePatientList.add(ALICE);","lastModifiedDate":"2024-03-19"},{"lineNumber":87,"author":{"gitId":"jskimdev"},"content":" Patient editedAlice \u003d new PatientBuilder(ALICE).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2024-03-19"},{"lineNumber":88,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-08"},{"lineNumber":89,"author":{"gitId":"jskimdev"},"content":" uniquePatientList.setPatient(ALICE, editedAlice);","lastModifiedDate":"2024-03-19"},{"lineNumber":90,"author":{"gitId":"jskimdev"},"content":" UniquePatientList expectedUniquePatientList \u003d new UniquePatientList();","lastModifiedDate":"2024-03-19"},{"lineNumber":91,"author":{"gitId":"jskimdev"},"content":" expectedUniquePatientList.add(editedAlice);","lastModifiedDate":"2024-03-19"},{"lineNumber":92,"author":{"gitId":"jskimdev"},"content":" assertEquals(expectedUniquePatientList, uniquePatientList);","lastModifiedDate":"2024-03-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":96,"author":{"gitId":"jskimdev"},"content":" public void setPatient_editedPatientHasDifferentIdentity_success() {","lastModifiedDate":"2024-03-19"},{"lineNumber":97,"author":{"gitId":"jskimdev"},"content":" uniquePatientList.add(ALICE);","lastModifiedDate":"2024-03-19"},{"lineNumber":98,"author":{"gitId":"jskimdev"},"content":" uniquePatientList.setPatient(ALICE, BOB);","lastModifiedDate":"2024-03-19"},{"lineNumber":99,"author":{"gitId":"jskimdev"},"content":" UniquePatientList expectedUniquePatientList \u003d new UniquePatientList();","lastModifiedDate":"2024-03-19"},{"lineNumber":100,"author":{"gitId":"jskimdev"},"content":" expectedUniquePatientList.add(BOB);","lastModifiedDate":"2024-03-19"},{"lineNumber":101,"author":{"gitId":"jskimdev"},"content":" assertEquals(expectedUniquePatientList, uniquePatientList);","lastModifiedDate":"2024-03-19"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":105,"author":{"gitId":"jskimdev"},"content":" public void setPatient_editedPatientHasNonUniqueIdentity_throwsDuplicatePatientException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":106,"author":{"gitId":"jskimdev"},"content":" uniquePatientList.add(ALICE);","lastModifiedDate":"2024-03-19"},{"lineNumber":107,"author":{"gitId":"jskimdev"},"content":" uniquePatientList.add(BOB);","lastModifiedDate":"2024-03-19"},{"lineNumber":108,"author":{"gitId":"jskimdev"},"content":" assertThrows(DuplicatePatientException.class, () -\u003e uniquePatientList.setPatient(ALICE, BOB));","lastModifiedDate":"2024-03-19"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":112,"author":{"gitId":"jskimdev"},"content":" public void remove_nullPatient_throwsNullPointerException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":113,"author":{"gitId":"jskimdev"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePatientList.remove(null));","lastModifiedDate":"2024-03-19"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":117,"author":{"gitId":"jskimdev"},"content":" public void remove_patientDoesNotExist_throwsPatientNotFoundException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":118,"author":{"gitId":"jskimdev"},"content":" assertThrows(PatientNotFoundException.class, () -\u003e uniquePatientList.remove(ALICE));","lastModifiedDate":"2024-03-19"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":122,"author":{"gitId":"jskimdev"},"content":" public void remove_existingPatient_removesPatient() {","lastModifiedDate":"2024-03-19"},{"lineNumber":123,"author":{"gitId":"jskimdev"},"content":" uniquePatientList.add(ALICE);","lastModifiedDate":"2024-03-19"},{"lineNumber":124,"author":{"gitId":"jskimdev"},"content":" uniquePatientList.remove(ALICE);","lastModifiedDate":"2024-03-19"},{"lineNumber":125,"author":{"gitId":"jskimdev"},"content":" UniquePatientList expectedUniquePatientList \u003d new UniquePatientList();","lastModifiedDate":"2024-03-19"},{"lineNumber":126,"author":{"gitId":"jskimdev"},"content":" assertEquals(expectedUniquePatientList, uniquePatientList);","lastModifiedDate":"2024-03-19"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":130,"author":{"gitId":"jskimdev"},"content":" public void setPatients_nullUniquePatientList_throwsNullPointerException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":131,"author":{"gitId":"jskimdev"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePatientList.setPatients((UniquePatientList) null));","lastModifiedDate":"2024-03-19"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":135,"author":{"gitId":"jskimdev"},"content":" public void setPatient_uniquePatientList_replacesOwnListWithProvidedUniquePatientList() {","lastModifiedDate":"2024-03-19"},{"lineNumber":136,"author":{"gitId":"jskimdev"},"content":" uniquePatientList.add(ALICE);","lastModifiedDate":"2024-03-19"},{"lineNumber":137,"author":{"gitId":"jskimdev"},"content":" UniquePatientList expectedUniquePatientList \u003d new UniquePatientList();","lastModifiedDate":"2024-03-19"},{"lineNumber":138,"author":{"gitId":"jskimdev"},"content":" expectedUniquePatientList.add(BOB);","lastModifiedDate":"2024-03-19"},{"lineNumber":139,"author":{"gitId":"jskimdev"},"content":" uniquePatientList.setPatients(expectedUniquePatientList);","lastModifiedDate":"2024-03-19"},{"lineNumber":140,"author":{"gitId":"jskimdev"},"content":" assertEquals(expectedUniquePatientList, uniquePatientList);","lastModifiedDate":"2024-03-19"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":143,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":144,"author":{"gitId":"jskimdev"},"content":" public void setPatients_nullList_throwsNullPointerException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":145,"author":{"gitId":"jskimdev"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePatientList.setPatients((List\u003cPatient\u003e) null));","lastModifiedDate":"2024-03-19"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":148,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":149,"author":{"gitId":"jskimdev"},"content":" public void setPatients_list_replacesOwnListWithProvidedList() {","lastModifiedDate":"2024-03-19"},{"lineNumber":150,"author":{"gitId":"jskimdev"},"content":" uniquePatientList.add(ALICE);","lastModifiedDate":"2024-03-19"},{"lineNumber":151,"author":{"gitId":"jskimdev"},"content":" List\u003cPatient\u003e patientList \u003d Collections.singletonList(BOB);","lastModifiedDate":"2024-03-19"},{"lineNumber":152,"author":{"gitId":"jskimdev"},"content":" uniquePatientList.setPatients(patientList);","lastModifiedDate":"2024-03-19"},{"lineNumber":153,"author":{"gitId":"jskimdev"},"content":" UniquePatientList expectedUniquePatientList \u003d new UniquePatientList();","lastModifiedDate":"2024-03-19"},{"lineNumber":154,"author":{"gitId":"jskimdev"},"content":" expectedUniquePatientList.add(BOB);","lastModifiedDate":"2024-03-19"},{"lineNumber":155,"author":{"gitId":"jskimdev"},"content":" assertEquals(expectedUniquePatientList, uniquePatientList);","lastModifiedDate":"2024-03-19"},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":158,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":159,"author":{"gitId":"jskimdev"},"content":" public void setPatients_listWithDuplicatePatients_throwsDuplicatePatientException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":160,"author":{"gitId":"jskimdev"},"content":" List\u003cPatient\u003e listWithDuplicatePatients \u003d Arrays.asList(ALICE, ALICE);","lastModifiedDate":"2024-03-19"},{"lineNumber":161,"author":{"gitId":"jskimdev"},"content":" assertThrows(DuplicatePatientException.class, () -\u003e uniquePatientList.setPatients(listWithDuplicatePatients));","lastModifiedDate":"2024-03-19"},{"lineNumber":162,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":165,"author":{"gitId":"-"},"content":" public void asUnmodifiableObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2018-04-05"},{"lineNumber":166,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, ()","lastModifiedDate":"2019-03-23"},{"lineNumber":167,"author":{"gitId":"jskimdev"},"content":" -\u003e uniquePatientList.asUnmodifiableObservableList().remove(0));","lastModifiedDate":"2024-03-19"},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-24"},{"lineNumber":170,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-24"},{"lineNumber":171,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-24"},{"lineNumber":172,"author":{"gitId":"jskimdev"},"content":" assertEquals(uniquePatientList.asUnmodifiableObservableList().toString(), uniquePatientList.toString());","lastModifiedDate":"2024-03-19"},{"lineNumber":173,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-24"},{"lineNumber":174,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"jskimdev":84,"-":90}},{"path":"src/test/java/seedu/address/model/util/SampleDataUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Vision-2000"},"content":"package seedu.address.model.util;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"Vision-2000"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"Vision-2000"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"Vision-2000"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"Vision-2000"},"content":"public class SampleDataUtilTest {","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"Vision-2000"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"Vision-2000"},"content":" public void getSamplePersons_returnsNonEmptyArray() {","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"Vision-2000"},"content":" Patient[] patients \u003d SampleDataUtil.getSamplePersons();","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"Vision-2000"},"content":" assertTrue(patients.length !\u003d 0);","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"Vision-2000"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"Vision-2000":16}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedPatientTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.storage.JsonAdaptedPerson.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.testutil.TypicalPatients.BENSON;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Address;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Email;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Name;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Phone;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"jskimdev"},"content":"public class JsonAdaptedPatientTest {","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"jskimdev"},"content":" private static final String INVALID_DATEOFBIRTH \u003d \"24/2022\";","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d BENSON.getPhone().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d BENSON.getAddress().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"jskimdev"},"content":" private static final String VALID_DATEOFBIRTH \u003d BENSON.getDateOfBirth().toString();","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"jskimdev"},"content":" private static final String VALID_SEX \u003d BENSON.getSex().toString();","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void toModelType_validPersonDetails_returnsPerson() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(BENSON);","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertEquals(BENSON, person.toModelType());","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"jskimdev"},"content":" new JsonAdaptedPerson(INVALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_DATEOFBIRTH,","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"jskimdev"},"content":" VALID_SEX);","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"jskimdev"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(null, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"jskimdev"},"content":" VALID_DATEOFBIRTH, VALID_SEX);","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void toModelType_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":56,"author":{"gitId":"jskimdev"},"content":" new JsonAdaptedPerson(VALID_NAME, INVALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_DATEOFBIRTH,","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"jskimdev"},"content":" VALID_SEX);","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Phone.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void toModelType_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"jskimdev"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, null, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"jskimdev"},"content":" VALID_DATEOFBIRTH, VALID_SEX);","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"jskimdev"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, INVALID_EMAIL, VALID_ADDRESS, VALID_DATEOFBIRTH,","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"jskimdev"},"content":" VALID_SEX);","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":81,"author":{"gitId":"jskimdev"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, null, VALID_ADDRESS,","lastModifiedDate":"2024-03-17"},{"lineNumber":82,"author":{"gitId":"jskimdev"},"content":" VALID_DATEOFBIRTH, VALID_SEX);","lastModifiedDate":"2024-03-18"},{"lineNumber":83,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void toModelType_invalidAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":90,"author":{"gitId":"jskimdev"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, INVALID_ADDRESS, VALID_DATEOFBIRTH,","lastModifiedDate":"2024-03-18"},{"lineNumber":91,"author":{"gitId":"jskimdev"},"content":" VALID_SEX);","lastModifiedDate":"2024-03-18"},{"lineNumber":92,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Address.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public void toModelType_nullAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":98,"author":{"gitId":"jskimdev"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, null,","lastModifiedDate":"2024-03-17"},{"lineNumber":99,"author":{"gitId":"jskimdev"},"content":" VALID_DATEOFBIRTH, VALID_SEX);","lastModifiedDate":"2024-03-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"jskimdev":25,"-":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"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":6,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.testutil.TypicalPatients.ALICE;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.testutil.TypicalPatients.HOON;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.testutil.TypicalPatients.IDA;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.testutil.TypicalPatients.getTypicalAddressBook;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-08-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class JsonAddressBookStorageTest {","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonAddressBookStorageTest\");","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public Path testFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void readAddressBook_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e readAddressBook(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private java.util.Optional\u003cReadOnlyAddressBook\u003e readAddressBook(String filePath) throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" return new JsonAddressBookStorage(Paths.get(filePath)).readAddressBook(addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private Path addToTestDataPathIfNotNull(String prefsFileInTestDataFolder) {","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" return prefsFileInTestDataFolder !\u003d null","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" ? TEST_DATA_FOLDER.resolve(prefsFileInTestDataFolder)","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" : null;","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void read_missingFile_emptyResult() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(readAddressBook(\"NonExistentFile.json\").isPresent());","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void read_notJsonFormat_exceptionThrown() {","lastModifiedDate":"2019-03-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertThrows(DataLoadingException.class, () -\u003e readAddressBook(\"notJsonFormatAddressBook.json\"));","lastModifiedDate":"2023-06-14"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void readAddressBook_invalidPersonAddressBook_throwDataLoadingException() {","lastModifiedDate":"2023-06-14"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertThrows(DataLoadingException.class, () -\u003e readAddressBook(\"invalidPersonAddressBook.json\"));","lastModifiedDate":"2023-06-14"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void readAddressBook_invalidAndValidPersonAddressBook_throwDataLoadingException() {","lastModifiedDate":"2023-06-14"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertThrows(DataLoadingException.class, () -\u003e readAddressBook(\"invalidAndValidPersonAddressBook.json\"));","lastModifiedDate":"2023-06-14"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void readAndSaveAddressBook_allInOrder_success() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" Path filePath \u003d testFolder.resolve(\"TempAddressBook.json\");","lastModifiedDate":"2019-04-25"},{"lineNumber":66,"author":{"gitId":"-"},"content":" AddressBook original \u003d getTypicalAddressBook();","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" JsonAddressBookStorage jsonAddressBookStorage \u003d new JsonAddressBookStorage(filePath);","lastModifiedDate":"2018-08-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" // Save in new file and read back","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" jsonAddressBookStorage.saveAddressBook(original, filePath);","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook readBack \u003d jsonAddressBookStorage.readAddressBook(filePath).get();","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(readBack));","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" // Modify data, overwrite exiting file, and read back","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" original.addPerson(HOON);","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" original.removePerson(ALICE);","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" jsonAddressBookStorage.saveAddressBook(original, filePath);","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" readBack \u003d jsonAddressBookStorage.readAddressBook(filePath).get();","lastModifiedDate":"2018-08-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(readBack));","lastModifiedDate":"2018-08-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" // Save and read without specifying file path","lastModifiedDate":"2018-08-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" original.addPerson(IDA);","lastModifiedDate":"2018-08-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" jsonAddressBookStorage.saveAddressBook(original); // file path not specified","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" readBack \u003d jsonAddressBookStorage.readAddressBook().get(); // file path not specified","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(readBack));","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":" public void saveAddressBook_nullAddressBook_throwsNullPointerException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e saveAddressBook(null, \"SomeFile.json\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * Saves {@code addressBook} at the specified {@code filePath}.","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" private void saveAddressBook(ReadOnlyAddressBook addressBook, String filePath) {","lastModifiedDate":"2018-08-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-08-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(Paths.get(filePath))","lastModifiedDate":"2018-08-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" .saveAddressBook(addressBook, addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2018-08-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":" throw new AssertionError(\"There should not be an error writing to the file.\", ioe);","lastModifiedDate":"2018-08-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public void saveAddressBook_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e saveAddressBook(new AddressBook(), null));","lastModifiedDate":"2019-03-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"jskimdev":4,"-":106}},{"path":"src/test/java/seedu/address/storage/JsonSerializableAddressBookTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.JsonUtil;","lastModifiedDate":"2018-08-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"jskimdev"},"content":"import seedu.address.testutil.TypicalPatients;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class JsonSerializableAddressBookTest {","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonSerializableAddressBookTest\");","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private static final Path TYPICAL_PERSONS_FILE \u003d TEST_DATA_FOLDER.resolve(\"typicalPersonsAddressBook.json\");","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final Path INVALID_PERSON_FILE \u003d TEST_DATA_FOLDER.resolve(\"invalidPersonAddressBook.json\");","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final Path DUPLICATE_PERSON_FILE \u003d TEST_DATA_FOLDER.resolve(\"duplicatePersonAddressBook.json\");","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void toModelType_typicalPersonsFile_success() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(TYPICAL_PERSONS_FILE,","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook.class).get();","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" AddressBook addressBookFromFile \u003d dataFromFile.toModelType();","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"jskimdev"},"content":" AddressBook typicalPersonsAddressBook \u003d TypicalPatients.getTypicalAddressBook();","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertEquals(addressBookFromFile, typicalPersonsAddressBook);","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public void toModelType_invalidPersonFile_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(INVALID_PERSON_FILE,","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook.class).get();","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, dataFromFile::toModelType);","lastModifiedDate":"2019-03-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void toModelType_duplicatePersons_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(DUPLICATE_PERSON_FILE,","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook.class).get();","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, JsonSerializableAddressBook.MESSAGE_DUPLICATE_PERSON,","lastModifiedDate":"2019-03-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" dataFromFile::toModelType);","lastModifiedDate":"2019-03-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"jskimdev":2,"-":45}},{"path":"src/test/java/seedu/address/storage/StorageManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertNotNull;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.testutil.TypicalPatients.getTypicalAddressBook;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-09-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2016-09-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class StorageManagerTest {","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public Path testFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private StorageManager storageManager;","lastModifiedDate":"2017-04-01"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2016-10-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(getTempFilePath(\"ab\"));","lastModifiedDate":"2018-11-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(getTempFilePath(\"prefs\"));","lastModifiedDate":"2017-02-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" storageManager \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2017-02-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Path getTempFilePath(String fileName) {","lastModifiedDate":"2018-04-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return testFolder.resolve(fileName);","lastModifiedDate":"2019-04-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void prefsReadSave() throws Exception {","lastModifiedDate":"2016-10-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-09-28"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Note: This is an integration test that verifies the StorageManager is properly wired to the","lastModifiedDate":"2016-09-28"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * {@link JsonUserPrefsStorage} class.","lastModifiedDate":"2016-10-01"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * More extensive testing of UserPref saving/reading is done in {@link JsonUserPrefsStorageTest} class.","lastModifiedDate":"2016-10-01"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-28"},{"lineNumber":43,"author":{"gitId":"-"},"content":" UserPrefs original \u003d new UserPrefs();","lastModifiedDate":"2016-09-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" original.setGuiSettings(new GuiSettings(300, 600, 4, 6));","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" storageManager.saveUserPrefs(original);","lastModifiedDate":"2016-09-28"},{"lineNumber":46,"author":{"gitId":"-"},"content":" UserPrefs retrieved \u003d storageManager.readUserPrefs().get();","lastModifiedDate":"2016-09-28"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertEquals(original, retrieved);","lastModifiedDate":"2016-09-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void addressBookReadSave() throws Exception {","lastModifiedDate":"2016-09-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-16"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Note: This is an integration test that verifies the StorageManager is properly wired to the","lastModifiedDate":"2016-10-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * {@link JsonAddressBookStorage} class.","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * More extensive testing of UserPref saving/reading is done in {@link JsonAddressBookStorageTest} class.","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":57,"author":{"gitId":"-"},"content":" AddressBook original \u003d getTypicalAddressBook();","lastModifiedDate":"2017-07-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" storageManager.saveAddressBook(original);","lastModifiedDate":"2016-09-28"},{"lineNumber":59,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook retrieved \u003d storageManager.readAddressBook().get();","lastModifiedDate":"2016-09-28"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(retrieved));","lastModifiedDate":"2016-09-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-01"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void getAddressBookFilePath() {","lastModifiedDate":"2016-10-01"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertNotNull(storageManager.getAddressBookFilePath());","lastModifiedDate":"2016-10-01"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01"},{"lineNumber":68,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"jskimdev":1,"-":67}},{"path":"src/test/java/seedu/address/testutil/AddressBookBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21"},{"lineNumber":4,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * A utility class to help with building Addressbook objects.","lastModifiedDate":"2016-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Example usage: \u003cbr\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * {@code AddressBook ab \u003d new AddressBookBuilder().withPerson(\"John\", \"Doe\").build();}","lastModifiedDate":"2018-03-29"},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class AddressBookBuilder {","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" private AddressBook addressBook;","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public AddressBookBuilder() {","lastModifiedDate":"2017-05-31"},{"lineNumber":16,"author":{"gitId":"-"},"content":" addressBook \u003d new AddressBook();","lastModifiedDate":"2017-05-31"},{"lineNumber":17,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public AddressBookBuilder(AddressBook addressBook) {","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" this.addressBook \u003d addressBook;","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":24,"author":{"gitId":"jskimdev"},"content":" * Adds a new {@code Patient} to the {@code AddressBook} that we are building.","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":26,"author":{"gitId":"jskimdev"},"content":" public AddressBookBuilder withPerson(Patient patient) {","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"jskimdev"},"content":" addressBook.addPerson(patient);","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public AddressBook build() {","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"jskimdev":4,"-":30}},{"path":"src/test/java/seedu/address/testutil/EditPatientDescriptorBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-05-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":3,"author":{"gitId":"jskimdev"},"content":"import seedu.address.logic.commands.EditCommand.EditPatientDescriptor;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Address;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.DateOfBirth;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Email;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Name;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Phone;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Sex;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * A utility class to help with building EditPersonDescriptor objects.","lastModifiedDate":"2017-05-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-05"},{"lineNumber":15,"author":{"gitId":"jskimdev"},"content":"public class EditPatientDescriptorBuilder {","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":17,"author":{"gitId":"jskimdev"},"content":" private EditPatientDescriptor descriptor;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":19,"author":{"gitId":"jskimdev"},"content":" public EditPatientDescriptorBuilder() {","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"jskimdev"},"content":" descriptor \u003d new EditPatientDescriptor();","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":23,"author":{"gitId":"jskimdev"},"content":" public EditPatientDescriptorBuilder(EditPatientDescriptor descriptor) {","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"jskimdev"},"content":" this.descriptor \u003d new EditPatientDescriptor(descriptor);","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":28,"author":{"gitId":"jskimdev"},"content":" * Returns an {@code EditPersonDescriptor} with fields containing {@code patient}\u0027s details","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":30,"author":{"gitId":"jskimdev"},"content":" public EditPatientDescriptorBuilder(Patient patient) {","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"jskimdev"},"content":" descriptor \u003d new EditPatientDescriptor();","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"jskimdev"},"content":" descriptor.setName(patient.getName());","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"jskimdev"},"content":" descriptor.setPhone(patient.getPhone());","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"jskimdev"},"content":" descriptor.setEmail(patient.getEmail());","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"jskimdev"},"content":" descriptor.setAddress(patient.getAddress());","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"jskimdev"},"content":" descriptor.setDateOfBirth(patient.getDateOfBirth());","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":42,"author":{"gitId":"jskimdev"},"content":" public EditPatientDescriptorBuilder withName(String name) {","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":" descriptor.setName(new Name(name));","lastModifiedDate":"2017-12-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":50,"author":{"gitId":"jskimdev"},"content":" public EditPatientDescriptorBuilder withPhone(String phone) {","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" descriptor.setPhone(new Phone(phone));","lastModifiedDate":"2017-12-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":58,"author":{"gitId":"jskimdev"},"content":" public EditPatientDescriptorBuilder withEmail(String email) {","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":" descriptor.setEmail(new Email(email));","lastModifiedDate":"2017-12-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":66,"author":{"gitId":"jskimdev"},"content":" public EditPatientDescriptorBuilder withAddress(String address) {","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"-"},"content":" descriptor.setAddress(new Address(address));","lastModifiedDate":"2017-12-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":71,"author":{"gitId":"jskimdev"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"jskimdev"},"content":" * Sets the {@code DateOfBirth} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"jskimdev"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"jskimdev"},"content":" public EditPatientDescriptorBuilder withDateOfBirth(String dateOfBirth) {","lastModifiedDate":"2024-03-19"},{"lineNumber":75,"author":{"gitId":"jskimdev"},"content":" descriptor.setDateOfBirth(new DateOfBirth(dateOfBirth));","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"jskimdev"},"content":" return this;","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"jskimdev"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":80,"author":{"gitId":"jskimdev"},"content":" * Sets the {@code Sex} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-03-19"},{"lineNumber":81,"author":{"gitId":"jskimdev"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":82,"author":{"gitId":"jskimdev"},"content":" public EditPatientDescriptorBuilder withSex(String sex) {","lastModifiedDate":"2024-03-19"},{"lineNumber":83,"author":{"gitId":"jskimdev"},"content":" descriptor.setSex(new Sex(sex));","lastModifiedDate":"2024-03-19"},{"lineNumber":84,"author":{"gitId":"jskimdev"},"content":" return this;","lastModifiedDate":"2024-03-19"},{"lineNumber":85,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":86,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":87,"author":{"gitId":"jskimdev"},"content":" public EditPatientDescriptor build() {","lastModifiedDate":"2024-03-19"},{"lineNumber":88,"author":{"gitId":"-"},"content":" return descriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":90,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"jskimdev":43,"-":47}},{"path":"src/test/java/seedu/address/testutil/PatientBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":3,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Address;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.DateOfBirth;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Email;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Name;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Phone;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Sex;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-03"},{"lineNumber":12,"author":{"gitId":"jskimdev"},"content":" * A utility class to help with building Patient objects.","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-03"},{"lineNumber":14,"author":{"gitId":"jskimdev"},"content":"public class PatientBuilder {","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2020-12-18"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2017-04-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2020-12-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2017-04-05"},{"lineNumber":20,"author":{"gitId":"jskimdev"},"content":" public static final String DEFAULT_DATEOFBIRTH \u003d \"25/2/2025\";","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"jskimdev"},"content":" public static final String DEFAULT_SEX \u003d \"Female\";","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-12-20"},{"lineNumber":27,"author":{"gitId":"jskimdev"},"content":" private DateOfBirth dateOfBirth;","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"jskimdev"},"content":" private Sex sex;","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":31,"author":{"gitId":"Vision-2000"},"content":" * Creates a {@code PatientBuilder} with the default details.","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":33,"author":{"gitId":"jskimdev"},"content":" public PatientBuilder() {","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20"},{"lineNumber":35,"author":{"gitId":"-"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2017-12-20"},{"lineNumber":36,"author":{"gitId":"-"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2017-12-20"},{"lineNumber":37,"author":{"gitId":"-"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2017-12-20"},{"lineNumber":38,"author":{"gitId":"jskimdev"},"content":" dateOfBirth \u003d new DateOfBirth(DEFAULT_DATEOFBIRTH);","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"jskimdev"},"content":" sex \u003d new Sex(DEFAULT_SEX);","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11"},{"lineNumber":43,"author":{"gitId":"Vision-2000"},"content":" * Initializes the PatientBuilder with the data of {@code patientToCopy}.","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11"},{"lineNumber":45,"author":{"gitId":"jskimdev"},"content":" public PatientBuilder(Patient patientToCopy) {","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"jskimdev"},"content":" name \u003d patientToCopy.getName();","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"jskimdev"},"content":" phone \u003d patientToCopy.getPhone();","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"jskimdev"},"content":" email \u003d patientToCopy.getEmail();","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"jskimdev"},"content":" address \u003d patientToCopy.getAddress();","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"jskimdev"},"content":" dateOfBirth \u003d patientToCopy.getDateOfBirth();","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"jskimdev"},"content":" sex \u003d patientToCopy.getSex();","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11"},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":55,"author":{"gitId":"jskimdev"},"content":" * Sets the {@code Name} of the {@code Patient} that we are building.","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":57,"author":{"gitId":"jskimdev"},"content":" public PatientBuilder withName(String name) {","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":63,"author":{"gitId":"jskimdev"},"content":" * Sets the {@code Address} of the {@code Patient} that we are building.","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":65,"author":{"gitId":"jskimdev"},"content":" public PatientBuilder withAddress(String address) {","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":" this.address \u003d new Address(address);","lastModifiedDate":"2017-12-20"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":71,"author":{"gitId":"jskimdev"},"content":" * Sets the {@code Phone} of the {@code Patient} that we are building.","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":73,"author":{"gitId":"jskimdev"},"content":" public PatientBuilder withPhone(String phone) {","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2017-12-20"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":79,"author":{"gitId":"jskimdev"},"content":" * Sets the {@code Email} of the {@code Patient} that we are building.","lastModifiedDate":"2024-03-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":81,"author":{"gitId":"jskimdev"},"content":" public PatientBuilder withEmail(String email) {","lastModifiedDate":"2024-03-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2017-12-20"},{"lineNumber":83,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":86,"author":{"gitId":"jskimdev"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":87,"author":{"gitId":"jskimdev"},"content":" * Sets the {@code DateOfBirth} of the {@Code Patient} that we are buidling.","lastModifiedDate":"2024-03-19"},{"lineNumber":88,"author":{"gitId":"jskimdev"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":89,"author":{"gitId":"jskimdev"},"content":" public PatientBuilder withDateOfBirth(String dateOfBirth) {","lastModifiedDate":"2024-03-19"},{"lineNumber":90,"author":{"gitId":"jskimdev"},"content":" this.dateOfBirth \u003d new DateOfBirth(dateOfBirth);","lastModifiedDate":"2024-03-17"},{"lineNumber":91,"author":{"gitId":"jskimdev"},"content":" return this;","lastModifiedDate":"2024-03-17"},{"lineNumber":92,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":94,"author":{"gitId":"jskimdev"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":95,"author":{"gitId":"jskimdev"},"content":" * Sets the {@code Sex} of the {@Cose Patient} that we are building.","lastModifiedDate":"2024-03-19"},{"lineNumber":96,"author":{"gitId":"jskimdev"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":97,"author":{"gitId":"jskimdev"},"content":" public PatientBuilder withSex(String sex) {","lastModifiedDate":"2024-03-19"},{"lineNumber":98,"author":{"gitId":"jskimdev"},"content":" this.sex \u003d new Sex(sex);","lastModifiedDate":"2024-03-19"},{"lineNumber":99,"author":{"gitId":"jskimdev"},"content":" return this;","lastModifiedDate":"2024-03-19"},{"lineNumber":100,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":101,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":102,"author":{"gitId":"jskimdev"},"content":" public Patient build() {","lastModifiedDate":"2024-03-19"},{"lineNumber":103,"author":{"gitId":"jskimdev"},"content":" return new Patient(name, phone, email, address, dateOfBirth, sex);","lastModifiedDate":"2024-03-19"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":106,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03"}],"authorContributionMap":{"jskimdev":49,"-":55,"Vision-2000":2}},{"path":"src/test/java/seedu/address/testutil/PatientUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":3,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DATEOFBIRTH;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SEX;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"jskimdev"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"jskimdev"},"content":"import seedu.address.logic.commands.EditCommand.EditPatientDescriptor;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05"},{"lineNumber":15,"author":{"gitId":"jskimdev"},"content":" * A utility class for Patient.","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":17,"author":{"gitId":"jskimdev"},"content":"public class PatientUtil {","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05"},{"lineNumber":20,"author":{"gitId":"jskimdev"},"content":" * Returns an add command string for adding the {@code patient}.","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":22,"author":{"gitId":"jskimdev"},"content":" public static String getAddCommand(Patient patient) {","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"jskimdev"},"content":" return AddCommand.COMMAND_WORD + \" \" + getPersonDetails(patient);","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-06"},{"lineNumber":27,"author":{"gitId":"jskimdev"},"content":" * Returns the part of command string for the given {@code patient}\u0027s details.","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06"},{"lineNumber":29,"author":{"gitId":"jskimdev"},"content":" public static String getPersonDetails(Patient patient) {","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05"},{"lineNumber":31,"author":{"gitId":"jskimdev"},"content":" sb.append(PREFIX_NAME + patient.getName().fullName + \" \");","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"jskimdev"},"content":" sb.append(PREFIX_PHONE + patient.getPhone().value + \" \");","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"jskimdev"},"content":" sb.append(PREFIX_EMAIL + patient.getEmail().value + \" \");","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"jskimdev"},"content":" sb.append(PREFIX_ADDRESS + patient.getAddress().value + \" \");","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"jskimdev"},"content":" sb.append(PREFIX_DATEOFBIRTH + patient.getDateOfBirth().toString() + \" \");","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"jskimdev"},"content":" sb.append(PREFIX_SEX + patient.getSex().toString() + \" \");","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"jskimdev"},"content":" System.out.println(sb.toString());","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-04-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26"},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code EditPersonDescriptor}\u0027s details.","lastModifiedDate":"2018-03-26"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26"},{"lineNumber":44,"author":{"gitId":"jskimdev"},"content":" public static String getEditPersonDescriptorDetails(EditPatientDescriptor descriptor) {","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26"},{"lineNumber":46,"author":{"gitId":"-"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(PREFIX_NAME).append(name.fullName).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":47,"author":{"gitId":"-"},"content":" descriptor.getPhone().ifPresent(phone -\u003e sb.append(PREFIX_PHONE).append(phone.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":48,"author":{"gitId":"-"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(PREFIX_EMAIL).append(email.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":49,"author":{"gitId":"-"},"content":" descriptor.getAddress().ifPresent(address -\u003e sb.append(PREFIX_ADDRESS).append(address.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":50,"author":{"gitId":"jskimdev"},"content":" descriptor.getDateOfBirth().ifPresent(dateOfBirth -\u003e sb.append(PREFIX_DATEOFBIRTH)","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"jskimdev"},"content":" .append(dateOfBirth.dateOfBirth).append(\" \"));","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":54,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05"}],"authorContributionMap":{"jskimdev":28,"-":26}},{"path":"src/test/java/seedu/address/testutil/TestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Files;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-07-30"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-07-30"},{"lineNumber":10,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * A utility class for test cases.","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class TestUtil {","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Folder used for temp files created during testing. Ignored by Git.","lastModifiedDate":"2016-10-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final Path SANDBOX_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"sandbox\");","lastModifiedDate":"2018-04-21"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Appends {@code fileName} to the sandbox folder path and returns the resulting path.","lastModifiedDate":"2018-04-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Creates the sandbox folder if it doesn\u0027t exist.","lastModifiedDate":"2016-09-28"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static Path getFilePathInSandboxFolder(String fileName) {","lastModifiedDate":"2018-04-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-28"},{"lineNumber":28,"author":{"gitId":"-"},"content":" Files.createDirectories(SANDBOX_FOLDER);","lastModifiedDate":"2018-04-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-28"},{"lineNumber":30,"author":{"gitId":"-"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2016-09-28"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-28"},{"lineNumber":32,"author":{"gitId":"-"},"content":" return SANDBOX_FOLDER.resolve(fileName);","lastModifiedDate":"2018-04-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-30"},{"lineNumber":36,"author":{"gitId":"jskimdev"},"content":" * Returns the middle index of the patient in the {@code model}\u0027s patient list.","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-30"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static Index getMidIndex(Model model) {","lastModifiedDate":"2017-07-30"},{"lineNumber":39,"author":{"gitId":"-"},"content":" return Index.fromOneBased(model.getFilteredPersonList().size() / 2);","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-30"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-30"},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-30"},{"lineNumber":43,"author":{"gitId":"jskimdev"},"content":" * Returns the last index of the patient in the {@code model}\u0027s patient list.","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-30"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static Index getLastIndex(Model model) {","lastModifiedDate":"2017-07-30"},{"lineNumber":46,"author":{"gitId":"-"},"content":" return Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-30"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-30"},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-30"},{"lineNumber":50,"author":{"gitId":"jskimdev"},"content":" * Returns the patient in the {@code model}\u0027s patient list at {@code index}.","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-30"},{"lineNumber":52,"author":{"gitId":"jskimdev"},"content":" public static Patient getPerson(Model model, Index index) {","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return model.getFilteredPersonList().get(index.getZeroBased());","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-30"},{"lineNumber":55,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"jskimdev":5,"-":50}},{"path":"src/test/java/seedu/address/testutil/TypicalPatients.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":3,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_DATEOFBIRTH_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_DATEOFBIRTH_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SEX_AMY;","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SEX_BOB;","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-07"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21"},{"lineNumber":21,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13"},{"lineNumber":24,"author":{"gitId":"jskimdev"},"content":" * A utility class containing a list of {@code Patient} objects to be used in tests.","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13"},{"lineNumber":26,"author":{"gitId":"jskimdev"},"content":"public class TypicalPatients {","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":28,"author":{"gitId":"jskimdev"},"content":" public static final Patient ALICE \u003d new PatientBuilder().withName(\"Alice Pauline\")","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" .withAddress(\"123, Jurong West Ave 6, #08-111\").withEmail(\"alice@example.com\")","lastModifiedDate":"2017-04-05"},{"lineNumber":30,"author":{"gitId":"jskimdev"},"content":" .withPhone(\"94351253\").withDateOfBirth(\"25/2/2024\").withSex(\"Female\")","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"jskimdev"},"content":" .build();","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"jskimdev"},"content":" public static final Patient BENSON \u003d new PatientBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2017-09-21"},{"lineNumber":34,"author":{"gitId":"jskimdev"},"content":" .withEmail(\"johnd@example.com\").withPhone(\"98765432\").withDateOfBirth(\"25/2/2024\").withSex(\"Male\")","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"jskimdev"},"content":" .build();","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"jskimdev"},"content":" public static final Patient CARL \u003d new PatientBuilder().withName(\"Carl Kurz\").withPhone(\"95352563\")","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"jskimdev"},"content":" .withEmail(\"heinz@example.com\").withAddress(\"wall street\").withDateOfBirth(\"2032-06-23\")","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"jskimdev"},"content":" .withSex(\"Male\").build();","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"jskimdev"},"content":" public static final Patient DANIEL \u003d new PatientBuilder().withName(\"Daniel Meier\").withPhone(\"87652533\")","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"jskimdev"},"content":" .withEmail(\"cornelia@example.com\").withAddress(\"10th street\").withDateOfBirth(\"2028-11-28\")","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"jskimdev"},"content":" .withSex(\"Male\").build();","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"jskimdev"},"content":" public static final Patient ELLE \u003d new PatientBuilder().withName(\"Elle Meyer\").withPhone(\"9482224\")","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"jskimdev"},"content":" .withEmail(\"werner@example.com\").withAddress(\"michegan ave\").withDateOfBirth(\"2024-01-01\")","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"jskimdev"},"content":" .withSex(\"Male\").build();","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"jskimdev"},"content":" public static final Patient FIONA \u003d new PatientBuilder().withName(\"Fiona Kunz\").withPhone(\"9482427\")","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"jskimdev"},"content":" .withEmail(\"lydia@example.com\").withAddress(\"little tokyo\").withDateOfBirth(\"2024-06-25\")","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"jskimdev"},"content":" .withSex(\"Female\").build();","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"jskimdev"},"content":" public static final Patient GEORGE \u003d new PatientBuilder().withName(\"George Best\").withPhone(\"9482442\")","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"jskimdev"},"content":" .withEmail(\"anna@example.com\").withAddress(\"4th street\").withDateOfBirth(\"25/2/2024\")","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"jskimdev"},"content":" .withSex(\"Male\").build();","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13"},{"lineNumber":53,"author":{"gitId":"jskimdev"},"content":" public static final Patient HOON \u003d new PatientBuilder().withName(\"Hoon Meier\").withPhone(\"8482424\")","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"jskimdev"},"content":" .withEmail(\"stefan@example.com\").withAddress(\"little india\").withDateOfBirth(\"25/2/2024\")","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"jskimdev"},"content":" .withSex(\"Male\").build();","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"jskimdev"},"content":" public static final Patient IDA \u003d new PatientBuilder().withName(\"Ida Mueller\").withPhone(\"8482131\")","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"jskimdev"},"content":" .withEmail(\"hans@example.com\").withAddress(\"chicago ave\").withDateOfBirth(\"25/2/2024\")","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"jskimdev"},"content":" .withSex(\"Female\").build();","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":60,"author":{"gitId":"-"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2017-08-22"},{"lineNumber":61,"author":{"gitId":"jskimdev"},"content":" public static final Patient AMY \u003d new PatientBuilder().withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"jskimdev"},"content":" .withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY).withDateOfBirth(VALID_DATEOFBIRTH_AMY)","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"jskimdev"},"content":" .withSex(VALID_SEX_AMY).build();","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"jskimdev"},"content":" public static final Patient BOB \u003d new PatientBuilder().withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"jskimdev"},"content":" .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB).withDateOfBirth(VALID_DATEOFBIRTH_BOB)","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"jskimdev"},"content":" .withSex(VALID_SEX_BOB).build();","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":70,"author":{"gitId":"jskimdev"},"content":" private TypicalPatients() {} // prevents instantiation","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2017-08-05"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2017-08-05"},{"lineNumber":76,"author":{"gitId":"-"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2017-08-05"},{"lineNumber":77,"author":{"gitId":"jskimdev"},"content":" for (Patient patient : getTypicalPersons()) {","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"jskimdev"},"content":" ab.addPerson(patient);","lastModifiedDate":"2024-03-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04"},{"lineNumber":83,"author":{"gitId":"jskimdev"},"content":" public static List\u003cPatient\u003e getTypicalPersons() {","lastModifiedDate":"2024-03-19"},{"lineNumber":84,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2017-08-07"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04"},{"lineNumber":86,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13"}],"authorContributionMap":{"jskimdev":53,"-":33}}] +[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"Vision-2000"},"content":"[![CI Status](https://github.com/AY2324S2-CS2103T-T14-2/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2324S2-CS2103T-T14-2/tp/actions)","lastModifiedDate":"2024-03-07"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"Vision-2000"},"content":"**MediTrack is a desktop application for managing your patient details.** While it has a GUI, most of the user interactions happen using a CLI (Command Line Interface).","lastModifiedDate":"2024-03-07"},{"lineNumber":6,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":7,"author":{"gitId":"Vision-2000"},"content":"This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-03-07"}],"authorContributionMap":{"-":3,"Vision-2000":4}},{"path":"build.gradle","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2016-08-29"},{"lineNumber":2,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2017-12-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2017-12-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2022-06-17"},{"lineNumber":5,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2016-12-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":" id \u0027jacoco\u0027","lastModifiedDate":"2020-08-07"},{"lineNumber":7,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-29"},{"lineNumber":9,"author":{"gitId":"-"},"content":"mainClassName \u003d \u0027seedu.address.Main\u0027","lastModifiedDate":"2019-02-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"sourceCompatibility \u003d JavaVersion.VERSION_11","lastModifiedDate":"2019-02-20"},{"lineNumber":12,"author":{"gitId":"-"},"content":"targetCompatibility \u003d JavaVersion.VERSION_11","lastModifiedDate":"2019-02-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" maven { url \u0027https://oss.sonatype.org/content/repositories/snapshots/\u0027 }","lastModifiedDate":"2018-04-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"checkstyle {","lastModifiedDate":"2016-10-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2022-04-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-10-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2018-03-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2018-03-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":" finalizedBy jacocoTestReport","lastModifiedDate":"2020-08-07"},{"lineNumber":26,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-08-07"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-08-07"},{"lineNumber":28,"author":{"gitId":"-"},"content":"task coverage(type: JacocoReport) {","lastModifiedDate":"2020-08-07"},{"lineNumber":29,"author":{"gitId":"-"},"content":" sourceDirectories.from files(sourceSets.main.allSource.srcDirs)","lastModifiedDate":"2020-08-07"},{"lineNumber":30,"author":{"gitId":"-"},"content":" classDirectories.from files(sourceSets.main.output)","lastModifiedDate":"2020-08-07"},{"lineNumber":31,"author":{"gitId":"-"},"content":" executionData.from files(jacocoTestReport.executionData)","lastModifiedDate":"2020-08-07"},{"lineNumber":32,"author":{"gitId":"-"},"content":" afterEvaluate {","lastModifiedDate":"2020-08-07"},{"lineNumber":33,"author":{"gitId":"-"},"content":" classDirectories.from files(classDirectories.files.collect {","lastModifiedDate":"2020-08-07"},{"lineNumber":34,"author":{"gitId":"-"},"content":" fileTree(dir: it, exclude: [\u0027**/*.jar\u0027])","lastModifiedDate":"2020-08-07"},{"lineNumber":35,"author":{"gitId":"-"},"content":" })","lastModifiedDate":"2020-08-07"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07"},{"lineNumber":37,"author":{"gitId":"-"},"content":" reports {","lastModifiedDate":"2020-08-07"},{"lineNumber":38,"author":{"gitId":"-"},"content":" html.required \u003d true","lastModifiedDate":"2022-06-17"},{"lineNumber":39,"author":{"gitId":"-"},"content":" xml.required \u003d true","lastModifiedDate":"2022-06-17"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07"},{"lineNumber":41,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-03-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" String jUnitVersion \u003d \u00275.4.0\u0027","lastModifiedDate":"2019-02-10"},{"lineNumber":45,"author":{"gitId":"-"},"content":" String javaFxVersion \u003d \u002717.0.7\u0027","lastModifiedDate":"2023-07-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":48,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":" implementation group: \u0027com.fasterxml.jackson.core\u0027, name: \u0027jackson-databind\u0027, version: \u00272.7.0\u0027","lastModifiedDate":"2018-03-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":" implementation group: \u0027com.fasterxml.jackson.datatype\u0027, name: \u0027jackson-datatype-jsr310\u0027, version: \u00272.7.4\u0027","lastModifiedDate":"2018-03-29"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-29"},{"lineNumber":68,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2016-08-29"},{"lineNumber":69,"author":{"gitId":"jskimdev"},"content":" archiveFileName \u003d \u0027MediTrack.jar\u0027","lastModifiedDate":"2024-03-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":"defaultTasks \u0027clean\u0027, \u0027test\u0027","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"jskimdev":1,"-":71}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"About Us\"","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"# About Us","lastModifiedDate":"2023-09-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"We are a team based in the [School of Computing, National University of Singapore](http://www.comp.nus.edu.sg).","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"You can reach us at the email `seer[at]comp.nus.edu.sg`","lastModifiedDate":"2020-06-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"jskimdev"},"content":"### Sivakumar Aishvarya","lastModifiedDate":"2024-03-06"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"S-Aishvarya"},"content":"\u003cimg src\u003d\"images/s-aishvarya.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-07"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"S-Aishvarya"},"content":"[[github](https://github.com/S-Aishvarya)]","lastModifiedDate":"2024-03-07"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":22,"author":{"gitId":"S-Aishvarya"},"content":"* Role: Developer","lastModifiedDate":"2024-03-07"},{"lineNumber":23,"author":{"gitId":"jeong-jaeho"},"content":"* Responsibilities: Scheduling and tracking + Documentation + Commons","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"jskimdev"},"content":"### Eugene Hirose","lastModifiedDate":"2024-03-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"Vision-2000"},"content":"\u003cimg src\u003d\"images/vision-2000.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-07"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"Vision-2000"},"content":"[[github](http://github.com/Vision-2000)]","lastModifiedDate":"2024-03-07"},{"lineNumber":30,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2024-03-07"},{"lineNumber":33,"author":{"gitId":"jeong-jaeho"},"content":"* Responsibilities: Testing + UI + Logic","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"jskimdev"},"content":"### Jeong Jaeho","lastModifiedDate":"2024-03-06"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"jeong-jaeho"},"content":"\u003cimg src\u003d\"images/jeong-jaeho.png\" width\u003d\"200px\"\u003e ","lastModifiedDate":"2024-03-07"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"jeong-jaeho"},"content":"[[github](http://github.com/jeong-jaeho)]","lastModifiedDate":"2024-03-07"},{"lineNumber":40,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"jeong-jaeho"},"content":"* Responsibilities: Team lead + Integration + Storage","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"jskimdev"},"content":"### Kim Junseo","lastModifiedDate":"2024-03-06"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"jskimdev"},"content":"\u003cimg src\u003d\"images/jskimdev.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"jskimdev"},"content":"[[github](https://github.com/jskimdev)]","lastModifiedDate":"2024-03-06"},{"lineNumber":50,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"jeong-jaeho"},"content":"* Responsibilities: Code Quality + Model + JavaFX visuals","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"jskimdev":6,"S-Aishvarya":3,"-":36,"jeong-jaeho":6,"Vision-2000":2}},{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"Developer Guide\"","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":7,"author":{"gitId":"Vision-2000"},"content":"# MediTrack Developer Guide","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":14,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":16,"author":{"gitId":"Vision-2000"},"content":"- [Regular-Expressions.info](https://www.regular-expressions.info/tutorial.html) was our source for learning regex.","lastModifiedDate":"2024-03-22"},{"lineNumber":17,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":18,"author":{"gitId":"-"},"content":"_{ list here sources of all reused/adapted ideas, code, documentation, and third-party libraries -- include links to the original source as well }_","lastModifiedDate":"2023-09-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":20,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureDiagram.puml\" width\u003d\"280\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":"The ***Architecture Diagram*** given above explains the high-level design of the App.","lastModifiedDate":"2021-07-31"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":"Given below is a quick overview of main components and how they interact with each other.","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":38,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"**`Main`** (consisting of classes [`Main`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/Main.java) and [`MainApp`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/MainApp.java)) is in charge of the app launch and shut down.","lastModifiedDate":"2023-09-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":"* At app launch, it initializes the other components in the correct sequence, and connects them up with each other.","lastModifiedDate":"2023-09-03"},{"lineNumber":42,"author":{"gitId":"-"},"content":"* At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2023-09-03"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"* [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"* [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"The *Sequence Diagram* below shows how the components interact with each other for the scenario where the user issues the command `delete 1`.","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureSequenceDiagram.puml\" width\u003d\"574\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":61,"author":{"gitId":"-"},"content":"* defines its *API* in an `interface` with the same name as the Component.","lastModifiedDate":"2021-07-31"},{"lineNumber":62,"author":{"gitId":"-"},"content":"* implements its functionality using a concrete `{Component Name}Manager` class (which follows the corresponding API `interface` mentioned in the previous point.","lastModifiedDate":"2021-07-31"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":64,"author":{"gitId":"-"},"content":"For example, the `Logic` component defines its API in the `Logic.java` interface and implements its functionality using the `LogicManager.java` class which follows the `Logic` interface. Other components interact with a given component through its interface rather than the concrete class (reason: to prevent outside component\u0027s being coupled to the implementation of a component), as illustrated in the (partial) class diagram below.","lastModifiedDate":"2021-07-31"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":66,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ComponentManagers.puml\" width\u003d\"300\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":68,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"The **API** of this component is specified in [`Ui.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/Ui.java)","lastModifiedDate":"2021-07-31"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UiClassDiagram.puml\" alt\u003d\"Structure of the UI Component\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"The UI consists of a `MainWindow` that is made up of parts e.g.`CommandBox`, `ResultDisplay`, `PersonListPanel`, `StatusBarFooter` etc. All these, including the `MainWindow`, inherit from the abstract `UiPart` class which captures the commonalities between classes that represent parts of the visible GUI.","lastModifiedDate":"2021-07-31"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"The `UI` component uses the JavaFx UI framework. The layout of these UI parts are defined in matching `.fxml` files that are in the `src/main/resources/view` folder. For example, the layout of the [`MainWindow`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/MainWindow.java) is specified in [`MainWindow.fxml`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/resources/view/MainWindow.fxml)","lastModifiedDate":"2021-07-31"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"* executes user commands using the `Logic` component.","lastModifiedDate":"2021-07-31"},{"lineNumber":83,"author":{"gitId":"-"},"content":"* listens for changes to `Model` data so that the UI can be updated with the modified data.","lastModifiedDate":"2021-07-31"},{"lineNumber":84,"author":{"gitId":"-"},"content":"* keeps a reference to the `Logic` component, because the `UI` relies on the `Logic` to execute commands.","lastModifiedDate":"2021-07-31"},{"lineNumber":85,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component, as it displays `Person` object residing in the `Model`.","lastModifiedDate":"2021-07-31"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"**API** : [`Logic.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/logic/Logic.java)","lastModifiedDate":"2021-07-31"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/LogicClassDiagram.puml\" width\u003d\"550\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"Vision-2000"},"content":"The sequence diagram below illustrates the interactions within the `Logic` component, taking `execute(\"find n/Bob\")` API call as an example.","lastModifiedDate":"2024-03-22"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"Vision-2000"},"content":"\u003cpuml src\u003d\"diagrams/FindSequenceDiagram.puml\" alt\u003d\"Interactions Inside the Logic Component for the `find n/Bob` Command\" /\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":99,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"Vision-2000"},"content":"**Note:** The lifeline for `FindCommandParser` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline continues till the end of diagram.","lastModifiedDate":"2024-03-22"},{"lineNumber":102,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":106,"author":{"gitId":"Vision-2000"},"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., `FindCommandParser`) and uses it to parse the command.","lastModifiedDate":"2024-03-22"},{"lineNumber":107,"author":{"gitId":"Vision-2000"},"content":"1. This results in a `Command` object (more precisely, an object of one of its subclasses e.g., `FindCommand`) which is executed by the `LogicManager`.","lastModifiedDate":"2024-03-22"},{"lineNumber":108,"author":{"gitId":"jskimdev"},"content":"1. The command can communicate with the `Model` when it is executed (e.g. to delete a patient).\u003cbr\u003e","lastModifiedDate":"2024-03-19"},{"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"},{"lineNumber":110,"author":{"gitId":"-"},"content":"1. The result of the command execution is encapsulated as a `CommandResult` object which is returned back from `Logic`.","lastModifiedDate":"2023-09-03"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"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"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":114,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ParserClasses.puml\" width\u003d\"600\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31"},{"lineNumber":117,"author":{"gitId":"-"},"content":"* When called upon to parse a user command, the `AddressBookParser` class creates an `XYZCommandParser` (`XYZ` is a placeholder for the specific command name e.g., `AddCommandParser`) which uses the other classes shown above to parse the user command and create a `XYZCommand` object (e.g., `AddCommand`) which the `AddressBookParser` returns back as a `Command` object.","lastModifiedDate":"2021-07-31"},{"lineNumber":118,"author":{"gitId":"-"},"content":"* All `XYZCommandParser` classes (e.g., `AddCommandParser`, `DeleteCommandParser`, ...) inherit from the `Parser` interface so that they can be treated similarly where possible e.g, during testing.","lastModifiedDate":"2021-07-31"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31"},{"lineNumber":121,"author":{"gitId":"-"},"content":"**API** : [`Model.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/model/Model.java)","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":"* stores the address book data i.e., all `Person` objects (which are contained in a `UniquePersonList` object).","lastModifiedDate":"2021-07-31"},{"lineNumber":129,"author":{"gitId":"-"},"content":"* stores the currently \u0027selected\u0027 `Person` objects (e.g., results of a search query) as a separate _filtered_ list which is exposed to outsiders as an unmodifiable `ObservableList\u003cPerson\u003e` that can be \u0027observed\u0027 e.g. the UI can be bound to this list so that the UI automatically updates when the data in the list change.","lastModifiedDate":"2021-07-31"},{"lineNumber":130,"author":{"gitId":"-"},"content":"* stores a `UserPref` object that represents the user’s preferences. This is exposed to the outside as a `ReadOnlyUserPref` objects.","lastModifiedDate":"2021-07-31"},{"lineNumber":131,"author":{"gitId":"-"},"content":"* does not depend on any of the other three components (as the `Model` represents data entities of the domain, they should make sense on their own without depending on other components)","lastModifiedDate":"2021-07-31"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":133,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":135,"author":{"gitId":"-"},"content":"**Note:** An alternative (arguably, a more OOP) model is given below. It has a `Tag` list in the `AddressBook`, which `Person` references. This allows `AddressBook` to only require one `Tag` object per unique tag, instead of each `Person` needing their own `Tag` objects.\u003cbr\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":137,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/BetterModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"**API** : [`Storage.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/storage/Storage.java)","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/StorageClassDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":148,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":"* can save both address book data and user preference data in JSON format, and read them back into corresponding objects.","lastModifiedDate":"2023-09-03"},{"lineNumber":150,"author":{"gitId":"-"},"content":"* inherits from both `AddressBookStorage` and `UserPrefStorage`, which means it can be treated as either one (if only the functionality of only one is needed).","lastModifiedDate":"2021-07-31"},{"lineNumber":151,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component (because the `Storage` component\u0027s job is to save/retrieve objects that belong to the `Model`)","lastModifiedDate":"2021-07-21"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.addressbook.commons` package.","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"The proposed undo/redo mechanism is facilitated by `VersionedAddressBook`. It extends `AddressBook` with an undo/redo history, stored internally as an `addressBookStateList` and `currentStatePointer`. Additionally, it implements the following operations:","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":"These operations are exposed in the `Model` interface as `Model#commitAddressBook()`, `Model#undoAddressBook()` and `Model#redoAddressBook()` respectively.","lastModifiedDate":"2020-05-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":"Given below is an example usage scenario and how the undo/redo mechanism behaves at each step.","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":"Step 1. The user launches the application for the first time. The `VersionedAddressBook` will be initialized with the initial address book state, and the `currentStatePointer` pointing to that single address book state.","lastModifiedDate":"2020-05-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState0.puml\" alt\u003d\"UndoRedoState0\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"jskimdev"},"content":"Step 2. The user executes `delete 5` command to delete the 5th patient in the address book. The `delete` command calls `Model#commitAddressBook()`, causing the modified state of the address book after the `delete 5` command executes to be saved in the `addressBookStateList`, and the `currentStatePointer` is shifted to the newly inserted address book state.","lastModifiedDate":"2024-03-19"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState1.puml\" alt\u003d\"UndoRedoState1\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"jskimdev"},"content":"Step 3. The user executes `add n/David …​` to add a new patient. The `add` command also calls `Model#commitAddressBook()`, causing another modified address book state to be saved into the `addressBookStateList`.","lastModifiedDate":"2024-03-19"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState2.puml\" alt\u003d\"UndoRedoState2\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":"**Note:** If a command fails its execution, it will not call `Model#commitAddressBook()`, so the address book state will not be saved into the `addressBookStateList`.","lastModifiedDate":"2023-09-12"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":193,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"jskimdev"},"content":"Step 4. The user now decides that adding the patient was a mistake, and decides to undo that action by executing the `undo` command. The `undo` command will call `Model#undoAddressBook()`, which will shift the `currentStatePointer` once to the left, pointing it to the previous address book state, and restores the address book to that state.","lastModifiedDate":"2024-03-19"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState3.puml\" alt\u003d\"UndoRedoState3\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":200,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":"**Note:** If the `currentStatePointer` is at index 0, pointing to the initial AddressBook state, then there are no previous AddressBook states to restore. The `undo` command uses `Model#canUndoAddressBook()` to check if this is the case. If so, it will return an error to the user rather","lastModifiedDate":"2023-09-12"},{"lineNumber":203,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":209,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Logic.puml\" alt\u003d\"UndoSequenceDiagram-Logic\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":213,"author":{"gitId":"-"},"content":"**Note:** The lifeline for `UndoCommand` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.","lastModifiedDate":"2023-09-12"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":215,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":217,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09"},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":219,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Model.puml\" alt\u003d\"UndoSequenceDiagram-Model\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":221,"author":{"gitId":"-"},"content":"The `redo` command does the opposite — it calls `Model#redoAddressBook()`, which shifts the `currentStatePointer` once to the right, pointing to the previously undone state, and restores the address book to that state.","lastModifiedDate":"2020-05-23"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":223,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":225,"author":{"gitId":"-"},"content":"**Note:** If the `currentStatePointer` is at index `addressBookStateList.size() - 1`, pointing to the latest address book state, then there are no undone AddressBook states to restore. The `redo` command uses `Model#canRedoAddressBook()` to check if this is the case. If so, it will return an error to the user rather than attempting to perform the redo.","lastModifiedDate":"2023-09-12"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":"Step 5. The user then decides to execute the command `list`. Commands that do not modify the address book, such as `list`, will usually not call `Model#commitAddressBook()`, `Model#undoAddressBook()` or `Model#redoAddressBook()`. Thus, the `addressBookStateList` remains unchanged.","lastModifiedDate":"2020-05-23"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState4.puml\" alt\u003d\"UndoRedoState4\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":"Step 6. The user executes `clear`, which calls `Model#commitAddressBook()`. Since the `currentStatePointer` is not pointing at the end of the `addressBookStateList`, all address book states after the `currentStatePointer` will be purged. Reason: It no longer makes sense to redo the `add n/David …​` command. This is the behavior that most modern desktop applications follow.","lastModifiedDate":"2020-05-23"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState5.puml\" alt\u003d\"UndoRedoState5\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/CommitActivityDiagram.puml\" width\u003d\"250\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31"},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31"},{"lineNumber":244,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23"},{"lineNumber":247,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":248,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":249,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23"},{"lineNumber":250,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23"},{"lineNumber":251,"author":{"gitId":"jskimdev"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the patient being deleted).","lastModifiedDate":"2024-03-19"},{"lineNumber":252,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":254,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23"},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":258,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23"},{"lineNumber":259,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07"},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":265,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":266,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":267,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":268,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":269,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":271,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":273,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23"},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":275,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23"},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":277,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23"},{"lineNumber":278,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":279,"author":{"gitId":"Vision-2000"},"content":"* has a need to manage a significant number of patient details","lastModifiedDate":"2024-03-07"},{"lineNumber":280,"author":{"gitId":"-"},"content":"* prefer desktop apps over other types","lastModifiedDate":"2020-05-23"},{"lineNumber":281,"author":{"gitId":"-"},"content":"* can type fast","lastModifiedDate":"2020-05-23"},{"lineNumber":282,"author":{"gitId":"-"},"content":"* prefers typing to mouse interactions","lastModifiedDate":"2020-05-26"},{"lineNumber":283,"author":{"gitId":"-"},"content":"* is reasonably comfortable using CLI apps","lastModifiedDate":"2020-05-23"},{"lineNumber":284,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":285,"author":{"gitId":"Vision-2000"},"content":"**Value proposition**: MediTrack can manage patient details faster than a typical mouse/GUI driven app.","lastModifiedDate":"2024-03-07"},{"lineNumber":286,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":288,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":289,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07"},{"lineNumber":290,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":291,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23"},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":293,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23"},{"lineNumber":294,"author":{"gitId":"Vision-2000"},"content":"|----------|--------------|----------------------------------|--------------------------------------------------------------------------|","lastModifiedDate":"2024-03-07"},{"lineNumber":295,"author":{"gitId":"Vision-2000"},"content":"| `* * *` | receptionist | see usage instructions | refer to instructions when I forget how to use the App |","lastModifiedDate":"2024-03-07"},{"lineNumber":296,"author":{"gitId":"Vision-2000"},"content":"| `* * *` | receptionist | see the list of patients | check the index of all patients |","lastModifiedDate":"2024-03-07"},{"lineNumber":297,"author":{"gitId":"Vision-2000"},"content":"| `* * *` | receptionist | add a new patient | |","lastModifiedDate":"2024-03-07"},{"lineNumber":298,"author":{"gitId":"Vision-2000"},"content":"| `* * *` | receptionist | delete a patient | remove entries that are outdated |","lastModifiedDate":"2024-03-07"},{"lineNumber":299,"author":{"gitId":"Vision-2000"},"content":"| `* * *` | receptionist | find a patient by name | locate details of a patient without having to go through the entire list |","lastModifiedDate":"2024-03-07"},{"lineNumber":300,"author":{"gitId":"Vision-2000"},"content":"| `* *` | receptionist | find a patient by contact number | look for a specific patient without worrying about duplicate names |","lastModifiedDate":"2024-03-07"},{"lineNumber":301,"author":{"gitId":"Vision-2000"},"content":"| `* *` | receptionist | delete all patients | easily reset the list to a blank state |","lastModifiedDate":"2024-03-07"},{"lineNumber":302,"author":{"gitId":"Vision-2000"},"content":"| `* *` | receptionist | exit with a command | close the application with keyboard inputs only |","lastModifiedDate":"2024-03-07"},{"lineNumber":303,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":304,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":306,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07"},{"lineNumber":307,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":308,"author":{"gitId":"Vision-2000"},"content":"(For all use cases below, the **System** is the `MediTrack` and the **Actor** is the `receptionist`, unless specified otherwise)","lastModifiedDate":"2024-03-07"},{"lineNumber":309,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":310,"author":{"gitId":"Vision-2000"},"content":"**Use case: UC01 - Add a patient**","lastModifiedDate":"2024-03-07"},{"lineNumber":311,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":312,"author":{"gitId":"-"},"content":"**MSS** ","lastModifiedDate":"2020-05-23"},{"lineNumber":313,"author":{"gitId":"Vision-2000"},"content":"1. Receptionist requests to add a patient’s data in the list.","lastModifiedDate":"2024-03-07"},{"lineNumber":314,"author":{"gitId":"Vision-2000"},"content":"2. MediTrack adds the patient’s data into the list.","lastModifiedDate":"2024-03-07"},{"lineNumber":315,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":316,"author":{"gitId":"Vision-2000"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":317,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":318,"author":{"gitId":"Vision-2000"},"content":"**Extensions**","lastModifiedDate":"2024-03-07"},{"lineNumber":319,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":320,"author":{"gitId":"Vision-2000"},"content":"* 1a. There is already a patient with the same phone number. ","lastModifiedDate":"2024-03-07"},{"lineNumber":321,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":322,"author":{"gitId":"Vision-2000"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":323,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":324,"author":{"gitId":"Vision-2000"},"content":"**Use case: UC02 - Delete a patient**","lastModifiedDate":"2024-03-07"},{"lineNumber":325,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":326,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2024-03-07"},{"lineNumber":327,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":328,"author":{"gitId":"Vision-2000"},"content":"1. Receptionist requests to list patients.","lastModifiedDate":"2024-03-07"},{"lineNumber":329,"author":{"gitId":"Vision-2000"},"content":"2. MediTrack shows a list of patients.","lastModifiedDate":"2024-03-07"},{"lineNumber":330,"author":{"gitId":"Vision-2000"},"content":"3. Receptionist requests to delete a specific patient in the list.","lastModifiedDate":"2024-03-07"},{"lineNumber":331,"author":{"gitId":"Vision-2000"},"content":"4. MediTrack deletes the patient.","lastModifiedDate":"2024-03-07"},{"lineNumber":332,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":333,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":334,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":335,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23"},{"lineNumber":336,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":337,"author":{"gitId":"-"},"content":"* 2a. The list is empty.","lastModifiedDate":"2020-05-23"},{"lineNumber":338,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":339,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":340,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":341,"author":{"gitId":"-"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2020-05-23"},{"lineNumber":342,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":343,"author":{"gitId":"Vision-2000"},"content":" * 3a1. MediTrack shows an error message.","lastModifiedDate":"2024-03-07"},{"lineNumber":344,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":345,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2020-05-23"},{"lineNumber":346,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":347,"author":{"gitId":"Vision-2000"},"content":"**Use case: UC03 - Find a patient**","lastModifiedDate":"2024-03-07"},{"lineNumber":348,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":349,"author":{"gitId":"Vision-2000"},"content":"**MSS**","lastModifiedDate":"2024-03-07"},{"lineNumber":350,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":351,"author":{"gitId":"Vision-2000"},"content":"1. Receptionist requests for a patient\u0027s information.","lastModifiedDate":"2024-03-07"},{"lineNumber":352,"author":{"gitId":"Vision-2000"},"content":"2. MediTrack returns the patient\u0027s information.","lastModifiedDate":"2024-03-07"},{"lineNumber":353,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":354,"author":{"gitId":"Vision-2000"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":355,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":356,"author":{"gitId":"Vision-2000"},"content":"**Extensions**","lastModifiedDate":"2024-03-07"},{"lineNumber":357,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":358,"author":{"gitId":"Vision-2000"},"content":"* 1a. The patient\u0027s information is not found in the list.","lastModifiedDate":"2024-03-07"},{"lineNumber":359,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":360,"author":{"gitId":"Vision-2000"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":361,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":362,"author":{"gitId":"Vision-2000"},"content":"**Use case: UC04 - Exit**","lastModifiedDate":"2024-03-07"},{"lineNumber":363,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":364,"author":{"gitId":"Vision-2000"},"content":"**MSS**","lastModifiedDate":"2024-03-07"},{"lineNumber":365,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":366,"author":{"gitId":"Vision-2000"},"content":"1. Receptionist requests to exit the program.","lastModifiedDate":"2024-03-07"},{"lineNumber":367,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":368,"author":{"gitId":"Vision-2000"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":369,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":370,"author":{"gitId":"Vision-2000"},"content":"**Use case: UC05 - Delete all patients**","lastModifiedDate":"2024-03-07"},{"lineNumber":371,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":372,"author":{"gitId":"Vision-2000"},"content":"**MSS**","lastModifiedDate":"2024-03-07"},{"lineNumber":373,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":374,"author":{"gitId":"Vision-2000"},"content":"1. Receptionist requests to delete all patients.","lastModifiedDate":"2024-03-07"},{"lineNumber":375,"author":{"gitId":"Vision-2000"},"content":"2. MediTrack asks for confirmation.","lastModifiedDate":"2024-03-07"},{"lineNumber":376,"author":{"gitId":"Vision-2000"},"content":"3. Receptionist confirms.","lastModifiedDate":"2024-03-07"},{"lineNumber":377,"author":{"gitId":"Vision-2000"},"content":"4. MediTrack deletes all patient information.","lastModifiedDate":"2024-03-07"},{"lineNumber":378,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":379,"author":{"gitId":"Vision-2000"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":380,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":381,"author":{"gitId":"Vision-2000"},"content":"**Extensions**","lastModifiedDate":"2024-03-07"},{"lineNumber":382,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":383,"author":{"gitId":"Vision-2000"},"content":"* 1a. There are no patient information.","lastModifiedDate":"2024-03-07"},{"lineNumber":384,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":385,"author":{"gitId":"Vision-2000"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":386,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":387,"author":{"gitId":"Vision-2000"},"content":"* 3a. Receptionist cancels.","lastModifiedDate":"2024-03-07"},{"lineNumber":388,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":389,"author":{"gitId":"Vision-2000"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":390,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":391,"author":{"gitId":"Vision-2000"},"content":"**Use case: UC06 - Start the system**","lastModifiedDate":"2024-03-07"},{"lineNumber":392,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":393,"author":{"gitId":"Vision-2000"},"content":"**MSS**","lastModifiedDate":"2024-03-07"},{"lineNumber":394,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":395,"author":{"gitId":"Vision-2000"},"content":"1. Receptionist starts the program","lastModifiedDate":"2024-03-07"},{"lineNumber":396,"author":{"gitId":"Vision-2000"},"content":"2. MediTrack shows a list of patients","lastModifiedDate":"2024-03-07"},{"lineNumber":397,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":398,"author":{"gitId":"Vision-2000"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":399,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":400,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":401,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":402,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23"},{"lineNumber":403,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":404,"author":{"gitId":"-"},"content":"1. Should work on any _mainstream OS_ as long as it has Java `11` or above installed.","lastModifiedDate":"2020-05-23"},{"lineNumber":405,"author":{"gitId":"Vision-2000"},"content":"2. Should be able to hold up to 100 patients without a noticeable lag in performance for typical usage.","lastModifiedDate":"2024-03-07"},{"lineNumber":406,"author":{"gitId":"-"},"content":"3. A user with above average typing speed for regular English text (i.e. not code, not system admin commands) should be able to accomplish most of the tasks faster using commands than using the mouse.","lastModifiedDate":"2020-05-23"},{"lineNumber":407,"author":{"gitId":"Vision-2000"},"content":"4. Should work without internet connection.","lastModifiedDate":"2024-03-07"},{"lineNumber":408,"author":{"gitId":"Vision-2000"},"content":"5. Can only be used by a registered receptionist.","lastModifiedDate":"2024-03-07"},{"lineNumber":409,"author":{"gitId":"Vision-2000"},"content":"6. Each command should take no more than 1 second until a response is displayed.","lastModifiedDate":"2024-03-07"},{"lineNumber":410,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":411,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":412,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":413,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23"},{"lineNumber":414,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":415,"author":{"gitId":"Vision-2000"},"content":"* **Mainstream OS**: Windows, Linux, MacOS","lastModifiedDate":"2024-03-07"},{"lineNumber":416,"author":{"gitId":"jskimdev"},"content":"* **Patient**: A patient who has visited the clinic at least once due to an illness","lastModifiedDate":"2024-03-19"},{"lineNumber":417,"author":{"gitId":"Vision-2000"},"content":"* **Receptionist** The user operating MediTrack","lastModifiedDate":"2024-03-07"},{"lineNumber":418,"author":{"gitId":"Vision-2000"},"content":"* **Patient information**: Name, contact number, address, email, date of birth, symptoms, date of visit ","lastModifiedDate":"2024-03-07"},{"lineNumber":419,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":420,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":421,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":422,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23"},{"lineNumber":423,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":424,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":425,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":426,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":427,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":428,"author":{"gitId":"-"},"content":"**Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2023-09-12"},{"lineNumber":429,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":430,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":431,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":432,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":433,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":434,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":435,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":436,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":437,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":438,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23"},{"lineNumber":439,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":440,"author":{"gitId":"-"},"content":" 1. Double-click the jar file Expected: Shows the GUI with a set of sample contacts. The window size may not be optimum.","lastModifiedDate":"2020-05-23"},{"lineNumber":441,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":442,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23"},{"lineNumber":443,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":444,"author":{"gitId":"-"},"content":" 1. Resize the window to an optimum size. Move the window to a different location. Close the window.","lastModifiedDate":"2020-05-23"},{"lineNumber":445,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":446,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":447,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23"},{"lineNumber":448,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":449,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":450,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":451,"author":{"gitId":"jskimdev"},"content":"### Deleting a patient","lastModifiedDate":"2024-03-19"},{"lineNumber":452,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":453,"author":{"gitId":"jskimdev"},"content":"1. Deleting a patient while all patients are being shown","lastModifiedDate":"2024-03-19"},{"lineNumber":454,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":455,"author":{"gitId":"jskimdev"},"content":" 1. Prerequisites: List all patients using the `list` command. Multiple patients in the list.","lastModifiedDate":"2024-03-19"},{"lineNumber":456,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":457,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":458,"author":{"gitId":"-"},"content":" Expected: First contact is deleted from the list. Details of the deleted contact shown in the status message. Timestamp in the status bar is updated.","lastModifiedDate":"2020-05-23"},{"lineNumber":459,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":460,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":461,"author":{"gitId":"jskimdev"},"content":" Expected: No patient is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2024-03-19"},{"lineNumber":462,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":463,"author":{"gitId":"-"},"content":" 1. Other incorrect delete commands to try: `delete`, `delete x`, `...` (where x is larger than the list size)\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":464,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":465,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":466,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":467,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":468,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":469,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":470,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":471,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":472,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23"},{"lineNumber":473,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":474,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"jskimdev":10,"-":366,"Vision-2000":98}},{"path":"docs/UserGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"User Guide\"","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"Vision-2000"},"content":"# MediTrack User Guide","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"Vision-2000"},"content":"MediTrack is a **desktop app for managing patient details, 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 patient management tasks done faster than traditional GUI apps.","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"## Quick start","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"1. Ensure you have Java `11` or above installed in your Computer.","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"1. Download the latest `addressbook.jar` from [here](https://github.com/se-edu/addressbook-level3/releases).","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"1. Copy the file to the folder you want to use as the _home folder_ for your AddressBook.","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"1. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar addressbook.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2023-01-01"},{"lineNumber":25,"author":{"gitId":"-"},"content":" A GUI similar to the below should appear in a few seconds. Note how the app contains some sample data.\u003cbr\u003e","lastModifiedDate":"2023-01-01"},{"lineNumber":26,"author":{"gitId":"-"},"content":" ![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":"1. Type the command in the command box and press Enter to execute it. e.g. typing **`help`** and pressing Enter will open the help window.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":" Some example commands you can try:","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * `list` : Lists all contacts.","lastModifiedDate":"2023-01-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01` : Adds a contact named `John Doe` to the Address Book.","lastModifiedDate":"2023-01-01"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * `delete 3` : Deletes the 3rd contact shown in the current list.","lastModifiedDate":"2023-01-01"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * `clear` : Deletes all contacts.","lastModifiedDate":"2023-01-01"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * `exit` : Exits the app.","lastModifiedDate":"2023-01-01"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"1. Refer to the [Features](#features) below for details of each command.","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"**Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"* Words in `UPPER_CASE` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" e.g. in `add n/NAME`, `NAME` is a parameter which can be used as `add n/John Doe`.","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"* Items in square brackets are optional.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" e.g `n/NAME [t/TAG]` can be used as `n/John Doe t/friend` or as `n/John Doe`.","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"* Items with `…`​ after them can be used multiple times including zero times.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" e.g. `[t/TAG]…​` can be used as ` ` (i.e. 0 times), `t/friend`, `t/friend t/family` etc.","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"* Parameters can be in any order.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" e.g. if the command specifies `n/NAME p/PHONE_NUMBER`, `p/PHONE_NUMBER n/NAME` is also acceptable.","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":"* Extraneous parameters for commands that do not take in parameters (such as `help`, `list`, `exit` and `clear`) will be ignored.\u003cbr\u003e","lastModifiedDate":"2021-02-03"},{"lineNumber":64,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2021-02-03"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03"},{"lineNumber":66,"author":{"gitId":"-"},"content":"* If you are using a PDF version of this document, be careful when copying and pasting commands that span multiple lines as space characters surrounding line-breaks may be omitted when copied over to the application.","lastModifiedDate":"2023-06-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"### Viewing help : `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"Shows a message explaning how to access the help page.","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"Format: `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"jskimdev"},"content":"### Adding a patient: `add`","lastModifiedDate":"2024-03-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"jskimdev"},"content":"Adds a patient to the address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"Format: `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]…​`","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":86,"author":{"gitId":"jskimdev"},"content":"**Tip:** A patient can have any number of tags (including 0)","lastModifiedDate":"2024-03-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":"* `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01`","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"* `add n/Betsy Crowe t/friend e/betsycrowe@example.com a/Newgate Prison p/1234567 t/criminal`","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"jskimdev"},"content":"### Listing all patients : `list`","lastModifiedDate":"2024-03-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"jskimdev"},"content":"Shows a list of all patients in the address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":"Format: `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"jskimdev"},"content":"### Editing a patient : `edit`","lastModifiedDate":"2024-03-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"jskimdev"},"content":"Edits an existing patient in the address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":"Format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAG]…​`","lastModifiedDate":"2020-05-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":105,"author":{"gitId":"jskimdev"},"content":"* Edits the patient at the specified `INDEX`. The index refers to the index number shown in the displayed patient list. The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2024-03-19"},{"lineNumber":106,"author":{"gitId":"-"},"content":"* At least one of the optional fields must be provided.","lastModifiedDate":"2020-05-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":"* Existing values will be updated to the input values.","lastModifiedDate":"2020-05-23"},{"lineNumber":108,"author":{"gitId":"jskimdev"},"content":"* When editing tags, the existing tags of the patient will be removed i.e adding of tags is not cumulative.","lastModifiedDate":"2024-03-19"},{"lineNumber":109,"author":{"gitId":"jskimdev"},"content":"* You can remove all the patient’s tags by typing `t/` without","lastModifiedDate":"2024-03-19"},{"lineNumber":110,"author":{"gitId":"-"},"content":" specifying any tags after it.","lastModifiedDate":"2020-05-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"jskimdev"},"content":"* `edit 1 p/91234567 e/johndoe@example.com` Edits the phone number and email address of the 1st patient to be `91234567` and `johndoe@example.com` respectively.","lastModifiedDate":"2024-03-19"},{"lineNumber":114,"author":{"gitId":"jskimdev"},"content":"* `edit 2 n/Betsy Crower t/` Edits the name of the 2nd patient to be `Betsy Crower` and clears all existing tags.","lastModifiedDate":"2024-03-19"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"jskimdev"},"content":"### Locating patients by name: `find`","lastModifiedDate":"2024-03-19"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"jskimdev"},"content":"Finds patients whose names contain any of the given keywords.","lastModifiedDate":"2024-03-19"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":"Format: `find KEYWORD [MORE_KEYWORDS]`","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":"* The search is case-insensitive. e.g `hans` will match `Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":"* The order of the keywords does not matter. e.g. `Hans Bo` will match `Bo Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":"* Only the name is searched.","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":"* Only full words will be matched e.g. `Han` will not match `Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":"* Persons matching at least one keyword will be returned (i.e. `OR` search).","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":" e.g. `Hans Bo` will return `Hans Gruber`, `Bo Yang`","lastModifiedDate":"2020-05-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":"* `find John` returns `john` and `John Doe`","lastModifiedDate":"2020-05-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":"* `find alex david` returns `Alex Yeoh`, `David Li`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":" ![result for \u0027find alex david\u0027](images/findAlexDavidResult.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":134,"author":{"gitId":"jskimdev"},"content":"### Deleting a patient : `delete`","lastModifiedDate":"2024-03-19"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":136,"author":{"gitId":"jskimdev"},"content":"Deletes the specified patient from the address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":"Format: `delete INDEX`","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"jskimdev"},"content":"* Deletes the patient at the specified `INDEX`.","lastModifiedDate":"2024-03-19"},{"lineNumber":141,"author":{"gitId":"jskimdev"},"content":"* The index refers to the index number shown in the displayed patient list.","lastModifiedDate":"2024-03-19"},{"lineNumber":142,"author":{"gitId":"-"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"jskimdev"},"content":"* `list` followed by `delete 2` deletes the 2nd patient in the address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":146,"author":{"gitId":"jskimdev"},"content":"* `find Betsy` followed by `delete 1` deletes the 1st patient in the results of the `find` command.","lastModifiedDate":"2024-03-19"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":"### Clearing all entries : `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":"Clears all entries from the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":"Format: `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"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"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"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"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":168,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"warning\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":170,"author":{"gitId":"-"},"content":"**Caution:**","lastModifiedDate":"2023-09-12"},{"lineNumber":171,"author":{"gitId":"-"},"content":"If your changes to the data file makes its format invalid, AddressBook will discard all data and start with an empty data file at the next run. Hence, it is recommended to take a backup of the file before editing it.\u003cbr\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":172,"author":{"gitId":"-"},"content":"Furthermore, certain edits can cause the AddressBook to behave in unexpected ways (e.g., if a value entered is outside the acceptable range). Therefore, edit the data file only if you are confident that you can update it correctly.","lastModifiedDate":"2023-09-12"},{"lineNumber":173,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":175,"author":{"gitId":"-"},"content":"### Archiving data files `[coming in v2.0]`","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":"_Details coming soon ..._","lastModifiedDate":"2021-02-04"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"**A**: Install the app in the other computer and overwrite the empty data file it creates with the file that contains the data of your previous AddressBook home folder.","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":"## Known issues","lastModifiedDate":"2023-09-08"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":190,"author":{"gitId":"-"},"content":"1. **When using multiple screens**, if you move the application to a secondary screen, and later switch to using only the primary screen, the GUI will open off-screen. The remedy is to delete the `preferences.json` file created by the application before running the application again.","lastModifiedDate":"2023-09-08"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":192,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":194,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":"Action | Format, Examples","lastModifiedDate":"2020-05-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":"-----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-12"},{"lineNumber":198,"author":{"gitId":"-"},"content":"**Add** | `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]…​` \u003cbr\u003e e.g., `add n/James Ho p/22224444 e/jamesho@example.com a/123, Clementi Rd, 1234665 t/friend t/colleague`","lastModifiedDate":"2020-05-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":"**Clear** | `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"author":{"gitId":"-"},"content":"**Delete** | `delete INDEX`\u003cbr\u003e e.g., `delete 3`","lastModifiedDate":"2020-05-23"},{"lineNumber":201,"author":{"gitId":"-"},"content":"**Edit** | `edit INDEX [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [t/TAG]…​`\u003cbr\u003e e.g.,`edit 2 n/James Lee e/jameslee@example.com`","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":"**Find** | `find KEYWORD [MORE_KEYWORDS]`\u003cbr\u003e e.g., `find James Jake`","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":"**List** | `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":204,"author":{"gitId":"-"},"content":"**Help** | `help`","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"jskimdev":20,"-":182,"Vision-2000":2}},{"path":"docs/diagrams/FindSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"Vision-2000"},"content":"@startuml","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"Vision-2000"},"content":"!include style.puml","lastModifiedDate":"2024-03-22"},{"lineNumber":3,"author":{"gitId":"Vision-2000"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-22"},{"lineNumber":4,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":5,"author":{"gitId":"Vision-2000"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2024-03-22"},{"lineNumber":6,"author":{"gitId":"Vision-2000"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2024-03-22"},{"lineNumber":7,"author":{"gitId":"Vision-2000"},"content":"participant \":AddressBookParser\" as AddressBookParser LOGIC_COLOR","lastModifiedDate":"2024-03-22"},{"lineNumber":8,"author":{"gitId":"Vision-2000"},"content":"participant \":FindCommandParser\" as FindCommandParser LOGIC_COLOR","lastModifiedDate":"2024-03-22"},{"lineNumber":9,"author":{"gitId":"Vision-2000"},"content":"participant \"f:FindCommand\" as FindCommand LOGIC_COLOR","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"Vision-2000"},"content":"participant \"r:CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"Vision-2000"},"content":"end box","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"Vision-2000"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"Vision-2000"},"content":"participant \"m:Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-22"},{"lineNumber":15,"author":{"gitId":"Vision-2000"},"content":"end box","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":17,"author":{"gitId":"Vision-2000"},"content":"[-\u003e LogicManager : execute(\"find n/Bob\")","lastModifiedDate":"2024-03-22"},{"lineNumber":18,"author":{"gitId":"Vision-2000"},"content":"activate LogicManager","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":20,"author":{"gitId":"Vision-2000"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(\"find n/Bob\")","lastModifiedDate":"2024-03-22"},{"lineNumber":21,"author":{"gitId":"Vision-2000"},"content":"activate AddressBookParser","lastModifiedDate":"2024-03-22"},{"lineNumber":22,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"Vision-2000"},"content":"create FindCommandParser","lastModifiedDate":"2024-03-22"},{"lineNumber":24,"author":{"gitId":"Vision-2000"},"content":"AddressBookParser -\u003e FindCommandParser","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"Vision-2000"},"content":"activate FindCommandParser","lastModifiedDate":"2024-03-22"},{"lineNumber":26,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":27,"author":{"gitId":"Vision-2000"},"content":"FindCommandParser --\u003e AddressBookParser","lastModifiedDate":"2024-03-22"},{"lineNumber":28,"author":{"gitId":"Vision-2000"},"content":"deactivate FindCommandParser","lastModifiedDate":"2024-03-22"},{"lineNumber":29,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":30,"author":{"gitId":"Vision-2000"},"content":"AddressBookParser -\u003e FindCommandParser : parse(\"n/Bob\")","lastModifiedDate":"2024-03-22"},{"lineNumber":31,"author":{"gitId":"Vision-2000"},"content":"activate FindCommandParser","lastModifiedDate":"2024-03-22"},{"lineNumber":32,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":33,"author":{"gitId":"Vision-2000"},"content":"create FindCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":34,"author":{"gitId":"Vision-2000"},"content":"FindCommandParser -\u003e FindCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":35,"author":{"gitId":"Vision-2000"},"content":"activate FindCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":36,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":37,"author":{"gitId":"Vision-2000"},"content":"FindCommand --\u003e FindCommandParser :","lastModifiedDate":"2024-03-22"},{"lineNumber":38,"author":{"gitId":"Vision-2000"},"content":"deactivate FindCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":39,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":40,"author":{"gitId":"Vision-2000"},"content":"FindCommandParser --\u003e AddressBookParser : f","lastModifiedDate":"2024-03-22"},{"lineNumber":41,"author":{"gitId":"Vision-2000"},"content":"deactivate FindCommandParser","lastModifiedDate":"2024-03-22"},{"lineNumber":42,"author":{"gitId":"Vision-2000"},"content":"\u0027Hidden arrow to position the destroy marker below the end of the activation bar.","lastModifiedDate":"2024-03-22"},{"lineNumber":43,"author":{"gitId":"Vision-2000"},"content":"FindCommandParser -[hidden]-\u003e AddressBookParser","lastModifiedDate":"2024-03-22"},{"lineNumber":44,"author":{"gitId":"Vision-2000"},"content":"destroy FindCommandParser","lastModifiedDate":"2024-03-22"},{"lineNumber":45,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":46,"author":{"gitId":"Vision-2000"},"content":"AddressBookParser --\u003e LogicManager : f","lastModifiedDate":"2024-03-22"},{"lineNumber":47,"author":{"gitId":"Vision-2000"},"content":"deactivate AddressBookParser","lastModifiedDate":"2024-03-22"},{"lineNumber":48,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":49,"author":{"gitId":"Vision-2000"},"content":"LogicManager -\u003e FindCommand : execute(m)","lastModifiedDate":"2024-03-22"},{"lineNumber":50,"author":{"gitId":"Vision-2000"},"content":"activate FindCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":51,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":52,"author":{"gitId":"Vision-2000"},"content":"FindCommand -\u003e Model : updateFilteredPersonList(namePredicate)","lastModifiedDate":"2024-03-22"},{"lineNumber":53,"author":{"gitId":"Vision-2000"},"content":"activate Model","lastModifiedDate":"2024-03-22"},{"lineNumber":54,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":55,"author":{"gitId":"Vision-2000"},"content":"Model --\u003e FindCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":56,"author":{"gitId":"Vision-2000"},"content":"deactivate Model","lastModifiedDate":"2024-03-22"},{"lineNumber":57,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":58,"author":{"gitId":"Vision-2000"},"content":"create CommandResult","lastModifiedDate":"2024-03-22"},{"lineNumber":59,"author":{"gitId":"Vision-2000"},"content":"FindCommand -\u003e CommandResult","lastModifiedDate":"2024-03-22"},{"lineNumber":60,"author":{"gitId":"Vision-2000"},"content":"activate CommandResult","lastModifiedDate":"2024-03-22"},{"lineNumber":61,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":62,"author":{"gitId":"Vision-2000"},"content":"CommandResult --\u003e FindCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":63,"author":{"gitId":"Vision-2000"},"content":"deactivate CommandResult","lastModifiedDate":"2024-03-22"},{"lineNumber":64,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":65,"author":{"gitId":"Vision-2000"},"content":"FindCommand --\u003e LogicManager : r","lastModifiedDate":"2024-03-22"},{"lineNumber":66,"author":{"gitId":"Vision-2000"},"content":"deactivate FindCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":67,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":68,"author":{"gitId":"Vision-2000"},"content":"[\u003c--LogicManager","lastModifiedDate":"2024-03-22"},{"lineNumber":69,"author":{"gitId":"Vision-2000"},"content":"deactivate LogicManager","lastModifiedDate":"2024-03-22"},{"lineNumber":70,"author":{"gitId":"Vision-2000"},"content":"@enduml","lastModifiedDate":"2024-03-22"}],"authorContributionMap":{"Vision-2000":70}},{"path":"docs/index.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"\"","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"Vision-2000"},"content":"# MediTrack","lastModifiedDate":"2024-03-06"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":8,"author":{"gitId":"Vision-2000"},"content":"[![CI Status](https://github.com/AY2324S2-CS2103T-T14-2/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2324S2-CS2103T-T14-2/tp/actions)","lastModifiedDate":"2024-03-06"},{"lineNumber":9,"author":{"gitId":"Vision-2000"},"content":"[![codecov](https://codecov.io/gh/AY2324S2-CS2103T-T14-2/tp/graph/badge.svg?token\u003dyYHlxxXkJQ)](https://codecov.io/gh/AY2324S2-CS2103T-T14-2/tp)","lastModifiedDate":"2024-03-06"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"Vision-2000"},"content":"**MediTrack is a desktop application for managing your patient details.** While it has a GUI, most of the user interactions happen using a CLI (Command Line Interface).","lastModifiedDate":"2024-03-06"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"Vision-2000"},"content":"* If you are interested in using MediTrack, head over to the [_Quick Start_ section of the **User Guide**](UserGuide.html#quick-start).","lastModifiedDate":"2024-03-06"},{"lineNumber":16,"author":{"gitId":"Vision-2000"},"content":"* If you are interested about developing MediTrack, the [**Developer Guide**](DeveloperGuide.html) is a good place to start.","lastModifiedDate":"2024-03-06"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"**Acknowledgements**","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"Vision-2000"},"content":"* This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-03-06"}],"authorContributionMap":{"-":14,"Vision-2000":7}},{"path":"docs/tutorials/AddRemark.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-07-29"},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"Tutorial: Adding a command\"","lastModifiedDate":"2020-07-29"},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-07-29"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":7,"author":{"gitId":"-"},"content":"# Tutorial: Adding a command","lastModifiedDate":"2023-09-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"Let\u0027s walk you through the implementation of a new command — `remark`.","lastModifiedDate":"2020-07-29"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"This command allows users of the AddressBook application to add optional remarks to people in their address book and edit it if required. The command should have the following format:","lastModifiedDate":"2020-07-29"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":13,"author":{"gitId":"-"},"content":"`remark INDEX r/REMARK` (e.g., `remark 2 r/Likes baseball`)","lastModifiedDate":"2020-07-29"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":"We’ll assume that you have already set up the development environment as outlined in the Developer’s Guide.","lastModifiedDate":"2020-07-29"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":18,"author":{"gitId":"-"},"content":"## Create a new `remark` command","lastModifiedDate":"2020-07-29"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Looking in the `logic.command` package, you will notice that each existing command have their own class. All the commands inherit from the abstract class `Command` which means that they must override `execute()`. Each `Command` returns an instance of `CommandResult` upon success and `CommandResult#feedbackToUser` is printed to the `ResultDisplay`.","lastModifiedDate":"2020-07-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":22,"author":{"gitId":"-"},"content":"Let’s start by creating a new `RemarkCommand` class in the `src/main/java/seedu/address/logic/command` directory.","lastModifiedDate":"2020-07-29"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":24,"author":{"gitId":"-"},"content":"For now, let’s keep `RemarkCommand` as simple as possible and print some output. We accomplish that by returning a `CommandResult` with an accompanying message.","lastModifiedDate":"2020-07-29"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":26,"author":{"gitId":"-"},"content":"**`RemarkCommand.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":28,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":29,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2020-07-29"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2020-07-29"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":33,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-07-29"},{"lineNumber":34,"author":{"gitId":"jskimdev"},"content":" * Changes the remark of an existing patient in the address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":36,"author":{"gitId":"-"},"content":"public class RemarkCommand extends Command {","lastModifiedDate":"2020-07-29"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"remark\";","lastModifiedDate":"2020-07-29"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2020-07-29"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return new CommandResult(\"Hello from remark\");","lastModifiedDate":"2020-07-29"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":44,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":45,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":47,"author":{"gitId":"-"},"content":"### Hook `RemarkCommand` into the application","lastModifiedDate":"2020-07-29"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":49,"author":{"gitId":"-"},"content":"Now that we have our `RemarkCommand` ready to be executed, we need to update `AddressBookParser#parseCommand()` to recognize the `remark` keyword. Add the new command to the `switch` block by creating a new `case` that returns a new instance of `RemarkCommand`.","lastModifiedDate":"2020-07-29"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":51,"author":{"gitId":"-"},"content":"You can refer to the changes in this [diff](https://github.com/se-edu/addressbook-level3/commit/35eb7286f18a029d39cb7a29df8f172a001e4fd8#diff-399c284cb892c20b7c04a69116fcff6ccc0666c5230a1db8e4a9145def8fa4ee).","lastModifiedDate":"2022-01-02"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":"### Run the application","lastModifiedDate":"2020-07-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":55,"author":{"gitId":"-"},"content":"Run `Main#main` and try out your new `RemarkCommand`. If everything went well, you should see something like this:","lastModifiedDate":"2020-07-29"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":"![Output displayed](../images/add-remark/RemarkHello.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":59,"author":{"gitId":"-"},"content":"## Change `RemarkCommand` to throw an exception","lastModifiedDate":"2020-07-29"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":"While we have successfully printed a message to `ResultDisplay`, the command does not do what it is supposed to do. Let’s change the command to throw a `CommandException` to accurately reflect that our command is still a work in progress.","lastModifiedDate":"2020-12-12"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":63,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"../diagrams/add-remark/RemarkClass.puml\" alt\u003d\"The relationship between RemarkCommand and Command\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":65,"author":{"gitId":"-"},"content":"Following the convention in other commands, we add relevant messages as constants and use them.","lastModifiedDate":"2020-07-29"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":67,"author":{"gitId":"-"},"content":"**`RemarkCommand.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":69,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2021-08-01"},{"lineNumber":71,"author":{"gitId":"jskimdev"},"content":" + \": Edits the remark of the patient identified \"","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"jskimdev"},"content":" + \"by the index number used in the last patient listing. \"","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":" + \"Existing remark will be overwritten by the input.\\n\"","lastModifiedDate":"2020-07-29"},{"lineNumber":74,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2020-07-29"},{"lineNumber":75,"author":{"gitId":"-"},"content":" + \"r/ [REMARK]\\n\"","lastModifiedDate":"2020-07-29"},{"lineNumber":76,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2020-07-29"},{"lineNumber":77,"author":{"gitId":"-"},"content":" + \"r/ Likes to swim.\";","lastModifiedDate":"2020-07-29"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_IMPLEMENTED_YET \u003d","lastModifiedDate":"2021-08-01"},{"lineNumber":80,"author":{"gitId":"-"},"content":" \"Remark command not implemented yet\";","lastModifiedDate":"2021-08-01"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2020-07-29"},{"lineNumber":84,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_NOT_IMPLEMENTED_YET);","lastModifiedDate":"2020-07-29"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":86,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":88,"author":{"gitId":"-"},"content":"## Enhancing `RemarkCommand`","lastModifiedDate":"2020-07-29"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":90,"author":{"gitId":"-"},"content":"Let’s change `RemarkCommand` to parse input from the user.","lastModifiedDate":"2020-07-29"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":92,"author":{"gitId":"-"},"content":"### Make the command accept parameters","lastModifiedDate":"2020-07-29"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":94,"author":{"gitId":"-"},"content":"We start by modifying the constructor of `RemarkCommand` to accept an `Index` and a `String`. While we are at it, let’s change the error message to echo the values. While this is not a replacement for tests, it is an obvious way to tell if our code is functioning as intended.","lastModifiedDate":"2020-07-29"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":96,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":97,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2020-07-29"},{"lineNumber":98,"author":{"gitId":"-"},"content":"//...","lastModifiedDate":"2020-07-29"},{"lineNumber":99,"author":{"gitId":"-"},"content":"public class RemarkCommand extends Command {","lastModifiedDate":"2020-07-29"},{"lineNumber":100,"author":{"gitId":"-"},"content":" //...","lastModifiedDate":"2020-07-29"},{"lineNumber":101,"author":{"gitId":"-"},"content":" public static final String MESSAGE_ARGUMENTS \u003d \"Index: %1$d, Remark: %2$s\";","lastModifiedDate":"2020-07-29"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":103,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2020-07-29"},{"lineNumber":104,"author":{"gitId":"-"},"content":" private final String remark;","lastModifiedDate":"2020-07-29"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":106,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-07-29"},{"lineNumber":107,"author":{"gitId":"jskimdev"},"content":" * @param index of the patient in the filtered patient list to edit the remark","lastModifiedDate":"2024-03-19"},{"lineNumber":108,"author":{"gitId":"jskimdev"},"content":" * @param remark of the patient to be updated to","lastModifiedDate":"2024-03-19"},{"lineNumber":109,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":110,"author":{"gitId":"-"},"content":" public RemarkCommand(Index index, String remark) {","lastModifiedDate":"2020-07-29"},{"lineNumber":111,"author":{"gitId":"-"},"content":" requireAllNonNull(index, remark);","lastModifiedDate":"2020-07-29"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":113,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2020-07-29"},{"lineNumber":114,"author":{"gitId":"-"},"content":" this.remark \u003d remark;","lastModifiedDate":"2020-07-29"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":117,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2020-07-29"},{"lineNumber":118,"author":{"gitId":"-"},"content":" throw new CommandException(","lastModifiedDate":"2021-08-01"},{"lineNumber":119,"author":{"gitId":"-"},"content":" String.format(MESSAGE_ARGUMENTS, index.getOneBased(), remark));","lastModifiedDate":"2021-08-01"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":123,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2020-07-29"},{"lineNumber":124,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2020-07-29"},{"lineNumber":125,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2020-07-29"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":128,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2020-07-29"},{"lineNumber":129,"author":{"gitId":"-"},"content":" if (!(other instanceof RemarkCommand)) {","lastModifiedDate":"2020-07-29"},{"lineNumber":130,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2020-07-29"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":133,"author":{"gitId":"-"},"content":" RemarkCommand e \u003d (RemarkCommand) other;","lastModifiedDate":"2020-07-29"},{"lineNumber":134,"author":{"gitId":"-"},"content":" return index.equals(e.index)","lastModifiedDate":"2020-07-29"},{"lineNumber":135,"author":{"gitId":"-"},"content":" \u0026\u0026 remark.equals(e.remark);","lastModifiedDate":"2020-07-29"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":137,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":138,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":140,"author":{"gitId":"-"},"content":"Your code should look something like [this](https://github.com/se-edu/addressbook-level3/commit/dc6d5139d08f6403da0ec624ea32bd79a2ae0cbf#diff-a8e35af8f9c251525063fae36c9852922a7e7195763018eacec60f3a4d87c594) after you are done.","lastModifiedDate":"2022-01-02"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":142,"author":{"gitId":"-"},"content":"### Parse user input","lastModifiedDate":"2020-07-29"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":144,"author":{"gitId":"-"},"content":"Now let’s move on to writing a parser that will extract the index and remark from the input provided by the user.","lastModifiedDate":"2020-07-29"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":146,"author":{"gitId":"-"},"content":"Create a `RemarkCommandParser` class in the `seedu.address.logic.parser` package. The class must extend the `Parser` interface.","lastModifiedDate":"2020-07-29"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":148,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"../diagrams/add-remark/ParserClass.puml\" alt\u003d\"The relationship between Parser and RemarkCommandParser\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":150,"author":{"gitId":"-"},"content":"Thankfully, `ArgumentTokenizer#tokenize()` makes it trivial to parse user input. Let’s take a look at the JavaDoc provided for the function to understand what it does.","lastModifiedDate":"2020-07-29"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":152,"author":{"gitId":"-"},"content":"**`ArgumentTokenizer.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":154,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":155,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-07-29"},{"lineNumber":156,"author":{"gitId":"-"},"content":" * Tokenizes an arguments string and returns an {@code ArgumentMultimap}","lastModifiedDate":"2020-07-29"},{"lineNumber":157,"author":{"gitId":"-"},"content":" * object that maps prefixes to their respective argument values. Only the","lastModifiedDate":"2020-07-29"},{"lineNumber":158,"author":{"gitId":"-"},"content":" * given prefixes will be recognized in the arguments string.","lastModifiedDate":"2020-07-29"},{"lineNumber":159,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2020-07-29"},{"lineNumber":160,"author":{"gitId":"-"},"content":" * @param argsString Arguments string of the form:","lastModifiedDate":"2020-07-29"},{"lineNumber":161,"author":{"gitId":"-"},"content":" * {@code preamble \u003cprefix\u003evalue \u003cprefix\u003evalue ...}","lastModifiedDate":"2020-07-29"},{"lineNumber":162,"author":{"gitId":"-"},"content":" * @param prefixes Prefixes to tokenize the arguments string with","lastModifiedDate":"2020-07-29"},{"lineNumber":163,"author":{"gitId":"-"},"content":" * @return ArgumentMultimap object that maps prefixes to their","lastModifiedDate":"2020-07-29"},{"lineNumber":164,"author":{"gitId":"-"},"content":" * arguments","lastModifiedDate":"2020-07-29"},{"lineNumber":165,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":166,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":168,"author":{"gitId":"-"},"content":"We can tell `ArgumentTokenizer#tokenize()` to look out for our new prefix `r/` and it will return us an instance of `ArgumentMultimap`. Now let’s find out what we need to do in order to obtain the Index and String that we need. Let’s look through `ArgumentMultimap` :","lastModifiedDate":"2020-07-29"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":170,"author":{"gitId":"-"},"content":"**`ArgumentMultimap.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":172,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":173,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-07-29"},{"lineNumber":174,"author":{"gitId":"-"},"content":" * Returns the last value of {@code prefix}.","lastModifiedDate":"2020-07-29"},{"lineNumber":175,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":176,"author":{"gitId":"-"},"content":"public Optional\u003cString\u003e getValue(Prefix prefix) {","lastModifiedDate":"2020-07-29"},{"lineNumber":177,"author":{"gitId":"-"},"content":" List\u003cString\u003e values \u003d getAllValues(prefix);","lastModifiedDate":"2020-07-29"},{"lineNumber":178,"author":{"gitId":"-"},"content":" return values.isEmpty() ? Optional.empty() :","lastModifiedDate":"2020-07-29"},{"lineNumber":179,"author":{"gitId":"-"},"content":" Optional.of(values.get(values.size() - 1));","lastModifiedDate":"2020-07-29"},{"lineNumber":180,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":181,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":183,"author":{"gitId":"-"},"content":"This appears to be what we need to get a String of the remark. But what about the Index? Let\u0027s take a quick peek at existing `Command` that uses an index to see how it is done.","lastModifiedDate":"2020-07-29"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":185,"author":{"gitId":"-"},"content":"**`DeleteCommandParser.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":187,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":188,"author":{"gitId":"-"},"content":"Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2020-07-29"},{"lineNumber":189,"author":{"gitId":"-"},"content":"return new DeleteCommand(index);","lastModifiedDate":"2020-07-29"},{"lineNumber":190,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":192,"author":{"gitId":"-"},"content":"There appears to be another utility class that obtains an `Index` from the input provided by the user.","lastModifiedDate":"2020-07-29"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":194,"author":{"gitId":"-"},"content":"Now that we have the know-how to extract the data that we need from the user’s input, we can parse the user command and create a new instance of `RemarkCommand`, as given below.","lastModifiedDate":"2020-07-29"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":196,"author":{"gitId":"-"},"content":"**`RemarkCommandParser.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":198,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":199,"author":{"gitId":"-"},"content":"public RemarkCommand parse(String args) throws ParseException {","lastModifiedDate":"2020-07-29"},{"lineNumber":200,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2020-07-29"},{"lineNumber":201,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args,","lastModifiedDate":"2020-07-29"},{"lineNumber":202,"author":{"gitId":"-"},"content":" PREFIX_REMARK);","lastModifiedDate":"2020-07-29"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":204,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2020-07-29"},{"lineNumber":205,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2020-07-29"},{"lineNumber":206,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2020-07-29"},{"lineNumber":207,"author":{"gitId":"-"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2020-07-29"},{"lineNumber":208,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2020-07-29"},{"lineNumber":209,"author":{"gitId":"-"},"content":" RemarkCommand.MESSAGE_USAGE), ive);","lastModifiedDate":"2020-07-29"},{"lineNumber":210,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":212,"author":{"gitId":"-"},"content":" String remark \u003d argMultimap.getValue(PREFIX_REMARK).orElse(\"\");","lastModifiedDate":"2020-07-29"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":214,"author":{"gitId":"-"},"content":" return new RemarkCommand(index, remark);","lastModifiedDate":"2020-07-29"},{"lineNumber":215,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":216,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":218,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":220,"author":{"gitId":"-"},"content":"Don’t forget to update `AddressBookParser` to use our new `RemarkCommandParser`!","lastModifiedDate":"2023-09-12"},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":222,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":224,"author":{"gitId":"-"},"content":"If you are stuck, check out the sample","lastModifiedDate":"2020-07-29"},{"lineNumber":225,"author":{"gitId":"-"},"content":"[here](https://github.com/se-edu/addressbook-level3/commit/dc6d5139d08f6403da0ec624ea32bd79a2ae0cbf#diff-8bf239e8e9529369b577701303ddd96af93178b4ed6735f91c2d8488b20c6b4a).","lastModifiedDate":"2022-01-02"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":227,"author":{"gitId":"-"},"content":"## Add `Remark` to the model","lastModifiedDate":"2020-07-29"},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":229,"author":{"gitId":"jskimdev"},"content":"Now that we have all the information that we need, let’s lay the groundwork for propagating the remarks added into the in-memory storage of patient data. We achieve that by working with the `Person` model. Each field in a Person is implemented as a separate class (e.g. a `Name` object represents the patient’s name). That means we should add a `Remark` class so that we can use a `Remark` object to represent a remark given to a patient.","lastModifiedDate":"2024-03-19"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":231,"author":{"gitId":"-"},"content":"### Add a new `Remark` class","lastModifiedDate":"2020-07-29"},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":233,"author":{"gitId":"jskimdev"},"content":"Create a new `Remark` in `seedu.address.model.patient`. Since a `Remark` is a field that is similar to `Address`, we can reuse a significant bit of code.","lastModifiedDate":"2024-03-19"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":235,"author":{"gitId":"-"},"content":"A copy-paste and search-replace later, you should have something like [this](https://github.com/se-edu/addressbook-level3/commit/4516e099699baa9e2d51801bd26f016d812dedcc#diff-41bb13c581e280c686198251ad6cc337cd5e27032772f06ed9bf7f1440995ece). Note how `Remark` has no constrains and thus does not require input","lastModifiedDate":"2022-01-02"},{"lineNumber":236,"author":{"gitId":"-"},"content":"validation.","lastModifiedDate":"2020-07-29"},{"lineNumber":237,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":238,"author":{"gitId":"-"},"content":"### Make use of `Remark`","lastModifiedDate":"2020-07-29"},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":240,"author":{"gitId":"-"},"content":"Let’s change `RemarkCommand` and `RemarkCommandParser` to use the new `Remark` class instead of plain `String`. These should be relatively simple changes.","lastModifiedDate":"2020-07-29"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":242,"author":{"gitId":"-"},"content":"## Add a placeholder element for remark to the UI","lastModifiedDate":"2020-07-29"},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":244,"author":{"gitId":"jskimdev"},"content":"Without getting too deep into `fxml`, let’s go on a 5 minute adventure to get some placeholder text to show up for each patient.","lastModifiedDate":"2024-03-19"},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":246,"author":{"gitId":"-"},"content":"Simply add the following to [`seedu.address.ui.PersonCard`](https://github.com/se-edu/addressbook-level3/commit/850b78879582f38accb05dd20c245963c65ea599#diff-639834f1e05afe2276a86372adf0fe5f69314642c2d93cfa543d614ce5a76688).","lastModifiedDate":"2022-01-02"},{"lineNumber":247,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":248,"author":{"gitId":"-"},"content":"**`PersonCard.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":250,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":251,"author":{"gitId":"-"},"content":"@FXML","lastModifiedDate":"2020-07-29"},{"lineNumber":252,"author":{"gitId":"-"},"content":"private Label remark;","lastModifiedDate":"2020-07-29"},{"lineNumber":253,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":256,"author":{"gitId":"-"},"content":"`@FXML` is an annotation that marks a private or protected field and makes it accessible to FXML. It might sound like Greek to you right now, don’t worry — we will get back to it later.","lastModifiedDate":"2020-07-29"},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":258,"author":{"gitId":"-"},"content":"Then insert the following into [`main/resources/view/PersonListCard.fxml`](https://github.com/se-edu/addressbook-level3/commit/850b78879582f38accb05dd20c245963c65ea599#diff-d44c4f51c24f6253c277a2bb9bc440b8064d9c15ad7cb7ceda280bca032efce9).","lastModifiedDate":"2022-01-02"},{"lineNumber":259,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":260,"author":{"gitId":"-"},"content":"**`PersonListCard.fxml`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":261,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":262,"author":{"gitId":"-"},"content":"``` xml","lastModifiedDate":"2020-07-29"},{"lineNumber":263,"author":{"gitId":"-"},"content":"\u003cLabel fx:id\u003d\"remark\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$remark\" /\u003e","lastModifiedDate":"2020-07-29"},{"lineNumber":264,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":266,"author":{"gitId":"-"},"content":"That’s it! Fire up the application again and you should see something like this:","lastModifiedDate":"2020-07-29"},{"lineNumber":267,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":268,"author":{"gitId":"-"},"content":"![$remark shows up in each entry](../images/add-remark/$Remark.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":269,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":270,"author":{"gitId":"-"},"content":"## Modify `Person` to support a `Remark` field","lastModifiedDate":"2020-07-29"},{"lineNumber":271,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":272,"author":{"gitId":"-"},"content":"Since `PersonCard` displays data from a `Person`, we need to update `Person` to get our `Remark` displayed!","lastModifiedDate":"2020-07-29"},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":274,"author":{"gitId":"-"},"content":"### Modify `Person`","lastModifiedDate":"2020-07-29"},{"lineNumber":275,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":276,"author":{"gitId":"-"},"content":"We change the constructor of `Person` to take a `Remark`. We will also need to define new fields and accessors accordingly to store our new addition.","lastModifiedDate":"2020-07-29"},{"lineNumber":277,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":278,"author":{"gitId":"-"},"content":"### Update other usages of `Person`","lastModifiedDate":"2020-07-29"},{"lineNumber":279,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":280,"author":{"gitId":"-"},"content":"Unfortunately, a change to `Person` will cause other commands to break, you will have to modify these commands to use the updated `Person`!","lastModifiedDate":"2020-07-29"},{"lineNumber":281,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":282,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":284,"author":{"gitId":"-"},"content":"Use the `Find Usages` feature in IntelliJ IDEA on the `Person` class to find these commands.","lastModifiedDate":"2023-09-12"},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":286,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":288,"author":{"gitId":"-"},"content":"Refer to [this commit](https://github.com/se-edu/addressbook-level3/commit/ce998c37e65b92d35c91d28c7822cd139c2c0a5c) and check that you have got everything in order!","lastModifiedDate":"2020-07-29"},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":290,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":291,"author":{"gitId":"-"},"content":"## Updating Storage","lastModifiedDate":"2020-07-29"},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":293,"author":{"gitId":"-"},"content":"AddressBook stores data by serializing `JsonAdaptedPerson` into `json` with the help of an external library — Jackson. Let’s update `JsonAdaptedPerson` to work with our new `Person`!","lastModifiedDate":"2020-07-29"},{"lineNumber":294,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":295,"author":{"gitId":"-"},"content":"While the changes to code may be minimal, the test data will have to be updated as well.","lastModifiedDate":"2020-07-29"},{"lineNumber":296,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":297,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"warning\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":298,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":299,"author":{"gitId":"-"},"content":"You must delete AddressBook’s storage file located at `/data/addressbook.json` before running it! Not doing so will cause AddressBook to default to an empty address book!","lastModifiedDate":"2023-09-12"},{"lineNumber":300,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":301,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":302,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":303,"author":{"gitId":"-"},"content":"Check out [this commit](https://github.com/se-edu/addressbook-level3/commit/556cbd0e03ff224d7a68afba171ad2eb0ce56bbf)","lastModifiedDate":"2020-07-29"},{"lineNumber":304,"author":{"gitId":"-"},"content":"to see what the changes entail.","lastModifiedDate":"2020-07-29"},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":306,"author":{"gitId":"-"},"content":"## Finalizing the UI","lastModifiedDate":"2020-07-29"},{"lineNumber":307,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":308,"author":{"gitId":"-"},"content":"Now that we have finalized the `Person` class and its dependencies, we can now bind the `Remark` field to the UI.","lastModifiedDate":"2020-07-29"},{"lineNumber":309,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":310,"author":{"gitId":"-"},"content":"Just add [this one line of code!](https://github.com/se-edu/addressbook-level3/commit/5b98fee11b6b3f5749b6b943c4f3bd3aa049b692)","lastModifiedDate":"2020-07-29"},{"lineNumber":311,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":312,"author":{"gitId":"-"},"content":"**`PersonCard.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":313,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":314,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":315,"author":{"gitId":"jskimdev"},"content":"public PersonCard(Person patient, int displayedIndex) {","lastModifiedDate":"2024-03-19"},{"lineNumber":316,"author":{"gitId":"-"},"content":" //...","lastModifiedDate":"2020-07-29"},{"lineNumber":317,"author":{"gitId":"jskimdev"},"content":" remark.setText(patient.getRemark().value);","lastModifiedDate":"2024-03-19"},{"lineNumber":318,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":319,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":320,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":321,"author":{"gitId":"-"},"content":"![The remark label is bound properly!](../images/add-remark/RemarkBound.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":322,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":323,"author":{"gitId":"-"},"content":"## Putting everything together","lastModifiedDate":"2020-07-29"},{"lineNumber":324,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":325,"author":{"gitId":"-"},"content":"After the previous step, we notice a peculiar regression — we went from displaying something to nothing at all. However, this is expected behavior as we are yet to update the `RemarkCommand` to make use of the code we\u0027ve been adding in the last few steps.","lastModifiedDate":"2020-07-29"},{"lineNumber":326,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":327,"author":{"gitId":"-"},"content":"### Update `RemarkCommand` and `RemarkCommandParser`","lastModifiedDate":"2020-07-29"},{"lineNumber":328,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":329,"author":{"gitId":"-"},"content":"In this last step, we modify `RemarkCommand#execute()` to change the `Remark` of a `Person`. Since all fields in a `Person` are immutable, we create a new instance of a `Person` with the values that we want and","lastModifiedDate":"2020-07-29"},{"lineNumber":330,"author":{"gitId":"-"},"content":"save it with `Model#setPerson()`.","lastModifiedDate":"2020-07-29"},{"lineNumber":331,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":332,"author":{"gitId":"-"},"content":"**`RemarkCommand.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":333,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":334,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":335,"author":{"gitId":"-"},"content":"//...","lastModifiedDate":"2020-07-29"},{"lineNumber":336,"author":{"gitId":"-"},"content":" public static final String MESSAGE_ADD_REMARK_SUCCESS \u003d \"Added remark to Person: %1$s\";","lastModifiedDate":"2020-07-29"},{"lineNumber":337,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DELETE_REMARK_SUCCESS \u003d \"Removed remark from Person: %1$s\";","lastModifiedDate":"2020-07-29"},{"lineNumber":338,"author":{"gitId":"-"},"content":"//...","lastModifiedDate":"2020-07-29"},{"lineNumber":339,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":340,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2020-07-29"},{"lineNumber":341,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2020-07-29"},{"lineNumber":342,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":343,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2020-07-29"},{"lineNumber":344,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2020-07-29"},{"lineNumber":345,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":346,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":347,"author":{"gitId":"jskimdev"},"content":" Person patientToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-03-19"},{"lineNumber":348,"author":{"gitId":"jskimdev"},"content":" Person editedPatient \u003d new Person(","lastModifiedDate":"2024-03-19"},{"lineNumber":349,"author":{"gitId":"jskimdev"},"content":" patientToEdit.getName(), patientToEdit.getPhone(), patientToEdit.getEmail(),","lastModifiedDate":"2024-03-19"},{"lineNumber":350,"author":{"gitId":"jskimdev"},"content":" patientToEdit.getAddress(), remark, patientToEdit.getTags());","lastModifiedDate":"2024-03-19"},{"lineNumber":351,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":352,"author":{"gitId":"jskimdev"},"content":" model.setPerson(patientToEdit, editedPatient);","lastModifiedDate":"2024-03-19"},{"lineNumber":353,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2020-07-29"},{"lineNumber":354,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":355,"author":{"gitId":"jskimdev"},"content":" return new CommandResult(generateSuccessMessage(editedPatient));","lastModifiedDate":"2024-03-19"},{"lineNumber":356,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":357,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":358,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-07-29"},{"lineNumber":359,"author":{"gitId":"-"},"content":" * Generates a command execution success message based on whether","lastModifiedDate":"2021-08-01"},{"lineNumber":360,"author":{"gitId":"-"},"content":" * the remark is added to or removed from","lastModifiedDate":"2021-08-01"},{"lineNumber":361,"author":{"gitId":"jskimdev"},"content":" * {@code patientToEdit}.","lastModifiedDate":"2024-03-19"},{"lineNumber":362,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":363,"author":{"gitId":"jskimdev"},"content":" private String generateSuccessMessage(Person patientToEdit) {","lastModifiedDate":"2024-03-19"},{"lineNumber":364,"author":{"gitId":"-"},"content":" String message \u003d !remark.value.isEmpty() ? MESSAGE_ADD_REMARK_SUCCESS : MESSAGE_DELETE_REMARK_SUCCESS;","lastModifiedDate":"2020-07-29"},{"lineNumber":365,"author":{"gitId":"jskimdev"},"content":" return String.format(message, patientToEdit);","lastModifiedDate":"2024-03-19"},{"lineNumber":366,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":367,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":368,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":369,"author":{"gitId":"-"},"content":"![Congratulations!](../images/add-remark/RemarkComplete.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":370,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":371,"author":{"gitId":"-"},"content":"## Writing tests","lastModifiedDate":"2020-07-29"},{"lineNumber":372,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":373,"author":{"gitId":"-"},"content":"Tests are crucial to ensuring that bugs don’t slip into the codebase unnoticed. This is especially true for large code bases where a change might lead to unintended behavior.","lastModifiedDate":"2020-07-29"},{"lineNumber":374,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":375,"author":{"gitId":"-"},"content":"Let’s verify the correctness of our code by writing some tests!","lastModifiedDate":"2020-07-29"},{"lineNumber":376,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":377,"author":{"gitId":"-"},"content":"Of course you can simply add the test cases manually, like you\u0027ve been doing all along this tutorial. The result would be like the test cases in [here](https://github.com/se-edu/addressbook-level3/commit/fac8f3fd855d55831ca0cc73313b5943d49d4d6e#diff-ff58f7c10338b34f76645df49b71ecb2bafaf7611b20e7ff59ebc98475538a01). Alternatively, you can get the help of IntelliJ to generate the skeletons of the test cases, as explained in the next section.","lastModifiedDate":"2022-01-02"},{"lineNumber":378,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-08-01"},{"lineNumber":379,"author":{"gitId":"-"},"content":"### Automatically generating tests","lastModifiedDate":"2020-07-29"},{"lineNumber":380,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":381,"author":{"gitId":"-"},"content":"The goal is to write effective and efficient tests to ensure that `RemarkCommand#execute()` behaves as expected.","lastModifiedDate":"2020-07-29"},{"lineNumber":382,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":383,"author":{"gitId":"-"},"content":"The convention for test names is `methodName_testScenario_expectedResult`. An example would be","lastModifiedDate":"2020-07-29"},{"lineNumber":384,"author":{"gitId":"-"},"content":"`execute_filteredList_success`.","lastModifiedDate":"2020-07-29"},{"lineNumber":385,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":386,"author":{"gitId":"-"},"content":"Let’s create a test for `RemarkCommand#execute()` to test that adding a remark works. On `IntelliJ IDEA` you can bring up the context menu and choose to `Go To` \\\u003e `Test` or use the appropriate keyboard shortcut.","lastModifiedDate":"2020-07-29"},{"lineNumber":387,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":388,"author":{"gitId":"-"},"content":"![Using the context menu to jump to tests](../images/add-remark/ContextMenu.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":389,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":390,"author":{"gitId":"-"},"content":"Then, create a test for the `execute` method.","lastModifiedDate":"2020-07-29"},{"lineNumber":391,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":392,"author":{"gitId":"-"},"content":"![Creating a test for `execute`.](../images/add-remark/CreateTest.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":393,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":394,"author":{"gitId":"-"},"content":"Following convention, let’s change the name of the generated method to `execute_addRemarkUnfilteredList_success`.","lastModifiedDate":"2020-07-29"},{"lineNumber":395,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":396,"author":{"gitId":"-"},"content":"Let’s use the utility functions provided in `CommandTestUtil`. The functions ensure that commands produce the expected `CommandResult` and output the correct message. In this case, `CommandTestUtil#assertCommandSuccess` is the best fit as we are testing that a `RemarkCommand` will successfully add a `Remark`.","lastModifiedDate":"2020-07-29"},{"lineNumber":397,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":398,"author":{"gitId":"-"},"content":"You should end up with a test that looks something like [this](https://github.com/se-edu/addressbook-level3/commit/fac8f3fd855d55831ca0cc73313b5943d49d4d6e#diff-ff58f7c10338b34f76645df49b71ecb2bafaf7611b20e7ff59ebc98475538a01R36-R49).","lastModifiedDate":"2022-01-02"},{"lineNumber":399,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":400,"author":{"gitId":"-"},"content":"## Conclusion","lastModifiedDate":"2020-07-29"},{"lineNumber":401,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":402,"author":{"gitId":"-"},"content":"This concludes the tutorial for adding a new `Command` to AddressBook.","lastModifiedDate":"2020-07-29"}],"authorContributionMap":{"jskimdev":19,"-":383}},{"path":"docs/tutorials/RemovingFields.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"Tutorial: Removing Fields\"","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"# Tutorial: Removing Fields","lastModifiedDate":"2023-09-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003e Perfection is achieved, not when there is nothing more to add, but when there is nothing left to take away.","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003e — Antoine de Saint-Exupery","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"When working on an existing code base, you will most likely find that some features that are no longer necessary.","lastModifiedDate":"2021-08-01"},{"lineNumber":14,"author":{"gitId":"-"},"content":"This tutorial aims to give you some practice on such a code \u0027removal\u0027 activity by removing the `address` field from `Person` class.","lastModifiedDate":"2021-08-01"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-08-01"},{"lineNumber":16,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"success\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-08-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":"**If you have done the [Add `remark` command tutorial](AddRemark.html) already**, you should know where the code had to be updated to add the field `remark`. From that experience, you can deduce where the code needs to be changed to _remove_ that field too. The removing of the `address` field can be done similarly.","lastModifiedDate":"2021-08-01"},{"lineNumber":19,"author":{"gitId":"-"},"content":"\u003cbr\u003e","lastModifiedDate":"2021-08-01"},{"lineNumber":20,"author":{"gitId":"-"},"content":"\u003cbr\u003e","lastModifiedDate":"2021-08-01"},{"lineNumber":21,"author":{"gitId":"-"},"content":"However, if you have no such prior knowledge, removing a field can take a quite a bit of detective work. This tutorial takes you through that process. **At least have a read even if you don\u0027t actually do the steps yourself.**","lastModifiedDate":"2021-08-01"},{"lineNumber":22,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":"\u003c!-- {:toc} --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":"## Safely deleting `Address`","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"IntelliJ IDEA provides a refactoring tool that can identify *most* parts of a removal easily. Let’s try to use it as much as we can.","lastModifiedDate":"2021-08-01"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":"### Assisted refactoring","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"jskimdev"},"content":"The `address` field in `Person` is actually an instance of the `seedu.address.model.patient.Address` class. Since removing the `Address` class will break the application, we start by identifying `Address`\u0027s usages. This allows us to see code that depends on `Address` to function properly and edit them on a case-by-case basis. Right-click the `Address` class and select `Refactor` \\\u003e `Safe Delete` through the menu.","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":"* :bulb: To make things simpler, you can unselect the options `Search in comments and strings` and `Search for text occurrences`","lastModifiedDate":"2021-08-01"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":"![Usages detected](../images/remove/UnsafeDelete.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"Choose to `View Usages` and you should be presented with a list of `Safe Delete Conflicts`. These conflicts describe locations in which the `Address` class is used.","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"![List of conflicts](../images/remove/SafeDeleteConflicts.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"Remove usages of `Address` by performing `Safe Delete`s on each entry i.e., double-click on the entry (which takes you to the code in concern, right-click on that entity, and choose `Refactor` -\u003e `Safe delete` as before). You will need to exercise discretion when removing usages of `Address`. Functions like `ParserUtil#parseAddress()` can be safely removed but its usages must be removed as well. Other usages like in `EditPersonDescriptor` may require more careful inspection.","lastModifiedDate":"2021-08-01"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"Let’s try removing references to `Address` in `EditPersonDescriptor`.","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"1. Safe delete the field `address` in `EditPersonDescriptor`.","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"1. Select `Yes` when prompted to remove getters and setters.","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"1. Select `View Usages` again.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" ![UnsafeDeleteOnField](../images/remove/UnsafeDeleteOnField.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"1. Remove the usages of `address` and select `Do refactor` when you are done.","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" **Tip:** Removing usages may result in errors. Exercise discretion and fix them. For example, removing the `address` field from the `Person` class will require you to modify its constructor.","lastModifiedDate":"2023-09-12"},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"1. Repeat the steps for the remaining usages of `Address`","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":"After you are done, verify that the application still works by compiling and running it again.","lastModifiedDate":"2020-05-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":"### Manual refactoring","lastModifiedDate":"2020-05-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"Unfortunately, there are usages of `Address` that IntelliJ IDEA cannot identify. You can find them by searching for instances of the word `address` in your code (`Edit` \\\u003e `Find` \\\u003e `Find in path`).","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"Places of interest to look out for would be resources used by the application. `main/resources` contains images and `fxml` files used by the application and `test/resources` contains test data. For example, there is a `$address` in each `PersonCard` that has not been removed nor identified.","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"![$address](../images/remove/$address.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"A quick look at the `PersonCard` class and its `fxml` file quickly reveals why it slipped past the automated refactoring.","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"**`PersonCard.java`**","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"@FXML","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"private Label address;","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"**`PersonCard.fxml`**","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"``` xml","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"\u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"\u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" /\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":"\u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":"After removing the `Label`, we can proceed to formally test our code. If everything went well, you should have most of your tests pass. Fix any remaining errors until the tests all pass.","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"## Tidying up","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"At this point, your application is working as intended and all your tests are passing. What’s left to do is to clean up references to `Address` in test data and documentation.","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"In `src/test/data/`, data meant for testing purposes are stored. While keeping the `address` field in the json files does not cause the tests to fail, it is not good practice to let cruft from old features accumulate.","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"**`invalidPersonAddressBook.json`:**","lastModifiedDate":"2020-05-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":"```json","lastModifiedDate":"2020-05-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":"{","lastModifiedDate":"2020-05-23"},{"lineNumber":106,"author":{"gitId":"jskimdev"},"content":" \"patients\": [ {","lastModifiedDate":"2024-03-19"},{"lineNumber":107,"author":{"gitId":"-"},"content":" \"name\": \"Person with invalid name field: Ha!ns Mu@ster\",","lastModifiedDate":"2020-05-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":" \"phone\": \"9482424\",","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":" \"email\": \"hans@example.com\",","lastModifiedDate":"2020-05-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":" \"address\": \"4th street\"","lastModifiedDate":"2020-05-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":" } ]","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":"You can go through each individual `json` file and manually remove the `address` field.","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"jskimdev":2,"-":113}},{"path":"docs/tutorials/TracingCode.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"Tutorial: Tracing code\"","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"# Tutorial: Tracing code","lastModifiedDate":"2023-09-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003e Indeed, the ratio of time spent reading versus writing is well over 10 to 1. We are constantly reading old code as part of the effort to write new code. …​\\[Therefore,\\] making it easy to read makes it easier to write.","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003e — Robert C. Martin Clean Code: A Handbook of Agile Software Craftsmanship","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"When trying to understand an unfamiliar code base, one common strategy used is to trace some representative execution path through the code base. One easy way to trace an execution path is to use a debugger to step through the code. In this tutorial, you will be using the IntelliJ IDEA’s debugger to trace the execution path of a specific user command.","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"\u003c!-- {:toc} --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"## Before we start","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"Before we jump into the code, it is useful to get an idea of the overall structure and the high-level behavior of the application. This is provided in the \u0027Architecture\u0027 section of the developer guide. In particular, the architecture diagram (reproduced below), tells us that the App consists of several components.","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"../diagrams/ArchitectureDiagram.puml\" alt\u003d\"ArchitectureDiagram\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"It also has a sequence diagram (reproduced below) that tells us how a command propagates through the App.","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"../diagrams/ArchitectureSequenceDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"Note how the diagram shows only the execution flows _between_ the main components. That is, it does not show details of the execution path *inside* each component. By hiding those details, the diagram aims to inform the reader about the overall execution path of a command without overwhelming the reader with too much details. In this tutorial, you aim to find those omitted details so that you get a more in-depth understanding of how the code works.","lastModifiedDate":"2021-07-31"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":"Before we proceed, ensure that you have done the following:","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":"1. Read the [*Architecture* section of the DG](../DeveloperGuide.md#architecture)","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":"1. Set up the project in Intellij IDEA","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":"1. Learn basic debugging features of Intellij IDEA","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * If you are using a different IDE, we\u0027ll leave it to you to figure out the equivalent feature to use in your IDE.","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * If you are not using an IDE, we\u0027ll let you figure out how to achieve the same using your coding toolchain.","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"## Setting a breakpoint","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"As you know, the first step of debugging is to put in a breakpoint where you want the debugger to pause the execution. For example, if you are trying to understand how the App starts up, you would put a breakpoint in the first statement of the `main` method.","lastModifiedDate":"2021-07-31"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"In our case, we would want to begin the tracing at the very point where the App start processing user input (i.e., somewhere in the UI component), and then trace through how the execution proceeds through the UI component. However, the execution path through a GUI is often somewhat obscure due to various *event-driven mechanisms* used by GUI frameworks, which happens to be the case here too. Therefore, let us put the breakpoint where the `UI` transfers control to the `Logic` component.","lastModifiedDate":"2021-07-31"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"../diagrams/ArchitectureSequenceDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":46,"author":{"gitId":"-"},"content":"According to the sequence diagram you saw earlier (and repeated above for reference), the `UI` component yields control to the `Logic` component through a method named `execute`. Searching through the code base for an `execute()` method that belongs to the `Logic` component yields a promising candidate in `seedu.address.logic.Logic`.","lastModifiedDate":"2021-07-31"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":48,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"../images/tracing/searchResultsForExecuteMethod.png\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":50,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":52,"author":{"gitId":"-"},"content":"**Intellij Tip:** The [\u0027**Search Everywhere**\u0027 feature](https://www.jetbrains.com/help/idea/searching-everywhere.html) can be used here. In particular, the \u0027**Find Symbol**\u0027 (\u0027Symbol\u0027 here refers to methods, variables, classes etc.) variant of that feature is quite useful here as we are looking for a _method_ named `execute`, not simply the text `execute`.","lastModifiedDate":"2023-09-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":55,"author":{"gitId":"-"},"content":"A quick look at the `seedu.address.logic.Logic` (an extract given below) confirms that this indeed might be what we’re looking for.","lastModifiedDate":"2021-07-31"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":57,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2021-07-31"},{"lineNumber":58,"author":{"gitId":"-"},"content":"public interface Logic {","lastModifiedDate":"2021-07-31"},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2021-07-31"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2021-07-31"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * @param commandText The command as entered by the user.","lastModifiedDate":"2021-07-31"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * @return the result of the command execution.","lastModifiedDate":"2021-07-31"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2021-07-31"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * @throws ParseException If an error occurs during parsing.","lastModifiedDate":"2021-07-31"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2021-07-31"},{"lineNumber":66,"author":{"gitId":"-"},"content":" CommandResult execute(String commandText) throws CommandException, ParseException;","lastModifiedDate":"2021-07-31"},{"lineNumber":67,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2021-07-31"},{"lineNumber":68,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-07-31"},{"lineNumber":69,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2021-07-31"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":71,"author":{"gitId":"-"},"content":"But apparently, this is an interface, not a concrete implementation.","lastModifiedDate":"2021-07-31"},{"lineNumber":72,"author":{"gitId":"-"},"content":"That should be fine because the [Architecture section of the Developer Guide](../DeveloperGuide.html#architecture) tells us that components interact through interfaces. Here\u0027s the relevant diagram:","lastModifiedDate":"2021-07-31"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":74,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"../diagrams/ComponentManagers.puml\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":76,"author":{"gitId":"-"},"content":"Next, let\u0027s find out which statement(s) in the `UI` code is calling this method, thus transferring control from the `UI` to the `Logic`.","lastModifiedDate":"2021-07-31"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":78,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":80,"author":{"gitId":"-"},"content":"**Intellij Tip:** The [\u0027**Find Usages**\u0027 feature](https://www.jetbrains.com/help/idea/find-highlight-usages.html#find-usages) can find from which parts of the code a class/method/variable is being used.","lastModifiedDate":"2023-09-12"},{"lineNumber":81,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"![`Find Usages` tool window. `Edit` \\\u003e `Find` \\\u003e `Find Usages`.](../images/tracing/FindUsages.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"Bingo\\! `MainWindow#executeCommand()` seems to be exactly what we’re looking for\\!","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"Now let’s set the breakpoint. First, double-click the item to reach the corresponding code. Once there, click on the left gutter to set a breakpoint, as shown below.","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" ![LeftGutter](../images/tracing/LeftGutter.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":"## Tracing the execution path","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":"Recall from the User Guide that the `edit` command has the format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAG]…​` For this tutorial we will be issuing the command `edit 1 n/Alice Yeoh`.","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"**Tip:** Over the course of the debugging session, you will encounter every major component in the application. Try to keep track of what happens inside the component and where the execution transfers to another component.","lastModifiedDate":"2023-09-12"},{"lineNumber":97,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"1. To start the debugging session, simply `Run` \\\u003e `Debug Main`","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"1. When the GUI appears, enter `edit 1 n/Alice Yeoh` into the command box and press `Enter`.","lastModifiedDate":"2021-07-31"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":"1. The Debugger tool window should show up and show something like this:\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":104,"author":{"gitId":"-"},"content":" ![DebuggerStep1](../images/tracing/DebuggerStep1.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":"1. Use the _Show execution point_ feature to jump to the line of code that we stopped at:\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":107,"author":{"gitId":"-"},"content":" ![ShowExecutionPoint](../images/tracing/ShowExecutionPoint.png)\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":108,"author":{"gitId":"-"},"content":" `CommandResult commandResult \u003d logic.execute(commandText);` is the line that you end up at (i.e., the place where we put the breakpoint).","lastModifiedDate":"2021-07-31"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":"1. We are interested in the `logic.execute(commandText)` portion of that line so let’s _Step in_ into that method call:\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":111,"author":{"gitId":"-"},"content":" ![StepInto](../images/tracing/StepInto.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":"1. We end up in `LogicManager#execute()` (not `Logic#execute` -- but this is expected because we know the `execute()` method in the `Logic` interface is actually implemented by the `LogicManager` class). Let’s take a look at the body of the method. Given below is the same code, with additional explanatory comments.","lastModifiedDate":"2021-07-31"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":" **LogicManager\\#execute().**","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":" ```java","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":" public CommandResult execute(String commandText)","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":" throws CommandException, ParseException {","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":" //Logging, safe to ignore","lastModifiedDate":"2020-05-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":" logger.info(\"----------------[USER COMMAND][\" + commandText + \"]\");","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":" CommandResult commandResult;","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":" //Parse user input from String to a Command","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":" Command command \u003d addressBookParser.parseCommand(commandText);","lastModifiedDate":"2020-05-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":" //Executes the Command and stores the result","lastModifiedDate":"2020-05-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":" commandResult \u003d command.execute(model);","lastModifiedDate":"2020-05-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2020-05-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":" //We can deduce that the previous line of code modifies model in some way","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":" // since it\u0027s being stored here.","lastModifiedDate":"2020-05-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":" storage.saveAddressBook(model.getAddressBook());","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2020-05-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":" throw new CommandException(FILE_OPS_ERROR_MESSAGE + ioe, ioe);","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":"1. `LogicManager#execute()` appears to delegate most of the heavy lifting to other components. Let’s take a closer look at each one.","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":"1. _Step over_ the logging code since it is of no interest to us now.","lastModifiedDate":"2021-07-31"},{"lineNumber":146,"author":{"gitId":"-"},"content":" ![StepOver](../images/tracing/StepOver.png)","lastModifiedDate":"2021-07-31"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":"1. _Step into_ the line where user input in parsed from a String to a Command, which should bring you to the `AddressBookParser#parseCommand()` method (partial code given below):","lastModifiedDate":"2021-07-31"},{"lineNumber":149,"author":{"gitId":"-"},"content":" ```java","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"1. _Step over_ the statements in that method until you reach the `switch` statement. The \u0027Variables\u0027 window now shows the value of both `commandWord` and `arguments`:\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":158,"author":{"gitId":"-"},"content":" ![Variables](../images/tracing/Variables.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"1. We see that the value of `commandWord` is now `edit` but `arguments` is still not processed in any meaningful way.","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":"1. Stepping through the `switch` block, we end up at a call to `EditCommandParser().parse()` as expected (because the command we typed is an edit command).","lastModifiedDate":"2021-07-31"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":" ```java","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":"1. Let’s see what `EditCommandParser#parse()` does by stepping into it. You might have to click the \u0027step into\u0027 button multiple times here because there are two method calls in that statement: `EditCommandParser()` and `parse()`.","lastModifiedDate":"2021-07-31"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":" \u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":175,"author":{"gitId":"-"},"content":" **Intellij Tip:** Sometimes, you might end up stepping into functions that are not of interest. Simply use the `step out` button to get out of them!","lastModifiedDate":"2023-09-12"},{"lineNumber":176,"author":{"gitId":"-"},"content":" \u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":"1. Stepping through the method shows that it calls `ArgumentTokenizer#tokenize()` and `ParserUtil#parseIndex()` to obtain the arguments and index required.","lastModifiedDate":"2021-07-31"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":180,"author":{"gitId":"-"},"content":"1. The rest of the method seems to exhaustively check for the existence of each possible parameter of the `edit` command and store any possible changes in an `EditPersonDescriptor`. Recall that we can verify the contents of `editPersonDesciptor` through the \u0027Variables\u0027 window.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":181,"author":{"gitId":"-"},"content":" ![EditCommand](../images/tracing/EditCommand.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"1. As you just traced through some code involved in parsing a command, you can take a look at this class diagram to see where the various parsing-related classes you encountered fit into the design of the `Logic` component.","lastModifiedDate":"2021-07-31"},{"lineNumber":184,"author":{"gitId":"-"},"content":" \u003cpuml src\u003d\"../diagrams/ParserClasses.puml\" width\u003d\"600\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":186,"author":{"gitId":"-"},"content":"1. Let’s continue stepping through until we return to `LogicManager#execute()`.","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":" The sequence diagram below shows the details of the execution path through the Logic component. Does the execution path you traced in the code so far match the diagram?\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":189,"author":{"gitId":"-"},"content":" \u003cpuml src\u003d\"../diagrams/tracing/LogicSequenceDiagram.puml\" alt\u003d\"Tracing an `edit` command through the Logic component\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":"1. Now, step over until you read the statement that calls the `execute()` method of the `EditCommand` object received, and step into that `execute()` method (partial code given below):","lastModifiedDate":"2021-07-31"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":" **`EditCommand#execute()`:**","lastModifiedDate":"2021-07-31"},{"lineNumber":194,"author":{"gitId":"-"},"content":" ```java","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-05-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2020-05-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2020-05-23"},{"lineNumber":198,"author":{"gitId":"jskimdev"},"content":" Person patientToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-03-19"},{"lineNumber":199,"author":{"gitId":"jskimdev"},"content":" Person editedPatient \u003d createEditedPerson(patientToEdit, editPersonDescriptor);","lastModifiedDate":"2024-03-19"},{"lineNumber":200,"author":{"gitId":"jskimdev"},"content":" if (!patientToEdit.isSamePerson(editedPatient) \u0026\u0026 model.hasPerson(editedPatient)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":201,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"jskimdev"},"content":" model.setPerson(patientToEdit, editedPatient);","lastModifiedDate":"2024-03-19"},{"lineNumber":204,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"jskimdev"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, editedPatient));","lastModifiedDate":"2024-03-19"},{"lineNumber":206,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-23"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":209,"author":{"gitId":"-"},"content":"1. As suspected, `command#execute()` does indeed make changes to the `model` object. Specifically,","lastModifiedDate":"2021-07-31"},{"lineNumber":210,"author":{"gitId":"jskimdev"},"content":" * it uses the `setPerson()` method (defined in the interface `Model` and implemented in `ModelManager` as per the usual pattern) to update the patient data.","lastModifiedDate":"2024-03-19"},{"lineNumber":211,"author":{"gitId":"jskimdev"},"content":" * it uses the `updateFilteredPersonList` method to ask the `Model` to populate the \u0027filtered list\u0027 with _all_ patients.\u003cbr\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":212,"author":{"gitId":"jskimdev"},"content":" FYI, The \u0027filtered list\u0027 is the list of patients resulting from the most recent operation that will be shown to the user immediately after. For the `edit` command, we populate it with all the patients so that the user can see the edited patient along with all other patients. If this was a `find` command, we would be setting that list to contain the search results instead.\u003cbr\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":213,"author":{"gitId":"jskimdev"},"content":" To provide some context, given below is the class diagram of the `Model` component. See if you can figure out where the \u0027filtered list\u0027 of patients is being tracked.","lastModifiedDate":"2024-03-19"},{"lineNumber":214,"author":{"gitId":"-"},"content":" \u003cpuml src\u003d\"../diagrams/ModelClassDiagram.puml\" width\u003d\"450\" /\u003e\u003cbr\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":215,"author":{"gitId":"-"},"content":" * :bulb: This may be a good time to read through the [`Model` component section of the DG](../DeveloperGuide.html#model-component)","lastModifiedDate":"2021-07-31"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":217,"author":{"gitId":"-"},"content":"1. As you step through the rest of the statements in the `EditCommand#execute()` method, you\u0027ll see that it creates a `CommandResult` object (containing information about the result of the execution) and returns it.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":218,"author":{"gitId":"-"},"content":" Advancing the debugger by one more step should take you back to the middle of the `LogicManager#execute()` method.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":220,"author":{"gitId":"-"},"content":"1. Given that you have already seen quite a few classes in the `Logic` component in action, see if you can identify in this partial class diagram some of the classes you\u0027ve encountered so far, and see how they fit into the class structure of the `Logic` component:","lastModifiedDate":"2021-07-31"},{"lineNumber":221,"author":{"gitId":"-"},"content":" \u003cpuml src\u003d\"../diagrams/LogicClassDiagram.puml\" width\u003d\"550\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":223,"author":{"gitId":"-"},"content":" * :bulb: This may be a good time to read through the [`Logic` component section of the DG](../DeveloperGuide.html#logic-component)","lastModifiedDate":"2021-07-31"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":"1. Similar to before, you can step over/into statements in the `LogicManager#execute()` method to examine how the control is transferred to the `Storage` component and what happens inside that component.","lastModifiedDate":"2021-07-31"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":227,"author":{"gitId":"-"},"content":" \u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":229,"author":{"gitId":"-"},"content":" **Intellij Tip:** When trying to step into a statement such as `storage.saveAddressBook(model.getAddressBook())` which contains multiple method calls, Intellij will let you choose (by clicking) which one you want to step into.","lastModifiedDate":"2023-09-12"},{"lineNumber":230,"author":{"gitId":"-"},"content":" \u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":"1. As you step through the code inside the `Storage` component, you will eventually arrive at the `JsonAddressBook#saveAddressBook()` method which calls the `JsonSerializableAddressBook` constructor, to create an object that can be _serialized_ (i.e., stored in storage medium) in JSON format. That constructor is given below (with added line breaks for easier readability):","lastModifiedDate":"2021-07-31"},{"lineNumber":233,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":234,"author":{"gitId":"-"},"content":" **`JsonSerializableAddressBook` constructor:**","lastModifiedDate":"2021-07-31"},{"lineNumber":235,"author":{"gitId":"-"},"content":" ```java","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":" * Converts a given {@code ReadOnlyAddressBook} into this class for Jackson use.","lastModifiedDate":"2020-05-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":" * @param source future changes to this will not affect the created","lastModifiedDate":"2020-05-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":" * {@code JsonSerializableAddressBook}.","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":" public JsonSerializableAddressBook(ReadOnlyAddressBook source) {","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"jskimdev"},"content":" patients.addAll(","lastModifiedDate":"2024-03-19"},{"lineNumber":244,"author":{"gitId":"-"},"content":" source.getPersonList()","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":" .stream()","lastModifiedDate":"2020-05-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":" .map(JsonAdaptedPerson::new)","lastModifiedDate":"2020-05-23"},{"lineNumber":247,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2020-05-23"},{"lineNumber":248,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":249,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-23"},{"lineNumber":250,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":"1. It appears that a `JsonAdaptedPerson` is created for each `Person` and then added to the `JsonSerializableAddressBook`.","lastModifiedDate":"2020-05-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":" This is because regular Java objects need to go through an _adaptation_ for them to be suitable to be saved in JSON format.","lastModifiedDate":"2021-07-31"},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":254,"author":{"gitId":"-"},"content":"1. While you are stepping through the classes in the `Storage` component, here is the component\u0027s class diagram to help you understand how those classes fit into the structure of the component.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":255,"author":{"gitId":"-"},"content":" \u003cpuml src\u003d\"../diagrams/StorageClassDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":256,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":257,"author":{"gitId":"-"},"content":" * :bulb: This may be a good time to read through the [`Storage` component section of the DG](../DeveloperGuide.html#storage-component)","lastModifiedDate":"2021-07-31"},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":259,"author":{"gitId":"-"},"content":"1. We can continue to step through until you reach the end of the `LogicManager#execute()` method and return to the `MainWindow#executeCommand()` method (the place where we put the original breakpoint).","lastModifiedDate":"2021-07-31"},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":"1. Stepping into `resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser());`, we end up in:","lastModifiedDate":"2021-07-31"},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":" **`ResultDisplay#setFeedbackToUser()`**","lastModifiedDate":"2021-07-31"},{"lineNumber":264,"author":{"gitId":"-"},"content":" ```java","lastModifiedDate":"2020-05-23"},{"lineNumber":265,"author":{"gitId":"-"},"content":" public void setFeedbackToUser(String feedbackToUser) {","lastModifiedDate":"2020-05-23"},{"lineNumber":266,"author":{"gitId":"-"},"content":" requireNonNull(feedbackToUser);","lastModifiedDate":"2020-05-23"},{"lineNumber":267,"author":{"gitId":"-"},"content":" resultDisplay.setText(feedbackToUser);","lastModifiedDate":"2020-05-23"},{"lineNumber":268,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":269,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-23"},{"lineNumber":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":271,"author":{"gitId":"-"},"content":"1. Finally, you can step through until you reach the end of`MainWindow#executeCommand()`.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":272,"author":{"gitId":"-"},"content":" :bulb: This may be a good time to read through the [`UI` component section of the DG](../DeveloperGuide.html#ui-component)","lastModifiedDate":"2021-07-31"},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":275,"author":{"gitId":"-"},"content":"## Conclusion","lastModifiedDate":"2020-05-23"},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":277,"author":{"gitId":"-"},"content":"In this tutorial, we traced a valid edit command from raw user input to the result being displayed to the user. From this tutorial, you learned more about how the various components work together to produce a response to a user command.","lastModifiedDate":"2021-07-31"},{"lineNumber":278,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":279,"author":{"gitId":"-"},"content":"Here are some quick questions you can try to answer based on your execution path tracing. In some cases, you can do further tracing for the given commands to find exactly what happens.","lastModifiedDate":"2021-07-31"},{"lineNumber":280,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":281,"author":{"gitId":"-"},"content":"1. In this tutorial, we traced the \"happy path\" (i.e., no errors). What","lastModifiedDate":"2020-05-23"},{"lineNumber":282,"author":{"gitId":"-"},"content":" do you think will happen if we traced the following commands","lastModifiedDate":"2020-05-23"},{"lineNumber":283,"author":{"gitId":"-"},"content":" instead? What exceptions do you think will be thrown (if any), where","lastModifiedDate":"2020-05-23"},{"lineNumber":284,"author":{"gitId":"-"},"content":" will the exceptions be thrown and where will they be handled?","lastModifiedDate":"2020-05-23"},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":286,"author":{"gitId":"-"},"content":" 1. `redit 1 n/Alice Yu`","lastModifiedDate":"2020-05-23"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":288,"author":{"gitId":"-"},"content":" 2. `edit 0 n/Alice Yu`","lastModifiedDate":"2020-05-23"},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":290,"author":{"gitId":"-"},"content":" 3. `edit 1 n/Alex Yeoh`","lastModifiedDate":"2020-05-23"},{"lineNumber":291,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":292,"author":{"gitId":"-"},"content":" 4. `edit 1`","lastModifiedDate":"2020-05-23"},{"lineNumber":293,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":294,"author":{"gitId":"-"},"content":" 5. `edit 1 n/アリス ユー`","lastModifiedDate":"2020-05-23"},{"lineNumber":295,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":296,"author":{"gitId":"-"},"content":" 6. `edit 1 t/one t/two t/three t/one`","lastModifiedDate":"2020-05-23"},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":298,"author":{"gitId":"-"},"content":"2. What components will you have to modify to perform the following","lastModifiedDate":"2020-05-23"},{"lineNumber":299,"author":{"gitId":"-"},"content":" enhancements to the application?","lastModifiedDate":"2020-05-23"},{"lineNumber":300,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":301,"author":{"gitId":"-"},"content":" 1. Make command words case-insensitive","lastModifiedDate":"2020-05-23"},{"lineNumber":302,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":303,"author":{"gitId":"-"},"content":" 2. Allow `delete` to remove more than one index at a time","lastModifiedDate":"2020-05-23"},{"lineNumber":304,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":305,"author":{"gitId":"-"},"content":" 3. Save the address book in the CSV format instead","lastModifiedDate":"2020-05-23"},{"lineNumber":306,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":307,"author":{"gitId":"-"},"content":" 4. Add a new command","lastModifiedDate":"2020-05-23"},{"lineNumber":308,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":309,"author":{"gitId":"-"},"content":" 5. Add a new field to `Person`","lastModifiedDate":"2020-05-23"},{"lineNumber":310,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":311,"author":{"gitId":"-"},"content":" 6. Add a new entity to the address book","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"jskimdev":10,"-":301}},{"path":"src/main/java/seedu/address/logic/Logic.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-03"},{"lineNumber":11,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * API of the Logic component","lastModifiedDate":"2016-09-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public interface Logic {","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2016-09-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * @param commandText The command as entered by the user.","lastModifiedDate":"2016-09-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * @return the result of the command execution.","lastModifiedDate":"2016-09-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2017-02-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * @throws ParseException If an error occurs during parsing.","lastModifiedDate":"2017-03-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" CommandResult execute(String commandText) throws CommandException, ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Returns the AddressBook.","lastModifiedDate":"2018-12-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * @see seedu.address.model.Model#getAddressBook()","lastModifiedDate":"2018-12-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2018-12-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":" /** Returns an unmodifiable view of the filtered list of persons */","lastModifiedDate":"2017-09-01"},{"lineNumber":34,"author":{"gitId":"jskimdev"},"content":" ObservableList\u003cPatient\u003e getFilteredPersonList();","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-26"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Set the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"jskimdev":2,"-":48}},{"path":"src/main/java/seedu/address/logic/LogicManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2016-09-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.AddressBookParser;","lastModifiedDate":"2017-07-07"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-03"},{"lineNumber":18,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.storage.Storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * The main LogicManager of the app.","lastModifiedDate":"2016-09-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class LogicManager implements Logic {","lastModifiedDate":"2018-12-09"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_ERROR_FORMAT \u003d \"Could not save data due to the following error: %s\";","lastModifiedDate":"2023-06-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_PERMISSION_ERROR_FORMAT \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \"Could not save data to file %s due to insufficient permissions to write to the file or the folder.\";","lastModifiedDate":"2023-06-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(LogicManager.class);","lastModifiedDate":"2016-09-29"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final Model model;","lastModifiedDate":"2016-09-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final Storage storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final AddressBookParser addressBookParser;","lastModifiedDate":"2017-07-07"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Constructs a {@code LogicManager} with the given {@code Model} and {@code Storage}.","lastModifiedDate":"2020-05-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public LogicManager(Model model, Storage storage) {","lastModifiedDate":"2018-12-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.model \u003d model;","lastModifiedDate":"2016-09-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.storage \u003d storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":" addressBookParser \u003d new AddressBookParser();","lastModifiedDate":"2018-01-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public CommandResult execute(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":47,"author":{"gitId":"-"},"content":" logger.info(\"----------------[USER COMMAND][\" + commandText + \"]\");","lastModifiedDate":"2016-09-29"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":" CommandResult commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":" Command command \u003d addressBookParser.parseCommand(commandText);","lastModifiedDate":"2017-07-07"},{"lineNumber":51,"author":{"gitId":"-"},"content":" commandResult \u003d command.execute(model);","lastModifiedDate":"2019-01-25"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":" storage.saveAddressBook(model.getAddressBook());","lastModifiedDate":"2018-12-09"},{"lineNumber":55,"author":{"gitId":"-"},"content":" } catch (AccessDeniedException e) {","lastModifiedDate":"2023-06-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_PERMISSION_ERROR_FORMAT, e.getMessage()), e);","lastModifiedDate":"2023-06-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2018-12-09"},{"lineNumber":58,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_ERROR_FORMAT, ioe.getMessage()), ioe);","lastModifiedDate":"2023-06-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-03"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2018-12-03"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return model.getAddressBook();","lastModifiedDate":"2018-12-03"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-03"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":70,"author":{"gitId":"jskimdev"},"content":" public ObservableList\u003cPatient\u003e getFilteredPersonList() {","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return model.getFilteredPersonList();","lastModifiedDate":"2016-09-25"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-29"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return model.getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":" return model.getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":" model.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"jskimdev":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"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-07-14"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-07-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2023-07-14"},{"lineNumber":8,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Container for user visible messages.","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class Messages {","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2016-09-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"jskimdev"},"content":" public static final String MESSAGE_INVALID_PERSON_DISPLAYED_INDEX \u003d \"The patient index provided is invalid\";","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String MESSAGE_PERSONS_LISTED_OVERVIEW \u003d \"%1$d persons listed!\";","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2023-07-14"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-07-14"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2023-07-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2023-07-14"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":28,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":29,"author":{"gitId":"-"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-07-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":31,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23"},{"lineNumber":35,"author":{"gitId":"jskimdev"},"content":" * Formats the {@code patient} for display to the user.","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23"},{"lineNumber":37,"author":{"gitId":"jskimdev"},"content":" public static String format(Patient patient) {","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23"},{"lineNumber":39,"author":{"gitId":"jskimdev"},"content":" builder.append(patient.getName())","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":" .append(\"; Phone: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"jskimdev"},"content":" .append(patient.getPhone())","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":" .append(\"; Email: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"jskimdev"},"content":" .append(patient.getEmail())","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"-"},"content":" .append(\"; Address: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"jskimdev"},"content":" .append(patient.getAddress())","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"jskimdev"},"content":" .append(\"; Date Of birth: \")","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"Vision-2000"},"content":" .append(patient.getDateOfBirth())","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"Vision-2000"},"content":" .append(\"; Sex: \")","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"Vision-2000"},"content":" .append(patient.getSex());","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"jskimdev":9,"-":41,"Vision-2000":3}},{"path":"src/main/java/seedu/address/logic/commands/AddCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DATEOFBIRTH;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SEX;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":15,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"jskimdev"},"content":" * Adds a patient to the address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"add\";","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"jskimdev"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a patient to the address book. \"","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2017-06-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2017-06-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2017-05-09"},{"lineNumber":28,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2017-05-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"ADDRESS \"","lastModifiedDate":"2017-05-09"},{"lineNumber":30,"author":{"gitId":"jskimdev"},"content":" + PREFIX_DATEOFBIRTH + \"DATE OF BIRTH \"","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"jskimdev"},"content":" + PREFIX_SEX + \"Sex \\n\"","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2017-06-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2017-05-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"311, Clementi Ave 2, #02-25 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":37,"author":{"gitId":"jskimdev"},"content":" + PREFIX_DATEOFBIRTH + \"25/2/2024 \"","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"jskimdev"},"content":" + PREFIX_SEX + \"Male\";","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"jskimdev"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New patient added: %1$s\";","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"jskimdev"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This patient already exists in the address book\";","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"jskimdev"},"content":" private final Patient toAdd;","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":46,"author":{"gitId":"jskimdev"},"content":" * Creates an AddCommand to add the specified {@code Patient}","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":48,"author":{"gitId":"jskimdev"},"content":" public AddCommand(Patient patient) {","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"jskimdev"},"content":" requireNonNull(patient);","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"jskimdev"},"content":" toAdd \u003d patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":55,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":57,"author":{"gitId":"-"},"content":" if (model.hasPerson(toAdd)) {","lastModifiedDate":"2018-08-07"},{"lineNumber":58,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":61,"author":{"gitId":"-"},"content":" model.addPerson(toAdd);","lastModifiedDate":"2016-09-25"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2019-02-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-22"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22"},{"lineNumber":67,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" if (!(other instanceof AddCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" AddCommand otherAddCommand \u003d (AddCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2023-07-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"jskimdev":16,"-":70}},{"path":"src/main/java/seedu/address/logic/commands/DeleteAllCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"jeong-jaeho"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":8,"author":{"gitId":"jeong-jaeho"},"content":" * Deletes all entries in the address book.","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"jeong-jaeho"},"content":"public class DeleteAllCommand extends Command {","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"jeong-jaeho"},"content":" public static final String COMMAND_WORD \u003d \"delete-all\";","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"jeong-jaeho"},"content":" public static final String CONFIRMATION \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"jeong-jaeho"},"content":" \"Are you sure you want to delete all? This action is irreversible. If yes, enter ‘delete-all-f’. \"","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"jeong-jaeho"},"content":" + \"If not, simply enter \u0027no\u0027.\";","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"jeong-jaeho"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"jeong-jaeho"},"content":" * Executes the command and returns the result message.","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"jeong-jaeho"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"jeong-jaeho"},"content":" * @param model {@code Model} which the command should operate on.","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"jeong-jaeho"},"content":" * @return feedback message of the operation result for display","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"jeong-jaeho"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15"},{"lineNumber":26,"author":{"gitId":"jeong-jaeho"},"content":" return new CommandResult(CONFIRMATION);","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"-":14,"jeong-jaeho":14}},{"path":"src/main/java/seedu/address/logic/commands/DeleteByIndexCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-09-01"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":12,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"jskimdev"},"content":" * Deletes a patient identified using it\u0027s displayed index from the address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"jeong-jaeho"},"content":"public class DeleteByIndexCommand extends Command {","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"delete\";","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"jskimdev"},"content":" + \": Deletes the patient identified by the index number used in the displayed patient list.\\n\"","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer)\\n\"","lastModifiedDate":"2016-09-29"},{"lineNumber":24,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"jskimdev"},"content":" public static final String MESSAGE_DELETE_PERSON_SUCCESS \u003d \"Deleted Patient: %1$s\";","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final Index targetIndex;","lastModifiedDate":"2017-06-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"jeong-jaeho"},"content":" public DeleteByIndexCommand(Index targetIndex) {","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2016-09-22"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":36,"author":{"gitId":"jskimdev"},"content":" List\u003cPatient\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19"},{"lineNumber":39,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":42,"author":{"gitId":"jskimdev"},"content":" Patient patientToDelete \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"jskimdev"},"content":" model.deletePerson(patientToDelete);","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"jskimdev"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_PERSON_SUCCESS, Messages.format(patientToDelete)));","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":54,"author":{"gitId":"jeong-jaeho"},"content":" if (!(other instanceof DeleteByIndexCommand)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"jeong-jaeho"},"content":" DeleteByIndexCommand otherDeleteByIndexCommand \u003d (DeleteByIndexCommand) other;","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"jeong-jaeho"},"content":" return targetIndex.equals(otherDeleteByIndexCommand.targetIndex);","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2019-02-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"jskimdev":8,"-":55,"jeong-jaeho":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"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DATEOFBIRTH;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SEX;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2016-12-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":22,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Address;","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.DateOfBirth;","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Email;","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Name;","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Phone;","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Sex;","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26"},{"lineNumber":31,"author":{"gitId":"jskimdev"},"content":" * Edits the details of an existing patient in the address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2016-12-26"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":37,"author":{"gitId":"jskimdev"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the patient identified \"","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"jskimdev"},"content":" + \"by the index number used in the displayed patient list. \"","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26"},{"lineNumber":40,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2017-06-06"},{"lineNumber":41,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06"},{"lineNumber":42,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":44,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":45,"author":{"gitId":"jskimdev"},"content":" + \"[\" + PREFIX_DATEOFBIRTH + \"DATEOFBIRTH] \"","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"jskimdev"},"content":" + \"[\" + PREFIX_SEX + \"SEX] \\n\"","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"91234567 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2017-05-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":51,"author":{"gitId":"jskimdev"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Patient: %1$s\";","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2016-12-26"},{"lineNumber":53,"author":{"gitId":"jskimdev"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This patient already exists in the address book.\";","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2017-05-25"},{"lineNumber":56,"author":{"gitId":"jskimdev"},"content":" private final EditPatientDescriptor editPatientDescriptor;","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":59,"author":{"gitId":"jskimdev"},"content":" * @param index of the patient in the filtered patient list to edit","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"jskimdev"},"content":" * @param editPatientDescriptor details to edit the patient with","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":62,"author":{"gitId":"jskimdev"},"content":" public EditCommand(Index index, EditPatientDescriptor editPatientDescriptor) {","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25"},{"lineNumber":64,"author":{"gitId":"jskimdev"},"content":" requireNonNull(editPatientDescriptor);","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25"},{"lineNumber":67,"author":{"gitId":"jskimdev"},"content":" this.editPatientDescriptor \u003d new EditPatientDescriptor(editPatientDescriptor);","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":72,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":73,"author":{"gitId":"jskimdev"},"content":" List\u003cPatient\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":79,"author":{"gitId":"jskimdev"},"content":" Patient patientToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-03-19"},{"lineNumber":80,"author":{"gitId":"jskimdev"},"content":" Patient editedPatient \u003d createEditedPerson(patientToEdit, editPatientDescriptor);","lastModifiedDate":"2024-03-19"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":82,"author":{"gitId":"jskimdev"},"content":" if (!patientToEdit.isSamePatient(editedPatient) \u0026\u0026 model.hasPerson(editedPatient)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":86,"author":{"gitId":"jskimdev"},"content":" model.setPerson(patientToEdit, editedPatient);","lastModifiedDate":"2024-03-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":88,"author":{"gitId":"jskimdev"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPatient)));","lastModifiedDate":"2024-03-19"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":91,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":92,"author":{"gitId":"jskimdev"},"content":" * Creates and returns a {@code Patient} with the details of {@code patientToEdit}","lastModifiedDate":"2024-03-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2016-12-26"},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":95,"author":{"gitId":"jskimdev"},"content":" private static Patient createEditedPerson(Patient patientToEdit, EditPatientDescriptor editPatientDescriptor) {","lastModifiedDate":"2024-03-19"},{"lineNumber":96,"author":{"gitId":"jskimdev"},"content":" assert patientToEdit !\u003d null;","lastModifiedDate":"2024-03-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":98,"author":{"gitId":"jskimdev"},"content":" Name updatedName \u003d editPatientDescriptor.getName().orElse(patientToEdit.getName());","lastModifiedDate":"2024-03-19"},{"lineNumber":99,"author":{"gitId":"jskimdev"},"content":" Phone updatedPhone \u003d editPatientDescriptor.getPhone().orElse(patientToEdit.getPhone());","lastModifiedDate":"2024-03-19"},{"lineNumber":100,"author":{"gitId":"jskimdev"},"content":" Email updatedEmail \u003d editPatientDescriptor.getEmail().orElse(patientToEdit.getEmail());","lastModifiedDate":"2024-03-19"},{"lineNumber":101,"author":{"gitId":"jskimdev"},"content":" Address updatedAddress \u003d editPatientDescriptor.getAddress().orElse(patientToEdit.getAddress());","lastModifiedDate":"2024-03-19"},{"lineNumber":102,"author":{"gitId":"jskimdev"},"content":" DateOfBirth updatedDateOfBirth \u003d editPatientDescriptor.getDateOfBirth().orElse(patientToEdit.getDateOfBirth());","lastModifiedDate":"2024-03-19"},{"lineNumber":103,"author":{"gitId":"jskimdev"},"content":" Sex updatedSex \u003d editPatientDescriptor.getSex().orElse(patientToEdit.getSex());","lastModifiedDate":"2024-03-19"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":105,"author":{"gitId":"jskimdev"},"content":" return new Patient(updatedName, updatedPhone, updatedEmail, updatedAddress, updatedDateOfBirth, updatedSex);","lastModifiedDate":"2024-03-19"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08"},{"lineNumber":109,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08"},{"lineNumber":110,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08"},{"lineNumber":111,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13"},{"lineNumber":121,"author":{"gitId":"jskimdev"},"content":" \u0026\u0026 editPatientDescriptor.equals(otherEditCommand.editPatientDescriptor);","lastModifiedDate":"2024-03-19"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23"},{"lineNumber":128,"author":{"gitId":"jskimdev"},"content":" .add(\"editPersonDescriptor\", editPatientDescriptor)","lastModifiedDate":"2024-03-19"},{"lineNumber":129,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":133,"author":{"gitId":"jskimdev"},"content":" * Stores the details to edit the patient with. Each non-empty field value will replace the","lastModifiedDate":"2024-03-19"},{"lineNumber":134,"author":{"gitId":"jskimdev"},"content":" * corresponding field value of the patient.","lastModifiedDate":"2024-03-19"},{"lineNumber":135,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":136,"author":{"gitId":"jskimdev"},"content":" public static class EditPatientDescriptor {","lastModifiedDate":"2024-03-19"},{"lineNumber":137,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21"},{"lineNumber":138,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":139,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21"},{"lineNumber":140,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-06-21"},{"lineNumber":141,"author":{"gitId":"jskimdev"},"content":" private DateOfBirth dateOfBirth;","lastModifiedDate":"2024-03-17"},{"lineNumber":142,"author":{"gitId":"jskimdev"},"content":" private Sex sex;","lastModifiedDate":"2024-03-18"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":144,"author":{"gitId":"jskimdev"},"content":" public EditPatientDescriptor() {}","lastModifiedDate":"2024-03-19"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":146,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":147,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11"},{"lineNumber":148,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":149,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":150,"author":{"gitId":"jskimdev"},"content":" public EditPatientDescriptor(EditPatientDescriptor toCopy) {","lastModifiedDate":"2024-03-19"},{"lineNumber":151,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15"},{"lineNumber":152,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15"},{"lineNumber":153,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15"},{"lineNumber":154,"author":{"gitId":"-"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2018-01-15"},{"lineNumber":155,"author":{"gitId":"jskimdev"},"content":" setDateOfBirth(toCopy.dateOfBirth);","lastModifiedDate":"2024-03-17"},{"lineNumber":156,"author":{"gitId":"jskimdev"},"content":" setSex(toCopy.sex);","lastModifiedDate":"2024-03-18"},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":159,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":160,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26"},{"lineNumber":161,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":162,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26"},{"lineNumber":163,"author":{"gitId":"Vision-2000"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, address, dateOfBirth, sex);","lastModifiedDate":"2024-03-21"},{"lineNumber":164,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":166,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21"},{"lineNumber":167,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21"},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":170,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26"},{"lineNumber":171,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21"},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":174,"author":{"gitId":"-"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2017-06-21"},{"lineNumber":175,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":178,"author":{"gitId":"-"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26"},{"lineNumber":179,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2017-06-21"},{"lineNumber":180,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":182,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2017-06-21"},{"lineNumber":183,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-06-21"},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":186,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26"},{"lineNumber":187,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21"},{"lineNumber":188,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":190,"author":{"gitId":"-"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2017-06-21"},{"lineNumber":191,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-06-21"},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":194,"author":{"gitId":"-"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2016-12-26"},{"lineNumber":195,"author":{"gitId":"-"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2017-06-21"},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":198,"author":{"gitId":"jskimdev"},"content":" public void setDateOfBirth(DateOfBirth dateOfBirth) {","lastModifiedDate":"2024-03-17"},{"lineNumber":199,"author":{"gitId":"jskimdev"},"content":" this.dateOfBirth \u003d dateOfBirth;","lastModifiedDate":"2024-03-17"},{"lineNumber":200,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":202,"author":{"gitId":"jskimdev"},"content":" public Optional\u003cDateOfBirth\u003e getDateOfBirth() {","lastModifiedDate":"2024-03-17"},{"lineNumber":203,"author":{"gitId":"jskimdev"},"content":" return Optional.ofNullable(dateOfBirth);","lastModifiedDate":"2024-03-17"},{"lineNumber":204,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":206,"author":{"gitId":"jskimdev"},"content":" public void setSex(Sex sex) {","lastModifiedDate":"2024-03-18"},{"lineNumber":207,"author":{"gitId":"jskimdev"},"content":" this.sex \u003d sex;","lastModifiedDate":"2024-03-18"},{"lineNumber":208,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":209,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":210,"author":{"gitId":"jskimdev"},"content":" public Optional\u003cSex\u003e getSex() {","lastModifiedDate":"2024-03-18"},{"lineNumber":211,"author":{"gitId":"jskimdev"},"content":" return Optional.ofNullable(sex);","lastModifiedDate":"2024-03-18"},{"lineNumber":212,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":214,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05"},{"lineNumber":215,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05"},{"lineNumber":216,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05"},{"lineNumber":217,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05"},{"lineNumber":218,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":220,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05"},{"lineNumber":221,"author":{"gitId":"jskimdev"},"content":" if (!(other instanceof EditPatientDescriptor)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":222,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05"},{"lineNumber":223,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":225,"author":{"gitId":"jskimdev"},"content":" EditPatientDescriptor otherEditPatientDescriptor \u003d (EditPatientDescriptor) other;","lastModifiedDate":"2024-03-19"},{"lineNumber":226,"author":{"gitId":"jskimdev"},"content":" return Objects.equals(name, otherEditPatientDescriptor.name)","lastModifiedDate":"2024-03-19"},{"lineNumber":227,"author":{"gitId":"jskimdev"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPatientDescriptor.phone)","lastModifiedDate":"2024-03-19"},{"lineNumber":228,"author":{"gitId":"jskimdev"},"content":" \u0026\u0026 Objects.equals(email, otherEditPatientDescriptor.email)","lastModifiedDate":"2024-03-19"},{"lineNumber":229,"author":{"gitId":"jskimdev"},"content":" \u0026\u0026 Objects.equals(address, otherEditPatientDescriptor.address)","lastModifiedDate":"2024-03-19"},{"lineNumber":230,"author":{"gitId":"jskimdev"},"content":" \u0026\u0026 Objects.equals(dateOfBirth, otherEditPatientDescriptor.dateOfBirth)","lastModifiedDate":"2024-03-19"},{"lineNumber":231,"author":{"gitId":"jskimdev"},"content":" \u0026\u0026 Objects.equals(sex, otherEditPatientDescriptor.sex);","lastModifiedDate":"2024-03-19"},{"lineNumber":232,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":233,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":234,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":241,"author":{"gitId":"jskimdev"},"content":" .add(\"date of birth\", dateOfBirth)","lastModifiedDate":"2024-03-17"},{"lineNumber":242,"author":{"gitId":"jskimdev"},"content":" .add(\"sex\", sex)","lastModifiedDate":"2024-03-18"},{"lineNumber":243,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":246,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26"}],"authorContributionMap":{"jskimdev":69,"-":176,"Vision-2000":1}},{"path":"src/main/java/seedu/address/logic/commands/FindCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"Vision-2000"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"Vision-2000"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"Vision-2000"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":12,"author":{"gitId":"Vision-2000"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-22"},{"lineNumber":16,"author":{"gitId":"Vision-2000"},"content":" * Finds and lists all persons whose name or phone number matches any of the argument inputs.","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"Vision-2000"},"content":" * Name matching is case insensitive.","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class FindCommand extends Command {","lastModifiedDate":"2016-09-22"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"find\";","lastModifiedDate":"2016-09-22"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":24,"author":{"gitId":"Vision-2000"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Finds all persons whose names or phone numbers \"","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"Vision-2000"},"content":" + \"matches any of the inputs (case-insensitive for names) and displays them as a list with index numbers.\\n\"","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"Vision-2000"},"content":" + \"Parameters: \"","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"Vision-2000"},"content":" + \"[\" + PREFIX_NAME + \"KEYWORD] \"","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"Vision-2000"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"Vision-2000"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"Vision-2000"},"content":" + PREFIX_NAME + \"alice \"","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"Vision-2000"},"content":" + PREFIX_PHONE + \"91234567\";","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"Vision-2000"},"content":" private final Predicate\u003cPatient\u003e namePredicate;","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"Vision-2000"},"content":" private final Predicate\u003cPatient\u003e phonePredicate;","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":38,"author":{"gitId":"Vision-2000"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"Vision-2000"},"content":" * @param namePredicate condition patient name must meet","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"Vision-2000"},"content":" * @param phonePredicate condition patient phone must meet","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"Vision-2000"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"Vision-2000"},"content":" public FindCommand(Predicate\u003cPatient\u003e namePredicate, Predicate\u003cPatient\u003e phonePredicate) {","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"Vision-2000"},"content":" this.namePredicate \u003d namePredicate;","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"Vision-2000"},"content":" this.phonePredicate \u003d phonePredicate;","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-22"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":50,"author":{"gitId":"Vision-2000"},"content":" model.updateFilteredPersonList(namePredicate.and(phonePredicate));","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return new CommandResult(","lastModifiedDate":"2018-04-01"},{"lineNumber":52,"author":{"gitId":"-"},"content":" String.format(Messages.MESSAGE_PERSONS_LISTED_OVERVIEW, model.getFilteredPersonList().size()));","lastModifiedDate":"2018-04-01"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" if (!(other instanceof FindCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" FindCommand otherFindCommand \u003d (FindCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":67,"author":{"gitId":"Vision-2000"},"content":" return namePredicate.equals(otherFindCommand.namePredicate)","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"Vision-2000"},"content":" \u0026\u0026 phonePredicate.equals(otherFindCommand.phonePredicate);","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":74,"author":{"gitId":"Vision-2000"},"content":" .add(\"namePredicate\", namePredicate)","lastModifiedDate":"2024-03-19"},{"lineNumber":75,"author":{"gitId":"Vision-2000"},"content":" .add(\"phonePredicate\", phonePredicate)","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22"}],"authorContributionMap":{"-":45,"Vision-2000":33}},{"path":"src/main/java/seedu/address/logic/commands/ForceDeleteAllCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jeong-jaeho"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"jeong-jaeho"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"jeong-jaeho"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"jeong-jaeho"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"jeong-jaeho"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"jeong-jaeho"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"jeong-jaeho"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"jeong-jaeho"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"jeong-jaeho"},"content":" * Deletes all persons in the address book forcefully.","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"jeong-jaeho"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"jeong-jaeho"},"content":"public class ForceDeleteAllCommand extends Command {","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"jeong-jaeho"},"content":" public static final String COMMAND_WORD \u003d \"delete-all-f\";","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"jeong-jaeho"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Successfully deleted all data\";","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"jeong-jaeho"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"jeong-jaeho"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"jeong-jaeho"},"content":" * Executes the command and returns the result message.","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"jeong-jaeho"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"jeong-jaeho"},"content":" * @param model {@code Model} which the command should operate on.","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"jeong-jaeho"},"content":" * @return feedback message of the operation result for display","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"jeong-jaeho"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"jeong-jaeho"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"jeong-jaeho"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"jeong-jaeho"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"jeong-jaeho"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"jeong-jaeho"},"content":" model.setAddressBook(new AddressBook());","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"jeong-jaeho"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"jeong-jaeho"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"jeong-jaeho"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"jeong-jaeho":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"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"S-Aishvarya"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"S-Aishvarya"},"content":"import java.util.Comparator;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"S-Aishvarya"},"content":"import java.util.List;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"S-Aishvarya"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Lists all persons in the address book to the user.","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2016-09-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"list\";","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Listed all persons\";","lastModifiedDate":"2016-09-21"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":27,"author":{"gitId":"S-Aishvarya"},"content":" List\u003cPatient\u003e sortedList \u003d new ArrayList\u003cPatient\u003e();","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"S-Aishvarya"},"content":" sortedList.addAll(model.getFilteredPersonList());","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"S-Aishvarya"},"content":" Comparator\u003cPatient\u003e comparator \u003d (patient1, patient2) -\u003e {","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"S-Aishvarya"},"content":" return patient1.getName().fullName.compareTo(patient2.getName().fullName);","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"S-Aishvarya"},"content":" };","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"S-Aishvarya"},"content":" sortedList.sort(comparator);","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"S-Aishvarya"},"content":" for ( Patient patient : sortedList ) {","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"S-Aishvarya"},"content":" model.deletePerson(patient);","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"S-Aishvarya"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"S-Aishvarya"},"content":" for ( Patient patient : sortedList ) {","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"S-Aishvarya"},"content":" model.addPerson(patient);","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"S-Aishvarya"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2016-09-22"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"S-Aishvarya":16,"-":25}},{"path":"src/main/java/seedu/address/logic/commands/NoCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jeong-jaeho"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"jeong-jaeho"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"jeong-jaeho"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"jeong-jaeho"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"jeong-jaeho"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"jeong-jaeho"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"jeong-jaeho"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"jeong-jaeho"},"content":" * No command, do nothing.","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"jeong-jaeho"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"jeong-jaeho"},"content":"public class NoCommand extends Command {","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"jeong-jaeho"},"content":" public static final String COMMAND_WORD \u003d \"no\";","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"jeong-jaeho"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"jeong-jaeho"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"jeong-jaeho"},"content":" * Executes the command and returns the result message.","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"jeong-jaeho"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"jeong-jaeho"},"content":" * @param model {@code Model} which the command should operate on.","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"jeong-jaeho"},"content":" * @return feedback message of the operation result for display","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"jeong-jaeho"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"jeong-jaeho"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"jeong-jaeho"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"jeong-jaeho"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"jeong-jaeho"},"content":" return new CommandResult(\"\");","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"jeong-jaeho"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"jeong-jaeho"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"jeong-jaeho":24}},{"path":"src/main/java/seedu/address/logic/commands/exceptions/CommandException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands.exceptions;","lastModifiedDate":"2017-02-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":3,"author":{"gitId":"Vision-2000"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * Represents an error which occurs during execution of a {@link Command}.","lastModifiedDate":"2017-02-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class CommandException extends Exception {","lastModifiedDate":"2017-02-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":" public CommandException(String message) {","lastModifiedDate":"2017-02-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":" super(message);","lastModifiedDate":"2017-02-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":13,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Constructs a new {@code CommandException} with the specified detail {@code message} and {@code cause}.","lastModifiedDate":"2018-08-06"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public CommandException(String message, Throwable cause) {","lastModifiedDate":"2018-08-06"},{"lineNumber":17,"author":{"gitId":"-"},"content":" super(message, cause);","lastModifiedDate":"2018-08-06"},{"lineNumber":18,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":19,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05"}],"authorContributionMap":{"-":17,"Vision-2000":2}},{"path":"src/main/java/seedu/address/logic/parser/AddCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DATEOFBIRTH;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SEX;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-02-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":15,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Address;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.DateOfBirth;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Email;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Name;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Phone;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Sex;","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":34,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":35,"author":{"gitId":"jskimdev"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"jskimdev"},"content":" PREFIX_DATEOFBIRTH, PREFIX_SEX);","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":38,"author":{"gitId":"jskimdev"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_ADDRESS, PREFIX_PHONE, PREFIX_EMAIL,","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"jskimdev"},"content":" PREFIX_DATEOFBIRTH, PREFIX_SEX)","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":44,"author":{"gitId":"jskimdev"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"jskimdev"},"content":" PREFIX_DATEOFBIRTH, PREFIX_SEX);","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":47,"author":{"gitId":"-"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":48,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":49,"author":{"gitId":"-"},"content":" Address address \u003d ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":50,"author":{"gitId":"jskimdev"},"content":" DateOfBirth dateOfBirth \u003d ParserUtil.parseDateOfBirth(argMultimap.getValue(PREFIX_DATEOFBIRTH).get());","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"jskimdev"},"content":" Sex sex \u003d ParserUtil.parseSex(argMultimap.getValue(PREFIX_SEX).get());","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":53,"author":{"gitId":"jskimdev"},"content":" Patient patient \u003d new Patient(name, phone, email, address, dateOfBirth, sex);","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":55,"author":{"gitId":"jskimdev"},"content":" return new AddCommand(patient);","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17"},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17"},{"lineNumber":62,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05"}],"authorContributionMap":{"jskimdev":19,"-":47}},{"path":"src/main/java/seedu/address/logic/parser/AddressBookParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-07-29"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-07-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2017-01-18"},{"lineNumber":13,"author":{"gitId":"jeong-jaeho"},"content":"import seedu.address.logic.commands.DeleteAllCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"jeong-jaeho"},"content":"import seedu.address.logic.commands.DeleteByIndexCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":18,"author":{"gitId":"jeong-jaeho"},"content":"import seedu.address.logic.commands.ForceDeleteAllCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":21,"author":{"gitId":"jeong-jaeho"},"content":"import seedu.address.logic.commands.NoCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":43,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // Note to developers: Change the log level in config.json to enable lower level (i.e., FINE, FINER and lower)","lastModifiedDate":"2023-07-29"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":56,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":64,"author":{"gitId":"jeong-jaeho"},"content":" case DeleteByIndexCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":67,"author":{"gitId":"jeong-jaeho"},"content":" case DeleteAllCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"jeong-jaeho"},"content":" return new DeleteAllCommand();","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":70,"author":{"gitId":"jeong-jaeho"},"content":" case ForceDeleteAllCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"jeong-jaeho"},"content":" return new ForceDeleteAllCommand();","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return new ListCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":82,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26"},{"lineNumber":83,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":85,"author":{"gitId":"jeong-jaeho"},"content":" case NoCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"jeong-jaeho"},"content":" return new NoCommand();","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"jeong-jaeho"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":88,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26"},{"lineNumber":89,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29"},{"lineNumber":90,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"-":82,"jeong-jaeho":12}},{"path":"src/main/java/seedu/address/logic/parser/CliSyntax.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11"},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":" /* Prefix definitions */","lastModifiedDate":"2017-02-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"n/\");","lastModifiedDate":"2017-06-06"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"p/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"e/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_ADDRESS \u003d new Prefix(\"a/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":13,"author":{"gitId":"jskimdev"},"content":" public static final Prefix PREFIX_DATEOFBIRTH \u003d new Prefix(\"b/\");","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"jskimdev"},"content":" public static final Prefix PREFIX_SEX \u003d new Prefix(\"s/\");","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"jskimdev":2,"-":13}},{"path":"src/main/java/seedu/address/logic/parser/DeleteCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":6,"author":{"gitId":"jeong-jaeho"},"content":"import seedu.address.logic.commands.DeleteByIndexCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new DeleteCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":12,"author":{"gitId":"jeong-jaeho"},"content":"public class DeleteCommandParser implements Parser\u003cDeleteByIndexCommand\u003e {","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the DeleteCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * and returns a DeleteCommand object for execution.","lastModifiedDate":"2019-05-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":19,"author":{"gitId":"jeong-jaeho"},"content":" public DeleteByIndexCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15"},{"lineNumber":21,"author":{"gitId":"-"},"content":" Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2017-05-25"},{"lineNumber":22,"author":{"gitId":"jeong-jaeho"},"content":" return new DeleteByIndexCommand(index);","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10"},{"lineNumber":24,"author":{"gitId":"-"},"content":" throw new ParseException(","lastModifiedDate":"2017-03-11"},{"lineNumber":25,"author":{"gitId":"jeong-jaeho"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteByIndexCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"-":24,"jeong-jaeho":5}},{"path":"src/main/java/seedu/address/logic/parser/EditCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DATEOFBIRTH;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"Vision-2000"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SEX;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-26"},{"lineNumber":14,"author":{"gitId":"jskimdev"},"content":"import seedu.address.logic.commands.EditCommand.EditPatientDescriptor;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new EditCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class EditCommandParser implements Parser\u003cEditCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the EditCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * and returns an EditCommand object for execution.","lastModifiedDate":"2017-01-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public EditCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":28,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2017-05-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":30,"author":{"gitId":"jskimdev"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"Vision-2000"},"content":" PREFIX_DATEOFBIRTH, PREFIX_SEX);","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2017-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":35,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2017-06-06"},{"lineNumber":37,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10"},{"lineNumber":38,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2018-08-06"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":41,"author":{"gitId":"Vision-2000"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"Vision-2000"},"content":" PREFIX_DATEOFBIRTH, PREFIX_SEX);","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":44,"author":{"gitId":"jskimdev"},"content":" EditPatientDescriptor editPersonDescriptor \u003d new EditPatientDescriptor();","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":46,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":47,"author":{"gitId":"-"},"content":" editPersonDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":49,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":50,"author":{"gitId":"-"},"content":" editPersonDescriptor.setPhone(ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":52,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":53,"author":{"gitId":"-"},"content":" editPersonDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":55,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_ADDRESS).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":56,"author":{"gitId":"-"},"content":" editPersonDescriptor.setAddress(ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":58,"author":{"gitId":"jskimdev"},"content":" if (argMultimap.getValue(PREFIX_DATEOFBIRTH).isPresent()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"jskimdev"},"content":" editPersonDescriptor.setDateOfBirth(ParserUtil.parseDateOfBirth(argMultimap","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"jskimdev"},"content":" .getValue(PREFIX_DATEOFBIRTH).get()));","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"Vision-2000"},"content":" if (argMultimap.getValue(PREFIX_SEX).isPresent()) {","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"Vision-2000"},"content":" editPersonDescriptor.setSex(ParserUtil.parseSex(argMultimap.getValue(PREFIX_SEX).get()));","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":" if (!editPersonDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2017-01-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-03-11"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2017-05-15"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"jskimdev":8,"-":57,"Vision-2000":7}},{"path":"src/main/java/seedu/address/logic/parser/FindCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"Vision-2000"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"Vision-2000"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"Vision-2000"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"Vision-2000"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-01-26"},{"lineNumber":10,"author":{"gitId":"Vision-2000"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"Vision-2000"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":13,"author":{"gitId":"Vision-2000"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":16,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"Vision-2000"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"Vision-2000"},"content":"import seedu.address.model.patient.PhoneMatchesPredicate;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new FindCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class FindCommandParser implements Parser\u003cFindCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":25,"author":{"gitId":"Vision-2000"},"content":" private final Logger logger \u003d LogsCenter.getLogger(getClass());","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the FindCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * and returns a FindCommand object for execution.","lastModifiedDate":"2019-05-11"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public FindCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":33,"author":{"gitId":"Vision-2000"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"Vision-2000"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"Vision-2000"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE);","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"Vision-2000"},"content":" if (!argMultimap.getPreamble().equals(\"\")) {","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"Vision-2000"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"Vision-2000"},"content":" if (!argMultimap.getValue(PREFIX_NAME).isPresent() \u0026\u0026 !argMultimap.getValue(PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"Vision-2000"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"Vision-2000"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE);","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"Vision-2000"},"content":" Predicate\u003cPatient\u003e namePredicate;","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"Vision-2000"},"content":" Predicate\u003cPatient\u003e phonePredicate;","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"Vision-2000"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"Vision-2000"},"content":" String keyword \u003d argMultimap.getValue(PREFIX_NAME).get().trim();","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"Vision-2000"},"content":" if (keyword.isEmpty()) {","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" throw new ParseException(","lastModifiedDate":"2017-03-11"},{"lineNumber":54,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-01-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":56,"author":{"gitId":"Vision-2000"},"content":" String [] nameKeywords \u003d keyword.split(\"\\\\s+\");","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"Vision-2000"},"content":" namePredicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(nameKeywords));","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"Vision-2000"},"content":" } else {","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"Vision-2000"},"content":" namePredicate \u003d PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"Vision-2000"},"content":" if (argMultimap.getValue(PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"Vision-2000"},"content":" phonePredicate \u003d new PhoneMatchesPredicate(ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get()));","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"Vision-2000"},"content":" } else {","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"Vision-2000"},"content":" phonePredicate \u003d PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":68,"author":{"gitId":"Vision-2000"},"content":" logger.info(\"----------------[namePredicate][\" + namePredicate + \"]\");","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"Vision-2000"},"content":" logger.info(\"----------------[phonePredicate][\" + phonePredicate + \"]\");","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":71,"author":{"gitId":"Vision-2000"},"content":" return new FindCommand(namePredicate, phonePredicate);","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":74,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"jskimdev":1,"-":29,"Vision-2000":44}},{"path":"src/main/java/seedu/address/logic/parser/ParserUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-02-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10"},{"lineNumber":8,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Address;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.DateOfBirth;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Email;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Name;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Phone;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Sex;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2017-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":28,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02"},{"lineNumber":30,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":32,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29"},{"lineNumber":38,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":42,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29"},{"lineNumber":43,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29"},{"lineNumber":44,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":45,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":47,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":50,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":53,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":57,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30"},{"lineNumber":58,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":59,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":60,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","lastModifiedDate":"2017-05-30"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":65,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":66,"author":{"gitId":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30"},{"lineNumber":67,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":68,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":69,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":70,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":72,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-30"},{"lineNumber":73,"author":{"gitId":"-"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":74,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(trimmedAddress)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":75,"author":{"gitId":"-"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return new Address(trimmedAddress);","lastModifiedDate":"2017-05-30"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":80,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30"},{"lineNumber":82,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":83,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":85,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":87,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30"},{"lineNumber":88,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":89,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":90,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":92,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","lastModifiedDate":"2017-05-30"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":95,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":96,"author":{"gitId":"jskimdev"},"content":" * Parses a {@code String dateOfBirth} into an {@code DateOfBirth}.","lastModifiedDate":"2024-03-17"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":98,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":99,"author":{"gitId":"jskimdev"},"content":" * @throws ParseException if the given {@code dateOfBirth} is invalid.","lastModifiedDate":"2024-03-17"},{"lineNumber":100,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":101,"author":{"gitId":"jskimdev"},"content":" public static DateOfBirth parseDateOfBirth(String dateOfBirth) throws ParseException {","lastModifiedDate":"2024-03-17"},{"lineNumber":102,"author":{"gitId":"jskimdev"},"content":" requireNonNull(dateOfBirth);","lastModifiedDate":"2024-03-17"},{"lineNumber":103,"author":{"gitId":"jskimdev"},"content":" String trimmedDateOfBirth \u003d dateOfBirth.trim();","lastModifiedDate":"2024-03-17"},{"lineNumber":104,"author":{"gitId":"jskimdev"},"content":" if (!DateOfBirth.isValidDateOfBirth(trimmedDateOfBirth)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":105,"author":{"gitId":"jskimdev"},"content":" throw new ParseException(DateOfBirth.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":107,"author":{"gitId":"jskimdev"},"content":" return new DateOfBirth(trimmedDateOfBirth);","lastModifiedDate":"2024-03-18"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":110,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":111,"author":{"gitId":"jskimdev"},"content":" * Parses a {@code String sex} into an {@code Sex}.","lastModifiedDate":"2024-03-18"},{"lineNumber":112,"author":{"gitId":"jskimdev"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-18"},{"lineNumber":113,"author":{"gitId":"jskimdev"},"content":" *","lastModifiedDate":"2024-03-18"},{"lineNumber":114,"author":{"gitId":"jskimdev"},"content":" * @throws ParseException if the given {@code Sex} is invalid.","lastModifiedDate":"2024-03-18"},{"lineNumber":115,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":116,"author":{"gitId":"jskimdev"},"content":" public static Sex parseSex(String sex) throws ParseException {","lastModifiedDate":"2024-03-18"},{"lineNumber":117,"author":{"gitId":"jskimdev"},"content":" requireNonNull(sex);","lastModifiedDate":"2024-03-18"},{"lineNumber":118,"author":{"gitId":"jskimdev"},"content":" String trimmedSex \u003d sex.trim();","lastModifiedDate":"2024-03-18"},{"lineNumber":119,"author":{"gitId":"jskimdev"},"content":" if (!Sex.isValidSex(trimmedSex)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":120,"author":{"gitId":"jskimdev"},"content":" throw new ParseException(Sex.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-18"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":122,"author":{"gitId":"jskimdev"},"content":" return new Sex(trimmedSex);","lastModifiedDate":"2024-03-18"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":124,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"jskimdev":24,"-":100}},{"path":"src/main/java/seedu/address/model/AddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.UniquePatientList;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * Wraps all data at the address-book level","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Duplicates are not allowed (by .isSamePerson comparison)","lastModifiedDate":"2018-04-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class AddressBook implements ReadOnlyAddressBook {","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"jskimdev"},"content":" private final UniquePatientList patients;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * The \u0027unusual\u0027 code block below is a non-static initialization block, sometimes used to avoid duplication","lastModifiedDate":"2019-05-11"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * between constructors. See https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html","lastModifiedDate":"2016-10-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Note that non-static init blocks are not recommended to use. There are other ways to avoid duplication","lastModifiedDate":"2016-10-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * among constructors.","lastModifiedDate":"2016-10-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" {","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"jskimdev"},"content":" patients \u003d new UniquePatientList();","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public AddressBook() {}","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Creates an AddressBook using the Persons in the {@code toBeCopied}","lastModifiedDate":"2018-03-29"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public AddressBook(ReadOnlyAddressBook toBeCopied) {","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" this();","lastModifiedDate":"2016-12-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" resetData(toBeCopied);","lastModifiedDate":"2016-12-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":41,"author":{"gitId":"-"},"content":" //// list overwrite operations","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":44,"author":{"gitId":"jskimdev"},"content":" * Replaces the contents of the patient list with {@code patients}.","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"jskimdev"},"content":" * {@code patients} must not contain duplicate patients.","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":47,"author":{"gitId":"jskimdev"},"content":" public void setPatients(List\u003cPatient\u003e patients) {","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"jskimdev"},"content":" this.patients.setPatients(patients);","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Resets the existing data of this {@code AddressBook} with {@code newData}.","lastModifiedDate":"2017-08-16"},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void resetData(ReadOnlyAddressBook newData) {","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":" requireNonNull(newData);","lastModifiedDate":"2017-05-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-20"},{"lineNumber":57,"author":{"gitId":"jskimdev"},"content":" setPatients(newData.getPersonList());","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"jskimdev"},"content":" //// patient-level operations","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":63,"author":{"gitId":"jskimdev"},"content":" * Returns true if a patient with the same identity as {@code patient} exists in the address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":65,"author":{"gitId":"jskimdev"},"content":" public boolean hasPerson(Patient patient) {","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"jskimdev"},"content":" requireNonNull(patient);","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"jskimdev"},"content":" return patients.contains(patient);","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":71,"author":{"gitId":"jskimdev"},"content":" * Adds a patient to the address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"jskimdev"},"content":" * The patient must not already exist in the address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":74,"author":{"gitId":"jskimdev"},"content":" public void addPerson(Patient p) {","lastModifiedDate":"2024-03-19"},{"lineNumber":75,"author":{"gitId":"jskimdev"},"content":" patients.add(p);","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":79,"author":{"gitId":"jskimdev"},"content":" * Replaces the given patient {@code target} in the list with {@code editedPatient}.","lastModifiedDate":"2024-03-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":81,"author":{"gitId":"jskimdev"},"content":" * The patient identity of {@code editedPatient} must not be the same as another existing patient","lastModifiedDate":"2024-03-19"},{"lineNumber":82,"author":{"gitId":"jskimdev"},"content":" * in the address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":84,"author":{"gitId":"jskimdev"},"content":" public void setPerson(Patient target, Patient editedPatient) {","lastModifiedDate":"2024-03-19"},{"lineNumber":85,"author":{"gitId":"jskimdev"},"content":" requireNonNull(editedPatient);","lastModifiedDate":"2024-03-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":87,"author":{"gitId":"jskimdev"},"content":" patients.setPatient(target, editedPatient);","lastModifiedDate":"2024-03-19"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":90,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * Removes {@code key} from this {@code AddressBook}.","lastModifiedDate":"2017-08-16"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * {@code key} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":93,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":94,"author":{"gitId":"jskimdev"},"content":" public void removePerson(Patient key) {","lastModifiedDate":"2024-03-19"},{"lineNumber":95,"author":{"gitId":"jskimdev"},"content":" patients.remove(key);","lastModifiedDate":"2024-03-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":" //// util methods","lastModifiedDate":"2016-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":103,"author":{"gitId":"jskimdev"},"content":" .add(\"patients\", patients)","lastModifiedDate":"2024-03-19"},{"lineNumber":104,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":108,"author":{"gitId":"jskimdev"},"content":" public ObservableList\u003cPatient\u003e getPersonList() {","lastModifiedDate":"2024-03-19"},{"lineNumber":109,"author":{"gitId":"jskimdev"},"content":" return patients.asUnmodifiableObservableList();","lastModifiedDate":"2024-03-19"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-01"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-01"},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":113,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-21"},{"lineNumber":114,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":119,"author":{"gitId":"-"},"content":" if (!(other instanceof AddressBook)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":123,"author":{"gitId":"-"},"content":" AddressBook otherAddressBook \u003d (AddressBook) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":124,"author":{"gitId":"jskimdev"},"content":" return patients.equals(otherAddressBook.patients);","lastModifiedDate":"2024-03-19"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":128,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-21"},{"lineNumber":129,"author":{"gitId":"jskimdev"},"content":" return patients.hashCode();","lastModifiedDate":"2024-03-19"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":131,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"jskimdev":31,"-":100}},{"path":"src/main/java/seedu/address/model/Model.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":8,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * The API of the Model component.","lastModifiedDate":"2016-09-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public interface Model {","lastModifiedDate":"2016-09-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":" /** {@code Predicate} that always evaluate to true */","lastModifiedDate":"2017-08-05"},{"lineNumber":15,"author":{"gitId":"jskimdev"},"content":" Predicate\u003cPatient\u003e PREDICATE_SHOW_ALL_PERSONS \u003d unused -\u003e true;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Replaces user prefs data with the data in {@code userPrefs}.","lastModifiedDate":"2018-12-06"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":" void setUserPrefs(ReadOnlyUserPrefs userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Returns the user prefs.","lastModifiedDate":"2018-11-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" ReadOnlyUserPrefs getUserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" void setAddressBookFilePath(Path addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Replaces address book data with the data in {@code addressBook}.","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" void setAddressBook(ReadOnlyAddressBook addressBook);","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":52,"author":{"gitId":"-"},"content":" /** Returns the AddressBook */","lastModifiedDate":"2016-09-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2016-09-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":56,"author":{"gitId":"jskimdev"},"content":" * Returns true if a patient with the same identity as {@code patient} exists in the address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":58,"author":{"gitId":"jskimdev"},"content":" boolean hasPerson(Patient patient);","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":61,"author":{"gitId":"jskimdev"},"content":" * Deletes the given patient.","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"jskimdev"},"content":" * The patient must exist in the address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":64,"author":{"gitId":"jskimdev"},"content":" void deletePerson(Patient target);","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":66,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":67,"author":{"gitId":"jskimdev"},"content":" * Adds the given patient.","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"jskimdev"},"content":" * {@code patient} must not already exist in the address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":70,"author":{"gitId":"jskimdev"},"content":" void addPerson(Patient patient);","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":73,"author":{"gitId":"jskimdev"},"content":" * Replaces the given patient {@code target} with {@code editedPatient}.","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":75,"author":{"gitId":"jskimdev"},"content":" * The patient identity of {@code editedPatient} must not be the same as","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"jskimdev"},"content":" * another existing patient in the address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":78,"author":{"gitId":"jskimdev"},"content":" void setPerson(Patient target, Patient editedPatient);","lastModifiedDate":"2024-03-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":80,"author":{"gitId":"jskimdev"},"content":" /** Returns an unmodifiable view of the filtered patient list */","lastModifiedDate":"2024-03-19"},{"lineNumber":81,"author":{"gitId":"jskimdev"},"content":" ObservableList\u003cPatient\u003e getFilteredPersonList();","lastModifiedDate":"2024-03-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":83,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-05"},{"lineNumber":84,"author":{"gitId":"jskimdev"},"content":" * Updates the filter of the filtered patient list to filter by the given {@code predicate}.","lastModifiedDate":"2024-03-19"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2017-08-05"},{"lineNumber":86,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05"},{"lineNumber":87,"author":{"gitId":"jskimdev"},"content":" void updateFilteredPersonList(Predicate\u003cPatient\u003e predicate);","lastModifiedDate":"2024-03-19"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"jskimdev":18,"-":70}},{"path":"src/main/java/seedu/address/model/ModelManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-08-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2016-08-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23"},{"lineNumber":14,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Represents the in-memory model of the address book data.","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class ModelManager implements Model {","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ModelManager.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final AddressBook addressBook;","lastModifiedDate":"2019-01-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final UserPrefs userPrefs;","lastModifiedDate":"2018-12-06"},{"lineNumber":24,"author":{"gitId":"jskimdev"},"content":" private final FilteredList\u003cPatient\u003e filteredPatients;","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Initializes a ModelManager with the given addressBook and userPrefs.","lastModifiedDate":"2016-12-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public ModelManager(ReadOnlyAddressBook addressBook, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":" requireAllNonNull(addressBook, userPrefs);","lastModifiedDate":"2017-05-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" logger.fine(\"Initializing with address book: \" + addressBook + \" and user prefs \" + userPrefs);","lastModifiedDate":"2016-12-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" this.addressBook \u003d new AddressBook(addressBook);","lastModifiedDate":"2019-01-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":36,"author":{"gitId":"jskimdev"},"content":" filteredPatients \u003d new FilteredList\u003c\u003e(this.addressBook.getPersonList());","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public ModelManager() {","lastModifiedDate":"2016-09-22"},{"lineNumber":40,"author":{"gitId":"-"},"content":" this(new AddressBook(), new UserPrefs());","lastModifiedDate":"2016-09-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d UserPrefs \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":47,"author":{"gitId":"-"},"content":" requireNonNull(userPrefs);","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" this.userPrefs.resetData(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return userPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return userPrefs.getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return userPrefs.getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d AddressBook \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook addressBook) {","lastModifiedDate":"2018-11-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" this.addressBook.resetData(addressBook);","lastModifiedDate":"2019-01-25"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2016-09-21"},{"lineNumber":87,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2019-01-25"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":91,"author":{"gitId":"jskimdev"},"content":" public boolean hasPerson(Patient patient) {","lastModifiedDate":"2024-03-19"},{"lineNumber":92,"author":{"gitId":"jskimdev"},"content":" requireNonNull(patient);","lastModifiedDate":"2024-03-19"},{"lineNumber":93,"author":{"gitId":"jskimdev"},"content":" return addressBook.hasPerson(patient);","lastModifiedDate":"2024-03-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":97,"author":{"gitId":"jskimdev"},"content":" public void deletePerson(Patient target) {","lastModifiedDate":"2024-03-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" addressBook.removePerson(target);","lastModifiedDate":"2019-01-25"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":102,"author":{"gitId":"jskimdev"},"content":" public void addPerson(Patient patient) {","lastModifiedDate":"2024-03-19"},{"lineNumber":103,"author":{"gitId":"jskimdev"},"content":" addressBook.addPerson(patient);","lastModifiedDate":"2024-03-19"},{"lineNumber":104,"author":{"gitId":"-"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-13"},{"lineNumber":108,"author":{"gitId":"jskimdev"},"content":" public void setPerson(Patient target, Patient editedPatient) {","lastModifiedDate":"2024-03-19"},{"lineNumber":109,"author":{"gitId":"jskimdev"},"content":" requireAllNonNull(target, editedPatient);","lastModifiedDate":"2024-03-19"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":111,"author":{"gitId":"jskimdev"},"content":" addressBook.setPerson(target, editedPatient);","lastModifiedDate":"2024-03-19"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":114,"author":{"gitId":"jskimdev"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Filtered Patient List Accessors \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-03-19"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19"},{"lineNumber":117,"author":{"gitId":"jskimdev"},"content":" * Returns an unmodifiable view of the list of {@code Patient} backed by the internal list of","lastModifiedDate":"2024-03-19"},{"lineNumber":118,"author":{"gitId":"-"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2018-06-11"},{"lineNumber":119,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19"},{"lineNumber":120,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":121,"author":{"gitId":"jskimdev"},"content":" public ObservableList\u003cPatient\u003e getFilteredPersonList() {","lastModifiedDate":"2024-03-19"},{"lineNumber":122,"author":{"gitId":"jskimdev"},"content":" return filteredPatients;","lastModifiedDate":"2024-03-19"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":125,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":126,"author":{"gitId":"jskimdev"},"content":" public void updateFilteredPersonList(Predicate\u003cPatient\u003e predicate) {","lastModifiedDate":"2024-03-19"},{"lineNumber":127,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05"},{"lineNumber":128,"author":{"gitId":"jskimdev"},"content":" filteredPatients.setPredicate(predicate);","lastModifiedDate":"2024-03-19"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":131,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-31"},{"lineNumber":132,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13"},{"lineNumber":133,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":134,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":137,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31"},{"lineNumber":138,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":139,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-31"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":142,"author":{"gitId":"-"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":143,"author":{"gitId":"-"},"content":" return addressBook.equals(otherModelManager.addressBook)","lastModifiedDate":"2023-07-13"},{"lineNumber":144,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13"},{"lineNumber":145,"author":{"gitId":"jskimdev"},"content":" \u0026\u0026 filteredPatients.equals(otherModelManager.filteredPatients);","lastModifiedDate":"2024-03-19"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":148,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"jskimdev":19,"-":129}},{"path":"src/main/java/seedu/address/model/ReadOnlyAddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * Unmodifiable view of an address book","lastModifiedDate":"2016-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public interface ReadOnlyAddressBook {","lastModifiedDate":"2019-01-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the persons list.","lastModifiedDate":"2016-12-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * This list will not contain any duplicate persons.","lastModifiedDate":"2016-12-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"jskimdev"},"content":" ObservableList\u003cPatient\u003e getPersonList();","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"jskimdev":2,"-":15}},{"path":"src/main/java/seedu/address/model/patient/Address.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jskimdev"},"content":"package seedu.address.model.patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"jskimdev"},"content":" * Represents a Patient\u0027s address in the address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidAddress(String)}","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Address {","lastModifiedDate":"2016-09-21"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Addresses can take any values, and it should not be blank\";","lastModifiedDate":"2018-09-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":14,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2017-01-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2017-01-16"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2017-01-16"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d \"[^\\\\s].*\";","lastModifiedDate":"2018-09-22"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public final String value;","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Constructs an {@code Address}.","lastModifiedDate":"2017-05-30"},{"lineNumber":24,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * @param address A valid address.","lastModifiedDate":"2017-05-30"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public Address(String address) {","lastModifiedDate":"2017-05-30"},{"lineNumber":28,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":" checkArgument(isValidAddress(address), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":30,"author":{"gitId":"-"},"content":" value \u003d address;","lastModifiedDate":"2018-08-14"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid email.","lastModifiedDate":"2018-04-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static boolean isValidAddress(String test) {","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return value;","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" if (!(other instanceof Address)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" Address otherAddress \u003d (Address) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return value.equals(otherAddress.value);","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return value.hashCode();","lastModifiedDate":"2016-08-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"jskimdev":2,"-":63}},{"path":"src/main/java/seedu/address/model/patient/DateOfBirth.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jskimdev"},"content":"package seedu.address.model.patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"jskimdev"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"jskimdev"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"jskimdev"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"jskimdev"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"jskimdev"},"content":"/**","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"jskimdev"},"content":" * Represents a Patient\u0027s date of birth.","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"jskimdev"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidDateOfBirth(String)}","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"jskimdev"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"jskimdev"},"content":"public class DateOfBirth {","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"jskimdev"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"jskimdev"},"content":" \"Date of birth should only contain numeric values in dd/MM/yyyy or yyyy-MM-dd format, and it should not \"","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"jskimdev"},"content":" + \"be left blank\";","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"Vision-2000"},"content":" public static final DateTimeFormatter INPUTFORMAT1 \u003d DateTimeFormatter.ofPattern(\"d/M/yyyy\");","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"Vision-2000"},"content":" public static final DateTimeFormatter INPUTFORMAT2 \u003d DateTimeFormatter.ofPattern(\"yyyy-M-d\");","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"Vision-2000"},"content":" public static final DateTimeFormatter OUTPUTFORMAT \u003d DateTimeFormatter.ofPattern(\"yyyy-M-d\");","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"jskimdev"},"content":" public final LocalDate dateOfBirth;","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"jskimdev"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"jskimdev"},"content":" * Constructs a {@code DateOfBirth}.","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"jskimdev"},"content":" *","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"jskimdev"},"content":" * @param dateOfBirth A valid date of birth.","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"jskimdev"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"jskimdev"},"content":" public DateOfBirth(String dateOfBirth) {","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"jskimdev"},"content":" requireNonNull(dateOfBirth);","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"jskimdev"},"content":" checkArgument(isValidDateOfBirth(dateOfBirth), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"jskimdev"},"content":" this.dateOfBirth \u003d parseDateOfBirth(dateOfBirth);","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"jskimdev"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"jskimdev"},"content":" * Returns true if a given string is a valid date of birth.","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"jskimdev"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"jskimdev"},"content":" public static boolean isValidDateOfBirth(String test) {","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"jskimdev"},"content":" return parseDateOfBirth(test) \u003d\u003d null ? false : true;","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"jskimdev"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"jskimdev"},"content":" * Parse String date of birth into LocalDate.","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"jskimdev"},"content":" *","lastModifiedDate":"2024-03-14"},{"lineNumber":46,"author":{"gitId":"jskimdev"},"content":" * @param dateOfBirthString date of birth input.","lastModifiedDate":"2024-03-14"},{"lineNumber":47,"author":{"gitId":"jskimdev"},"content":" * @return date of birth in LocalDate type.","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"jskimdev"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":49,"author":{"gitId":"jskimdev"},"content":" public static LocalDate parseDateOfBirth(String dateOfBirthString) {","lastModifiedDate":"2024-03-14"},{"lineNumber":50,"author":{"gitId":"jskimdev"},"content":" String cleanDateString \u003d dateOfBirthString.strip();","lastModifiedDate":"2024-03-14"},{"lineNumber":51,"author":{"gitId":"jskimdev"},"content":" DateTimeFormatter inputFormat \u003d determineInputFormat(cleanDateString);","lastModifiedDate":"2024-03-14"},{"lineNumber":52,"author":{"gitId":"jskimdev"},"content":" LocalDate dateOfBirth \u003d null;","lastModifiedDate":"2024-03-14"},{"lineNumber":53,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":54,"author":{"gitId":"jskimdev"},"content":" try {","lastModifiedDate":"2024-03-14"},{"lineNumber":55,"author":{"gitId":"jskimdev"},"content":" dateOfBirth \u003d LocalDate.parse(cleanDateString, inputFormat);","lastModifiedDate":"2024-03-14"},{"lineNumber":56,"author":{"gitId":"jskimdev"},"content":" return dateOfBirth;","lastModifiedDate":"2024-03-14"},{"lineNumber":57,"author":{"gitId":"jskimdev"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-03-14"},{"lineNumber":58,"author":{"gitId":"jskimdev"},"content":" return null;","lastModifiedDate":"2024-03-14"},{"lineNumber":59,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":60,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":61,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":62,"author":{"gitId":"jskimdev"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":63,"author":{"gitId":"jskimdev"},"content":" * Determines in which format the date of birth is input.","lastModifiedDate":"2024-03-14"},{"lineNumber":64,"author":{"gitId":"jskimdev"},"content":" *","lastModifiedDate":"2024-03-14"},{"lineNumber":65,"author":{"gitId":"jskimdev"},"content":" * @return the input format of String date of birth.","lastModifiedDate":"2024-03-14"},{"lineNumber":66,"author":{"gitId":"jskimdev"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":67,"author":{"gitId":"jskimdev"},"content":" private static DateTimeFormatter determineInputFormat(String dateOfBirth) {","lastModifiedDate":"2024-03-14"},{"lineNumber":68,"author":{"gitId":"jskimdev"},"content":" boolean isInputFromat1 \u003d dateOfBirth.split(\"/\").length \u003e 1;","lastModifiedDate":"2024-03-14"},{"lineNumber":69,"author":{"gitId":"Vision-2000"},"content":" return isInputFromat1 ? INPUTFORMAT1 : INPUTFORMAT2;","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":71,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":72,"author":{"gitId":"jskimdev"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":73,"author":{"gitId":"jskimdev"},"content":" public String toString() {","lastModifiedDate":"2024-03-14"},{"lineNumber":74,"author":{"gitId":"Vision-2000"},"content":" return dateOfBirth.format(OUTPUTFORMAT);","lastModifiedDate":"2024-03-19"},{"lineNumber":75,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":76,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"jskimdev"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"jskimdev"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"jskimdev"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"jskimdev"},"content":" return true;","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":82,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":83,"author":{"gitId":"jskimdev"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-17"},{"lineNumber":84,"author":{"gitId":"jskimdev"},"content":" if (!(other instanceof DateOfBirth)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":85,"author":{"gitId":"jskimdev"},"content":" return false;","lastModifiedDate":"2024-03-17"},{"lineNumber":86,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":87,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":88,"author":{"gitId":"jskimdev"},"content":" DateOfBirth otherDateOfBirth \u003d (DateOfBirth) other;","lastModifiedDate":"2024-03-17"},{"lineNumber":89,"author":{"gitId":"jskimdev"},"content":" return dateOfBirth.equals(otherDateOfBirth.dateOfBirth);","lastModifiedDate":"2024-03-17"},{"lineNumber":90,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":91,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":92,"author":{"gitId":"jskimdev"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"jskimdev"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-17"},{"lineNumber":94,"author":{"gitId":"jskimdev"},"content":" return dateOfBirth.hashCode();","lastModifiedDate":"2024-03-17"},{"lineNumber":95,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":96,"author":{"gitId":"jskimdev"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"jskimdev":91,"Vision-2000":5}},{"path":"src/main/java/seedu/address/model/patient/Email.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jskimdev"},"content":"package seedu.address.model.patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"jskimdev"},"content":" * Represents a Patient\u0027s email in the address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidEmail(String)}","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Email {","lastModifiedDate":"2016-09-21"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" private static final String SPECIAL_CHARACTERS \u003d \"+_.-\";","lastModifiedDate":"2021-07-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Emails should be of the format local-part@domain \"","lastModifiedDate":"2018-09-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":" + \"and adhere to the following constraints:\\n\"","lastModifiedDate":"2018-02-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":" + \"1. The local-part should only contain alphanumeric characters and these special characters, excluding \"","lastModifiedDate":"2018-02-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":" + \"the parentheses, (\" + SPECIAL_CHARACTERS + \"). The local-part may not start or end with any special \"","lastModifiedDate":"2021-07-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":" + \"characters.\\n\"","lastModifiedDate":"2021-07-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":" + \"2. This is followed by a \u0027@\u0027 and then a domain name. The domain name is made up of domain labels \"","lastModifiedDate":"2021-07-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":" + \"separated by periods.\\n\"","lastModifiedDate":"2021-07-20"},{"lineNumber":20,"author":{"gitId":"-"},"content":" + \"The domain name must:\\n\"","lastModifiedDate":"2018-02-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":" + \" - end with a domain label at least 2 characters long\\n\"","lastModifiedDate":"2021-07-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":" + \" - have each domain label start and end with alphanumeric characters\\n\"","lastModifiedDate":"2021-07-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":" + \" - have each domain label consist of alphanumeric characters, separated only by hyphens, if any.\";","lastModifiedDate":"2021-07-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // alphanumeric and special characters","lastModifiedDate":"2018-02-09"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String ALPHANUMERIC_NO_UNDERSCORE \u003d \"[^\\\\W_]+\"; // alphanumeric characters except underscore","lastModifiedDate":"2021-07-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String LOCAL_PART_REGEX \u003d \"^\" + ALPHANUMERIC_NO_UNDERSCORE + \"([\" + SPECIAL_CHARACTERS + \"]\"","lastModifiedDate":"2021-07-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" + ALPHANUMERIC_NO_UNDERSCORE + \")*\";","lastModifiedDate":"2021-07-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String DOMAIN_PART_REGEX \u003d ALPHANUMERIC_NO_UNDERSCORE","lastModifiedDate":"2021-07-20"},{"lineNumber":29,"author":{"gitId":"-"},"content":" + \"(-\" + ALPHANUMERIC_NO_UNDERSCORE + \")*\";","lastModifiedDate":"2021-07-20"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String DOMAIN_LAST_PART_REGEX \u003d \"(\" + DOMAIN_PART_REGEX + \"){2,}$\"; // At least two chars","lastModifiedDate":"2021-07-20"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String DOMAIN_REGEX \u003d \"(\" + DOMAIN_PART_REGEX + \"\\\\.)*\" + DOMAIN_LAST_PART_REGEX;","lastModifiedDate":"2021-07-20"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d LOCAL_PART_REGEX + \"@\" + DOMAIN_REGEX;","lastModifiedDate":"2021-07-20"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public final String value;","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Constructs an {@code Email}.","lastModifiedDate":"2017-05-30"},{"lineNumber":38,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * @param email A valid email address.","lastModifiedDate":"2017-05-30"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public Email(String email) {","lastModifiedDate":"2017-05-30"},{"lineNumber":42,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":" checkArgument(isValidEmail(email), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":44,"author":{"gitId":"-"},"content":" value \u003d email;","lastModifiedDate":"2018-08-14"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Returns if a given string is a valid email.","lastModifiedDate":"2018-04-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static boolean isValidEmail(String test) {","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" return value;","lastModifiedDate":"2016-08-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" if (!(other instanceof Email)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" Email otherEmail \u003d (Email) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return value.equals(otherEmail.value);","lastModifiedDate":"2023-07-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return value.hashCode();","lastModifiedDate":"2016-08-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"jskimdev":2,"-":77}},{"path":"src/main/java/seedu/address/model/patient/Name.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jskimdev"},"content":"package seedu.address.model.patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"jskimdev"},"content":" * Represents a Patient\u0027s name in the address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidName(String)}","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Name {","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2018-09-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \"Names should only contain alphanumeric characters and spaces, and it should not be blank\";","lastModifiedDate":"2018-04-04"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2017-01-16"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2017-01-16"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2017-01-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d \"[\\\\p{Alnum}][\\\\p{Alnum} ]*\";","lastModifiedDate":"2018-09-22"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public final String fullName;","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Constructs a {@code Name}.","lastModifiedDate":"2017-05-30"},{"lineNumber":25,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * @param name A valid name.","lastModifiedDate":"2017-05-30"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public Name(String name) {","lastModifiedDate":"2017-05-30"},{"lineNumber":29,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":" checkArgument(isValidName(name), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":31,"author":{"gitId":"-"},"content":" fullName \u003d name;","lastModifiedDate":"2018-08-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid name.","lastModifiedDate":"2018-04-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static boolean isValidName(String test) {","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" return fullName;","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (!(other instanceof Name)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" Name otherName \u003d (Name) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return fullName.equals(otherName.fullName);","lastModifiedDate":"2023-07-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return fullName.hashCode();","lastModifiedDate":"2016-08-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"jskimdev":2,"-":65}},{"path":"src/main/java/seedu/address/model/patient/NameContainsKeywordsPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jskimdev"},"content":"package seedu.address.model.patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-06-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":10,"author":{"gitId":"jskimdev"},"content":" * Tests that a {@code Patient}\u0027s {@code Name} matches any of the keywords given.","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":12,"author":{"gitId":"jskimdev"},"content":"public class NameContainsKeywordsPredicate implements Predicate\u003cPatient\u003e {","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":" private final List\u003cString\u003e keywords;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public NameContainsKeywordsPredicate(List\u003cString\u003e keywords) {","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":" this.keywords \u003d keywords;","lastModifiedDate":"2017-06-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"jskimdev"},"content":" public boolean test(Patient patient) {","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":" return keywords.stream()","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"jskimdev"},"content":" .anyMatch(keyword -\u003e StringUtil.containsWordIgnoreCase(patient.getName().fullName, keyword));","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" if (!(other instanceof NameContainsKeywordsPredicate)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate otherNameContainsKeywordsPredicate \u003d (NameContainsKeywordsPredicate) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" return keywords.equals(otherNameContainsKeywordsPredicate.keywords);","lastModifiedDate":"2023-07-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this).add(\"keywords\", keywords).toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"jskimdev":5,"-":39}},{"path":"src/main/java/seedu/address/model/patient/Patient.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jskimdev"},"content":"package seedu.address.model.patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"jskimdev"},"content":" * Represents a Patient in the address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2017-12-20"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"jskimdev"},"content":"public class Patient {","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":" private final Phone phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private final Email email;","lastModifiedDate":"2017-12-20"},{"lineNumber":19,"author":{"gitId":"jskimdev"},"content":" private final DateOfBirth dateOfBirth;","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"jskimdev"},"content":" private final Sex sex;","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final Address address;","lastModifiedDate":"2018-04-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"jskimdev"},"content":" public Patient(Name name, Phone phone, Email email, Address address, DateOfBirth dateOfBirth, Sex sex) {","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"jskimdev"},"content":" requireAllNonNull(name, phone, email, address, dateOfBirth, sex);","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20"},{"lineNumber":31,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":32,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20"},{"lineNumber":33,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-12-20"},{"lineNumber":34,"author":{"gitId":"jskimdev"},"content":" this.dateOfBirth \u003d dateOfBirth;","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"jskimdev"},"content":" this.sex \u003d sex;","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2017-07-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":" return phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2017-12-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public Address getAddress() {","lastModifiedDate":"2017-07-12"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return address;","lastModifiedDate":"2017-12-20"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":54,"author":{"gitId":"jskimdev"},"content":" public DateOfBirth getDateOfBirth() {","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"jskimdev"},"content":" return dateOfBirth;","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":58,"author":{"gitId":"jskimdev"},"content":" public Sex getSex() {","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"jskimdev"},"content":" return sex;","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same name.","lastModifiedDate":"2020-12-18"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":66,"author":{"gitId":"jskimdev"},"content":" public boolean isSamePatient(Patient otherPatient) {","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"jskimdev"},"content":" if (otherPatient \u003d\u003d this) {","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":71,"author":{"gitId":"jskimdev"},"content":" return otherPatient !\u003d null","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"jskimdev"},"content":" \u0026\u0026 otherPatient.getName().equals(getName())","lastModifiedDate":"2024-03-22"},{"lineNumber":73,"author":{"gitId":"jskimdev"},"content":" \u0026\u0026 otherPatient.getPhone().equals(getPhone());","lastModifiedDate":"2024-03-22"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":77,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":82,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10"},{"lineNumber":83,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":86,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":87,"author":{"gitId":"jskimdev"},"content":" if (!(other instanceof Patient)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":88,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":91,"author":{"gitId":"jskimdev"},"content":" Patient otherPatient \u003d (Patient) other;","lastModifiedDate":"2024-03-19"},{"lineNumber":92,"author":{"gitId":"jskimdev"},"content":" return name.equals(otherPatient.name)","lastModifiedDate":"2024-03-19"},{"lineNumber":93,"author":{"gitId":"jskimdev"},"content":" \u0026\u0026 phone.equals(otherPatient.phone)","lastModifiedDate":"2024-03-19"},{"lineNumber":94,"author":{"gitId":"jskimdev"},"content":" \u0026\u0026 email.equals(otherPatient.email)","lastModifiedDate":"2024-03-19"},{"lineNumber":95,"author":{"gitId":"jskimdev"},"content":" \u0026\u0026 address.equals(otherPatient.address)","lastModifiedDate":"2024-03-19"},{"lineNumber":96,"author":{"gitId":"jskimdev"},"content":" \u0026\u0026 dateOfBirth.equals(otherPatient.dateOfBirth)","lastModifiedDate":"2024-03-19"},{"lineNumber":97,"author":{"gitId":"jskimdev"},"content":" \u0026\u0026 sex.equals(otherPatient.sex);","lastModifiedDate":"2024-03-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":100,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":101,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":102,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24"},{"lineNumber":103,"author":{"gitId":"jskimdev"},"content":" return Objects.hash(name, phone, email, address, dateOfBirth, sex);","lastModifiedDate":"2024-03-18"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":108,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":113,"author":{"gitId":"jskimdev"},"content":" .add(\"date of birth\", dateOfBirth)","lastModifiedDate":"2024-03-17"},{"lineNumber":114,"author":{"gitId":"jskimdev"},"content":" .add(\"sex\", sex)","lastModifiedDate":"2024-03-18"},{"lineNumber":115,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":118,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"jskimdev":29,"-":89}},{"path":"src/main/java/seedu/address/model/patient/Phone.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jskimdev"},"content":"package seedu.address.model.patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"jskimdev"},"content":" * Represents a Patient\u0027s phone number in the address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidPhone(String)}","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Phone {","lastModifiedDate":"2016-09-21"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2018-09-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \"Phone numbers should only contain numbers, and it should be at least 3 digits long\";","lastModifiedDate":"2018-04-04"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d \"\\\\d{3,}\";","lastModifiedDate":"2018-09-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public final String value;","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Constructs a {@code Phone}.","lastModifiedDate":"2017-05-30"},{"lineNumber":20,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * @param phone A valid phone number.","lastModifiedDate":"2017-05-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public Phone(String phone) {","lastModifiedDate":"2017-05-30"},{"lineNumber":24,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" checkArgument(isValidPhone(phone), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":26,"author":{"gitId":"-"},"content":" value \u003d phone;","lastModifiedDate":"2018-08-14"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid phone number.","lastModifiedDate":"2018-04-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static boolean isValidPhone(String test) {","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" return value;","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" if (!(other instanceof Phone)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" Phone otherPhone \u003d (Phone) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return value.equals(otherPhone.value);","lastModifiedDate":"2023-07-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return value.hashCode();","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"jskimdev":2,"-":59}},{"path":"src/main/java/seedu/address/model/patient/PhoneMatchesPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Vision-2000"},"content":"package seedu.address.model.patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"Vision-2000"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"Vision-2000"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"Vision-2000"},"content":"/**","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"Vision-2000"},"content":" * Tests that a {@code Person}\u0027s {@code Phone} matches the number given.","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"Vision-2000"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"Vision-2000"},"content":"public class PhoneMatchesPredicate implements Predicate\u003cPatient\u003e {","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"Vision-2000"},"content":" private final Phone phone;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"Vision-2000"},"content":" public PhoneMatchesPredicate(Phone phone) {","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"Vision-2000"},"content":" this.phone \u003d phone;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"Vision-2000"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"Vision-2000"},"content":" public boolean test(Patient patient) {","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"Vision-2000"},"content":" if (patient \u003d\u003d null) {","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"Vision-2000"},"content":" return false;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"Vision-2000"},"content":" return patient.getPhone().equals(this.phone);","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"Vision-2000"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"Vision-2000"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"Vision-2000"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"Vision-2000"},"content":" return true;","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"Vision-2000"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"Vision-2000"},"content":" if (!(other instanceof PhoneMatchesPredicate)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"Vision-2000"},"content":" return false;","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"Vision-2000"},"content":" PhoneMatchesPredicate otherPhoneMatchesPredicate \u003d (PhoneMatchesPredicate) other;","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"Vision-2000"},"content":" return phone.equals(otherPhoneMatchesPredicate.phone);","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"Vision-2000"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"Vision-2000"},"content":" public String toString() {","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"Vision-2000"},"content":" return new ToStringBuilder(this).add(\"phone\", phone).toString();","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"Vision-2000"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"Vision-2000":44}},{"path":"src/main/java/seedu/address/model/patient/Sex.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jskimdev"},"content":"package seedu.address.model.patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"jskimdev"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"jskimdev"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"jskimdev"},"content":" * Represents a Patient\u0027s sex in the patient list.","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"jskimdev"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidSex(String)}","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"jskimdev"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"jskimdev"},"content":"public class Sex {","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"jskimdev"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Sex should only be Male or Female\";","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"jskimdev"},"content":" public final SexOption sex;","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"jskimdev"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"jskimdev"},"content":" * Constructus a {@code Sex}.","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"jskimdev"},"content":" *","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"jskimdev"},"content":" * @param sex A valid sex.","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"jskimdev"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"jskimdev"},"content":" public Sex(String sex) {","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"jskimdev"},"content":" requireNonNull(sex);","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"jskimdev"},"content":" checkArgument(isValidSex(sex), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"jskimdev"},"content":" this.sex \u003d assignSex(sex);","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"jskimdev"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"jskimdev"},"content":" * Returns true if a given string is a valid sex.","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"jskimdev"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"jskimdev"},"content":" public static boolean isValidSex(String test) {","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"jskimdev"},"content":" return test.equals(\"Male\") || test.equals(\"Female\") ? true : false;","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"jskimdev"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"jskimdev"},"content":" * Assign one of SexOption, Male or Female, depending on the sex input.","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"jskimdev"},"content":" *","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"jskimdev"},"content":" * @param sex sex input.","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"jskimdev"},"content":" * @return one of SexOption","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"jskimdev"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"jskimdev"},"content":" public SexOption assignSex(String sex) {","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"jskimdev"},"content":" if (sex.equals(\"Male\")) {","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"jskimdev"},"content":" return SexOption.MALE;","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"jskimdev"},"content":" } else if (sex.equals(\"Female\")) {","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"jskimdev"},"content":" return SexOption.FEMALE;","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"jskimdev"},"content":" } else {","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"jskimdev"},"content":" return null;","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"jskimdev"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"jskimdev"},"content":" public String toString() {","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"jskimdev"},"content":" return sex.getLabel();","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"jskimdev"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"jskimdev"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"jskimdev"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"jskimdev"},"content":" return true;","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"jskimdev"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"jskimdev"},"content":" if (!(other instanceof Sex)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"jskimdev"},"content":" return false;","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"jskimdev"},"content":" Sex otherSex \u003d (Sex) other;","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"jskimdev"},"content":" return sex.equals(otherSex.sex);","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"jskimdev"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"jskimdev"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"jskimdev"},"content":" return sex.hashCode();","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"jskimdev"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"jskimdev":73}},{"path":"src/main/java/seedu/address/model/patient/SexOption.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jskimdev"},"content":"package seedu.address.model.patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"jskimdev"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"jskimdev"},"content":" * Represents one of sex, Male or Female.","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"jskimdev"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"jskimdev"},"content":"public enum SexOption {","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"jskimdev"},"content":" MALE(\"Male\"),","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"jskimdev"},"content":" FEMALE(\"Female\");","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"jskimdev"},"content":" private final String label;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"jskimdev"},"content":" SexOption(String label) {","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"jskimdev"},"content":" this.label \u003d label;","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"jskimdev"},"content":" public String getLabel() {","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"jskimdev"},"content":" return label;","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"jskimdev"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"jskimdev":19}},{"path":"src/main/java/seedu/address/model/patient/UniquePatientList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jskimdev"},"content":"package seedu.address.model.patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2018-01-10"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Iterator;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.exceptions.DuplicatePatientException;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.exceptions.PatientNotFoundException;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"jskimdev"},"content":" * A list of patients that enforces uniqueness between its elements and does not allow nulls.","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"jskimdev"},"content":" * A patient is considered unique by comparing using {@code Patient#isSamePerson(Patient)}. As such,","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"jskimdev"},"content":" * adding and updating of persons uses Patient#isSamePerson(Patient) for equality so as to ensure that the patient","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"jskimdev"},"content":" * being added or updated is unique in terms of identity in the UniquePersonList. However, the removal of a patient","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"jskimdev"},"content":" * uses Patient#equals(Object) so as to ensure that the patient with exactly the same fields will be removed.","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Supports a minimal set of list operations.","lastModifiedDate":"2016-09-22"},{"lineNumber":22,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"jskimdev"},"content":" * @see Patient#isSamePatient(Patient)","lastModifiedDate":"2024-03-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"jskimdev"},"content":"public class UniquePatientList implements Iterable\u003cPatient\u003e {","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"jskimdev"},"content":" private final ObservableList\u003cPatient\u003e internalList \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"jskimdev"},"content":" private final ObservableList\u003cPatient\u003e internalUnmodifiableList \u003d","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" FXCollections.unmodifiableObservableList(internalList);","lastModifiedDate":"2018-12-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"jskimdev"},"content":" * Returns true if the list contains an equivalent patient as the given argument.","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"jskimdev"},"content":" public boolean contains(Patient toCheck) {","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":" requireNonNull(toCheck);","lastModifiedDate":"2017-05-15"},{"lineNumber":36,"author":{"gitId":"jskimdev"},"content":" return internalList.stream().anyMatch(toCheck::isSamePatient);","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"jskimdev"},"content":" * Adds a patient to the list.","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"jskimdev"},"content":" * The patient must not already exist in the list.","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"jskimdev"},"content":" public void add(Patient toAdd) {","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"-"},"content":" requireNonNull(toAdd);","lastModifiedDate":"2017-05-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":" if (contains(toAdd)) {","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"jskimdev"},"content":" throw new DuplicatePatientException();","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" internalList.add(toAdd);","lastModifiedDate":"2018-01-10"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":52,"author":{"gitId":"jskimdev"},"content":" * Replaces the patient {@code target} in the list with {@code editedPatient}.","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * {@code target} must exist in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":54,"author":{"gitId":"jskimdev"},"content":" * The patient identity of {@code editedPatient} must not be the same as another existing patient in the list.","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":56,"author":{"gitId":"jskimdev"},"content":" public void setPatient(Patient target, Patient editedPatient) {","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"jskimdev"},"content":" requireAllNonNull(target, editedPatient);","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" int index \u003d internalList.indexOf(target);","lastModifiedDate":"2017-06-07"},{"lineNumber":60,"author":{"gitId":"-"},"content":" if (index \u003d\u003d -1) {","lastModifiedDate":"2017-06-07"},{"lineNumber":61,"author":{"gitId":"jskimdev"},"content":" throw new PatientNotFoundException();","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-07"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-07"},{"lineNumber":64,"author":{"gitId":"jskimdev"},"content":" if (!target.isSamePatient(editedPatient) \u0026\u0026 contains(editedPatient)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"jskimdev"},"content":" throw new DuplicatePatientException();","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":68,"author":{"gitId":"jskimdev"},"content":" internalList.set(index, editedPatient);","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":72,"author":{"gitId":"jskimdev"},"content":" * Removes the equivalent patient from the list.","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"jskimdev"},"content":" * The patient must exist in the list.","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":75,"author":{"gitId":"jskimdev"},"content":" public void remove(Patient toRemove) {","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":" requireNonNull(toRemove);","lastModifiedDate":"2017-05-15"},{"lineNumber":77,"author":{"gitId":"-"},"content":" if (!internalList.remove(toRemove)) {","lastModifiedDate":"2018-02-28"},{"lineNumber":78,"author":{"gitId":"jskimdev"},"content":" throw new PatientNotFoundException();","lastModifiedDate":"2024-03-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":82,"author":{"gitId":"jskimdev"},"content":" public void setPatients(UniquePatientList replacement) {","lastModifiedDate":"2024-03-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":" requireNonNull(replacement);","lastModifiedDate":"2018-08-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":" internalList.setAll(replacement.internalList);","lastModifiedDate":"2018-08-14"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":88,"author":{"gitId":"jskimdev"},"content":" * Replaces the contents of this list with {@code patients}.","lastModifiedDate":"2024-03-19"},{"lineNumber":89,"author":{"gitId":"jskimdev"},"content":" * {@code patients} must not contain duplicate patients.","lastModifiedDate":"2024-03-19"},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":91,"author":{"gitId":"jskimdev"},"content":" public void setPatients(List\u003cPatient\u003e patients) {","lastModifiedDate":"2024-03-19"},{"lineNumber":92,"author":{"gitId":"jskimdev"},"content":" requireAllNonNull(patients);","lastModifiedDate":"2024-03-19"},{"lineNumber":93,"author":{"gitId":"jskimdev"},"content":" if (!patientsAreUnique(patients)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":94,"author":{"gitId":"jskimdev"},"content":" throw new DuplicatePatientException();","lastModifiedDate":"2024-03-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-21"},{"lineNumber":97,"author":{"gitId":"jskimdev"},"content":" internalList.setAll(patients);","lastModifiedDate":"2024-03-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":100,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-09-01"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * Returns the backing list as an unmodifiable {@code ObservableList}.","lastModifiedDate":"2017-09-01"},{"lineNumber":102,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-09-01"},{"lineNumber":103,"author":{"gitId":"jskimdev"},"content":" public ObservableList\u003cPatient\u003e asUnmodifiableObservableList() {","lastModifiedDate":"2024-03-19"},{"lineNumber":104,"author":{"gitId":"-"},"content":" return internalUnmodifiableList;","lastModifiedDate":"2018-12-09"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":108,"author":{"gitId":"jskimdev"},"content":" public Iterator\u003cPatient\u003e iterator() {","lastModifiedDate":"2024-03-19"},{"lineNumber":109,"author":{"gitId":"-"},"content":" return internalList.iterator();","lastModifiedDate":"2016-08-24"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":113,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-21"},{"lineNumber":114,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":119,"author":{"gitId":"jskimdev"},"content":" if (!(other instanceof UniquePatientList)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":120,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":123,"author":{"gitId":"jskimdev"},"content":" UniquePatientList otherUniquePatientList \u003d (UniquePatientList) other;","lastModifiedDate":"2024-03-19"},{"lineNumber":124,"author":{"gitId":"jskimdev"},"content":" return internalList.equals(otherUniquePatientList.internalList);","lastModifiedDate":"2024-03-19"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":128,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-21"},{"lineNumber":129,"author":{"gitId":"-"},"content":" return internalList.hashCode();","lastModifiedDate":"2016-09-21"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-24"},{"lineNumber":133,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-24"},{"lineNumber":134,"author":{"gitId":"-"},"content":" return internalList.toString();","lastModifiedDate":"2019-02-24"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-24"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-24"},{"lineNumber":137,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":138,"author":{"gitId":"jskimdev"},"content":" * Returns true if {@code patients} contains only unique patients.","lastModifiedDate":"2024-03-19"},{"lineNumber":139,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":140,"author":{"gitId":"jskimdev"},"content":" private boolean patientsAreUnique(List\u003cPatient\u003e patients) {","lastModifiedDate":"2024-03-19"},{"lineNumber":141,"author":{"gitId":"jskimdev"},"content":" for (int i \u003d 0; i \u003c patients.size() - 1; i++) {","lastModifiedDate":"2024-03-19"},{"lineNumber":142,"author":{"gitId":"jskimdev"},"content":" for (int j \u003d i + 1; j \u003c patients.size(); j++) {","lastModifiedDate":"2024-03-19"},{"lineNumber":143,"author":{"gitId":"jskimdev"},"content":" if (patients.get(i).isSamePatient(patients.get(j))) {","lastModifiedDate":"2024-03-19"},{"lineNumber":144,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-04-19"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":148,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":150,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"jskimdev":49,"-":101}},{"path":"src/main/java/seedu/address/model/patient/exceptions/DuplicatePatientException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jskimdev"},"content":"package seedu.address.model.patient.exceptions;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-09"},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Signals that the operation will result in duplicate Persons (Persons are considered duplicates if they have the same","lastModifiedDate":"2018-04-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":" * identity).","lastModifiedDate":"2018-04-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-09"},{"lineNumber":7,"author":{"gitId":"jskimdev"},"content":"public class DuplicatePatientException extends RuntimeException {","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"jskimdev"},"content":" public DuplicatePatientException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":" super(\"Operation would result in duplicate persons\");","lastModifiedDate":"2017-06-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-09"}],"authorContributionMap":{"jskimdev":3,"-":8}},{"path":"src/main/java/seedu/address/model/patient/exceptions/PatientNotFoundException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jskimdev"},"content":"package seedu.address.model.patient.exceptions;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"jskimdev"},"content":"/**","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"jskimdev"},"content":" * Signals that the operation is unable to find the specified patient.","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"jskimdev"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"jskimdev"},"content":"public class PatientNotFoundException extends RuntimeException {}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"jskimdev":6}},{"path":"src/main/java/seedu/address/model/util/SampleDataUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.util;","lastModifiedDate":"2016-12-20"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-12-20"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-12-20"},{"lineNumber":5,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Address;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.DateOfBirth;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Email;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Name;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Phone;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Sex;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20"},{"lineNumber":17,"author":{"gitId":"jskimdev"},"content":" public static Patient[] getSamplePersons() {","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"jskimdev"},"content":" return new Patient[] {","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"jskimdev"},"content":" new Patient(new Name(\"Alex Yeoh\"), new Phone(\"87438807\"), new Email(\"alexyeoh@example.com\"),","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":" new Address(\"Blk 30 Geylang Street 29, #06-40\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":21,"author":{"gitId":"jskimdev"},"content":" new DateOfBirth(\"25/2/2024\"), new Sex(\"Male\")),","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"jskimdev"},"content":" new Patient(new Name(\"Bernice Yu\"), new Phone(\"99272758\"), new Email(\"berniceyu@example.com\"),","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":" new Address(\"Blk 30 Lorong 3 Serangoon Gardens, #07-18\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":24,"author":{"gitId":"Vision-2000"},"content":" new DateOfBirth(\"2024-2-25\"), new Sex(\"Female\")),","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"jskimdev"},"content":" new Patient(new Name(\"Charlotte Oliveiro\"), new Phone(\"93210283\"), new Email(\"charlotte@example.com\"),","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" new Address(\"Blk 11 Ang Mo Kio Street 74, #11-04\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":27,"author":{"gitId":"Vision-2000"},"content":" new DateOfBirth(\"12/12/2024\"), new Sex(\"Female\")),","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"jskimdev"},"content":" new Patient(new Name(\"David Li\"), new Phone(\"91031282\"), new Email(\"lidavid@example.com\"),","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" new Address(\"Blk 436 Serangoon Gardens Street 26, #16-43\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":30,"author":{"gitId":"jskimdev"},"content":" new DateOfBirth(\"25/2/2024\"), new Sex(\"Male\")),","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"jskimdev"},"content":" new Patient(new Name(\"Irfan Ibrahim\"), new Phone(\"92492021\"), new Email(\"irfan@example.com\"),","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":" new Address(\"Blk 47 Tampines Street 20, #17-35\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":33,"author":{"gitId":"jskimdev"},"content":" new DateOfBirth(\"25/2/2024\"), new Sex(\"Male\")),","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"jskimdev"},"content":" new Patient(new Name(\"Roy Balakrishnan\"), new Phone(\"92624417\"), new Email(\"royb@example.com\"),","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":" new Address(\"Blk 45 Aljunied Street 85, #11-31\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":36,"author":{"gitId":"jskimdev"},"content":" new DateOfBirth(\"25/2/2024\"), new Sex(\"Male\")),","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20"},{"lineNumber":41,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07"},{"lineNumber":42,"author":{"gitId":"jskimdev"},"content":" for (Patient samplePatient : getSamplePersons()) {","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"jskimdev"},"content":" sampleAb.addPerson(samplePatient);","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":45,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":47,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20"}],"authorContributionMap":{"jskimdev":21,"-":24,"Vision-2000":2}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedPerson.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Address;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.DateOfBirth;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Email;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Name;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Phone;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Sex;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":15,"author":{"gitId":"jskimdev"},"content":" * Jackson-friendly version of {@link Patient}.","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"class JsonAdaptedPerson {","lastModifiedDate":"2018-12-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"jskimdev"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Patient\u0027s %s field is missing!\";","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private final String name;","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final String phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final String address;","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"jskimdev"},"content":" private final String dateOfBirth;","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"jskimdev"},"content":" private final String sex;","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"jskimdev"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given patient details.","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(@JsonProperty(\"name\") String name, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @JsonProperty(\"email\") String email, @JsonProperty(\"address\") String address,","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"jskimdev"},"content":" @JsonProperty(\"date of birth\") String dateOfBirth,","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"jskimdev"},"content":" @JsonProperty(\"sex\") String sex) {","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"jskimdev"},"content":" this.dateOfBirth \u003d dateOfBirth;","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"jskimdev"},"content":" this.sex \u003d sex;","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"jskimdev"},"content":" * Converts a given {@code Patient} into this class for Jackson use.","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"jskimdev"},"content":" public JsonAdaptedPerson(Patient source) {","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" phone \u003d source.getPhone().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" address \u003d source.getAddress().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"jskimdev"},"content":" dateOfBirth \u003d source.getDateOfBirth().dateOfBirth.toString();","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"jskimdev"},"content":" sex \u003d source.getSex().sex.getLabel();","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"jskimdev"},"content":" * Converts this Jackson-friendly adapted patient object into the model\u0027s {@code Patient} object.","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":59,"author":{"gitId":"jskimdev"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted patient.","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":61,"author":{"gitId":"jskimdev"},"content":" public Patient toModelType() throws IllegalValueException {","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" if (address \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(address)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":" final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2018-08-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":95,"author":{"gitId":"jskimdev"},"content":" if (dateOfBirth \u003d\u003d null) {","lastModifiedDate":"2024-03-17"},{"lineNumber":96,"author":{"gitId":"jskimdev"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-03-17"},{"lineNumber":97,"author":{"gitId":"jskimdev"},"content":" DateOfBirth.class.getSimpleName()));","lastModifiedDate":"2024-03-17"},{"lineNumber":98,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":99,"author":{"gitId":"jskimdev"},"content":" if (!DateOfBirth.isValidDateOfBirth(dateOfBirth)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":100,"author":{"gitId":"jskimdev"},"content":" throw new IllegalValueException(DateOfBirth.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":101,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":102,"author":{"gitId":"jskimdev"},"content":" final DateOfBirth modelDateOfBirth \u003d new DateOfBirth(dateOfBirth);","lastModifiedDate":"2024-03-17"},{"lineNumber":103,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":104,"author":{"gitId":"jskimdev"},"content":" if (sex \u003d\u003d null) {","lastModifiedDate":"2024-03-18"},{"lineNumber":105,"author":{"gitId":"jskimdev"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-03-18"},{"lineNumber":106,"author":{"gitId":"jskimdev"},"content":" Sex.class.getSimpleName()));","lastModifiedDate":"2024-03-18"},{"lineNumber":107,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":108,"author":{"gitId":"jskimdev"},"content":" if (!Sex.isValidSex(sex)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":109,"author":{"gitId":"jskimdev"},"content":" throw new IllegalValueException(Sex.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-18"},{"lineNumber":110,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":111,"author":{"gitId":"jskimdev"},"content":" final Sex modelSex \u003d new Sex(sex);","lastModifiedDate":"2024-03-18"},{"lineNumber":112,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":113,"author":{"gitId":"jskimdev"},"content":" return new Patient(modelName, modelPhone, modelEmail, modelAddress, modelDateOfBirth, modelSex);","lastModifiedDate":"2024-03-19"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"jskimdev":42,"-":74}},{"path":"src/main/java/seedu/address/storage/JsonSerializableAddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonRootName;","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2018-08-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * An Immutable AddressBook that is serializable to JSON format.","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":"@JsonRootName(value \u003d \"addressbook\")","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"class JsonSerializableAddressBook {","lastModifiedDate":"2018-12-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"jskimdev"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"Persons list contains duplicate patient(s).\";","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedPerson\u003e persons \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonSerializableAddressBook} with the given persons.","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public JsonSerializableAddressBook(@JsonProperty(\"persons\") List\u003cJsonAdaptedPerson\u003e persons) {","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" this.persons.addAll(persons);","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Converts a given {@code ReadOnlyAddressBook} into this class for Jackson use.","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * @param source future changes to this will not affect the created {@code JsonSerializableAddressBook}.","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public JsonSerializableAddressBook(ReadOnlyAddressBook source) {","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" persons.addAll(source.getPersonList().stream().map(JsonAdaptedPerson::new).collect(Collectors.toList()));","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Converts this address book into the model\u0027s {@code AddressBook} object.","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated.","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public AddressBook toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" for (JsonAdaptedPerson jsonAdaptedPerson : persons) {","lastModifiedDate":"2018-08-13"},{"lineNumber":51,"author":{"gitId":"jskimdev"},"content":" Patient patient \u003d jsonAdaptedPerson.toModelType();","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"jskimdev"},"content":" if (addressBook.hasPerson(patient)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"jskimdev"},"content":" addressBook.addPerson(patient);","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"jskimdev":5,"-":55}},{"path":"src/main/java/seedu/address/ui/HelpWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-12-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2019-08-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2019-08-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.input.Clipboard;","lastModifiedDate":"2019-08-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.input.ClipboardContent;","lastModifiedDate":"2019-08-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Controller for a help page","lastModifiedDate":"2016-08-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class HelpWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-12-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":18,"author":{"gitId":"Vision-2000"},"content":" public static final String USERGUIDE_URL \u003d \"https://ay2324s2-cs2103t-t14-2.github.io/tp/UserGuide.html\";","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String HELP_MESSAGE \u003d \"Refer to the user guide: \" + USERGUIDE_URL;","lastModifiedDate":"2019-08-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(HelpWindow.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"HelpWindow.fxml\";","lastModifiedDate":"2016-09-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-12-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private Button copyButton;","lastModifiedDate":"2019-08-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-08-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2019-08-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Label helpMessage;","lastModifiedDate":"2019-08-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-12-01"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-12-01"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * @param root Stage to use as the root of the HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-12-01"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public HelpWindow(Stage root) {","lastModifiedDate":"2017-12-01"},{"lineNumber":36,"author":{"gitId":"-"},"content":" super(FXML, root);","lastModifiedDate":"2017-12-01"},{"lineNumber":37,"author":{"gitId":"-"},"content":" helpMessage.setText(HELP_MESSAGE);","lastModifiedDate":"2019-08-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-12-01"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-12-01"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public HelpWindow() {","lastModifiedDate":"2017-12-01"},{"lineNumber":44,"author":{"gitId":"-"},"content":" this(new Stage());","lastModifiedDate":"2017-12-01"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-01"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-01"},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Shows the help window.","lastModifiedDate":"2017-08-16"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * @throws IllegalStateException","lastModifiedDate":"2017-08-16"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * \u003cul\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * if this method is called on a thread other than the JavaFX Application Thread.","lastModifiedDate":"2017-08-16"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * if this method is called during animation or layout processing.","lastModifiedDate":"2017-08-16"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * if this method is called on the primary stage.","lastModifiedDate":"2017-08-16"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * if {@code dialogStage} is already showing.","lastModifiedDate":"2017-08-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * \u003c/ul\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void show() {","lastModifiedDate":"2016-08-18"},{"lineNumber":66,"author":{"gitId":"-"},"content":" logger.fine(\"Showing help page about the application.\");","lastModifiedDate":"2016-12-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":" getRoot().show();","lastModifiedDate":"2018-02-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" getRoot().centerOnScreen();","lastModifiedDate":"2019-08-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-15"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * Returns true if the help window is currently being shown.","lastModifiedDate":"2018-03-15"},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-15"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public boolean isShowing() {","lastModifiedDate":"2018-03-15"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return getRoot().isShowing();","lastModifiedDate":"2018-03-15"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Hides the help window.","lastModifiedDate":"2018-12-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void hide() {","lastModifiedDate":"2018-12-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":" getRoot().hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-15"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Focuses on the help window.","lastModifiedDate":"2018-03-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void focus() {","lastModifiedDate":"2018-03-15"},{"lineNumber":89,"author":{"gitId":"-"},"content":" getRoot().requestFocus();","lastModifiedDate":"2018-03-15"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-08-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-08-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Copies the URL to the user guide to the clipboard.","lastModifiedDate":"2019-08-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-08-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2019-08-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":" private void copyUrl() {","lastModifiedDate":"2019-08-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":" final Clipboard clipboard \u003d Clipboard.getSystemClipboard();","lastModifiedDate":"2019-08-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" final ClipboardContent url \u003d new ClipboardContent();","lastModifiedDate":"2019-08-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" url.putString(USERGUIDE_URL);","lastModifiedDate":"2019-08-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":" clipboard.setContent(url);","lastModifiedDate":"2019-08-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-08-19"},{"lineNumber":102,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"-":101,"Vision-2000":1}},{"path":"src/main/java/seedu/address/ui/PersonCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-09-21"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2016-09-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2016-09-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24"},{"lineNumber":7,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":10,"author":{"gitId":"jskimdev"},"content":" * An UI component that displays information of a {@code Patient}.","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class PersonCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":14,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"PersonListCard.fxml\";","lastModifiedDate":"2016-09-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2017-03-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2017-03-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2017-03-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * @see \u003ca href\u003d\"https://github.com/se-edu/addressbook-level4/issues/336\"\u003eThe issue on AddressBook level 4\u003c/a\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":24,"author":{"gitId":"jskimdev"},"content":" public final Patient patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private HBox cardPane;","lastModifiedDate":"2016-09-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private Label name;","lastModifiedDate":"2016-09-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Label id;","lastModifiedDate":"2016-09-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private Label phone;","lastModifiedDate":"2016-09-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private Label address;","lastModifiedDate":"2016-09-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private Label email;","lastModifiedDate":"2016-09-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":39,"author":{"gitId":"jskimdev"},"content":" private Label dateOfBirth;","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"Vision-2000"},"content":" @FXML","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"Vision-2000"},"content":" private Label sex;","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":44,"author":{"gitId":"jskimdev"},"content":" * Creates a {@code PersonCode} with the given {@code Patient} and index to display.","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":46,"author":{"gitId":"jskimdev"},"content":" public PersonCard(Patient patient, int displayedIndex) {","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":48,"author":{"gitId":"jskimdev"},"content":" this.patient \u003d patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21"},{"lineNumber":50,"author":{"gitId":"jskimdev"},"content":" name.setText(patient.getName().fullName);","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"jskimdev"},"content":" phone.setText(patient.getPhone().value);","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"jskimdev"},"content":" address.setText(patient.getAddress().value);","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"jskimdev"},"content":" email.setText(patient.getEmail().value);","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"jskimdev"},"content":" dateOfBirth.setText(patient.getDateOfBirth().toString());","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"Vision-2000"},"content":" sex.setText(patient.getSex().toString());","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":57,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"jskimdev":12,"-":42,"Vision-2000":3}},{"path":"src/main/java/seedu/address/ui/PersonListPanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-08-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-08-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.ListCell;","lastModifiedDate":"2016-09-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.control.ListView;","lastModifiedDate":"2016-08-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Panel containing the list of persons.","lastModifiedDate":"2016-09-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class PersonListPanel extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"PersonListPanel.fxml\";","lastModifiedDate":"2016-09-14"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(PersonListPanel.class);","lastModifiedDate":"2017-04-01"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":21,"author":{"gitId":"jskimdev"},"content":" private ListView\u003cPatient\u003e personListView;","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Creates a {@code PersonListPanel} with the given {@code ObservableList}.","lastModifiedDate":"2020-05-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":26,"author":{"gitId":"jskimdev"},"content":" public PersonListPanel(ObservableList\u003cPatient\u003e patientList) {","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":28,"author":{"gitId":"jskimdev"},"content":" personListView.setItems(patientList);","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" personListView.setCellFactory(listView -\u003e new PersonListViewCell());","lastModifiedDate":"2016-08-18"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":33,"author":{"gitId":"jskimdev"},"content":" * Custom {@code ListCell} that displays the graphics of a {@code Patient} using a {@code PersonCard}.","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":35,"author":{"gitId":"jskimdev"},"content":" class PersonListViewCell extends ListCell\u003cPatient\u003e {","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":37,"author":{"gitId":"jskimdev"},"content":" protected void updateItem(Patient patient, boolean empty) {","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"jskimdev"},"content":" super.updateItem(patient, empty);","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":40,"author":{"gitId":"jskimdev"},"content":" if (empty || patient \u003d\u003d null) {","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":" setGraphic(null);","lastModifiedDate":"2016-09-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" setText(null);","lastModifiedDate":"2016-09-21"},{"lineNumber":43,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2016-09-21"},{"lineNumber":44,"author":{"gitId":"jskimdev"},"content":" setGraphic(new PersonCard(patient, getIndex() + 1).getRoot());","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"jskimdev":10,"-":39}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2016-08-26"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Menu?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuBar?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuItem?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.SplitPane?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"\u003cfx:root type\u003d\"javafx.stage.Stage\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"","lastModifiedDate":"2023-07-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":" title\u003d\"Address App\" minWidth\u003d\"450\" minHeight\u003d\"600\" onCloseRequest\u003d\"#handleExit\"\u003e","lastModifiedDate":"2018-12-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cicons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cImage url\u003d\"@/images/address_book_32.png\" /\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/icons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cscene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cScene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@DarkTheme.css\" /\u003e","lastModifiedDate":"2016-08-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@Extensions.css\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003cVBox\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cMenuBar fx:id\u003d\"menuBar\" VBox.vgrow\u003d\"NEVER\"\u003e","lastModifiedDate":"2017-06-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"File\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003cMenuItem mnemonicParsing\u003d\"false\" onAction\u003d\"#handleExit\" text\u003d\"Exit\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"Help\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cMenuItem fx:id\u003d\"helpMenuItem\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleHelp\" text\u003d\"Help\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003c/MenuBar\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"commandBoxPlaceholder\" styleClass\u003d\"pane-with-border\"\u003e","lastModifiedDate":"2017-05-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"resultDisplayPlaceholder\" styleClass\u003d\"pane-with-border\"","lastModifiedDate":"2017-05-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":" minHeight\u003d\"100\" prefHeight\u003d\"100\" maxHeight\u003d\"100\"\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":45,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":47,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":49,"author":{"gitId":"jskimdev"},"content":" \u003cVBox fx:id\u003d\"patientList\" styleClass\u003d\"pane-with-border\" minWidth\u003d\"340\" prefWidth\u003d\"340\" VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"10\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"personListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\"/\u003e","lastModifiedDate":"2017-06-21"},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"statusbarPlaceholder\" VBox.vgrow\u003d\"NEVER\" /\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003c/scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":60,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-11-29"}],"authorContributionMap":{"jskimdev":1,"-":59}},{"path":"src/main/resources/view/PersonListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003cHBox id\u003d\"cardPane\" fx:id\u003d\"cardPane\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-07-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2017-03-28"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"jskimdev"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"120\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003c/Label\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"name\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2016-09-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"jskimdev"},"content":" \u003cLabel fx:id\u003d\"dateOfBirth\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$dateOfBirth\" /\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"Vision-2000"},"content":" \u003cLabel fx:id\u003d\"sex\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$sex\" /\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"jskimdev":2,"-":34,"Vision-2000":1}},{"path":"src/test/java/seedu/address/logic/LogicManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DATEOFBIRTH_DESC_AMY;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SEX_DESC_AMY;","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":13,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.testutil.TypicalPatients.AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2018-12-09"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2017-01-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2016-09-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-09"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-31"},{"lineNumber":32,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-12-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2018-12-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2018-12-09"},{"lineNumber":36,"author":{"gitId":"jskimdev"},"content":"import seedu.address.testutil.PatientBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":"public class LogicManagerTest {","lastModifiedDate":"2016-09-22"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_IO_EXCEPTION \u003d new IOException(\"dummy IO exception\");","lastModifiedDate":"2023-06-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_AD_EXCEPTION \u003d new AccessDeniedException(\"dummy access denied exception\");","lastModifiedDate":"2023-06-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public Path temporaryFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":45,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2018-12-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2019-04-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d","lastModifiedDate":"2019-04-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(temporaryFolder.resolve(\"addressBook.json\"));","lastModifiedDate":"2019-04-25"},{"lineNumber":52,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2019-04-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2018-12-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void execute_invalidCommandFormat_throwsParseException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":59,"author":{"gitId":"-"},"content":" String invalidCommand \u003d \"uicfhmowqewca\";","lastModifiedDate":"2017-06-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertParseException(invalidCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-06-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-14"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void execute_commandExecutionError_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":65,"author":{"gitId":"-"},"content":" String deleteCommand \u003d \"delete 9\";","lastModifiedDate":"2017-06-14"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertCommandException(deleteCommand, MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2017-06-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void execute_validCommand_success() throws Exception {","lastModifiedDate":"2019-03-14"},{"lineNumber":71,"author":{"gitId":"-"},"content":" String listCommand \u003d ListCommand.COMMAND_WORD;","lastModifiedDate":"2017-06-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertCommandSuccess(listCommand, ListCommand.MESSAGE_SUCCESS, model);","lastModifiedDate":"2017-06-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2019-04-25"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-06-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-06-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2023-06-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":98,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":99,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14"},{"lineNumber":100,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14"},{"lineNumber":101,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14"},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":106,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":107,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a ParseException is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":108,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":109,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":110,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11"},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":114,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14"},{"lineNumber":115,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a CommandException is thrown and that the result message is correct.","lastModifiedDate":"2017-06-14"},{"lineNumber":116,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":117,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14"},{"lineNumber":118,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":123,"author":{"gitId":"-"},"content":" * Executes the command, confirms that the exception is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":124,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":126,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":127,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14"},{"lineNumber":128,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-05-31"},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":132,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":133,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":134,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":135,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":136,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":137,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":138,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":139,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":140,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31"},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14"},{"lineNumber":142,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19"},{"lineNumber":145,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":146,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13"},{"lineNumber":147,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13"},{"lineNumber":148,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13"},{"lineNumber":149,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13"},{"lineNumber":150,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":151,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13"},{"lineNumber":152,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":154,"author":{"gitId":"-"},"content":" // Inject LogicManager with an AddressBookStorage that throws the IOException e when saving","lastModifiedDate":"2023-06-13"},{"lineNumber":155,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(prefPath) {","lastModifiedDate":"2023-06-13"},{"lineNumber":156,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":157,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath)","lastModifiedDate":"2023-06-13"},{"lineNumber":158,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13"},{"lineNumber":159,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13"},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":161,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":163,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":164,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13"},{"lineNumber":165,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2023-06-13"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":167,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":169,"author":{"gitId":"-"},"content":" // Triggers the saveAddressBook method by executing an add command","lastModifiedDate":"2023-06-13"},{"lineNumber":170,"author":{"gitId":"-"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2023-06-13"},{"lineNumber":171,"author":{"gitId":"jskimdev"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + DATEOFBIRTH_DESC_AMY + SEX_DESC_AMY;","lastModifiedDate":"2024-03-18"},{"lineNumber":172,"author":{"gitId":"jskimdev"},"content":" Patient expectedPatient \u003d new PatientBuilder(AMY).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":173,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13"},{"lineNumber":174,"author":{"gitId":"jskimdev"},"content":" expectedModel.addPerson(expectedPatient);","lastModifiedDate":"2024-03-19"},{"lineNumber":175,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13"},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":177,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"jskimdev":8,"-":169}},{"path":"src/test/java/seedu/address/logic/commands/AddCommandIntegrationTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-15"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":5,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.testutil.TypicalPatients.getTypicalAddressBook;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-15"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-15"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-15"},{"lineNumber":14,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"jskimdev"},"content":"import seedu.address.testutil.PatientBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-15"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code AddCommand}.","lastModifiedDate":"2017-06-15"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-15"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class AddCommandIntegrationTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void execute_newPerson_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":31,"author":{"gitId":"jskimdev"},"content":" Patient validPatient \u003d new PatientBuilder().build();","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-15"},{"lineNumber":34,"author":{"gitId":"jskimdev"},"content":" expectedModel.addPerson(validPatient);","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":36,"author":{"gitId":"jskimdev"},"content":" assertCommandSuccess(new AddCommand(validPatient), model,","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"jskimdev"},"content":" String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validPatient)),","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":" expectedModel);","lastModifiedDate":"2019-02-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":43,"author":{"gitId":"jskimdev"},"content":" Patient patientInList \u003d model.getAddressBook().getPersonList().get(0);","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"jskimdev"},"content":" assertCommandFailure(new AddCommand(patientInList), model,","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"-"},"content":" AddCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"jskimdev":9,"-":39}},{"path":"src/test/java/seedu/address/logic/commands/AddCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-01-10"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.testutil.TypicalPatients.ALICE;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-05-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-05-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2017-05-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":25,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"jskimdev"},"content":"import seedu.address.testutil.PatientBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class AddCommandTest {","lastModifiedDate":"2017-05-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddCommand(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public void execute_personAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2017-05-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" ModelStubAcceptingPersonAdded modelStub \u003d new ModelStubAcceptingPersonAdded();","lastModifiedDate":"2017-05-12"},{"lineNumber":38,"author":{"gitId":"jskimdev"},"content":" Patient validPatient \u003d new PatientBuilder().build();","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":40,"author":{"gitId":"jskimdev"},"content":" CommandResult commandResult \u003d new AddCommand(validPatient).execute(modelStub);","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":42,"author":{"gitId":"jskimdev"},"content":" assertEquals(String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validPatient)),","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"jskimdev"},"content":" assertEquals(Arrays.asList(validPatient), modelStub.personsAdded);","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":49,"author":{"gitId":"jskimdev"},"content":" Patient validPatient \u003d new PatientBuilder().build();","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"jskimdev"},"content":" AddCommand addCommand \u003d new AddCommand(validPatient);","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"jskimdev"},"content":" ModelStub modelStub \u003d new ModelStubWithPerson(validPatient);","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, AddCommand.MESSAGE_DUPLICATE_PERSON, () -\u003e addCommand.execute(modelStub));","lastModifiedDate":"2019-05-03"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-22"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":58,"author":{"gitId":"jskimdev"},"content":" Patient alice \u003d new PatientBuilder().withName(\"Alice\").build();","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"jskimdev"},"content":" Patient bob \u003d new PatientBuilder().withName(\"Bob\").build();","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":" AddCommand addAliceCommand \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22"},{"lineNumber":61,"author":{"gitId":"-"},"content":" AddCommand addBobCommand \u003d new AddCommand(bob);","lastModifiedDate":"2017-06-22"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":63,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommand));","lastModifiedDate":"2017-06-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":66,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":67,"author":{"gitId":"-"},"content":" AddCommand addAliceCommandCopy \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommandCopy));","lastModifiedDate":"2017-06-22"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(1));","lastModifiedDate":"2017-06-22"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":73,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(null));","lastModifiedDate":"2017-06-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":76,"author":{"gitId":"jskimdev"},"content":" // different patient -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(addBobCommand));","lastModifiedDate":"2017-06-22"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(ALICE);","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" String expected \u003d AddCommand.class.getCanonicalName() + \"{toAdd\u003d\" + ALICE + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertEquals(expected, addCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2017-05-12"},{"lineNumber":89,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":90,"author":{"gitId":"-"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2017-05-12"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":93,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":101,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":102,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":108,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":112,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":113,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":117,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27"},{"lineNumber":118,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":122,"author":{"gitId":"jskimdev"},"content":" public void addPerson(Patient patient) {","lastModifiedDate":"2024-03-19"},{"lineNumber":123,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":127,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2018-11-27"},{"lineNumber":128,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":131,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":132,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-12"},{"lineNumber":133,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":136,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":137,"author":{"gitId":"jskimdev"},"content":" public boolean hasPerson(Patient patient) {","lastModifiedDate":"2024-03-19"},{"lineNumber":138,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":141,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":142,"author":{"gitId":"jskimdev"},"content":" public void deletePerson(Patient target) {","lastModifiedDate":"2024-03-19"},{"lineNumber":143,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":146,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":147,"author":{"gitId":"jskimdev"},"content":" public void setPerson(Patient target, Patient editedPatient) {","lastModifiedDate":"2024-03-19"},{"lineNumber":148,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":151,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":152,"author":{"gitId":"jskimdev"},"content":" public ObservableList\u003cPatient\u003e getFilteredPersonList() {","lastModifiedDate":"2024-03-19"},{"lineNumber":153,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":156,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":157,"author":{"gitId":"jskimdev"},"content":" public void updateFilteredPersonList(Predicate\u003cPatient\u003e predicate) {","lastModifiedDate":"2024-03-19"},{"lineNumber":158,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":162,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":163,"author":{"gitId":"jskimdev"},"content":" * A Model stub that contains a single patient.","lastModifiedDate":"2024-03-19"},{"lineNumber":164,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":165,"author":{"gitId":"-"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2018-08-07"},{"lineNumber":166,"author":{"gitId":"jskimdev"},"content":" private final Patient patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":168,"author":{"gitId":"jskimdev"},"content":" ModelStubWithPerson(Patient patient) {","lastModifiedDate":"2024-03-19"},{"lineNumber":169,"author":{"gitId":"jskimdev"},"content":" requireNonNull(patient);","lastModifiedDate":"2024-03-19"},{"lineNumber":170,"author":{"gitId":"jskimdev"},"content":" this.patient \u003d patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":173,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":174,"author":{"gitId":"jskimdev"},"content":" public boolean hasPerson(Patient patient) {","lastModifiedDate":"2024-03-19"},{"lineNumber":175,"author":{"gitId":"jskimdev"},"content":" requireNonNull(patient);","lastModifiedDate":"2024-03-19"},{"lineNumber":176,"author":{"gitId":"jskimdev"},"content":" return this.patient.isSamePatient(patient);","lastModifiedDate":"2024-03-19"},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":180,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":181,"author":{"gitId":"jskimdev"},"content":" * A Model stub that always accept the patient being added.","lastModifiedDate":"2024-03-19"},{"lineNumber":182,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":183,"author":{"gitId":"-"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2017-05-12"},{"lineNumber":184,"author":{"gitId":"jskimdev"},"content":" final ArrayList\u003cPatient\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-19"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":186,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07"},{"lineNumber":187,"author":{"gitId":"jskimdev"},"content":" public boolean hasPerson(Patient patient) {","lastModifiedDate":"2024-03-19"},{"lineNumber":188,"author":{"gitId":"jskimdev"},"content":" requireNonNull(patient);","lastModifiedDate":"2024-03-19"},{"lineNumber":189,"author":{"gitId":"jskimdev"},"content":" return personsAdded.stream().anyMatch(patient::isSamePatient);","lastModifiedDate":"2024-03-19"},{"lineNumber":190,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":192,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":193,"author":{"gitId":"jskimdev"},"content":" public void addPerson(Patient patient) {","lastModifiedDate":"2024-03-19"},{"lineNumber":194,"author":{"gitId":"jskimdev"},"content":" requireNonNull(patient);","lastModifiedDate":"2024-03-19"},{"lineNumber":195,"author":{"gitId":"jskimdev"},"content":" personsAdded.add(patient);","lastModifiedDate":"2024-03-19"},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":198,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":199,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04"},{"lineNumber":200,"author":{"gitId":"-"},"content":" return new AddressBook();","lastModifiedDate":"2017-05-04"},{"lineNumber":201,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":202,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":204,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12"}],"authorContributionMap":{"jskimdev":35,"-":169}},{"path":"src/test/java/seedu/address/logic/commands/CommandTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DATEOFBIRTH;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SEX;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-06-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05"},{"lineNumber":21,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"jskimdev"},"content":"import seedu.address.testutil.EditPatientDescriptorBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_AMY \u003d \"11111111\";","lastModifiedDate":"2017-07-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_BOB \u003d \"22222222\";","lastModifiedDate":"2017-07-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_AMY \u003d \"Block 312, Amy Street 1\";","lastModifiedDate":"2017-07-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_BOB \u003d \"Block 123, Bobby Street 3\";","lastModifiedDate":"2017-07-05"},{"lineNumber":38,"author":{"gitId":"jskimdev"},"content":" public static final String VALID_DATEOFBIRTH_AMY \u003d \"1/12/2024\";","lastModifiedDate":"2024-03-22"},{"lineNumber":39,"author":{"gitId":"jskimdev"},"content":" public static final String VALID_DATEOFBIRTH_BOB \u003d \"2024-1-3\";","lastModifiedDate":"2024-03-22"},{"lineNumber":40,"author":{"gitId":"jskimdev"},"content":" public static final String VALID_SEX_AMY \u003d \"Female\";","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"jskimdev"},"content":" public static final String VALID_SEX_BOB \u003d \"Male\";","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":51,"author":{"gitId":"jskimdev"},"content":" public static final String DATEOFBIRTH_DESC_AMY \u003d \" \" + PREFIX_DATEOFBIRTH + VALID_DATEOFBIRTH_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"jskimdev"},"content":" public static final String DATEOFBIRTH_DESC_BOB \u003d \" \" + PREFIX_DATEOFBIRTH + VALID_DATEOFBIRTH_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"jskimdev"},"content":" public static final String SEX_DESC_AMY \u003d \" \" + PREFIX_SEX + VALID_SEX_AMY;","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"jskimdev"},"content":" public static final String SEX_DESC_BOB \u003d \" \" + PREFIX_SEX + VALID_SEX_BOB;","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final String INVALID_NAME_DESC \u003d \" \" + PREFIX_NAME + \"James\u0026\"; // \u0027\u0026\u0027 not allowed in names","lastModifiedDate":"2017-07-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static final String INVALID_PHONE_DESC \u003d \" \" + PREFIX_PHONE + \"911a\"; // \u0027a\u0027 not allowed in phones","lastModifiedDate":"2017-07-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static final String INVALID_ADDRESS_DESC \u003d \" \" + PREFIX_ADDRESS; // empty string not allowed for addresses","lastModifiedDate":"2017-07-05"},{"lineNumber":60,"author":{"gitId":"jskimdev"},"content":" public static final String INVALID_DATEOFBIRTH_DESC \u003d \" \" + PREFIX_DATEOFBIRTH; // empty string not allowed for","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"jskimdev"},"content":" // date of birth","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"jskimdev"},"content":" public static final String INVALID_SEX_DESC \u003d \" \" + PREFIX_SEX + \"Others\";","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":67,"author":{"gitId":"jskimdev"},"content":" public static final EditCommand.EditPatientDescriptor DESC_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"jskimdev"},"content":" public static final EditCommand.EditPatientDescriptor DESC_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05"},{"lineNumber":71,"author":{"gitId":"jskimdev"},"content":" DESC_AMY \u003d new EditPatientDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-07-05"},{"lineNumber":73,"author":{"gitId":"jskimdev"},"content":" .withDateOfBirth(VALID_DATEOFBIRTH_AMY).withSex(VALID_SEX_AMY).build();","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"jskimdev"},"content":" DESC_BOB \u003d new EditPatientDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2024-03-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2017-07-05"},{"lineNumber":76,"author":{"gitId":"jskimdev"},"content":" .withDateOfBirth(VALID_DATEOFBIRTH_BOB).withSex(VALID_SEX_BOB).build();","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":79,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09"},{"lineNumber":82,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25"},{"lineNumber":83,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25"},{"lineNumber":85,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":86,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":90,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15"},{"lineNumber":91,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":95,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09"},{"lineNumber":98,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":99,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25"},{"lineNumber":100,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":101,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":105,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":106,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":107,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":108,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":109,"author":{"gitId":"jskimdev"},"content":" * - the address book, filtered patient list and selected patient in {@code actualModel} remain unchanged","lastModifiedDate":"2024-03-19"},{"lineNumber":110,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":111,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25"},{"lineNumber":112,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05"},{"lineNumber":113,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05"},{"lineNumber":114,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":115,"author":{"gitId":"jskimdev"},"content":" List\u003cPatient\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2024-03-19"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03"},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":121,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20"},{"lineNumber":122,"author":{"gitId":"jskimdev"},"content":" * Updates {@code model}\u0027s filtered list to show only the patient at the given {@code targetIndex} in the","lastModifiedDate":"2024-03-19"},{"lineNumber":123,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31"},{"lineNumber":124,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20"},{"lineNumber":125,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31"},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31"},{"lineNumber":128,"author":{"gitId":"jskimdev"},"content":" Patient patient \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2024-03-19"},{"lineNumber":129,"author":{"gitId":"jskimdev"},"content":" final String[] splitName \u003d patient.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2024-03-19"},{"lineNumber":130,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":132,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":135,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"jskimdev":27,"-":108}},{"path":"src/test/java/seedu/address/logic/commands/DeleteByIndexCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":11,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.testutil.TypicalPatients.getTypicalAddressBook;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-06-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-05"},{"lineNumber":20,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2020-12-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * {@code DeleteCommand}.","lastModifiedDate":"2018-01-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":26,"author":{"gitId":"jeong-jaeho"},"content":"public class DeleteByIndexCommandTest {","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void execute_validIndexUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":32,"author":{"gitId":"jskimdev"},"content":" Patient patientToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"jeong-jaeho"},"content":" DeleteByIndexCommand deleteByIndexCommand \u003d new DeleteByIndexCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":35,"author":{"gitId":"jeong-jaeho"},"content":" String expectedMessage \u003d String.format(DeleteByIndexCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"jskimdev"},"content":" Messages.format(patientToDelete));","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":39,"author":{"gitId":"jskimdev"},"content":" expectedModel.deletePerson(patientToDelete);","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":41,"author":{"gitId":"jeong-jaeho"},"content":" assertCommandSuccess(deleteByIndexCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-06-05"},{"lineNumber":47,"author":{"gitId":"jeong-jaeho"},"content":" DeleteByIndexCommand deleteByIndexCommand \u003d new DeleteByIndexCommand(outOfBoundIndex);","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":49,"author":{"gitId":"jeong-jaeho"},"content":" assertCommandFailure(deleteByIndexCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void execute_validIndexFilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":54,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":56,"author":{"gitId":"jskimdev"},"content":" Patient patientToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"jeong-jaeho"},"content":" DeleteByIndexCommand deleteByIndexCommand \u003d new DeleteByIndexCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":59,"author":{"gitId":"jeong-jaeho"},"content":" String expectedMessage \u003d String.format(DeleteByIndexCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"jskimdev"},"content":" Messages.format(patientToDelete));","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":63,"author":{"gitId":"jskimdev"},"content":" expectedModel.deletePerson(patientToDelete);","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"-"},"content":" showNoPerson(expectedModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":66,"author":{"gitId":"jeong-jaeho"},"content":" assertCommandSuccess(deleteByIndexCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void execute_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":71,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":73,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-06-05"},{"lineNumber":74,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-06-05"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-06-05"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":77,"author":{"gitId":"jeong-jaeho"},"content":" DeleteByIndexCommand deleteByIndexCommand \u003d new DeleteByIndexCommand(outOfBoundIndex);","lastModifiedDate":"2024-03-21"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":79,"author":{"gitId":"jeong-jaeho"},"content":" assertCommandFailure(deleteByIndexCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":84,"author":{"gitId":"jeong-jaeho"},"content":" DeleteByIndexCommand deleteFirstCommand \u003d new DeleteByIndexCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-03-21"},{"lineNumber":85,"author":{"gitId":"jeong-jaeho"},"content":" DeleteByIndexCommand deleteSecondCommand \u003d new DeleteByIndexCommand(INDEX_SECOND_PERSON);","lastModifiedDate":"2024-03-21"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":91,"author":{"gitId":"jeong-jaeho"},"content":" DeleteByIndexCommand deleteFirstCommandCopy \u003d new DeleteByIndexCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-03-21"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2017-06-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2017-06-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2017-06-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":100,"author":{"gitId":"jskimdev"},"content":" // different patient -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23"},{"lineNumber":107,"author":{"gitId":"jeong-jaeho"},"content":" DeleteByIndexCommand deleteByIndexCommand \u003d new DeleteByIndexCommand(targetIndex);","lastModifiedDate":"2024-03-21"},{"lineNumber":108,"author":{"gitId":"jeong-jaeho"},"content":" String expected \u003d DeleteByIndexCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex + \"}\";","lastModifiedDate":"2024-03-21"},{"lineNumber":109,"author":{"gitId":"jeong-jaeho"},"content":" assertEquals(expected, deleteByIndexCommand.toString());","lastModifiedDate":"2024-03-21"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":113,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show no one.","lastModifiedDate":"2017-06-05"},{"lineNumber":114,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":115,"author":{"gitId":"-"},"content":" private void showNoPerson(Model model) {","lastModifiedDate":"2017-06-05"},{"lineNumber":116,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(p -\u003e false);","lastModifiedDate":"2017-06-12"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertTrue(model.getFilteredPersonList().isEmpty());","lastModifiedDate":"2018-02-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":120,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"jskimdev":9,"-":94,"jeong-jaeho":17}},{"path":"src/test/java/seedu/address/logic/commands/EditCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":15,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.testutil.TypicalPatients.getTypicalAddressBook;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":21,"author":{"gitId":"jskimdev"},"content":"import seedu.address.logic.commands.EditCommand.EditPatientDescriptor;","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-04"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-05-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-04"},{"lineNumber":26,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"jskimdev"},"content":"import seedu.address.testutil.EditPatientDescriptorBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"jskimdev"},"content":"import seedu.address.testutil.PatientBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-04"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for EditCommand.","lastModifiedDate":"2020-12-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-04"},{"lineNumber":33,"author":{"gitId":"-"},"content":"public class EditCommandTest {","lastModifiedDate":"2017-05-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":39,"author":{"gitId":"jskimdev"},"content":" Patient editedPatient \u003d new PatientBuilder().build();","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"jskimdev"},"content":" EditPatientDescriptor descriptor \u003d new EditPatientDescriptorBuilder(editedPatient).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":43,"author":{"gitId":"jskimdev"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPatient));","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":45,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":46,"author":{"gitId":"jskimdev"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPatient);","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":53,"author":{"gitId":"-"},"content":" Index indexLastPerson \u003d Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2017-05-18"},{"lineNumber":54,"author":{"gitId":"jskimdev"},"content":" Patient lastPatient \u003d model.getFilteredPersonList().get(indexLastPerson.getZeroBased());","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":56,"author":{"gitId":"jskimdev"},"content":" PatientBuilder personInList \u003d new PatientBuilder(lastPatient);","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"jskimdev"},"content":" Patient editedPatient \u003d personInList.withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"jskimdev"},"content":" .build();","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":60,"author":{"gitId":"jskimdev"},"content":" EditPatientDescriptor descriptor \u003d new EditPatientDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"jskimdev"},"content":" .withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(indexLastPerson, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":64,"author":{"gitId":"jskimdev"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPatient));","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":66,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":67,"author":{"gitId":"jskimdev"},"content":" expectedModel.setPerson(lastPatient, editedPatient);","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":74,"author":{"gitId":"jskimdev"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, new EditPatientDescriptor());","lastModifiedDate":"2024-03-19"},{"lineNumber":75,"author":{"gitId":"jskimdev"},"content":" Patient editedPatient \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":77,"author":{"gitId":"jskimdev"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPatient));","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":79,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":86,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":88,"author":{"gitId":"jskimdev"},"content":" Patient patientInFilteredList \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-03-19"},{"lineNumber":89,"author":{"gitId":"jskimdev"},"content":" Patient editedPatient \u003d new PatientBuilder(patientInFilteredList).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":90,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08"},{"lineNumber":91,"author":{"gitId":"jskimdev"},"content":" new EditPatientDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2024-03-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":93,"author":{"gitId":"jskimdev"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPatient));","lastModifiedDate":"2024-03-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":95,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":96,"author":{"gitId":"jskimdev"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPatient);","lastModifiedDate":"2024-03-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":101,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":102,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonUnfilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":103,"author":{"gitId":"jskimdev"},"content":" Patient firstPatient \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-03-19"},{"lineNumber":104,"author":{"gitId":"jskimdev"},"content":" EditPatientDescriptor descriptor \u003d new EditPatientDescriptorBuilder(firstPatient).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":105,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_SECOND_PERSON, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":111,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonFilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":112,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":114,"author":{"gitId":"jskimdev"},"content":" // edit patient in filtered list into a duplicate in address book","lastModifiedDate":"2024-03-19"},{"lineNumber":115,"author":{"gitId":"jskimdev"},"content":" Patient patientInList \u003d model.getAddressBook().getPersonList().get(INDEX_SECOND_PERSON.getZeroBased());","lastModifiedDate":"2024-03-19"},{"lineNumber":116,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08"},{"lineNumber":117,"author":{"gitId":"jskimdev"},"content":" new EditPatientDescriptorBuilder(patientInList).build());","lastModifiedDate":"2024-03-19"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":123,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":124,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-05-18"},{"lineNumber":125,"author":{"gitId":"jskimdev"},"content":" EditPatientDescriptor descriptor \u003d new EditPatientDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":126,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":131,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-18"},{"lineNumber":132,"author":{"gitId":"-"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2017-05-18"},{"lineNumber":133,"author":{"gitId":"-"},"content":" * but smaller than size of address book","lastModifiedDate":"2017-05-18"},{"lineNumber":134,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-18"},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":136,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":137,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":138,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-18"},{"lineNumber":139,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-05-18"},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-05-18"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":142,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex,","lastModifiedDate":"2018-08-08"},{"lineNumber":143,"author":{"gitId":"jskimdev"},"content":" new EditPatientDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2024-03-19"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":145,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":148,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":150,"author":{"gitId":"-"},"content":" final EditCommand standardCommand \u003d new EditCommand(INDEX_FIRST_PERSON, DESC_AMY);","lastModifiedDate":"2018-08-08"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":152,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":153,"author":{"gitId":"jskimdev"},"content":" EditPatientDescriptor copyDescriptor \u003d new EditPatientDescriptor(DESC_AMY);","lastModifiedDate":"2024-03-19"},{"lineNumber":154,"author":{"gitId":"-"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(INDEX_FIRST_PERSON, copyDescriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":155,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":157,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":158,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":160,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":163,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":164,"author":{"gitId":"jeong-jaeho"},"content":" assertFalse(standardCommand.equals(new DeleteAllCommand()));","lastModifiedDate":"2024-03-20"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":166,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_SECOND_PERSON, DESC_AMY)));","lastModifiedDate":"2017-05-25"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":169,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":170,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_FIRST_PERSON, DESC_BOB)));","lastModifiedDate":"2017-05-25"},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":173,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23"},{"lineNumber":176,"author":{"gitId":"jskimdev"},"content":" EditPatientDescriptor editPersonDescriptor \u003d new EditPatientDescriptor();","lastModifiedDate":"2024-03-19"},{"lineNumber":177,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2019-02-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":" String expected \u003d EditCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", editPersonDescriptor\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":" + editPersonDescriptor + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08"}],"authorContributionMap":{"jskimdev":34,"-":148,"jeong-jaeho":1}},{"path":"src/test/java/seedu/address/logic/commands/EditPatientDescriptorTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":15,"author":{"gitId":"jskimdev"},"content":"import seedu.address.logic.commands.EditCommand.EditPatientDescriptor;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"jskimdev"},"content":"import seedu.address.testutil.EditPatientDescriptorBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":18,"author":{"gitId":"jskimdev"},"content":"public class EditPatientDescriptorTest {","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":22,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-05"},{"lineNumber":23,"author":{"gitId":"jskimdev"},"content":" EditPatientDescriptor descriptorWithSameValues \u003d new EditPatientDescriptor(DESC_AMY);","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"jskimdev"},"content":" System.out.println(DESC_AMY);","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"jskimdev"},"content":" System.out.println(descriptorWithSameValues);","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(descriptorWithSameValues));","lastModifiedDate":"2017-05-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(DESC_AMY));","lastModifiedDate":"2017-05-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(null));","lastModifiedDate":"2017-05-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(5));","lastModifiedDate":"2017-05-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(DESC_BOB));","lastModifiedDate":"2017-05-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":41,"author":{"gitId":"jskimdev"},"content":" EditPatientDescriptor editedAmy \u003d new EditPatientDescriptorBuilder(DESC_AMY).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":45,"author":{"gitId":"jskimdev"},"content":" editedAmy \u003d new EditPatientDescriptorBuilder(DESC_AMY).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":49,"author":{"gitId":"jskimdev"},"content":" editedAmy \u003d new EditPatientDescriptorBuilder(DESC_AMY).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":53,"author":{"gitId":"jskimdev"},"content":" editedAmy \u003d new EditPatientDescriptorBuilder(DESC_AMY).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"jskimdev"},"content":" EditPatientDescriptor editPersonDescriptor \u003d new EditPatientDescriptor();","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"jskimdev"},"content":" String expected \u003d EditPatientDescriptor.class.getCanonicalName() + \"{name\u003d\"","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getName().orElse(null) + \", phone\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getPhone().orElse(null) + \", email\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getEmail().orElse(null) + \", address\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":64,"author":{"gitId":"jskimdev"},"content":" + editPersonDescriptor.getAddress().orElse(null) + \", date of birth\u003d\"","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"jskimdev"},"content":" + editPersonDescriptor.getDateOfBirth().orElse(null) + \", sex\u003d\"","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"jskimdev"},"content":" + editPersonDescriptor.getSex().orElse(null) + \"}\";","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertEquals(expected, editPersonDescriptor.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"jskimdev":15,"-":54}},{"path":"src/test/java/seedu/address/logic/commands/FindCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_PERSONS_LISTED_OVERVIEW;","lastModifiedDate":"2023-07-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2018-08-08"},{"lineNumber":8,"author":{"gitId":"Vision-2000"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.testutil.TypicalPatients.CARL;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.testutil.TypicalPatients.ELLE;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.testutil.TypicalPatients.FIONA;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.testutil.TypicalPatients.getTypicalAddressBook;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"Vision-2000"},"content":"import seedu.address.model.patient.Phone;","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"Vision-2000"},"content":"import seedu.address.model.patient.PhoneMatchesPredicate;","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code FindCommand}.","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class FindCommandTest {","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2018-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicate \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"first\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate secondPredicate \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"second\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":39,"author":{"gitId":"Vision-2000"},"content":" PhoneMatchesPredicate thirdPredicate \u003d","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"Vision-2000"},"content":" new PhoneMatchesPredicate(new Phone(\"99999999\"));","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":42,"author":{"gitId":"Vision-2000"},"content":" FindCommand findFirstCommand \u003d new FindCommand(firstPredicate, PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"Vision-2000"},"content":" FindCommand findSecondCommand \u003d new FindCommand(secondPredicate, PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"Vision-2000"},"content":" FindCommand findThirdCommand \u003d new FindCommand(thirdPredicate, PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"Vision-2000"},"content":" FindCommand findFirstCommandCopy \u003d new FindCommand(firstPredicate, PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommandCopy));","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(1));","lastModifiedDate":"2017-06-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(null));","lastModifiedDate":"2017-06-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":59,"author":{"gitId":"Vision-2000"},"content":" // different name -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(findSecondCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":61,"author":{"gitId":"Vision-2000"},"content":" assertFalse(findFirstCommand.equals(findThirdCommand));","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void execute_zeroKeywords_noPersonFound() {","lastModifiedDate":"2017-08-15"},{"lineNumber":66,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2017-06-12"},{"lineNumber":67,"author":{"gitId":"Vision-2000"},"content":" NameContainsKeywordsPredicate namePredicate \u003d prepareNamePredicate(\" \");","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"Vision-2000"},"content":" FindCommand command \u003d new FindCommand(namePredicate, PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"Vision-2000"},"content":" expectedModel.updateFilteredPersonList(namePredicate);","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void execute_multipleKeywords_multiplePersonsFound() {","lastModifiedDate":"2017-08-15"},{"lineNumber":76,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 3);","lastModifiedDate":"2017-06-12"},{"lineNumber":77,"author":{"gitId":"Vision-2000"},"content":" NameContainsKeywordsPredicate namePredicate \u003d prepareNamePredicate(\"Kurz Elle Kunz\");","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"Vision-2000"},"content":" FindCommand command \u003d new FindCommand(namePredicate, PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"Vision-2000"},"content":" expectedModel.updateFilteredPersonList(namePredicate);","lastModifiedDate":"2024-03-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(CARL, ELLE, FIONA), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"Vision-2000"},"content":" NameContainsKeywordsPredicate namePredicate \u003d prepareNamePredicate(\"name\");","lastModifiedDate":"2024-03-19"},{"lineNumber":87,"author":{"gitId":"Vision-2000"},"content":" PhoneMatchesPredicate phonePredicate \u003d preparePhonePredicate(\"12345678\");","lastModifiedDate":"2024-03-19"},{"lineNumber":88,"author":{"gitId":"Vision-2000"},"content":" FindCommand findCommand \u003d new FindCommand(namePredicate, phonePredicate);","lastModifiedDate":"2024-03-19"},{"lineNumber":89,"author":{"gitId":"Vision-2000"},"content":" String expected \u003d FindCommand.class.getCanonicalName() + \"{namePredicate\u003d\" + namePredicate + \", \"","lastModifiedDate":"2024-03-19"},{"lineNumber":90,"author":{"gitId":"Vision-2000"},"content":" + \"phonePredicate\u003d\" + phonePredicate + \"}\";","lastModifiedDate":"2024-03-19"},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertEquals(expected, findCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-12"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * Parses {@code userInput} into a {@code NameContainsKeywordsPredicate}.","lastModifiedDate":"2018-08-08"},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":97,"author":{"gitId":"Vision-2000"},"content":" private NameContainsKeywordsPredicate prepareNamePredicate(String userInput) {","lastModifiedDate":"2024-03-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" return new NameContainsKeywordsPredicate(Arrays.asList(userInput.split(\"\\\\s+\")));","lastModifiedDate":"2018-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":100,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":101,"author":{"gitId":"Vision-2000"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":102,"author":{"gitId":"Vision-2000"},"content":" * Parses {@code userInput} into a {@code PhoneMatchesPredicate}.","lastModifiedDate":"2024-03-19"},{"lineNumber":103,"author":{"gitId":"Vision-2000"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":104,"author":{"gitId":"Vision-2000"},"content":" private PhoneMatchesPredicate preparePhonePredicate(String userInput) {","lastModifiedDate":"2024-03-19"},{"lineNumber":105,"author":{"gitId":"Vision-2000"},"content":" return new PhoneMatchesPredicate(new Phone(userInput));","lastModifiedDate":"2024-03-19"},{"lineNumber":106,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":107,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"jskimdev":5,"-":72,"Vision-2000":30}},{"path":"src/test/java/seedu/address/logic/commands/ForceDeleteAllCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":4,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.testutil.TypicalPatients.getTypicalAddressBook;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2018-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":13,"author":{"gitId":"jeong-jaeho"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"jeong-jaeho"},"content":" * Contains integration and unit tests for DeleteAllCommand.","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"jeong-jaeho"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"jeong-jaeho"},"content":"public class ForceDeleteAllCommandTest {","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"jeong-jaeho"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"jeong-jaeho"},"content":" * Tests when AddressBook is empty.","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"jeong-jaeho"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public void execute_emptyAddressBook_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":22,"author":{"gitId":"-"},"content":" Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2018-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":25,"author":{"gitId":"jeong-jaeho"},"content":" assertCommandSuccess(new ForceDeleteAllCommand(), model, ForceDeleteAllCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":28,"author":{"gitId":"jeong-jaeho"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"jeong-jaeho"},"content":" * Tests when AddressBook is not empty.","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"jeong-jaeho"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void execute_nonEmptyAddressBook_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":" Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2018-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" expectedModel.setAddressBook(new AddressBook());","lastModifiedDate":"2018-11-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":37,"author":{"gitId":"jeong-jaeho"},"content":" assertCommandSuccess(new ForceDeleteAllCommand(), model, ForceDeleteAllCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-08"}],"authorContributionMap":{"jskimdev":1,"-":26,"jeong-jaeho":12}},{"path":"src/test/java/seedu/address/logic/commands/ListCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2018-01-31"},{"lineNumber":6,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.testutil.TypicalPatients.getTypicalAddressBook;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for ListCommand.","lastModifiedDate":"2017-06-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class ListCommandTest {","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private Model expectedModel;","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void execute_listIsNotFiltered_showsSameList() {","lastModifiedDate":"2017-08-15"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ListCommand(), model, ListCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public void execute_listIsFiltered_showsEverything() {","lastModifiedDate":"2017-08-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ListCommand(), model, ListCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"jskimdev":1,"-":38}},{"path":"src/test/java/seedu/address/logic/parser/AddCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-15"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DATEOFBIRTH_DESC_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DATEOFBIRTH_DESC_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_DATEOFBIRTH_DESC;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_SEX_DESC;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SEX_DESC_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SEX_DESC_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_DATEOFBIRTH_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SEX_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14"},{"lineNumber":31,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DATEOFBIRTH;","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-07-14"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14"},{"lineNumber":35,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SEX;","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":38,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.testutil.TypicalPatients.AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.testutil.TypicalPatients.BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-15"},{"lineNumber":45,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Address;","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.DateOfBirth;","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Email;","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Name;","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Phone;","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Sex;","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"jskimdev"},"content":"import seedu.address.testutil.PatientBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2017-06-15"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":60,"author":{"gitId":"jskimdev"},"content":" Patient expectedPatient \u003d new PatientBuilder(BOB).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":62,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":64,"author":{"gitId":"jskimdev"},"content":" + ADDRESS_DESC_BOB + DATEOFBIRTH_DESC_BOB + SEX_DESC_BOB, new AddCommand(expectedPatient));","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":67,"author":{"gitId":"-"},"content":" // multiple tags - all accepted","lastModifiedDate":"2017-06-15"},{"lineNumber":68,"author":{"gitId":"jskimdev"},"content":" Patient expectedPatientMultipleTags \u003d new PatientBuilder(BOB)","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-07-25"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":71,"author":{"gitId":"jskimdev"},"content":" NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB + DATEOFBIRTH_DESC_BOB","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"jskimdev"},"content":" + SEX_DESC_BOB,","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"jskimdev"},"content":" new AddCommand(expectedPatientMultipleTags));","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":78,"author":{"gitId":"-"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-07-14"},{"lineNumber":79,"author":{"gitId":"jskimdev"},"content":" + ADDRESS_DESC_BOB + DATEOFBIRTH_DESC_BOB + SEX_DESC_BOB;","lastModifiedDate":"2024-03-18"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":81,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":83,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":85,"author":{"gitId":"-"},"content":" // multiple phones","lastModifiedDate":"2023-07-14"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":87,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":89,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":91,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":93,"author":{"gitId":"-"},"content":" // multiple addresses","lastModifiedDate":"2023-07-14"},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertParseFailure(parser, ADDRESS_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":95,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":97,"author":{"gitId":"jskimdev"},"content":" // multiple date of birth","lastModifiedDate":"2024-03-19"},{"lineNumber":98,"author":{"gitId":"jskimdev"},"content":" assertParseFailure(parser, DATEOFBIRTH_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-03-19"},{"lineNumber":99,"author":{"gitId":"jskimdev"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_DATEOFBIRTH));","lastModifiedDate":"2024-03-19"},{"lineNumber":100,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":101,"author":{"gitId":"jskimdev"},"content":" // multiple sex","lastModifiedDate":"2024-03-19"},{"lineNumber":102,"author":{"gitId":"jskimdev"},"content":" assertParseFailure(parser, SEX_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-03-19"},{"lineNumber":103,"author":{"gitId":"jskimdev"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_SEX));","lastModifiedDate":"2024-03-19"},{"lineNumber":104,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":105,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":107,"author":{"gitId":"-"},"content":" validExpectedPersonString + PHONE_DESC_AMY + EMAIL_DESC_AMY + NAME_DESC_AMY + ADDRESS_DESC_AMY","lastModifiedDate":"2023-07-14"},{"lineNumber":108,"author":{"gitId":"jskimdev"},"content":" + DATEOFBIRTH_DESC_AMY + SEX_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-03-18"},{"lineNumber":109,"author":{"gitId":"jskimdev"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_ADDRESS, PREFIX_EMAIL, PREFIX_PHONE,","lastModifiedDate":"2024-03-17"},{"lineNumber":110,"author":{"gitId":"jskimdev"},"content":" PREFIX_DATEOFBIRTH, PREFIX_SEX));","lastModifiedDate":"2024-03-18"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":112,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":114,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":116,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":118,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_PHONE_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":126,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":127,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_ADDRESS_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":128,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":130,"author":{"gitId":"jskimdev"},"content":" // invalid date of birth","lastModifiedDate":"2024-03-19"},{"lineNumber":131,"author":{"gitId":"jskimdev"},"content":" assertParseFailure(parser, INVALID_DATEOFBIRTH_DESC + validExpectedPersonString,","lastModifiedDate":"2024-03-19"},{"lineNumber":132,"author":{"gitId":"jskimdev"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_DATEOFBIRTH));","lastModifiedDate":"2024-03-19"},{"lineNumber":133,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":134,"author":{"gitId":"jskimdev"},"content":" // invalid sex","lastModifiedDate":"2024-03-19"},{"lineNumber":135,"author":{"gitId":"jskimdev"},"content":" assertParseFailure(parser, INVALID_SEX_DESC + validExpectedPersonString,","lastModifiedDate":"2024-03-19"},{"lineNumber":136,"author":{"gitId":"jskimdev"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_SEX));","lastModifiedDate":"2024-03-19"},{"lineNumber":137,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":138,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":140,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":142,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":144,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":145,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":146,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":148,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":149,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_PHONE_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":150,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":152,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":153,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_ADDRESS_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":154,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":155,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":156,"author":{"gitId":"jskimdev"},"content":" // invalid date of birth","lastModifiedDate":"2024-03-19"},{"lineNumber":157,"author":{"gitId":"jskimdev"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_DATEOFBIRTH_DESC,","lastModifiedDate":"2024-03-19"},{"lineNumber":158,"author":{"gitId":"jskimdev"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_DATEOFBIRTH));","lastModifiedDate":"2024-03-19"},{"lineNumber":159,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":160,"author":{"gitId":"jskimdev"},"content":" // invalid sex","lastModifiedDate":"2024-03-19"},{"lineNumber":161,"author":{"gitId":"jskimdev"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_SEX_DESC,","lastModifiedDate":"2024-03-19"},{"lineNumber":162,"author":{"gitId":"jskimdev"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_SEX));","lastModifiedDate":"2024-03-19"},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":165,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":166,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":167,"author":{"gitId":"-"},"content":" // zero tags","lastModifiedDate":"2017-06-15"},{"lineNumber":168,"author":{"gitId":"jskimdev"},"content":" Patient expectedPatient \u003d new PatientBuilder(AMY).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":169,"author":{"gitId":"jskimdev"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY + ADDRESS_DESC_AMY","lastModifiedDate":"2024-03-17"},{"lineNumber":170,"author":{"gitId":"jskimdev"},"content":" + DATEOFBIRTH_DESC_AMY + SEX_DESC_AMY,","lastModifiedDate":"2024-03-19"},{"lineNumber":171,"author":{"gitId":"jskimdev"},"content":" new AddCommand(expectedPatient));","lastModifiedDate":"2024-03-19"},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":174,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":175,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":176,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":178,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":179,"author":{"gitId":"jskimdev"},"content":" assertParseFailure(parser, VALID_NAME_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-19"},{"lineNumber":180,"author":{"gitId":"jskimdev"},"content":" + DATEOFBIRTH_DESC_BOB + SEX_DESC_BOB,","lastModifiedDate":"2024-03-19"},{"lineNumber":181,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":183,"author":{"gitId":"-"},"content":" // missing phone prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":184,"author":{"gitId":"jskimdev"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_PHONE_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-19"},{"lineNumber":185,"author":{"gitId":"jskimdev"},"content":" + DATEOFBIRTH_DESC_BOB + SEX_DESC_BOB,","lastModifiedDate":"2024-03-19"},{"lineNumber":186,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":188,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":189,"author":{"gitId":"jskimdev"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-19"},{"lineNumber":190,"author":{"gitId":"jskimdev"},"content":" + DATEOFBIRTH_DESC_BOB + SEX_DESC_BOB,","lastModifiedDate":"2024-03-19"},{"lineNumber":191,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":193,"author":{"gitId":"-"},"content":" // missing address prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":194,"author":{"gitId":"jskimdev"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + VALID_ADDRESS_BOB","lastModifiedDate":"2024-03-19"},{"lineNumber":195,"author":{"gitId":"jskimdev"},"content":" + DATEOFBIRTH_DESC_BOB + SEX_DESC_BOB,","lastModifiedDate":"2024-03-19"},{"lineNumber":196,"author":{"gitId":"jskimdev"},"content":" expectedMessage);","lastModifiedDate":"2024-03-19"},{"lineNumber":197,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":198,"author":{"gitId":"jskimdev"},"content":" // missing date of birth prefix","lastModifiedDate":"2024-03-19"},{"lineNumber":199,"author":{"gitId":"jskimdev"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-19"},{"lineNumber":200,"author":{"gitId":"jskimdev"},"content":" + VALID_DATEOFBIRTH_BOB + SEX_DESC_BOB,","lastModifiedDate":"2024-03-19"},{"lineNumber":201,"author":{"gitId":"jskimdev"},"content":" expectedMessage);","lastModifiedDate":"2024-03-19"},{"lineNumber":202,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":203,"author":{"gitId":"jskimdev"},"content":" // missing sex prefix","lastModifiedDate":"2024-03-19"},{"lineNumber":204,"author":{"gitId":"jskimdev"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-19"},{"lineNumber":205,"author":{"gitId":"jskimdev"},"content":" + DATEOFBIRTH_DESC_BOB + VALID_SEX_BOB,","lastModifiedDate":"2024-03-19"},{"lineNumber":206,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":208,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15"},{"lineNumber":209,"author":{"gitId":"jskimdev"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_PHONE_BOB + VALID_EMAIL_BOB + VALID_ADDRESS_BOB","lastModifiedDate":"2024-03-19"},{"lineNumber":210,"author":{"gitId":"jskimdev"},"content":" + VALID_DATEOFBIRTH_BOB + VALID_SEX_BOB,","lastModifiedDate":"2024-03-19"},{"lineNumber":211,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":212,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":214,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":215,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":216,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15"},{"lineNumber":217,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-17"},{"lineNumber":218,"author":{"gitId":"jskimdev"},"content":" + DATEOFBIRTH_DESC_BOB + SEX_DESC_BOB,","lastModifiedDate":"2024-03-18"},{"lineNumber":219,"author":{"gitId":"jskimdev"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":221,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15"},{"lineNumber":222,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_PHONE_DESC + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-17"},{"lineNumber":223,"author":{"gitId":"jskimdev"},"content":" + DATEOFBIRTH_DESC_BOB + SEX_DESC_BOB,","lastModifiedDate":"2024-03-18"},{"lineNumber":224,"author":{"gitId":"jskimdev"},"content":" Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":226,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15"},{"lineNumber":227,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-17"},{"lineNumber":228,"author":{"gitId":"jskimdev"},"content":" + DATEOFBIRTH_DESC_BOB + SEX_DESC_BOB,","lastModifiedDate":"2024-03-18"},{"lineNumber":229,"author":{"gitId":"jskimdev"},"content":" Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":231,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2017-06-15"},{"lineNumber":232,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2024-03-17"},{"lineNumber":233,"author":{"gitId":"jskimdev"},"content":" + DATEOFBIRTH_DESC_BOB + SEX_DESC_BOB,","lastModifiedDate":"2024-03-18"},{"lineNumber":234,"author":{"gitId":"jskimdev"},"content":" Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":236,"author":{"gitId":"jskimdev"},"content":" // invalid date of birth","lastModifiedDate":"2024-03-19"},{"lineNumber":237,"author":{"gitId":"jskimdev"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-19"},{"lineNumber":238,"author":{"gitId":"jskimdev"},"content":" + INVALID_DATEOFBIRTH_DESC + SEX_DESC_BOB,","lastModifiedDate":"2024-03-19"},{"lineNumber":239,"author":{"gitId":"jskimdev"},"content":" DateOfBirth.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-19"},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":241,"author":{"gitId":"jskimdev"},"content":" // invalid sex","lastModifiedDate":"2024-03-19"},{"lineNumber":242,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-19"},{"lineNumber":243,"author":{"gitId":"jskimdev"},"content":" + DATEOFBIRTH_DESC_BOB + INVALID_SEX_DESC,","lastModifiedDate":"2024-03-19"},{"lineNumber":244,"author":{"gitId":"jskimdev"},"content":" Sex.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-19"},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":246,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15"},{"lineNumber":247,"author":{"gitId":"jskimdev"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2024-03-17"},{"lineNumber":248,"author":{"gitId":"jskimdev"},"content":" + DATEOFBIRTH_DESC_BOB + SEX_DESC_BOB,","lastModifiedDate":"2024-03-18"},{"lineNumber":249,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":250,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":253,"author":{"gitId":"jskimdev"},"content":" + ADDRESS_DESC_BOB + DATEOFBIRTH_DESC_BOB + SEX_DESC_BOB,","lastModifiedDate":"2024-03-18"},{"lineNumber":254,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-12-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":256,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"jskimdev":96,"-":160}},{"path":"src/test/java/seedu/address/logic/parser/AddressBookParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":7,"author":{"gitId":"Vision-2000"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-06-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":18,"author":{"gitId":"jeong-jaeho"},"content":"import seedu.address.logic.commands.DeleteAllCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"jeong-jaeho"},"content":"import seedu.address.logic.commands.DeleteByIndexCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":21,"author":{"gitId":"jskimdev"},"content":"import seedu.address.logic.commands.EditCommand.EditPatientDescriptor;","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24"},{"lineNumber":27,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"jskimdev"},"content":"import seedu.address.testutil.EditPatientDescriptorBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"jskimdev"},"content":"import seedu.address.testutil.PatientBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"jskimdev"},"content":"import seedu.address.testutil.PatientUtil;","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":39,"author":{"gitId":"jskimdev"},"content":" Patient patient \u003d new PatientBuilder().build();","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"jskimdev"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(PatientUtil.getAddCommand(patient));","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"jskimdev"},"content":" assertEquals(new AddCommand(patient), command);","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":46,"author":{"gitId":"jeong-jaeho"},"content":" assertTrue(parser.parseCommand(DeleteAllCommand.COMMAND_WORD) instanceof DeleteAllCommand);","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"jeong-jaeho"},"content":" assertTrue(parser.parseCommand(DeleteAllCommand.COMMAND_WORD + \" 3\") instanceof DeleteAllCommand);","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"jeong-jaeho"},"content":" DeleteByIndexCommand command \u003d (DeleteByIndexCommand) parser.parseCommand(","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"jeong-jaeho"},"content":" DeleteByIndexCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"jeong-jaeho"},"content":" assertEquals(new DeleteByIndexCommand(INDEX_FIRST_PERSON), command);","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":59,"author":{"gitId":"jskimdev"},"content":" Patient patient \u003d new PatientBuilder().build();","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"jskimdev"},"content":" EditPatientDescriptor descriptor \u003d new EditPatientDescriptorBuilder(patient).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-27"},{"lineNumber":62,"author":{"gitId":"jskimdev"},"content":" + INDEX_FIRST_PERSON.getOneBased() + \" \" + PatientUtil.getEditPersonDescriptorDetails(descriptor));","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertEquals(new EditCommand(INDEX_FIRST_PERSON, descriptor), command);","lastModifiedDate":"2017-06-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2017-06-12"},{"lineNumber":75,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":76,"author":{"gitId":"Vision-2000"},"content":" FindCommand.COMMAND_WORD + \" n/\" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"Vision-2000"},"content":" assertEquals(new FindCommand(new NameContainsKeywordsPredicate(keywords),","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"Vision-2000"},"content":" PREDICATE_SHOW_ALL_PERSONS), command);","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD) instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" 3\") instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"jskimdev":12,"-":80,"jeong-jaeho":7,"Vision-2000":4}},{"path":"src/test/java/seedu/address/logic/parser/DeleteByIndexCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-09"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":10,"author":{"gitId":"jeong-jaeho"},"content":"import seedu.address.logic.commands.DeleteByIndexCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * As we are only doing white-box testing, our test cases do not cover path variations","lastModifiedDate":"2017-06-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * outside of the DeleteCommand code. For example, inputs \"1\" and \"1 abc\" take the","lastModifiedDate":"2017-06-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * same path through the DeleteCommand, and therefore we test only one of them.","lastModifiedDate":"2017-06-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * The path variation for those two cases occur inside the ParserUtil, and","lastModifiedDate":"2017-06-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * therefore should be covered by the ParserUtilTest.","lastModifiedDate":"2017-06-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-09"},{"lineNumber":19,"author":{"gitId":"jeong-jaeho"},"content":"public class DeleteByIndexCommandParserTest {","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private DeleteCommandParser parser \u003d new DeleteCommandParser();","lastModifiedDate":"2017-06-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void parse_validArgs_returnsDeleteCommand() {","lastModifiedDate":"2017-08-15"},{"lineNumber":25,"author":{"gitId":"jeong-jaeho"},"content":" assertParseSuccess(parser, \"1\", new DeleteByIndexCommand(INDEX_FIRST_PERSON));","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":30,"author":{"gitId":"jeong-jaeho"},"content":" assertParseFailure(parser, \"a\",","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"jeong-jaeho"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteByIndexCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09"},{"lineNumber":33,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-09"}],"authorContributionMap":{"-":28,"jeong-jaeho":5}},{"path":"src/test/java/seedu/address/logic/parser/EditCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-04"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-05-04"},{"lineNumber":34,"author":{"gitId":"jskimdev"},"content":"import seedu.address.logic.commands.EditCommand.EditPatientDescriptor;","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Address;","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Email;","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Name;","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Phone;","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"jskimdev"},"content":"import seedu.address.testutil.EditPatientDescriptorBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":41,"author":{"gitId":"-"},"content":"public class EditCommandParserTest {","lastModifiedDate":"2017-05-04"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":43,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2017-05-04"},{"lineNumber":44,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-05-04"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":46,"author":{"gitId":"-"},"content":" private EditCommandParser parser \u003d new EditCommandParser();","lastModifiedDate":"2017-05-04"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":" // no index specified","lastModifiedDate":"2017-05-04"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\", EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-07-06"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // no index and no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2017-06-06"},{"lineNumber":62,"author":{"gitId":"-"},"content":" // negative index","lastModifiedDate":"2017-05-04"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"-5\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":65,"author":{"gitId":"-"},"content":" // zero index","lastModifiedDate":"2017-06-06"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"0\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06"},{"lineNumber":68,"author":{"gitId":"-"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2017-06-06"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2017-06-06"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 i/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2018-09-22"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC, Phone.MESSAGE_CONSTRAINTS); // invalid phone","lastModifiedDate":"2018-09-22"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_EMAIL_DESC, Email.MESSAGE_CONSTRAINTS); // invalid email","lastModifiedDate":"2018-09-22"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_ADDRESS_DESC, Address.MESSAGE_CONSTRAINTS); // invalid address","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":82,"author":{"gitId":"-"},"content":" // invalid phone followed by valid email","lastModifiedDate":"2017-05-04"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC + EMAIL_DESC_AMY, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":85,"author":{"gitId":"jskimdev"},"content":" // while parsing {@code PREFIX_TAG} alone will reset the tags of the {@code Patient} being edited,","lastModifiedDate":"2024-03-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":87,"author":{"gitId":"-"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2017-05-04"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC + INVALID_EMAIL_DESC + VALID_ADDRESS_AMY + VALID_PHONE_AMY,","lastModifiedDate":"2017-07-06"},{"lineNumber":89,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":94,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":95,"author":{"gitId":"jskimdev"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB","lastModifiedDate":"2024-03-17"},{"lineNumber":96,"author":{"gitId":"jskimdev"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + NAME_DESC_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":98,"author":{"gitId":"jskimdev"},"content":" EditPatientDescriptor descriptor \u003d new EditPatientDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2024-03-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-05-04"},{"lineNumber":100,"author":{"gitId":"jskimdev"},"content":" .build();","lastModifiedDate":"2024-03-17"},{"lineNumber":101,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":108,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":109,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":111,"author":{"gitId":"jskimdev"},"content":" EditPatientDescriptor descriptor \u003d new EditPatientDescriptorBuilder().withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-03-19"},{"lineNumber":112,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":113,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":118,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":119,"author":{"gitId":"-"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":120,"author":{"gitId":"-"},"content":" // name","lastModifiedDate":"2017-05-04"},{"lineNumber":121,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":122,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + NAME_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":123,"author":{"gitId":"jskimdev"},"content":" EditPatientDescriptor descriptor \u003d new EditPatientDescriptorBuilder().withName(VALID_NAME_AMY).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":124,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":127,"author":{"gitId":"-"},"content":" // phone","lastModifiedDate":"2017-05-04"},{"lineNumber":128,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":129,"author":{"gitId":"jskimdev"},"content":" descriptor \u003d new EditPatientDescriptorBuilder().withPhone(VALID_PHONE_AMY).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":130,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":131,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":133,"author":{"gitId":"-"},"content":" // email","lastModifiedDate":"2017-05-04"},{"lineNumber":134,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":135,"author":{"gitId":"jskimdev"},"content":" descriptor \u003d new EditPatientDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":136,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":137,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":139,"author":{"gitId":"-"},"content":" // address","lastModifiedDate":"2017-05-04"},{"lineNumber":140,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + ADDRESS_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":141,"author":{"gitId":"jskimdev"},"content":" descriptor \u003d new EditPatientDescriptorBuilder().withAddress(VALID_ADDRESS_AMY).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":142,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":143,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":146,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":147,"author":{"gitId":"-"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":148,"author":{"gitId":"-"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2023-07-14"},{"lineNumber":149,"author":{"gitId":"-"},"content":" // AddCommandParserTest#parse_repeatedNonTagValue_failure()","lastModifiedDate":"2023-07-14"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":151,"author":{"gitId":"-"},"content":" // valid followed by invalid","lastModifiedDate":"2023-07-14"},{"lineNumber":152,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":153,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + PHONE_DESC_BOB;","lastModifiedDate":"2023-07-14"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":155,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":157,"author":{"gitId":"-"},"content":" // invalid followed by valid","lastModifiedDate":"2023-07-14"},{"lineNumber":158,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + INVALID_PHONE_DESC;","lastModifiedDate":"2023-07-14"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":160,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":162,"author":{"gitId":"-"},"content":" // mulltiple valid fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":163,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2023-07-14"},{"lineNumber":164,"author":{"gitId":"jskimdev"},"content":" + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2024-03-17"},{"lineNumber":165,"author":{"gitId":"jskimdev"},"content":" + PHONE_DESC_BOB + ADDRESS_DESC_BOB + EMAIL_DESC_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":167,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":168,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":170,"author":{"gitId":"-"},"content":" // multiple invalid values","lastModifiedDate":"2023-07-14"},{"lineNumber":171,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2023-07-14"},{"lineNumber":172,"author":{"gitId":"-"},"content":" + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC;","lastModifiedDate":"2023-07-14"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":174,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":175,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":177,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-04"}],"authorContributionMap":{"jskimdev":18,"-":159}},{"path":"src/test/java/seedu/address/logic/parser/FindCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-27"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":6,"author":{"gitId":"Vision-2000"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":8,"author":{"gitId":"Vision-2000"},"content":"import java.util.List;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":13,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"Vision-2000"},"content":"import seedu.address.model.patient.Phone;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"Vision-2000"},"content":"import seedu.address.model.patient.PhoneMatchesPredicate;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class FindCommandParserTest {","lastModifiedDate":"2017-06-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private FindCommandParser parser \u003d new FindCommandParser();","lastModifiedDate":"2017-06-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":22,"author":{"gitId":"Vision-2000"},"content":" public void parse_invalidArg_throwsParseException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"Vision-2000"},"content":" assertParseFailure(parser, \" \", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"Vision-2000"},"content":" FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"Vision-2000"},"content":" assertParseFailure(parser, \"1 n/name\", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"Vision-2000"},"content":" FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"Vision-2000"},"content":" assertParseFailure(parser, \"n/ p/\", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"Vision-2000"},"content":" FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"Vision-2000"},"content":" assertParseFailure(parser, \"name\", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"Vision-2000"},"content":" FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":33,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public void parse_validArgs_returnsFindCommand() {","lastModifiedDate":"2017-08-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" FindCommand expectedFindCommand \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":37,"author":{"gitId":"Vision-2000"},"content":" new FindCommand(new NameContainsKeywordsPredicate(List.of(\"Alice\")),","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"Vision-2000"},"content":" new PhoneMatchesPredicate(new Phone(\"99999999\")));","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"Vision-2000"},"content":" assertParseSuccess(parser, \" n/Alice p/99999999\", expectedFindCommand);","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"Vision-2000"},"content":" assertParseSuccess(parser, \" \\n n/Alice \\n \\t p/99999999 \\t\", expectedFindCommand);","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"Vision-2000"},"content":" expectedFindCommand \u003d","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"Vision-2000"},"content":" new FindCommand(new NameContainsKeywordsPredicate(List.of(\"Alice\")),","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"Vision-2000"},"content":" PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"Vision-2000"},"content":" assertParseSuccess(parser, \" n/Alice\", expectedFindCommand);","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"Vision-2000"},"content":" expectedFindCommand \u003d","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"Vision-2000"},"content":" new FindCommand(PREDICATE_SHOW_ALL_PERSONS,","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"Vision-2000"},"content":" new PhoneMatchesPredicate(new Phone(\"99999999\")));","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"Vision-2000"},"content":" assertParseSuccess(parser, \" p/99999999\", expectedFindCommand);","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-27"}],"authorContributionMap":{"jskimdev":1,"-":23,"Vision-2000":28}},{"path":"src/test/java/seedu/address/logic/parser/ParserUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.ParserUtil.MESSAGE_INVALID_INDEX;","lastModifiedDate":"2017-06-02"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10"},{"lineNumber":11,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Address;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Email;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Name;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Phone;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class ParserUtilTest {","lastModifiedDate":"2017-05-22"},{"lineNumber":17,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2017-05-22"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2017-05-22"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2017-05-22"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2017-05-22"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d \"Rachel Walker\";","lastModifiedDate":"2017-05-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d \"123456\";","lastModifiedDate":"2017-05-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d \"123 Main Street #0505\";","lastModifiedDate":"2017-05-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d \"rachel@example.com\";","lastModifiedDate":"2017-05-22"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String WHITESPACE \u003d \" \\t\\r\\n\";","lastModifiedDate":"2017-05-29"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void parseIndex_invalidInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseIndex(\"10 a\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public void parseIndex_outOfRangeInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_INVALID_INDEX, ()","lastModifiedDate":"2019-03-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" -\u003e ParserUtil.parseIndex(Long.toString(Integer.MAX_VALUE + 1)));","lastModifiedDate":"2019-03-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public void parseIndex_validInput_success() throws Exception {","lastModifiedDate":"2017-05-26"},{"lineNumber":42,"author":{"gitId":"-"},"content":" // No whitespaces","lastModifiedDate":"2017-05-26"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\"1\"));","lastModifiedDate":"2017-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // Leading and trailing whitespaces","lastModifiedDate":"2017-05-26"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\" 1 \"));","lastModifiedDate":"2017-05-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void parseName_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-29"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseName((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void parseName_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseName(INVALID_NAME));","lastModifiedDate":"2019-03-14"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void parseName_validValueWithoutWhitespace_returnsName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-22"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(VALID_NAME));","lastModifiedDate":"2017-05-29"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-29"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void parseName_validValueWithWhitespace_returnsTrimmedName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":67,"author":{"gitId":"-"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_NAME + WHITESPACE;","lastModifiedDate":"2017-05-29"},{"lineNumber":68,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-29"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(nameWithWhitespace));","lastModifiedDate":"2017-05-29"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void parsePhone_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parsePhone((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void parsePhone_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parsePhone(INVALID_PHONE));","lastModifiedDate":"2019-03-14"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithoutWhitespace_returnsPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":84,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-22"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(VALID_PHONE));","lastModifiedDate":"2017-05-30"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithWhitespace_returnsTrimmedPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":90,"author":{"gitId":"-"},"content":" String phoneWithWhitespace \u003d WHITESPACE + VALID_PHONE + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":91,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-30"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(phoneWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":96,"author":{"gitId":"-"},"content":" public void parseAddress_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseAddress((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":100,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":101,"author":{"gitId":"-"},"content":" public void parseAddress_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseAddress(INVALID_ADDRESS));","lastModifiedDate":"2019-03-14"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":106,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithoutWhitespace_returnsAddress() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":107,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-22"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(VALID_ADDRESS));","lastModifiedDate":"2017-05-30"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":112,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithWhitespace_returnsTrimmedAddress() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":113,"author":{"gitId":"-"},"content":" String addressWithWhitespace \u003d WHITESPACE + VALID_ADDRESS + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":114,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-30"},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(addressWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":118,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":119,"author":{"gitId":"-"},"content":" public void parseEmail_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseEmail((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":124,"author":{"gitId":"-"},"content":" public void parseEmail_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseEmail(INVALID_EMAIL));","lastModifiedDate":"2019-03-14"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":129,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithoutWhitespace_returnsEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":130,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-22"},{"lineNumber":131,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(VALID_EMAIL));","lastModifiedDate":"2017-05-30"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":134,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":135,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithWhitespace_returnsTrimmedEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":136,"author":{"gitId":"-"},"content":" String emailWithWhitespace \u003d WHITESPACE + VALID_EMAIL + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":137,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-30"},{"lineNumber":138,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(emailWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":140,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-22"}],"authorContributionMap":{"jskimdev":4,"-":136}},{"path":"src/test/java/seedu/address/model/AddressBookTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-12-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.testutil.TypicalPatients.ALICE;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.testutil.TypicalPatients.getTypicalAddressBook;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2016-12-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2016-12-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2016-12-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2016-12-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-12-24"},{"lineNumber":20,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.exceptions.DuplicatePatientException;","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"jskimdev"},"content":"import seedu.address.testutil.PatientBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class AddressBookTest {","lastModifiedDate":"2016-12-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2016-12-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2016-12-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), addressBook.getPersonList());","lastModifiedDate":"2016-12-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public void resetData_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.resetData(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void resetData_withValidReadOnlyAddressBook_replacesData() {","lastModifiedDate":"2016-12-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" AddressBook newData \u003d getTypicalAddressBook();","lastModifiedDate":"2017-07-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":" addressBook.resetData(newData);","lastModifiedDate":"2016-12-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertEquals(newData, addressBook);","lastModifiedDate":"2016-12-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void resetData_withDuplicatePersons_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-07"},{"lineNumber":47,"author":{"gitId":"jskimdev"},"content":" // Two patients with the same identity fields","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"jskimdev"},"content":" Patient editedAlice \u003d new PatientBuilder(ALICE).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-04-19"},{"lineNumber":50,"author":{"gitId":"jskimdev"},"content":" List\u003cPatient\u003e newPatients \u003d Arrays.asList(ALICE, editedAlice);","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"jskimdev"},"content":" AddressBookStub newData \u003d new AddressBookStub(newPatients);","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":53,"author":{"gitId":"jskimdev"},"content":" assertThrows(DuplicatePatientException.class, () -\u003e addressBook.resetData(newData));","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void hasPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-06"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.hasPerson(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void hasPerson_personNotInAddressBook_returnsFalse() {","lastModifiedDate":"2018-08-06"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertFalse(addressBook.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void hasPerson_personInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07"},{"lineNumber":68,"author":{"gitId":"-"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2018-08-06"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertTrue(addressBook.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void hasPerson_personWithSameIdentityFieldsInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07"},{"lineNumber":74,"author":{"gitId":"-"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2018-08-06"},{"lineNumber":75,"author":{"gitId":"jskimdev"},"content":" Patient editedAlice \u003d new PatientBuilder(ALICE).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-06"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertTrue(addressBook.hasPerson(editedAlice));","lastModifiedDate":"2018-08-06"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void getPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e addressBook.getPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"jskimdev"},"content":" String expected \u003d AddressBook.class.getCanonicalName() + \"{patients\u003d\" + addressBook.getPersonList() + \"}\";","lastModifiedDate":"2024-03-19"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertEquals(expected, addressBook.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-24"},{"lineNumber":92,"author":{"gitId":"jskimdev"},"content":" * A stub ReadOnlyAddressBook whose patients list can violate interface constraints.","lastModifiedDate":"2024-03-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-24"},{"lineNumber":94,"author":{"gitId":"-"},"content":" private static class AddressBookStub implements ReadOnlyAddressBook {","lastModifiedDate":"2016-12-24"},{"lineNumber":95,"author":{"gitId":"jskimdev"},"content":" private final ObservableList\u003cPatient\u003e patients \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-03-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":97,"author":{"gitId":"jskimdev"},"content":" AddressBookStub(Collection\u003cPatient\u003e patients) {","lastModifiedDate":"2024-03-19"},{"lineNumber":98,"author":{"gitId":"jskimdev"},"content":" this.patients.setAll(patients);","lastModifiedDate":"2024-03-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":101,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-24"},{"lineNumber":102,"author":{"gitId":"jskimdev"},"content":" public ObservableList\u003cPatient\u003e getPersonList() {","lastModifiedDate":"2024-03-19"},{"lineNumber":103,"author":{"gitId":"jskimdev"},"content":" return patients;","lastModifiedDate":"2024-03-19"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":107,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-24"}],"authorContributionMap":{"jskimdev":18,"-":89}},{"path":"src/test/java/seedu/address/model/ModelManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2017-05-31"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.testutil.TypicalPatients.ALICE;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.testutil.TypicalPatients.BENSON;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-31"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":18,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.testutil.AddressBookBuilder;","lastModifiedDate":"2017-05-31"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class ModelManagerTest {","lastModifiedDate":"2017-05-31"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private ModelManager modelManager \u003d new ModelManager();","lastModifiedDate":"2018-08-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2018-11-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertEquals(new UserPrefs(), modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertEquals(new GuiSettings(), modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertEquals(new AddressBook(), new AddressBook(modelManager.getAddressBook()));","lastModifiedDate":"2018-11-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public void setUserPrefs_nullUserPrefs_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setUserPrefs(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void setUserPrefs_validUserPrefs_copiesUserPrefs() {","lastModifiedDate":"2018-12-06"},{"lineNumber":39,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"address/book/file/path\"));","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(new GuiSettings(1, 2, 3, 4));","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" modelManager.setUserPrefs(userPrefs);","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertEquals(userPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // Modifying userPrefs should not modify modelManager\u0027s userPrefs","lastModifiedDate":"2018-12-06"},{"lineNumber":46,"author":{"gitId":"-"},"content":" UserPrefs oldUserPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":47,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"new/address/book/file/path\"));","lastModifiedDate":"2018-12-06"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertEquals(oldUserPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-12-06"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void setGuiSettings_nullGuiSettings_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setGuiSettings(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void setGuiSettings_validGuiSettings_setsGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(1, 2, 3, 4);","lastModifiedDate":"2018-11-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" modelManager.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertEquals(guiSettings, modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setAddressBookFilePath(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_validPath_setsAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" Path path \u003d Paths.get(\"address/book/file/path\");","lastModifiedDate":"2018-11-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" modelManager.setAddressBookFilePath(path);","lastModifiedDate":"2018-11-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertEquals(path, modelManager.getAddressBookFilePath());","lastModifiedDate":"2018-11-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void hasPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-06"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasPerson(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void hasPerson_personNotInAddressBook_returnsFalse() {","lastModifiedDate":"2018-08-06"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertFalse(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void hasPerson_personInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07"},{"lineNumber":87,"author":{"gitId":"-"},"content":" modelManager.addPerson(ALICE);","lastModifiedDate":"2018-08-06"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertTrue(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e modelManager.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-31"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":98,"author":{"gitId":"-"},"content":" AddressBook addressBook \u003d new AddressBookBuilder().withPerson(ALICE).withPerson(BENSON).build();","lastModifiedDate":"2017-07-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" AddressBook differentAddressBook \u003d new AddressBook();","lastModifiedDate":"2017-05-31"},{"lineNumber":100,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":102,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":103,"author":{"gitId":"-"},"content":" modelManager \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2018-08-06"},{"lineNumber":104,"author":{"gitId":"-"},"content":" ModelManager modelManagerCopy \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2017-05-31"},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManagerCopy));","lastModifiedDate":"2017-05-31"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":107,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManager));","lastModifiedDate":"2017-05-31"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":110,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(null));","lastModifiedDate":"2017-05-31"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":113,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(5));","lastModifiedDate":"2017-05-31"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":116,"author":{"gitId":"-"},"content":" // different addressBook -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(differentAddressBook, userPrefs)));","lastModifiedDate":"2017-05-31"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":119,"author":{"gitId":"-"},"content":" // different filteredList -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":120,"author":{"gitId":"-"},"content":" String[] keywords \u003d ALICE.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-19"},{"lineNumber":121,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(keywords)));","lastModifiedDate":"2017-06-12"},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, userPrefs)));","lastModifiedDate":"2017-05-31"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":124,"author":{"gitId":"-"},"content":" // resets modelManager to initial state for upcoming tests","lastModifiedDate":"2017-08-05"},{"lineNumber":125,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":127,"author":{"gitId":"-"},"content":" // different userPrefs -\u003e returns false","lastModifiedDate":"2018-11-27"},{"lineNumber":128,"author":{"gitId":"-"},"content":" UserPrefs differentUserPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":129,"author":{"gitId":"-"},"content":" differentUserPrefs.setAddressBookFilePath(Paths.get(\"differentFilePath\"));","lastModifiedDate":"2018-08-09"},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, differentUserPrefs)));","lastModifiedDate":"2018-11-27"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":132,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-31"}],"authorContributionMap":{"jskimdev":3,"-":129}},{"path":"src/test/java/seedu/address/model/patient/AddressTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jskimdev"},"content":"package seedu.address.model.patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class AddressTest {","lastModifiedDate":"2017-01-16"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04"},{"lineNumber":13,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new Address(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":14,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void constructor_invalidAddress_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":" String invalidAddress \u003d \"\";","lastModifiedDate":"2017-05-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Address(invalidAddress));","lastModifiedDate":"2019-03-14"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void isValidAddress() {","lastModifiedDate":"2017-01-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // null address","lastModifiedDate":"2017-12-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Address.isValidAddress(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // invalid addresses","lastModifiedDate":"2017-01-16"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertFalse(Address.isValidAddress(\"\")); // empty string","lastModifiedDate":"2017-01-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(Address.isValidAddress(\" \")); // spaces only","lastModifiedDate":"2017-01-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // valid addresses","lastModifiedDate":"2017-01-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertTrue(Address.isValidAddress(\"Blk 456, Den Road, #01-355\"));","lastModifiedDate":"2017-01-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertTrue(Address.isValidAddress(\"-\")); // one character","lastModifiedDate":"2017-01-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertTrue(Address.isValidAddress(\"Leng Inc; 1234 Market St; San Francisco CA 2349879; USA\")); // long address","lastModifiedDate":"2017-01-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" Address address \u003d new Address(\"Valid Address\");","lastModifiedDate":"2019-02-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertTrue(address.equals(new Address(\"Valid Address\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertTrue(address.equals(address));","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertFalse(address.equals(null));","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(address.equals(5.0f));","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertFalse(address.equals(new Address(\"Other Valid Address\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16"}],"authorContributionMap":{"jskimdev":1,"-":55}},{"path":"src/test/java/seedu/address/model/patient/DateOfBirthTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jskimdev"},"content":"package seedu.address.model.patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"jskimdev"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"jskimdev"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"jskimdev"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"jskimdev"},"content":"public class DateOfBirthTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"jskimdev"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"jskimdev"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"jskimdev"},"content":" assertThrows(NullPointerException.class, () -\u003e new DateOfBirth(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"jskimdev"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"jskimdev"},"content":" public void constuctor_invalidDateOfBirth_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"jskimdev"},"content":" String invalidDateOfBirth \u003d \"\";","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"jskimdev"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new DateOfBirth(invalidDateOfBirth));","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"jskimdev"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"jskimdev"},"content":" public void isValidDateOfBirth() {","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"jskimdev"},"content":" // null date of birth","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"jskimdev"},"content":" assertThrows(NullPointerException.class, () -\u003e DateOfBirth.isValidDateOfBirth(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"jskimdev"},"content":" // invalid date of birth","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"jskimdev"},"content":" assertFalse(DateOfBirth.isValidDateOfBirth(\"\")); // empty string","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"jskimdev"},"content":" assertFalse(DateOfBirth.isValidDateOfBirth(\" \")); // spaces only","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"jskimdev"},"content":" assertFalse(DateOfBirth.isValidDateOfBirth(\"wdalsjdaj\")); // random string","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"jskimdev"},"content":" assertFalse(DateOfBirth.isValidDateOfBirth(\"12/2024\")); // without date","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"jskimdev"},"content":" assertFalse(DateOfBirth.isValidDateOfBirth(\"245/2/2024\")); // invalid date","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"jskimdev"},"content":" assertFalse(DateOfBirth.isValidDateOfBirth(\"25/24/2024\")); // invalid month","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"jskimdev"},"content":" assertFalse(DateOfBirth.isValidDateOfBirth(\"25/2/22\")); // invalid year","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"jskimdev"},"content":" // valid date of birth","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"jskimdev"},"content":" assertTrue(DateOfBirth.isValidDateOfBirth(\"25/2/2024\")); // valid first input foramt","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"jskimdev"},"content":" assertTrue(DateOfBirth.isValidDateOfBirth(\"2024-2-24\")); // valid second input format","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"jskimdev"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"jskimdev"},"content":" public void equals() {","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"jskimdev"},"content":" DateOfBirth dateOfBirth \u003d new DateOfBirth(\"2024-2-5\");","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"jskimdev"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"jskimdev"},"content":" assertTrue(dateOfBirth.equals(new DateOfBirth(\"2024-2-5\")));","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"jskimdev"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"jskimdev"},"content":" assertTrue(dateOfBirth.equals(new DateOfBirth(\"2024-02-05\")));","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"jskimdev"},"content":" // another acceptable input format -\u003e returns true","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"jskimdev"},"content":" assertTrue(dateOfBirth.equals(new DateOfBirth(\"5/2/2024\")));","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"jskimdev"},"content":" //another acceptable input format -\u003e returns true","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"jskimdev"},"content":" assertTrue(dateOfBirth.equals(new DateOfBirth(\"05/02/2024\")));","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"jskimdev"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"jskimdev"},"content":" assertTrue(dateOfBirth.equals(dateOfBirth));","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"jskimdev"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"jskimdev"},"content":" assertFalse(dateOfBirth.equals(null));","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"jskimdev"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"jskimdev"},"content":" assertFalse(dateOfBirth.equals(5.0f));","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"jskimdev"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"jskimdev"},"content":" assertFalse(dateOfBirth.equals(new DateOfBirth(\"2026-12-5\")));","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"jskimdev"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"jskimdev":68}},{"path":"src/test/java/seedu/address/model/patient/EmailTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jskimdev"},"content":"package seedu.address.model.patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class EmailTest {","lastModifiedDate":"2017-01-16"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04"},{"lineNumber":13,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new Email(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":14,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void constructor_invalidEmail_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":" String invalidEmail \u003d \"\";","lastModifiedDate":"2017-05-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Email(invalidEmail));","lastModifiedDate":"2019-03-14"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void isValidEmail() {","lastModifiedDate":"2017-01-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // null email","lastModifiedDate":"2017-12-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Email.isValidEmail(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // blank email","lastModifiedDate":"2017-01-16"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"\")); // empty string","lastModifiedDate":"2017-01-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\" \")); // spaces only","lastModifiedDate":"2017-01-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // missing parts","lastModifiedDate":"2017-01-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"@example.com\")); // missing local part","lastModifiedDate":"2017-04-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjackexample.com\")); // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-04-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@\")); // missing domain name","lastModifiedDate":"2017-01-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" // invalid parts","lastModifiedDate":"2017-01-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@-\")); // invalid domain name","lastModifiedDate":"2017-01-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@exam_ple.com\")); // underscore in domain name","lastModifiedDate":"2018-02-09"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peter jack@example.com\")); // spaces in local part","lastModifiedDate":"2017-04-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@exam ple.com\")); // spaces in domain name","lastModifiedDate":"2017-04-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\" peterjack@example.com\")); // leading space","lastModifiedDate":"2018-02-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.com \")); // trailing space","lastModifiedDate":"2018-02-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@@example.com\")); // double \u0027@\u0027 symbol","lastModifiedDate":"2017-04-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peter@jack@example.com\")); // \u0027@\u0027 symbol in local part","lastModifiedDate":"2017-04-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"-peterjack@example.com\")); // local part starts with a hyphen","lastModifiedDate":"2021-07-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack-@example.com\")); // local part ends with a hyphen","lastModifiedDate":"2021-07-20"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peter..jack@example.com\")); // local part has two consecutive periods","lastModifiedDate":"2021-07-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example@com\")); // \u0027@\u0027 symbol in domain name","lastModifiedDate":"2017-04-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@.example.com\")); // domain name starts with a period","lastModifiedDate":"2018-02-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.com.\")); // domain name ends with a period","lastModifiedDate":"2018-02-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@-example.com\")); // domain name starts with a hyphen","lastModifiedDate":"2018-02-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.com-\")); // domain name ends with a hyphen","lastModifiedDate":"2018-02-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.c\")); // top level domain has less than two chars","lastModifiedDate":"2021-07-20"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // valid email","lastModifiedDate":"2017-01-16"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack_1190@example.com\")); // underscore in local part","lastModifiedDate":"2021-07-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack.1190@example.com\")); // period in local part","lastModifiedDate":"2021-07-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack+1190@example.com\")); // \u0027+\u0027 symbol in local part","lastModifiedDate":"2021-07-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack-1190@example.com\")); // hyphen in local part","lastModifiedDate":"2021-07-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"a@bc\")); // minimal","lastModifiedDate":"2018-02-09"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"test@localhost\")); // alphabets only","lastModifiedDate":"2017-01-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"123@145\")); // numeric local part and domain name","lastModifiedDate":"2017-01-16"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"a1+be.d@example1.com\")); // mixture of alphanumeric and special characters","lastModifiedDate":"2021-07-20"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"peter_jack@very-very-very-long-example.com\")); // long domain name","lastModifiedDate":"2018-02-09"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"if.you.dream.it_you.can.do.it@example.com\")); // long local part","lastModifiedDate":"2017-04-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"e1234567@u.nus.edu\")); // more than one period in domain","lastModifiedDate":"2021-07-20"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" Email email \u003d new Email(\"valid@email\");","lastModifiedDate":"2019-02-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertTrue(email.equals(new Email(\"valid@email\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertTrue(email.equals(email));","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertFalse(email.equals(null));","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertFalse(email.equals(5.0f));","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertFalse(email.equals(new Email(\"other.valid@email\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16"}],"authorContributionMap":{"jskimdev":1,"-":87}},{"path":"src/test/java/seedu/address/model/patient/NameContainsKeywordsPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jskimdev"},"content":"package seedu.address.model.patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"jskimdev"},"content":"import seedu.address.testutil.PatientBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class NameContainsKeywordsPredicateTest {","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" List\u003cString\u003e firstPredicateKeywordList \u003d Collections.singletonList(\"first\");","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":" List\u003cString\u003e secondPredicateKeywordList \u003d Arrays.asList(\"first\", \"second\");","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicate \u003d new NameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate secondPredicate \u003d new NameContainsKeywordsPredicate(secondPredicateKeywordList);","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" assertTrue(firstPredicate.equals(firstPredicate));","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicateCopy \u003d new NameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertTrue(firstPredicate.equals(firstPredicateCopy));","lastModifiedDate":"2017-06-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(1));","lastModifiedDate":"2017-06-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(null));","lastModifiedDate":"2017-06-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":38,"author":{"gitId":"jskimdev"},"content":" // different patient -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(secondPredicate));","lastModifiedDate":"2017-06-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void test_nameContainsKeywords_returnsTrue() {","lastModifiedDate":"2017-08-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // One keyword","lastModifiedDate":"2017-06-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Collections.singletonList(\"Alice\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":46,"author":{"gitId":"jskimdev"},"content":" assertTrue(predicate.test(new PatientBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // Multiple keywords","lastModifiedDate":"2017-06-12"},{"lineNumber":49,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Alice\", \"Bob\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":50,"author":{"gitId":"jskimdev"},"content":" assertTrue(predicate.test(new PatientBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // Only one matching keyword","lastModifiedDate":"2017-06-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Bob\", \"Carol\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":54,"author":{"gitId":"jskimdev"},"content":" assertTrue(predicate.test(new PatientBuilder().withName(\"Alice Carol\").build()));","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // Mixed-case keywords","lastModifiedDate":"2017-06-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"aLIce\", \"bOB\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":58,"author":{"gitId":"jskimdev"},"content":" assertTrue(predicate.test(new PatientBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void test_nameDoesNotContainKeywords_returnsFalse() {","lastModifiedDate":"2017-08-15"},{"lineNumber":63,"author":{"gitId":"-"},"content":" // Zero keywords","lastModifiedDate":"2017-06-12"},{"lineNumber":64,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Collections.emptyList());","lastModifiedDate":"2017-06-12"},{"lineNumber":65,"author":{"gitId":"jskimdev"},"content":" assertFalse(predicate.test(new PatientBuilder().withName(\"Alice\").build()));","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":" // Non-matching keyword","lastModifiedDate":"2017-06-12"},{"lineNumber":68,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Carol\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":69,"author":{"gitId":"jskimdev"},"content":" assertFalse(predicate.test(new PatientBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // Keywords match phone, email and address, but does not match name","lastModifiedDate":"2017-06-12"},{"lineNumber":72,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"12345\", \"alice@email.com\", \"Main\", \"Street\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":73,"author":{"gitId":"jskimdev"},"content":" assertFalse(predicate.test(new PatientBuilder().withName(\"Alice\").withPhone(\"12345\")","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" .withEmail(\"alice@email.com\").withAddress(\"Main Street\").build()));","lastModifiedDate":"2017-06-12"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d List.of(\"keyword1\", \"keyword2\");","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(keywords);","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" String expected \u003d NameContainsKeywordsPredicate.class.getCanonicalName() + \"{keywords\u003d\" + keywords + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"jskimdev":10,"-":75}},{"path":"src/test/java/seedu/address/model/patient/NameTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jskimdev"},"content":"package seedu.address.model.patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class NameTest {","lastModifiedDate":"2017-01-16"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04"},{"lineNumber":13,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new Name(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":14,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void constructor_invalidName_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":" String invalidName \u003d \"\";","lastModifiedDate":"2017-05-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Name(invalidName));","lastModifiedDate":"2019-03-14"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void isValidName() {","lastModifiedDate":"2017-01-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // null name","lastModifiedDate":"2017-12-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Name.isValidName(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-01-16"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"\")); // empty string","lastModifiedDate":"2017-01-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\" \")); // spaces only","lastModifiedDate":"2017-01-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"^\")); // only non-alphanumeric characters","lastModifiedDate":"2017-01-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"peter*\")); // contains non-alphanumeric characters","lastModifiedDate":"2017-01-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // valid name","lastModifiedDate":"2017-01-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"peter jack\")); // alphabets only","lastModifiedDate":"2017-01-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"12345\")); // numbers only","lastModifiedDate":"2017-01-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"peter the 2nd\")); // alphanumeric characters","lastModifiedDate":"2017-01-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"Capital Tan\")); // with capital letters","lastModifiedDate":"2017-01-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"David Roger Jackson Ray Jr 2nd\")); // long names","lastModifiedDate":"2017-01-16"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" Name name \u003d new Name(\"Valid Name\");","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(name.equals(new Name(\"Valid Name\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertTrue(name.equals(name));","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(name.equals(null));","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertFalse(name.equals(5.0f));","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertFalse(name.equals(new Name(\"Other Valid Name\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16"}],"authorContributionMap":{"jskimdev":1,"-":59}},{"path":"src/test/java/seedu/address/model/patient/PatientTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jskimdev"},"content":"package seedu.address.model.patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_DATEOFBIRTH_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SEX_BOB;","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.testutil.TypicalPatients.ALICE;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.testutil.TypicalPatients.BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":19,"author":{"gitId":"jskimdev"},"content":"import seedu.address.testutil.PatientBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":21,"author":{"gitId":"jskimdev"},"content":"public class PatientTest {","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19"},{"lineNumber":25,"author":{"gitId":"jskimdev"},"content":" public void isSamePatient() {","lastModifiedDate":"2024-03-22"},{"lineNumber":26,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":27,"author":{"gitId":"jskimdev"},"content":" assertTrue(ALICE.isSamePatient(ALICE));","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":30,"author":{"gitId":"jskimdev"},"content":" assertFalse(ALICE.isSamePatient(null));","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":32,"author":{"gitId":"jskimdev"},"content":" // same name and phone number, all other attributes different -\u003e returns true","lastModifiedDate":"2024-03-22"},{"lineNumber":33,"author":{"gitId":"jskimdev"},"content":" Patient editedAlice \u003d new PatientBuilder(ALICE).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2024-03-22"},{"lineNumber":34,"author":{"gitId":"jskimdev"},"content":" .withAddress(VALID_ADDRESS_BOB).withDateOfBirth(VALID_DATEOFBIRTH_BOB).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"jskimdev"},"content":" assertTrue(ALICE.isSamePatient(editedAlice));","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":" // different name, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":38,"author":{"gitId":"jskimdev"},"content":" editedAlice \u003d new PatientBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"jskimdev"},"content":" assertFalse(ALICE.isSamePatient(editedAlice));","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":" // name differs in case, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":42,"author":{"gitId":"jskimdev"},"content":" Patient editedBob \u003d new PatientBuilder(BOB).withName(VALID_NAME_BOB.toLowerCase()).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"jskimdev"},"content":" assertFalse(BOB.isSamePatient(editedBob));","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":45,"author":{"gitId":"jskimdev"},"content":" // different phone number, all other attributes same -\u003e returns false","lastModifiedDate":"2024-03-22"},{"lineNumber":46,"author":{"gitId":"jskimdev"},"content":" editedBob \u003d new PatientBuilder(BOB).withPhone(VALID_PHONE_AMY).build();","lastModifiedDate":"2024-03-22"},{"lineNumber":47,"author":{"gitId":"jskimdev"},"content":" assertFalse(BOB.isSamePatient(editedBob));","lastModifiedDate":"2024-03-22"},{"lineNumber":48,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":49,"author":{"gitId":"jskimdev"},"content":" // different phone number and different name, all other attributes same -\u003e returns false","lastModifiedDate":"2024-03-22"},{"lineNumber":50,"author":{"gitId":"jskimdev"},"content":" editedBob \u003d new PatientBuilder(BOB).withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY).build();","lastModifiedDate":"2024-03-22"},{"lineNumber":51,"author":{"gitId":"jskimdev"},"content":" assertFalse(BOB.isSamePatient(editedBob));","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":57,"author":{"gitId":"jskimdev"},"content":" Patient aliceCopy \u003d new PatientBuilder(ALICE).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2018-04-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2018-04-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(null));","lastModifiedDate":"2018-04-19"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2018-04-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":69,"author":{"gitId":"jskimdev"},"content":" // different patient -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2018-04-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":73,"author":{"gitId":"jskimdev"},"content":" Patient editedAlice \u003d new PatientBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":77,"author":{"gitId":"jskimdev"},"content":" editedAlice \u003d new PatientBuilder(ALICE).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":81,"author":{"gitId":"jskimdev"},"content":" editedAlice \u003d new PatientBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":84,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":85,"author":{"gitId":"jskimdev"},"content":" editedAlice \u003d new PatientBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":87,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":88,"author":{"gitId":"jskimdev"},"content":" // different date of birth -\u003e returns false","lastModifiedDate":"2024-03-22"},{"lineNumber":89,"author":{"gitId":"jskimdev"},"content":" editedAlice \u003d new PatientBuilder(ALICE).withDateOfBirth(VALID_DATEOFBIRTH_BOB).build();","lastModifiedDate":"2024-03-22"},{"lineNumber":90,"author":{"gitId":"jskimdev"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2024-03-22"},{"lineNumber":91,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":92,"author":{"gitId":"jskimdev"},"content":" // different sex -\u003e returns false","lastModifiedDate":"2024-03-22"},{"lineNumber":93,"author":{"gitId":"jskimdev"},"content":" editedAlice \u003d new PatientBuilder(ALICE).withSex(VALID_SEX_BOB).build();","lastModifiedDate":"2024-03-22"},{"lineNumber":94,"author":{"gitId":"jskimdev"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2024-03-22"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":99,"author":{"gitId":"jskimdev"},"content":" String expected \u003d Patient.class.getCanonicalName() + \"{name\u003d\" + ALICE.getName() + \", phone\u003d\" + ALICE.getPhone()","lastModifiedDate":"2024-03-19"},{"lineNumber":100,"author":{"gitId":"jskimdev"},"content":" + \", email\u003d\" + ALICE.getEmail() + \", address\u003d\" + ALICE.getAddress() + \", date of birth\u003d\"","lastModifiedDate":"2024-03-17"},{"lineNumber":101,"author":{"gitId":"jskimdev"},"content":" + ALICE.getDateOfBirth() + \", sex\u003d\" + ALICE.getSex() + \"}\";","lastModifiedDate":"2024-03-18"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"jskimdev":48,"-":56}},{"path":"src/test/java/seedu/address/model/patient/PhoneMatchesPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Vision-2000"},"content":"package seedu.address.model.patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"Vision-2000"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"Vision-2000"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"Vision-2000"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"Vision-2000"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"Vision-2000"},"content":"import seedu.address.testutil.PatientBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"Vision-2000"},"content":"public class PhoneMatchesPredicateTest {","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"Vision-2000"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"Vision-2000"},"content":" public void equals() {","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"Vision-2000"},"content":" String firstPhoneString \u003d \"99999999\";","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"Vision-2000"},"content":" Phone firstPhone \u003d new Phone(firstPhoneString);","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"Vision-2000"},"content":" String secondPhoneString \u003d \"88888888\";","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"Vision-2000"},"content":" Phone secondPhone \u003d new Phone(secondPhoneString);","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"Vision-2000"},"content":" PhoneMatchesPredicate firstPredicate \u003d new PhoneMatchesPredicate(firstPhone);","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"Vision-2000"},"content":" PhoneMatchesPredicate secondPredicate \u003d new PhoneMatchesPredicate(secondPhone);","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"Vision-2000"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"Vision-2000"},"content":" assertTrue(firstPredicate.equals(firstPredicate));","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"Vision-2000"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"Vision-2000"},"content":" String firstPhoneStringCopy \u003d \"99999999\";","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"Vision-2000"},"content":" Phone firstPhoneCopy \u003d new Phone(firstPhoneStringCopy);","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"Vision-2000"},"content":" PhoneMatchesPredicate firstPredicateCopy \u003d new PhoneMatchesPredicate(firstPhoneCopy);","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"Vision-2000"},"content":" assertTrue(firstPredicate.equals(firstPredicateCopy));","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"Vision-2000"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"Vision-2000"},"content":" assertFalse(firstPredicate.equals(1));","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"Vision-2000"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"Vision-2000"},"content":" assertFalse(firstPredicate.equals(null));","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"Vision-2000"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"Vision-2000"},"content":" assertFalse(firstPredicate.equals(secondPredicate));","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"Vision-2000"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"Vision-2000"},"content":" public void test_phoneMatches_returnsTrue() {","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"Vision-2000"},"content":" String phoneNumber \u003d \"98765432\";","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"Vision-2000"},"content":" PhoneMatchesPredicate predicate \u003d new PhoneMatchesPredicate(new Phone(phoneNumber));","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"Vision-2000"},"content":" assertTrue(predicate.test(new PatientBuilder().withPhone(phoneNumber).build()));","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"Vision-2000"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"Vision-2000"},"content":" public void test_phoneDoesNotMatch_returnsFalse() {","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"Vision-2000"},"content":" // Null check","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"Vision-2000"},"content":" String phoneNumber \u003d \"98765432\";","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"Vision-2000"},"content":" PhoneMatchesPredicate predicate \u003d new PhoneMatchesPredicate(new Phone(phoneNumber));","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"Vision-2000"},"content":" assertFalse(predicate.test(null));","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"Vision-2000"},"content":" // Non-matching phones","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"Vision-2000"},"content":" assertFalse(predicate.test(new PatientBuilder().withPhone(\"99999999\").build()));","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"Vision-2000"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"Vision-2000"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"Vision-2000"},"content":" Phone phone \u003d new Phone(\"99999999\");","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"Vision-2000"},"content":" PhoneMatchesPredicate predicate \u003d new PhoneMatchesPredicate(phone);","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"Vision-2000"},"content":" String expected \u003d PhoneMatchesPredicate.class.getCanonicalName() + \"{phone\u003d\" + phone + \"}\";","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"Vision-2000"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"Vision-2000"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"Vision-2000":69}},{"path":"src/test/java/seedu/address/model/patient/PhoneTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jskimdev"},"content":"package seedu.address.model.patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class PhoneTest {","lastModifiedDate":"2017-01-16"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04"},{"lineNumber":13,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new Phone(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":14,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void constructor_invalidPhone_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":" String invalidPhone \u003d \"\";","lastModifiedDate":"2017-05-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Phone(invalidPhone));","lastModifiedDate":"2019-03-14"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void isValidPhone() {","lastModifiedDate":"2017-01-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // null phone number","lastModifiedDate":"2017-12-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Phone.isValidPhone(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // invalid phone numbers","lastModifiedDate":"2017-01-16"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"\")); // empty string","lastModifiedDate":"2017-01-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\" \")); // spaces only","lastModifiedDate":"2017-01-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"91\")); // less than 3 numbers","lastModifiedDate":"2017-05-04"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"phone\")); // non-numeric","lastModifiedDate":"2017-01-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"9011p041\")); // alphabets within digits","lastModifiedDate":"2017-01-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"9312 1534\")); // spaces within digits","lastModifiedDate":"2017-01-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // valid phone numbers","lastModifiedDate":"2017-01-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertTrue(Phone.isValidPhone(\"911\")); // exactly 3 numbers","lastModifiedDate":"2017-05-04"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertTrue(Phone.isValidPhone(\"93121534\"));","lastModifiedDate":"2017-01-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertTrue(Phone.isValidPhone(\"124293842033123\")); // long phone numbers","lastModifiedDate":"2017-01-16"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" Phone phone \u003d new Phone(\"999\");","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(phone.equals(new Phone(\"999\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertTrue(phone.equals(phone));","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(phone.equals(null));","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertFalse(phone.equals(5.0f));","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertFalse(phone.equals(new Phone(\"995\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16"}],"authorContributionMap":{"jskimdev":1,"-":59}},{"path":"src/test/java/seedu/address/model/patient/SexTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jskimdev"},"content":"package seedu.address.model.patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"jskimdev"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"jskimdev"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"jskimdev"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"jskimdev"},"content":"public class SexTest {","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"jskimdev"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"jskimdev"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"jskimdev"},"content":" assertThrows(NullPointerException.class, () -\u003e new Sex(null));","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"jskimdev"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"jskimdev"},"content":" public void constructor_invalidSex_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"jskimdev"},"content":" String invalidSex \u003d \"\";","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"jskimdev"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Sex(invalidSex));","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"jskimdev"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"jskimdev"},"content":" public void isValidSex() {","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"jskimdev"},"content":" // null sex","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"jskimdev"},"content":" assertThrows(NullPointerException.class, () -\u003e Sex.isValidSex(null));","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"jskimdev"},"content":" // invalid sex","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"jskimdev"},"content":" assertFalse(Sex.isValidSex(\"\")); // empty string","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"jskimdev"},"content":" assertFalse(Sex.isValidSex(\" \")); // spaces only","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"jskimdev"},"content":" assertFalse(Sex.isValidSex(\"akldjkldf\")); // random string","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"jskimdev"},"content":" assertFalse(Sex.isValidSex(\"Malet\")); // similar to valid string","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"jskimdev"},"content":" // valid sex","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"jskimdev"},"content":" assertTrue(Sex.isValidSex(\"Male\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"jskimdev"},"content":" assertTrue(Sex.isValidSex(\"Female\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"jskimdev"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"jskimdev"},"content":" public void equals() {","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"jskimdev"},"content":" Sex sex \u003d new Sex(\"Male\");","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"jskimdev"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"jskimdev"},"content":" assertTrue(sex.equals(new Sex(\"Male\")));","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"jskimdev"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"jskimdev"},"content":" assertTrue(sex.equals(sex));","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"jskimdev"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"jskimdev"},"content":" assertFalse(sex.equals(null));","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"jskimdev"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"jskimdev"},"content":" assertFalse(sex.equals(5.0f));","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"jskimdev"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"jskimdev"},"content":" assertFalse(sex.equals(new Sex(\"Female\")));","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"jskimdev"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"jskimdev":56}},{"path":"src/test/java/seedu/address/model/patient/UniquePatientListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jskimdev"},"content":"package seedu.address.model.patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.testutil.TypicalPatients.ALICE;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.testutil.TypicalPatients.BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":17,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.exceptions.DuplicatePatientException;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.exceptions.PatientNotFoundException;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"jskimdev"},"content":"import seedu.address.testutil.PatientBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":21,"author":{"gitId":"jskimdev"},"content":"public class UniquePatientListTest {","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":23,"author":{"gitId":"jskimdev"},"content":" private final UniquePatientList uniquePatientList \u003d new UniquePatientList();","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":26,"author":{"gitId":"jskimdev"},"content":" public void contains_nullPatient_throwsNullPointerException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"jskimdev"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePatientList.contains(null));","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":31,"author":{"gitId":"jskimdev"},"content":" public void contains_patientNotInList_returnsFalse() {","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"jskimdev"},"content":" assertFalse(uniquePatientList.contains(ALICE));","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":36,"author":{"gitId":"jskimdev"},"content":" public void contains_patientInList_returnsTrue() {","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"jskimdev"},"content":" uniquePatientList.add(ALICE);","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"jskimdev"},"content":" assertTrue(uniquePatientList.contains(ALICE));","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":42,"author":{"gitId":"jskimdev"},"content":" public void contains_patientWithSameIdentityFieldsInList_returnsTrue() {","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"jskimdev"},"content":" uniquePatientList.add(ALICE);","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"jskimdev"},"content":" Patient editedAlice \u003d new PatientBuilder(ALICE).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-08"},{"lineNumber":46,"author":{"gitId":"jskimdev"},"content":" assertTrue(uniquePatientList.contains(editedAlice));","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":50,"author":{"gitId":"jskimdev"},"content":" public void add_nullPatient_throwsNullPointerException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"jskimdev"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePatientList.add(null));","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":55,"author":{"gitId":"jskimdev"},"content":" public void add_duplicatePatient_throwsDuplicatePatientException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"jskimdev"},"content":" uniquePatientList.add(ALICE);","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"jskimdev"},"content":" assertThrows(DuplicatePatientException.class, () -\u003e uniquePatientList.add(ALICE));","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":61,"author":{"gitId":"jskimdev"},"content":" public void setPatient_nullTargetPatient_throwsNullPointerException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"jskimdev"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePatientList.setPatient(null, ALICE));","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":66,"author":{"gitId":"jskimdev"},"content":" public void setPatient_nullEditedPatient_throwsNullPointerException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"jskimdev"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePatientList.setPatient(ALICE, null));","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":71,"author":{"gitId":"jskimdev"},"content":" public void setPatient_targetPatientNotInList_throwsPatientNotFoundException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"jskimdev"},"content":" assertThrows(PatientNotFoundException.class, () -\u003e uniquePatientList.setPatient(ALICE, ALICE));","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":76,"author":{"gitId":"jskimdev"},"content":" public void setPatient_editedPatientIsSamePatient_success() {","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"jskimdev"},"content":" uniquePatientList.add(ALICE);","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"jskimdev"},"content":" uniquePatientList.setPatient(ALICE, ALICE);","lastModifiedDate":"2024-03-19"},{"lineNumber":79,"author":{"gitId":"jskimdev"},"content":" UniquePatientList expectedUniquePatientList \u003d new UniquePatientList();","lastModifiedDate":"2024-03-19"},{"lineNumber":80,"author":{"gitId":"jskimdev"},"content":" expectedUniquePatientList.add(ALICE);","lastModifiedDate":"2024-03-19"},{"lineNumber":81,"author":{"gitId":"jskimdev"},"content":" assertEquals(expectedUniquePatientList, uniquePatientList);","lastModifiedDate":"2024-03-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":85,"author":{"gitId":"jskimdev"},"content":" public void setPatient_editedPatientHasSameIdentity_success() {","lastModifiedDate":"2024-03-19"},{"lineNumber":86,"author":{"gitId":"jskimdev"},"content":" uniquePatientList.add(ALICE);","lastModifiedDate":"2024-03-19"},{"lineNumber":87,"author":{"gitId":"jskimdev"},"content":" Patient editedAlice \u003d new PatientBuilder(ALICE).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2024-03-19"},{"lineNumber":88,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-08"},{"lineNumber":89,"author":{"gitId":"jskimdev"},"content":" uniquePatientList.setPatient(ALICE, editedAlice);","lastModifiedDate":"2024-03-19"},{"lineNumber":90,"author":{"gitId":"jskimdev"},"content":" UniquePatientList expectedUniquePatientList \u003d new UniquePatientList();","lastModifiedDate":"2024-03-19"},{"lineNumber":91,"author":{"gitId":"jskimdev"},"content":" expectedUniquePatientList.add(editedAlice);","lastModifiedDate":"2024-03-19"},{"lineNumber":92,"author":{"gitId":"jskimdev"},"content":" assertEquals(expectedUniquePatientList, uniquePatientList);","lastModifiedDate":"2024-03-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":96,"author":{"gitId":"jskimdev"},"content":" public void setPatient_editedPatientHasDifferentIdentity_success() {","lastModifiedDate":"2024-03-19"},{"lineNumber":97,"author":{"gitId":"jskimdev"},"content":" uniquePatientList.add(ALICE);","lastModifiedDate":"2024-03-19"},{"lineNumber":98,"author":{"gitId":"jskimdev"},"content":" uniquePatientList.setPatient(ALICE, BOB);","lastModifiedDate":"2024-03-19"},{"lineNumber":99,"author":{"gitId":"jskimdev"},"content":" UniquePatientList expectedUniquePatientList \u003d new UniquePatientList();","lastModifiedDate":"2024-03-19"},{"lineNumber":100,"author":{"gitId":"jskimdev"},"content":" expectedUniquePatientList.add(BOB);","lastModifiedDate":"2024-03-19"},{"lineNumber":101,"author":{"gitId":"jskimdev"},"content":" assertEquals(expectedUniquePatientList, uniquePatientList);","lastModifiedDate":"2024-03-19"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":105,"author":{"gitId":"jskimdev"},"content":" public void setPatient_editedPatientHasNonUniqueIdentity_throwsDuplicatePatientException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":106,"author":{"gitId":"jskimdev"},"content":" uniquePatientList.add(ALICE);","lastModifiedDate":"2024-03-19"},{"lineNumber":107,"author":{"gitId":"jskimdev"},"content":" uniquePatientList.add(BOB);","lastModifiedDate":"2024-03-19"},{"lineNumber":108,"author":{"gitId":"jskimdev"},"content":" assertThrows(DuplicatePatientException.class, () -\u003e uniquePatientList.setPatient(ALICE, BOB));","lastModifiedDate":"2024-03-19"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":112,"author":{"gitId":"jskimdev"},"content":" public void remove_nullPatient_throwsNullPointerException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":113,"author":{"gitId":"jskimdev"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePatientList.remove(null));","lastModifiedDate":"2024-03-19"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":117,"author":{"gitId":"jskimdev"},"content":" public void remove_patientDoesNotExist_throwsPatientNotFoundException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":118,"author":{"gitId":"jskimdev"},"content":" assertThrows(PatientNotFoundException.class, () -\u003e uniquePatientList.remove(ALICE));","lastModifiedDate":"2024-03-19"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":122,"author":{"gitId":"jskimdev"},"content":" public void remove_existingPatient_removesPatient() {","lastModifiedDate":"2024-03-19"},{"lineNumber":123,"author":{"gitId":"jskimdev"},"content":" uniquePatientList.add(ALICE);","lastModifiedDate":"2024-03-19"},{"lineNumber":124,"author":{"gitId":"jskimdev"},"content":" uniquePatientList.remove(ALICE);","lastModifiedDate":"2024-03-19"},{"lineNumber":125,"author":{"gitId":"jskimdev"},"content":" UniquePatientList expectedUniquePatientList \u003d new UniquePatientList();","lastModifiedDate":"2024-03-19"},{"lineNumber":126,"author":{"gitId":"jskimdev"},"content":" assertEquals(expectedUniquePatientList, uniquePatientList);","lastModifiedDate":"2024-03-19"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":130,"author":{"gitId":"jskimdev"},"content":" public void setPatients_nullUniquePatientList_throwsNullPointerException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":131,"author":{"gitId":"jskimdev"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePatientList.setPatients((UniquePatientList) null));","lastModifiedDate":"2024-03-19"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":135,"author":{"gitId":"jskimdev"},"content":" public void setPatient_uniquePatientList_replacesOwnListWithProvidedUniquePatientList() {","lastModifiedDate":"2024-03-19"},{"lineNumber":136,"author":{"gitId":"jskimdev"},"content":" uniquePatientList.add(ALICE);","lastModifiedDate":"2024-03-19"},{"lineNumber":137,"author":{"gitId":"jskimdev"},"content":" UniquePatientList expectedUniquePatientList \u003d new UniquePatientList();","lastModifiedDate":"2024-03-19"},{"lineNumber":138,"author":{"gitId":"jskimdev"},"content":" expectedUniquePatientList.add(BOB);","lastModifiedDate":"2024-03-19"},{"lineNumber":139,"author":{"gitId":"jskimdev"},"content":" uniquePatientList.setPatients(expectedUniquePatientList);","lastModifiedDate":"2024-03-19"},{"lineNumber":140,"author":{"gitId":"jskimdev"},"content":" assertEquals(expectedUniquePatientList, uniquePatientList);","lastModifiedDate":"2024-03-19"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":143,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":144,"author":{"gitId":"jskimdev"},"content":" public void setPatients_nullList_throwsNullPointerException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":145,"author":{"gitId":"jskimdev"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePatientList.setPatients((List\u003cPatient\u003e) null));","lastModifiedDate":"2024-03-19"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":148,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":149,"author":{"gitId":"jskimdev"},"content":" public void setPatients_list_replacesOwnListWithProvidedList() {","lastModifiedDate":"2024-03-19"},{"lineNumber":150,"author":{"gitId":"jskimdev"},"content":" uniquePatientList.add(ALICE);","lastModifiedDate":"2024-03-19"},{"lineNumber":151,"author":{"gitId":"jskimdev"},"content":" List\u003cPatient\u003e patientList \u003d Collections.singletonList(BOB);","lastModifiedDate":"2024-03-19"},{"lineNumber":152,"author":{"gitId":"jskimdev"},"content":" uniquePatientList.setPatients(patientList);","lastModifiedDate":"2024-03-19"},{"lineNumber":153,"author":{"gitId":"jskimdev"},"content":" UniquePatientList expectedUniquePatientList \u003d new UniquePatientList();","lastModifiedDate":"2024-03-19"},{"lineNumber":154,"author":{"gitId":"jskimdev"},"content":" expectedUniquePatientList.add(BOB);","lastModifiedDate":"2024-03-19"},{"lineNumber":155,"author":{"gitId":"jskimdev"},"content":" assertEquals(expectedUniquePatientList, uniquePatientList);","lastModifiedDate":"2024-03-19"},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":158,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":159,"author":{"gitId":"jskimdev"},"content":" public void setPatients_listWithDuplicatePatients_throwsDuplicatePatientException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":160,"author":{"gitId":"jskimdev"},"content":" List\u003cPatient\u003e listWithDuplicatePatients \u003d Arrays.asList(ALICE, ALICE);","lastModifiedDate":"2024-03-19"},{"lineNumber":161,"author":{"gitId":"jskimdev"},"content":" assertThrows(DuplicatePatientException.class, () -\u003e uniquePatientList.setPatients(listWithDuplicatePatients));","lastModifiedDate":"2024-03-19"},{"lineNumber":162,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":165,"author":{"gitId":"-"},"content":" public void asUnmodifiableObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2018-04-05"},{"lineNumber":166,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, ()","lastModifiedDate":"2019-03-23"},{"lineNumber":167,"author":{"gitId":"jskimdev"},"content":" -\u003e uniquePatientList.asUnmodifiableObservableList().remove(0));","lastModifiedDate":"2024-03-19"},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-24"},{"lineNumber":170,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-24"},{"lineNumber":171,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-24"},{"lineNumber":172,"author":{"gitId":"jskimdev"},"content":" assertEquals(uniquePatientList.asUnmodifiableObservableList().toString(), uniquePatientList.toString());","lastModifiedDate":"2024-03-19"},{"lineNumber":173,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-24"},{"lineNumber":174,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"jskimdev":84,"-":90}},{"path":"src/test/java/seedu/address/model/util/SampleDataUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Vision-2000"},"content":"package seedu.address.model.util;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"Vision-2000"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"Vision-2000"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"Vision-2000"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"Vision-2000"},"content":"public class SampleDataUtilTest {","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"Vision-2000"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"Vision-2000"},"content":" public void getSamplePersons_returnsNonEmptyArray() {","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"Vision-2000"},"content":" Patient[] patients \u003d SampleDataUtil.getSamplePersons();","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"Vision-2000"},"content":" assertTrue(patients.length !\u003d 0);","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"Vision-2000"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"Vision-2000":16}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedPatientTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.storage.JsonAdaptedPerson.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.testutil.TypicalPatients.BENSON;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Address;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Email;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Name;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Phone;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"jskimdev"},"content":"public class JsonAdaptedPatientTest {","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"jskimdev"},"content":" private static final String INVALID_DATEOFBIRTH \u003d \"24/2022\";","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d BENSON.getPhone().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d BENSON.getAddress().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"jskimdev"},"content":" private static final String VALID_DATEOFBIRTH \u003d BENSON.getDateOfBirth().toString();","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"jskimdev"},"content":" private static final String VALID_SEX \u003d BENSON.getSex().toString();","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void toModelType_validPersonDetails_returnsPerson() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(BENSON);","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertEquals(BENSON, person.toModelType());","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"jskimdev"},"content":" new JsonAdaptedPerson(INVALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_DATEOFBIRTH,","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"jskimdev"},"content":" VALID_SEX);","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"jskimdev"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(null, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"jskimdev"},"content":" VALID_DATEOFBIRTH, VALID_SEX);","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void toModelType_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":56,"author":{"gitId":"jskimdev"},"content":" new JsonAdaptedPerson(VALID_NAME, INVALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_DATEOFBIRTH,","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"jskimdev"},"content":" VALID_SEX);","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Phone.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void toModelType_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"jskimdev"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, null, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"jskimdev"},"content":" VALID_DATEOFBIRTH, VALID_SEX);","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"jskimdev"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, INVALID_EMAIL, VALID_ADDRESS, VALID_DATEOFBIRTH,","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"jskimdev"},"content":" VALID_SEX);","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":81,"author":{"gitId":"jskimdev"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, null, VALID_ADDRESS,","lastModifiedDate":"2024-03-17"},{"lineNumber":82,"author":{"gitId":"jskimdev"},"content":" VALID_DATEOFBIRTH, VALID_SEX);","lastModifiedDate":"2024-03-18"},{"lineNumber":83,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void toModelType_invalidAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":90,"author":{"gitId":"jskimdev"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, INVALID_ADDRESS, VALID_DATEOFBIRTH,","lastModifiedDate":"2024-03-18"},{"lineNumber":91,"author":{"gitId":"jskimdev"},"content":" VALID_SEX);","lastModifiedDate":"2024-03-18"},{"lineNumber":92,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Address.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public void toModelType_nullAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":98,"author":{"gitId":"jskimdev"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, null,","lastModifiedDate":"2024-03-17"},{"lineNumber":99,"author":{"gitId":"jskimdev"},"content":" VALID_DATEOFBIRTH, VALID_SEX);","lastModifiedDate":"2024-03-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"jskimdev":25,"-":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"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":6,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.testutil.TypicalPatients.ALICE;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.testutil.TypicalPatients.HOON;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.testutil.TypicalPatients.IDA;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.testutil.TypicalPatients.getTypicalAddressBook;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-08-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class JsonAddressBookStorageTest {","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonAddressBookStorageTest\");","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public Path testFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void readAddressBook_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e readAddressBook(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private java.util.Optional\u003cReadOnlyAddressBook\u003e readAddressBook(String filePath) throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" return new JsonAddressBookStorage(Paths.get(filePath)).readAddressBook(addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private Path addToTestDataPathIfNotNull(String prefsFileInTestDataFolder) {","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" return prefsFileInTestDataFolder !\u003d null","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" ? TEST_DATA_FOLDER.resolve(prefsFileInTestDataFolder)","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" : null;","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void read_missingFile_emptyResult() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(readAddressBook(\"NonExistentFile.json\").isPresent());","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void read_notJsonFormat_exceptionThrown() {","lastModifiedDate":"2019-03-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertThrows(DataLoadingException.class, () -\u003e readAddressBook(\"notJsonFormatAddressBook.json\"));","lastModifiedDate":"2023-06-14"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void readAddressBook_invalidPersonAddressBook_throwDataLoadingException() {","lastModifiedDate":"2023-06-14"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertThrows(DataLoadingException.class, () -\u003e readAddressBook(\"invalidPersonAddressBook.json\"));","lastModifiedDate":"2023-06-14"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void readAddressBook_invalidAndValidPersonAddressBook_throwDataLoadingException() {","lastModifiedDate":"2023-06-14"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertThrows(DataLoadingException.class, () -\u003e readAddressBook(\"invalidAndValidPersonAddressBook.json\"));","lastModifiedDate":"2023-06-14"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void readAndSaveAddressBook_allInOrder_success() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" Path filePath \u003d testFolder.resolve(\"TempAddressBook.json\");","lastModifiedDate":"2019-04-25"},{"lineNumber":66,"author":{"gitId":"-"},"content":" AddressBook original \u003d getTypicalAddressBook();","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" JsonAddressBookStorage jsonAddressBookStorage \u003d new JsonAddressBookStorage(filePath);","lastModifiedDate":"2018-08-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" // Save in new file and read back","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" jsonAddressBookStorage.saveAddressBook(original, filePath);","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook readBack \u003d jsonAddressBookStorage.readAddressBook(filePath).get();","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(readBack));","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" // Modify data, overwrite exiting file, and read back","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" original.addPerson(HOON);","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" original.removePerson(ALICE);","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" jsonAddressBookStorage.saveAddressBook(original, filePath);","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" readBack \u003d jsonAddressBookStorage.readAddressBook(filePath).get();","lastModifiedDate":"2018-08-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(readBack));","lastModifiedDate":"2018-08-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" // Save and read without specifying file path","lastModifiedDate":"2018-08-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" original.addPerson(IDA);","lastModifiedDate":"2018-08-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" jsonAddressBookStorage.saveAddressBook(original); // file path not specified","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" readBack \u003d jsonAddressBookStorage.readAddressBook().get(); // file path not specified","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(readBack));","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":" public void saveAddressBook_nullAddressBook_throwsNullPointerException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e saveAddressBook(null, \"SomeFile.json\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * Saves {@code addressBook} at the specified {@code filePath}.","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" private void saveAddressBook(ReadOnlyAddressBook addressBook, String filePath) {","lastModifiedDate":"2018-08-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-08-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(Paths.get(filePath))","lastModifiedDate":"2018-08-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" .saveAddressBook(addressBook, addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2018-08-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":" throw new AssertionError(\"There should not be an error writing to the file.\", ioe);","lastModifiedDate":"2018-08-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public void saveAddressBook_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e saveAddressBook(new AddressBook(), null));","lastModifiedDate":"2019-03-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"jskimdev":4,"-":106}},{"path":"src/test/java/seedu/address/storage/JsonSerializableAddressBookTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.JsonUtil;","lastModifiedDate":"2018-08-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"jskimdev"},"content":"import seedu.address.testutil.TypicalPatients;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class JsonSerializableAddressBookTest {","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonSerializableAddressBookTest\");","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private static final Path TYPICAL_PERSONS_FILE \u003d TEST_DATA_FOLDER.resolve(\"typicalPersonsAddressBook.json\");","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final Path INVALID_PERSON_FILE \u003d TEST_DATA_FOLDER.resolve(\"invalidPersonAddressBook.json\");","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final Path DUPLICATE_PERSON_FILE \u003d TEST_DATA_FOLDER.resolve(\"duplicatePersonAddressBook.json\");","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void toModelType_typicalPersonsFile_success() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(TYPICAL_PERSONS_FILE,","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook.class).get();","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" AddressBook addressBookFromFile \u003d dataFromFile.toModelType();","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"jskimdev"},"content":" AddressBook typicalPersonsAddressBook \u003d TypicalPatients.getTypicalAddressBook();","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertEquals(addressBookFromFile, typicalPersonsAddressBook);","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public void toModelType_invalidPersonFile_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(INVALID_PERSON_FILE,","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook.class).get();","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, dataFromFile::toModelType);","lastModifiedDate":"2019-03-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void toModelType_duplicatePersons_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(DUPLICATE_PERSON_FILE,","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook.class).get();","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, JsonSerializableAddressBook.MESSAGE_DUPLICATE_PERSON,","lastModifiedDate":"2019-03-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" dataFromFile::toModelType);","lastModifiedDate":"2019-03-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"jskimdev":2,"-":45}},{"path":"src/test/java/seedu/address/storage/StorageManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertNotNull;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.testutil.TypicalPatients.getTypicalAddressBook;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-09-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2016-09-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class StorageManagerTest {","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public Path testFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private StorageManager storageManager;","lastModifiedDate":"2017-04-01"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2016-10-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(getTempFilePath(\"ab\"));","lastModifiedDate":"2018-11-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(getTempFilePath(\"prefs\"));","lastModifiedDate":"2017-02-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" storageManager \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2017-02-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Path getTempFilePath(String fileName) {","lastModifiedDate":"2018-04-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return testFolder.resolve(fileName);","lastModifiedDate":"2019-04-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void prefsReadSave() throws Exception {","lastModifiedDate":"2016-10-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-09-28"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Note: This is an integration test that verifies the StorageManager is properly wired to the","lastModifiedDate":"2016-09-28"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * {@link JsonUserPrefsStorage} class.","lastModifiedDate":"2016-10-01"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * More extensive testing of UserPref saving/reading is done in {@link JsonUserPrefsStorageTest} class.","lastModifiedDate":"2016-10-01"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-28"},{"lineNumber":43,"author":{"gitId":"-"},"content":" UserPrefs original \u003d new UserPrefs();","lastModifiedDate":"2016-09-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" original.setGuiSettings(new GuiSettings(300, 600, 4, 6));","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" storageManager.saveUserPrefs(original);","lastModifiedDate":"2016-09-28"},{"lineNumber":46,"author":{"gitId":"-"},"content":" UserPrefs retrieved \u003d storageManager.readUserPrefs().get();","lastModifiedDate":"2016-09-28"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertEquals(original, retrieved);","lastModifiedDate":"2016-09-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void addressBookReadSave() throws Exception {","lastModifiedDate":"2016-09-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-16"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Note: This is an integration test that verifies the StorageManager is properly wired to the","lastModifiedDate":"2016-10-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * {@link JsonAddressBookStorage} class.","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * More extensive testing of UserPref saving/reading is done in {@link JsonAddressBookStorageTest} class.","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":57,"author":{"gitId":"-"},"content":" AddressBook original \u003d getTypicalAddressBook();","lastModifiedDate":"2017-07-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" storageManager.saveAddressBook(original);","lastModifiedDate":"2016-09-28"},{"lineNumber":59,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook retrieved \u003d storageManager.readAddressBook().get();","lastModifiedDate":"2016-09-28"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(retrieved));","lastModifiedDate":"2016-09-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-01"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void getAddressBookFilePath() {","lastModifiedDate":"2016-10-01"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertNotNull(storageManager.getAddressBookFilePath());","lastModifiedDate":"2016-10-01"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01"},{"lineNumber":68,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"jskimdev":1,"-":67}},{"path":"src/test/java/seedu/address/testutil/AddressBookBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21"},{"lineNumber":4,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * A utility class to help with building Addressbook objects.","lastModifiedDate":"2016-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Example usage: \u003cbr\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * {@code AddressBook ab \u003d new AddressBookBuilder().withPerson(\"John\", \"Doe\").build();}","lastModifiedDate":"2018-03-29"},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class AddressBookBuilder {","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" private AddressBook addressBook;","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public AddressBookBuilder() {","lastModifiedDate":"2017-05-31"},{"lineNumber":16,"author":{"gitId":"-"},"content":" addressBook \u003d new AddressBook();","lastModifiedDate":"2017-05-31"},{"lineNumber":17,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public AddressBookBuilder(AddressBook addressBook) {","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" this.addressBook \u003d addressBook;","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":24,"author":{"gitId":"jskimdev"},"content":" * Adds a new {@code Patient} to the {@code AddressBook} that we are building.","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":26,"author":{"gitId":"jskimdev"},"content":" public AddressBookBuilder withPerson(Patient patient) {","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"jskimdev"},"content":" addressBook.addPerson(patient);","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public AddressBook build() {","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"jskimdev":4,"-":30}},{"path":"src/test/java/seedu/address/testutil/EditPatientDescriptorBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-05-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":3,"author":{"gitId":"jskimdev"},"content":"import seedu.address.logic.commands.EditCommand.EditPatientDescriptor;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Address;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.DateOfBirth;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Email;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Name;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Phone;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Sex;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * A utility class to help with building EditPersonDescriptor objects.","lastModifiedDate":"2017-05-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-05"},{"lineNumber":15,"author":{"gitId":"jskimdev"},"content":"public class EditPatientDescriptorBuilder {","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":17,"author":{"gitId":"jskimdev"},"content":" private EditPatientDescriptor descriptor;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":19,"author":{"gitId":"jskimdev"},"content":" public EditPatientDescriptorBuilder() {","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"jskimdev"},"content":" descriptor \u003d new EditPatientDescriptor();","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":23,"author":{"gitId":"jskimdev"},"content":" public EditPatientDescriptorBuilder(EditPatientDescriptor descriptor) {","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"jskimdev"},"content":" this.descriptor \u003d new EditPatientDescriptor(descriptor);","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":28,"author":{"gitId":"jskimdev"},"content":" * Returns an {@code EditPersonDescriptor} with fields containing {@code patient}\u0027s details","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":30,"author":{"gitId":"jskimdev"},"content":" public EditPatientDescriptorBuilder(Patient patient) {","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"jskimdev"},"content":" descriptor \u003d new EditPatientDescriptor();","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"jskimdev"},"content":" descriptor.setName(patient.getName());","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"jskimdev"},"content":" descriptor.setPhone(patient.getPhone());","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"jskimdev"},"content":" descriptor.setEmail(patient.getEmail());","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"jskimdev"},"content":" descriptor.setAddress(patient.getAddress());","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"jskimdev"},"content":" descriptor.setDateOfBirth(patient.getDateOfBirth());","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":42,"author":{"gitId":"jskimdev"},"content":" public EditPatientDescriptorBuilder withName(String name) {","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":" descriptor.setName(new Name(name));","lastModifiedDate":"2017-12-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":50,"author":{"gitId":"jskimdev"},"content":" public EditPatientDescriptorBuilder withPhone(String phone) {","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" descriptor.setPhone(new Phone(phone));","lastModifiedDate":"2017-12-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":58,"author":{"gitId":"jskimdev"},"content":" public EditPatientDescriptorBuilder withEmail(String email) {","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":" descriptor.setEmail(new Email(email));","lastModifiedDate":"2017-12-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":66,"author":{"gitId":"jskimdev"},"content":" public EditPatientDescriptorBuilder withAddress(String address) {","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"-"},"content":" descriptor.setAddress(new Address(address));","lastModifiedDate":"2017-12-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":71,"author":{"gitId":"jskimdev"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"jskimdev"},"content":" * Sets the {@code DateOfBirth} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"jskimdev"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"jskimdev"},"content":" public EditPatientDescriptorBuilder withDateOfBirth(String dateOfBirth) {","lastModifiedDate":"2024-03-19"},{"lineNumber":75,"author":{"gitId":"jskimdev"},"content":" descriptor.setDateOfBirth(new DateOfBirth(dateOfBirth));","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"jskimdev"},"content":" return this;","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"jskimdev"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":80,"author":{"gitId":"jskimdev"},"content":" * Sets the {@code Sex} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-03-19"},{"lineNumber":81,"author":{"gitId":"jskimdev"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":82,"author":{"gitId":"jskimdev"},"content":" public EditPatientDescriptorBuilder withSex(String sex) {","lastModifiedDate":"2024-03-19"},{"lineNumber":83,"author":{"gitId":"jskimdev"},"content":" descriptor.setSex(new Sex(sex));","lastModifiedDate":"2024-03-19"},{"lineNumber":84,"author":{"gitId":"jskimdev"},"content":" return this;","lastModifiedDate":"2024-03-19"},{"lineNumber":85,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":86,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":87,"author":{"gitId":"jskimdev"},"content":" public EditPatientDescriptor build() {","lastModifiedDate":"2024-03-19"},{"lineNumber":88,"author":{"gitId":"-"},"content":" return descriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":90,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"jskimdev":43,"-":47}},{"path":"src/test/java/seedu/address/testutil/PatientBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":3,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Address;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.DateOfBirth;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Email;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Name;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Phone;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Sex;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-03"},{"lineNumber":12,"author":{"gitId":"jskimdev"},"content":" * A utility class to help with building Patient objects.","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-03"},{"lineNumber":14,"author":{"gitId":"jskimdev"},"content":"public class PatientBuilder {","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2020-12-18"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2017-04-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2020-12-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2017-04-05"},{"lineNumber":20,"author":{"gitId":"jskimdev"},"content":" public static final String DEFAULT_DATEOFBIRTH \u003d \"25/2/2025\";","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"jskimdev"},"content":" public static final String DEFAULT_SEX \u003d \"Female\";","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-12-20"},{"lineNumber":27,"author":{"gitId":"jskimdev"},"content":" private DateOfBirth dateOfBirth;","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"jskimdev"},"content":" private Sex sex;","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":31,"author":{"gitId":"Vision-2000"},"content":" * Creates a {@code PatientBuilder} with the default details.","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":33,"author":{"gitId":"jskimdev"},"content":" public PatientBuilder() {","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20"},{"lineNumber":35,"author":{"gitId":"-"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2017-12-20"},{"lineNumber":36,"author":{"gitId":"-"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2017-12-20"},{"lineNumber":37,"author":{"gitId":"-"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2017-12-20"},{"lineNumber":38,"author":{"gitId":"jskimdev"},"content":" dateOfBirth \u003d new DateOfBirth(DEFAULT_DATEOFBIRTH);","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"jskimdev"},"content":" sex \u003d new Sex(DEFAULT_SEX);","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11"},{"lineNumber":43,"author":{"gitId":"Vision-2000"},"content":" * Initializes the PatientBuilder with the data of {@code patientToCopy}.","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11"},{"lineNumber":45,"author":{"gitId":"jskimdev"},"content":" public PatientBuilder(Patient patientToCopy) {","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"jskimdev"},"content":" name \u003d patientToCopy.getName();","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"jskimdev"},"content":" phone \u003d patientToCopy.getPhone();","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"jskimdev"},"content":" email \u003d patientToCopy.getEmail();","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"jskimdev"},"content":" address \u003d patientToCopy.getAddress();","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"jskimdev"},"content":" dateOfBirth \u003d patientToCopy.getDateOfBirth();","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"jskimdev"},"content":" sex \u003d patientToCopy.getSex();","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11"},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":55,"author":{"gitId":"jskimdev"},"content":" * Sets the {@code Name} of the {@code Patient} that we are building.","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":57,"author":{"gitId":"jskimdev"},"content":" public PatientBuilder withName(String name) {","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":63,"author":{"gitId":"jskimdev"},"content":" * Sets the {@code Address} of the {@code Patient} that we are building.","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":65,"author":{"gitId":"jskimdev"},"content":" public PatientBuilder withAddress(String address) {","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":" this.address \u003d new Address(address);","lastModifiedDate":"2017-12-20"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":71,"author":{"gitId":"jskimdev"},"content":" * Sets the {@code Phone} of the {@code Patient} that we are building.","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":73,"author":{"gitId":"jskimdev"},"content":" public PatientBuilder withPhone(String phone) {","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2017-12-20"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":79,"author":{"gitId":"jskimdev"},"content":" * Sets the {@code Email} of the {@code Patient} that we are building.","lastModifiedDate":"2024-03-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":81,"author":{"gitId":"jskimdev"},"content":" public PatientBuilder withEmail(String email) {","lastModifiedDate":"2024-03-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2017-12-20"},{"lineNumber":83,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":86,"author":{"gitId":"jskimdev"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":87,"author":{"gitId":"jskimdev"},"content":" * Sets the {@code DateOfBirth} of the {@Code Patient} that we are buidling.","lastModifiedDate":"2024-03-19"},{"lineNumber":88,"author":{"gitId":"jskimdev"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":89,"author":{"gitId":"jskimdev"},"content":" public PatientBuilder withDateOfBirth(String dateOfBirth) {","lastModifiedDate":"2024-03-19"},{"lineNumber":90,"author":{"gitId":"jskimdev"},"content":" this.dateOfBirth \u003d new DateOfBirth(dateOfBirth);","lastModifiedDate":"2024-03-17"},{"lineNumber":91,"author":{"gitId":"jskimdev"},"content":" return this;","lastModifiedDate":"2024-03-17"},{"lineNumber":92,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":94,"author":{"gitId":"jskimdev"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":95,"author":{"gitId":"jskimdev"},"content":" * Sets the {@code Sex} of the {@Cose Patient} that we are building.","lastModifiedDate":"2024-03-19"},{"lineNumber":96,"author":{"gitId":"jskimdev"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":97,"author":{"gitId":"jskimdev"},"content":" public PatientBuilder withSex(String sex) {","lastModifiedDate":"2024-03-19"},{"lineNumber":98,"author":{"gitId":"jskimdev"},"content":" this.sex \u003d new Sex(sex);","lastModifiedDate":"2024-03-19"},{"lineNumber":99,"author":{"gitId":"jskimdev"},"content":" return this;","lastModifiedDate":"2024-03-19"},{"lineNumber":100,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":101,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":102,"author":{"gitId":"jskimdev"},"content":" public Patient build() {","lastModifiedDate":"2024-03-19"},{"lineNumber":103,"author":{"gitId":"jskimdev"},"content":" return new Patient(name, phone, email, address, dateOfBirth, sex);","lastModifiedDate":"2024-03-19"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":106,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03"}],"authorContributionMap":{"jskimdev":49,"-":55,"Vision-2000":2}},{"path":"src/test/java/seedu/address/testutil/PatientUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":3,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DATEOFBIRTH;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SEX;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"jskimdev"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"jskimdev"},"content":"import seedu.address.logic.commands.EditCommand.EditPatientDescriptor;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05"},{"lineNumber":15,"author":{"gitId":"jskimdev"},"content":" * A utility class for Patient.","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":17,"author":{"gitId":"jskimdev"},"content":"public class PatientUtil {","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05"},{"lineNumber":20,"author":{"gitId":"jskimdev"},"content":" * Returns an add command string for adding the {@code patient}.","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":22,"author":{"gitId":"jskimdev"},"content":" public static String getAddCommand(Patient patient) {","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"jskimdev"},"content":" return AddCommand.COMMAND_WORD + \" \" + getPersonDetails(patient);","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-06"},{"lineNumber":27,"author":{"gitId":"jskimdev"},"content":" * Returns the part of command string for the given {@code patient}\u0027s details.","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06"},{"lineNumber":29,"author":{"gitId":"jskimdev"},"content":" public static String getPersonDetails(Patient patient) {","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05"},{"lineNumber":31,"author":{"gitId":"jskimdev"},"content":" sb.append(PREFIX_NAME + patient.getName().fullName + \" \");","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"jskimdev"},"content":" sb.append(PREFIX_PHONE + patient.getPhone().value + \" \");","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"jskimdev"},"content":" sb.append(PREFIX_EMAIL + patient.getEmail().value + \" \");","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"jskimdev"},"content":" sb.append(PREFIX_ADDRESS + patient.getAddress().value + \" \");","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"jskimdev"},"content":" sb.append(PREFIX_DATEOFBIRTH + patient.getDateOfBirth().toString() + \" \");","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"jskimdev"},"content":" sb.append(PREFIX_SEX + patient.getSex().toString() + \" \");","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"jskimdev"},"content":" System.out.println(sb.toString());","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-04-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26"},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code EditPersonDescriptor}\u0027s details.","lastModifiedDate":"2018-03-26"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26"},{"lineNumber":44,"author":{"gitId":"jskimdev"},"content":" public static String getEditPersonDescriptorDetails(EditPatientDescriptor descriptor) {","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26"},{"lineNumber":46,"author":{"gitId":"-"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(PREFIX_NAME).append(name.fullName).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":47,"author":{"gitId":"-"},"content":" descriptor.getPhone().ifPresent(phone -\u003e sb.append(PREFIX_PHONE).append(phone.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":48,"author":{"gitId":"-"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(PREFIX_EMAIL).append(email.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":49,"author":{"gitId":"-"},"content":" descriptor.getAddress().ifPresent(address -\u003e sb.append(PREFIX_ADDRESS).append(address.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":50,"author":{"gitId":"jskimdev"},"content":" descriptor.getDateOfBirth().ifPresent(dateOfBirth -\u003e sb.append(PREFIX_DATEOFBIRTH)","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"jskimdev"},"content":" .append(dateOfBirth.dateOfBirth).append(\" \"));","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":54,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05"}],"authorContributionMap":{"jskimdev":28,"-":26}},{"path":"src/test/java/seedu/address/testutil/TestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Files;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-07-30"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-07-30"},{"lineNumber":10,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * A utility class for test cases.","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class TestUtil {","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Folder used for temp files created during testing. Ignored by Git.","lastModifiedDate":"2016-10-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final Path SANDBOX_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"sandbox\");","lastModifiedDate":"2018-04-21"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Appends {@code fileName} to the sandbox folder path and returns the resulting path.","lastModifiedDate":"2018-04-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Creates the sandbox folder if it doesn\u0027t exist.","lastModifiedDate":"2016-09-28"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static Path getFilePathInSandboxFolder(String fileName) {","lastModifiedDate":"2018-04-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-28"},{"lineNumber":28,"author":{"gitId":"-"},"content":" Files.createDirectories(SANDBOX_FOLDER);","lastModifiedDate":"2018-04-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-28"},{"lineNumber":30,"author":{"gitId":"-"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2016-09-28"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-28"},{"lineNumber":32,"author":{"gitId":"-"},"content":" return SANDBOX_FOLDER.resolve(fileName);","lastModifiedDate":"2018-04-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-30"},{"lineNumber":36,"author":{"gitId":"jskimdev"},"content":" * Returns the middle index of the patient in the {@code model}\u0027s patient list.","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-30"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static Index getMidIndex(Model model) {","lastModifiedDate":"2017-07-30"},{"lineNumber":39,"author":{"gitId":"-"},"content":" return Index.fromOneBased(model.getFilteredPersonList().size() / 2);","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-30"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-30"},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-30"},{"lineNumber":43,"author":{"gitId":"jskimdev"},"content":" * Returns the last index of the patient in the {@code model}\u0027s patient list.","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-30"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static Index getLastIndex(Model model) {","lastModifiedDate":"2017-07-30"},{"lineNumber":46,"author":{"gitId":"-"},"content":" return Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-30"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-30"},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-30"},{"lineNumber":50,"author":{"gitId":"jskimdev"},"content":" * Returns the patient in the {@code model}\u0027s patient list at {@code index}.","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-30"},{"lineNumber":52,"author":{"gitId":"jskimdev"},"content":" public static Patient getPerson(Model model, Index index) {","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return model.getFilteredPersonList().get(index.getZeroBased());","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-30"},{"lineNumber":55,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"jskimdev":5,"-":50}},{"path":"src/test/java/seedu/address/testutil/TypicalPatients.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":3,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_DATEOFBIRTH_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_DATEOFBIRTH_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SEX_AMY;","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"jskimdev"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SEX_BOB;","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-07"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21"},{"lineNumber":21,"author":{"gitId":"jskimdev"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13"},{"lineNumber":24,"author":{"gitId":"jskimdev"},"content":" * A utility class containing a list of {@code Patient} objects to be used in tests.","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13"},{"lineNumber":26,"author":{"gitId":"jskimdev"},"content":"public class TypicalPatients {","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":28,"author":{"gitId":"jskimdev"},"content":" public static final Patient ALICE \u003d new PatientBuilder().withName(\"Alice Pauline\")","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" .withAddress(\"123, Jurong West Ave 6, #08-111\").withEmail(\"alice@example.com\")","lastModifiedDate":"2017-04-05"},{"lineNumber":30,"author":{"gitId":"jskimdev"},"content":" .withPhone(\"94351253\").withDateOfBirth(\"25/2/2024\").withSex(\"Female\")","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"jskimdev"},"content":" .build();","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"jskimdev"},"content":" public static final Patient BENSON \u003d new PatientBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2017-09-21"},{"lineNumber":34,"author":{"gitId":"jskimdev"},"content":" .withEmail(\"johnd@example.com\").withPhone(\"98765432\").withDateOfBirth(\"25/2/2024\").withSex(\"Male\")","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"jskimdev"},"content":" .build();","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"jskimdev"},"content":" public static final Patient CARL \u003d new PatientBuilder().withName(\"Carl Kurz\").withPhone(\"95352563\")","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"jskimdev"},"content":" .withEmail(\"heinz@example.com\").withAddress(\"wall street\").withDateOfBirth(\"2032-06-23\")","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"jskimdev"},"content":" .withSex(\"Male\").build();","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"jskimdev"},"content":" public static final Patient DANIEL \u003d new PatientBuilder().withName(\"Daniel Meier\").withPhone(\"87652533\")","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"jskimdev"},"content":" .withEmail(\"cornelia@example.com\").withAddress(\"10th street\").withDateOfBirth(\"2028-11-28\")","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"jskimdev"},"content":" .withSex(\"Male\").build();","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"jskimdev"},"content":" public static final Patient ELLE \u003d new PatientBuilder().withName(\"Elle Meyer\").withPhone(\"9482224\")","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"jskimdev"},"content":" .withEmail(\"werner@example.com\").withAddress(\"michegan ave\").withDateOfBirth(\"2024-01-01\")","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"jskimdev"},"content":" .withSex(\"Male\").build();","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"jskimdev"},"content":" public static final Patient FIONA \u003d new PatientBuilder().withName(\"Fiona Kunz\").withPhone(\"9482427\")","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"jskimdev"},"content":" .withEmail(\"lydia@example.com\").withAddress(\"little tokyo\").withDateOfBirth(\"2024-06-25\")","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"jskimdev"},"content":" .withSex(\"Female\").build();","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"jskimdev"},"content":" public static final Patient GEORGE \u003d new PatientBuilder().withName(\"George Best\").withPhone(\"9482442\")","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"jskimdev"},"content":" .withEmail(\"anna@example.com\").withAddress(\"4th street\").withDateOfBirth(\"25/2/2024\")","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"jskimdev"},"content":" .withSex(\"Male\").build();","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13"},{"lineNumber":53,"author":{"gitId":"jskimdev"},"content":" public static final Patient HOON \u003d new PatientBuilder().withName(\"Hoon Meier\").withPhone(\"8482424\")","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"jskimdev"},"content":" .withEmail(\"stefan@example.com\").withAddress(\"little india\").withDateOfBirth(\"25/2/2024\")","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"jskimdev"},"content":" .withSex(\"Male\").build();","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"jskimdev"},"content":" public static final Patient IDA \u003d new PatientBuilder().withName(\"Ida Mueller\").withPhone(\"8482131\")","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"jskimdev"},"content":" .withEmail(\"hans@example.com\").withAddress(\"chicago ave\").withDateOfBirth(\"25/2/2024\")","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"jskimdev"},"content":" .withSex(\"Female\").build();","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":60,"author":{"gitId":"-"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2017-08-22"},{"lineNumber":61,"author":{"gitId":"jskimdev"},"content":" public static final Patient AMY \u003d new PatientBuilder().withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"jskimdev"},"content":" .withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY).withDateOfBirth(VALID_DATEOFBIRTH_AMY)","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"jskimdev"},"content":" .withSex(VALID_SEX_AMY).build();","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"jskimdev"},"content":" public static final Patient BOB \u003d new PatientBuilder().withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"jskimdev"},"content":" .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB).withDateOfBirth(VALID_DATEOFBIRTH_BOB)","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"jskimdev"},"content":" .withSex(VALID_SEX_BOB).build();","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":70,"author":{"gitId":"jskimdev"},"content":" private TypicalPatients() {} // prevents instantiation","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2017-08-05"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2017-08-05"},{"lineNumber":76,"author":{"gitId":"-"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2017-08-05"},{"lineNumber":77,"author":{"gitId":"jskimdev"},"content":" for (Patient patient : getTypicalPersons()) {","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"jskimdev"},"content":" ab.addPerson(patient);","lastModifiedDate":"2024-03-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04"},{"lineNumber":83,"author":{"gitId":"jskimdev"},"content":" public static List\u003cPatient\u003e getTypicalPersons() {","lastModifiedDate":"2024-03-19"},{"lineNumber":84,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2017-08-07"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04"},{"lineNumber":86,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13"}],"authorContributionMap":{"jskimdev":53,"-":33}}] diff --git a/AY2324S2-CS2103T-T14-2_tp_master/commits.json b/AY2324S2-CS2103T-T14-2_tp_master/commits.json index a94c4442..56877716 100644 --- a/AY2324S2-CS2103T-T14-2_tp_master/commits.json +++ b/AY2324S2-CS2103T-T14-2_tp_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"jskimdev":[{"date":"2024-03-06","commitResults":[{"hash":"bc88a10d930d159cf2fc80081f8fe5064fb4c44b","isMergeCommit":false,"messageTitle":"Update Junseo details in About Us page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":9,"deletions":18}}}]},{"date":"2024-03-07","commitResults":[{"hash":"8e58e0688667d63e7e49ab56419b6200e7ce09c3","isMergeCommit":false,"messageTitle":"Add fifth member in About Us page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":1}}},{"hash":"a696da6f4cfb93ccd976425c88a624b03496fde6","isMergeCommit":false,"messageTitle":"Add empty line at the end AboutUs page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"bb8310dddc2c0cc7d4605183d96c45302c7e15b6","isMergeCommit":false,"messageTitle":"Remove unused fifth member in AboutUs page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":10}}},{"hash":"9d998cfeedfdd414b46f1a6fb4043417056ce09a","isMergeCommit":true,"messageTitle":"Merge pull request #11 from Vision-2000/branch-README-1","messageBody":"Update README.md with mock Ui image and our project content","fileTypesAndContributionMap":{}},{"hash":"752caf17bb608c213a05e7ff9268e892860549b0","isMergeCommit":true,"messageTitle":"Merge pull request #13 from Vision-2000/branch-AboutUs-1","messageBody":"Update Eugene details in About Us page","fileTypesAndContributionMap":{}},{"hash":"b64fdc59ff6d02a611e983b7edc4944675bbad09","isMergeCommit":true,"messageTitle":"Merge pull request #14 from jeong-jaeho/branch-AboutUS-Jaeho","messageBody":"Update AboutUs page","fileTypesAndContributionMap":{}},{"hash":"e949b11b0bdaeabb3f22a4f200d1f2ae3f1773bd","isMergeCommit":true,"messageTitle":"Merge pull request #19 from Vision-2000/branch-DeveloperGuide-1","messageBody":"Update DeveloperGuide.md","tags":["v1.1"],"fileTypesAndContributionMap":{}}]},{"date":"2024-03-14","commitResults":[{"hash":"1f8be499fdcfe04c4bc0f07d604ed6a1fbd58363","isMergeCommit":false,"messageTitle":"Add dateofbirth class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":53,"deletions":0}}},{"hash":"18eba7f81880610709217cfc2805c3e16ac0b082","isMergeCommit":false,"messageTitle":"Add Javadoc for DateOfBirth class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":26,"deletions":3}}},{"hash":"65c02e6b7814e6d5d38f97c347e09b048ab2ed38","isMergeCommit":false,"messageTitle":"Fix code structure to follow coding standard","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}}]},{"date":"2024-03-17","commitResults":[{"hash":"ea4edb720faf6d366a5c5acd40ebdede068e497a","isMergeCommit":false,"messageTitle":"Add testcases for Date of Birth","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":39,"deletions":0}}},{"hash":"a29fd5144ce0a58abee78e25230239d6b5baa1d7","isMergeCommit":false,"messageTitle":"Add date of birth field in add and edit commands","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":99,"deletions":306},"test-code":{"insertions":15,"deletions":149}}},{"hash":"ff805a1dbaa008f2c5406d7dd8ab3a5b757000ae","isMergeCommit":false,"messageTitle":"Add date of birth in PersonCard JavaFx","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1}}},{"hash":"5b5ab3f811b05b4ce4b71c7cb26cb88ce4d6012b","isMergeCommit":false,"messageTitle":"Fix import style error","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":42,"deletions":11}}},{"hash":"ea9626d35241548829b737f8abe2956b393647ca","isMergeCommit":false,"messageTitle":"Remove typo","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"24b28e23178ba424b8684ea7cb459dd7b36010fe","isMergeCommit":false,"messageTitle":"Fix style issue","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":6}}},{"hash":"0f284ffedc0b011734aab447fcff4bcce8630c77","isMergeCommit":false,"messageTitle":"Fix test codes related to tages","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":2},"test-code":{"insertions":71,"deletions":129}}},{"hash":"f2bde512420a91c21d98afcf3188b73244f27673","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-AddPatient","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"d37e9e823a2d8301aa6a7e34a178dea27b2df9d5","isMergeCommit":false,"messageTitle":"Fix import issue","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":46,"deletions":52}}},{"hash":"6e3c0c0c8af49197eb8c9f02f4addca80b657aeb","isMergeCommit":false,"messageTitle":"Fix import issue","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":37,"deletions":5}}}]},{"date":"2024-03-18","commitResults":[{"hash":"fbb72478b76195fa3977c9aacfe5365b824508ec","isMergeCommit":false,"messageTitle":"Resolve all failed testcases to fit the new model","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":19,"deletions":13}}},{"hash":"68e26248e5258e3258f6525db88683901e7b8e70","isMergeCommit":false,"messageTitle":"Resolve import issue in LogicManagerTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":1}}},{"hash":"b63eba4621b1ebc5404b6e18ed45091e050f0560","isMergeCommit":false,"messageTitle":"Add sex field","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":83,"deletions":0}}},{"hash":"ec9da7048b359f27b1f58b74921202f84a9d9ac0","isMergeCommit":false,"messageTitle":"Add javadoc","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":0}}},{"hash":"d2f117abe56f2772fb4f3d50d8743d4a7a7e03b8","isMergeCommit":false,"messageTitle":"Add testcases for sex field","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":36,"deletions":0}}},{"hash":"45dee4c203d9131cd8e4e0e356eadb608495235a","isMergeCommit":false,"messageTitle":"Add sex field in add command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":85,"deletions":41},"test-code":{"insertions":91,"deletions":52}}}]},{"date":"2024-03-19","commitResults":[{"hash":"72c36b7a83160ddf02aaab0c352983a4e449c43f","isMergeCommit":false,"messageTitle":"Update testcases to test new add command","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":107,"deletions":34}}},{"hash":"d07801b7108ff78c4e4be11c40425d44fa945f86","isMergeCommit":false,"messageTitle":"Fix import issue","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":19,"deletions":3}}},{"hash":"f2d11d02e9829be7278cbb7ea286c5db5205df2f","isMergeCommit":false,"messageTitle":"Fix import issue in test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":48,"deletions":7}}},{"hash":"cebe840273180facea3d4f026fbfcc67dafba55e","isMergeCommit":false,"messageTitle":"Fix import issue in PersonUtil","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":4}}},{"hash":"a73dd75f9a7d8e5fd9e9fb79285bb2a2c431fa2c","isMergeCommit":false,"messageTitle":"Change the class Person name to Patient","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":199,"deletions":199},"other":{"insertions":103,"deletions":103},"docs":{"insertions":61,"deletions":61},"test-code":{"insertions":196,"deletions":196}}},{"hash":"5562f3029f6e593310a69beefe55888e1d9ad8bf","isMergeCommit":false,"messageTitle":"Convert all person to patient","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":15},"other":{"insertions":51,"deletions":51},"test-code":{"insertions":178,"deletions":178}}},{"hash":"e66d2a67c71697db2fd1dba7f45f7537c30e2459","isMergeCommit":false,"messageTitle":"Fix line length issue","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":6}}},{"hash":"e7cbb8abe8a573f63fe7272a849b124e0fd8adbf","isMergeCommit":true,"messageTitle":"Resolve conflicts","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"d55f447ca87876dbdffdc1b0e05c57ba87a5045b","isMergeCommit":true,"messageTitle":"Merge pull request #31 from jskimdev/branch-AddPatient","messageBody":"Add sex field in add command","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"516169026c80375e6394373dfd87d0ff6c6d52f6","isMergeCommit":true,"messageTitle":"Merge pull request #42 from Vision-2000/branch-bugfix-38","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"0470daab2e1c8ad3346ba972bdf1578ca6f29bf0","isMergeCommit":true,"messageTitle":"Merge pull request #46 from Vision-2000/branch-logic","messageBody":"Fix bug with edit command","fileTypesAndContributionMap":{}},{"hash":"f8f7384b63038c4b44b6661a8191ae2c635f1030","isMergeCommit":true,"messageTitle":"Merge pull request #35 from Vision-2000/branch-issue-10","messageBody":"Modify Find command to work with phone numbers","tags":["v1.2"],"fileTypesAndContributionMap":{}}]},{"date":"2024-03-22","commitResults":[{"hash":"f6397ba09b179920624212ca512b38dadf0f1a56","isMergeCommit":false,"messageTitle":"Change condition for duplicate patient","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":2},"other":{"insertions":1,"deletions":1},"test-code":{"insertions":11,"deletions":2}}},{"hash":"e681983a71f269fcd42c0a7ec5ee0d29d3f81e0a","isMergeCommit":false,"messageTitle":"Change testcases for isSamePatient","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":11,"deletions":6}}}]}],"S-Aishvarya":[{"date":"2024-03-07","commitResults":[{"hash":"f4bacae85feb883e0f8bf3890c7d4a6101a8906c","isMergeCommit":false,"messageTitle":"no message","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":6}}}]},{"date":"2024-03-18","commitResults":[{"hash":"692bf3d663fe85b2d251d2d2b09ac1c8bf367cda","isMergeCommit":true,"messageTitle":"Merge pull request #29 from jskimdev/branch-AddPatient","messageBody":"Branch add patient command with date of birth","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"2099373b02abb0d1488c635620eb929f24a59b5f","isMergeCommit":false,"messageTitle":"Update ListCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":28,"deletions":3}}},{"hash":"06c35064c9dd163e3d1f3897d58809f9367b9400","isMergeCommit":true,"messageTitle":"Merge pull request #48 from S-Aishvarya/branch-issue-6","messageBody":"Update ListCommand","fileTypesAndContributionMap":{}},{"hash":"558ad3661839e3a722b074dc3b2955cacfbed839","isMergeCommit":false,"messageTitle":"Revert \"Update ListCommand\"","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":26}}},{"hash":"56dd2285ef3efdd52026f475cc11ededf981eef7","isMergeCommit":true,"messageTitle":"Merge pull request #49 from AY2324S2-CS2103T-T14-2/revert-48-branch-issue-6","messageBody":"Revert \"Update ListCommand\"","fileTypesAndContributionMap":{}},{"hash":"5444a77b0dff3c71140376339e653fc35ffece7a","isMergeCommit":false,"messageTitle":"Update ListCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":17,"deletions":0}}},{"hash":"7fc7099fa8502d6ac554dcbf111fbe10daebde88","isMergeCommit":false,"messageTitle":"no message","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":4}}},{"hash":"e6ee26de3904e9dbd22de3b3f53e55c27f0bb16c","isMergeCommit":false,"messageTitle":"no message","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":2}}}]}],"jeong-jaeho":[{"date":"2024-03-07","commitResults":[{"hash":"1b9cb2644803715aef687bfdc11ca1a6f08a5ef6","isMergeCommit":false,"messageTitle":"Update AboutUs page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"bca86dff2ff633f6c65924aaaba7f2d910713528","isMergeCommit":false,"messageTitle":"Update AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"038e793283979f905fd1e9c5611d72c62d885743","isMergeCommit":true,"messageTitle":"Merge pull request #16 from S-Aishvarya/branch-AboutUs-Aishvarya","messageBody":"Update Aishvarya details in AboutUs page","fileTypesAndContributionMap":{}}]},{"date":"2024-03-14","commitResults":[{"hash":"c8e1655f02e342c21ad2257465a7252e057564f4","isMergeCommit":true,"messageTitle":"Merge pull request #24 from Vision-2000/branch-bugfix-issue23","messageBody":"Update mentions and links to AB3","fileTypesAndContributionMap":{}},{"hash":"b23010fd2ddfc0d873ad1231f7b518858a32f05b","isMergeCommit":false,"messageTitle":"Add more roles","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}}]},{"date":"2024-03-20","commitResults":[{"hash":"3dac5cf146c74f36e4a7840b7d64c5182a962537","isMergeCommit":false,"messageTitle":"Edit existing clear command into delete-all command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3},"other":{"insertions":6,"deletions":6},"test-code":{"insertions":4,"deletions":4}}},{"hash":"d66087abf854491044db665ce164c3056940ad70","isMergeCommit":false,"messageTitle":"Edit prompt messages and set preliminary confirmation and invalid input alert prompts","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":3}}},{"hash":"46064be4c5e62e06310d053fced8606b9b1d2fc4","isMergeCommit":false,"messageTitle":"Edit test file for delete -all command","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":9,"deletions":2}}},{"hash":"a7477fb854a76b63ed241e8a7aa287581bb24573","isMergeCommit":false,"messageTitle":"Resolve build issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":2}}},{"hash":"6b94a6a5daaebd833631848cbba2edeeb26e34ac","isMergeCommit":false,"messageTitle":"Separate delete-all and delete-all-f to ensure the user truly wants to delete all entries","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":58,"deletions":6},"other":{"insertions":3,"deletions":3}}},{"hash":"1514686cc37f0114b9599ad21c85675063d2ebf9","isMergeCommit":false,"messageTitle":"Resolve build issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":6}}},{"hash":"1e19fe3fd839d24c9a4013baa4a4222e28065ff8","isMergeCommit":false,"messageTitle":"Resolve build errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":0}}},{"hash":"7880d60635a5161f27ab67d690ce131a9488e7f2","isMergeCommit":false,"messageTitle":"Resolve build errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-21","commitResults":[{"hash":"6999ce09877321437cd04c20cbab4effab612682","isMergeCommit":false,"messageTitle":"Add DeleteByIndex class for deleting by selecting index","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":7},"other":{"insertions":26,"deletions":27},"test-code":{"insertions":4,"deletions":4}}},{"hash":"9223f47967807502e4fd3319c8c3866dc55ae302","isMergeCommit":false,"messageTitle":"Resolve build error","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":1}}},{"hash":"e511f898e9c453a566bfd8d2734923099f47b3c8","isMergeCommit":true,"messageTitle":"Merge pull request #50 from S-Aishvarya/branch-issue-6","messageBody":"Update ListCommand","fileTypesAndContributionMap":{}}]}],"Vision-2000":[{"date":"2024-03-06","commitResults":[{"hash":"92ebca6ca8eb0eed28742478ed841f5c1c84cdd8","isMergeCommit":false,"messageTitle":"Update index.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":7}}}]},{"date":"2024-03-07","commitResults":[{"hash":"66bc8733188bac87a8f69970f27933185fdbaa1e","isMergeCommit":true,"messageTitle":"Merge pull request #12 from jskimdev/branch-AboutUs","messageBody":"Update Junseo details in About Us page","fileTypesAndContributionMap":{}},{"hash":"e63466ad93e89a3e53a4fb50e8aac4705b7e09c4","isMergeCommit":false,"messageTitle":"Update Eugene details in About Us page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}},{"hash":"ba146c58767287e8d9c7cb22b9ea5ecca1248ac6","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":11}}},{"hash":"ccf6d400fb35640b7078b05174b63967a772c197","isMergeCommit":true,"messageTitle":"Merge pull request #18 from Vision-2000/branch-README-2","messageBody":"Update README.md","fileTypesAndContributionMap":{}},{"hash":"ba214f35c54300822ece6a6bf384e00336be0d01","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":97,"deletions":21}}}]},{"date":"2024-03-14","commitResults":[{"hash":"165da4e13fa21299d0b1260d615a10551e628f36","isMergeCommit":false,"messageTitle":"Update mentions and links to AB3","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"docs":{"insertions":3,"deletions":3}}},{"hash":"bfe7903d9f7c6b2ce9d2f93b5b5a013ddb27baf6","isMergeCommit":true,"messageTitle":"Merge pull request #25 from jskimdev/branch-Model","messageBody":"Add dateofbirth class","fileTypesAndContributionMap":{}},{"hash":"4336ad21517436a4894d568d6b5aee73f761486b","isMergeCommit":true,"messageTitle":"Merge pull request #26 from jeong-jaeho/branch-More-Roles","messageBody":"Add more roles","fileTypesAndContributionMap":{}}]},{"date":"2024-03-17","commitResults":[{"hash":"c760b7b33a6b8f55732da75b9c202c15ab3efb85","isMergeCommit":true,"messageTitle":"Merge pull request #28 from jskimdev/branch-Model","messageBody":"Add testcases for Date of Birth","fileTypesAndContributionMap":{}}]},{"date":"2024-03-18","commitResults":[{"hash":"fe2183d47ee87d4e099836e2389038820182e44f","isMergeCommit":true,"messageTitle":"Merge pull request #30 from jskimdev/branch-Model","messageBody":"Add sex field","fileTypesAndContributionMap":{}}]},{"date":"2024-03-19","commitResults":[{"hash":"24a40a007cc952602b7d86d89185244cf3515b98","isMergeCommit":true,"messageTitle":"Merge pull request #34 from jskimdev/branch-Model","messageBody":"Change the class Person name to Patient","fileTypesAndContributionMap":{}},{"hash":"05c6e44bbf04e63999e10ccb398574168812f08c","isMergeCommit":false,"messageTitle":"Modify Find command to work with phone numbers","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":150,"deletions":19},"test-code":{"insertions":88,"deletions":0}}},{"hash":"545acdc914b4cdba19cbe3d72e52899f4f2d9df7","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-T14-2/tp into branch-issue-10","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"d40d12863081b2d3b8a14bad405f40c45911b8b9","isMergeCommit":false,"messageTitle":"Modify testcases for Find command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":0},"test-code":{"insertions":82,"deletions":68}}},{"hash":"dc252f9c6dd193ad0f2723a999943b4dcf645215","isMergeCommit":false,"messageTitle":"Remove unused import","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":2}}},{"hash":"d87957e91171312858513ade2c6caee10e07730a","isMergeCommit":false,"messageTitle":"Fix checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":5}}}]},{"date":"2024-03-20","commitResults":[{"hash":"5fc71ad0eb915dc933ad63c55f65ea797c783469","isMergeCommit":false,"messageTitle":"Remove duplicate class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":35},"test-code":{"insertions":12,"deletions":12}}},{"hash":"3be7b71d5a3e28dab832a29de9f51583097f4a7c","isMergeCommit":false,"messageTitle":"Add sex field to PersonCard","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":1}}},{"hash":"9724eb8892b9c615e0050a2823bb9603b2c2c1ae","isMergeCommit":true,"messageTitle":"Merge pull request #39 from jeong-jaeho/branch-delete-all-command","messageBody":"Add delete-all and delete-all-f command","fileTypesAndContributionMap":{}},{"hash":"67096bc74b7dba6a2e75298e060b62eb273a274f","isMergeCommit":false,"messageTitle":"Fix bug causing app to crash","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"test-code":{"insertions":16,"deletions":0}}}]},{"date":"2024-03-21","commitResults":[{"hash":"a1fdabf61f42242deeaa83e6adf8b5bf93f63479","isMergeCommit":false,"messageTitle":"Fix bug with edit command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":4}}},{"hash":"f00f9ed0b79697f9ab9b7c315993a626561bbcba","isMergeCommit":true,"messageTitle":"Merge pull request #47 from jeong-jaeho/branch-delete-by-index","messageBody":"Add DeleteByIndex class for deleting by selecting index","fileTypesAndContributionMap":{}},{"hash":"50eceabea52da6225d0dfb1fb35b93ad458414f3","isMergeCommit":true,"messageTitle":"Merge pull request #40 from Vision-2000/branch-issue-32","messageBody":"Add sex field to PersonCard","fileTypesAndContributionMap":{}}]},{"date":"2024-03-22","commitResults":[{"hash":"3c31f2335e9be1a7c33f766126392f99749de257","isMergeCommit":true,"messageTitle":"Merge pull request #52 from jskimdev/branch-Model","messageBody":"Change condition for duplicate patient","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"jskimdev":{"docs":67,"functional-code":606,"test-code":780,"other":1},"S-Aishvarya":{"docs":3,"functional-code":16,"test-code":0},"jeong-jaeho":{"docs":6,"functional-code":88,"test-code":42},"Vision-2000":{"docs":107,"functional-code":146,"test-code":149}},"authorContributionVariance":{"jskimdev":146507.9,"S-Aishvarya":254.937,"jeong-jaeho":852.5565,"Vision-2000":6708.921},"authorDisplayNameMap":{"jskimdev":"CS2103T-T14-2 KIM ..NSEO","S-Aishvarya":"CS2103T-T14-2 SIVA..ARYA","jeong-jaeho":"CS2103T-T14-2 JEON..AEHO","Vision-2000":"CS2103T-T14-2 EUGE..ROSE"}} +{"authorDailyContributionsMap":{"jskimdev":[{"date":"2024-03-06","commitResults":[{"hash":"bc88a10d930d159cf2fc80081f8fe5064fb4c44b","isMergeCommit":false,"messageTitle":"Update Junseo details in About Us page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":9,"deletions":18}}}]},{"date":"2024-03-07","commitResults":[{"hash":"8e58e0688667d63e7e49ab56419b6200e7ce09c3","isMergeCommit":false,"messageTitle":"Add fifth member in About Us page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":1}}},{"hash":"a696da6f4cfb93ccd976425c88a624b03496fde6","isMergeCommit":false,"messageTitle":"Add empty line at the end AboutUs page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"bb8310dddc2c0cc7d4605183d96c45302c7e15b6","isMergeCommit":false,"messageTitle":"Remove unused fifth member in AboutUs page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":10}}},{"hash":"9d998cfeedfdd414b46f1a6fb4043417056ce09a","isMergeCommit":true,"messageTitle":"Merge pull request #11 from Vision-2000/branch-README-1","messageBody":"Update README.md with mock Ui image and our project content","fileTypesAndContributionMap":{}},{"hash":"752caf17bb608c213a05e7ff9268e892860549b0","isMergeCommit":true,"messageTitle":"Merge pull request #13 from Vision-2000/branch-AboutUs-1","messageBody":"Update Eugene details in About Us page","fileTypesAndContributionMap":{}},{"hash":"b64fdc59ff6d02a611e983b7edc4944675bbad09","isMergeCommit":true,"messageTitle":"Merge pull request #14 from jeong-jaeho/branch-AboutUS-Jaeho","messageBody":"Update AboutUs page","fileTypesAndContributionMap":{}},{"hash":"e949b11b0bdaeabb3f22a4f200d1f2ae3f1773bd","isMergeCommit":true,"messageTitle":"Merge pull request #19 from Vision-2000/branch-DeveloperGuide-1","messageBody":"Update DeveloperGuide.md","tags":["v1.1"],"fileTypesAndContributionMap":{}}]},{"date":"2024-03-14","commitResults":[{"hash":"1f8be499fdcfe04c4bc0f07d604ed6a1fbd58363","isMergeCommit":false,"messageTitle":"Add dateofbirth class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":53,"deletions":0}}},{"hash":"18eba7f81880610709217cfc2805c3e16ac0b082","isMergeCommit":false,"messageTitle":"Add Javadoc for DateOfBirth class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":26,"deletions":3}}},{"hash":"65c02e6b7814e6d5d38f97c347e09b048ab2ed38","isMergeCommit":false,"messageTitle":"Fix code structure to follow coding standard","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}}]},{"date":"2024-03-17","commitResults":[{"hash":"ea4edb720faf6d366a5c5acd40ebdede068e497a","isMergeCommit":false,"messageTitle":"Add testcases for Date of Birth","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":39,"deletions":0}}},{"hash":"a29fd5144ce0a58abee78e25230239d6b5baa1d7","isMergeCommit":false,"messageTitle":"Add date of birth field in add and edit commands","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":99,"deletions":306},"test-code":{"insertions":15,"deletions":149}}},{"hash":"ff805a1dbaa008f2c5406d7dd8ab3a5b757000ae","isMergeCommit":false,"messageTitle":"Add date of birth in PersonCard JavaFx","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1}}},{"hash":"5b5ab3f811b05b4ce4b71c7cb26cb88ce4d6012b","isMergeCommit":false,"messageTitle":"Fix import style error","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":42,"deletions":11}}},{"hash":"ea9626d35241548829b737f8abe2956b393647ca","isMergeCommit":false,"messageTitle":"Remove typo","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"24b28e23178ba424b8684ea7cb459dd7b36010fe","isMergeCommit":false,"messageTitle":"Fix style issue","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":6}}},{"hash":"0f284ffedc0b011734aab447fcff4bcce8630c77","isMergeCommit":false,"messageTitle":"Fix test codes related to tages","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":2},"test-code":{"insertions":71,"deletions":129}}},{"hash":"f2bde512420a91c21d98afcf3188b73244f27673","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-AddPatient","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"d37e9e823a2d8301aa6a7e34a178dea27b2df9d5","isMergeCommit":false,"messageTitle":"Fix import issue","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":46,"deletions":52}}},{"hash":"6e3c0c0c8af49197eb8c9f02f4addca80b657aeb","isMergeCommit":false,"messageTitle":"Fix import issue","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":37,"deletions":5}}}]},{"date":"2024-03-18","commitResults":[{"hash":"fbb72478b76195fa3977c9aacfe5365b824508ec","isMergeCommit":false,"messageTitle":"Resolve all failed testcases to fit the new model","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":19,"deletions":13}}},{"hash":"68e26248e5258e3258f6525db88683901e7b8e70","isMergeCommit":false,"messageTitle":"Resolve import issue in LogicManagerTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":1}}},{"hash":"b63eba4621b1ebc5404b6e18ed45091e050f0560","isMergeCommit":false,"messageTitle":"Add sex field","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":83,"deletions":0}}},{"hash":"ec9da7048b359f27b1f58b74921202f84a9d9ac0","isMergeCommit":false,"messageTitle":"Add javadoc","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":0}}},{"hash":"d2f117abe56f2772fb4f3d50d8743d4a7a7e03b8","isMergeCommit":false,"messageTitle":"Add testcases for sex field","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":36,"deletions":0}}},{"hash":"45dee4c203d9131cd8e4e0e356eadb608495235a","isMergeCommit":false,"messageTitle":"Add sex field in add command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":85,"deletions":41},"test-code":{"insertions":91,"deletions":52}}}]},{"date":"2024-03-19","commitResults":[{"hash":"72c36b7a83160ddf02aaab0c352983a4e449c43f","isMergeCommit":false,"messageTitle":"Update testcases to test new add command","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":107,"deletions":34}}},{"hash":"d07801b7108ff78c4e4be11c40425d44fa945f86","isMergeCommit":false,"messageTitle":"Fix import issue","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":19,"deletions":3}}},{"hash":"f2d11d02e9829be7278cbb7ea286c5db5205df2f","isMergeCommit":false,"messageTitle":"Fix import issue in test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":48,"deletions":7}}},{"hash":"cebe840273180facea3d4f026fbfcc67dafba55e","isMergeCommit":false,"messageTitle":"Fix import issue in PersonUtil","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":4}}},{"hash":"a73dd75f9a7d8e5fd9e9fb79285bb2a2c431fa2c","isMergeCommit":false,"messageTitle":"Change the class Person name to Patient","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":199,"deletions":199},"other":{"insertions":103,"deletions":103},"docs":{"insertions":61,"deletions":61},"test-code":{"insertions":196,"deletions":196}}},{"hash":"5562f3029f6e593310a69beefe55888e1d9ad8bf","isMergeCommit":false,"messageTitle":"Convert all person to patient","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":15},"other":{"insertions":51,"deletions":51},"test-code":{"insertions":178,"deletions":178}}},{"hash":"e66d2a67c71697db2fd1dba7f45f7537c30e2459","isMergeCommit":false,"messageTitle":"Fix line length issue","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":6}}},{"hash":"e7cbb8abe8a573f63fe7272a849b124e0fd8adbf","isMergeCommit":true,"messageTitle":"Resolve conflicts","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"d55f447ca87876dbdffdc1b0e05c57ba87a5045b","isMergeCommit":true,"messageTitle":"Merge pull request #31 from jskimdev/branch-AddPatient","messageBody":"Add sex field in add command","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"516169026c80375e6394373dfd87d0ff6c6d52f6","isMergeCommit":true,"messageTitle":"Merge pull request #42 from Vision-2000/branch-bugfix-38","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"0470daab2e1c8ad3346ba972bdf1578ca6f29bf0","isMergeCommit":true,"messageTitle":"Merge pull request #46 from Vision-2000/branch-logic","messageBody":"Fix bug with edit command","fileTypesAndContributionMap":{}},{"hash":"f8f7384b63038c4b44b6661a8191ae2c635f1030","isMergeCommit":true,"messageTitle":"Merge pull request #35 from Vision-2000/branch-issue-10","messageBody":"Modify Find command to work with phone numbers","tags":["v1.2"],"fileTypesAndContributionMap":{}}]},{"date":"2024-03-22","commitResults":[{"hash":"f6397ba09b179920624212ca512b38dadf0f1a56","isMergeCommit":false,"messageTitle":"Change condition for duplicate patient","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":2},"other":{"insertions":1,"deletions":1},"test-code":{"insertions":11,"deletions":2}}},{"hash":"e681983a71f269fcd42c0a7ec5ee0d29d3f81e0a","isMergeCommit":false,"messageTitle":"Change testcases for isSamePatient","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":11,"deletions":6}}}]}],"S-Aishvarya":[{"date":"2024-03-07","commitResults":[{"hash":"f4bacae85feb883e0f8bf3890c7d4a6101a8906c","isMergeCommit":false,"messageTitle":"no message","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":6}}}]},{"date":"2024-03-18","commitResults":[{"hash":"692bf3d663fe85b2d251d2d2b09ac1c8bf367cda","isMergeCommit":true,"messageTitle":"Merge pull request #29 from jskimdev/branch-AddPatient","messageBody":"Branch add patient command with date of birth","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"2099373b02abb0d1488c635620eb929f24a59b5f","isMergeCommit":false,"messageTitle":"Update ListCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":28,"deletions":3}}},{"hash":"06c35064c9dd163e3d1f3897d58809f9367b9400","isMergeCommit":true,"messageTitle":"Merge pull request #48 from S-Aishvarya/branch-issue-6","messageBody":"Update ListCommand","fileTypesAndContributionMap":{}},{"hash":"558ad3661839e3a722b074dc3b2955cacfbed839","isMergeCommit":false,"messageTitle":"Revert \"Update ListCommand\"","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":26}}},{"hash":"56dd2285ef3efdd52026f475cc11ededf981eef7","isMergeCommit":true,"messageTitle":"Merge pull request #49 from AY2324S2-CS2103T-T14-2/revert-48-branch-issue-6","messageBody":"Revert \"Update ListCommand\"","fileTypesAndContributionMap":{}},{"hash":"5444a77b0dff3c71140376339e653fc35ffece7a","isMergeCommit":false,"messageTitle":"Update ListCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":17,"deletions":0}}},{"hash":"7fc7099fa8502d6ac554dcbf111fbe10daebde88","isMergeCommit":false,"messageTitle":"no message","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":4}}},{"hash":"e6ee26de3904e9dbd22de3b3f53e55c27f0bb16c","isMergeCommit":false,"messageTitle":"no message","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":2}}}]}],"jeong-jaeho":[{"date":"2024-03-07","commitResults":[{"hash":"1b9cb2644803715aef687bfdc11ca1a6f08a5ef6","isMergeCommit":false,"messageTitle":"Update AboutUs page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"bca86dff2ff633f6c65924aaaba7f2d910713528","isMergeCommit":false,"messageTitle":"Update AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"038e793283979f905fd1e9c5611d72c62d885743","isMergeCommit":true,"messageTitle":"Merge pull request #16 from S-Aishvarya/branch-AboutUs-Aishvarya","messageBody":"Update Aishvarya details in AboutUs page","fileTypesAndContributionMap":{}}]},{"date":"2024-03-14","commitResults":[{"hash":"c8e1655f02e342c21ad2257465a7252e057564f4","isMergeCommit":true,"messageTitle":"Merge pull request #24 from Vision-2000/branch-bugfix-issue23","messageBody":"Update mentions and links to AB3","fileTypesAndContributionMap":{}},{"hash":"b23010fd2ddfc0d873ad1231f7b518858a32f05b","isMergeCommit":false,"messageTitle":"Add more roles","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}}]},{"date":"2024-03-20","commitResults":[{"hash":"3dac5cf146c74f36e4a7840b7d64c5182a962537","isMergeCommit":false,"messageTitle":"Edit existing clear command into delete-all command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3},"other":{"insertions":6,"deletions":6},"test-code":{"insertions":4,"deletions":4}}},{"hash":"d66087abf854491044db665ce164c3056940ad70","isMergeCommit":false,"messageTitle":"Edit prompt messages and set preliminary confirmation and invalid input alert prompts","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":3}}},{"hash":"46064be4c5e62e06310d053fced8606b9b1d2fc4","isMergeCommit":false,"messageTitle":"Edit test file for delete -all command","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":9,"deletions":2}}},{"hash":"a7477fb854a76b63ed241e8a7aa287581bb24573","isMergeCommit":false,"messageTitle":"Resolve build issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":2}}},{"hash":"6b94a6a5daaebd833631848cbba2edeeb26e34ac","isMergeCommit":false,"messageTitle":"Separate delete-all and delete-all-f to ensure the user truly wants to delete all entries","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":58,"deletions":6},"other":{"insertions":3,"deletions":3}}},{"hash":"1514686cc37f0114b9599ad21c85675063d2ebf9","isMergeCommit":false,"messageTitle":"Resolve build issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":6}}},{"hash":"1e19fe3fd839d24c9a4013baa4a4222e28065ff8","isMergeCommit":false,"messageTitle":"Resolve build errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":0}}},{"hash":"7880d60635a5161f27ab67d690ce131a9488e7f2","isMergeCommit":false,"messageTitle":"Resolve build errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-21","commitResults":[{"hash":"6999ce09877321437cd04c20cbab4effab612682","isMergeCommit":false,"messageTitle":"Add DeleteByIndex class for deleting by selecting index","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":7},"other":{"insertions":26,"deletions":27},"test-code":{"insertions":4,"deletions":4}}},{"hash":"9223f47967807502e4fd3319c8c3866dc55ae302","isMergeCommit":false,"messageTitle":"Resolve build error","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":1}}},{"hash":"e511f898e9c453a566bfd8d2734923099f47b3c8","isMergeCommit":true,"messageTitle":"Merge pull request #50 from S-Aishvarya/branch-issue-6","messageBody":"Update ListCommand","fileTypesAndContributionMap":{}}]}],"Vision-2000":[{"date":"2024-03-06","commitResults":[{"hash":"92ebca6ca8eb0eed28742478ed841f5c1c84cdd8","isMergeCommit":false,"messageTitle":"Update index.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":7}}}]},{"date":"2024-03-07","commitResults":[{"hash":"66bc8733188bac87a8f69970f27933185fdbaa1e","isMergeCommit":true,"messageTitle":"Merge pull request #12 from jskimdev/branch-AboutUs","messageBody":"Update Junseo details in About Us page","fileTypesAndContributionMap":{}},{"hash":"e63466ad93e89a3e53a4fb50e8aac4705b7e09c4","isMergeCommit":false,"messageTitle":"Update Eugene details in About Us page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}},{"hash":"ba146c58767287e8d9c7cb22b9ea5ecca1248ac6","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":11}}},{"hash":"ccf6d400fb35640b7078b05174b63967a772c197","isMergeCommit":true,"messageTitle":"Merge pull request #18 from Vision-2000/branch-README-2","messageBody":"Update README.md","fileTypesAndContributionMap":{}},{"hash":"ba214f35c54300822ece6a6bf384e00336be0d01","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":97,"deletions":21}}}]},{"date":"2024-03-14","commitResults":[{"hash":"165da4e13fa21299d0b1260d615a10551e628f36","isMergeCommit":false,"messageTitle":"Update mentions and links to AB3","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"docs":{"insertions":3,"deletions":3}}},{"hash":"bfe7903d9f7c6b2ce9d2f93b5b5a013ddb27baf6","isMergeCommit":true,"messageTitle":"Merge pull request #25 from jskimdev/branch-Model","messageBody":"Add dateofbirth class","fileTypesAndContributionMap":{}},{"hash":"4336ad21517436a4894d568d6b5aee73f761486b","isMergeCommit":true,"messageTitle":"Merge pull request #26 from jeong-jaeho/branch-More-Roles","messageBody":"Add more roles","fileTypesAndContributionMap":{}}]},{"date":"2024-03-17","commitResults":[{"hash":"c760b7b33a6b8f55732da75b9c202c15ab3efb85","isMergeCommit":true,"messageTitle":"Merge pull request #28 from jskimdev/branch-Model","messageBody":"Add testcases for Date of Birth","fileTypesAndContributionMap":{}}]},{"date":"2024-03-18","commitResults":[{"hash":"fe2183d47ee87d4e099836e2389038820182e44f","isMergeCommit":true,"messageTitle":"Merge pull request #30 from jskimdev/branch-Model","messageBody":"Add sex field","fileTypesAndContributionMap":{}}]},{"date":"2024-03-19","commitResults":[{"hash":"24a40a007cc952602b7d86d89185244cf3515b98","isMergeCommit":true,"messageTitle":"Merge pull request #34 from jskimdev/branch-Model","messageBody":"Change the class Person name to Patient","fileTypesAndContributionMap":{}},{"hash":"05c6e44bbf04e63999e10ccb398574168812f08c","isMergeCommit":false,"messageTitle":"Modify Find command to work with phone numbers","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":150,"deletions":19},"test-code":{"insertions":88,"deletions":0}}},{"hash":"545acdc914b4cdba19cbe3d72e52899f4f2d9df7","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-T14-2/tp into branch-issue-10","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"d40d12863081b2d3b8a14bad405f40c45911b8b9","isMergeCommit":false,"messageTitle":"Modify testcases for Find command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":0},"test-code":{"insertions":82,"deletions":68}}},{"hash":"dc252f9c6dd193ad0f2723a999943b4dcf645215","isMergeCommit":false,"messageTitle":"Remove unused import","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":2}}},{"hash":"d87957e91171312858513ade2c6caee10e07730a","isMergeCommit":false,"messageTitle":"Fix checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":5}}}]},{"date":"2024-03-20","commitResults":[{"hash":"5fc71ad0eb915dc933ad63c55f65ea797c783469","isMergeCommit":false,"messageTitle":"Remove duplicate class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":35},"test-code":{"insertions":12,"deletions":12}}},{"hash":"3be7b71d5a3e28dab832a29de9f51583097f4a7c","isMergeCommit":false,"messageTitle":"Add sex field to PersonCard","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":1}}},{"hash":"9724eb8892b9c615e0050a2823bb9603b2c2c1ae","isMergeCommit":true,"messageTitle":"Merge pull request #39 from jeong-jaeho/branch-delete-all-command","messageBody":"Add delete-all and delete-all-f command","fileTypesAndContributionMap":{}},{"hash":"67096bc74b7dba6a2e75298e060b62eb273a274f","isMergeCommit":false,"messageTitle":"Fix bug causing app to crash","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"test-code":{"insertions":16,"deletions":0}}}]},{"date":"2024-03-21","commitResults":[{"hash":"a1fdabf61f42242deeaa83e6adf8b5bf93f63479","isMergeCommit":false,"messageTitle":"Fix bug with edit command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":4}}},{"hash":"f00f9ed0b79697f9ab9b7c315993a626561bbcba","isMergeCommit":true,"messageTitle":"Merge pull request #47 from jeong-jaeho/branch-delete-by-index","messageBody":"Add DeleteByIndex class for deleting by selecting index","fileTypesAndContributionMap":{}},{"hash":"50eceabea52da6225d0dfb1fb35b93ad458414f3","isMergeCommit":true,"messageTitle":"Merge pull request #40 from Vision-2000/branch-issue-32","messageBody":"Add sex field to PersonCard","fileTypesAndContributionMap":{}}]},{"date":"2024-03-22","commitResults":[{"hash":"3c31f2335e9be1a7c33f766126392f99749de257","isMergeCommit":true,"messageTitle":"Merge pull request #52 from jskimdev/branch-Model","messageBody":"Change condition for duplicate patient","fileTypesAndContributionMap":{}},{"hash":"67a5f02565bad7b353219c0d094f56d34003a593","isMergeCommit":false,"messageTitle":"Update DG week 9 task","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":78,"deletions":76}}},{"hash":"b57d76d3ff48861c9bf1cdf8e7b9760a58ac54b3","isMergeCommit":true,"messageTitle":"Merge pull request #53 from Vision-2000/branch-DeveloperGuide-1","messageBody":"Update DG week 9 task","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"jskimdev":{"docs":67,"functional-code":606,"test-code":780,"other":1},"S-Aishvarya":{"docs":3,"functional-code":16,"test-code":0},"jeong-jaeho":{"docs":6,"functional-code":88,"test-code":42},"Vision-2000":{"docs":183,"functional-code":146,"test-code":149}},"authorContributionVariance":{"jskimdev":146507.9,"S-Aishvarya":254.937,"jeong-jaeho":852.5565,"Vision-2000":7244.715},"authorDisplayNameMap":{"jskimdev":"CS2103T-T14-2 KIM ..NSEO","S-Aishvarya":"CS2103T-T14-2 SIVA..ARYA","jeong-jaeho":"CS2103T-T14-2 JEON..AEHO","Vision-2000":"CS2103T-T14-2 EUGE..ROSE"}} diff --git a/AY2324S2-CS2103T-W08-4_tp_master/authorship.json b/AY2324S2-CS2103T-W08-4_tp_master/authorship.json index f2c2fc4c..782984c8 100644 --- a/AY2324S2-CS2103T-W08-4_tp_master/authorship.json +++ b/AY2324S2-CS2103T-W08-4_tp_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"modembcc"},"content":"[![CI Status](https://github.com/AY2324S2-CS2103T-W08-4/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2324S2-CS2103T-W08-4/tp/actions)","lastModifiedDate":"2024-03-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"[![codecov](https://codecov.io/gh/AY2324S2-CS2103T-W08-4/tp/graph/badge.svg?token\u003dJRBJM9DOXE)](https://codecov.io/gh/AY2324S2-CS2103T-W08-4/tp)","lastModifiedDate":"2024-02-20"},{"lineNumber":3,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"modembcc"},"content":"\u003cdiv align\u003d\"center\"\u003e","lastModifiedDate":"2024-03-03"},{"lineNumber":5,"author":{"gitId":"modembcc"},"content":" \u003ch3 align\u003d\"center\"\u003eDevPlan Pro\u003c/h3\u003e","lastModifiedDate":"2024-03-03"},{"lineNumber":6,"author":{"gitId":"modembcc"},"content":" \u003cp align\u003d\"center\"\u003e","lastModifiedDate":"2024-03-03"},{"lineNumber":7,"author":{"gitId":"modembcc"},"content":" Keep track of your projects in a single app","lastModifiedDate":"2024-03-03"},{"lineNumber":8,"author":{"gitId":"modembcc"},"content":" \u003cbr/\u003e","lastModifiedDate":"2024-03-03"},{"lineNumber":9,"author":{"gitId":"modembcc"},"content":" \u003ca href\u003d\"https://github.com/othneildrew/Best-README-Template\"\u003eProject Website\u003c/a\u003e","lastModifiedDate":"2024-03-03"},{"lineNumber":10,"author":{"gitId":"modembcc"},"content":" ·","lastModifiedDate":"2024-03-03"},{"lineNumber":11,"author":{"gitId":"modembcc"},"content":" \u003ca href\u003d\"https://github.com/othneildrew/Best-README-Template/issues\"\u003ePlanned Features\u003c/a\u003e","lastModifiedDate":"2024-03-03"},{"lineNumber":12,"author":{"gitId":"modembcc"},"content":" \u003c/p\u003e","lastModifiedDate":"2024-03-03"},{"lineNumber":13,"author":{"gitId":"modembcc"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-03-03"},{"lineNumber":14,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"modembcc"},"content":"### About The Project","lastModifiedDate":"2024-03-03"},{"lineNumber":18,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":19,"author":{"gitId":"modembcc"},"content":"**Devplan Pro** is a project management app that is catered towards project managers who love typing. It allows the user to keep track of their various projects, the ongoing tasks within the projects, and people who are responsible for those tasks. Every action is executed through the input box using an intuitive [list of commands](https://github.com/othneildrew/Best-README-Template). Download now get a boost to your productivity.","lastModifiedDate":"2024-03-03"},{"lineNumber":20,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":21,"author":{"gitId":"modembcc"},"content":"### Installation","lastModifiedDate":"2024-03-03"},{"lineNumber":22,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":23,"author":{"gitId":"modembcc"},"content":"- Still in development","lastModifiedDate":"2024-03-03"},{"lineNumber":24,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":25,"author":{"gitId":"modembcc"},"content":"### Acknowledgement","lastModifiedDate":"2024-03-03"},{"lineNumber":26,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":27,"author":{"gitId":"modembcc"},"content":"- This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-03-03"},{"lineNumber":28,"author":{"gitId":"modembcc"},"content":"- This README is based on the [Best-README-Template](https://github.com/othneildrew/Best-README-Template) template.","lastModifiedDate":"2024-03-03"},{"lineNumber":29,"author":{"gitId":"modembcc"},"content":"- Libraries used: [JavaFX](https://openjfx.io/), [Jackson](https://github.com/FasterXML/jackson), [JUnit5](https://github.com/junit-team/junit5)","lastModifiedDate":"2024-03-03"}],"authorContributionMap":{"modembcc":25,"-":4}},{"path":"build.gradle","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2016-08-29"},{"lineNumber":2,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2017-12-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2017-12-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2022-06-17"},{"lineNumber":5,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2016-12-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":" id \u0027jacoco\u0027","lastModifiedDate":"2020-08-07"},{"lineNumber":7,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-29"},{"lineNumber":9,"author":{"gitId":"-"},"content":"mainClassName \u003d \u0027seedu.address.Main\u0027","lastModifiedDate":"2019-02-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"sourceCompatibility \u003d JavaVersion.VERSION_11","lastModifiedDate":"2019-02-20"},{"lineNumber":12,"author":{"gitId":"-"},"content":"targetCompatibility \u003d JavaVersion.VERSION_11","lastModifiedDate":"2019-02-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" maven { url \u0027https://oss.sonatype.org/content/repositories/snapshots/\u0027 }","lastModifiedDate":"2018-04-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"checkstyle {","lastModifiedDate":"2016-10-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2022-04-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-10-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2018-03-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2018-03-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":" finalizedBy jacocoTestReport","lastModifiedDate":"2020-08-07"},{"lineNumber":26,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-08-07"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-08-07"},{"lineNumber":28,"author":{"gitId":"-"},"content":"task coverage(type: JacocoReport) {","lastModifiedDate":"2020-08-07"},{"lineNumber":29,"author":{"gitId":"-"},"content":" sourceDirectories.from files(sourceSets.main.allSource.srcDirs)","lastModifiedDate":"2020-08-07"},{"lineNumber":30,"author":{"gitId":"-"},"content":" classDirectories.from files(sourceSets.main.output)","lastModifiedDate":"2020-08-07"},{"lineNumber":31,"author":{"gitId":"-"},"content":" executionData.from files(jacocoTestReport.executionData)","lastModifiedDate":"2020-08-07"},{"lineNumber":32,"author":{"gitId":"-"},"content":" afterEvaluate {","lastModifiedDate":"2020-08-07"},{"lineNumber":33,"author":{"gitId":"-"},"content":" classDirectories.from files(classDirectories.files.collect {","lastModifiedDate":"2020-08-07"},{"lineNumber":34,"author":{"gitId":"-"},"content":" fileTree(dir: it, exclude: [\u0027**/*.jar\u0027])","lastModifiedDate":"2020-08-07"},{"lineNumber":35,"author":{"gitId":"-"},"content":" })","lastModifiedDate":"2020-08-07"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07"},{"lineNumber":37,"author":{"gitId":"-"},"content":" reports {","lastModifiedDate":"2020-08-07"},{"lineNumber":38,"author":{"gitId":"-"},"content":" html.required \u003d true","lastModifiedDate":"2022-06-17"},{"lineNumber":39,"author":{"gitId":"-"},"content":" xml.required \u003d true","lastModifiedDate":"2022-06-17"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07"},{"lineNumber":41,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-03-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" String jUnitVersion \u003d \u00275.4.0\u0027","lastModifiedDate":"2019-02-10"},{"lineNumber":45,"author":{"gitId":"-"},"content":" String javaFxVersion \u003d \u002717.0.7\u0027","lastModifiedDate":"2023-07-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":48,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":" implementation group: \u0027com.fasterxml.jackson.core\u0027, name: \u0027jackson-databind\u0027, version: \u00272.7.0\u0027","lastModifiedDate":"2018-03-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":" implementation group: \u0027com.fasterxml.jackson.datatype\u0027, name: \u0027jackson-datatype-jsr310\u0027, version: \u00272.7.4\u0027","lastModifiedDate":"2018-03-29"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-29"},{"lineNumber":68,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2016-08-29"},{"lineNumber":69,"author":{"gitId":"ananya21"},"content":" archiveFileName \u003d \u0027tp_new.jar\u0027","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":"defaultTasks \u0027clean\u0027, \u0027test\u0027","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"-":71,"ananya21":1}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: About Us","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"We are a team based in the [School of Computing, National University of Singapore](http://www.comp.nus.edu.sg).","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"You can reach us at the email `seer[at]comp.nus.edu.sg`","lastModifiedDate":"2020-06-17"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"modembcc"},"content":"### Lin Shuang Shuang","lastModifiedDate":"2024-02-28"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"modembcc"},"content":"\u003cimg src\u003d\"images/lin-shuang-shuang.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"[[github](http://github.com/johndoe)]","lastModifiedDate":"2020-06-17"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":18,"author":{"gitId":"modembcc"},"content":"- Role: Team Lead","lastModifiedDate":"2024-02-28"},{"lineNumber":19,"author":{"gitId":"modembcc"},"content":"- Responsibilities: UI","lastModifiedDate":"2024-02-28"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"modembcc"},"content":"### Ananya Shahi","lastModifiedDate":"2024-02-28"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"modembcc"},"content":"\u003cimg src\u003d\"images/ananya21.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"modembcc"},"content":"[[github](http://github.com/ananya21)]","lastModifiedDate":"2024-02-28"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"modembcc"},"content":"- Role: Developer","lastModifiedDate":"2024-02-28"},{"lineNumber":28,"author":{"gitId":"ThitipatC"},"content":"- Responsibilities: Data","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"ThitipatC"},"content":"### Thitipat Chaiyakul","lastModifiedDate":"2024-02-28"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"ThitipatC"},"content":"\u003cimg src\u003d\"images/thitipatc.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":36,"author":{"gitId":"ThitipatC"},"content":"[[github](http://github.com/ThitipatC)]","lastModifiedDate":"2024-02-28"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"modembcc"},"content":"- Role: Developer","lastModifiedDate":"2024-02-28"},{"lineNumber":39,"author":{"gitId":"modembcc"},"content":"- Responsibilities: Dev Ops + Threading","lastModifiedDate":"2024-02-28"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"modembcc"},"content":"### Pawirunsiri Thanakorn (Modem)","lastModifiedDate":"2024-02-28"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"modembcc"},"content":"\u003cimg src\u003d\"images/modembcc.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"modembcc"},"content":"[[github](http://github.com/modembcc)]","lastModifiedDate":"2024-02-28"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":47,"author":{"gitId":"modembcc"},"content":"\u003c!-- [[portfolio](team/johndoe.md)] --\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"modembcc"},"content":"- Role: Developer","lastModifiedDate":"2024-02-28"},{"lineNumber":50,"author":{"gitId":"modembcc"},"content":"- Responsibilities: UI","lastModifiedDate":"2024-02-28"}],"authorContributionMap":{"modembcc":16,"ThitipatC":4,"-":30}},{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: Developer Guide","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"modembcc"},"content":"- Table of Contents","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":" {:toc}","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"modembcc"},"content":"---","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":11,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":13,"author":{"gitId":"modembcc"},"content":"- {list here sources of all reused/adapted ideas, code, documentation, and third-party libraries -- include links to the original source as well}","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":15,"author":{"gitId":"modembcc"},"content":"---","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"modembcc"},"content":"---","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":":bulb: **Tip:** The `.puml` files used to create diagrams in this document `docs/diagrams` folder. Refer to the [_PlantUML Tutorial_ at se-edu/guides](https://se-education.org/guides/tutorials/plantUml.html) to learn how to create and edit diagrams.","lastModifiedDate":"2023-09-03"},{"lineNumber":28,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureDiagram.png\" width\u003d\"280\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"modembcc"},"content":"The **_Architecture Diagram_** given above explains the high-level design of the App.","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":"Given below is a quick overview of main components and how they interact with each other.","lastModifiedDate":"2021-07-31"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":39,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"**`Main`** (consisting of classes [`Main`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/Main.java) and [`MainApp`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/MainApp.java)) is in charge of the app launch and shut down.","lastModifiedDate":"2023-09-03"},{"lineNumber":42,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"modembcc"},"content":"- At app launch, it initializes the other components in the correct sequence, and connects them up with each other.","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"modembcc"},"content":"- At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"modembcc"},"content":"- [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"modembcc"},"content":"- [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"modembcc"},"content":"- [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"modembcc"},"content":"- [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"modembcc"},"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":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureSequenceDiagram.png\" width\u003d\"574\" /\u003e","lastModifiedDate":"2020-06-07"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":63,"author":{"gitId":"modembcc"},"content":"- defines its _API_ in an `interface` with the same name as the Component.","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"modembcc"},"content":"- implements its functionality using a concrete `{Component Name}Manager` class (which follows the corresponding API `interface` mentioned in the previous point.","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"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"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":68,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ComponentManagers.png\" width\u003d\"300\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":70,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"The **API** of this component is specified in [`Ui.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/Ui.java)","lastModifiedDate":"2021-07-31"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"![Structure of the UI Component](images/UiClassDiagram.png)","lastModifiedDate":"2021-07-31"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"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"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"The `UI` component uses the JavaFx UI framework. The layout of these UI parts are defined in matching `.fxml` files that are in the `src/main/resources/view` folder. For example, the layout of the [`MainWindow`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/MainWindow.java) is specified in [`MainWindow.fxml`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/resources/view/MainWindow.fxml)","lastModifiedDate":"2021-07-31"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"modembcc"},"content":"- executes user commands using the `Logic` component.","lastModifiedDate":"2024-03-12"},{"lineNumber":85,"author":{"gitId":"modembcc"},"content":"- listens for changes to `Model` data so that the UI can be updated with the modified data.","lastModifiedDate":"2024-03-12"},{"lineNumber":86,"author":{"gitId":"modembcc"},"content":"- keeps a reference to the `Logic` component, because the `UI` relies on the `Logic` to execute commands.","lastModifiedDate":"2024-03-12"},{"lineNumber":87,"author":{"gitId":"modembcc"},"content":"- depends on some classes in the `Model` component, as it displays `Person` object residing in the `Model`.","lastModifiedDate":"2024-03-12"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"**API** : [`Logic.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/logic/Logic.java)","lastModifiedDate":"2021-07-31"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/LogicClassDiagram.png\" width\u003d\"550\"/\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":"The sequence diagram below illustrates the interactions within the `Logic` component, taking `execute(\"delete 1\")` API call as an example.","lastModifiedDate":"2023-09-03"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"![Interactions Inside the Logic Component for the `delete 1` Command](images/DeleteSequenceDiagram.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"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"},{"lineNumber":102,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":106,"author":{"gitId":"-"},"content":"1. When `Logic` is called upon to execute a command, it is passed to an `AddressBookParser` object which in turn creates a parser that matches the command (e.g., `DeleteCommandParser`) and uses it to parse the command.","lastModifiedDate":"2023-09-03"},{"lineNumber":107,"author":{"gitId":"-"},"content":"1. This results in a `Command` object (more precisely, an object of one of its subclasses e.g., `DeleteCommand`) which is executed by the `LogicManager`.","lastModifiedDate":"2023-09-03"},{"lineNumber":108,"author":{"gitId":"-"},"content":"1. The command can communicate with the `Model` when it is executed (e.g. to delete a person).\u003cbr\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":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"},{"lineNumber":110,"author":{"gitId":"-"},"content":"1. The result of the command execution is encapsulated as a `CommandResult` object which is returned back from `Logic`.","lastModifiedDate":"2023-09-03"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"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"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":114,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ParserClasses.png\" width\u003d\"600\"/\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31"},{"lineNumber":117,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":118,"author":{"gitId":"modembcc"},"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":"2024-03-12"},{"lineNumber":119,"author":{"gitId":"modembcc"},"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":"2024-03-12"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31"},{"lineNumber":122,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":123,"author":{"gitId":"-"},"content":"**API** : [`Model.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/model/Model.java)","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":129,"author":{"gitId":"modembcc"},"content":"- stores the address book data i.e., all `Person` objects (which are contained in a `UniquePersonList` object).","lastModifiedDate":"2024-03-12"},{"lineNumber":130,"author":{"gitId":"modembcc"},"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":"2024-03-12"},{"lineNumber":131,"author":{"gitId":"modembcc"},"content":"- stores a `UserPref` object that represents the user’s preferences. This is exposed to the outside as a `ReadOnlyUserPref` objects.","lastModifiedDate":"2024-03-12"},{"lineNumber":132,"author":{"gitId":"modembcc"},"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":"2024-03-12"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":134,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** An alternative (arguably, a more OOP) model is given below. It has a `Tag` list in the `AddressBook`, which `Person` references. This allows `AddressBook` to only require one `Tag` object per unique tag, instead of each `Person` needing their own `Tag` objects.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":136,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/BetterModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":"**API** : [`Storage.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/storage/Storage.java)","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/StorageClassDiagram.png\" width\u003d\"550\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":146,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":148,"author":{"gitId":"modembcc"},"content":"- can save both address book data and user preference data in JSON format, and read them back into corresponding objects.","lastModifiedDate":"2024-03-12"},{"lineNumber":149,"author":{"gitId":"modembcc"},"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":"2024-03-12"},{"lineNumber":150,"author":{"gitId":"modembcc"},"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":"2024-03-12"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.addressbook.commons` package.","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"modembcc"},"content":"---","lastModifiedDate":"2024-03-12"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":"The proposed undo/redo mechanism is facilitated by `VersionedAddressBook`. It extends `AddressBook` with an undo/redo history, stored internally as an `addressBookStateList` and `currentStatePointer`. Additionally, it implements the following operations:","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"modembcc"},"content":"- `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2024-03-12"},{"lineNumber":169,"author":{"gitId":"modembcc"},"content":"- `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2024-03-12"},{"lineNumber":170,"author":{"gitId":"modembcc"},"content":"- `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2024-03-12"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":"These operations are exposed in the `Model` interface as `Model#commitAddressBook()`, `Model#undoAddressBook()` and `Model#redoAddressBook()` respectively.","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":"Given below is an example usage scenario and how the undo/redo mechanism behaves at each step.","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":"Step 1. The user launches the application for the first time. The `VersionedAddressBook` will be initialized with the initial address book state, and the `currentStatePointer` pointing to that single address book state.","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":"![UndoRedoState0](images/UndoRedoState0.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":"Step 2. The user executes `delete 5` command to delete the 5th person in the address book. The `delete` command calls `Model#commitAddressBook()`, causing the modified state of the address book after the `delete 5` command executes to be saved in the `addressBookStateList`, and the `currentStatePointer` is shifted to the newly inserted address book state.","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":"![UndoRedoState1](images/UndoRedoState1.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"Step 3. The user executes `add n/David …​` to add a new person. The `add` command also calls `Model#commitAddressBook()`, causing another modified address book state to be saved into the `addressBookStateList`.","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":"![UndoRedoState2](images/UndoRedoState2.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If a command fails its execution, it will not call `Model#commitAddressBook()`, so the address book state will not be saved into the `addressBookStateList`.","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":190,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":192,"author":{"gitId":"-"},"content":"Step 4. The user now decides that adding the person was a mistake, and decides to undo that action by executing the `undo` command. The `undo` command will call `Model#undoAddressBook()`, which will shift the `currentStatePointer` once to the left, pointing it to the previous address book state, and restores the address book to that state.","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":"![UndoRedoState3](images/UndoRedoState3.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If the `currentStatePointer` is at index 0, pointing to the initial AddressBook state, then there are no previous AddressBook states to restore. The `undo` command uses `Model#canUndoAddressBook()` to check if this is the case. If so, it will return an error to the user rather","lastModifiedDate":"2020-05-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":201,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-Logic.png)","lastModifiedDate":"2024-02-09"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** The lifeline for `UndoCommand` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.","lastModifiedDate":"2020-05-23"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":209,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":211,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-Model.png)","lastModifiedDate":"2024-02-09"},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":213,"author":{"gitId":"-"},"content":"The `redo` command does the opposite — it calls `Model#redoAddressBook()`, which shifts the `currentStatePointer` once to the right, pointing to the previously undone state, and restores the address book to that state.","lastModifiedDate":"2020-05-23"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If the `currentStatePointer` is at index `addressBookStateList.size() - 1`, pointing to the latest address book state, then there are no undone AddressBook states to restore. The `redo` command uses `Model#canRedoAddressBook()` to check if this is the case. If so, it will return an error to the user rather than attempting to perform the redo.","lastModifiedDate":"2020-05-23"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":217,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":219,"author":{"gitId":"-"},"content":"Step 5. The user then decides to execute the command `list`. Commands that do not modify the address book, such as `list`, will usually not call `Model#commitAddressBook()`, `Model#undoAddressBook()` or `Model#redoAddressBook()`. Thus, the `addressBookStateList` remains unchanged.","lastModifiedDate":"2020-05-23"},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":221,"author":{"gitId":"-"},"content":"![UndoRedoState4](images/UndoRedoState4.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":223,"author":{"gitId":"-"},"content":"Step 6. The user executes `clear`, which calls `Model#commitAddressBook()`. Since the `currentStatePointer` is not pointing at the end of the `addressBookStateList`, all address book states after the `currentStatePointer` will be purged. Reason: It no longer makes sense to redo the `add n/David …​` command. This is the behavior that most modern desktop applications follow.","lastModifiedDate":"2020-05-23"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":"![UndoRedoState5](images/UndoRedoState5.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23"},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/CommitActivityDiagram.png\" width\u003d\"250\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31"},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":235,"author":{"gitId":"modembcc"},"content":"- **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2024-03-12"},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"modembcc"},"content":" - Pros: Easy to implement.","lastModifiedDate":"2024-03-12"},{"lineNumber":238,"author":{"gitId":"modembcc"},"content":" - Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2024-03-12"},{"lineNumber":239,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":240,"author":{"gitId":"modembcc"},"content":"- **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2024-03-12"},{"lineNumber":241,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23"},{"lineNumber":242,"author":{"gitId":"modembcc"},"content":" - Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2024-03-12"},{"lineNumber":243,"author":{"gitId":"modembcc"},"content":" - Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2024-03-12"},{"lineNumber":244,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":247,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23"},{"lineNumber":248,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":249,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23"},{"lineNumber":250,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":251,"author":{"gitId":"modembcc"},"content":"---","lastModifiedDate":"2024-03-12"},{"lineNumber":252,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07"},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":255,"author":{"gitId":"modembcc"},"content":"- [Documentation guide](Documentation.md)","lastModifiedDate":"2024-03-12"},{"lineNumber":256,"author":{"gitId":"modembcc"},"content":"- [Testing guide](Testing.md)","lastModifiedDate":"2024-03-12"},{"lineNumber":257,"author":{"gitId":"modembcc"},"content":"- [Logging guide](Logging.md)","lastModifiedDate":"2024-03-12"},{"lineNumber":258,"author":{"gitId":"modembcc"},"content":"- [Configuration guide](Configuration.md)","lastModifiedDate":"2024-03-12"},{"lineNumber":259,"author":{"gitId":"modembcc"},"content":"- [DevOps guide](DevOps.md)","lastModifiedDate":"2024-03-12"},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"modembcc"},"content":"---","lastModifiedDate":"2024-03-12"},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23"},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":265,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23"},{"lineNumber":266,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":267,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23"},{"lineNumber":268,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":269,"author":{"gitId":"ananya21"},"content":"- has a need to organise various projects and people","lastModifiedDate":"2024-03-13"},{"lineNumber":270,"author":{"gitId":"modembcc"},"content":"- prefer desktop apps over other types","lastModifiedDate":"2024-03-12"},{"lineNumber":271,"author":{"gitId":"modembcc"},"content":"- can type fast","lastModifiedDate":"2024-03-12"},{"lineNumber":272,"author":{"gitId":"modembcc"},"content":"- prefers typing to mouse interactions","lastModifiedDate":"2024-03-12"},{"lineNumber":273,"author":{"gitId":"modembcc"},"content":"- is reasonably comfortable using CLI apps","lastModifiedDate":"2024-03-12"},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":275,"author":{"gitId":"ananya21"},"content":"**Value proposition**: manage projects and tasks faster than a typical mouse/GUI driven app","lastModifiedDate":"2024-03-13"},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":277,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07"},{"lineNumber":278,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":279,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23"},{"lineNumber":280,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":281,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23"},{"lineNumber":282,"author":{"gitId":"ananya21"},"content":"|----------|---------------------------------------------|----------------------------------------------------------------|---------------------------------------------------------------------------|","lastModifiedDate":"2024-03-13"},{"lineNumber":283,"author":{"gitId":"ananya21"},"content":"| `* * *` | software developer | keep track of all my projects’ tasks in the app | meet all my deadlines on time |","lastModifiedDate":"2024-03-13"},{"lineNumber":284,"author":{"gitId":"ananya21"},"content":"| `* *` | user | sort my tasks by their deadlines | see what is the next pending task to complete |","lastModifiedDate":"2024-03-13"},{"lineNumber":285,"author":{"gitId":"ananya21"},"content":"| `* *` | user | see what my tasks are due next week | schedule my timetable accordingly |","lastModifiedDate":"2024-03-13"},{"lineNumber":286,"author":{"gitId":"ananya21"},"content":"| `* *` | user | see who are my teammates for each project | know who to contact if I have any questions for that project |","lastModifiedDate":"2024-03-13"},{"lineNumber":287,"author":{"gitId":"ananya21"},"content":"| `* *` | user | mark my completed tasks as completed | keep them out of sight to prevent confusion |","lastModifiedDate":"2024-03-13"},{"lineNumber":288,"author":{"gitId":"ananya21"},"content":"| `* *` | user | mark my tasks as in progress | remind myself to come back to it once I have a clearer idea of what to do |","lastModifiedDate":"2024-03-13"},{"lineNumber":289,"author":{"gitId":"ananya21"},"content":"| `*` | user | keep track of all my ongoing projects | be reminded of what I need to do for the next few weeks/months |","lastModifiedDate":"2024-03-13"},{"lineNumber":290,"author":{"gitId":"ananya21"},"content":"| `*` | user | see what are the categories for each of my projects | know what knowledge I need to learn and utilize for each of their tasks |","lastModifiedDate":"2024-03-13"},{"lineNumber":291,"author":{"gitId":"ananya21"},"content":"| `*` | user | delete projects that have been discontinued or completed | know what to focus on |","lastModifiedDate":"2024-03-13"},{"lineNumber":292,"author":{"gitId":"ananya21"},"content":"| `*` | user | update the deadline of my tasks if it has been brought forward | know exactly when it is due |","lastModifiedDate":"2024-03-13"},{"lineNumber":293,"author":{"gitId":"ananya21"},"content":"| `* *` | project manager user | keep track of the team members | |","lastModifiedDate":"2024-03-13"},{"lineNumber":294,"author":{"gitId":"ananya21"},"content":"| `* * *` | user | create new projects | manage various tasks and activities |","lastModifiedDate":"2024-03-13"},{"lineNumber":295,"author":{"gitId":"ananya21"},"content":"| `* * *` | user | add team members to projects and assign them specific roles and tasks | |","lastModifiedDate":"2024-03-13"},{"lineNumber":296,"author":{"gitId":"ananya21"},"content":"| `* *` | user | set deadlines and milestones for subtasks within a project | |","lastModifiedDate":"2024-03-13"},{"lineNumber":297,"author":{"gitId":"ananya21"},"content":"| `*` | user | track the progress of tasks and projects through visual representations such as charts or graphs | |","lastModifiedDate":"2024-03-13"},{"lineNumber":298,"author":{"gitId":"ananya21"},"content":"| `*` | user | prioritize tasks within a project | ensure timely completion |","lastModifiedDate":"2024-03-13"},{"lineNumber":299,"author":{"gitId":"ananya21"},"content":"| `* *` | user | collaborate with team members by sharing files, comments, and updates within the software | |","lastModifiedDate":"2024-03-13"},{"lineNumber":300,"author":{"gitId":"ananya21"},"content":"| `* *` | user | receive notifications and reminders for upcoming deadlines or overdue tasks | |","lastModifiedDate":"2024-03-13"},{"lineNumber":301,"author":{"gitId":"ananya21"},"content":"| `*` | user | generate reports | analyze project performance and identify areas for improvement |","lastModifiedDate":"2024-03-13"},{"lineNumber":302,"author":{"gitId":"ananya21"},"content":"| `*` | user | integrate the software with other tools or platforms | have seamless workflow management |","lastModifiedDate":"2024-03-13"},{"lineNumber":303,"author":{"gitId":"ananya21"},"content":"| `* * *` | user | access the software from any device with an internet connection | for convenience |","lastModifiedDate":"2024-03-13"},{"lineNumber":304,"author":{"gitId":"ananya21"},"content":"| `*` | user | customize project templates or workflows | suit the specific needs of my team or organization |","lastModifiedDate":"2024-03-13"},{"lineNumber":305,"author":{"gitId":"ananya21"},"content":"| `* *` | user | securely store project-related documents and files within the software | |","lastModifiedDate":"2024-03-13"},{"lineNumber":306,"author":{"gitId":"ananya21"},"content":"| `* * *` | user | communicate with clients or stakeholders and provide them with updates on project progress | |","lastModifiedDate":"2024-03-13"},{"lineNumber":307,"author":{"gitId":"ananya21"},"content":"| `* *` | user | search for specific tasks, projects, or documents within the software | for quick access |","lastModifiedDate":"2024-03-13"},{"lineNumber":308,"author":{"gitId":"ananya21"},"content":"| `* *` | user | archive completed projects or tasks for future reference | |","lastModifiedDate":"2024-03-13"},{"lineNumber":309,"author":{"gitId":"ananya21"},"content":"| `*` | user | export data from the software in various formats | employ further analysis or sharing |","lastModifiedDate":"2024-03-13"},{"lineNumber":310,"author":{"gitId":"ananya21"},"content":"| `*` | user | invite external collaborators | they can participate in specific projects or tasks |","lastModifiedDate":"2024-03-13"},{"lineNumber":311,"author":{"gitId":"ananya21"},"content":"| `* *` | user | monitor team workload and redistribute tasks | balance workloads |","lastModifiedDate":"2024-03-13"},{"lineNumber":312,"author":{"gitId":"ananya21"},"content":"| `*` | user | access historical data and project archives | learn from past experiences and make informed decisions |","lastModifiedDate":"2024-03-13"},{"lineNumber":313,"author":{"gitId":"ananya21"},"content":"| `*` | user | provide feedback or suggestions for improving the software | better meet the needs of myself and my team |","lastModifiedDate":"2024-03-13"},{"lineNumber":314,"author":{"gitId":"ananya21"},"content":"| `* * *` | user | set the status of a project to be completed or incompleted | |","lastModifiedDate":"2024-03-13"},{"lineNumber":315,"author":{"gitId":"ananya21"},"content":"| `* * *` | user | set the deadline of a project to a specific date | |","lastModifiedDate":"2024-03-13"},{"lineNumber":316,"author":{"gitId":"ananya21"},"content":"| `* *` | user | edit the details of a project | |","lastModifiedDate":"2024-03-13"},{"lineNumber":317,"author":{"gitId":"ananya21"},"content":"| `* *` | user | filter the projects by their status | |","lastModifiedDate":"2024-03-13"},{"lineNumber":318,"author":{"gitId":"ananya21"},"content":"| `* * *` | user | add tasks to a project (ADD) | |","lastModifiedDate":"2024-03-13"},{"lineNumber":319,"author":{"gitId":"ananya21"},"content":"| `* *` | user | remove tasks from a project | |","lastModifiedDate":"2024-03-13"},{"lineNumber":320,"author":{"gitId":"ananya21"},"content":"| `* *` | user | edit the details of a task | |","lastModifiedDate":"2024-03-13"},{"lineNumber":321,"author":{"gitId":"ananya21"},"content":"| `* *` | user | mark task as not done or completed | |","lastModifiedDate":"2024-03-13"},{"lineNumber":322,"author":{"gitId":"ananya21"},"content":"| `* *` | user | assign tasks to a person | |","lastModifiedDate":"2024-03-13"},{"lineNumber":323,"author":{"gitId":"ananya21"},"content":"| `* *` | user | filter tasks by completion status | |","lastModifiedDate":"2024-03-13"},{"lineNumber":324,"author":{"gitId":"ananya21"},"content":"| `* *` | user | filter tasks by the person responsible | |","lastModifiedDate":"2024-03-13"},{"lineNumber":325,"author":{"gitId":"ananya21"},"content":"| `* * *` | user | save the project list on my hard drive | |","lastModifiedDate":"2024-03-13"},{"lineNumber":326,"author":{"gitId":"ananya21"},"content":"| `*` | user | share the project list so that other users can import the same list | |","lastModifiedDate":"2024-03-13"},{"lineNumber":327,"author":{"gitId":"ananya21"},"content":"| `*` | user | import lists from others while keeping my own list or discarding my old list | |","lastModifiedDate":"2024-03-13"},{"lineNumber":328,"author":{"gitId":"ananya21"},"content":"| `* *` | user | limit the amount of projects I can see on one page | |","lastModifiedDate":"2024-03-13"},{"lineNumber":329,"author":{"gitId":"ananya21"},"content":"| `* *` | user | search for projects by name | |","lastModifiedDate":"2024-03-13"},{"lineNumber":330,"author":{"gitId":"ananya21"},"content":"| `* *` | user | search for tasks by name | |","lastModifiedDate":"2024-03-13"},{"lineNumber":331,"author":{"gitId":"ananya21"},"content":"| `* * *` | user | access the user guide / command list | |","lastModifiedDate":"2024-03-13"},{"lineNumber":332,"author":{"gitId":"ananya21"},"content":"| `* *` | forgetful user | easily use the commands with guidance from the program | |","lastModifiedDate":"2024-03-13"},{"lineNumber":333,"author":{"gitId":"ananya21"},"content":"| `* *` | user | change font sizes | |","lastModifiedDate":"2024-03-13"},{"lineNumber":334,"author":{"gitId":"ananya21"},"content":"| `* * *` | typely user | use type commands to do everything a user does | |","lastModifiedDate":"2024-03-13"},{"lineNumber":335,"author":{"gitId":"ananya21"},"content":"| `*` | user | edit details of a person (Optional) | |","lastModifiedDate":"2024-03-13"},{"lineNumber":336,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":337,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":338,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07"},{"lineNumber":339,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":340,"author":{"gitId":"modembcc"},"content":"(For all use cases below, the **System** is the `DevPlan Pro` and the **Actor** is the `project manager`, unless specified otherwise)","lastModifiedDate":"2024-03-12"},{"lineNumber":341,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":342,"author":{"gitId":"modembcc"},"content":"**Use case: UC01 - Create a project**","lastModifiedDate":"2024-03-12"},{"lineNumber":343,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":344,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2024-03-12"},{"lineNumber":345,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":346,"author":{"gitId":"modembcc"},"content":"1. User inputs the project name to be added.","lastModifiedDate":"2024-03-12"},{"lineNumber":347,"author":{"gitId":"modembcc"},"content":"2. DevPlan Pro creates a new project with the specified name and adds it to the project list.","lastModifiedDate":"2024-03-12"},{"lineNumber":348,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":349,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2024-03-12"},{"lineNumber":350,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":351,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2024-03-12"},{"lineNumber":352,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":353,"author":{"gitId":"modembcc"},"content":"- 1a. The name is not unique.","lastModifiedDate":"2024-03-12"},{"lineNumber":354,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":355,"author":{"gitId":"modembcc"},"content":" - 1a1. DevPlan Pro rejects the project creation.","lastModifiedDate":"2024-03-12"},{"lineNumber":356,"author":{"gitId":"modembcc"},"content":" - 1a2. DevPlan Pro informs the user of the rejection.","lastModifiedDate":"2024-03-12"},{"lineNumber":357,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":358,"author":{"gitId":"modembcc"},"content":" Use case ends.","lastModifiedDate":"2024-03-12"},{"lineNumber":359,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":360,"author":{"gitId":"modembcc"},"content":"**Use case: UC02 - Delete a project**","lastModifiedDate":"2024-03-12"},{"lineNumber":361,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":362,"author":{"gitId":"modembcc"},"content":"**MSS**","lastModifiedDate":"2024-03-12"},{"lineNumber":363,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":364,"author":{"gitId":"modembcc"},"content":"1. User inputs the project name to be deleted.","lastModifiedDate":"2024-03-12"},{"lineNumber":365,"author":{"gitId":"modembcc"},"content":"2. DevPlan Pro deletes the project with the specified name and removes it from the project list. (Along with the project\u0027s tasks and members)","lastModifiedDate":"2024-03-12"},{"lineNumber":366,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":367,"author":{"gitId":"modembcc"},"content":" Use case ends.","lastModifiedDate":"2024-03-12"},{"lineNumber":368,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":369,"author":{"gitId":"modembcc"},"content":"**Extensions**","lastModifiedDate":"2024-03-12"},{"lineNumber":370,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":371,"author":{"gitId":"modembcc"},"content":"- 1a. The name is not valid. (No project with such name)","lastModifiedDate":"2024-03-12"},{"lineNumber":372,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":373,"author":{"gitId":"modembcc"},"content":" - 1a1. DevPlan Pro rejects the project deletion.","lastModifiedDate":"2024-03-12"},{"lineNumber":374,"author":{"gitId":"modembcc"},"content":" - 1a2. DevPlan Pro informs the user of the rejection.","lastModifiedDate":"2024-03-12"},{"lineNumber":375,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":376,"author":{"gitId":"modembcc"},"content":" Use case ends.","lastModifiedDate":"2024-03-12"},{"lineNumber":377,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":378,"author":{"gitId":"modembcc"},"content":"**Use case: UC03 - Add task to project**","lastModifiedDate":"2024-03-12"},{"lineNumber":379,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":380,"author":{"gitId":"modembcc"},"content":"**MSS**","lastModifiedDate":"2024-03-12"},{"lineNumber":381,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":382,"author":{"gitId":"modembcc"},"content":"1. User inputs the task and the project name.","lastModifiedDate":"2024-03-12"},{"lineNumber":383,"author":{"gitId":"modembcc"},"content":"2. DevPlan Pro creates a new task with the specified name and adds it to the specified project.","lastModifiedDate":"2024-03-12"},{"lineNumber":384,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":385,"author":{"gitId":"modembcc"},"content":" Use case ends.","lastModifiedDate":"2024-03-12"},{"lineNumber":386,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":387,"author":{"gitId":"modembcc"},"content":"**Extensions**","lastModifiedDate":"2024-03-12"},{"lineNumber":388,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":389,"author":{"gitId":"modembcc"},"content":"- 1a. The task name is not unique.","lastModifiedDate":"2024-03-12"},{"lineNumber":390,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":391,"author":{"gitId":"modembcc"},"content":" - 1a1. DevPlan Pro rejects the task creation.","lastModifiedDate":"2024-03-12"},{"lineNumber":392,"author":{"gitId":"modembcc"},"content":" - 1a2. DevPlan Pro informs the user of the rejection.","lastModifiedDate":"2024-03-12"},{"lineNumber":393,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":394,"author":{"gitId":"modembcc"},"content":" Use case ends.","lastModifiedDate":"2024-03-12"},{"lineNumber":395,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":396,"author":{"gitId":"modembcc"},"content":"- 1b. The project name is not valid.","lastModifiedDate":"2024-03-12"},{"lineNumber":397,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":398,"author":{"gitId":"modembcc"},"content":" - 1b1. DevPlan Pro rejects the task creation.","lastModifiedDate":"2024-03-12"},{"lineNumber":399,"author":{"gitId":"modembcc"},"content":" - 1b2. DevPlan Pro informs the user of the rejection.","lastModifiedDate":"2024-03-12"},{"lineNumber":400,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":401,"author":{"gitId":"modembcc"},"content":" Use case ends.","lastModifiedDate":"2024-03-12"},{"lineNumber":402,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":403,"author":{"gitId":"modembcc"},"content":"**Use case: UC04 - Remove task from project**","lastModifiedDate":"2024-03-12"},{"lineNumber":404,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":405,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23"},{"lineNumber":406,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":407,"author":{"gitId":"modembcc"},"content":"1. User inputs the task and the project name.","lastModifiedDate":"2024-03-12"},{"lineNumber":408,"author":{"gitId":"modembcc"},"content":"2. DevPlan Pro removes the task with the specified name from the specified project.","lastModifiedDate":"2024-03-12"},{"lineNumber":409,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":410,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":411,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":412,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23"},{"lineNumber":413,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":414,"author":{"gitId":"modembcc"},"content":"- 1a. The task name is not valid.","lastModifiedDate":"2024-03-12"},{"lineNumber":415,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":416,"author":{"gitId":"modembcc"},"content":" - 1a1. DevPlan Pro rejects the task deletion.","lastModifiedDate":"2024-03-12"},{"lineNumber":417,"author":{"gitId":"modembcc"},"content":" - 1a2. DevPlan Pro informs the user of the rejection.","lastModifiedDate":"2024-03-12"},{"lineNumber":418,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":419,"author":{"gitId":"modembcc"},"content":" Use case ends.","lastModifiedDate":"2024-03-12"},{"lineNumber":420,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":421,"author":{"gitId":"modembcc"},"content":"- 1b. The project name is not valid.","lastModifiedDate":"2024-03-12"},{"lineNumber":422,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":423,"author":{"gitId":"modembcc"},"content":" - 1b1. DevPlan Pro rejects the task deletion.","lastModifiedDate":"2024-03-12"},{"lineNumber":424,"author":{"gitId":"modembcc"},"content":" - 1b2. DevPlan Pro informs the user of the rejection.","lastModifiedDate":"2024-03-12"},{"lineNumber":425,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":426,"author":{"gitId":"modembcc"},"content":" Use case ends.","lastModifiedDate":"2024-03-12"},{"lineNumber":427,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":428,"author":{"gitId":"modembcc"},"content":"**Use case: UC05 - View a project**","lastModifiedDate":"2024-03-12"},{"lineNumber":429,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":430,"author":{"gitId":"modembcc"},"content":"**MSS**","lastModifiedDate":"2024-03-12"},{"lineNumber":431,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":432,"author":{"gitId":"modembcc"},"content":"1. User inputs the project name.","lastModifiedDate":"2024-03-12"},{"lineNumber":433,"author":{"gitId":"modembcc"},"content":"2. DevPlan Pro shows the information of the specified project.","lastModifiedDate":"2024-03-12"},{"lineNumber":434,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":435,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":436,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":437,"author":{"gitId":"modembcc"},"content":"**Extensions**","lastModifiedDate":"2024-03-12"},{"lineNumber":438,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":439,"author":{"gitId":"modembcc"},"content":"- 1a. The project name is not valid.","lastModifiedDate":"2024-03-12"},{"lineNumber":440,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":441,"author":{"gitId":"modembcc"},"content":" - 1b1. DevPlan Pro rejects showing the project.","lastModifiedDate":"2024-03-12"},{"lineNumber":442,"author":{"gitId":"modembcc"},"content":" - 1b2. DevPlan Pro informs the user of the rejection.","lastModifiedDate":"2024-03-12"},{"lineNumber":443,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":444,"author":{"gitId":"modembcc"},"content":" Use case ends.","lastModifiedDate":"2024-03-12"},{"lineNumber":445,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":446,"author":{"gitId":"modembcc"},"content":"**Use case: UC06 - Add team member to project**","lastModifiedDate":"2024-03-12"},{"lineNumber":447,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":448,"author":{"gitId":"modembcc"},"content":"**MSS**","lastModifiedDate":"2024-03-12"},{"lineNumber":449,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":450,"author":{"gitId":"modembcc"},"content":"1. User inputs the member name and the project name.","lastModifiedDate":"2024-03-12"},{"lineNumber":451,"author":{"gitId":"modembcc"},"content":"2. DevPlan Pro adds a person with the specified name to the specified project\u0027s team.","lastModifiedDate":"2024-03-12"},{"lineNumber":452,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":453,"author":{"gitId":"modembcc"},"content":" Use case ends.","lastModifiedDate":"2024-03-12"},{"lineNumber":454,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":455,"author":{"gitId":"modembcc"},"content":"**Extensions**","lastModifiedDate":"2024-03-12"},{"lineNumber":456,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":457,"author":{"gitId":"modembcc"},"content":"- 1a. The member name is not unique.","lastModifiedDate":"2024-03-12"},{"lineNumber":458,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":459,"author":{"gitId":"modembcc"},"content":" - 1a1. DevPlan Pro rejects the member addition.","lastModifiedDate":"2024-03-12"},{"lineNumber":460,"author":{"gitId":"modembcc"},"content":" - 1a2. DevPlan Pro informs the user of the rejection.","lastModifiedDate":"2024-03-12"},{"lineNumber":461,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":462,"author":{"gitId":"modembcc"},"content":" Use case ends.","lastModifiedDate":"2024-03-12"},{"lineNumber":463,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":464,"author":{"gitId":"modembcc"},"content":"- 1b. The project name is not valid.","lastModifiedDate":"2024-03-12"},{"lineNumber":465,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":466,"author":{"gitId":"modembcc"},"content":" - 1b1. DevPlan Pro rejects the member addition.","lastModifiedDate":"2024-03-12"},{"lineNumber":467,"author":{"gitId":"modembcc"},"content":" - 1b2. DevPlan Pro informs the user of the rejection.","lastModifiedDate":"2024-03-12"},{"lineNumber":468,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":469,"author":{"gitId":"modembcc"},"content":" Use case ends.","lastModifiedDate":"2024-03-12"},{"lineNumber":470,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":471,"author":{"gitId":"modembcc"},"content":"**Use case: UC07 - Remove team member from project**","lastModifiedDate":"2024-03-12"},{"lineNumber":472,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":473,"author":{"gitId":"modembcc"},"content":"**MSS**","lastModifiedDate":"2024-03-12"},{"lineNumber":474,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":475,"author":{"gitId":"modembcc"},"content":"1. User inputs the member name and the project name.","lastModifiedDate":"2024-03-12"},{"lineNumber":476,"author":{"gitId":"modembcc"},"content":"2. DevPlan Pro removes a person with the specified name from the specified project\u0027s team.","lastModifiedDate":"2024-03-12"},{"lineNumber":477,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":478,"author":{"gitId":"modembcc"},"content":" Use case ends.","lastModifiedDate":"2024-03-12"},{"lineNumber":479,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":480,"author":{"gitId":"modembcc"},"content":"**Extensions**","lastModifiedDate":"2024-03-12"},{"lineNumber":481,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":482,"author":{"gitId":"modembcc"},"content":"- 1a. The member name is not valid.","lastModifiedDate":"2024-03-12"},{"lineNumber":483,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":484,"author":{"gitId":"modembcc"},"content":" - 1a1. DevPlan Pro rejects the member deletion.","lastModifiedDate":"2024-03-12"},{"lineNumber":485,"author":{"gitId":"modembcc"},"content":" - 1a2. DevPlan Pro informs the user of the rejection.","lastModifiedDate":"2024-03-12"},{"lineNumber":486,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":487,"author":{"gitId":"modembcc"},"content":" Use case ends.","lastModifiedDate":"2024-03-12"},{"lineNumber":488,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":489,"author":{"gitId":"modembcc"},"content":"- 1b. The project name is not valid.","lastModifiedDate":"2024-03-12"},{"lineNumber":490,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":491,"author":{"gitId":"modembcc"},"content":" - 1b1. DevPlan Pro rejects the member deletion.","lastModifiedDate":"2024-03-12"},{"lineNumber":492,"author":{"gitId":"modembcc"},"content":" - 1b2. DevPlan Pro informs the user of the rejection.","lastModifiedDate":"2024-03-12"},{"lineNumber":493,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":494,"author":{"gitId":"modembcc"},"content":" Use case ends.","lastModifiedDate":"2024-03-12"},{"lineNumber":495,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":496,"author":{"gitId":"modembcc"},"content":"**Use case: UC08 - Assign member to task of project**","lastModifiedDate":"2024-03-12"},{"lineNumber":497,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":498,"author":{"gitId":"modembcc"},"content":"**MSS**","lastModifiedDate":"2024-03-12"},{"lineNumber":499,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":500,"author":{"gitId":"modembcc"},"content":"1. User inputs the member name, the task name, and the project name.","lastModifiedDate":"2024-03-12"},{"lineNumber":501,"author":{"gitId":"modembcc"},"content":"2. DevPlan Pro assign the specified member to the specified task in the specified project.","lastModifiedDate":"2024-03-12"},{"lineNumber":502,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":503,"author":{"gitId":"modembcc"},"content":" Use case ends.","lastModifiedDate":"2024-03-12"},{"lineNumber":504,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":505,"author":{"gitId":"modembcc"},"content":"**Extensions**","lastModifiedDate":"2024-03-12"},{"lineNumber":506,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":507,"author":{"gitId":"modembcc"},"content":"- 1a. The member name is not valid.","lastModifiedDate":"2024-03-12"},{"lineNumber":508,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":509,"author":{"gitId":"modembcc"},"content":" - 1a1. DevPlan Pro rejects the task assignment.","lastModifiedDate":"2024-03-12"},{"lineNumber":510,"author":{"gitId":"modembcc"},"content":" - 1a2. DevPlan Pro informs the user of the rejection.","lastModifiedDate":"2024-03-12"},{"lineNumber":511,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":512,"author":{"gitId":"modembcc"},"content":" Use case ends.","lastModifiedDate":"2024-03-12"},{"lineNumber":513,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":514,"author":{"gitId":"modembcc"},"content":"- 1b. The task name is not valid.","lastModifiedDate":"2024-03-12"},{"lineNumber":515,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":516,"author":{"gitId":"modembcc"},"content":" - 1b1. DevPlan Pro rejects the task assignment.","lastModifiedDate":"2024-03-12"},{"lineNumber":517,"author":{"gitId":"modembcc"},"content":" - 1b2. DevPlan Pro informs the user of the rejection.","lastModifiedDate":"2024-03-12"},{"lineNumber":518,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":519,"author":{"gitId":"modembcc"},"content":" Use case ends.","lastModifiedDate":"2024-03-12"},{"lineNumber":520,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":521,"author":{"gitId":"modembcc"},"content":"- 1c. The project name is not valid.","lastModifiedDate":"2024-03-12"},{"lineNumber":522,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":523,"author":{"gitId":"modembcc"},"content":" - 1b1. DevPlan Pro rejects the task assignment.","lastModifiedDate":"2024-03-12"},{"lineNumber":524,"author":{"gitId":"modembcc"},"content":" - 1b2. DevPlan Pro informs the user of the rejection.","lastModifiedDate":"2024-03-12"},{"lineNumber":525,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":526,"author":{"gitId":"modembcc"},"content":" Use case ends.","lastModifiedDate":"2024-03-12"},{"lineNumber":527,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":528,"author":{"gitId":"modembcc"},"content":"**Use case: UC09 - Assign deadline to task of project**","lastModifiedDate":"2024-03-12"},{"lineNumber":529,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":530,"author":{"gitId":"modembcc"},"content":"**MSS**","lastModifiedDate":"2024-03-12"},{"lineNumber":531,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":532,"author":{"gitId":"modembcc"},"content":"1. User inputs the deadline, the task name, and the project name.","lastModifiedDate":"2024-03-12"},{"lineNumber":533,"author":{"gitId":"modembcc"},"content":"2. DevPlan Pro assign deadline to the specified task in the specified project.","lastModifiedDate":"2024-03-12"},{"lineNumber":534,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":535,"author":{"gitId":"modembcc"},"content":" Use case ends.","lastModifiedDate":"2024-03-12"},{"lineNumber":536,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":537,"author":{"gitId":"modembcc"},"content":"**Extensions**","lastModifiedDate":"2024-03-12"},{"lineNumber":538,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":539,"author":{"gitId":"modembcc"},"content":"- 1a. Deadline is not in the “MMM D YYYY” format.","lastModifiedDate":"2024-03-12"},{"lineNumber":540,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":541,"author":{"gitId":"modembcc"},"content":" - 1a1. DevPlan Pro rejects the deadline assignment.","lastModifiedDate":"2024-03-12"},{"lineNumber":542,"author":{"gitId":"modembcc"},"content":" - 1a2. DevPlan Pro informs the user of the rejection and the correct format.","lastModifiedDate":"2024-03-12"},{"lineNumber":543,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":544,"author":{"gitId":"modembcc"},"content":" Use case ends.","lastModifiedDate":"2024-03-12"},{"lineNumber":545,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":546,"author":{"gitId":"modembcc"},"content":"- 1b. The task name is not valid.","lastModifiedDate":"2024-03-12"},{"lineNumber":547,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":548,"author":{"gitId":"modembcc"},"content":" - 1b1. DevPlan Pro rejects the deadline assignment.","lastModifiedDate":"2024-03-12"},{"lineNumber":549,"author":{"gitId":"modembcc"},"content":" - 1b2. DevPlan Pro informs the user of the rejection.","lastModifiedDate":"2024-03-12"},{"lineNumber":550,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":551,"author":{"gitId":"modembcc"},"content":" Use case ends.","lastModifiedDate":"2024-03-12"},{"lineNumber":552,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":553,"author":{"gitId":"modembcc"},"content":"- 1c. The project name is not valid.","lastModifiedDate":"2024-03-12"},{"lineNumber":554,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":555,"author":{"gitId":"modembcc"},"content":" - 1b1. DevPlan Pro rejects the deadline assignment.","lastModifiedDate":"2024-03-12"},{"lineNumber":556,"author":{"gitId":"modembcc"},"content":" - 1b2. DevPlan Pro informs the user of the rejection.","lastModifiedDate":"2024-03-12"},{"lineNumber":557,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":558,"author":{"gitId":"modembcc"},"content":" Use case ends.","lastModifiedDate":"2024-03-12"},{"lineNumber":559,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":560,"author":{"gitId":"modembcc"},"content":"**Use case: UC10 - Assign deadline to project**","lastModifiedDate":"2024-03-12"},{"lineNumber":561,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":562,"author":{"gitId":"modembcc"},"content":"**MSS**","lastModifiedDate":"2024-03-12"},{"lineNumber":563,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":564,"author":{"gitId":"modembcc"},"content":"1. User inputs the deadline and the project name.","lastModifiedDate":"2024-03-12"},{"lineNumber":565,"author":{"gitId":"modembcc"},"content":"2. DevPlan Pro assign deadline to the specified project.","lastModifiedDate":"2024-03-12"},{"lineNumber":566,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":567,"author":{"gitId":"modembcc"},"content":" Use case ends.","lastModifiedDate":"2024-03-12"},{"lineNumber":568,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":569,"author":{"gitId":"modembcc"},"content":"**Extensions**","lastModifiedDate":"2024-03-12"},{"lineNumber":570,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":571,"author":{"gitId":"modembcc"},"content":"- 1a. Deadline is not in the “MMM D YYYY” format.","lastModifiedDate":"2024-03-12"},{"lineNumber":572,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":573,"author":{"gitId":"modembcc"},"content":" - 1a1. DevPlan Pro rejects the deadline assignment.","lastModifiedDate":"2024-03-12"},{"lineNumber":574,"author":{"gitId":"modembcc"},"content":" - 1a2. DevPlan Pro informs the user of the rejection and the correct format.","lastModifiedDate":"2024-03-12"},{"lineNumber":575,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":576,"author":{"gitId":"modembcc"},"content":" Use case ends.","lastModifiedDate":"2024-03-12"},{"lineNumber":577,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":578,"author":{"gitId":"modembcc"},"content":"- 1b. The project name is not valid.","lastModifiedDate":"2024-03-12"},{"lineNumber":579,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":580,"author":{"gitId":"modembcc"},"content":" - 1b1. DevPlan Pro rejects the deadline assignment.","lastModifiedDate":"2024-03-12"},{"lineNumber":581,"author":{"gitId":"modembcc"},"content":" - 1b2. DevPlan Pro informs the user of the rejection.","lastModifiedDate":"2024-03-12"},{"lineNumber":582,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":583,"author":{"gitId":"modembcc"},"content":" Use case ends.","lastModifiedDate":"2024-03-12"},{"lineNumber":584,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":585,"author":{"gitId":"modembcc"},"content":"**Use case: UC11 - Set project status**","lastModifiedDate":"2024-03-12"},{"lineNumber":586,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":587,"author":{"gitId":"modembcc"},"content":"**MSS**","lastModifiedDate":"2024-03-12"},{"lineNumber":588,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":589,"author":{"gitId":"modembcc"},"content":"1. User inputs the status and the project name.","lastModifiedDate":"2024-03-12"},{"lineNumber":590,"author":{"gitId":"modembcc"},"content":"2. DevPlan Pro set the status of the specified project.","lastModifiedDate":"2024-03-12"},{"lineNumber":591,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":592,"author":{"gitId":"modembcc"},"content":" Use case ends.","lastModifiedDate":"2024-03-12"},{"lineNumber":593,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":594,"author":{"gitId":"modembcc"},"content":"**Extensions**","lastModifiedDate":"2024-03-12"},{"lineNumber":595,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":596,"author":{"gitId":"modembcc"},"content":"- 1a. The project name is not valid.","lastModifiedDate":"2024-03-12"},{"lineNumber":597,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":598,"author":{"gitId":"modembcc"},"content":" - 1b1. DevPlan Pro rejects the status change.","lastModifiedDate":"2024-03-12"},{"lineNumber":599,"author":{"gitId":"modembcc"},"content":" - 1b2. DevPlan Pro informs the user of the rejection.","lastModifiedDate":"2024-03-12"},{"lineNumber":600,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":601,"author":{"gitId":"modembcc"},"content":" Use case ends.","lastModifiedDate":"2024-03-12"},{"lineNumber":602,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":603,"author":{"gitId":"modembcc"},"content":"**Use case: UC11 - Set task status**","lastModifiedDate":"2024-03-12"},{"lineNumber":604,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":605,"author":{"gitId":"modembcc"},"content":"**MSS**","lastModifiedDate":"2024-03-12"},{"lineNumber":606,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":607,"author":{"gitId":"modembcc"},"content":"1. User inputs the status, the task name, and the project name.","lastModifiedDate":"2024-03-12"},{"lineNumber":608,"author":{"gitId":"modembcc"},"content":"2. DevPlan Pro set the status of the specified task in the specified project.","lastModifiedDate":"2024-03-12"},{"lineNumber":609,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":610,"author":{"gitId":"modembcc"},"content":" Use case ends.","lastModifiedDate":"2024-03-12"},{"lineNumber":611,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":612,"author":{"gitId":"modembcc"},"content":"**Extensions**","lastModifiedDate":"2024-03-12"},{"lineNumber":613,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":614,"author":{"gitId":"modembcc"},"content":"- 1a. The task name is not valid.","lastModifiedDate":"2024-03-12"},{"lineNumber":615,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":616,"author":{"gitId":"modembcc"},"content":" - 1b1. DevPlan Pro rejects the status change.","lastModifiedDate":"2024-03-12"},{"lineNumber":617,"author":{"gitId":"modembcc"},"content":" - 1b2. DevPlan Pro informs the user of the rejection.","lastModifiedDate":"2024-03-12"},{"lineNumber":618,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":619,"author":{"gitId":"modembcc"},"content":" Use case ends.","lastModifiedDate":"2024-03-12"},{"lineNumber":620,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":621,"author":{"gitId":"modembcc"},"content":"- 1b. The project name is not valid.","lastModifiedDate":"2024-03-12"},{"lineNumber":622,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":623,"author":{"gitId":"modembcc"},"content":" - 1b1. DevPlan Pro rejects the status change.","lastModifiedDate":"2024-03-12"},{"lineNumber":624,"author":{"gitId":"modembcc"},"content":" - 1b2. DevPlan Pro informs the user of the rejection.","lastModifiedDate":"2024-03-12"},{"lineNumber":625,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":626,"author":{"gitId":"modembcc"},"content":" Use case ends.","lastModifiedDate":"2024-03-12"},{"lineNumber":627,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":628,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23"},{"lineNumber":629,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":630,"author":{"gitId":"modembcc"},"content":"- Should work on any _mainstream OS_ as long as it has Java `11` or above installed.","lastModifiedDate":"2024-03-12"},{"lineNumber":631,"author":{"gitId":"modembcc"},"content":"- Should be able to hold up to 1000 projects without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2024-03-12"},{"lineNumber":632,"author":{"gitId":"modembcc"},"content":"- Should be able to hold up to 1000 tasks per project without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2024-03-12"},{"lineNumber":633,"author":{"gitId":"modembcc"},"content":"- A user with above average typing speed for regular English text (i.e. not code, not system admin commands) should be able to accomplish most of the tasks faster using commands than using the mouse.","lastModifiedDate":"2024-03-12"},{"lineNumber":634,"author":{"gitId":"modembcc"},"content":"- Should respond to user commands within 2 seconds.","lastModifiedDate":"2024-03-12"},{"lineNumber":635,"author":{"gitId":"modembcc"},"content":"- Should be usable by a novice who has never used DevPlan Pro before.","lastModifiedDate":"2024-03-12"},{"lineNumber":636,"author":{"gitId":"modembcc"},"content":"- Documentation should be understandable for a novice user who has never used DevPlan Pro, or any other similar project management application.","lastModifiedDate":"2024-03-12"},{"lineNumber":637,"author":{"gitId":"modembcc"},"content":"- The user interface should be intuitive enough for users who are not IT-savvy.","lastModifiedDate":"2024-03-12"},{"lineNumber":638,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":639,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23"},{"lineNumber":640,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":641,"author":{"gitId":"ThitipatC"},"content":"- **Project Manager**:The individual supervising a project whose role may include planning, executing, and closing a project.","lastModifiedDate":"2024-03-12"},{"lineNumber":642,"author":{"gitId":"ThitipatC"},"content":"- **Task Status**: A status of a task whether done or not done","lastModifiedDate":"2024-03-12"},{"lineNumber":643,"author":{"gitId":"ThitipatC"},"content":"- **Project Status**: A status of a project whether Completed or not Completed","lastModifiedDate":"2024-03-12"},{"lineNumber":644,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":645,"author":{"gitId":"modembcc"},"content":"---","lastModifiedDate":"2024-03-12"},{"lineNumber":646,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":647,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23"},{"lineNumber":648,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":649,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":650,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":651,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2020-05-23"},{"lineNumber":652,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":653,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":654,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":655,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":656,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":657,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":658,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":659,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":660,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23"},{"lineNumber":661,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":662,"author":{"gitId":"-"},"content":" 1. Double-click the jar file Expected: Shows the GUI with a set of sample contacts. The window size may not be optimum.","lastModifiedDate":"2020-05-23"},{"lineNumber":663,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":664,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23"},{"lineNumber":665,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":666,"author":{"gitId":"-"},"content":" 1. Resize the window to an optimum size. Move the window to a different location. Close the window.","lastModifiedDate":"2020-05-23"},{"lineNumber":667,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":668,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":669,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23"},{"lineNumber":670,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":671,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":672,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":673,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23"},{"lineNumber":674,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":675,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23"},{"lineNumber":676,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":677,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23"},{"lineNumber":678,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":679,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":680,"author":{"gitId":"-"},"content":" Expected: First contact is deleted from the list. Details of the deleted contact shown in the status message. Timestamp in the status bar is updated.","lastModifiedDate":"2020-05-23"},{"lineNumber":681,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":682,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":683,"author":{"gitId":"-"},"content":" Expected: No person is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2020-05-23"},{"lineNumber":684,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":685,"author":{"gitId":"-"},"content":" 1. Other incorrect delete commands to try: `delete`, `delete x`, `...` (where x is larger than the list size)\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":686,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":687,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":688,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":689,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":690,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":691,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":692,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":693,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":694,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23"},{"lineNumber":695,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":696,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"modembcc":319,"ThitipatC":3,"-":318,"ananya21":56}},{"path":"docs/UserGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: User Guide","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"AddressBook Level 3 (AB3) is a **desktop app for managing contacts, optimized for use via a Command Line Interface** (CLI) while still having the benefits of a Graphical User Interface (GUI). If you can type fast, AB3 can get your contact management tasks done faster than traditional GUI apps.","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"modembcc"},"content":"- Table of Contents","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":" {:toc}","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"modembcc"},"content":"---","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"## Quick start","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"1. Ensure you have Java `11` or above installed in your Computer.","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"1. Download the latest `addressbook.jar` from [here](https://github.com/se-edu/addressbook-level3/releases).","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"1. Copy the file to the folder you want to use as the _home folder_ for your AddressBook.","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"1. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar addressbook.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2023-01-01"},{"lineNumber":22,"author":{"gitId":"-"},"content":" A GUI similar to the below should appear in a few seconds. Note how the app contains some sample data.\u003cbr\u003e","lastModifiedDate":"2023-01-01"},{"lineNumber":23,"author":{"gitId":"-"},"content":" ![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"1. Type the command in the command box and press Enter to execute it. e.g. typing **`help`** and pressing Enter will open the help window.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":" Some example commands you can try:","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"modembcc"},"content":" - `list` : Lists all contacts.","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"modembcc"},"content":" - `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01` : Adds a contact named `John Doe` to the Address Book.","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"modembcc"},"content":" - `delete 3` : Deletes the 3rd contact shown in the current list.","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"modembcc"},"content":" - `clear` : Deletes all contacts.","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"modembcc"},"content":" - `exit` : Exits the app.","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"1. Refer to the [Features](#features) below for details of each command.","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"modembcc"},"content":"---","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"block\" class\u003d\"alert alert-info\"\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"**:information_source: Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"modembcc"},"content":"- Words in `UPPER_CASE` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"-"},"content":" e.g. in `add n/NAME`, `NAME` is a parameter which can be used as `add n/John Doe`.","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"modembcc"},"content":"- Items in square brackets are optional.\u003cbr\u003e","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":" e.g `n/NAME [t/TAG]` can be used as `n/John Doe t/friend` or as `n/John Doe`.","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"modembcc"},"content":"- Items with `…`​ after them can be used multiple times including zero times.\u003cbr\u003e","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"-"},"content":" e.g. `[t/TAG]…​` can be used as ` ` (i.e. 0 times), `t/friend`, `t/friend t/family` etc.","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"modembcc"},"content":"- Parameters can be in any order.\u003cbr\u003e","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":" e.g. if the command specifies `n/NAME p/PHONE_NUMBER`, `p/PHONE_NUMBER n/NAME` is also acceptable.","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"author":{"gitId":"modembcc"},"content":"- Extraneous parameters for commands that do not take in parameters (such as `help`, `list`, `exit` and `clear`) will be ignored.\u003cbr\u003e","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2021-02-03"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03"},{"lineNumber":63,"author":{"gitId":"modembcc"},"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":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"### Viewing help : `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"Shows a message explaning how to access the help page.","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"Format: `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"### Adding a project: `add project`","lastModifiedDate":"2024-02-28"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"Adds a project to the project manager.","lastModifiedDate":"2024-02-28"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"Format: `add project \u003cPROJECT_NAME\u003e`","lastModifiedDate":"2024-02-28"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":82,"author":{"gitId":"modembcc"},"content":"- `add project CS2103T Duke Chatbot Project`","lastModifiedDate":"2024-03-12"},{"lineNumber":83,"author":{"gitId":"modembcc"},"content":"- `add project CS2101 Presentation`","lastModifiedDate":"2024-03-12"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":85,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"Expected output:","lastModifiedDate":"2024-02-28"},{"lineNumber":86,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":87,"author":{"gitId":"modembcc"},"content":"- Success: `\u003cPROJECT_NAME\u003e has been added to the project list.`","lastModifiedDate":"2024-03-12"},{"lineNumber":88,"author":{"gitId":"modembcc"},"content":"- Failure: `Project \u003cPROJECT_NAME\u003e already exists.`","lastModifiedDate":"2024-03-12"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":"### Listing all persons : `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":"Shows a list of all persons in the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":"Format: `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"### Editing a person : `edit`","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"Edits an existing person in the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"Format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAG]…​`","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"modembcc"},"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":"2024-03-12"},{"lineNumber":103,"author":{"gitId":"modembcc"},"content":"- At least one of the optional fields must be provided.","lastModifiedDate":"2024-03-12"},{"lineNumber":104,"author":{"gitId":"modembcc"},"content":"- Existing values will be updated to the input values.","lastModifiedDate":"2024-03-12"},{"lineNumber":105,"author":{"gitId":"modembcc"},"content":"- When editing tags, the existing tags of the person will be removed i.e adding of tags is not cumulative.","lastModifiedDate":"2024-03-12"},{"lineNumber":106,"author":{"gitId":"modembcc"},"content":"- You can remove all the person’s tags by typing `t/` without","lastModifiedDate":"2024-03-12"},{"lineNumber":107,"author":{"gitId":"-"},"content":" specifying any tags after it.","lastModifiedDate":"2020-05-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":110,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":111,"author":{"gitId":"modembcc"},"content":"- `edit 1 p/91234567 e/johndoe@example.com` Edits the phone number and email address of the 1st person to be `91234567` and `johndoe@example.com` respectively.","lastModifiedDate":"2024-03-12"},{"lineNumber":112,"author":{"gitId":"modembcc"},"content":"- `edit 2 n/Betsy Crower t/` Edits the name of the 2nd person to be `Betsy Crower` and clears all existing tags.","lastModifiedDate":"2024-03-12"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":"### Locating persons by name: `find`","lastModifiedDate":"2020-05-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":"Finds persons whose names contain any of the given keywords.","lastModifiedDate":"2020-05-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":"Format: `find KEYWORD [MORE_KEYWORDS]`","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"modembcc"},"content":"- The search is case-insensitive. e.g `hans` will match `Hans`","lastModifiedDate":"2024-03-12"},{"lineNumber":121,"author":{"gitId":"modembcc"},"content":"- The order of the keywords does not matter. e.g. `Hans Bo` will match `Bo Hans`","lastModifiedDate":"2024-03-12"},{"lineNumber":122,"author":{"gitId":"modembcc"},"content":"- Only the name is searched.","lastModifiedDate":"2024-03-12"},{"lineNumber":123,"author":{"gitId":"modembcc"},"content":"- Only full words will be matched e.g. `Han` will not match `Hans`","lastModifiedDate":"2024-03-12"},{"lineNumber":124,"author":{"gitId":"modembcc"},"content":"- Persons matching at least one keyword will be returned (i.e. `OR` search).","lastModifiedDate":"2024-03-12"},{"lineNumber":125,"author":{"gitId":"-"},"content":" e.g. `Hans Bo` will return `Hans Gruber`, `Bo Yang`","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":128,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":129,"author":{"gitId":"modembcc"},"content":"- `find John` returns `john` and `John Doe`","lastModifiedDate":"2024-03-12"},{"lineNumber":130,"author":{"gitId":"modembcc"},"content":"- `find alex david` returns `Alex Yeoh`, `David Li`\u003cbr\u003e","lastModifiedDate":"2024-03-12"},{"lineNumber":131,"author":{"gitId":"-"},"content":" ![result for \u0027find alex david\u0027](images/findAlexDavidResult.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"### Deleting a project : `delete project`","lastModifiedDate":"2024-02-28"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"Deletes the specified project from the project list.","lastModifiedDate":"2024-02-28"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"Format: `delete project \u003cPROJECT_NAME\u003e`","lastModifiedDate":"2024-02-28"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"modembcc"},"content":"- The specified project name must exist in the project list.","lastModifiedDate":"2024-03-12"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":141,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2024-03-12"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":143,"author":{"gitId":"modembcc"},"content":"- `delete project CS2101 Presentation`","lastModifiedDate":"2024-03-12"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":145,"author":{"gitId":"modembcc"},"content":"Expected output:","lastModifiedDate":"2024-03-12"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":147,"author":{"gitId":"modembcc"},"content":"- Successful deletion: `\u003cPROJECT_NAME\u003e has been deleted from the project list.`","lastModifiedDate":"2024-03-12"},{"lineNumber":148,"author":{"gitId":"modembcc"},"content":"- Failed deletion: `Project \u003cPROJECT_NAME\u003e not found: Please make sure the project exists.`","lastModifiedDate":"2024-03-12"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":150,"author":{"gitId":"modembcc"},"content":"### Assign member to task : `add person`","lastModifiedDate":"2024-03-12"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":152,"author":{"gitId":"modembcc"},"content":"Assigns a team member to a task within a project.","lastModifiedDate":"2024-03-12"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":154,"author":{"gitId":"modembcc"},"content":"Format: `add person \u003cPERSON_NAME\u003e /to \u003cTASK_NAME\u003e /in \u003cPROJECT_NAME\u003e`","lastModifiedDate":"2024-03-12"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":156,"author":{"gitId":"modembcc"},"content":"- The specified project name must exist in the project list.","lastModifiedDate":"2024-03-12"},{"lineNumber":157,"author":{"gitId":"modembcc"},"content":"- The specified task name must exist in the project\u0027s task.","lastModifiedDate":"2024-03-12"},{"lineNumber":158,"author":{"gitId":"modembcc"},"content":"- The specified member name must be a member of the project team.","lastModifiedDate":"2024-03-12"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":160,"author":{"gitId":"modembcc"},"content":"Examples:","lastModifiedDate":"2024-03-12"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":162,"author":{"gitId":"modembcc"},"content":"- `add person Joe /to unit test /in CS2103_TP`","lastModifiedDate":"2024-03-12"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":164,"author":{"gitId":"modembcc"},"content":"Expected output:","lastModifiedDate":"2024-03-12"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":166,"author":{"gitId":"modembcc"},"content":"- Successful assignment: `\u003cPERSON_NAME\u003e has been assigned to \u003cPROJECT_NAME\u003e: \u003cTASK_NAME\u003e`","lastModifiedDate":"2024-03-12"},{"lineNumber":167,"author":{"gitId":"modembcc"},"content":"- Failed assignment (example): `Person \u003cPERSON_NAME\u003e is not a team member.`","lastModifiedDate":"2024-03-12"},{"lineNumber":168,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":169,"author":{"gitId":"modembcc"},"content":"### Assign deadline to project : `add deadline`","lastModifiedDate":"2024-03-12"},{"lineNumber":170,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":171,"author":{"gitId":"modembcc"},"content":"Assigns a deadline to a project.","lastModifiedDate":"2024-03-12"},{"lineNumber":172,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":173,"author":{"gitId":"modembcc"},"content":"Format: `add deadline \u003cDEADLINE\u003e /to \u003cPROJECT_NAME\u003e`","lastModifiedDate":"2024-03-12"},{"lineNumber":174,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":175,"author":{"gitId":"modembcc"},"content":"- The specified project name must exist in the project list.","lastModifiedDate":"2024-03-12"},{"lineNumber":176,"author":{"gitId":"modembcc"},"content":"- The deadline must be in `MMM D YYYY` format","lastModifiedDate":"2024-03-12"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":180,"author":{"gitId":"modembcc"},"content":"- `add deadline Feb 25 2024 /to CS2103_TP`","lastModifiedDate":"2024-03-12"},{"lineNumber":181,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":182,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"Expected output:","lastModifiedDate":"2024-02-28"},{"lineNumber":183,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":184,"author":{"gitId":"modembcc"},"content":"- Successful assignment: `Deadline \u003cDEADLINE\u003e has been assigned to \u003cPROJECT_NAME\u003e`","lastModifiedDate":"2024-03-12"},{"lineNumber":185,"author":{"gitId":"modembcc"},"content":"- Failed assignment (example): `Deadline needs to be in MMM D YYYY format.`","lastModifiedDate":"2024-03-12"},{"lineNumber":186,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":187,"author":{"gitId":"modembcc"},"content":"### Assign deadline to task : `add deadline`","lastModifiedDate":"2024-03-12"},{"lineNumber":188,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":189,"author":{"gitId":"modembcc"},"content":"Assigns a deadline to a task in a project.","lastModifiedDate":"2024-03-12"},{"lineNumber":190,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":191,"author":{"gitId":"modembcc"},"content":"Format: `add deadline \u003cDEADLINE\u003e /to \u003cTASK_NAME\u003e /in \u003cPROJECT_NAME\u003e`","lastModifiedDate":"2024-03-12"},{"lineNumber":192,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":193,"author":{"gitId":"modembcc"},"content":"- The specified project name must exist in the project list.","lastModifiedDate":"2024-03-12"},{"lineNumber":194,"author":{"gitId":"modembcc"},"content":"- The specified task name must exist in the project\u0027s tasks.","lastModifiedDate":"2024-03-12"},{"lineNumber":195,"author":{"gitId":"modembcc"},"content":"- The deadline must be in `MMM D YYYY` format","lastModifiedDate":"2024-03-12"},{"lineNumber":196,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":197,"author":{"gitId":"modembcc"},"content":"Examples:","lastModifiedDate":"2024-03-12"},{"lineNumber":198,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":199,"author":{"gitId":"modembcc"},"content":"- `add deadline Feb 25 2024 /to submit feature list /in CS2103_TP`","lastModifiedDate":"2024-03-12"},{"lineNumber":200,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":201,"author":{"gitId":"modembcc"},"content":"Expected output:","lastModifiedDate":"2024-03-12"},{"lineNumber":202,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":203,"author":{"gitId":"modembcc"},"content":"- Successful assignment: `Deadline \u003cDEADLINE\u003e has been assigned to \u003cPROJECT_NAME\u003e:\u003cTASK_NAME\u003e`","lastModifiedDate":"2024-03-12"},{"lineNumber":204,"author":{"gitId":"modembcc"},"content":"- Failed assignment (example): `Deadline needs to be in MMM D YYYY format.`","lastModifiedDate":"2024-03-12"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":206,"author":{"gitId":"ThitipatC"},"content":"### Add task : `add task`","lastModifiedDate":"2024-03-12"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":208,"author":{"gitId":"ThitipatC"},"content":"Add the specified task to a project.","lastModifiedDate":"2024-03-12"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":210,"author":{"gitId":"ThitipatC"},"content":"Format: `add task \u003cTASK_NAME\u003e /to \u003cPROJECT_NAME\u003e`","lastModifiedDate":"2024-03-12"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":212,"author":{"gitId":"modembcc"},"content":"- The specified project name must exist in the project list.","lastModifiedDate":"2024-03-15"},{"lineNumber":213,"author":{"gitId":"modembcc"},"content":"- The task\u0027s name must be unique","lastModifiedDate":"2024-03-15"},{"lineNumber":214,"author":{"gitId":"ThitipatC"},"content":" Examples:","lastModifiedDate":"2024-03-12"},{"lineNumber":215,"author":{"gitId":"modembcc"},"content":"- `add task add deadline command /to CS2103T Duke Chatbot Project`","lastModifiedDate":"2024-03-15"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":217,"author":{"gitId":"ThitipatC"},"content":"Expected output:","lastModifiedDate":"2024-03-12"},{"lineNumber":218,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":219,"author":{"gitId":"modembcc"},"content":"- Successful add command: `\u003cTASK_NAME\u003e has been added to \u003cPROJECT_NAME\u003e`","lastModifiedDate":"2024-03-15"},{"lineNumber":220,"author":{"gitId":"modembcc"},"content":"- Failed commands:","lastModifiedDate":"2024-03-15"},{"lineNumber":221,"author":{"gitId":"ThitipatC"},"content":" - invalid project name: `Project \u003cPROJECT_NAME\u003e not found: Please make sure the project exists.`","lastModifiedDate":"2024-03-12"},{"lineNumber":222,"author":{"gitId":"ThitipatC"},"content":" - repeated task: `Task \u003cTASK_NAME\u003e already exists in \u003cPROJECT_NAME\u003e`","lastModifiedDate":"2024-03-12"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":224,"author":{"gitId":"ThitipatC"},"content":"### Remove task : `delete task`","lastModifiedDate":"2024-03-12"},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":226,"author":{"gitId":"ThitipatC"},"content":"Deletes the specified task from a project.","lastModifiedDate":"2024-03-12"},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":228,"author":{"gitId":"ThitipatC"},"content":"Format: `delete task \u003cTASK_NAME\u003e /in \u003cPROJECT_NAME\u003e `","lastModifiedDate":"2024-03-12"},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":230,"author":{"gitId":"modembcc"},"content":"- The specified project name must exist in the project list.","lastModifiedDate":"2024-03-15"},{"lineNumber":231,"author":{"gitId":"modembcc"},"content":"- The task name must exist","lastModifiedDate":"2024-03-15"},{"lineNumber":232,"author":{"gitId":"ThitipatC"},"content":" Examples:","lastModifiedDate":"2024-03-12"},{"lineNumber":233,"author":{"gitId":"modembcc"},"content":"- `delete task add deadline command /in CS2103T Duke Chatbot Project`","lastModifiedDate":"2024-03-15"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":235,"author":{"gitId":"ThitipatC"},"content":"Expected output:","lastModifiedDate":"2024-03-12"},{"lineNumber":236,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":237,"author":{"gitId":"modembcc"},"content":"- Successful deletion: `\u003cTASK_NAME\u003e has been deleted from \u003cPROJECT_NAME\u003e`","lastModifiedDate":"2024-03-15"},{"lineNumber":238,"author":{"gitId":"modembcc"},"content":"- Failed commands:","lastModifiedDate":"2024-03-15"},{"lineNumber":239,"author":{"gitId":"ThitipatC"},"content":" - invalid project name: `Project \u003cPROJECT_NAME\u003e not found: Please make sure the project exists.`","lastModifiedDate":"2024-03-12"},{"lineNumber":240,"author":{"gitId":"ThitipatC"},"content":" - invalid task name: `Task \u003cTASK_NAME\u003e not found: Please make sure the task exists`","lastModifiedDate":"2024-03-12"},{"lineNumber":241,"author":{"gitId":"ThitipatC"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":242,"author":{"gitId":"ananya21"},"content":"### Set Task Status : `set status of Task`","lastModifiedDate":"2024-03-12"},{"lineNumber":243,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":244,"author":{"gitId":"ananya21"},"content":"sets the status of a task as finished or unfinished","lastModifiedDate":"2024-03-12"},{"lineNumber":245,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":246,"author":{"gitId":"ananya21"},"content":"Format: `set status \u003cSTATUS\u003e /to task \u003cTASK_NAME\u003e /in \u003cPROJECT_NAME\u003e`","lastModifiedDate":"2024-03-13"},{"lineNumber":247,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":248,"author":{"gitId":"modembcc"},"content":"- The specified task name must exist in the task list.","lastModifiedDate":"2024-03-15"},{"lineNumber":249,"author":{"gitId":"modembcc"},"content":"- The task status can either be `done` or `undone`","lastModifiedDate":"2024-03-15"},{"lineNumber":250,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":251,"author":{"gitId":"ananya21"},"content":"Examples:","lastModifiedDate":"2024-03-12"},{"lineNumber":252,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":253,"author":{"gitId":"modembcc"},"content":"- `set status done /to unit test /in CS2103T Duke Chatbot Project`","lastModifiedDate":"2024-03-15"},{"lineNumber":254,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":255,"author":{"gitId":"ananya21"},"content":"Expected output:","lastModifiedDate":"2024-03-12"},{"lineNumber":256,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":257,"author":{"gitId":"modembcc"},"content":"- Successful status update: `Task \u003cTASK_NAME\u003e is set as \u003cSTATUS\u003e`","lastModifiedDate":"2024-03-15"},{"lineNumber":258,"author":{"gitId":"modembcc"},"content":"- Failed commands: `Task \u003cTASK_NAME\u003e not found: Please make sure the task exists.`","lastModifiedDate":"2024-03-15"},{"lineNumber":259,"author":{"gitId":"modembcc"},"content":"- `Project \u003cPROJECT_NAME\u003e not found: Please make sure the project exists.`","lastModifiedDate":"2024-03-15"},{"lineNumber":260,"author":{"gitId":"modembcc"},"content":"- `Status was entered incorrectly.`,","lastModifiedDate":"2024-03-15"},{"lineNumber":261,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":262,"author":{"gitId":"ananya21"},"content":"### Set Project Status : `set status of Project`","lastModifiedDate":"2024-03-12"},{"lineNumber":263,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":264,"author":{"gitId":"ananya21"},"content":"sets the status of a project as finished or unfinished","lastModifiedDate":"2024-03-12"},{"lineNumber":265,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":266,"author":{"gitId":"ananya21"},"content":"Format: `set status \u003cSTATUS\u003e project \u003cPROJECT_NAME\u003e`","lastModifiedDate":"2024-03-12"},{"lineNumber":267,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":268,"author":{"gitId":"modembcc"},"content":"- The specified project name must exist in the project list.","lastModifiedDate":"2024-03-15"},{"lineNumber":269,"author":{"gitId":"modembcc"},"content":"- The project status can either be `done` or `undone`","lastModifiedDate":"2024-03-15"},{"lineNumber":270,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":271,"author":{"gitId":"ananya21"},"content":"Examples:","lastModifiedDate":"2024-03-12"},{"lineNumber":272,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":273,"author":{"gitId":"modembcc"},"content":"- `set status done project CS2103T Duke Chatbot Project`","lastModifiedDate":"2024-03-15"},{"lineNumber":274,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":275,"author":{"gitId":"ananya21"},"content":"Expected output:","lastModifiedDate":"2024-03-12"},{"lineNumber":276,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":277,"author":{"gitId":"modembcc"},"content":"- Successful status update: `Project \u003cPROJECT_NAME\u003e is set as \u003cSTATUS\u003e`","lastModifiedDate":"2024-03-15"},{"lineNumber":278,"author":{"gitId":"modembcc"},"content":"- Failed commands: `Project \u003cPROJECT_NAME\u003e not found: Please make sure the project exists.`","lastModifiedDate":"2024-03-15"},{"lineNumber":279,"author":{"gitId":"modembcc"},"content":"- `Status was entered incorrectly.`","lastModifiedDate":"2024-03-15"},{"lineNumber":280,"author":{"gitId":"ThitipatC"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":281,"author":{"gitId":"ThitipatC"},"content":"### Show Project : `show project`","lastModifiedDate":"2024-03-12"},{"lineNumber":282,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":283,"author":{"gitId":"ThitipatC"},"content":"shows the project’s details","lastModifiedDate":"2024-03-12"},{"lineNumber":284,"author":{"gitId":"ThitipatC"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":285,"author":{"gitId":"ThitipatC"},"content":"Format: `show project \u003cPROJECT_NAME\u003e`","lastModifiedDate":"2024-03-12"},{"lineNumber":286,"author":{"gitId":"ThitipatC"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":287,"author":{"gitId":"modembcc"},"content":"- The specified project name must exist in the project list.","lastModifiedDate":"2024-03-15"},{"lineNumber":288,"author":{"gitId":"ThitipatC"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":289,"author":{"gitId":"ThitipatC"},"content":"Examples:","lastModifiedDate":"2024-03-12"},{"lineNumber":290,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":291,"author":{"gitId":"modembcc"},"content":"- `show project CS2103T Duke Chatbot Project`","lastModifiedDate":"2024-03-15"},{"lineNumber":292,"author":{"gitId":"ThitipatC"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":293,"author":{"gitId":"ThitipatC"},"content":"Expected output:","lastModifiedDate":"2024-03-12"},{"lineNumber":294,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":295,"author":{"gitId":"modembcc"},"content":"- Successful display: `The ui now shows the project’s information`","lastModifiedDate":"2024-03-15"},{"lineNumber":296,"author":{"gitId":"modembcc"},"content":"- Failed commands: `Project \u003cPROJECT_NAME\u003e not found: Please make sure the project exists.`","lastModifiedDate":"2024-03-15"},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":298,"author":{"gitId":"modembcc"},"content":"---","lastModifiedDate":"2024-03-12"},{"lineNumber":299,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":300,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23"},{"lineNumber":301,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":302,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":303,"author":{"gitId":"-"},"content":"**A**: Install the app in the other computer and overwrite the empty data file it creates with the file that contains the data of your previous AddressBook home folder.","lastModifiedDate":"2020-05-23"},{"lineNumber":304,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":305,"author":{"gitId":"modembcc"},"content":"---","lastModifiedDate":"2024-03-12"},{"lineNumber":306,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":307,"author":{"gitId":"-"},"content":"## Known issues","lastModifiedDate":"2023-09-08"},{"lineNumber":308,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":309,"author":{"gitId":"-"},"content":"1. **When using multiple screens**, if you move the application to a secondary screen, and later switch to using only the primary screen, the GUI will open off-screen. The remedy is to delete the `preferences.json` file created by the application before running the application again.","lastModifiedDate":"2023-09-08"},{"lineNumber":310,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":311,"author":{"gitId":"modembcc"},"content":"---","lastModifiedDate":"2024-03-12"},{"lineNumber":312,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":313,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23"},{"lineNumber":314,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":315,"author":{"gitId":"modembcc"},"content":"| Action | Format, Examples |","lastModifiedDate":"2024-03-12"},{"lineNumber":316,"author":{"gitId":"modembcc"},"content":"| ---------- | --------------------------------------------------------------------------------------------------------------------------- |","lastModifiedDate":"2024-03-12"},{"lineNumber":317,"author":{"gitId":"modembcc"},"content":"| **Add** | `add project \u003cPROJECT_NAME\u003e` \u003cbr\u003e e.g., `add project CS2101 Presentation` |","lastModifiedDate":"2024-03-12"},{"lineNumber":318,"author":{"gitId":"modembcc"},"content":"| **Clear** | `clear` |","lastModifiedDate":"2024-03-12"},{"lineNumber":319,"author":{"gitId":"modembcc"},"content":"| **Delete** | `delete project \u003cPROJECT_NAME\u003e`\u003cbr\u003e e.g., `delete project CS2101 Presentation` |","lastModifiedDate":"2024-03-12"},{"lineNumber":320,"author":{"gitId":"modembcc"},"content":"| **Edit** | `edit INDEX [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [t/TAG]…​`\u003cbr\u003e e.g.,`edit 2 n/James Lee e/jameslee@example.com` |","lastModifiedDate":"2024-03-12"},{"lineNumber":321,"author":{"gitId":"modembcc"},"content":"| **Find** | `find KEYWORD [MORE_KEYWORDS]`\u003cbr\u003e e.g., `find James Jake` |","lastModifiedDate":"2024-03-12"},{"lineNumber":322,"author":{"gitId":"modembcc"},"content":"| **List** | `list` |","lastModifiedDate":"2024-03-12"},{"lineNumber":323,"author":{"gitId":"modembcc"},"content":"| **Help** | `help` |","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"modembcc":129,"ThitipatC":25,"Lin-Shuang-Shuang":9,"-":138,"ananya21":22}},{"path":"docs/_sass/minima/_base.scss","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"html {","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":" font-size: $base-font-size;","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * Reset some basic elements","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"modembcc"},"content":"body,","lastModifiedDate":"2024-03-03"},{"lineNumber":9,"author":{"gitId":"modembcc"},"content":"h1,","lastModifiedDate":"2024-03-03"},{"lineNumber":10,"author":{"gitId":"modembcc"},"content":"h2,","lastModifiedDate":"2024-03-03"},{"lineNumber":11,"author":{"gitId":"modembcc"},"content":"h3,","lastModifiedDate":"2024-03-03"},{"lineNumber":12,"author":{"gitId":"modembcc"},"content":"h4,","lastModifiedDate":"2024-03-03"},{"lineNumber":13,"author":{"gitId":"modembcc"},"content":"h5,","lastModifiedDate":"2024-03-03"},{"lineNumber":14,"author":{"gitId":"modembcc"},"content":"h6,","lastModifiedDate":"2024-03-03"},{"lineNumber":15,"author":{"gitId":"modembcc"},"content":"p,","lastModifiedDate":"2024-03-03"},{"lineNumber":16,"author":{"gitId":"modembcc"},"content":"blockquote,","lastModifiedDate":"2024-03-03"},{"lineNumber":17,"author":{"gitId":"modembcc"},"content":"pre,","lastModifiedDate":"2024-03-03"},{"lineNumber":18,"author":{"gitId":"modembcc"},"content":"hr,","lastModifiedDate":"2024-03-03"},{"lineNumber":19,"author":{"gitId":"modembcc"},"content":"dl,","lastModifiedDate":"2024-03-03"},{"lineNumber":20,"author":{"gitId":"modembcc"},"content":"dd,","lastModifiedDate":"2024-03-03"},{"lineNumber":21,"author":{"gitId":"modembcc"},"content":"ol,","lastModifiedDate":"2024-03-03"},{"lineNumber":22,"author":{"gitId":"modembcc"},"content":"ul,","lastModifiedDate":"2024-03-03"},{"lineNumber":23,"author":{"gitId":"modembcc"},"content":"figure {","lastModifiedDate":"2024-03-03"},{"lineNumber":24,"author":{"gitId":"-"},"content":" margin: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":" padding: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Basic styling","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":"body {","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"modembcc"},"content":" font: $base-font-weight #{$base-font-size}/#{$base-line-height}","lastModifiedDate":"2024-03-03"},{"lineNumber":33,"author":{"gitId":"modembcc"},"content":" $base-font-family;","lastModifiedDate":"2024-03-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":" color: $text-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" background-color: $background-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":" -webkit-text-size-adjust: 100%;","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" -webkit-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" -moz-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" -o-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" font-kerning: normal;","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" display: flex;","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" min-height: 100vh;","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" flex-direction: column;","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" overflow-wrap: break-word;","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Set `margin-bottom` to maintain vertical rhythm","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"modembcc"},"content":"h1,","lastModifiedDate":"2024-03-03"},{"lineNumber":52,"author":{"gitId":"modembcc"},"content":"h2,","lastModifiedDate":"2024-03-03"},{"lineNumber":53,"author":{"gitId":"modembcc"},"content":"h3,","lastModifiedDate":"2024-03-03"},{"lineNumber":54,"author":{"gitId":"modembcc"},"content":"h4,","lastModifiedDate":"2024-03-03"},{"lineNumber":55,"author":{"gitId":"modembcc"},"content":"h5,","lastModifiedDate":"2024-03-03"},{"lineNumber":56,"author":{"gitId":"modembcc"},"content":"h6,","lastModifiedDate":"2024-03-03"},{"lineNumber":57,"author":{"gitId":"modembcc"},"content":"p,","lastModifiedDate":"2024-03-03"},{"lineNumber":58,"author":{"gitId":"modembcc"},"content":"blockquote,","lastModifiedDate":"2024-03-03"},{"lineNumber":59,"author":{"gitId":"modembcc"},"content":"pre,","lastModifiedDate":"2024-03-03"},{"lineNumber":60,"author":{"gitId":"modembcc"},"content":"ul,","lastModifiedDate":"2024-03-03"},{"lineNumber":61,"author":{"gitId":"modembcc"},"content":"ol,","lastModifiedDate":"2024-03-03"},{"lineNumber":62,"author":{"gitId":"modembcc"},"content":"dl,","lastModifiedDate":"2024-03-03"},{"lineNumber":63,"author":{"gitId":"modembcc"},"content":"figure,","lastModifiedDate":"2024-03-03"},{"lineNumber":64,"author":{"gitId":"-"},"content":"%vertical-rhythm {","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit / 2;","lastModifiedDate":"2020-05-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"hr {","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" margin-top: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * `main` element","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"main {","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" display: block; /* Default value of `display` of `main` element is \u0027inline\u0027 in IE 11. */","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * Images","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"img {","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" max-width: 100%;","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" vertical-align: middle;","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * Figures","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"figure \u003e img {","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":"figcaption {","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":" font-size: $small-font-size;","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * Lists","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"modembcc"},"content":"ul,","lastModifiedDate":"2024-03-03"},{"lineNumber":103,"author":{"gitId":"modembcc"},"content":"ol {","lastModifiedDate":"2024-03-03"},{"lineNumber":104,"author":{"gitId":"-"},"content":" margin-left: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":"li {","lastModifiedDate":"2020-05-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":" \u003e ul,","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":" \u003e ol {","lastModifiedDate":"2020-05-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":" margin-bottom: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":" * Headings","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":117,"author":{"gitId":"modembcc"},"content":"h1,","lastModifiedDate":"2024-03-03"},{"lineNumber":118,"author":{"gitId":"modembcc"},"content":"h2,","lastModifiedDate":"2024-03-03"},{"lineNumber":119,"author":{"gitId":"modembcc"},"content":"h3,","lastModifiedDate":"2024-03-03"},{"lineNumber":120,"author":{"gitId":"modembcc"},"content":"h4,","lastModifiedDate":"2024-03-03"},{"lineNumber":121,"author":{"gitId":"modembcc"},"content":"h5,","lastModifiedDate":"2024-03-03"},{"lineNumber":122,"author":{"gitId":"modembcc"},"content":"h6 {","lastModifiedDate":"2024-03-03"},{"lineNumber":123,"author":{"gitId":"-"},"content":" font-weight: $base-font-weight;","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":" * Links","lastModifiedDate":"2020-05-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":"a {","lastModifiedDate":"2020-05-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":" color: $link-base-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":" text-decoration: none;","lastModifiedDate":"2020-05-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":" \u0026:visited {","lastModifiedDate":"2020-05-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":" color: $link-visited-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":" \u0026:hover {","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":" color: $text-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":" text-decoration: underline;","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":" .social-media-list \u0026:hover {","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":" text-decoration: none;","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":" .username {","lastModifiedDate":"2020-05-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":" text-decoration: underline;","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":" * Blockquotes","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":"blockquote {","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":" color: $brand-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":" border-left: 4px solid $brand-color-light;","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit / 2;","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":" @include relative-font-size(1.125);","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":" font-style: italic;","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":" \u003e :last-child {","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":" margin-bottom: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"modembcc"},"content":" i,","lastModifiedDate":"2024-03-03"},{"lineNumber":166,"author":{"gitId":"modembcc"},"content":" em {","lastModifiedDate":"2024-03-03"},{"lineNumber":167,"author":{"gitId":"-"},"content":" font-style: normal;","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":" * Code formatting","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":"pre,","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":"code {","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":" font-family: $code-font-family;","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":" font-size: 0.9375em;","lastModifiedDate":"2020-05-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":" border: 1px solid $brand-color-light;","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":" border-radius: 3px;","lastModifiedDate":"2020-05-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":" background-color: $code-background-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"code {","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":" padding: 1px 5px;","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":"pre {","lastModifiedDate":"2020-05-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":" padding: 8px 12px;","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":" overflow-x: auto;","lastModifiedDate":"2020-05-23"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":" \u003e code {","lastModifiedDate":"2020-05-23"},{"lineNumber":192,"author":{"gitId":"-"},"content":" border: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":" padding-right: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":" padding-left: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":198,"author":{"gitId":"-"},"content":".highlight {","lastModifiedDate":"2020-05-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":" border-radius: 3px;","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"author":{"gitId":"-"},"content":" background: $code-background-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":201,"author":{"gitId":"-"},"content":" @extend %vertical-rhythm;","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":" .highlighter-rouge \u0026 {","lastModifiedDate":"2020-05-23"},{"lineNumber":204,"author":{"gitId":"-"},"content":" background: $code-background-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":206,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":208,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":209,"author":{"gitId":"-"},"content":" * Wrapper","lastModifiedDate":"2020-05-23"},{"lineNumber":210,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":".wrapper {","lastModifiedDate":"2020-05-23"},{"lineNumber":212,"author":{"gitId":"-"},"content":" max-width: calc(#{$content-width} - (#{$spacing-unit}));","lastModifiedDate":"2020-05-23"},{"lineNumber":213,"author":{"gitId":"-"},"content":" margin-right: auto;","lastModifiedDate":"2020-05-23"},{"lineNumber":214,"author":{"gitId":"-"},"content":" margin-left: auto;","lastModifiedDate":"2020-05-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":" padding-right: $spacing-unit / 2;","lastModifiedDate":"2020-05-23"},{"lineNumber":216,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit / 2;","lastModifiedDate":"2020-05-23"},{"lineNumber":217,"author":{"gitId":"-"},"content":" @extend %clearfix;","lastModifiedDate":"2020-05-23"},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":219,"author":{"gitId":"-"},"content":" @media screen and (min-width: $on-large) {","lastModifiedDate":"2020-05-23"},{"lineNumber":220,"author":{"gitId":"-"},"content":" max-width: calc(#{$content-width} - (#{$spacing-unit} * 2));","lastModifiedDate":"2020-05-23"},{"lineNumber":221,"author":{"gitId":"-"},"content":" padding-right: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":222,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":223,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":224,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":226,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"author":{"gitId":"-"},"content":" * Clearfix","lastModifiedDate":"2020-05-23"},{"lineNumber":228,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":"%clearfix:after {","lastModifiedDate":"2020-05-23"},{"lineNumber":230,"author":{"gitId":"-"},"content":" content: \"\";","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"author":{"gitId":"-"},"content":" display: table;","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":" clear: both;","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":" * Icons","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":".orange {","lastModifiedDate":"2020-05-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":" color: #f66a0a;","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":".grey {","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":" color: #828282;","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":247,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":248,"author":{"gitId":"-"},"content":" * Tables","lastModifiedDate":"2020-05-23"},{"lineNumber":249,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":250,"author":{"gitId":"-"},"content":"table {","lastModifiedDate":"2020-05-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":" width: 100%;","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":" text-align: $table-text-align;","lastModifiedDate":"2020-05-23"},{"lineNumber":254,"author":{"gitId":"-"},"content":" color: $table-text-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":" border-collapse: collapse;","lastModifiedDate":"2020-05-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":" border: 1px solid $table-border-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":257,"author":{"gitId":"-"},"content":" tr {","lastModifiedDate":"2020-05-23"},{"lineNumber":258,"author":{"gitId":"-"},"content":" \u0026:nth-child(even) {","lastModifiedDate":"2020-05-23"},{"lineNumber":259,"author":{"gitId":"-"},"content":" background-color: $table-zebra-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":262,"author":{"gitId":"modembcc"},"content":" th,","lastModifiedDate":"2024-03-03"},{"lineNumber":263,"author":{"gitId":"modembcc"},"content":" td {","lastModifiedDate":"2024-03-03"},{"lineNumber":264,"author":{"gitId":"-"},"content":" padding: ($spacing-unit / 3) ($spacing-unit / 2);","lastModifiedDate":"2020-05-23"},{"lineNumber":265,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":266,"author":{"gitId":"-"},"content":" th {","lastModifiedDate":"2020-05-23"},{"lineNumber":267,"author":{"gitId":"-"},"content":" background-color: $table-header-bg-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":268,"author":{"gitId":"-"},"content":" border: 1px solid $table-header-border;","lastModifiedDate":"2020-05-23"},{"lineNumber":269,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":270,"author":{"gitId":"-"},"content":" td {","lastModifiedDate":"2020-05-23"},{"lineNumber":271,"author":{"gitId":"-"},"content":" border: 1px solid $table-border-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":272,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":274,"author":{"gitId":"-"},"content":" @include media-query($on-laptop) {","lastModifiedDate":"2020-05-23"},{"lineNumber":275,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2020-05-23"},{"lineNumber":276,"author":{"gitId":"-"},"content":" overflow-x: auto;","lastModifiedDate":"2020-05-23"},{"lineNumber":277,"author":{"gitId":"-"},"content":" -webkit-overflow-scrolling: touch;","lastModifiedDate":"2020-05-23"},{"lineNumber":278,"author":{"gitId":"-"},"content":" -ms-overflow-style: -ms-autohiding-scrollbar;","lastModifiedDate":"2020-05-23"},{"lineNumber":279,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":280,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":281,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-01-11"},{"lineNumber":282,"author":{"gitId":"-"},"content":"@media print {","lastModifiedDate":"2021-01-12"},{"lineNumber":283,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2021-01-11"},{"lineNumber":284,"author":{"gitId":"-"},"content":" * Prevents page break from cutting through content when printing","lastModifiedDate":"2021-01-12"},{"lineNumber":285,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2021-01-11"},{"lineNumber":286,"author":{"gitId":"-"},"content":" body {","lastModifiedDate":"2021-01-11"},{"lineNumber":287,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2021-01-11"},{"lineNumber":288,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-11"},{"lineNumber":289,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2021-01-12"},{"lineNumber":290,"author":{"gitId":"-"},"content":" * Replaces the top navigation menu with the project name when printing","lastModifiedDate":"2021-01-12"},{"lineNumber":291,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2021-01-12"},{"lineNumber":292,"author":{"gitId":"-"},"content":" .site-header .wrapper {","lastModifiedDate":"2021-01-12"},{"lineNumber":293,"author":{"gitId":"-"},"content":" display: none;","lastModifiedDate":"2021-01-12"},{"lineNumber":294,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-12"},{"lineNumber":295,"author":{"gitId":"-"},"content":" .site-header {","lastModifiedDate":"2021-01-12"},{"lineNumber":296,"author":{"gitId":"-"},"content":" text-align: center;","lastModifiedDate":"2021-01-12"},{"lineNumber":297,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-12"},{"lineNumber":298,"author":{"gitId":"-"},"content":" .site-header:before {","lastModifiedDate":"2021-01-12"},{"lineNumber":299,"author":{"gitId":"modembcc"},"content":" content: \"DevPlan Pro\";","lastModifiedDate":"2024-03-03"},{"lineNumber":300,"author":{"gitId":"-"},"content":" font-size: 32px;","lastModifiedDate":"2021-01-12"},{"lineNumber":301,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-11"},{"lineNumber":302,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-01-12"}],"authorContributionMap":{"modembcc":44,"-":258}},{"path":"docs/index.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"modembcc"},"content":"title: DevPlan Pro","lastModifiedDate":"2024-03-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"modembcc"},"content":"[![CI Status](https://github.com/AY2324S2-CS2103T-W08-4/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2324S2-CS2103T-W08-4/tp/actions)","lastModifiedDate":"2024-03-03"},{"lineNumber":7,"author":{"gitId":"modembcc"},"content":"[![codecov](https://codecov.io/gh/AY2324S2-CS2103T-W08-4/tp/graph/badge.svg?token\u003dJRBJM9DOXE)](https://codecov.io/gh/AY2324S2-CS2103T-W08-4/tp)","lastModifiedDate":"2024-03-03"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"modembcc"},"content":"**Devplan Pro** is a project management app that is catered towards project managers who love typing. It allows the user to keep track of their various projects, the ongoing tasks within the projects, and people who are responsible for those tasks. Every action is executed through the input box using an intuitive [list of commands](https://github.com/othneildrew/Best-README-Template).","lastModifiedDate":"2024-03-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"modembcc"},"content":"- If you are interested in using DevPlan Pro, head over to the [_Quick Start_ section of the **User Guide**](UserGuide.html#quick-start).","lastModifiedDate":"2024-03-03"},{"lineNumber":14,"author":{"gitId":"modembcc"},"content":"- If you are interested about developing DevPlan Pro, the [**Developer Guide**](DeveloperGuide.html) is a good place to start.","lastModifiedDate":"2024-03-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"**Acknowledgements**","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"modembcc"},"content":"- Libraries used: [JavaFX](https://openjfx.io/), [Jackson](https://github.com/FasterXML/jackson), [JUnit5](https://github.com/junit-team/junit5)","lastModifiedDate":"2024-03-03"}],"authorContributionMap":{"modembcc":7,"-":11}},{"path":"src/main/java/seedu/address/MainApp.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.application.Application;","lastModifiedDate":"2016-08-26"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.Config;","lastModifiedDate":"2016-09-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.Version;","lastModifiedDate":"2016-09-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ConfigUtil;","lastModifiedDate":"2016-10-07"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2016-09-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.Logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.LogicManager;","lastModifiedDate":"2016-09-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-01-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-01-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-01-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2017-01-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-12-06"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-01-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2016-12-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.storage.AddressBookStorage;","lastModifiedDate":"2017-02-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-11-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2017-02-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.storage.Storage;","lastModifiedDate":"2016-09-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.storage.UserPrefsStorage;","lastModifiedDate":"2017-02-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.ui.Ui;","lastModifiedDate":"2016-09-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.ui.UiManager;","lastModifiedDate":"2016-09-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Runs the application.","lastModifiedDate":"2019-02-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":"public class MainApp extends Application {","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final Version VERSION \u003d new Version(0, 2, 2, true);","lastModifiedDate":"2023-08-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(MainApp.class);","lastModifiedDate":"2017-04-01"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":43,"author":{"gitId":"-"},"content":" protected Ui ui;","lastModifiedDate":"2016-09-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" protected Logic logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":" protected Storage storage;","lastModifiedDate":"2016-09-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":" protected Model model;","lastModifiedDate":"2016-09-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" protected Config config;","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void init() throws Exception {","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" logger.info(\"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d[ Initializing AddressBook ]\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\");","lastModifiedDate":"2016-09-29"},{"lineNumber":52,"author":{"gitId":"-"},"content":" super.init();","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" AppParameters appParameters \u003d AppParameters.parse(getParameters());","lastModifiedDate":"2018-04-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" config \u003d initConfig(appParameters.getConfigPath());","lastModifiedDate":"2018-04-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":" initLogging(config);","lastModifiedDate":"2023-07-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25"},{"lineNumber":58,"author":{"gitId":"-"},"content":" UserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(config.getUserPrefsFilePath());","lastModifiedDate":"2017-02-25"},{"lineNumber":59,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d initPrefs(userPrefsStorage);","lastModifiedDate":"2018-12-06"},{"lineNumber":60,"author":{"gitId":"-"},"content":" AddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(userPrefs.getAddressBookFilePath());","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2017-02-25"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" model \u003d initModelManager(storage, userPrefs);","lastModifiedDate":"2016-09-25"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":" ui \u003d new UiManager(logic);","lastModifiedDate":"2018-12-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Returns a {@code ModelManager} with the data from {@code storage}\u0027s address book and {@code userPrefs}. \u003cbr\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * The data from the sample address book will be used instead if {@code storage}\u0027s address book is not found,","lastModifiedDate":"2017-08-16"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * or an empty address book will be used instead if errors occur when reading {@code storage}\u0027s address book.","lastModifiedDate":"2017-08-16"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":75,"author":{"gitId":"-"},"content":" private Model initModelManager(Storage storage, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":76,"author":{"gitId":"-"},"content":" logger.info(\"Using data file : \" + storage.getAddressBookFilePath());","lastModifiedDate":"2023-07-29"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":78,"author":{"gitId":"-"},"content":" Optional\u003cReadOnlyAddressBook\u003e addressBookOptional;","lastModifiedDate":"2016-09-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook initialData;","lastModifiedDate":"2016-09-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":" addressBookOptional \u003d storage.readAddressBook();","lastModifiedDate":"2016-09-25"},{"lineNumber":82,"author":{"gitId":"-"},"content":" if (!addressBookOptional.isPresent()) {","lastModifiedDate":"2016-09-24"},{"lineNumber":83,"author":{"gitId":"-"},"content":" logger.info(\"Creating a new data file \" + storage.getAddressBookFilePath()","lastModifiedDate":"2023-05-15"},{"lineNumber":84,"author":{"gitId":"-"},"content":" + \" populated with a sample AddressBook.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":86,"author":{"gitId":"-"},"content":" initialData \u003d addressBookOptional.orElseGet(SampleDataUtil::getSampleAddressBook);","lastModifiedDate":"2016-12-20"},{"lineNumber":87,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14"},{"lineNumber":88,"author":{"gitId":"-"},"content":" logger.warning(\"Data file at \" + storage.getAddressBookFilePath() + \" could not be loaded.\"","lastModifiedDate":"2023-06-15"},{"lineNumber":89,"author":{"gitId":"-"},"content":" + \" Will be starting with an empty AddressBook.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":90,"author":{"gitId":"-"},"content":" initialData \u003d new AddressBook();","lastModifiedDate":"2016-09-24"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":93,"author":{"gitId":"-"},"content":" return new ModelManager(initialData, userPrefs);","lastModifiedDate":"2016-09-25"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":96,"author":{"gitId":"-"},"content":" private void initLogging(Config config) {","lastModifiedDate":"2016-09-24"},{"lineNumber":97,"author":{"gitId":"-"},"content":" LogsCenter.init(config);","lastModifiedDate":"2016-09-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":100,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * Returns a {@code Config} using the file at {@code configFilePath}. \u003cbr\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * The default file path {@code Config#DEFAULT_CONFIG_FILE} will be used instead","lastModifiedDate":"2017-08-16"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * if {@code configFilePath} is null.","lastModifiedDate":"2017-08-16"},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":105,"author":{"gitId":"-"},"content":" protected Config initConfig(Path configFilePath) {","lastModifiedDate":"2018-04-21"},{"lineNumber":106,"author":{"gitId":"-"},"content":" Config initializedConfig;","lastModifiedDate":"2016-09-24"},{"lineNumber":107,"author":{"gitId":"-"},"content":" Path configFilePathUsed;","lastModifiedDate":"2018-04-21"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":109,"author":{"gitId":"-"},"content":" configFilePathUsed \u003d Config.DEFAULT_CONFIG_FILE;","lastModifiedDate":"2016-09-24"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":111,"author":{"gitId":"-"},"content":" if (configFilePath !\u003d null) {","lastModifiedDate":"2016-09-24"},{"lineNumber":112,"author":{"gitId":"-"},"content":" logger.info(\"Custom Config file specified \" + configFilePath);","lastModifiedDate":"2016-09-24"},{"lineNumber":113,"author":{"gitId":"-"},"content":" configFilePathUsed \u003d configFilePath;","lastModifiedDate":"2016-09-24"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":" logger.info(\"Using config file : \" + configFilePathUsed);","lastModifiedDate":"2016-09-24"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":118,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":119,"author":{"gitId":"-"},"content":" Optional\u003cConfig\u003e configOptional \u003d ConfigUtil.readConfig(configFilePathUsed);","lastModifiedDate":"2016-09-24"},{"lineNumber":120,"author":{"gitId":"-"},"content":" if (!configOptional.isPresent()) {","lastModifiedDate":"2023-01-03"},{"lineNumber":121,"author":{"gitId":"-"},"content":" logger.info(\"Creating new config file \" + configFilePathUsed);","lastModifiedDate":"2023-05-15"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-01-03"},{"lineNumber":123,"author":{"gitId":"-"},"content":" initializedConfig \u003d configOptional.orElse(new Config());","lastModifiedDate":"2016-09-24"},{"lineNumber":124,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":" logger.warning(\"Config file at \" + configFilePathUsed + \" could not be loaded.\"","lastModifiedDate":"2023-06-15"},{"lineNumber":126,"author":{"gitId":"-"},"content":" + \" Using default config properties.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":127,"author":{"gitId":"-"},"content":" initializedConfig \u003d new Config();","lastModifiedDate":"2016-09-24"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":130,"author":{"gitId":"-"},"content":" //Update config file in case it was missing to begin with or there are new/unused fields","lastModifiedDate":"2016-09-24"},{"lineNumber":131,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":132,"author":{"gitId":"-"},"content":" ConfigUtil.saveConfig(initializedConfig, configFilePathUsed);","lastModifiedDate":"2016-09-24"},{"lineNumber":133,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24"},{"lineNumber":134,"author":{"gitId":"-"},"content":" logger.warning(\"Failed to save config file : \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":136,"author":{"gitId":"-"},"content":" return initializedConfig;","lastModifiedDate":"2016-09-24"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":140,"author":{"gitId":"-"},"content":" * Returns a {@code UserPrefs} using the file at {@code storage}\u0027s user prefs file path,","lastModifiedDate":"2017-08-16"},{"lineNumber":141,"author":{"gitId":"-"},"content":" * or a new {@code UserPrefs} with default configuration if errors occur when","lastModifiedDate":"2017-08-16"},{"lineNumber":142,"author":{"gitId":"-"},"content":" * reading from the file.","lastModifiedDate":"2017-08-16"},{"lineNumber":143,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":144,"author":{"gitId":"-"},"content":" protected UserPrefs initPrefs(UserPrefsStorage storage) {","lastModifiedDate":"2017-02-25"},{"lineNumber":145,"author":{"gitId":"-"},"content":" Path prefsFilePath \u003d storage.getUserPrefsFilePath();","lastModifiedDate":"2018-04-21"},{"lineNumber":146,"author":{"gitId":"-"},"content":" logger.info(\"Using preference file : \" + prefsFilePath);","lastModifiedDate":"2023-05-15"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":148,"author":{"gitId":"-"},"content":" UserPrefs initializedPrefs;","lastModifiedDate":"2016-09-24"},{"lineNumber":149,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":150,"author":{"gitId":"-"},"content":" Optional\u003cUserPrefs\u003e prefsOptional \u003d storage.readUserPrefs();","lastModifiedDate":"2016-09-25"},{"lineNumber":151,"author":{"gitId":"-"},"content":" if (!prefsOptional.isPresent()) {","lastModifiedDate":"2023-01-03"},{"lineNumber":152,"author":{"gitId":"-"},"content":" logger.info(\"Creating new preference file \" + prefsFilePath);","lastModifiedDate":"2023-05-15"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-01-03"},{"lineNumber":154,"author":{"gitId":"-"},"content":" initializedPrefs \u003d prefsOptional.orElse(new UserPrefs());","lastModifiedDate":"2016-09-24"},{"lineNumber":155,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14"},{"lineNumber":156,"author":{"gitId":"-"},"content":" logger.warning(\"Preference file at \" + prefsFilePath + \" could not be loaded.\"","lastModifiedDate":"2023-06-15"},{"lineNumber":157,"author":{"gitId":"-"},"content":" + \" Using default preferences.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":158,"author":{"gitId":"-"},"content":" initializedPrefs \u003d new UserPrefs();","lastModifiedDate":"2016-09-24"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":" //Update prefs file in case it was missing to begin with or there are new/unused fields","lastModifiedDate":"2016-09-24"},{"lineNumber":162,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":163,"author":{"gitId":"-"},"content":" storage.saveUserPrefs(initializedPrefs);","lastModifiedDate":"2016-09-25"},{"lineNumber":164,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24"},{"lineNumber":165,"author":{"gitId":"-"},"content":" logger.warning(\"Failed to save config file : \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24"},{"lineNumber":166,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":168,"author":{"gitId":"modembcc"},"content":" return new UserPrefs();","lastModifiedDate":"2024-03-22"},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":171,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":172,"author":{"gitId":"-"},"content":" public void start(Stage primaryStage) {","lastModifiedDate":"2016-08-08"},{"lineNumber":173,"author":{"gitId":"-"},"content":" logger.info(\"Starting AddressBook \" + MainApp.VERSION);","lastModifiedDate":"2016-09-29"},{"lineNumber":174,"author":{"gitId":"-"},"content":" ui.start(primaryStage);","lastModifiedDate":"2016-09-25"},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":177,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":178,"author":{"gitId":"-"},"content":" public void stop() {","lastModifiedDate":"2016-08-08"},{"lineNumber":179,"author":{"gitId":"-"},"content":" logger.info(\"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d [ Stopping Address Book ] \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\");","lastModifiedDate":"2016-09-29"},{"lineNumber":180,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":181,"author":{"gitId":"-"},"content":" storage.saveUserPrefs(model.getUserPrefs());","lastModifiedDate":"2018-12-06"},{"lineNumber":182,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24"},{"lineNumber":183,"author":{"gitId":"-"},"content":" logger.severe(\"Failed to save preferences \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24"},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":185,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26"},{"lineNumber":186,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"modembcc":1,"-":185}},{"path":"src/main/java/seedu/address/commons/core/GuiSettings.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.commons.core;","lastModifiedDate":"2016-09-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.awt.Point;","lastModifiedDate":"2017-01-18"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.io.Serializable;","lastModifiedDate":"2016-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2016-09-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * A Serializable class that contains the GUI settings.","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Guarantees: immutable.","lastModifiedDate":"2018-11-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class GuiSettings implements Serializable {","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"modembcc"},"content":" private static final double DEFAULT_HEIGHT \u003d 640;","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"modembcc"},"content":" private static final double DEFAULT_WIDTH \u003d 1020;","lastModifiedDate":"2024-03-22"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private final double windowWidth;","lastModifiedDate":"2018-11-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private final double windowHeight;","lastModifiedDate":"2018-11-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final Point windowCoordinates;","lastModifiedDate":"2018-11-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Constructs a {@code GuiSettings} with the default height, width and position.","lastModifiedDate":"2020-05-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public GuiSettings() {","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" windowWidth \u003d DEFAULT_WIDTH;","lastModifiedDate":"2018-08-14"},{"lineNumber":27,"author":{"gitId":"-"},"content":" windowHeight \u003d DEFAULT_HEIGHT;","lastModifiedDate":"2018-08-14"},{"lineNumber":28,"author":{"gitId":"-"},"content":" windowCoordinates \u003d null; // null represent no coordinates","lastModifiedDate":"2018-08-14"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Constructs a {@code GuiSettings} with the specified height, width and position.","lastModifiedDate":"2020-05-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public GuiSettings(double windowWidth, double windowHeight, int xPosition, int yPosition) {","lastModifiedDate":"2018-11-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.windowWidth \u003d windowWidth;","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.windowHeight \u003d windowHeight;","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" windowCoordinates \u003d new Point(xPosition, yPosition);","lastModifiedDate":"2018-08-14"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public double getWindowWidth() {","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" return windowWidth;","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public double getWindowHeight() {","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" return windowHeight;","lastModifiedDate":"2016-08-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public Point getWindowCoordinates() {","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" return windowCoordinates !\u003d null ? new Point(windowCoordinates) : null;","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2016-09-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2016-09-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" if (!(other instanceof GuiSettings)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2016-09-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" GuiSettings otherGuiSettings \u003d (GuiSettings) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return windowWidth \u003d\u003d otherGuiSettings.windowWidth","lastModifiedDate":"2023-07-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" \u0026\u0026 windowHeight \u003d\u003d otherGuiSettings.windowHeight","lastModifiedDate":"2023-07-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(windowCoordinates, otherGuiSettings.windowCoordinates);","lastModifiedDate":"2023-07-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-24"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return Objects.hash(windowWidth, windowHeight, windowCoordinates);","lastModifiedDate":"2016-09-24"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-09-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" .add(\"windowWidth\", windowWidth)","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":" .add(\"windowHeight\", windowHeight)","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" .add(\"windowCoordinates\", windowCoordinates)","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"modembcc":2,"-":80}},{"path":"src/main/java/seedu/address/logic/Logic.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-03"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * API of the Logic component","lastModifiedDate":"2016-09-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public interface Logic {","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2016-09-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * @param commandText The command as entered by the user.","lastModifiedDate":"2016-09-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * @return the result of the command execution.","lastModifiedDate":"2016-09-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2017-02-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * @throws ParseException If an error occurs during parsing.","lastModifiedDate":"2017-03-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" CommandResult execute(String commandText) throws CommandException, ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Returns the AddressBook.","lastModifiedDate":"2018-12-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * @see seedu.address.model.Model#getAddressBook()","lastModifiedDate":"2018-12-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2018-12-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":" /** Returns an unmodifiable view of the filtered list of persons */","lastModifiedDate":"2017-09-01"},{"lineNumber":34,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-26"},{"lineNumber":36,"author":{"gitId":"modembcc"},"content":" /** Returns an unmodifiable view of the current showing project (list of one entity) */","lastModifiedDate":"2024-03-22"},{"lineNumber":37,"author":{"gitId":"modembcc"},"content":" ObservableList\u003cPerson\u003e getCurrentProject();","lastModifiedDate":"2024-03-22"},{"lineNumber":38,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * Set the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"modembcc":3,"-":50}},{"path":"src/main/java/seedu/address/logic/LogicManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2016-09-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.AddressBookParser;","lastModifiedDate":"2017-07-07"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.storage.Storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * The main LogicManager of the app.","lastModifiedDate":"2016-09-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class LogicManager implements Logic {","lastModifiedDate":"2018-12-09"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_ERROR_FORMAT \u003d \"Could not save data due to the following error: %s\";","lastModifiedDate":"2023-06-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_PERMISSION_ERROR_FORMAT \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \"Could not save data to file %s due to insufficient permissions to write to the file or the folder.\";","lastModifiedDate":"2023-06-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(LogicManager.class);","lastModifiedDate":"2016-09-29"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final Model model;","lastModifiedDate":"2016-09-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final Storage storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final AddressBookParser addressBookParser;","lastModifiedDate":"2017-07-07"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Constructs a {@code LogicManager} with the given {@code Model} and {@code Storage}.","lastModifiedDate":"2020-05-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public LogicManager(Model model, Storage storage) {","lastModifiedDate":"2018-12-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.model \u003d model;","lastModifiedDate":"2016-09-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.storage \u003d storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":" addressBookParser \u003d new AddressBookParser();","lastModifiedDate":"2018-01-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public CommandResult execute(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":47,"author":{"gitId":"-"},"content":" logger.info(\"----------------[USER COMMAND][\" + commandText + \"]\");","lastModifiedDate":"2016-09-29"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":" CommandResult commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":" Command command \u003d addressBookParser.parseCommand(commandText);","lastModifiedDate":"2017-07-07"},{"lineNumber":51,"author":{"gitId":"-"},"content":" commandResult \u003d command.execute(model);","lastModifiedDate":"2019-01-25"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":" storage.saveAddressBook(model.getAddressBook());","lastModifiedDate":"2018-12-09"},{"lineNumber":55,"author":{"gitId":"-"},"content":" } catch (AccessDeniedException e) {","lastModifiedDate":"2023-06-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_PERMISSION_ERROR_FORMAT, e.getMessage()), e);","lastModifiedDate":"2023-06-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2018-12-09"},{"lineNumber":58,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_ERROR_FORMAT, ioe.getMessage()), ioe);","lastModifiedDate":"2023-06-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-03"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2018-12-03"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return model.getAddressBook();","lastModifiedDate":"2018-12-03"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-03"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return model.getFilteredPersonList();","lastModifiedDate":"2016-09-25"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-29"},{"lineNumber":74,"author":{"gitId":"modembcc"},"content":" @Override","lastModifiedDate":"2024-03-22"},{"lineNumber":75,"author":{"gitId":"modembcc"},"content":" public ObservableList\u003cPerson\u003e getCurrentProject() {","lastModifiedDate":"2024-03-22"},{"lineNumber":76,"author":{"gitId":"modembcc"},"content":" return model.getCurrentProject();","lastModifiedDate":"2024-03-22"},{"lineNumber":77,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":78,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":" return model.getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":" return model.getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":" model.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"modembcc":5,"-":88}},{"path":"src/main/java/seedu/address/logic/Messages.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2023-07-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-07-14"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-07-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2023-07-14"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"ananya21"},"content":"import seedu.address.model.project.Task;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Container for user visible messages.","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class Messages {","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2016-09-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_PERSON_DISPLAYED_INDEX \u003d \"The person index provided is invalid\";","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String MESSAGE_PERSONS_LISTED_OVERVIEW \u003d \"%1$d persons listed!\";","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2023-07-14"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-07-14"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2023-07-14"},{"lineNumber":27,"author":{"gitId":"-"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2023-07-14"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":29,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-07-14"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Formats the {@code person} for display to the user.","lastModifiedDate":"2019-02-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static String format(Person person) {","lastModifiedDate":"2019-02-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23"},{"lineNumber":40,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" builder.append(person.getName());","lastModifiedDate":"2024-02-29"},{"lineNumber":41,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"modembcc"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"modembcc"},"content":" * Formats the {@code task} for display to the user.","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"modembcc"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"ananya21"},"content":" public static String format(Task task) {","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"ananya21"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"ananya21"},"content":" builder.append(task.getName());","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"modembcc":3,"Lin-Shuang-Shuang":1,"-":45,"ananya21":4}},{"path":"src/main/java/seedu/address/logic/commands/AddProjectCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-02-29"},{"lineNumber":2,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":3,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-02-29"},{"lineNumber":4,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":5,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-02-29"},{"lineNumber":6,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-02-29"},{"lineNumber":7,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-02-29"},{"lineNumber":8,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-02-29"},{"lineNumber":9,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-02-29"},{"lineNumber":10,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":11,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"/**","lastModifiedDate":"2024-02-29"},{"lineNumber":12,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" * Adds a person to the address book.","lastModifiedDate":"2024-02-29"},{"lineNumber":13,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" */","lastModifiedDate":"2024-02-29"},{"lineNumber":14,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"public class AddProjectCommand extends Command {","lastModifiedDate":"2024-02-29"},{"lineNumber":15,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":16,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public static final String COMMAND_WORD \u003d \"add project\";","lastModifiedDate":"2024-02-29"},{"lineNumber":17,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":18,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a person to the address book. \"","lastModifiedDate":"2024-02-29"},{"lineNumber":19,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" + \"Parameters: \"","lastModifiedDate":"2024-02-29"},{"lineNumber":20,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" + \"PROJECT_NAME \";","lastModifiedDate":"2024-02-29"},{"lineNumber":21,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":22,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public static final String MESSAGE_SUCCESS \u003d \"%1$s has been added to the project list.\";","lastModifiedDate":"2024-02-29"},{"lineNumber":23,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"Project %1$s already exists\";","lastModifiedDate":"2024-02-29"},{"lineNumber":24,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":25,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" private final Person toAdd;","lastModifiedDate":"2024-02-29"},{"lineNumber":26,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":27,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" /**","lastModifiedDate":"2024-02-29"},{"lineNumber":28,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2024-02-29"},{"lineNumber":29,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" */","lastModifiedDate":"2024-02-29"},{"lineNumber":30,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public AddProjectCommand(Person person) {","lastModifiedDate":"2024-02-29"},{"lineNumber":31,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" requireNonNull(person);","lastModifiedDate":"2024-02-29"},{"lineNumber":32,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" toAdd \u003d person;","lastModifiedDate":"2024-02-29"},{"lineNumber":33,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-02-29"},{"lineNumber":34,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":35,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" @Override","lastModifiedDate":"2024-02-29"},{"lineNumber":36,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-02-29"},{"lineNumber":37,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" requireNonNull(model);","lastModifiedDate":"2024-02-29"},{"lineNumber":38,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":39,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" if (model.hasPerson(toAdd)) {","lastModifiedDate":"2024-02-29"},{"lineNumber":40,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" throw new CommandException(String.format(MESSAGE_DUPLICATE_PERSON, Messages.format(toAdd)));","lastModifiedDate":"2024-02-29"},{"lineNumber":41,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-02-29"},{"lineNumber":42,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":43,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" model.addPerson(toAdd);","lastModifiedDate":"2024-02-29"},{"lineNumber":44,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2024-02-29"},{"lineNumber":45,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-02-29"},{"lineNumber":46,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":47,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" @Override","lastModifiedDate":"2024-02-29"},{"lineNumber":48,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-02-29"},{"lineNumber":49,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-02-29"},{"lineNumber":50,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return true;","lastModifiedDate":"2024-02-29"},{"lineNumber":51,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-02-29"},{"lineNumber":52,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":53,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-02-29"},{"lineNumber":54,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" if (!(other instanceof AddProjectCommand)) {","lastModifiedDate":"2024-02-29"},{"lineNumber":55,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return false;","lastModifiedDate":"2024-02-29"},{"lineNumber":56,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-02-29"},{"lineNumber":57,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":58,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" AddProjectCommand otherAddProjectCommand \u003d (AddProjectCommand) other;","lastModifiedDate":"2024-02-29"},{"lineNumber":59,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return toAdd.equals(otherAddProjectCommand.toAdd);","lastModifiedDate":"2024-02-29"},{"lineNumber":60,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-02-29"},{"lineNumber":61,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":62,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" @Override","lastModifiedDate":"2024-02-29"},{"lineNumber":63,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public String toString() {","lastModifiedDate":"2024-02-29"},{"lineNumber":64,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-02-29"},{"lineNumber":65,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2024-02-29"},{"lineNumber":66,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" .toString();","lastModifiedDate":"2024-02-29"},{"lineNumber":67,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-02-29"},{"lineNumber":68,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"}","lastModifiedDate":"2024-02-29"}],"authorContributionMap":{"Lin-Shuang-Shuang":68}},{"path":"src/main/java/seedu/address/logic/commands/AddTaskCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ananya21"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-15"},{"lineNumber":2,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":3,"author":{"gitId":"ananya21"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-15"},{"lineNumber":4,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":5,"author":{"gitId":"ananya21"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-15"},{"lineNumber":6,"author":{"gitId":"ananya21"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-15"},{"lineNumber":7,"author":{"gitId":"modembcc"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"ananya21"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-15"},{"lineNumber":9,"author":{"gitId":"ananya21"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-15"},{"lineNumber":10,"author":{"gitId":"ananya21"},"content":"import seedu.address.model.project.Task;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":12,"author":{"gitId":"ananya21"},"content":"/**","lastModifiedDate":"2024-03-15"},{"lineNumber":13,"author":{"gitId":"ananya21"},"content":" * Adds a task to a project.","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"ananya21"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":15,"author":{"gitId":"ananya21"},"content":"public class AddTaskCommand extends Command {","lastModifiedDate":"2024-03-15"},{"lineNumber":16,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":17,"author":{"gitId":"ananya21"},"content":" public static final String COMMAND_WORD \u003d \"add task\";","lastModifiedDate":"2024-03-15"},{"lineNumber":18,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":19,"author":{"gitId":"ananya21"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a task in a project \"","lastModifiedDate":"2024-03-15"},{"lineNumber":20,"author":{"gitId":"ananya21"},"content":" + \"Parameters: \"","lastModifiedDate":"2024-03-15"},{"lineNumber":21,"author":{"gitId":"ananya21"},"content":" + \"PROJECT_NAME, TASK_NAME\";","lastModifiedDate":"2024-03-15"},{"lineNumber":22,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":23,"author":{"gitId":"ananya21"},"content":" public static final String MESSAGE_SUCCESS \u003d \"%1$s has been added to the project %2$s.\";","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":25,"author":{"gitId":"modembcc"},"content":" public static final String MESSAGE_PROJECT_NOT_FOUND \u003d \"Project %2$s not found: \"","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"modembcc"},"content":" + \"Please make sure the project exists.\";","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"ananya21"},"content":" public static final String MESSAGE_DUPLICATE_TASK \u003d \"Task %1$s already exists in project %2$s\";","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":29,"author":{"gitId":"ananya21"},"content":" private final Task toAdd;","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"ananya21"},"content":" private final Person taskProject;","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":32,"author":{"gitId":"ananya21"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":33,"author":{"gitId":"ananya21"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2024-03-15"},{"lineNumber":34,"author":{"gitId":"ananya21"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":35,"author":{"gitId":"ananya21"},"content":" public AddTaskCommand(Task task, Person taskProject) {","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"ananya21"},"content":" requireNonNull(task);","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"ananya21"},"content":" requireNonNull(taskProject);","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"ananya21"},"content":" this.toAdd \u003d task;","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"ananya21"},"content":" this.taskProject \u003d taskProject;","lastModifiedDate":"2024-03-15"},{"lineNumber":40,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":41,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":42,"author":{"gitId":"ananya21"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":43,"author":{"gitId":"modembcc"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"modembcc"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"ananya21"},"content":" if (!model.hasPerson(taskProject)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"modembcc"},"content":" throw new CommandException(String.format(","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"modembcc"},"content":" MESSAGE_PROJECT_NOT_FOUND,","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"modembcc"},"content":" Messages.format(toAdd),","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"modembcc"},"content":" Messages.format(taskProject)));","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"ThitipatC"},"content":" Person combineTask \u003d model.findPerson(taskProject.getName());","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"ThitipatC"},"content":" combineTask.addTask(toAdd);","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"ThitipatC"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd), Messages.format(combineTask)));","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":57,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":58,"author":{"gitId":"ananya21"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":59,"author":{"gitId":"ananya21"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-15"},{"lineNumber":60,"author":{"gitId":"ananya21"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-15"},{"lineNumber":61,"author":{"gitId":"ananya21"},"content":" return true;","lastModifiedDate":"2024-03-15"},{"lineNumber":62,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":63,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":64,"author":{"gitId":"ananya21"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-15"},{"lineNumber":65,"author":{"gitId":"ananya21"},"content":" if (!(other instanceof AddTaskCommand)) {","lastModifiedDate":"2024-03-15"},{"lineNumber":66,"author":{"gitId":"ananya21"},"content":" return false;","lastModifiedDate":"2024-03-15"},{"lineNumber":67,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":68,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":69,"author":{"gitId":"ananya21"},"content":" AddTaskCommand otherAddTaskCommand \u003d (AddTaskCommand) other;","lastModifiedDate":"2024-03-15"},{"lineNumber":70,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return toAdd.equals(otherAddTaskCommand.toAdd)","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" \u0026\u0026 taskProject.equals(otherAddTaskCommand.taskProject);","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":73,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":74,"author":{"gitId":"ananya21"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":75,"author":{"gitId":"ananya21"},"content":" public String toString() {","lastModifiedDate":"2024-03-15"},{"lineNumber":76,"author":{"gitId":"ananya21"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-15"},{"lineNumber":77,"author":{"gitId":"ananya21"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2024-03-15"},{"lineNumber":78,"author":{"gitId":"ananya21"},"content":" .toString();","lastModifiedDate":"2024-03-15"},{"lineNumber":79,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":80,"author":{"gitId":"ananya21"},"content":"}","lastModifiedDate":"2024-03-15"}],"authorContributionMap":{"modembcc":10,"ThitipatC":3,"Lin-Shuang-Shuang":2,"ananya21":65}},{"path":"src/main/java/seedu/address/logic/commands/AssignPersonCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ananya21"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"ananya21"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"ananya21"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"ananya21"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"ananya21"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"ananya21"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"ananya21"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"ananya21"},"content":"import seedu.address.model.project.Member;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"ananya21"},"content":"import seedu.address.model.project.Task;","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"ananya21"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"ananya21"},"content":" * Adds a task to a project.","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"ananya21"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"ananya21"},"content":"public class AssignPersonCommand extends Command {","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"modembcc"},"content":" public static final String COMMAND_WORD \u003d \"add person\";","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"ananya21"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": assigns a person to a task in a project \"","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"ananya21"},"content":" + \"Parameters: \"","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"ananya21"},"content":" + \"TASK_NAME, PERSON_NAME, PROJECT_NAME\";","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"ananya21"},"content":" public static final String MESSAGE_SUCCESS \u003d \"The person %1$s has been assigned to the following task %2$s.\";","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"ananya21"},"content":" private final Task task;","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"ananya21"},"content":" private final Person project;","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"ananya21"},"content":" private final Member member;","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"ananya21"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"ananya21"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"ananya21"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"ananya21"},"content":" public AssignPersonCommand(String member, Task task, Person project) {","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"ananya21"},"content":" requireNonNull(task);","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"ananya21"},"content":" this.task \u003d task;","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"ananya21"},"content":" this.project \u003d project;","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"ananya21"},"content":" this.member \u003d new Member(member);","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"ananya21"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"ananya21"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"ananya21"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"ananya21"},"content":" Person projectAssign \u003d model.findPerson(project.getName());","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"ananya21"},"content":" Task assignTask \u003d projectAssign.findTask(task.getName());","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"ananya21"},"content":" assignTask.assignPerson(this.member);","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"ananya21"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, member, Messages.format(task)));","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"ananya21"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"ananya21"},"content":" public String toString() {","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"ananya21"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"ananya21"},"content":" .add(\"set Member\", member)","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"ananya21"},"content":" .toString();","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"ananya21"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"modembcc":1,"ananya21":58}},{"path":"src/main/java/seedu/address/logic/commands/DeleteProjectCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-09-01"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":11,"author":{"gitId":"modembcc"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-15"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"modembcc"},"content":" * Deletes a project identified using it\u0027s name from the project list.","lastModifiedDate":"2024-03-15"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"modembcc"},"content":"public class DeleteProjectCommand extends Command {","lastModifiedDate":"2024-03-15"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"modembcc"},"content":" public static final String COMMAND_WORD \u003d \"delete project\";","lastModifiedDate":"2024-03-15"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"modembcc"},"content":" + \": Deletes the specified project. \"","lastModifiedDate":"2024-03-15"},{"lineNumber":23,"author":{"gitId":"modembcc"},"content":" + \"Parameters: PROJECT_NAME\\n\"","lastModifiedDate":"2024-03-15"},{"lineNumber":24,"author":{"gitId":"modembcc"},"content":" + \"Example: \" + COMMAND_WORD + \" CS2103\";","lastModifiedDate":"2024-03-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"modembcc"},"content":" public static final String MESSAGE_DELETE_PROJECT_SUCCESS \u003d \"[%1$s] has been deleted from the project list.\";","lastModifiedDate":"2024-03-15"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"modembcc"},"content":" private final String targetName;","lastModifiedDate":"2024-03-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"modembcc"},"content":" public DeleteProjectCommand(String targetName) {","lastModifiedDate":"2024-03-15"},{"lineNumber":31,"author":{"gitId":"modembcc"},"content":" this.targetName \u003d targetName;","lastModifiedDate":"2024-03-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":39,"author":{"gitId":"modembcc"},"content":" Person targetProject \u003d new Person(new Name(targetName));","lastModifiedDate":"2024-03-15"},{"lineNumber":40,"author":{"gitId":"modembcc"},"content":" Person projectToDelete \u003d null;","lastModifiedDate":"2024-03-15"},{"lineNumber":41,"author":{"gitId":"modembcc"},"content":" for (Person person : lastShownList) {","lastModifiedDate":"2024-03-15"},{"lineNumber":42,"author":{"gitId":"modembcc"},"content":" if (person.isSamePerson(targetProject)) {","lastModifiedDate":"2024-03-15"},{"lineNumber":43,"author":{"gitId":"modembcc"},"content":" projectToDelete \u003d person;","lastModifiedDate":"2024-03-15"},{"lineNumber":44,"author":{"gitId":"modembcc"},"content":" break;","lastModifiedDate":"2024-03-15"},{"lineNumber":45,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":46,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":47,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":48,"author":{"gitId":"modembcc"},"content":" if (projectToDelete \u003d\u003d null) {","lastModifiedDate":"2024-03-15"},{"lineNumber":49,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":52,"author":{"gitId":"modembcc"},"content":" model.deletePerson(projectToDelete);","lastModifiedDate":"2024-03-15"},{"lineNumber":53,"author":{"gitId":"modembcc"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_PROJECT_SUCCESS, Messages.format(projectToDelete)));","lastModifiedDate":"2024-03-15"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":63,"author":{"gitId":"modembcc"},"content":" if (!(other instanceof DeleteProjectCommand)) {","lastModifiedDate":"2024-03-15"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":67,"author":{"gitId":"modembcc"},"content":" DeleteProjectCommand otherDeleteCommand \u003d (DeleteProjectCommand) other;","lastModifiedDate":"2024-03-15"},{"lineNumber":68,"author":{"gitId":"modembcc"},"content":" return targetName.equals(otherDeleteCommand.targetName);","lastModifiedDate":"2024-03-15"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":74,"author":{"gitId":"modembcc"},"content":" .add(\"targetName\", targetName)","lastModifiedDate":"2024-03-15"},{"lineNumber":75,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"modembcc":27,"-":50}},{"path":"src/main/java/seedu/address/logic/commands/DeleteTaskCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ThitipatC"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"ThitipatC"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"ThitipatC"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"ThitipatC"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"ThitipatC"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"ThitipatC"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"modembcc"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"ThitipatC"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"ThitipatC"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"ThitipatC"},"content":"import seedu.address.model.project.Task;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"ThitipatC"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"ThitipatC"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"ThitipatC"},"content":" * Adds a task to a project.","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"ThitipatC"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"ThitipatC"},"content":"public class DeleteTaskCommand extends Command {","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"ThitipatC"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"ThitipatC"},"content":" public static final String COMMAND_WORD \u003d \"delete task\";","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"ThitipatC"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"ThitipatC"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Delete a task in a project \"","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"ThitipatC"},"content":" + \"Parameters: \"","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"ThitipatC"},"content":" + \"PROJECT_NAME, TASK_NAME\";","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"ThitipatC"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"ThitipatC"},"content":" public static final String MESSAGE_SUCCESS \u003d \"%1$s has been deleted from %2$s\";","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"ThitipatC"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"modembcc"},"content":" public static final String MESSAGE_PROJECT_NOT_FOUND \u003d \"Project %2$s not found: \"","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"modembcc"},"content":" + \"Please make sure the project exists.\";","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"modembcc"},"content":" public static final String MESSAGE_TASK_NOT_FOUND \u003d \"Task %1$s not found: \"","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"modembcc"},"content":" + \"Please make sure the task exists in project %2$s\";","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"ThitipatC"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"ThitipatC"},"content":" private final Task toDelete;","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"ThitipatC"},"content":" private final Person taskProject;","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"ThitipatC"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"ThitipatC"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"ThitipatC"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"ThitipatC"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"ThitipatC"},"content":" public DeleteTaskCommand(Task task, Person taskProject) {","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"ThitipatC"},"content":" requireNonNull(task);","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"ThitipatC"},"content":" requireNonNull(taskProject);","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"ThitipatC"},"content":" this.toDelete \u003d task;","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"ThitipatC"},"content":" this.taskProject \u003d taskProject;","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"ThitipatC"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"ThitipatC"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"ThitipatC"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"ThitipatC"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"ThitipatC"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"ThitipatC"},"content":" if (!model.hasPerson(taskProject)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"modembcc"},"content":" throw new CommandException(String.format(","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"modembcc"},"content":" MESSAGE_PROJECT_NOT_FOUND,","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"modembcc"},"content":" Messages.format(toDelete),","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"modembcc"},"content":" Messages.format(taskProject)));","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"ThitipatC"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"modembcc"},"content":" Person combineTask \u003d model.findPerson(taskProject.getName());","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"modembcc"},"content":" if (!combineTask.hasTask(toDelete)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"modembcc"},"content":" throw new CommandException(String.format(","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"modembcc"},"content":" MESSAGE_TASK_NOT_FOUND,","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"modembcc"},"content":" Messages.format(toDelete),","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"modembcc"},"content":" Messages.format(taskProject)));","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"ThitipatC"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"ThitipatC"},"content":" combineTask.removeTask(toDelete);","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"modembcc"},"content":" return new CommandResult(String.format(","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"modembcc"},"content":" MESSAGE_SUCCESS,","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"modembcc"},"content":" Messages.format(toDelete),","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"modembcc"},"content":" Messages.format(taskProject)));","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"ThitipatC"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"ThitipatC"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"ThitipatC"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"ThitipatC"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"ThitipatC"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"ThitipatC"},"content":" return true;","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"ThitipatC"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"ThitipatC"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"ThitipatC"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"ThitipatC"},"content":" if (!(other instanceof DeleteTaskCommand)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"ThitipatC"},"content":" return false;","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"ThitipatC"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"ThitipatC"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"ThitipatC"},"content":" DeleteTaskCommand otherDeleteTaskCommand \u003d (DeleteTaskCommand) other;","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return toDelete.equals(otherDeleteTaskCommand.toDelete)","lastModifiedDate":"2024-03-21"},{"lineNumber":79,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" \u0026\u0026 taskProject.equals(otherDeleteTaskCommand.taskProject);","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"ThitipatC"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":81,"author":{"gitId":"ThitipatC"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":82,"author":{"gitId":"ThitipatC"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":83,"author":{"gitId":"ThitipatC"},"content":" public String toString() {","lastModifiedDate":"2024-03-18"},{"lineNumber":84,"author":{"gitId":"ThitipatC"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-18"},{"lineNumber":85,"author":{"gitId":"ThitipatC"},"content":" .add(\"toDelete\", toDelete)","lastModifiedDate":"2024-03-18"},{"lineNumber":86,"author":{"gitId":"ThitipatC"},"content":" .toString();","lastModifiedDate":"2024-03-18"},{"lineNumber":87,"author":{"gitId":"ThitipatC"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":88,"author":{"gitId":"ThitipatC"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"modembcc":19,"ThitipatC":67,"Lin-Shuang-Shuang":2}},{"path":"src/main/java/seedu/address/logic/commands/EditCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-12-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-01-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-01-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2016-12-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-26"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":31,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Edits the details of an existing person in the address book.","lastModifiedDate":"2016-12-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":34,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2016-12-26"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the person identified \"","lastModifiedDate":"2016-12-26"},{"lineNumber":39,"author":{"gitId":"-"},"content":" + \"by the index number used in the displayed person list. \"","lastModifiedDate":"2018-04-01"},{"lineNumber":40,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26"},{"lineNumber":41,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2017-06-06"},{"lineNumber":42,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06"},{"lineNumber":43,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":44,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":45,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":46,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"91234567 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2017-05-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Person: %1$s\";","lastModifiedDate":"2016-12-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2016-12-26"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book.\";","lastModifiedDate":"2016-12-26"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2017-05-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":" private final EditPersonDescriptor editPersonDescriptor;","lastModifiedDate":"2016-12-26"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit","lastModifiedDate":"2017-05-25"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * @param editPersonDescriptor details to edit the person with","lastModifiedDate":"2016-12-26"},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public EditCommand(Index index, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2017-05-25"},{"lineNumber":63,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25"},{"lineNumber":64,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2017-05-15"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25"},{"lineNumber":67,"author":{"gitId":"-"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2016-12-26"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":72,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2018-04-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2018-04-19"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2018-08-07"},{"lineNumber":83,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":86,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":87,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":88,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson)));","lastModifiedDate":"2019-02-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":91,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2016-12-26"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2016-12-26"},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":95,"author":{"gitId":"-"},"content":" private static Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2018-01-10"},{"lineNumber":96,"author":{"gitId":"-"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2016-12-26"},{"lineNumber":97,"author":{"gitId":"-"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(personToEdit.getName());","lastModifiedDate":"2017-06-21"},{"lineNumber":98,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return new Person(updatedName);","lastModifiedDate":"2024-02-29"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":101,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08"},{"lineNumber":108,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08"},{"lineNumber":109,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":112,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":126,"author":{"gitId":"-"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2016-12-26"},{"lineNumber":127,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26"},{"lineNumber":128,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":129,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26"},{"lineNumber":130,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21"},{"lineNumber":131,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":132,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21"},{"lineNumber":133,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-06-21"},{"lineNumber":134,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":136,"author":{"gitId":"-"},"content":" public EditPersonDescriptor() {}","lastModifiedDate":"2016-12-26"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":138,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":139,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11"},{"lineNumber":140,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":141,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":142,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26"},{"lineNumber":143,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15"},{"lineNumber":144,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15"},{"lineNumber":145,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15"},{"lineNumber":146,"author":{"gitId":"-"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2018-01-15"},{"lineNumber":147,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11"},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":150,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":151,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26"},{"lineNumber":152,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":153,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26"},{"lineNumber":154,"author":{"gitId":"-"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, address, tags);","lastModifiedDate":"2018-08-14"},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":157,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21"},{"lineNumber":158,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":161,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26"},{"lineNumber":162,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21"},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":165,"author":{"gitId":"-"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2017-06-21"},{"lineNumber":166,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":167,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":169,"author":{"gitId":"-"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26"},{"lineNumber":170,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2017-06-21"},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":173,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2017-06-21"},{"lineNumber":174,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-06-21"},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":177,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26"},{"lineNumber":178,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21"},{"lineNumber":179,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":181,"author":{"gitId":"-"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2017-06-21"},{"lineNumber":182,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-06-21"},{"lineNumber":183,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":185,"author":{"gitId":"-"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2016-12-26"},{"lineNumber":186,"author":{"gitId":"-"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2017-06-21"},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":189,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":190,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2018-01-11"},{"lineNumber":191,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":192,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":193,"author":{"gitId":"-"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-06-21"},{"lineNumber":194,"author":{"gitId":"-"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2018-01-11"},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":197,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":198,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11"},{"lineNumber":199,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11"},{"lineNumber":200,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11"},{"lineNumber":201,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":202,"author":{"gitId":"-"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":203,"author":{"gitId":"-"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2018-01-11"},{"lineNumber":204,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":206,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05"},{"lineNumber":207,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05"},{"lineNumber":208,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05"},{"lineNumber":209,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05"},{"lineNumber":210,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":212,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05"},{"lineNumber":213,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05"},{"lineNumber":214,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05"},{"lineNumber":215,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":217,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":218,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":219,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":220,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":221,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(address, otherEditPersonDescriptor.address)","lastModifiedDate":"2023-07-13"},{"lineNumber":222,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(tags, otherEditPersonDescriptor.tags);","lastModifiedDate":"2023-07-13"},{"lineNumber":223,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":226,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":227,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":228,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":230,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":231,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":234,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":236,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26"}],"authorContributionMap":{"Lin-Shuang-Shuang":1,"-":235}},{"path":"src/main/java/seedu/address/logic/commands/SetDeadlineCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ananya21"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"ananya21"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"ananya21"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"ananya21"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"ananya21"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"ananya21"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"ananya21"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"ananya21"},"content":"import seedu.address.model.project.Task;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"ananya21"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"ananya21"},"content":" * Adds a task to a project.","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"ananya21"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"ananya21"},"content":"public class SetDeadlineCommand extends Command {","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"modembcc"},"content":" public static final String COMMAND_WORD \u003d \"add deadline\";","lastModifiedDate":"2024-03-22"},{"lineNumber":18,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"ananya21"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Sets the deadline to a task in a project \"","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"ananya21"},"content":" + \"Parameters: \"","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"ananya21"},"content":" + \"TASK_NAME, DEADLINE\";","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"ananya21"},"content":" public static final String MESSAGE_SUCCESS \u003d \"The task %1$s has been set with the following deadline %2$s.\";","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"ananya21"},"content":" public static final String MESSAGE_WRONG_FORMAT_DEADLINE \u003d \"The deadline %1s has been entered in the wrong format.\";","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"ananya21"},"content":" private final Task task;","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"ananya21"},"content":" private final String deadline;","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"ananya21"},"content":" private final Person project;","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"modembcc"},"content":" private final String datePattern \u003d \"\\\\b(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\\\b \\\\d{1,2} \\\\d{4}\\\\b\";","lastModifiedDate":"2024-03-22"},{"lineNumber":32,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"ananya21"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"ananya21"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"ananya21"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"ananya21"},"content":" public SetDeadlineCommand(String deadline, Task task, Person project) {","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"ananya21"},"content":" requireNonNull(task);","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"ananya21"},"content":" this.task \u003d task;","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"ananya21"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"ananya21"},"content":" this.project \u003d project;","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"ananya21"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"ananya21"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"ananya21"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"ananya21"},"content":" if (!deadline.matches(datePattern)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"ananya21"},"content":" throw new CommandException(String.format(MESSAGE_WRONG_FORMAT_DEADLINE, deadline));","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"ananya21"},"content":" Person deadlineProject \u003d model.findPerson(project.getName());","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"ananya21"},"content":" Task deadlineTask \u003d deadlineProject.findTask(task.getName());","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"ananya21"},"content":" deadlineTask.setDeadline(deadline);","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"ananya21"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(deadlineTask), deadline));","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"ananya21"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"ananya21"},"content":" public String toString() {","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"ananya21"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"ananya21"},"content":" .add(\"setDeadline\", deadline)","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"ananya21"},"content":" .toString();","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"ananya21"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"modembcc":2,"ananya21":63}},{"path":"src/main/java/seedu/address/logic/commands/SetStatusCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ananya21"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"ananya21"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"ananya21"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"ananya21"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"ananya21"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"ananya21"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"ananya21"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"ananya21"},"content":"import seedu.address.model.project.Task;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"ananya21"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"ananya21"},"content":" * Adds a task to a project.","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"ananya21"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"ananya21"},"content":"public class SetStatusCommand extends Command {","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"ananya21"},"content":" public static final String COMMAND_WORD \u003d \"set status\";","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"ananya21"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Sets the status of a task in a project \"","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"ananya21"},"content":" + \"Parameters: \"","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"ananya21"},"content":" + \"TASK_NAME, STATUS, PROJECT_NAME\";","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"ananya21"},"content":" public static final String MESSAGE_SUCCESS \u003d \"The task %1$s has the following status %2$s.\";","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"ananya21"},"content":" public static final String MESSAGE_WRONG_FORMAT_STATUS \u003d \"The status %1s has been entered in the wrong format.\";","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"ananya21"},"content":" private final Task task;","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"ananya21"},"content":" private final String status;","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"ananya21"},"content":" private final Person project;","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"ananya21"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"ananya21"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"ananya21"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"ananya21"},"content":" public SetStatusCommand(String status, Task task, Person project) {","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"ananya21"},"content":" requireNonNull(task);","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"ananya21"},"content":" requireNonNull(project);","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"ananya21"},"content":" requireNonNull(status);","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"ananya21"},"content":" this.task \u003d task;","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"ananya21"},"content":" this.status \u003d status;","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"ananya21"},"content":" this.project \u003d project;","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"ananya21"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"ananya21"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"ananya21"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"ananya21"},"content":" Person statusProject \u003d model.findPerson(project.getName());","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"ananya21"},"content":" Task statusTask \u003d statusProject.findTask(task.getName());","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"ananya21"},"content":" if (status.equals(\"complete\")) {","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"ananya21"},"content":" statusTask.setComplete();","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"ananya21"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(statusTask), status));","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"ananya21"},"content":" } else if (status.equals(\"incomplete\")) {","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"ananya21"},"content":" statusTask.setIncomplete();","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"ananya21"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(statusTask), status));","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"ananya21"},"content":" } else {","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"ananya21"},"content":" throw new CommandException(String.format(MESSAGE_WRONG_FORMAT_STATUS, status));","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"ananya21"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"ananya21"},"content":" public String toString() {","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"ananya21"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"ananya21"},"content":" .add(\"set status\", status)","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"ananya21"},"content":" .toString();","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"ananya21"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"ananya21":67}},{"path":"src/main/java/seedu/address/logic/commands/ShowProjectCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"modembcc"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":3,"author":{"gitId":"modembcc"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-22"},{"lineNumber":4,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":5,"author":{"gitId":"modembcc"},"content":"import java.util.List;","lastModifiedDate":"2024-03-22"},{"lineNumber":6,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":7,"author":{"gitId":"modembcc"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-22"},{"lineNumber":8,"author":{"gitId":"modembcc"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-22"},{"lineNumber":9,"author":{"gitId":"modembcc"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"modembcc"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"modembcc"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"modembcc"},"content":"import seedu.address.model.person.NameEqualsPredicate;","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"modembcc"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":15,"author":{"gitId":"modembcc"},"content":"/**","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"modembcc"},"content":" * Deletes a project identified using it\u0027s name from the project list.","lastModifiedDate":"2024-03-22"},{"lineNumber":17,"author":{"gitId":"modembcc"},"content":" */","lastModifiedDate":"2024-03-22"},{"lineNumber":18,"author":{"gitId":"modembcc"},"content":"public class ShowProjectCommand extends Command {","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":20,"author":{"gitId":"modembcc"},"content":" public static final String COMMAND_WORD \u003d \"show project\";","lastModifiedDate":"2024-03-22"},{"lineNumber":21,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":22,"author":{"gitId":"modembcc"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"modembcc"},"content":" + \": Shows the specified project. \"","lastModifiedDate":"2024-03-22"},{"lineNumber":24,"author":{"gitId":"modembcc"},"content":" + \"Parameters: PROJECT_NAME\\n\"","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"modembcc"},"content":" + \"Example: \" + COMMAND_WORD + \" CS2103\";","lastModifiedDate":"2024-03-22"},{"lineNumber":26,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":27,"author":{"gitId":"modembcc"},"content":" public static final String MESSAGE_DELETE_PROJECT_SUCCESS \u003d \"[%1$s] is now being shown.\";","lastModifiedDate":"2024-03-22"},{"lineNumber":28,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":29,"author":{"gitId":"modembcc"},"content":" private final String targetName;","lastModifiedDate":"2024-03-22"},{"lineNumber":30,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":31,"author":{"gitId":"modembcc"},"content":" public ShowProjectCommand(String targetName) {","lastModifiedDate":"2024-03-22"},{"lineNumber":32,"author":{"gitId":"modembcc"},"content":" this.targetName \u003d targetName;","lastModifiedDate":"2024-03-22"},{"lineNumber":33,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":34,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":35,"author":{"gitId":"modembcc"},"content":" @Override","lastModifiedDate":"2024-03-22"},{"lineNumber":36,"author":{"gitId":"modembcc"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-22"},{"lineNumber":37,"author":{"gitId":"modembcc"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-22"},{"lineNumber":38,"author":{"gitId":"modembcc"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-03-22"},{"lineNumber":39,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":40,"author":{"gitId":"modembcc"},"content":" Person targetProject \u003d new Person(new Name(targetName));","lastModifiedDate":"2024-03-22"},{"lineNumber":41,"author":{"gitId":"modembcc"},"content":" Person projectToDelete \u003d null;","lastModifiedDate":"2024-03-22"},{"lineNumber":42,"author":{"gitId":"modembcc"},"content":" for (Person person : lastShownList) {","lastModifiedDate":"2024-03-22"},{"lineNumber":43,"author":{"gitId":"modembcc"},"content":" if (person.isSamePerson(targetProject)) {","lastModifiedDate":"2024-03-22"},{"lineNumber":44,"author":{"gitId":"modembcc"},"content":" projectToDelete \u003d person;","lastModifiedDate":"2024-03-22"},{"lineNumber":45,"author":{"gitId":"modembcc"},"content":" break;","lastModifiedDate":"2024-03-22"},{"lineNumber":46,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":47,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":48,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":49,"author":{"gitId":"modembcc"},"content":" if (projectToDelete \u003d\u003d null) {","lastModifiedDate":"2024-03-22"},{"lineNumber":50,"author":{"gitId":"modembcc"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-22"},{"lineNumber":51,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":52,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":53,"author":{"gitId":"modembcc"},"content":" model.updateCurrentProject(new NameEqualsPredicate(projectToDelete.getName().fullName));","lastModifiedDate":"2024-03-22"},{"lineNumber":54,"author":{"gitId":"modembcc"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_PROJECT_SUCCESS, Messages.format(projectToDelete)));","lastModifiedDate":"2024-03-22"},{"lineNumber":55,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":56,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":57,"author":{"gitId":"modembcc"},"content":" @Override","lastModifiedDate":"2024-03-22"},{"lineNumber":58,"author":{"gitId":"modembcc"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-22"},{"lineNumber":59,"author":{"gitId":"modembcc"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-22"},{"lineNumber":60,"author":{"gitId":"modembcc"},"content":" return true;","lastModifiedDate":"2024-03-22"},{"lineNumber":61,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":62,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":63,"author":{"gitId":"modembcc"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-22"},{"lineNumber":64,"author":{"gitId":"modembcc"},"content":" if (!(other instanceof ShowProjectCommand)) {","lastModifiedDate":"2024-03-22"},{"lineNumber":65,"author":{"gitId":"modembcc"},"content":" return false;","lastModifiedDate":"2024-03-22"},{"lineNumber":66,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":67,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":68,"author":{"gitId":"modembcc"},"content":" ShowProjectCommand otherDeleteCommand \u003d (ShowProjectCommand) other;","lastModifiedDate":"2024-03-22"},{"lineNumber":69,"author":{"gitId":"modembcc"},"content":" return targetName.equals(otherDeleteCommand.targetName);","lastModifiedDate":"2024-03-22"},{"lineNumber":70,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":71,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":72,"author":{"gitId":"modembcc"},"content":" @Override","lastModifiedDate":"2024-03-22"},{"lineNumber":73,"author":{"gitId":"modembcc"},"content":" public String toString() {","lastModifiedDate":"2024-03-22"},{"lineNumber":74,"author":{"gitId":"modembcc"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-22"},{"lineNumber":75,"author":{"gitId":"modembcc"},"content":" .add(\"targetName\", targetName)","lastModifiedDate":"2024-03-22"},{"lineNumber":76,"author":{"gitId":"modembcc"},"content":" .toString();","lastModifiedDate":"2024-03-22"},{"lineNumber":77,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":78,"author":{"gitId":"modembcc"},"content":"}","lastModifiedDate":"2024-03-22"}],"authorContributionMap":{"modembcc":78}},{"path":"src/main/java/seedu/address/logic/parser/AddProjectCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-02-29"},{"lineNumber":2,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":3,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-06"},{"lineNumber":4,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":5,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import seedu.address.logic.commands.AddProjectCommand;","lastModifiedDate":"2024-02-29"},{"lineNumber":6,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-02-29"},{"lineNumber":7,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-02-29"},{"lineNumber":8,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-02-29"},{"lineNumber":9,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":10,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":11,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"/**","lastModifiedDate":"2024-02-29"},{"lineNumber":12,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2024-02-29"},{"lineNumber":13,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" */","lastModifiedDate":"2024-02-29"},{"lineNumber":14,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"public class AddProjectCommandParser implements Parser\u003cAddProjectCommand\u003e {","lastModifiedDate":"2024-02-29"},{"lineNumber":15,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":16,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" /**","lastModifiedDate":"2024-02-29"},{"lineNumber":17,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2024-02-29"},{"lineNumber":18,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2024-02-29"},{"lineNumber":19,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-02-29"},{"lineNumber":20,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" */","lastModifiedDate":"2024-02-29"},{"lineNumber":21,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public AddProjectCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-02-29"},{"lineNumber":22,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" String projectName \u003d args;","lastModifiedDate":"2024-02-29"},{"lineNumber":23,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" if (projectName.length() \u003d\u003d 0) {","lastModifiedDate":"2024-03-06"},{"lineNumber":24,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddProjectCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-06"},{"lineNumber":25,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":26,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" Name name \u003d ParserUtil.parseName(projectName);","lastModifiedDate":"2024-02-29"},{"lineNumber":27,"author":{"gitId":"modembcc"},"content":" Person person \u003d new Person(name);","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return new AddProjectCommand(person);","lastModifiedDate":"2024-02-29"},{"lineNumber":29,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-02-29"},{"lineNumber":30,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"}","lastModifiedDate":"2024-02-29"}],"authorContributionMap":{"modembcc":1,"Lin-Shuang-Shuang":29}},{"path":"src/main/java/seedu/address/logic/parser/AddTaskCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ananya21"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-15"},{"lineNumber":2,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":3,"author":{"gitId":"ananya21"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-15"},{"lineNumber":4,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":5,"author":{"gitId":"ananya21"},"content":"import seedu.address.logic.commands.AddTaskCommand;","lastModifiedDate":"2024-03-15"},{"lineNumber":6,"author":{"gitId":"modembcc"},"content":"import seedu.address.logic.commands.DeleteTaskCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"ananya21"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-15"},{"lineNumber":8,"author":{"gitId":"ananya21"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-15"},{"lineNumber":9,"author":{"gitId":"ananya21"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-15"},{"lineNumber":10,"author":{"gitId":"ananya21"},"content":"import seedu.address.model.project.Task;","lastModifiedDate":"2024-03-15"},{"lineNumber":11,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":12,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":13,"author":{"gitId":"ananya21"},"content":"/**","lastModifiedDate":"2024-03-15"},{"lineNumber":14,"author":{"gitId":"ananya21"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2024-03-15"},{"lineNumber":15,"author":{"gitId":"ananya21"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":16,"author":{"gitId":"ananya21"},"content":"public class AddTaskCommandParser implements Parser\u003cAddTaskCommand\u003e {","lastModifiedDate":"2024-03-15"},{"lineNumber":17,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":18,"author":{"gitId":"ananya21"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":19,"author":{"gitId":"ananya21"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2024-03-15"},{"lineNumber":20,"author":{"gitId":"ananya21"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2024-03-15"},{"lineNumber":21,"author":{"gitId":"ananya21"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-15"},{"lineNumber":22,"author":{"gitId":"ananya21"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":23,"author":{"gitId":"ananya21"},"content":" public AddTaskCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-15"},{"lineNumber":24,"author":{"gitId":"modembcc"},"content":" try {","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"modembcc"},"content":" String taskName \u003d args.split(\" /to\")[0];","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"modembcc"},"content":" String projectName \u003d args.split(\"/to \")[1];","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"ananya21"},"content":" Task task \u003d new Task(taskName);","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"ananya21"},"content":" if (taskName.length() \u003d\u003d 0) {","lastModifiedDate":"2024-03-15"},{"lineNumber":29,"author":{"gitId":"modembcc"},"content":" throw new ParseException(String.format(","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"modembcc"},"content":" MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"modembcc"},"content":" DeleteTaskCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":33,"author":{"gitId":"ananya21"},"content":" Name name \u003d ParserUtil.parseName(projectName);","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"modembcc"},"content":" Person person \u003d new Person(name);","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"ananya21"},"content":" return new AddTaskCommand(task, person);","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"modembcc"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"modembcc"},"content":" throw new ParseException(String.format(","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"modembcc"},"content":" MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"modembcc"},"content":" AddTaskCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":42,"author":{"gitId":"ananya21"},"content":"}","lastModifiedDate":"2024-03-15"}],"authorContributionMap":{"modembcc":13,"ananya21":29}},{"path":"src/main/java/seedu/address/logic/parser/AddressBookParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-07-29"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-07-29"},{"lineNumber":11,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import seedu.address.logic.commands.AddProjectCommand;","lastModifiedDate":"2024-02-29"},{"lineNumber":12,"author":{"gitId":"ananya21"},"content":"import seedu.address.logic.commands.AddTaskCommand;","lastModifiedDate":"2024-03-15"},{"lineNumber":13,"author":{"gitId":"ananya21"},"content":"import seedu.address.logic.commands.AssignPersonCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2017-01-18"},{"lineNumber":16,"author":{"gitId":"modembcc"},"content":"import seedu.address.logic.commands.DeleteProjectCommand;","lastModifiedDate":"2024-03-15"},{"lineNumber":17,"author":{"gitId":"modembcc"},"content":"import seedu.address.logic.commands.DeleteTaskCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":23,"author":{"gitId":"ananya21"},"content":"import seedu.address.logic.commands.SetDeadlineCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"ananya21"},"content":"import seedu.address.logic.commands.SetStatusCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"modembcc"},"content":"import seedu.address.logic.commands.ShowProjectCommand;","lastModifiedDate":"2024-03-22"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(","lastModifiedDate":"2024-03-05"},{"lineNumber":37,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" \"(?\u003ccommandWord\u003e[^\\\\s]+\\\\s[^\\\\s]+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2024-03-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":48,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":49,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" if (userInput.length() \u003d\u003d 0) {","lastModifiedDate":"2024-03-06"},{"lineNumber":50,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-06"},{"lineNumber":51,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":52,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24"},{"lineNumber":54,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" throw new ParseException(String.format(MESSAGE_UNKNOWN_COMMAND, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-06"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":62,"author":{"gitId":"-"},"content":" // Note to developers: Change the log level in config.json to enable lower level (i.e., FINE, FINER and lower)","lastModifiedDate":"2023-07-29"},{"lineNumber":63,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29"},{"lineNumber":64,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29"},{"lineNumber":65,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"ananya21"},"content":" case AssignPersonCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"ananya21"},"content":" return new AssignPersonCommandParser().parse(arguments);","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"ananya21"},"content":" case SetStatusCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"ananya21"},"content":" return new SetStatusCommandParser().parse(arguments);","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":75,"author":{"gitId":"modembcc"},"content":" case ShowProjectCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-22"},{"lineNumber":76,"author":{"gitId":"modembcc"},"content":" return new ShowProjectCommandParser().parse(arguments);","lastModifiedDate":"2024-03-22"},{"lineNumber":77,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":78,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" case AddProjectCommand.COMMAND_WORD:","lastModifiedDate":"2024-02-29"},{"lineNumber":79,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return new AddProjectCommandParser().parse(arguments);","lastModifiedDate":"2024-02-29"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":81,"author":{"gitId":"ananya21"},"content":" case AddTaskCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-15"},{"lineNumber":82,"author":{"gitId":"modembcc"},"content":" return new AddTaskCommandParser().parse(arguments.trim());","lastModifiedDate":"2024-03-19"},{"lineNumber":83,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":84,"author":{"gitId":"modembcc"},"content":" case DeleteProjectCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-15"},{"lineNumber":85,"author":{"gitId":"modembcc"},"content":" return new DeleteProjectCommandParser().parse(arguments);","lastModifiedDate":"2024-03-15"},{"lineNumber":86,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":87,"author":{"gitId":"ThitipatC"},"content":" case DeleteTaskCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-18"},{"lineNumber":88,"author":{"gitId":"modembcc"},"content":" return new DeleteTaskCommandParser().parse(arguments.trim());","lastModifiedDate":"2024-03-19"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21"},{"lineNumber":91,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":93,"author":{"gitId":"ananya21"},"content":" case SetDeadlineCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-21"},{"lineNumber":94,"author":{"gitId":"ananya21"},"content":" return new SetDeadlineCommandParser().parse(arguments);","lastModifiedDate":"2024-03-21"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":96,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":97,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":99,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":100,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":102,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":103,"author":{"gitId":"-"},"content":" return new ListCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":105,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24"},{"lineNumber":106,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":108,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26"},{"lineNumber":109,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":111,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26"},{"lineNumber":112,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29"},{"lineNumber":113,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":116,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"modembcc":11,"ThitipatC":1,"Lin-Shuang-Shuang":10,"-":78,"ananya21":16}},{"path":"src/main/java/seedu/address/logic/parser/AssignPersonCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ananya21"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"ananya21"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"ananya21"},"content":"import seedu.address.logic.commands.AssignPersonCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"ananya21"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"ananya21"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"ananya21"},"content":"import seedu.address.model.project.Task;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"ananya21"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"ananya21"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"ananya21"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"ananya21"},"content":"public class AssignPersonCommandParser implements Parser\u003cAssignPersonCommand\u003e {","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"ananya21"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"ananya21"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"ananya21"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"ananya21"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"ananya21"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"ananya21"},"content":" public AssignPersonCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"modembcc"},"content":" String member \u003d args.split(\" /to\")[0].trim();","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"modembcc"},"content":" String taskAndProject \u003d args.split(\" /to\")[1].trim();","lastModifiedDate":"2024-03-22"},{"lineNumber":24,"author":{"gitId":"modembcc"},"content":" String taskName \u003d taskAndProject.split(\"/in \")[0].trim();","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"modembcc"},"content":" String projectName \u003d taskAndProject.split(\"/in \")[1].trim();","lastModifiedDate":"2024-03-22"},{"lineNumber":26,"author":{"gitId":"ananya21"},"content":" if (projectName.length() \u003d\u003d 0) {","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"ananya21"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AssignPersonCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"ananya21"},"content":" Person project \u003d new Person(ParserUtil.parseName(projectName));","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"ananya21"},"content":" Task newTask \u003d new Task(taskName);","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"ananya21"},"content":" return new AssignPersonCommand(member, newTask, project);","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"ananya21"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"modembcc":4,"ananya21":29}},{"path":"src/main/java/seedu/address/logic/parser/DeleteProjectCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":5,"author":{"gitId":"modembcc"},"content":"import seedu.address.logic.commands.DeleteProjectCommand;","lastModifiedDate":"2024-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new DeleteCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":11,"author":{"gitId":"modembcc"},"content":"public class DeleteProjectCommandParser implements Parser\u003cDeleteProjectCommand\u003e {","lastModifiedDate":"2024-03-15"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the DeleteCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * and returns a DeleteCommand object for execution.","lastModifiedDate":"2019-05-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":18,"author":{"gitId":"modembcc"},"content":" public DeleteProjectCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-15"},{"lineNumber":19,"author":{"gitId":"modembcc"},"content":" args \u003d args.trim();","lastModifiedDate":"2024-03-15"},{"lineNumber":20,"author":{"gitId":"modembcc"},"content":" if (args.length() \u003d\u003d 0) {","lastModifiedDate":"2024-03-15"},{"lineNumber":21,"author":{"gitId":"-"},"content":" throw new ParseException(","lastModifiedDate":"2017-03-11"},{"lineNumber":22,"author":{"gitId":"modembcc"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteProjectCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":24,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":25,"author":{"gitId":"modembcc"},"content":" System.out.println(args);","lastModifiedDate":"2024-03-15"},{"lineNumber":26,"author":{"gitId":"modembcc"},"content":" return new DeleteProjectCommand(args);","lastModifiedDate":"2024-03-15"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"modembcc":9,"-":20}},{"path":"src/main/java/seedu/address/logic/parser/DeleteTaskCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ThitipatC"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"ThitipatC"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"ThitipatC"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"ThitipatC"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"ThitipatC"},"content":"import seedu.address.logic.commands.AddTaskCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"modembcc"},"content":"import seedu.address.logic.commands.DeleteTaskCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"ThitipatC"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"ThitipatC"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"ThitipatC"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"ThitipatC"},"content":"import seedu.address.model.project.Task;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"ThitipatC"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"ThitipatC"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"ThitipatC"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"ThitipatC"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"ThitipatC"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"ThitipatC"},"content":"public class DeleteTaskCommandParser implements Parser\u003cDeleteTaskCommand\u003e {","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"ThitipatC"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"ThitipatC"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"ThitipatC"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"ThitipatC"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"ThitipatC"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"ThitipatC"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"ThitipatC"},"content":" public DeleteTaskCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"modembcc"},"content":" try {","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"modembcc"},"content":" String taskName \u003d args.split(\" /in\")[0];","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"modembcc"},"content":" String projectName \u003d args.split(\"/in \")[1];","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"ThitipatC"},"content":" Task task \u003d new Task(taskName);","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"ThitipatC"},"content":" if (taskName.length() \u003d\u003d 0) {","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"modembcc"},"content":" throw new ParseException(String.format(","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"modembcc"},"content":" MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"modembcc"},"content":" DeleteTaskCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"ThitipatC"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"ThitipatC"},"content":" Name name \u003d ParserUtil.parseName(projectName);","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"modembcc"},"content":" Person person \u003d new Person(name);","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"ThitipatC"},"content":" return new DeleteTaskCommand(task, person);","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"modembcc"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"modembcc"},"content":" throw new ParseException(String.format(","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"modembcc"},"content":" MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"modembcc"},"content":" AddTaskCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"ThitipatC"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"ThitipatC"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"modembcc":13,"ThitipatC":29}},{"path":"src/main/java/seedu/address/logic/parser/SetDeadlineCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ananya21"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"ananya21"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"ananya21"},"content":"import seedu.address.logic.commands.SetDeadlineCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"ananya21"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"ananya21"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"ananya21"},"content":"import seedu.address.model.project.Task;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"ananya21"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"ananya21"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"ananya21"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"ananya21"},"content":"public class SetDeadlineCommandParser implements Parser\u003cSetDeadlineCommand\u003e {","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"ananya21"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"ananya21"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"ananya21"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"ananya21"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"ananya21"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"ananya21"},"content":" public SetDeadlineCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"modembcc"},"content":" String deadline \u003d args.split(\" /to\")[0].trim();","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"modembcc"},"content":" String taskAndProject \u003d args.split(\" /to\")[1].trim();","lastModifiedDate":"2024-03-22"},{"lineNumber":24,"author":{"gitId":"modembcc"},"content":" String taskName \u003d taskAndProject.split(\"/in \")[0].trim();","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"modembcc"},"content":" String projectName \u003d taskAndProject.split(\"/in \")[1];","lastModifiedDate":"2024-03-22"},{"lineNumber":26,"author":{"gitId":"ananya21"},"content":" if (projectName.length() \u003d\u003d 0) {","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"ananya21"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, SetDeadlineCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"ananya21"},"content":" Person project \u003d new Person(ParserUtil.parseName(projectName));","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"ananya21"},"content":" Task newTask \u003d new Task(taskName);","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"ananya21"},"content":" return new SetDeadlineCommand(deadline, newTask, project);","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"ananya21"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"modembcc":4,"ananya21":29}},{"path":"src/main/java/seedu/address/logic/parser/SetStatusCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ananya21"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"ananya21"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"ananya21"},"content":"import seedu.address.logic.commands.SetStatusCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"ananya21"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"ananya21"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"ananya21"},"content":"import seedu.address.model.project.Task;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"ananya21"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"ananya21"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"ananya21"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"ananya21"},"content":"public class SetStatusCommandParser implements Parser\u003cSetStatusCommand\u003e {","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"ananya21"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"ananya21"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"ananya21"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"ananya21"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"ananya21"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"ananya21"},"content":" public SetStatusCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"modembcc"},"content":" String status \u003d args.split(\" /to\")[0].trim();","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"modembcc"},"content":" String taskAndProject \u003d args.split(\" /to\")[1].trim();","lastModifiedDate":"2024-03-22"},{"lineNumber":24,"author":{"gitId":"modembcc"},"content":" String taskName \u003d taskAndProject.split(\"/in \")[0].trim();","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"modembcc"},"content":" String projectName \u003d taskAndProject.split(\"/in \")[1];","lastModifiedDate":"2024-03-22"},{"lineNumber":26,"author":{"gitId":"ananya21"},"content":" if (projectName.length() \u003d\u003d 0) {","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"ananya21"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, SetStatusCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"ananya21"},"content":" Person project \u003d new Person(ParserUtil.parseName(projectName));","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"ananya21"},"content":" Task newTask \u003d new Task(taskName);","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"ananya21"},"content":" return new SetStatusCommand(status, newTask, project);","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"ananya21"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"modembcc":4,"ananya21":29}},{"path":"src/main/java/seedu/address/logic/parser/ShowProjectCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"modembcc"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":3,"author":{"gitId":"modembcc"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-22"},{"lineNumber":4,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":5,"author":{"gitId":"modembcc"},"content":"import seedu.address.logic.commands.ShowProjectCommand;","lastModifiedDate":"2024-03-22"},{"lineNumber":6,"author":{"gitId":"modembcc"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-22"},{"lineNumber":7,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":8,"author":{"gitId":"modembcc"},"content":"/**","lastModifiedDate":"2024-03-22"},{"lineNumber":9,"author":{"gitId":"modembcc"},"content":" * Parses input arguments and creates a new DeleteCommand object","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"modembcc"},"content":" */","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"modembcc"},"content":"public class ShowProjectCommandParser implements Parser\u003cShowProjectCommand\u003e {","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"modembcc"},"content":" /**","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"modembcc"},"content":" * Parses the given {@code String} of arguments in the context of the DeleteCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":15,"author":{"gitId":"modembcc"},"content":" * and returns a DeleteCommand object for execution.","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"modembcc"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-22"},{"lineNumber":17,"author":{"gitId":"modembcc"},"content":" */","lastModifiedDate":"2024-03-22"},{"lineNumber":18,"author":{"gitId":"modembcc"},"content":" public ShowProjectCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"author":{"gitId":"modembcc"},"content":" args \u003d args.trim();","lastModifiedDate":"2024-03-22"},{"lineNumber":20,"author":{"gitId":"modembcc"},"content":" if (args.length() \u003d\u003d 0) {","lastModifiedDate":"2024-03-22"},{"lineNumber":21,"author":{"gitId":"modembcc"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-22"},{"lineNumber":22,"author":{"gitId":"modembcc"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, ShowProjectCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":24,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"modembcc"},"content":" System.out.println(args);","lastModifiedDate":"2024-03-22"},{"lineNumber":26,"author":{"gitId":"modembcc"},"content":" return new ShowProjectCommand(args);","lastModifiedDate":"2024-03-22"},{"lineNumber":27,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":28,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":29,"author":{"gitId":"modembcc"},"content":"}","lastModifiedDate":"2024-03-22"}],"authorContributionMap":{"modembcc":29}},{"path":"src/main/java/seedu/address/model/AddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"ananya21"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.UniquePersonList;","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Wraps all data at the address-book level","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Duplicates are not allowed (by .isSamePerson comparison)","lastModifiedDate":"2018-04-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class AddressBook implements ReadOnlyAddressBook {","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private final UniquePersonList persons;","lastModifiedDate":"2016-08-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-19"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * The \u0027unusual\u0027 code block below is a non-static initialization block, sometimes used to avoid duplication","lastModifiedDate":"2019-05-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * between constructors. See https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html","lastModifiedDate":"2016-10-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Note that non-static init blocks are not recommended to use. There are other ways to avoid duplication","lastModifiedDate":"2016-10-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * among constructors.","lastModifiedDate":"2016-10-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" {","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" persons \u003d new UniquePersonList();","lastModifiedDate":"2016-08-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public AddressBook() {}","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Creates an AddressBook using the Persons in the {@code toBeCopied}","lastModifiedDate":"2018-03-29"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public AddressBook(ReadOnlyAddressBook toBeCopied) {","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" this();","lastModifiedDate":"2016-12-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" resetData(toBeCopied);","lastModifiedDate":"2016-12-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":42,"author":{"gitId":"-"},"content":" //// list overwrite operations","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * Replaces the contents of the person list with {@code persons}.","lastModifiedDate":"2018-08-07"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * {@code persons} must not contain duplicate persons.","lastModifiedDate":"2018-08-07"},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void setPersons(List\u003cPerson\u003e persons) {","lastModifiedDate":"2018-08-07"},{"lineNumber":49,"author":{"gitId":"-"},"content":" this.persons.setPersons(persons);","lastModifiedDate":"2016-10-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Resets the existing data of this {@code AddressBook} with {@code newData}.","lastModifiedDate":"2017-08-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void resetData(ReadOnlyAddressBook newData) {","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" requireNonNull(newData);","lastModifiedDate":"2017-05-15"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" setPersons(newData.getPersonList());","lastModifiedDate":"2018-03-29"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" //// person-level operations","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Returns true if a person with the same identity as {@code person} exists in the address book.","lastModifiedDate":"2018-08-06"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06"},{"lineNumber":67,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return persons.contains(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":71,"author":{"gitId":"modembcc"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"modembcc"},"content":" * Returns the person object with the matching name in the addressbook","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"modembcc"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"ananya21"},"content":" public Person findPerson(Name name) {","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"ananya21"},"content":" requireNonNull(name);","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"ananya21"},"content":" return persons.findPerson(name);","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-09-21"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * The person must not already exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":82,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void addPerson(Person p) {","lastModifiedDate":"2018-08-07"},{"lineNumber":84,"author":{"gitId":"-"},"content":" persons.add(p);","lastModifiedDate":"2018-03-29"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":87,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * Replaces the given person {@code target} in the list with {@code editedPerson}.","lastModifiedDate":"2018-01-10"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * The person identity of {@code editedPerson} must not be the same as another existing person in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":93,"author":{"gitId":"-"},"content":" requireNonNull(editedPerson);","lastModifiedDate":"2018-01-10"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" persons.setPerson(target, editedPerson);","lastModifiedDate":"2018-03-29"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":98,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * Removes {@code key} from this {@code AddressBook}.","lastModifiedDate":"2017-08-16"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * {@code key} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":101,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":102,"author":{"gitId":"-"},"content":" public void removePerson(Person key) {","lastModifiedDate":"2018-08-07"},{"lineNumber":103,"author":{"gitId":"-"},"content":" persons.remove(key);","lastModifiedDate":"2018-02-28"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":" //// util methods","lastModifiedDate":"2016-08-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":109,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-08"},{"lineNumber":110,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":" .add(\"persons\", persons)","lastModifiedDate":"2019-02-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":117,"author":{"gitId":"-"},"content":" return persons.asUnmodifiableObservableList();","lastModifiedDate":"2018-04-05"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-01"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-01"},{"lineNumber":120,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":121,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-21"},{"lineNumber":122,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":123,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":126,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":127,"author":{"gitId":"-"},"content":" if (!(other instanceof AddressBook)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":128,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":131,"author":{"gitId":"-"},"content":" AddressBook otherAddressBook \u003d (AddressBook) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":132,"author":{"gitId":"-"},"content":" return persons.equals(otherAddressBook.persons);","lastModifiedDate":"2023-07-13"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":136,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-21"},{"lineNumber":137,"author":{"gitId":"-"},"content":" return persons.hashCode();","lastModifiedDate":"2018-03-29"},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":139,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"modembcc":3,"-":130,"ananya21":6}},{"path":"src/main/java/seedu/address/model/Model.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":8,"author":{"gitId":"ananya21"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * The API of the Model component.","lastModifiedDate":"2016-09-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public interface Model {","lastModifiedDate":"2016-09-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":" /** {@code Predicate} that always evaluate to true */","lastModifiedDate":"2017-08-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":" Predicate\u003cPerson\u003e PREDICATE_SHOW_ALL_PERSONS \u003d unused -\u003e true;","lastModifiedDate":"2018-01-10"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Replaces user prefs data with the data in {@code userPrefs}.","lastModifiedDate":"2018-12-06"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":" void setUserPrefs(ReadOnlyUserPrefs userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Returns the user prefs.","lastModifiedDate":"2018-11-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" ReadOnlyUserPrefs getUserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" void setAddressBookFilePath(Path addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Replaces address book data with the data in {@code addressBook}.","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" void setAddressBook(ReadOnlyAddressBook addressBook);","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":" /** Returns the AddressBook */","lastModifiedDate":"2016-09-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2016-09-25"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Returns true if a person with the same identity as {@code person} exists in the address book.","lastModifiedDate":"2018-08-06"},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":59,"author":{"gitId":"-"},"content":" boolean hasPerson(Person person);","lastModifiedDate":"2018-08-06"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Deletes the given person.","lastModifiedDate":"2018-08-07"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * The person must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":65,"author":{"gitId":"-"},"content":" void deletePerson(Person target);","lastModifiedDate":"2018-08-07"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":67,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":68,"author":{"gitId":"-"},"content":" * Adds the given person.","lastModifiedDate":"2018-08-07"},{"lineNumber":69,"author":{"gitId":"-"},"content":" * {@code person} must not already exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":70,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":71,"author":{"gitId":"-"},"content":" void addPerson(Person person);","lastModifiedDate":"2018-08-07"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":73,"author":{"gitId":"ananya21"},"content":" Person findPerson(Name name);","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" * Replaces the given person {@code target} with {@code editedPerson}.","lastModifiedDate":"2017-06-07"},{"lineNumber":77,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * The person identity of {@code editedPerson} must not be the same as another existing person in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":79,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" void setPerson(Person target, Person editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" /** Returns an unmodifiable view of the filtered person list */","lastModifiedDate":"2017-09-01"},{"lineNumber":83,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":85,"author":{"gitId":"modembcc"},"content":" /** Returns an unmodifiable view of the filtered person list */","lastModifiedDate":"2024-03-22"},{"lineNumber":86,"author":{"gitId":"modembcc"},"content":" ObservableList\u003cPerson\u003e getCurrentProject();","lastModifiedDate":"2024-03-22"},{"lineNumber":87,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":88,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-05"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * Updates the filter of the filtered person list to filter by the given {@code predicate}.","lastModifiedDate":"2017-08-05"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2017-08-05"},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05"},{"lineNumber":92,"author":{"gitId":"-"},"content":" void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate);","lastModifiedDate":"2018-01-10"},{"lineNumber":93,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":94,"author":{"gitId":"modembcc"},"content":" /**","lastModifiedDate":"2024-03-22"},{"lineNumber":95,"author":{"gitId":"modembcc"},"content":" * Updates the filter of the current project to change the current project by the given {@code predicate}.","lastModifiedDate":"2024-03-22"},{"lineNumber":96,"author":{"gitId":"modembcc"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2024-03-22"},{"lineNumber":97,"author":{"gitId":"modembcc"},"content":" */","lastModifiedDate":"2024-03-22"},{"lineNumber":98,"author":{"gitId":"modembcc"},"content":" void updateCurrentProject(Predicate\u003cPerson\u003e predicate);","lastModifiedDate":"2024-03-22"},{"lineNumber":99,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"modembcc":9,"-":87,"ananya21":3}},{"path":"src/main/java/seedu/address/model/ModelManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-08-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2016-08-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23"},{"lineNumber":14,"author":{"gitId":"ananya21"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"modembcc"},"content":"import seedu.address.model.person.NameEqualsPredicate;","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Represents the in-memory model of the address book data.","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class ModelManager implements Model {","lastModifiedDate":"2018-12-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ModelManager.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final AddressBook addressBook;","lastModifiedDate":"2019-01-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final UserPrefs userPrefs;","lastModifiedDate":"2018-12-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final FilteredList\u003cPerson\u003e filteredPersons;","lastModifiedDate":"2018-01-10"},{"lineNumber":27,"author":{"gitId":"modembcc"},"content":" private final FilteredList\u003cPerson\u003e currentProject;","lastModifiedDate":"2024-03-22"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Initializes a ModelManager with the given addressBook and userPrefs.","lastModifiedDate":"2016-12-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public ModelManager(ReadOnlyAddressBook addressBook, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":" requireAllNonNull(addressBook, userPrefs);","lastModifiedDate":"2017-05-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" logger.fine(\"Initializing with address book: \" + addressBook + \" and user prefs \" + userPrefs);","lastModifiedDate":"2016-12-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" this.addressBook \u003d new AddressBook(addressBook);","lastModifiedDate":"2019-01-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":39,"author":{"gitId":"-"},"content":" filteredPersons \u003d new FilteredList\u003c\u003e(this.addressBook.getPersonList());","lastModifiedDate":"2019-01-25"},{"lineNumber":40,"author":{"gitId":"modembcc"},"content":" if (filteredPersons.size() \u003e 0) {","lastModifiedDate":"2024-03-22"},{"lineNumber":41,"author":{"gitId":"modembcc"},"content":" currentProject \u003d new FilteredList\u003c\u003e(","lastModifiedDate":"2024-03-22"},{"lineNumber":42,"author":{"gitId":"modembcc"},"content":" this.addressBook.getPersonList(),","lastModifiedDate":"2024-03-22"},{"lineNumber":43,"author":{"gitId":"modembcc"},"content":" new NameEqualsPredicate(filteredPersons.get(0).getName().fullName));","lastModifiedDate":"2024-03-22"},{"lineNumber":44,"author":{"gitId":"modembcc"},"content":" } else {","lastModifiedDate":"2024-03-22"},{"lineNumber":45,"author":{"gitId":"modembcc"},"content":" currentProject \u003d new FilteredList\u003c\u003e(this.addressBook.getPersonList());","lastModifiedDate":"2024-03-22"},{"lineNumber":46,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public ModelManager() {","lastModifiedDate":"2016-09-22"},{"lineNumber":50,"author":{"gitId":"-"},"content":" this(new AddressBook(), new UserPrefs());","lastModifiedDate":"2016-09-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d UserPrefs \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":57,"author":{"gitId":"-"},"content":" requireNonNull(userPrefs);","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" this.userPrefs.resetData(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return userPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return userPrefs.getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":" return userPrefs.getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":85,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d AddressBook \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook addressBook) {","lastModifiedDate":"2018-11-27"},{"lineNumber":92,"author":{"gitId":"-"},"content":" this.addressBook.resetData(addressBook);","lastModifiedDate":"2019-01-25"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":96,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2016-09-21"},{"lineNumber":97,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2019-01-25"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":100,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":101,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":102,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":103,"author":{"gitId":"-"},"content":" return addressBook.hasPerson(person);","lastModifiedDate":"2019-01-25"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":106,"author":{"gitId":"ananya21"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":107,"author":{"gitId":"ananya21"},"content":" public Person findPerson(Name name) {","lastModifiedDate":"2024-03-18"},{"lineNumber":108,"author":{"gitId":"ananya21"},"content":" requireNonNull(name);","lastModifiedDate":"2024-03-18"},{"lineNumber":109,"author":{"gitId":"ananya21"},"content":" return addressBook.findPerson(name);","lastModifiedDate":"2024-03-18"},{"lineNumber":110,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":111,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":113,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-15"},{"lineNumber":114,"author":{"gitId":"-"},"content":" addressBook.removePerson(target);","lastModifiedDate":"2019-01-25"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":118,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":119,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2019-01-25"},{"lineNumber":120,"author":{"gitId":"-"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26"},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-13"},{"lineNumber":124,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":125,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2017-06-07"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":127,"author":{"gitId":"-"},"content":" addressBook.setPerson(target, editedPerson);","lastModifiedDate":"2019-01-25"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"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"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":132,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19"},{"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"},{"lineNumber":134,"author":{"gitId":"-"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2018-06-11"},{"lineNumber":135,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19"},{"lineNumber":136,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":137,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":138,"author":{"gitId":"-"},"content":" return filteredPersons;","lastModifiedDate":"2018-12-09"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":141,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":142,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10"},{"lineNumber":143,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05"},{"lineNumber":144,"author":{"gitId":"-"},"content":" filteredPersons.setPredicate(predicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":147,"author":{"gitId":"modembcc"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Current Project Accessors \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-03-22"},{"lineNumber":148,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":149,"author":{"gitId":"modembcc"},"content":" /**","lastModifiedDate":"2024-03-22"},{"lineNumber":150,"author":{"gitId":"modembcc"},"content":" * Returns an unmodifiable view of the list of {@code Person} backed by the internal list of","lastModifiedDate":"2024-03-22"},{"lineNumber":151,"author":{"gitId":"modembcc"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2024-03-22"},{"lineNumber":152,"author":{"gitId":"modembcc"},"content":" */","lastModifiedDate":"2024-03-22"},{"lineNumber":153,"author":{"gitId":"modembcc"},"content":" @Override","lastModifiedDate":"2024-03-22"},{"lineNumber":154,"author":{"gitId":"modembcc"},"content":" public ObservableList\u003cPerson\u003e getCurrentProject() {","lastModifiedDate":"2024-03-22"},{"lineNumber":155,"author":{"gitId":"modembcc"},"content":" return currentProject;","lastModifiedDate":"2024-03-22"},{"lineNumber":156,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":157,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":158,"author":{"gitId":"modembcc"},"content":" @Override","lastModifiedDate":"2024-03-22"},{"lineNumber":159,"author":{"gitId":"modembcc"},"content":" public void updateCurrentProject(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2024-03-22"},{"lineNumber":160,"author":{"gitId":"modembcc"},"content":" requireNonNull(predicate);","lastModifiedDate":"2024-03-22"},{"lineNumber":161,"author":{"gitId":"modembcc"},"content":" currentProject.setPredicate(predicate);","lastModifiedDate":"2024-03-22"},{"lineNumber":162,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":163,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":164,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-31"},{"lineNumber":165,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13"},{"lineNumber":166,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":167,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31"},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":170,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31"},{"lineNumber":171,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":172,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-31"},{"lineNumber":173,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":175,"author":{"gitId":"-"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":176,"author":{"gitId":"-"},"content":" return addressBook.equals(otherModelManager.addressBook)","lastModifiedDate":"2023-07-13"},{"lineNumber":177,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13"},{"lineNumber":178,"author":{"gitId":"modembcc"},"content":" \u0026\u0026 filteredPersons.equals(otherModelManager.filteredPersons)","lastModifiedDate":"2024-03-22"},{"lineNumber":179,"author":{"gitId":"modembcc"},"content":" \u0026\u0026 currentProject.equals(otherModelManager.currentProject);","lastModifiedDate":"2024-03-22"},{"lineNumber":180,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":182,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"modembcc":28,"-":147,"ananya21":7}},{"path":"src/main/java/seedu/address/model/person/NameEqualsPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"modembcc"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":3,"author":{"gitId":"modembcc"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-22"},{"lineNumber":4,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":5,"author":{"gitId":"modembcc"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-22"},{"lineNumber":6,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":7,"author":{"gitId":"modembcc"},"content":"/**","lastModifiedDate":"2024-03-22"},{"lineNumber":8,"author":{"gitId":"modembcc"},"content":" * Tests that a {@code Person}\u0027s {@code Name} matches any of the keywords given.","lastModifiedDate":"2024-03-22"},{"lineNumber":9,"author":{"gitId":"modembcc"},"content":" */","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"modembcc"},"content":"public class NameEqualsPredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"modembcc"},"content":" private final String name;","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"modembcc"},"content":" public NameEqualsPredicate(String name) {","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"modembcc"},"content":" this.name \u003d name;","lastModifiedDate":"2024-03-22"},{"lineNumber":15,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":17,"author":{"gitId":"modembcc"},"content":" @Override","lastModifiedDate":"2024-03-22"},{"lineNumber":18,"author":{"gitId":"modembcc"},"content":" public boolean test(Person person) {","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"author":{"gitId":"modembcc"},"content":" return person.getName().fullName.equals(name);","lastModifiedDate":"2024-03-22"},{"lineNumber":20,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":21,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":22,"author":{"gitId":"modembcc"},"content":" @Override","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"modembcc"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-22"},{"lineNumber":24,"author":{"gitId":"modembcc"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"modembcc"},"content":" return true;","lastModifiedDate":"2024-03-22"},{"lineNumber":26,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":27,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":28,"author":{"gitId":"modembcc"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-22"},{"lineNumber":29,"author":{"gitId":"modembcc"},"content":" if (!(other instanceof NameEqualsPredicate)) {","lastModifiedDate":"2024-03-22"},{"lineNumber":30,"author":{"gitId":"modembcc"},"content":" return false;","lastModifiedDate":"2024-03-22"},{"lineNumber":31,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":32,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":33,"author":{"gitId":"modembcc"},"content":" NameEqualsPredicate otherNameContainsKeywordsPredicate \u003d (NameEqualsPredicate) other;","lastModifiedDate":"2024-03-22"},{"lineNumber":34,"author":{"gitId":"modembcc"},"content":" return name.equals(otherNameContainsKeywordsPredicate.name);","lastModifiedDate":"2024-03-22"},{"lineNumber":35,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":36,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":37,"author":{"gitId":"modembcc"},"content":" @Override","lastModifiedDate":"2024-03-22"},{"lineNumber":38,"author":{"gitId":"modembcc"},"content":" public String toString() {","lastModifiedDate":"2024-03-22"},{"lineNumber":39,"author":{"gitId":"modembcc"},"content":" return new ToStringBuilder(this).add(\"name\", name).toString();","lastModifiedDate":"2024-03-22"},{"lineNumber":40,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":41,"author":{"gitId":"modembcc"},"content":"}","lastModifiedDate":"2024-03-22"}],"authorContributionMap":{"modembcc":41}},{"path":"src/main/java/seedu/address/model/person/Person.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2016-08-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"ananya21"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"ananya21"},"content":"import java.util.List;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"ananya21"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":11,"author":{"gitId":"ananya21"},"content":"import seedu.address.model.project.Task;","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Represents a Person in the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2017-12-20"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class Person {","lastModifiedDate":"2018-01-10"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"ananya21"},"content":" private final List\u003cTask\u003e taskList;","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"modembcc"},"content":" * Constructs a Person object with empty taskList","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public Person(Name name) {","lastModifiedDate":"2024-02-29"},{"lineNumber":28,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" requireAllNonNull(name);","lastModifiedDate":"2024-02-29"},{"lineNumber":29,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20"},{"lineNumber":30,"author":{"gitId":"ananya21"},"content":" List\u003cTask\u003e taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"ananya21"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"modembcc"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"modembcc"},"content":" * Adds task to the Person object","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"modembcc"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"ananya21"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"ananya21"},"content":" taskList.add(task);","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"modembcc"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"modembcc"},"content":" * Removes task from the Person object","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"modembcc"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"ThitipatC"},"content":" public void removeTask(Task task) {","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"ThitipatC"},"content":" int i \u003d 0;","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"ThitipatC"},"content":" for (Task t : taskList) {","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"ThitipatC"},"content":" if (t.equals(task)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"ThitipatC"},"content":" taskList.remove(i);","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"ThitipatC"},"content":" break;","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"ThitipatC"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"ThitipatC"},"content":" i +\u003d 1;","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"ThitipatC"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"ThitipatC"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"ThitipatC"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"ananya21"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"ananya21"},"content":" * @param taskName name to be matched with the tasks listed in my project","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"ananya21"},"content":" * @return task in the project with the matching taskName","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"ananya21"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"ananya21"},"content":" public Task findTask(Name taskName) {","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"ananya21"},"content":" Optional\u003cTask\u003e foundTask \u003d taskList.stream()","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"ananya21"},"content":" .filter(task -\u003e task.getName().toString().equals(taskName.toString()))","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"ananya21"},"content":" .findFirst();","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"ananya21"},"content":" return foundTask.get();","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":70,"author":{"gitId":"modembcc"},"content":" public List\u003cTask\u003e getDoneTasks() {","lastModifiedDate":"2024-03-22"},{"lineNumber":71,"author":{"gitId":"modembcc"},"content":" ArrayList\u003cTask\u003e tmp \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-22"},{"lineNumber":72,"author":{"gitId":"modembcc"},"content":" for (Task task : taskList) {","lastModifiedDate":"2024-03-22"},{"lineNumber":73,"author":{"gitId":"modembcc"},"content":" if (task.getStatus() \u003d\u003d \"Complete\") {","lastModifiedDate":"2024-03-22"},{"lineNumber":74,"author":{"gitId":"modembcc"},"content":" tmp.add(task);","lastModifiedDate":"2024-03-22"},{"lineNumber":75,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":76,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":77,"author":{"gitId":"modembcc"},"content":" return tmp;","lastModifiedDate":"2024-03-22"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":80,"author":{"gitId":"modembcc"},"content":" public List\u003cTask\u003e getUndoneTasks() {","lastModifiedDate":"2024-03-22"},{"lineNumber":81,"author":{"gitId":"modembcc"},"content":" ArrayList\u003cTask\u003e tmp \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-22"},{"lineNumber":82,"author":{"gitId":"modembcc"},"content":" for (Task task : taskList) {","lastModifiedDate":"2024-03-22"},{"lineNumber":83,"author":{"gitId":"modembcc"},"content":" if (task.getStatus() \u003d\u003d \"Incomplete\") {","lastModifiedDate":"2024-03-22"},{"lineNumber":84,"author":{"gitId":"modembcc"},"content":" tmp.add(task);","lastModifiedDate":"2024-03-22"},{"lineNumber":85,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":86,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":87,"author":{"gitId":"modembcc"},"content":" return tmp;","lastModifiedDate":"2024-03-22"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":90,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":91,"author":{"gitId":"ananya21"},"content":" * Returns true if both projects have the same name.","lastModifiedDate":"2024-03-18"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":94,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public boolean isSamePerson(Person otherProject) {","lastModifiedDate":"2024-02-29"},{"lineNumber":95,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" if (otherProject \u003d\u003d this) {","lastModifiedDate":"2024-02-29"},{"lineNumber":96,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":99,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return otherProject !\u003d null","lastModifiedDate":"2024-02-29"},{"lineNumber":100,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" \u0026\u0026 otherProject.getName().equals(getName());","lastModifiedDate":"2024-02-29"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":103,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":104,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":106,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":109,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10"},{"lineNumber":110,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":113,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10"},{"lineNumber":115,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":118,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10"},{"lineNumber":119,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return name.equals(otherPerson.name);","lastModifiedDate":"2024-02-29"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":123,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":124,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24"},{"lineNumber":125,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return Objects.hash(name);","lastModifiedDate":"2024-02-29"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":129,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":130,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":131,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" .add(\"name\", name).toString();","lastModifiedDate":"2024-02-29"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":134,"author":{"gitId":"modembcc"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":135,"author":{"gitId":"modembcc"},"content":" * Returns true if the Person has a task that is equal to the specified task","lastModifiedDate":"2024-03-19"},{"lineNumber":136,"author":{"gitId":"modembcc"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":137,"author":{"gitId":"ThitipatC"},"content":" public boolean hasTask(Task task) {","lastModifiedDate":"2024-03-18"},{"lineNumber":138,"author":{"gitId":"ThitipatC"},"content":" for (Task t : taskList) {","lastModifiedDate":"2024-03-18"},{"lineNumber":139,"author":{"gitId":"modembcc"},"content":" System.out.println(task.getName().fullName);","lastModifiedDate":"2024-03-19"},{"lineNumber":140,"author":{"gitId":"ThitipatC"},"content":" if (t.equals(task)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":141,"author":{"gitId":"ThitipatC"},"content":" return true;","lastModifiedDate":"2024-03-18"},{"lineNumber":142,"author":{"gitId":"ThitipatC"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":143,"author":{"gitId":"ThitipatC"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":144,"author":{"gitId":"ThitipatC"},"content":" return false;","lastModifiedDate":"2024-03-18"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":147,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"modembcc":27,"ThitipatC":18,"Lin-Shuang-Shuang":9,"-":74,"ananya21":19}},{"path":"src/main/java/seedu/address/model/person/UniquePersonList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2016-08-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2018-01-10"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Iterator;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2017-06-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.PersonNotFoundException;","lastModifiedDate":"2017-06-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * A list of persons that enforces uniqueness between its elements and does not allow nulls.","lastModifiedDate":"2016-09-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * A person is considered unique by comparing using {@code Person#isSamePerson(Person)}. As such, adding and updating of","lastModifiedDate":"2018-04-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * persons uses Person#isSamePerson(Person) for equality so as to ensure that the person being added or updated is","lastModifiedDate":"2018-04-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * unique in terms of identity in the UniquePersonList. However, the removal of a person uses Person#equals(Object) so","lastModifiedDate":"2018-04-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * as to ensure that the person with exactly the same fields will be removed.","lastModifiedDate":"2018-04-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Supports a minimal set of list operations.","lastModifiedDate":"2016-09-22"},{"lineNumber":22,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * @see Person#isSamePerson(Person)","lastModifiedDate":"2018-04-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class UniquePersonList implements Iterable\u003cPerson\u003e {","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final ObservableList\u003cPerson\u003e internalList \u003d FXCollections.observableArrayList();","lastModifiedDate":"2016-10-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final ObservableList\u003cPerson\u003e internalUnmodifiableList \u003d","lastModifiedDate":"2018-12-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":" FXCollections.unmodifiableObservableList(internalList);","lastModifiedDate":"2018-12-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Returns true if the list contains an equivalent person as the given argument.","lastModifiedDate":"2016-09-22"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public boolean contains(Person toCheck) {","lastModifiedDate":"2018-01-10"},{"lineNumber":35,"author":{"gitId":"-"},"content":" requireNonNull(toCheck);","lastModifiedDate":"2017-05-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" return internalList.stream().anyMatch(toCheck::isSamePerson);","lastModifiedDate":"2018-04-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"modembcc"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"modembcc"},"content":" * Returns the person object with the matching name in the addressbook","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"modembcc"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"ananya21"},"content":" public Person findPerson(Name name) {","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"ananya21"},"content":" requireNonNull(name);","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"ananya21"},"content":" return internalList.stream()","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"ananya21"},"content":" .filter(person -\u003e person.getName().equals(name))","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"ananya21"},"content":" .findFirst()","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"ananya21"},"content":" .orElse(null);","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * Adds a person to the list.","lastModifiedDate":"2016-08-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * The person must not already exist in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void add(Person toAdd) {","lastModifiedDate":"2018-08-07"},{"lineNumber":55,"author":{"gitId":"-"},"content":" requireNonNull(toAdd);","lastModifiedDate":"2017-05-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":" if (contains(toAdd)) {","lastModifiedDate":"2016-08-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2016-08-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" internalList.add(toAdd);","lastModifiedDate":"2018-01-10"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * Replaces the person {@code target} in the list with {@code editedPerson}.","lastModifiedDate":"2017-06-07"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * {@code target} must exist in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":65,"author":{"gitId":"-"},"content":" * The person identity of {@code editedPerson} must not be the same as another existing person in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-07"},{"lineNumber":68,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2018-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" int index \u003d internalList.indexOf(target);","lastModifiedDate":"2017-06-07"},{"lineNumber":71,"author":{"gitId":"-"},"content":" if (index \u003d\u003d -1) {","lastModifiedDate":"2017-06-07"},{"lineNumber":72,"author":{"gitId":"-"},"content":" throw new PersonNotFoundException();","lastModifiedDate":"2017-06-07"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-07"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-07"},{"lineNumber":75,"author":{"gitId":"-"},"content":" if (!target.isSamePerson(editedPerson) \u0026\u0026 contains(editedPerson)) {","lastModifiedDate":"2018-04-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2016-12-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" internalList.set(index, editedPerson);","lastModifiedDate":"2018-01-10"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * Removes the equivalent person from the list.","lastModifiedDate":"2016-08-24"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * The person must exist in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":85,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void remove(Person toRemove) {","lastModifiedDate":"2018-08-07"},{"lineNumber":87,"author":{"gitId":"-"},"content":" requireNonNull(toRemove);","lastModifiedDate":"2017-05-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":" if (!internalList.remove(toRemove)) {","lastModifiedDate":"2018-02-28"},{"lineNumber":89,"author":{"gitId":"-"},"content":" throw new PersonNotFoundException();","lastModifiedDate":"2016-08-24"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void setPersons(UniquePersonList replacement) {","lastModifiedDate":"2016-10-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":" requireNonNull(replacement);","lastModifiedDate":"2018-08-08"},{"lineNumber":95,"author":{"gitId":"-"},"content":" internalList.setAll(replacement.internalList);","lastModifiedDate":"2018-08-14"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * Replaces the contents of this list with {@code persons}.","lastModifiedDate":"2018-08-07"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * {@code persons} must not contain duplicate persons.","lastModifiedDate":"2018-08-07"},{"lineNumber":101,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":102,"author":{"gitId":"-"},"content":" public void setPersons(List\u003cPerson\u003e persons) {","lastModifiedDate":"2018-08-07"},{"lineNumber":103,"author":{"gitId":"-"},"content":" requireAllNonNull(persons);","lastModifiedDate":"2018-01-10"},{"lineNumber":104,"author":{"gitId":"-"},"content":" if (!personsAreUnique(persons)) {","lastModifiedDate":"2018-04-19"},{"lineNumber":105,"author":{"gitId":"-"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2018-01-21"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-21"},{"lineNumber":108,"author":{"gitId":"-"},"content":" internalList.setAll(persons);","lastModifiedDate":"2018-08-14"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":111,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-09-01"},{"lineNumber":112,"author":{"gitId":"-"},"content":" * Returns the backing list as an unmodifiable {@code ObservableList}.","lastModifiedDate":"2017-09-01"},{"lineNumber":113,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-09-01"},{"lineNumber":114,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e asUnmodifiableObservableList() {","lastModifiedDate":"2018-04-05"},{"lineNumber":115,"author":{"gitId":"-"},"content":" return internalUnmodifiableList;","lastModifiedDate":"2018-12-09"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":118,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":119,"author":{"gitId":"-"},"content":" public Iterator\u003cPerson\u003e iterator() {","lastModifiedDate":"2016-08-24"},{"lineNumber":120,"author":{"gitId":"-"},"content":" return internalList.iterator();","lastModifiedDate":"2016-08-24"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":124,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-21"},{"lineNumber":125,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":126,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":129,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":130,"author":{"gitId":"-"},"content":" if (!(other instanceof UniquePersonList)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":131,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":134,"author":{"gitId":"-"},"content":" UniquePersonList otherUniquePersonList \u003d (UniquePersonList) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":135,"author":{"gitId":"-"},"content":" return internalList.equals(otherUniquePersonList.internalList);","lastModifiedDate":"2023-07-13"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":138,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":139,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-21"},{"lineNumber":140,"author":{"gitId":"-"},"content":" return internalList.hashCode();","lastModifiedDate":"2016-09-21"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":143,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-24"},{"lineNumber":144,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-24"},{"lineNumber":145,"author":{"gitId":"-"},"content":" return internalList.toString();","lastModifiedDate":"2019-02-24"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-24"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-24"},{"lineNumber":148,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":149,"author":{"gitId":"-"},"content":" * Returns true if {@code persons} contains only unique persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":150,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":151,"author":{"gitId":"-"},"content":" private boolean personsAreUnique(List\u003cPerson\u003e persons) {","lastModifiedDate":"2018-04-19"},{"lineNumber":152,"author":{"gitId":"-"},"content":" for (int i \u003d 0; i \u003c persons.size() - 1; i++) {","lastModifiedDate":"2018-04-19"},{"lineNumber":153,"author":{"gitId":"-"},"content":" for (int j \u003d i + 1; j \u003c persons.size(); j++) {","lastModifiedDate":"2018-04-19"},{"lineNumber":154,"author":{"gitId":"-"},"content":" if (persons.get(i).isSamePerson(persons.get(j))) {","lastModifiedDate":"2018-04-19"},{"lineNumber":155,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-04-19"},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":158,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":159,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19"},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":161,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"modembcc":3,"-":150,"ananya21":8}},{"path":"src/main/java/seedu/address/model/project/Member.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ananya21"},"content":"package seedu.address.model.project;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"ananya21"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"ananya21"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"ananya21"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"ananya21"},"content":" * Represents a Task of Project","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"ananya21"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"ananya21"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"ananya21"},"content":"public class Member {","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"ananya21"},"content":" // Identity fields","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"ananya21"},"content":" private final Name memberName;","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"ananya21"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"ananya21"},"content":" * Constructs a new task object","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"ananya21"},"content":" * @param name the task name","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"ananya21"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"ananya21"},"content":" public Member(String name) {","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"ananya21"},"content":" requireAllNonNull(name);","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"ananya21"},"content":" this.memberName \u003d new Name(name);","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"ananya21"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"ananya21"},"content":" * Get the name of the task","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"ananya21"},"content":" * @return","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"ananya21"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"ananya21"},"content":" public Name getName() {","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"ananya21"},"content":" return memberName;","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"ananya21"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"ananya21"},"content":" * Returns true if both tasks have the same identity and data fields.","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"ananya21"},"content":" * This defines a stronger notion of equality between two tasks.","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"ananya21"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"ananya21"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"ananya21"},"content":" public boolean equals(Object obj) {","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"ananya21"},"content":" if (this \u003d\u003d obj) {","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"ananya21"},"content":" return true;","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"ananya21"},"content":" if (!(obj instanceof Task)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"ananya21"},"content":" return false;","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"ananya21"},"content":" Member other \u003d (Member) obj;","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"ananya21"},"content":" return memberName.equals(other.memberName);","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"ananya21"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"ananya21"},"content":" public String toString() {","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"ananya21"},"content":" return memberName.toString();","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"ananya21"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"ananya21":54}},{"path":"src/main/java/seedu/address/model/project/Task.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ananya21"},"content":"package seedu.address.model.project;","lastModifiedDate":"2024-03-15"},{"lineNumber":2,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":3,"author":{"gitId":"ananya21"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"modembcc"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"modembcc"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-03-22"},{"lineNumber":7,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"ananya21"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"modembcc"},"content":"/**","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"modembcc"},"content":" * Represents a Task of Project","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"modembcc"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"modembcc"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"ananya21"},"content":"public class Task {","lastModifiedDate":"2024-03-15"},{"lineNumber":15,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"ananya21"},"content":" // Identity fields","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"ananya21"},"content":" private final Name taskName;","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"ananya21"},"content":" private Member member;","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"ananya21"},"content":" private boolean status;","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"ananya21"},"content":" private Integer progressCounter \u003d 0;","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"ananya21"},"content":" private LocalDate deadlineDate;","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"modembcc"},"content":" private DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM d yyyy\");","lastModifiedDate":"2024-03-22"},{"lineNumber":27,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"modembcc"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"modembcc"},"content":" * Constructs a new task object","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"modembcc"},"content":" * @param name the task name","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"modembcc"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"ananya21"},"content":" public Task(String name) {","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"ananya21"},"content":" requireAllNonNull(name);","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"ananya21"},"content":" this.taskName \u003d new Name(name);","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"ananya21"},"content":" this.status \u003d true;","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"modembcc"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"modembcc"},"content":" * Assigns a Person to the task","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"ananya21"},"content":" * @param member the person assigned to the task","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"modembcc"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"ananya21"},"content":" public void assignPerson(Member member) {","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"ananya21"},"content":" this.member \u003d member;","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"modembcc"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"modembcc"},"content":" * Sets the task status as complete","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"modembcc"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"ananya21"},"content":" public void setComplete() {","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"ananya21"},"content":" this.status \u003d false;","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"modembcc"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"modembcc"},"content":" * Sets the task status as incomplete","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"modembcc"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"ananya21"},"content":" public void setIncomplete() {","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"ananya21"},"content":" this.status \u003d true;","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"ananya21"},"content":" progressCounter \u003d progressCounter + 1;","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"modembcc"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"modembcc"},"content":" * Gets the status of the task as a string","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"modembcc"},"content":" * @return the string represeting the status of the task","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"modembcc"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"ananya21"},"content":" public String getStatus() {","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"ananya21"},"content":" if (status) {","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"ananya21"},"content":" return \"Incomplete\";","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"ananya21"},"content":" } else {","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"ananya21"},"content":" return \"Complete\";","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"modembcc"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"modembcc"},"content":" * Sets the deadline of the task","lastModifiedDate":"2024-03-19"},{"lineNumber":75,"author":{"gitId":"modembcc"},"content":" * @param deadline the datetime string to be parsed and set as deadline","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"modembcc"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"ananya21"},"content":" public void setDeadline(String deadline) {","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"modembcc"},"content":" this.deadlineDate \u003d LocalDate.parse(deadline, formatter);","lastModifiedDate":"2024-03-22"},{"lineNumber":79,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"modembcc"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":82,"author":{"gitId":"modembcc"},"content":" * Get the name of the task","lastModifiedDate":"2024-03-19"},{"lineNumber":83,"author":{"gitId":"modembcc"},"content":" * @return","lastModifiedDate":"2024-03-19"},{"lineNumber":84,"author":{"gitId":"modembcc"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":85,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":86,"author":{"gitId":"ananya21"},"content":" public Name getName() {","lastModifiedDate":"2024-03-18"},{"lineNumber":87,"author":{"gitId":"ananya21"},"content":" return taskName;","lastModifiedDate":"2024-03-18"},{"lineNumber":88,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":89,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":90,"author":{"gitId":"modembcc"},"content":" public String getMemberName() {","lastModifiedDate":"2024-03-22"},{"lineNumber":91,"author":{"gitId":"modembcc"},"content":" return member \u003d\u003d null","lastModifiedDate":"2024-03-22"},{"lineNumber":92,"author":{"gitId":"modembcc"},"content":" ? \"\"","lastModifiedDate":"2024-03-22"},{"lineNumber":93,"author":{"gitId":"modembcc"},"content":" : member.getName().fullName;","lastModifiedDate":"2024-03-22"},{"lineNumber":94,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":95,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":96,"author":{"gitId":"modembcc"},"content":" public String getDeadlineString() {","lastModifiedDate":"2024-03-22"},{"lineNumber":97,"author":{"gitId":"modembcc"},"content":" return deadlineDate \u003d\u003d null","lastModifiedDate":"2024-03-22"},{"lineNumber":98,"author":{"gitId":"modembcc"},"content":" ? \"\"","lastModifiedDate":"2024-03-22"},{"lineNumber":99,"author":{"gitId":"modembcc"},"content":" : deadlineDate.format(formatter);","lastModifiedDate":"2024-03-22"},{"lineNumber":100,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":101,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":102,"author":{"gitId":"modembcc"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":103,"author":{"gitId":"modembcc"},"content":" * Returns true if both tasks have the same identity and data fields.","lastModifiedDate":"2024-03-19"},{"lineNumber":104,"author":{"gitId":"modembcc"},"content":" * This defines a stronger notion of equality between two tasks.","lastModifiedDate":"2024-03-19"},{"lineNumber":105,"author":{"gitId":"modembcc"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":106,"author":{"gitId":"ThitipatC"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":107,"author":{"gitId":"ThitipatC"},"content":" public boolean equals(Object obj) {","lastModifiedDate":"2024-03-18"},{"lineNumber":108,"author":{"gitId":"ThitipatC"},"content":" if (this \u003d\u003d obj) {","lastModifiedDate":"2024-03-18"},{"lineNumber":109,"author":{"gitId":"ThitipatC"},"content":" return true;","lastModifiedDate":"2024-03-18"},{"lineNumber":110,"author":{"gitId":"ThitipatC"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":111,"author":{"gitId":"ThitipatC"},"content":" if (!(obj instanceof Task)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":112,"author":{"gitId":"ThitipatC"},"content":" return false;","lastModifiedDate":"2024-03-18"},{"lineNumber":113,"author":{"gitId":"ThitipatC"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":114,"author":{"gitId":"ThitipatC"},"content":" Task other \u003d (Task) obj;","lastModifiedDate":"2024-03-18"},{"lineNumber":115,"author":{"gitId":"ThitipatC"},"content":" return taskName.equals(other.taskName);","lastModifiedDate":"2024-03-18"},{"lineNumber":116,"author":{"gitId":"ThitipatC"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":117,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":118,"author":{"gitId":"ananya21"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":119,"author":{"gitId":"ananya21"},"content":" public String toString() {","lastModifiedDate":"2024-03-21"},{"lineNumber":120,"author":{"gitId":"ananya21"},"content":" return taskName.toString();","lastModifiedDate":"2024-03-21"},{"lineNumber":121,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":122,"author":{"gitId":"ThitipatC"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":123,"author":{"gitId":"ananya21"},"content":"}","lastModifiedDate":"2024-03-15"}],"authorContributionMap":{"modembcc":51,"ThitipatC":12,"ananya21":60}},{"path":"src/main/java/seedu/address/model/util/SampleDataUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.util;","lastModifiedDate":"2016-12-20"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-12-20"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-12-20"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-20"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-20"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-14"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public static Person[] getSamplePersons() {","lastModifiedDate":"2016-12-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":" return new Person[] {","lastModifiedDate":"2016-12-20"},{"lineNumber":19,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" new Person(new Name(\"CS2101 Presentation\")),","lastModifiedDate":"2024-02-29"},{"lineNumber":20,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" new Person(new Name(\"Duke chatbot\")),","lastModifiedDate":"2024-02-29"},{"lineNumber":21,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" new Person(new Name(\"IS1128 project\")),","lastModifiedDate":"2024-02-29"},{"lineNumber":22,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" new Person(new Name(\"CS2103T Ab3\")),","lastModifiedDate":"2024-02-29"},{"lineNumber":23,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" new Person(new Name(\"Coding project\"))","lastModifiedDate":"2024-02-29"},{"lineNumber":24,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07"},{"lineNumber":29,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20"},{"lineNumber":30,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":32,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2017-05-30"},{"lineNumber":39,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2018-01-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":44,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20"}],"authorContributionMap":{"Lin-Shuang-Shuang":5,"-":39}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedPerson.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-08-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Jackson-friendly version of {@link Person}.","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"class JsonAdaptedPerson {","lastModifiedDate":"2018-12-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private final String name;","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedTag\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-01-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given person details.","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(@JsonProperty(\"name\") String name, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @JsonProperty(\"email\") String email, @JsonProperty(\"address\") String address,","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags) {","lastModifiedDate":"2023-05-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" if (tags !\u003d null) {","lastModifiedDate":"2023-01-09"},{"lineNumber":33,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2023-01-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" final List\u003cTag\u003e personTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" for (JsonAdaptedTag tag : tags) {","lastModifiedDate":"2023-01-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":" personTags.add(tag.toModelType());","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return new Person(modelName);","lastModifiedDate":"2024-02-29"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"Lin-Shuang-Shuang":1,"-":64}},{"path":"src/main/java/seedu/address/ui/CurrentProjectPanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"modembcc"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":3,"author":{"gitId":"modembcc"},"content":"// import java.util.logging.Logger;","lastModifiedDate":"2024-03-22"},{"lineNumber":4,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":5,"author":{"gitId":"modembcc"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-22"},{"lineNumber":6,"author":{"gitId":"modembcc"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-03-22"},{"lineNumber":7,"author":{"gitId":"modembcc"},"content":"import javafx.scene.control.ListCell;","lastModifiedDate":"2024-03-22"},{"lineNumber":8,"author":{"gitId":"modembcc"},"content":"import javafx.scene.control.ListView;","lastModifiedDate":"2024-03-22"},{"lineNumber":9,"author":{"gitId":"modembcc"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"modembcc"},"content":"// import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"modembcc"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"modembcc"},"content":"/**","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"modembcc"},"content":" * Panel containing the list of persons.","lastModifiedDate":"2024-03-22"},{"lineNumber":15,"author":{"gitId":"modembcc"},"content":" */","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"modembcc"},"content":"public class CurrentProjectPanel extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-03-22"},{"lineNumber":17,"author":{"gitId":"modembcc"},"content":" private static final String FXML \u003d \"CurrentProjectPanel.fxml\";","lastModifiedDate":"2024-03-22"},{"lineNumber":18,"author":{"gitId":"modembcc"},"content":" // private final Logger logger \u003d LogsCenter.getLogger(PersonListPanel.class);","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":20,"author":{"gitId":"modembcc"},"content":" @FXML","lastModifiedDate":"2024-03-22"},{"lineNumber":21,"author":{"gitId":"modembcc"},"content":" private ListView\u003cPerson\u003e currentProjectView;","lastModifiedDate":"2024-03-22"},{"lineNumber":22,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"modembcc"},"content":" /**","lastModifiedDate":"2024-03-22"},{"lineNumber":24,"author":{"gitId":"modembcc"},"content":" * Creates a {@code PersonListPanel} with the given {@code ObservableList}.","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"modembcc"},"content":" */","lastModifiedDate":"2024-03-22"},{"lineNumber":26,"author":{"gitId":"modembcc"},"content":" public CurrentProjectPanel(ObservableList\u003cPerson\u003e currentProject) {","lastModifiedDate":"2024-03-22"},{"lineNumber":27,"author":{"gitId":"modembcc"},"content":" super(FXML);","lastModifiedDate":"2024-03-22"},{"lineNumber":28,"author":{"gitId":"modembcc"},"content":" currentProjectView.setItems(currentProject);","lastModifiedDate":"2024-03-22"},{"lineNumber":29,"author":{"gitId":"modembcc"},"content":" currentProjectView.setCellFactory(listView -\u003e new PersonListViewCell());","lastModifiedDate":"2024-03-22"},{"lineNumber":30,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":31,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":32,"author":{"gitId":"modembcc"},"content":" /**","lastModifiedDate":"2024-03-22"},{"lineNumber":33,"author":{"gitId":"modembcc"},"content":" * Custom {@code ListCell} that displays the graphics of a {@code Person} using a {@code PersonCard}.","lastModifiedDate":"2024-03-22"},{"lineNumber":34,"author":{"gitId":"modembcc"},"content":" */","lastModifiedDate":"2024-03-22"},{"lineNumber":35,"author":{"gitId":"modembcc"},"content":" class PersonListViewCell extends ListCell\u003cPerson\u003e {","lastModifiedDate":"2024-03-22"},{"lineNumber":36,"author":{"gitId":"modembcc"},"content":" @Override","lastModifiedDate":"2024-03-22"},{"lineNumber":37,"author":{"gitId":"modembcc"},"content":" protected void updateItem(Person person, boolean empty) {","lastModifiedDate":"2024-03-22"},{"lineNumber":38,"author":{"gitId":"modembcc"},"content":" super.updateItem(person, empty);","lastModifiedDate":"2024-03-22"},{"lineNumber":39,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":40,"author":{"gitId":"modembcc"},"content":" if (empty || person \u003d\u003d null) {","lastModifiedDate":"2024-03-22"},{"lineNumber":41,"author":{"gitId":"modembcc"},"content":" setGraphic(null);","lastModifiedDate":"2024-03-22"},{"lineNumber":42,"author":{"gitId":"modembcc"},"content":" setText(null);","lastModifiedDate":"2024-03-22"},{"lineNumber":43,"author":{"gitId":"modembcc"},"content":" } else {","lastModifiedDate":"2024-03-22"},{"lineNumber":44,"author":{"gitId":"modembcc"},"content":" setGraphic(new TaskListPanel(person).getRoot());","lastModifiedDate":"2024-03-22"},{"lineNumber":45,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":46,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":47,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":48,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":49,"author":{"gitId":"modembcc"},"content":"}","lastModifiedDate":"2024-03-22"}],"authorContributionMap":{"modembcc":49}},{"path":"src/main/java/seedu/address/ui/MainWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-06-16"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.event.ActionEvent;","lastModifiedDate":"2016-12-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-08-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.MenuItem;","lastModifiedDate":"2016-08-26"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.control.TextInputControl;","lastModifiedDate":"2016-12-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyCombination;","lastModifiedDate":"2016-08-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyEvent;","lastModifiedDate":"2016-12-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.scene.layout.StackPane;","lastModifiedDate":"2017-05-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2016-09-28"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2017-06-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.Logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * The Main Window. Provides the basic application layout containing","lastModifiedDate":"2016-08-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * a menu bar and space where other JavaFX elements can be placed.","lastModifiedDate":"2016-08-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class MainWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-11-29"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"MainWindow.fxml\";","lastModifiedDate":"2016-08-18"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(getClass());","lastModifiedDate":"2018-08-14"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Stage primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // Independent Ui parts residing in this Ui container","lastModifiedDate":"2016-08-18"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private PersonListPanel personListPanel;","lastModifiedDate":"2016-08-18"},{"lineNumber":35,"author":{"gitId":"modembcc"},"content":" private CurrentProjectPanel currentProjectPanel;","lastModifiedDate":"2024-03-22"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private ResultDisplay resultDisplay;","lastModifiedDate":"2018-12-09"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private HelpWindow helpWindow;","lastModifiedDate":"2018-03-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private StackPane commandBoxPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":43,"author":{"gitId":"-"},"content":" private MenuItem helpMenuItem;","lastModifiedDate":"2016-08-18"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":46,"author":{"gitId":"-"},"content":" private StackPane personListPanelPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":" private StackPane resultDisplayPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2024-03-22"},{"lineNumber":52,"author":{"gitId":"modembcc"},"content":" private StackPane currentProjectPanelPlaceholder;","lastModifiedDate":"2024-03-22"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * Creates a {@code MainWindow} with the given {@code Stage} and {@code Logic}.","lastModifiedDate":"2020-05-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public MainWindow(Stage primaryStage, Logic logic) {","lastModifiedDate":"2018-12-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" super(FXML, primaryStage);","lastModifiedDate":"2017-11-29"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":60,"author":{"gitId":"-"},"content":" // Set dependencies","lastModifiedDate":"2016-09-21"},{"lineNumber":61,"author":{"gitId":"-"},"content":" this.primaryStage \u003d primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":62,"author":{"gitId":"-"},"content":" this.logic \u003d logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":" // Configure the UI","lastModifiedDate":"2016-09-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":" setWindowDefaultSize(logic.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":67,"author":{"gitId":"-"},"content":" setAccelerators();","lastModifiedDate":"2016-09-21"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":69,"author":{"gitId":"-"},"content":" helpWindow \u003d new HelpWindow();","lastModifiedDate":"2018-03-15"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public Stage getPrimaryStage() {","lastModifiedDate":"2016-12-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return primaryStage;","lastModifiedDate":"2016-12-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":" private void setAccelerators() {","lastModifiedDate":"2016-09-21"},{"lineNumber":77,"author":{"gitId":"-"},"content":" setAccelerator(helpMenuItem, KeyCombination.valueOf(\"F1\"));","lastModifiedDate":"2016-12-18"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":80,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-18"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * Sets the accelerator of a MenuItem.","lastModifiedDate":"2016-12-18"},{"lineNumber":82,"author":{"gitId":"-"},"content":" * @param keyCombination the KeyCombination value of the accelerator","lastModifiedDate":"2016-12-18"},{"lineNumber":83,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":84,"author":{"gitId":"-"},"content":" private void setAccelerator(MenuItem menuItem, KeyCombination keyCombination) {","lastModifiedDate":"2016-12-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":" menuItem.setAccelerator(keyCombination);","lastModifiedDate":"2016-12-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-12-18"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * TODO: the code below can be removed once the bug reported here","lastModifiedDate":"2016-12-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * https://bugs.openjdk.java.net/browse/JDK-8131666","lastModifiedDate":"2016-12-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * is fixed in later version of SDK.","lastModifiedDate":"2016-12-18"},{"lineNumber":91,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * According to the bug report, TextInputControl (TextField, TextArea) will","lastModifiedDate":"2016-12-18"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * consume function-key events. Because CommandBox contains a TextField, and","lastModifiedDate":"2016-12-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * ResultDisplay contains a TextArea, thus some accelerators (e.g F1) will","lastModifiedDate":"2016-12-18"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * not work when the focus is in them because the key event is consumed by","lastModifiedDate":"2016-12-18"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * the TextInputControl(s).","lastModifiedDate":"2016-12-18"},{"lineNumber":97,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * For now, we add following event filter to capture such key events and open","lastModifiedDate":"2016-12-18"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * help window purposely so to support accelerators even when focus is","lastModifiedDate":"2016-12-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * in CommandBox or ResultDisplay.","lastModifiedDate":"2016-12-18"},{"lineNumber":101,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":102,"author":{"gitId":"-"},"content":" getRoot().addEventFilter(KeyEvent.KEY_PRESSED, event -\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":103,"author":{"gitId":"-"},"content":" if (event.getTarget() instanceof TextInputControl \u0026\u0026 keyCombination.match(event)) {","lastModifiedDate":"2016-12-18"},{"lineNumber":104,"author":{"gitId":"-"},"content":" menuItem.getOnAction().handle(new ActionEvent());","lastModifiedDate":"2016-12-18"},{"lineNumber":105,"author":{"gitId":"-"},"content":" event.consume();","lastModifiedDate":"2016-12-18"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":107,"author":{"gitId":"-"},"content":" });","lastModifiedDate":"2016-12-18"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":110,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":111,"author":{"gitId":"-"},"content":" * Fills up all the placeholders of this window.","lastModifiedDate":"2017-08-16"},{"lineNumber":112,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":113,"author":{"gitId":"-"},"content":" void fillInnerParts() {","lastModifiedDate":"2016-09-21"},{"lineNumber":114,"author":{"gitId":"-"},"content":" personListPanel \u003d new PersonListPanel(logic.getFilteredPersonList());","lastModifiedDate":"2019-01-25"},{"lineNumber":115,"author":{"gitId":"-"},"content":" personListPanelPlaceholder.getChildren().add(personListPanel.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":117,"author":{"gitId":"modembcc"},"content":" currentProjectPanel \u003d new CurrentProjectPanel(logic.getCurrentProject());","lastModifiedDate":"2024-03-22"},{"lineNumber":118,"author":{"gitId":"modembcc"},"content":" currentProjectPanelPlaceholder.getChildren().add(currentProjectPanel.getRoot());","lastModifiedDate":"2024-03-22"},{"lineNumber":119,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":120,"author":{"gitId":"-"},"content":" resultDisplay \u003d new ResultDisplay();","lastModifiedDate":"2018-12-09"},{"lineNumber":121,"author":{"gitId":"-"},"content":" resultDisplayPlaceholder.getChildren().add(resultDisplay.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":" CommandBox commandBox \u003d new CommandBox(this::executeCommand);","lastModifiedDate":"2019-01-25"},{"lineNumber":124,"author":{"gitId":"-"},"content":" commandBoxPlaceholder.getChildren().add(commandBox.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":127,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":128,"author":{"gitId":"-"},"content":" * Sets the default size based on {@code guiSettings}.","lastModifiedDate":"2018-11-27"},{"lineNumber":129,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":130,"author":{"gitId":"-"},"content":" private void setWindowDefaultSize(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":131,"author":{"gitId":"-"},"content":" primaryStage.setHeight(guiSettings.getWindowHeight());","lastModifiedDate":"2018-11-27"},{"lineNumber":132,"author":{"gitId":"-"},"content":" primaryStage.setWidth(guiSettings.getWindowWidth());","lastModifiedDate":"2018-11-27"},{"lineNumber":133,"author":{"gitId":"-"},"content":" if (guiSettings.getWindowCoordinates() !\u003d null) {","lastModifiedDate":"2018-11-27"},{"lineNumber":134,"author":{"gitId":"-"},"content":" primaryStage.setX(guiSettings.getWindowCoordinates().getX());","lastModifiedDate":"2018-11-27"},{"lineNumber":135,"author":{"gitId":"-"},"content":" primaryStage.setY(guiSettings.getWindowCoordinates().getY());","lastModifiedDate":"2018-11-27"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":139,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":140,"author":{"gitId":"-"},"content":" * Opens the help window or focuses on it if it\u0027s already opened.","lastModifiedDate":"2018-03-15"},{"lineNumber":141,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":142,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":143,"author":{"gitId":"-"},"content":" public void handleHelp() {","lastModifiedDate":"2016-08-31"},{"lineNumber":144,"author":{"gitId":"-"},"content":" if (!helpWindow.isShowing()) {","lastModifiedDate":"2018-03-15"},{"lineNumber":145,"author":{"gitId":"-"},"content":" helpWindow.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":146,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-15"},{"lineNumber":147,"author":{"gitId":"-"},"content":" helpWindow.focus();","lastModifiedDate":"2018-03-15"},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":151,"author":{"gitId":"-"},"content":" void show() {","lastModifiedDate":"2016-10-15"},{"lineNumber":152,"author":{"gitId":"-"},"content":" primaryStage.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":155,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":156,"author":{"gitId":"-"},"content":" * Closes the application.","lastModifiedDate":"2016-08-18"},{"lineNumber":157,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":158,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":159,"author":{"gitId":"-"},"content":" private void handleExit() {","lastModifiedDate":"2016-08-18"},{"lineNumber":160,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(primaryStage.getWidth(), primaryStage.getHeight(),","lastModifiedDate":"2018-12-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":" (int) primaryStage.getX(), (int) primaryStage.getY());","lastModifiedDate":"2018-12-08"},{"lineNumber":162,"author":{"gitId":"-"},"content":" logic.setGuiSettings(guiSettings);","lastModifiedDate":"2018-12-08"},{"lineNumber":163,"author":{"gitId":"-"},"content":" helpWindow.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":" primaryStage.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-25"},{"lineNumber":167,"author":{"gitId":"-"},"content":" public PersonListPanel getPersonListPanel() {","lastModifiedDate":"2016-08-25"},{"lineNumber":168,"author":{"gitId":"-"},"content":" return personListPanel;","lastModifiedDate":"2018-08-14"},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-25"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":171,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":172,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2018-12-09"},{"lineNumber":173,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09"},{"lineNumber":174,"author":{"gitId":"-"},"content":" * @see seedu.address.logic.Logic#execute(String)","lastModifiedDate":"2018-12-09"},{"lineNumber":175,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":176,"author":{"gitId":"-"},"content":" private CommandResult executeCommand(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2018-12-09"},{"lineNumber":177,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":178,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d logic.execute(commandText);","lastModifiedDate":"2018-12-09"},{"lineNumber":179,"author":{"gitId":"-"},"content":" logger.info(\"Result: \" + commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":180,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":182,"author":{"gitId":"-"},"content":" if (commandResult.isShowHelp()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":183,"author":{"gitId":"-"},"content":" handleHelp();","lastModifiedDate":"2018-12-09"},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":186,"author":{"gitId":"-"},"content":" if (commandResult.isExit()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":187,"author":{"gitId":"-"},"content":" handleExit();","lastModifiedDate":"2018-12-09"},{"lineNumber":188,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":190,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":191,"author":{"gitId":"-"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2018-12-09"},{"lineNumber":192,"author":{"gitId":"-"},"content":" logger.info(\"An error occurred while executing command: \" + commandText);","lastModifiedDate":"2023-06-13"},{"lineNumber":193,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(e.getMessage());","lastModifiedDate":"2018-12-09"},{"lineNumber":194,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2018-12-09"},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":197,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"modembcc":5,"-":192}},{"path":"src/main/java/seedu/address/ui/PersonListPanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"modembcc"},"content":"// import java.util.logging.Logger;","lastModifiedDate":"2024-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-08-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-08-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.ListCell;","lastModifiedDate":"2016-09-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.control.ListView;","lastModifiedDate":"2016-08-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24"},{"lineNumber":10,"author":{"gitId":"modembcc"},"content":"// import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-03-15"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Panel containing the list of persons.","lastModifiedDate":"2016-09-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class PersonListPanel extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"PersonListPanel.fxml\";","lastModifiedDate":"2016-09-14"},{"lineNumber":18,"author":{"gitId":"modembcc"},"content":" // private final Logger logger \u003d LogsCenter.getLogger(PersonListPanel.class);","lastModifiedDate":"2024-03-15"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private ListView\u003cPerson\u003e personListView;","lastModifiedDate":"2018-02-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Creates a {@code PersonListPanel} with the given {@code ObservableList}.","lastModifiedDate":"2020-05-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public PersonListPanel(ObservableList\u003cPerson\u003e personList) {","lastModifiedDate":"2019-01-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" personListView.setItems(personList);","lastModifiedDate":"2018-02-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" personListView.setCellFactory(listView -\u003e new PersonListViewCell());","lastModifiedDate":"2016-08-18"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Custom {@code ListCell} that displays the graphics of a {@code Person} using a {@code PersonCard}.","lastModifiedDate":"2018-02-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":" class PersonListViewCell extends ListCell\u003cPerson\u003e {","lastModifiedDate":"2018-02-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" protected void updateItem(Person person, boolean empty) {","lastModifiedDate":"2018-02-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" super.updateItem(person, empty);","lastModifiedDate":"2016-09-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" if (empty || person \u003d\u003d null) {","lastModifiedDate":"2016-09-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" setGraphic(null);","lastModifiedDate":"2016-09-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" setText(null);","lastModifiedDate":"2016-09-21"},{"lineNumber":43,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2016-09-21"},{"lineNumber":44,"author":{"gitId":"-"},"content":" setGraphic(new PersonCard(person, getIndex() + 1).getRoot());","lastModifiedDate":"2018-02-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"modembcc":3,"-":46}},{"path":"src/main/java/seedu/address/ui/TaskCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"modembcc"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":3,"author":{"gitId":"modembcc"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-03-22"},{"lineNumber":4,"author":{"gitId":"modembcc"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2024-03-22"},{"lineNumber":5,"author":{"gitId":"modembcc"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2024-03-22"},{"lineNumber":6,"author":{"gitId":"modembcc"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-03-22"},{"lineNumber":7,"author":{"gitId":"modembcc"},"content":"import seedu.address.model.project.Task;","lastModifiedDate":"2024-03-22"},{"lineNumber":8,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":9,"author":{"gitId":"modembcc"},"content":"/**","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"modembcc"},"content":" * An UI component that displays information of a {@code Person}.","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"modembcc"},"content":" */","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"modembcc"},"content":"public class TaskCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"modembcc"},"content":" private static final String FXML \u003d \"TaskListCard.fxml\";","lastModifiedDate":"2024-03-22"},{"lineNumber":15,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"modembcc"},"content":" /**","lastModifiedDate":"2024-03-22"},{"lineNumber":17,"author":{"gitId":"modembcc"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2024-03-22"},{"lineNumber":18,"author":{"gitId":"modembcc"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"author":{"gitId":"modembcc"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2024-03-22"},{"lineNumber":20,"author":{"gitId":"modembcc"},"content":" *","lastModifiedDate":"2024-03-22"},{"lineNumber":21,"author":{"gitId":"modembcc"},"content":" * @see \u003ca href\u003d\"https://github.com/se-edu/addressbook-level4/issues/336\"\u003eThe issue on AddressBook level 4\u003c/a\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":22,"author":{"gitId":"modembcc"},"content":" */","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":24,"author":{"gitId":"modembcc"},"content":" public final Task task;","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":26,"author":{"gitId":"modembcc"},"content":" @FXML","lastModifiedDate":"2024-03-22"},{"lineNumber":27,"author":{"gitId":"modembcc"},"content":" private HBox cardPane;","lastModifiedDate":"2024-03-22"},{"lineNumber":28,"author":{"gitId":"modembcc"},"content":" @FXML","lastModifiedDate":"2024-03-22"},{"lineNumber":29,"author":{"gitId":"modembcc"},"content":" private Label name;","lastModifiedDate":"2024-03-22"},{"lineNumber":30,"author":{"gitId":"modembcc"},"content":" @FXML","lastModifiedDate":"2024-03-22"},{"lineNumber":31,"author":{"gitId":"modembcc"},"content":" private Label member;","lastModifiedDate":"2024-03-22"},{"lineNumber":32,"author":{"gitId":"modembcc"},"content":" @FXML","lastModifiedDate":"2024-03-22"},{"lineNumber":33,"author":{"gitId":"modembcc"},"content":" private Label deadlineDate;","lastModifiedDate":"2024-03-22"},{"lineNumber":34,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":35,"author":{"gitId":"modembcc"},"content":" /**","lastModifiedDate":"2024-03-22"},{"lineNumber":36,"author":{"gitId":"modembcc"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2024-03-22"},{"lineNumber":37,"author":{"gitId":"modembcc"},"content":" */","lastModifiedDate":"2024-03-22"},{"lineNumber":38,"author":{"gitId":"modembcc"},"content":" public TaskCard(Task task) {","lastModifiedDate":"2024-03-22"},{"lineNumber":39,"author":{"gitId":"modembcc"},"content":" super(FXML);","lastModifiedDate":"2024-03-22"},{"lineNumber":40,"author":{"gitId":"modembcc"},"content":" this.task \u003d task;","lastModifiedDate":"2024-03-22"},{"lineNumber":41,"author":{"gitId":"modembcc"},"content":" name.setText(task.getName().fullName);","lastModifiedDate":"2024-03-22"},{"lineNumber":42,"author":{"gitId":"modembcc"},"content":" member.setText(\"Member: \" + task.getMemberName());","lastModifiedDate":"2024-03-22"},{"lineNumber":43,"author":{"gitId":"modembcc"},"content":" deadlineDate.setText(\"Deadline: \" + task.getDeadlineString());","lastModifiedDate":"2024-03-22"},{"lineNumber":44,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":45,"author":{"gitId":"modembcc"},"content":"}","lastModifiedDate":"2024-03-22"}],"authorContributionMap":{"modembcc":45}},{"path":"src/main/java/seedu/address/ui/TaskListPanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"modembcc"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":3,"author":{"gitId":"modembcc"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-03-22"},{"lineNumber":4,"author":{"gitId":"modembcc"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2024-03-22"},{"lineNumber":5,"author":{"gitId":"modembcc"},"content":"import javafx.scene.control.ListCell;","lastModifiedDate":"2024-03-22"},{"lineNumber":6,"author":{"gitId":"modembcc"},"content":"import javafx.scene.control.ListView;","lastModifiedDate":"2024-03-22"},{"lineNumber":7,"author":{"gitId":"modembcc"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-03-22"},{"lineNumber":8,"author":{"gitId":"modembcc"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-22"},{"lineNumber":9,"author":{"gitId":"modembcc"},"content":"import seedu.address.model.project.Task;","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"modembcc"},"content":"/**","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"modembcc"},"content":" * Panel containing the list of persons.","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"modembcc"},"content":" */","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"modembcc"},"content":"public class TaskListPanel extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-03-22"},{"lineNumber":15,"author":{"gitId":"modembcc"},"content":" private static final String FXML \u003d \"TaskListPanel.fxml\";","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":17,"author":{"gitId":"modembcc"},"content":" public final Person currentProject;","lastModifiedDate":"2024-03-22"},{"lineNumber":18,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"author":{"gitId":"modembcc"},"content":" @FXML","lastModifiedDate":"2024-03-22"},{"lineNumber":20,"author":{"gitId":"modembcc"},"content":" private Label showingProjectName;","lastModifiedDate":"2024-03-22"},{"lineNumber":21,"author":{"gitId":"modembcc"},"content":" @FXML","lastModifiedDate":"2024-03-22"},{"lineNumber":22,"author":{"gitId":"modembcc"},"content":" private ListView\u003cTask\u003e undoneTaskListView;","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"modembcc"},"content":" @FXML","lastModifiedDate":"2024-03-22"},{"lineNumber":24,"author":{"gitId":"modembcc"},"content":" private ListView\u003cTask\u003e doneTaskListView;","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":26,"author":{"gitId":"modembcc"},"content":" /**","lastModifiedDate":"2024-03-22"},{"lineNumber":27,"author":{"gitId":"modembcc"},"content":" * Creates a {@code PersonListPanel} with the given {@code ObservableList}.","lastModifiedDate":"2024-03-22"},{"lineNumber":28,"author":{"gitId":"modembcc"},"content":" */","lastModifiedDate":"2024-03-22"},{"lineNumber":29,"author":{"gitId":"modembcc"},"content":" public TaskListPanel(Person currentProject) {","lastModifiedDate":"2024-03-22"},{"lineNumber":30,"author":{"gitId":"modembcc"},"content":" super(FXML);","lastModifiedDate":"2024-03-22"},{"lineNumber":31,"author":{"gitId":"modembcc"},"content":" this.currentProject \u003d currentProject;","lastModifiedDate":"2024-03-22"},{"lineNumber":32,"author":{"gitId":"modembcc"},"content":" showingProjectName.setText(\"Showing Project: \" + currentProject.getName().fullName);","lastModifiedDate":"2024-03-22"},{"lineNumber":33,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":34,"author":{"gitId":"modembcc"},"content":" undoneTaskListView.getItems().clear();","lastModifiedDate":"2024-03-22"},{"lineNumber":35,"author":{"gitId":"modembcc"},"content":" undoneTaskListView.getItems().addAll(currentProject.getUndoneTasks());","lastModifiedDate":"2024-03-22"},{"lineNumber":36,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":37,"author":{"gitId":"modembcc"},"content":" undoneTaskListView.setCellFactory(param -\u003e new TaskListCell());","lastModifiedDate":"2024-03-22"},{"lineNumber":38,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":39,"author":{"gitId":"modembcc"},"content":" doneTaskListView.getItems().clear();","lastModifiedDate":"2024-03-22"},{"lineNumber":40,"author":{"gitId":"modembcc"},"content":" doneTaskListView.getItems().addAll(currentProject.getDoneTasks());","lastModifiedDate":"2024-03-22"},{"lineNumber":41,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":42,"author":{"gitId":"modembcc"},"content":" doneTaskListView.setCellFactory(param -\u003e new TaskListCell());","lastModifiedDate":"2024-03-22"},{"lineNumber":43,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":44,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":45,"author":{"gitId":"modembcc"},"content":" class TaskListCell extends ListCell\u003cTask\u003e {","lastModifiedDate":"2024-03-22"},{"lineNumber":46,"author":{"gitId":"modembcc"},"content":" @Override","lastModifiedDate":"2024-03-22"},{"lineNumber":47,"author":{"gitId":"modembcc"},"content":" protected void updateItem(Task task, boolean empty) {","lastModifiedDate":"2024-03-22"},{"lineNumber":48,"author":{"gitId":"modembcc"},"content":" super.updateItem(task, empty);","lastModifiedDate":"2024-03-22"},{"lineNumber":49,"author":{"gitId":"modembcc"},"content":" if (empty || task \u003d\u003d null) {","lastModifiedDate":"2024-03-22"},{"lineNumber":50,"author":{"gitId":"modembcc"},"content":" setGraphic(null);","lastModifiedDate":"2024-03-22"},{"lineNumber":51,"author":{"gitId":"modembcc"},"content":" } else {","lastModifiedDate":"2024-03-22"},{"lineNumber":52,"author":{"gitId":"modembcc"},"content":" setGraphic(new TaskCard(task).getRoot());","lastModifiedDate":"2024-03-22"},{"lineNumber":53,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":54,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":55,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":56,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":57,"author":{"gitId":"modembcc"},"content":"}","lastModifiedDate":"2024-03-22"}],"authorContributionMap":{"modembcc":57}},{"path":"src/main/resources/view/CurrentProjectPanel.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"modembcc"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":3,"author":{"gitId":"modembcc"},"content":"\u003c?import javafx.scene.control.ListView?\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":4,"author":{"gitId":"modembcc"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":5,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":6,"author":{"gitId":"modembcc"},"content":"\u003cVBox xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":7,"author":{"gitId":"modembcc"},"content":" \u003cListView fx:id\u003d\"currentProjectView\" VBox.vgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":8,"author":{"gitId":"modembcc"},"content":"\u003c/VBox\u003e","lastModifiedDate":"2024-03-22"}],"authorContributionMap":{"modembcc":8}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2016-08-26"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Menu?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuBar?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuItem?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.SplitPane?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":13,"author":{"gitId":"modembcc"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"\u003cfx:root type\u003d\"javafx.stage.Stage\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"","lastModifiedDate":"2023-07-27"},{"lineNumber":16,"author":{"gitId":"modembcc"},"content":" title\u003d\"Address App\" onCloseRequest\u003d\"#handleExit\"\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cicons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cImage url\u003d\"@/images/address_book_32.png\" /\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003c/icons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cscene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cScene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@DarkTheme.css\" /\u003e","lastModifiedDate":"2016-08-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@Extensions.css\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cVBox\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cMenuBar fx:id\u003d\"menuBar\" VBox.vgrow\u003d\"NEVER\"\u003e","lastModifiedDate":"2017-06-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"File\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003cMenuItem mnemonicParsing\u003d\"false\" onAction\u003d\"#handleExit\" text\u003d\"Exit\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"Help\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003cMenuItem fx:id\u003d\"helpMenuItem\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleHelp\" text\u003d\"Help\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003c/MenuBar\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"modembcc"},"content":" \u003cHBox\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"modembcc"},"content":" \u003cVBox\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"modembcc"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"commandBoxPlaceholder\" styleClass\u003d\"pane-with-border\"\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":40,"author":{"gitId":"modembcc"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":42,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"resultDisplayPlaceholder\" styleClass\u003d\"pane-with-border\"","lastModifiedDate":"2017-05-15"},{"lineNumber":45,"author":{"gitId":"modembcc"},"content":" minHeight\u003d\"100\" prefHeight\u003d\"100\" maxHeight\u003d\"100\"\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":47,"author":{"gitId":"modembcc"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":51,"author":{"gitId":"modembcc"},"content":" \u003cVBox fx:id\u003d\"personList\" styleClass\u003d\"pane-with-border\"","lastModifiedDate":"2024-03-22"},{"lineNumber":52,"author":{"gitId":"modembcc"},"content":" minWidth\u003d\"360\" prefWidth\u003d\"360\" VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"10\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"personListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\"/\u003e","lastModifiedDate":"2017-06-21"},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"modembcc"},"content":" \u003cVBox fx:id\u003d\"currentProject\" styleClass\u003d\"pane-with-border\"","lastModifiedDate":"2024-03-22"},{"lineNumber":60,"author":{"gitId":"modembcc"},"content":" minWidth\u003d\"640\" prefWidth\u003d\"640\" VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":61,"author":{"gitId":"modembcc"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"modembcc"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"10\" left\u003d\"10\" /\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"modembcc"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"modembcc"},"content":" \u003cStackPane fx:id\u003d\"currentProjectPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\"/\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":65,"author":{"gitId":"modembcc"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":66,"author":{"gitId":"modembcc"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"-"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":69,"author":{"gitId":"-"},"content":" \u003c/scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":70,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-11-29"}],"authorContributionMap":{"modembcc":18,"-":52}},{"path":"src/main/resources/view/PersonListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003cHBox id\u003d\"cardPane\" fx:id\u003d\"cardPane\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-07-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2017-03-28"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"modembcc"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"40\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003c/Label\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"name\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2016-09-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"modembcc":1,"-":31}},{"path":"src/main/resources/view/TaskListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"modembcc"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":3,"author":{"gitId":"modembcc"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":4,"author":{"gitId":"modembcc"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":5,"author":{"gitId":"modembcc"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":6,"author":{"gitId":"modembcc"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":7,"author":{"gitId":"modembcc"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":8,"author":{"gitId":"modembcc"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":9,"author":{"gitId":"modembcc"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"modembcc"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"modembcc"},"content":"\u003cHBox id\u003d\"taskCardPane\" fx:id\u003d\"taskCardPane\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"modembcc"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"modembcc"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":15,"author":{"gitId":"modembcc"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"modembcc"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":17,"author":{"gitId":"modembcc"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":18,"author":{"gitId":"modembcc"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"author":{"gitId":"modembcc"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":20,"author":{"gitId":"modembcc"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":21,"author":{"gitId":"modembcc"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":22,"author":{"gitId":"modembcc"},"content":" \u003cLabel fx:id\u003d\"name\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"modembcc"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":24,"author":{"gitId":"modembcc"},"content":" \u003cLabel fx:id\u003d\"member\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$member\" /\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"modembcc"},"content":" \u003cLabel fx:id\u003d\"deadlineDate\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$deadlineDate\" /\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":26,"author":{"gitId":"modembcc"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":27,"author":{"gitId":"modembcc"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":28,"author":{"gitId":"modembcc"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2024-03-22"}],"authorContributionMap":{"modembcc":28}},{"path":"src/main/resources/view/TaskListPanel.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"modembcc"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":3,"author":{"gitId":"modembcc"},"content":"\u003c?import javafx.scene.control.ListView?\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":4,"author":{"gitId":"modembcc"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":5,"author":{"gitId":"modembcc"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":6,"author":{"gitId":"modembcc"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":7,"author":{"gitId":"modembcc"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":8,"author":{"gitId":"modembcc"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":9,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"modembcc"},"content":"\u003cVBox id\u003d\"taskPane\" fx:id\u003d\"taskPane\" minHeight\u003d\"540\" prefHeight\u003d\"540\"","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"modembcc"},"content":" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"modembcc"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" styleClass\u003d\"pane-with-border\"","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"modembcc"},"content":" minWidth\u003d\"280\" prefWidth\u003d\"280\" minHeight\u003d\"64\" prefHeight\u003d\"64\"\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"modembcc"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":15,"author":{"gitId":"modembcc"},"content":" \u003cInsets top\u003d\"20\" right\u003d\"8\" bottom\u003d\"20\" left\u003d\"8\" /\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"modembcc"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":17,"author":{"gitId":"modembcc"},"content":" \u003cLabel fx:id\u003d\"showingProjectName\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":18,"author":{"gitId":"modembcc"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"author":{"gitId":"modembcc"},"content":" \u003cHBox fx:id\u003d\"taskList\" styleClass\u003d\"pane-with-border\"","lastModifiedDate":"2024-03-22"},{"lineNumber":20,"author":{"gitId":"modembcc"},"content":" minHeight\u003d\"540\" prefHeight\u003d\"540\"\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":21,"author":{"gitId":"modembcc"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":22,"author":{"gitId":"modembcc"},"content":" \u003cInsets top\u003d\"20\" right\u003d\"8\" bottom\u003d\"20\" left\u003d\"8\" /\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"modembcc"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":24,"author":{"gitId":"modembcc"},"content":" \u003cVBox styleClass\u003d\"pane-with-border\"\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"modembcc"},"content":" \u003cLabel text\u003d\"Not Done\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":26,"author":{"gitId":"modembcc"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":27,"author":{"gitId":"modembcc"},"content":" \u003cInsets top\u003d\"12\" left\u003d\"12\" /\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":28,"author":{"gitId":"modembcc"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":29,"author":{"gitId":"modembcc"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":30,"author":{"gitId":"modembcc"},"content":" \u003cVBox fx:id\u003d\"undoneTaskList\"","lastModifiedDate":"2024-03-22"},{"lineNumber":31,"author":{"gitId":"modembcc"},"content":" minWidth\u003d\"280\" prefWidth\u003d\"280\" VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":32,"author":{"gitId":"modembcc"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":33,"author":{"gitId":"modembcc"},"content":" \u003cInsets top\u003d\"8\" right\u003d\"8\" bottom\u003d\"8\" left\u003d\"8\" /\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":34,"author":{"gitId":"modembcc"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":35,"author":{"gitId":"modembcc"},"content":" \u003cListView fx:id\u003d\"undoneTaskListView\" VBox.vgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":36,"author":{"gitId":"modembcc"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":37,"author":{"gitId":"modembcc"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":38,"author":{"gitId":"modembcc"},"content":" \u003cVBox styleClass\u003d\"pane-with-border\"\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":39,"author":{"gitId":"modembcc"},"content":" \u003cLabel text\u003d\"Done\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":40,"author":{"gitId":"modembcc"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":41,"author":{"gitId":"modembcc"},"content":" \u003cInsets top\u003d\"12\" left\u003d\"12\" /\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":42,"author":{"gitId":"modembcc"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":43,"author":{"gitId":"modembcc"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":44,"author":{"gitId":"modembcc"},"content":" \u003cVBox fx:id\u003d\"doneTaskList\"","lastModifiedDate":"2024-03-22"},{"lineNumber":45,"author":{"gitId":"modembcc"},"content":" minWidth\u003d\"280\" prefWidth\u003d\"280\" VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":46,"author":{"gitId":"modembcc"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":47,"author":{"gitId":"modembcc"},"content":" \u003cInsets top\u003d\"8\" right\u003d\"8\" bottom\u003d\"8\" left\u003d\"8\" /\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":48,"author":{"gitId":"modembcc"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":49,"author":{"gitId":"modembcc"},"content":" \u003cListView fx:id\u003d\"doneTaskListView\" VBox.vgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":50,"author":{"gitId":"modembcc"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":51,"author":{"gitId":"modembcc"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":52,"author":{"gitId":"modembcc"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":53,"author":{"gitId":"modembcc"},"content":"\u003c/VBox\u003e","lastModifiedDate":"2024-03-22"}],"authorContributionMap":{"modembcc":53}},{"path":"src/test/java/seedu/address/logic/LogicManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":20,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import seedu.address.logic.commands.AddProjectCommand;","lastModifiedDate":"2024-02-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2017-01-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2016-09-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-09"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-31"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-12-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-12-09"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2018-12-09"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2018-12-09"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-12-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":"public class LogicManagerTest {","lastModifiedDate":"2016-09-22"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_IO_EXCEPTION \u003d new IOException(\"dummy IO exception\");","lastModifiedDate":"2023-06-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_AD_EXCEPTION \u003d new AccessDeniedException(\"dummy access denied exception\");","lastModifiedDate":"2023-06-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public Path temporaryFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-20"},{"lineNumber":43,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2018-12-09"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2019-04-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d","lastModifiedDate":"2019-04-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(temporaryFolder.resolve(\"addressBook.json\"));","lastModifiedDate":"2019-04-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2019-04-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2018-12-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-20"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void execute_invalidCommandFormat_throwsParseException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":" String invalidCommand \u003d \"uicfhmowqewca\";","lastModifiedDate":"2017-06-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertParseException(invalidCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-06-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-14"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void execute_commandExecutionError_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":62,"author":{"gitId":"-"},"content":" String deleteCommand \u003d \"delete 9\";","lastModifiedDate":"2017-06-14"},{"lineNumber":63,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" assertParseException(deleteCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2024-03-06"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-19"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void execute_validCommand_success() throws Exception {","lastModifiedDate":"2019-03-14"},{"lineNumber":68,"author":{"gitId":"-"},"content":" String listCommand \u003d ListCommand.COMMAND_WORD;","lastModifiedDate":"2017-06-19"},{"lineNumber":69,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" assertParseException(listCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2024-03-06"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20"},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2019-04-25"},{"lineNumber":74,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" assertEquals(0, 0);","lastModifiedDate":"2024-03-06"},{"lineNumber":75,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-06-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":78,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-06-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2023-06-13"},{"lineNumber":80,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" assertEquals(0, 0);","lastModifiedDate":"2024-03-06"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":86,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":89,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":95,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":96,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14"},{"lineNumber":97,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14"},{"lineNumber":98,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14"},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":103,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":104,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a ParseException is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":106,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":107,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":111,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14"},{"lineNumber":112,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a CommandException is thrown and that the result message is correct.","lastModifiedDate":"2017-06-14"},{"lineNumber":113,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":114,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14"},{"lineNumber":115,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14"},{"lineNumber":116,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":120,"author":{"gitId":"-"},"content":" * Executes the command, confirms that the exception is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":121,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":123,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-05-31"},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":129,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":130,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":131,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":132,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":133,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":134,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":135,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":136,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":137,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31"},{"lineNumber":138,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14"},{"lineNumber":139,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19"},{"lineNumber":142,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":143,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13"},{"lineNumber":144,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13"},{"lineNumber":145,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13"},{"lineNumber":146,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13"},{"lineNumber":147,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":148,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13"},{"lineNumber":149,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":151,"author":{"gitId":"-"},"content":" // Inject LogicManager with an AddressBookStorage that throws the IOException e when saving","lastModifiedDate":"2023-06-13"},{"lineNumber":152,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(prefPath) {","lastModifiedDate":"2023-06-13"},{"lineNumber":153,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":154,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath)","lastModifiedDate":"2023-06-13"},{"lineNumber":155,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13"},{"lineNumber":156,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13"},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":158,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":160,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":161,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13"},{"lineNumber":162,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2023-06-13"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":164,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":166,"author":{"gitId":"-"},"content":" // Triggers the saveAddressBook method by executing an add command","lastModifiedDate":"2023-06-13"},{"lineNumber":167,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" String addCommand \u003d AddProjectCommand.COMMAND_WORD + NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2024-02-29"},{"lineNumber":168,"author":{"gitId":"-"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY;","lastModifiedDate":"2023-06-13"},{"lineNumber":169,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2023-06-13"},{"lineNumber":170,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13"},{"lineNumber":171,"author":{"gitId":"-"},"content":" expectedModel.addPerson(expectedPerson);","lastModifiedDate":"2023-06-13"},{"lineNumber":172,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13"},{"lineNumber":173,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":174,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"Lin-Shuang-Shuang":8,"-":166}},{"path":"src/test/java/seedu/address/logic/commands/AddProjectCommandIntegrationTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-15"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-15"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-15"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-15"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-15"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code AddCommand}.","lastModifiedDate":"2017-06-15"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-15"},{"lineNumber":20,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"public class AddProjectCommandIntegrationTest {","lastModifiedDate":"2024-02-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void execute_newPerson_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":31,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-15"},{"lineNumber":34,"author":{"gitId":"-"},"content":" expectedModel.addPerson(validPerson);","lastModifiedDate":"2017-06-15"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":36,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" assertCommandSuccess(new AddProjectCommand(validPerson), model,","lastModifiedDate":"2024-02-29"},{"lineNumber":37,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" String.format(AddProjectCommand.MESSAGE_SUCCESS, Messages.format(validPerson)),","lastModifiedDate":"2024-02-29"},{"lineNumber":38,"author":{"gitId":"-"},"content":" expectedModel);","lastModifiedDate":"2019-02-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(0);","lastModifiedDate":"2018-01-10"},{"lineNumber":44,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" assertCommandFailure(new AddProjectCommand(personInList), model,","lastModifiedDate":"2024-02-29"},{"lineNumber":45,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" String.format(AddProjectCommand.MESSAGE_DUPLICATE_PERSON, Messages.format(personInList)));","lastModifiedDate":"2024-03-06"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"Lin-Shuang-Shuang":5,"-":43}},{"path":"src/test/java/seedu/address/logic/commands/AddProjectCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-01-10"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-05-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-05-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2017-05-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":25,"author":{"gitId":"ananya21"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":29,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"public class AddProjectCommandTest {","lastModifiedDate":"2024-02-29"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":33,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddProjectCommand(null));","lastModifiedDate":"2024-02-29"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void execute_personAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2017-05-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":" ModelStubAcceptingPersonAdded modelStub \u003d new ModelStubAcceptingPersonAdded();","lastModifiedDate":"2017-05-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":41,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" CommandResult commandResult \u003d new AddProjectCommand(validPerson).execute(modelStub);","lastModifiedDate":"2024-02-29"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":43,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" assertEquals(String.format(AddProjectCommand.MESSAGE_SUCCESS, Messages.format(validPerson)),","lastModifiedDate":"2024-02-29"},{"lineNumber":44,"author":{"gitId":"-"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(validPerson), modelStub.personsAdded);","lastModifiedDate":"2017-05-12"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12"},{"lineNumber":51,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" AddProjectCommand addProjectCommand \u003d new AddProjectCommand(validPerson);","lastModifiedDate":"2024-02-29"},{"lineNumber":52,"author":{"gitId":"-"},"content":" ModelStub modelStub \u003d new ModelStubWithPerson(validPerson);","lastModifiedDate":"2018-08-07"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":54,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" assertThrows(CommandException.class, String.format(AddProjectCommand.MESSAGE_DUPLICATE_PERSON,","lastModifiedDate":"2024-03-06"},{"lineNumber":55,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" Messages.format(validPerson)), () -\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":56,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" addProjectCommand.execute(modelStub));","lastModifiedDate":"2024-03-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-22"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":61,"author":{"gitId":"-"},"content":" Person alice \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2017-06-22"},{"lineNumber":62,"author":{"gitId":"-"},"content":" Person bob \u003d new PersonBuilder().withName(\"Bob\").build();","lastModifiedDate":"2017-06-22"},{"lineNumber":63,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" AddProjectCommand addAliceCommand \u003d new AddProjectCommand(alice);","lastModifiedDate":"2024-02-29"},{"lineNumber":64,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" AddProjectCommand addBobCommand \u003d new AddProjectCommand(bob);","lastModifiedDate":"2024-02-29"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":66,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommand));","lastModifiedDate":"2017-06-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":69,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":70,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" AddProjectCommand addAliceCommandCopy \u003d new AddProjectCommand(alice);","lastModifiedDate":"2024-02-29"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommandCopy));","lastModifiedDate":"2017-06-22"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":73,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(1));","lastModifiedDate":"2017-06-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":76,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(null));","lastModifiedDate":"2017-06-22"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":79,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(addBobCommand));","lastModifiedDate":"2017-06-22"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" AddProjectCommand addProjectCommand \u003d new AddProjectCommand(ALICE);","lastModifiedDate":"2024-02-29"},{"lineNumber":86,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" String expected \u003d AddProjectCommand.class.getCanonicalName() + \"{toAdd\u003d\" + ALICE + \"}\";","lastModifiedDate":"2024-02-29"},{"lineNumber":87,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" assertEquals(expected, addProjectCommand.toString());","lastModifiedDate":"2024-02-29"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2017-05-12"},{"lineNumber":92,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":93,"author":{"gitId":"-"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2017-05-12"},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":96,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27"},{"lineNumber":101,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":105,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":106,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":110,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":111,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":114,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":115,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":116,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":119,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":120,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27"},{"lineNumber":121,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":124,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":125,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":126,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":129,"author":{"gitId":"ananya21"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":130,"author":{"gitId":"ananya21"},"content":" public Person findPerson(Name name) {","lastModifiedDate":"2024-03-18"},{"lineNumber":131,"author":{"gitId":"ananya21"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-18"},{"lineNumber":132,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":133,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":134,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":135,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2018-11-27"},{"lineNumber":136,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":139,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":140,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-12"},{"lineNumber":141,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":144,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":145,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06"},{"lineNumber":146,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":149,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":150,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-08"},{"lineNumber":151,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":152,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":154,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":155,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":156,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":159,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":160,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":161,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":162,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":164,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":165,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10"},{"lineNumber":166,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":167,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":168,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":169,"author":{"gitId":"modembcc"},"content":" @Override","lastModifiedDate":"2024-03-22"},{"lineNumber":170,"author":{"gitId":"modembcc"},"content":" public ObservableList\u003cPerson\u003e getCurrentProject() {","lastModifiedDate":"2024-03-22"},{"lineNumber":171,"author":{"gitId":"modembcc"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-22"},{"lineNumber":172,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":173,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":174,"author":{"gitId":"modembcc"},"content":" @Override","lastModifiedDate":"2024-03-22"},{"lineNumber":175,"author":{"gitId":"modembcc"},"content":" public void updateCurrentProject(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2024-03-22"},{"lineNumber":176,"author":{"gitId":"modembcc"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-22"},{"lineNumber":177,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":180,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":181,"author":{"gitId":"-"},"content":" * A Model stub that contains a single person.","lastModifiedDate":"2018-08-07"},{"lineNumber":182,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":183,"author":{"gitId":"-"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2018-08-07"},{"lineNumber":184,"author":{"gitId":"-"},"content":" private final Person person;","lastModifiedDate":"2018-08-07"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":186,"author":{"gitId":"-"},"content":" ModelStubWithPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":187,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":188,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2018-08-07"},{"lineNumber":189,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":191,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":192,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":193,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":194,"author":{"gitId":"-"},"content":" return this.person.isSamePerson(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":198,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":199,"author":{"gitId":"-"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2017-05-12"},{"lineNumber":200,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":201,"author":{"gitId":"-"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2017-05-12"},{"lineNumber":202,"author":{"gitId":"-"},"content":" final ArrayList\u003cPerson\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2017-05-12"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":204,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07"},{"lineNumber":205,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":206,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":207,"author":{"gitId":"-"},"content":" return personsAdded.stream().anyMatch(person::isSamePerson);","lastModifiedDate":"2018-08-07"},{"lineNumber":208,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":210,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":211,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-08"},{"lineNumber":212,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":213,"author":{"gitId":"-"},"content":" personsAdded.add(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":214,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":216,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":217,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04"},{"lineNumber":218,"author":{"gitId":"-"},"content":" return new AddressBook();","lastModifiedDate":"2017-05-04"},{"lineNumber":219,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":220,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":222,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12"}],"authorContributionMap":{"modembcc":10,"Lin-Shuang-Shuang":14,"-":192,"ananya21":6}},{"path":"src/test/java/seedu/address/logic/commands/AddTaskCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"ananya21"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"ananya21"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"ananya21"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"ananya21"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"ananya21"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"ananya21"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"ananya21"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"ananya21"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import seedu.address.model.project.Task;","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"ananya21"},"content":"public class AddTaskCommandTest {","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"ananya21"},"content":" private Person taskProject \u003d new Person(new Name(\"default\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"ananya21"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"ananya21"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddTaskCommand(null, taskProject));","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public void equals() {","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"ananya21"},"content":" Task alice \u003d new Task(\"Alice\");","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"ananya21"},"content":" Task bob \u003d new Task(\"Bob\");","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"ananya21"},"content":" AddTaskCommand addAliceCommand \u003d new AddTaskCommand(alice, taskProject);","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"ananya21"},"content":" AddTaskCommand addBobCommand \u003d new AddTaskCommand(bob, taskProject);","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"ananya21"},"content":" assertTrue(addAliceCommand.equals(addAliceCommand));","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"ananya21"},"content":" AddTaskCommand addAliceCommandCopy \u003d new AddTaskCommand(alice, taskProject);","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"ananya21"},"content":" assertTrue(addAliceCommand.equals(addAliceCommandCopy));","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"ananya21"},"content":" assertFalse(addAliceCommand.equals(1));","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"ananya21"},"content":" assertFalse(addAliceCommand.equals(null));","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"ananya21"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"ananya21"},"content":" assertFalse(addAliceCommand.equals(addBobCommand));","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":75,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":76,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":77,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2024-03-21"},{"lineNumber":78,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-21"},{"lineNumber":79,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":81,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2024-03-21"},{"lineNumber":83,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-21"},{"lineNumber":84,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":85,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":86,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":87,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-21"},{"lineNumber":89,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":90,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":91,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":92,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2024-03-21"},{"lineNumber":93,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-21"},{"lineNumber":94,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":95,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":96,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":97,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public Person findPerson(Name name) {","lastModifiedDate":"2024-03-21"},{"lineNumber":98,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-21"},{"lineNumber":99,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":100,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":101,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":102,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2024-03-21"},{"lineNumber":103,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-21"},{"lineNumber":104,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":105,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":106,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":107,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2024-03-21"},{"lineNumber":108,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-21"},{"lineNumber":109,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":110,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":111,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":112,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2024-03-21"},{"lineNumber":113,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-21"},{"lineNumber":114,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":115,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":116,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":117,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2024-03-21"},{"lineNumber":118,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-21"},{"lineNumber":119,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":120,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":121,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":122,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2024-03-21"},{"lineNumber":123,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-21"},{"lineNumber":124,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":125,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":126,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":127,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2024-03-21"},{"lineNumber":128,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-21"},{"lineNumber":129,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":130,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":131,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":132,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2024-03-21"},{"lineNumber":133,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-21"},{"lineNumber":134,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":135,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":136,"author":{"gitId":"modembcc"},"content":" @Override","lastModifiedDate":"2024-03-22"},{"lineNumber":137,"author":{"gitId":"modembcc"},"content":" public ObservableList\u003cPerson\u003e getCurrentProject() {","lastModifiedDate":"2024-03-22"},{"lineNumber":138,"author":{"gitId":"modembcc"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-22"},{"lineNumber":139,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":140,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":141,"author":{"gitId":"modembcc"},"content":" @Override","lastModifiedDate":"2024-03-22"},{"lineNumber":142,"author":{"gitId":"modembcc"},"content":" public void updateCurrentProject(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2024-03-22"},{"lineNumber":143,"author":{"gitId":"modembcc"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-22"},{"lineNumber":144,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":145,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":146,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":147,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":148,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" * A Model stub that contains a single person.","lastModifiedDate":"2024-03-21"},{"lineNumber":149,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":150,"author":{"gitId":"ananya21"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2024-03-21"},{"lineNumber":151,"author":{"gitId":"ananya21"},"content":" private final Person person;","lastModifiedDate":"2024-03-21"},{"lineNumber":152,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":153,"author":{"gitId":"ananya21"},"content":" ModelStubWithPerson(Person person) {","lastModifiedDate":"2024-03-21"},{"lineNumber":154,"author":{"gitId":"ananya21"},"content":" requireNonNull(person);","lastModifiedDate":"2024-03-21"},{"lineNumber":155,"author":{"gitId":"ananya21"},"content":" this.person \u003d person;","lastModifiedDate":"2024-03-21"},{"lineNumber":156,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":157,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":158,"author":{"gitId":"ananya21"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":159,"author":{"gitId":"ananya21"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2024-03-21"},{"lineNumber":160,"author":{"gitId":"ananya21"},"content":" requireNonNull(person);","lastModifiedDate":"2024-03-21"},{"lineNumber":161,"author":{"gitId":"ananya21"},"content":" return this.person.isSamePerson(person);","lastModifiedDate":"2024-03-21"},{"lineNumber":162,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":163,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":164,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":165,"author":{"gitId":"ananya21"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":166,"author":{"gitId":"ananya21"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2024-03-21"},{"lineNumber":167,"author":{"gitId":"ananya21"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":168,"author":{"gitId":"ananya21"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2024-03-21"},{"lineNumber":169,"author":{"gitId":"ananya21"},"content":" final ArrayList\u003cPerson\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-21"},{"lineNumber":170,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":171,"author":{"gitId":"ananya21"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":172,"author":{"gitId":"ananya21"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2024-03-21"},{"lineNumber":173,"author":{"gitId":"ananya21"},"content":" requireNonNull(person);","lastModifiedDate":"2024-03-21"},{"lineNumber":174,"author":{"gitId":"ananya21"},"content":" return personsAdded.stream().anyMatch(person::isSamePerson);","lastModifiedDate":"2024-03-21"},{"lineNumber":175,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":176,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":177,"author":{"gitId":"ananya21"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":178,"author":{"gitId":"ananya21"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2024-03-21"},{"lineNumber":179,"author":{"gitId":"ananya21"},"content":" requireNonNull(person);","lastModifiedDate":"2024-03-21"},{"lineNumber":180,"author":{"gitId":"ananya21"},"content":" personsAdded.add(person);","lastModifiedDate":"2024-03-21"},{"lineNumber":181,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":182,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":183,"author":{"gitId":"ananya21"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":184,"author":{"gitId":"ananya21"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2024-03-21"},{"lineNumber":185,"author":{"gitId":"ananya21"},"content":" return new AddressBook();","lastModifiedDate":"2024-03-21"},{"lineNumber":186,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":187,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":188,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":189,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"modembcc":10,"Lin-Shuang-Shuang":117,"ananya21":62}},{"path":"src/test/java/seedu/address/logic/commands/DeleteProjectCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2020-12-16"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * {@code DeleteCommand}.","lastModifiedDate":"2018-01-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":23,"author":{"gitId":"modembcc"},"content":"public class DeleteProjectCommandTest {","lastModifiedDate":"2024-03-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":28,"author":{"gitId":"modembcc"},"content":" public void execute_validProject_success() {","lastModifiedDate":"2024-03-15"},{"lineNumber":29,"author":{"gitId":"modembcc"},"content":" Person projectToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-03-15"},{"lineNumber":30,"author":{"gitId":"modembcc"},"content":" DeleteProjectCommand deleteCommand \u003d new DeleteProjectCommand(projectToDelete.getName().fullName);","lastModifiedDate":"2024-03-15"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":32,"author":{"gitId":"modembcc"},"content":" String expectedMessage \u003d String.format(DeleteProjectCommand.MESSAGE_DELETE_PROJECT_SUCCESS,","lastModifiedDate":"2024-03-15"},{"lineNumber":33,"author":{"gitId":"modembcc"},"content":" Messages.format(projectToDelete));","lastModifiedDate":"2024-03-15"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":36,"author":{"gitId":"modembcc"},"content":" expectedModel.deletePerson(projectToDelete);","lastModifiedDate":"2024-03-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":42,"author":{"gitId":"modembcc"},"content":" public void execute_invalidProject_throwsCommandException() {","lastModifiedDate":"2024-03-15"},{"lineNumber":43,"author":{"gitId":"modembcc"},"content":" DeleteProjectCommand deleteCommand \u003d new DeleteProjectCommand(\"thereisnoproject withthisname\");","lastModifiedDate":"2024-03-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":50,"author":{"gitId":"modembcc"},"content":" DeleteProjectCommand deleteFirstCommand \u003d new DeleteProjectCommand(\"FirstProject\");","lastModifiedDate":"2024-03-15"},{"lineNumber":51,"author":{"gitId":"modembcc"},"content":" DeleteProjectCommand deleteSecondCommand \u003d new DeleteProjectCommand(\"SecondProject\");","lastModifiedDate":"2024-03-15"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":57,"author":{"gitId":"modembcc"},"content":" DeleteProjectCommand deleteFirstCommandCopy \u003d new DeleteProjectCommand(\"FirstProject\");","lastModifiedDate":"2024-03-15"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2017-06-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2017-06-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2017-06-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":72,"author":{"gitId":"modembcc"},"content":" String targetName \u003d \"Dummy Project\";","lastModifiedDate":"2024-03-15"},{"lineNumber":73,"author":{"gitId":"modembcc"},"content":" DeleteProjectCommand deleteCommand \u003d new DeleteProjectCommand(targetName);","lastModifiedDate":"2024-03-15"},{"lineNumber":74,"author":{"gitId":"modembcc"},"content":" String expected \u003d DeleteProjectCommand.class.getCanonicalName() + \"{targetName\u003d\" + targetName + \"}\";","lastModifiedDate":"2024-03-15"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertEquals(expected, deleteCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"modembcc":15,"-":62}},{"path":"src/test/java/seedu/address/logic/commands/DeleteTaskCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"ananya21"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"ananya21"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"ananya21"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"ananya21"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import seedu.address.model.project.Task;","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"class DeleteTaskCommandTest {","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"ananya21"},"content":" private Task tempTask1 \u003d new Task(\"rehearse\");","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"ananya21"},"content":" private Task tempTask2 \u003d new Task(\"Write script\");","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"ananya21"},"content":" private Person presentation \u003d new PersonBuilder().withName(\"Presentation\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"ananya21"},"content":" private Person codingProject \u003d new PersonBuilder().withName(\"Coding Project\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public void equals() {","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" DeleteTaskCommand deleteFirstCommand \u003d new DeleteTaskCommand(tempTask1, presentation);","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" DeleteTaskCommand deleteSecondCommand \u003d new DeleteTaskCommand(tempTask1, codingProject);","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" DeleteTaskCommand deleteThirdCommand \u003d new DeleteTaskCommand(tempTask2, presentation);","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" DeleteTaskCommand deleteFirstCommandCopy \u003d new DeleteTaskCommand(tempTask1, presentation);","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" // different project, same task -\u003e returns false (FAILED!)","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" // same project, different task -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" assertFalse(deleteFirstCommand.equals(deleteThirdCommand));","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" // different project, different task -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" assertFalse(deleteSecondCommand.equals(deleteThirdCommand));","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" String targetName \u003d \"rehearse\";","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" DeleteTaskCommand deleteCommand \u003d new DeleteTaskCommand(tempTask1, presentation);","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" String expected \u003d DeleteTaskCommand.class.getCanonicalName() + \"{toDelete\u003d\" + tempTask1 + \"}\";","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" assertEquals(expected, deleteCommand.toString());","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"Lin-Shuang-Shuang":51,"ananya21":10}},{"path":"src/test/java/seedu/address/logic/commands/EditCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-05-04"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-04"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-22"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-04"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-04"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for EditCommand.","lastModifiedDate":"2020-12-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-04"},{"lineNumber":34,"author":{"gitId":"-"},"content":"public class EditCommandTest {","lastModifiedDate":"2017-05-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":40,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-26"},{"lineNumber":41,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(editedPerson).build();","lastModifiedDate":"2024-03-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, descriptor);","lastModifiedDate":"2024-03-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":44,"author":{"gitId":"modembcc"},"content":" String expectedMessage \u003d String.format(","lastModifiedDate":"2024-03-15"},{"lineNumber":45,"author":{"gitId":"modembcc"},"content":" EditCommand.MESSAGE_EDIT_PERSON_SUCCESS,","lastModifiedDate":"2024-03-15"},{"lineNumber":46,"author":{"gitId":"modembcc"},"content":" Messages.format(editedPerson));","lastModifiedDate":"2024-03-15"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":48,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":51,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" //Filtering not yet implemented","lastModifiedDate":"2024-03-06"},{"lineNumber":52,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" assertEquals(0, 0);","lastModifiedDate":"2024-03-06"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":57,"author":{"gitId":"-"},"content":" Index indexLastPerson \u003d Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2017-05-18"},{"lineNumber":58,"author":{"gitId":"-"},"content":" Person lastPerson \u003d model.getFilteredPersonList().get(indexLastPerson.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":60,"author":{"gitId":"-"},"content":" PersonBuilder personInList \u003d new PersonBuilder(lastPerson);","lastModifiedDate":"2017-05-18"},{"lineNumber":61,"author":{"gitId":"-"},"content":" Person editedPerson \u003d personInList.withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-18"},{"lineNumber":62,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":64,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-05-18"},{"lineNumber":65,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18"},{"lineNumber":66,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(indexLastPerson, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":68,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":70,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":71,"author":{"gitId":"-"},"content":" expectedModel.setPerson(lastPerson, editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":78,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, new EditPersonDescriptor());","lastModifiedDate":"2018-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":" Person editedPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":81,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":83,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":90,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":92,"author":{"gitId":"-"},"content":" Person personInFilteredList \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":93,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder(personInFilteredList).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08"},{"lineNumber":95,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":97,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":99,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":106,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonUnfilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":107,"author":{"gitId":"-"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-03-15"},{"lineNumber":108,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(firstPerson).build();","lastModifiedDate":"2024-03-15"},{"lineNumber":109,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_SECOND_PERSON, descriptor);","lastModifiedDate":"2024-03-15"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":111,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" assertEquals(0, 0);","lastModifiedDate":"2024-03-06"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":114,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":115,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonFilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":116,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":118,"author":{"gitId":"-"},"content":" // edit person in filtered list into a duplicate in address book","lastModifiedDate":"2017-05-18"},{"lineNumber":119,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(INDEX_SECOND_PERSON.getZeroBased());","lastModifiedDate":"2024-03-15"},{"lineNumber":120,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2024-03-15"},{"lineNumber":121,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder(personInList).build());","lastModifiedDate":"2024-03-15"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":123,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" // Filtering not yet implemented","lastModifiedDate":"2024-03-06"},{"lineNumber":124,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" assertEquals(0, 0);","lastModifiedDate":"2024-03-06"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":128,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":129,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-05-18"},{"lineNumber":130,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-22"},{"lineNumber":131,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":133,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":136,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-18"},{"lineNumber":137,"author":{"gitId":"-"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2017-05-18"},{"lineNumber":138,"author":{"gitId":"-"},"content":" * but smaller than size of address book","lastModifiedDate":"2017-05-18"},{"lineNumber":139,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-18"},{"lineNumber":140,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":141,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":142,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":143,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-18"},{"lineNumber":144,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-05-18"},{"lineNumber":145,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-05-18"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":147,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex,","lastModifiedDate":"2018-08-08"},{"lineNumber":148,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":150,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":153,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":155,"author":{"gitId":"-"},"content":" final EditCommand standardCommand \u003d new EditCommand(INDEX_FIRST_PERSON, DESC_AMY);","lastModifiedDate":"2018-08-08"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":157,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":158,"author":{"gitId":"-"},"content":" EditPersonDescriptor copyDescriptor \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-08"},{"lineNumber":159,"author":{"gitId":"-"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(INDEX_FIRST_PERSON, copyDescriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":160,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":162,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":163,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":166,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":168,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":169,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2017-05-08"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":171,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":172,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_SECOND_PERSON, DESC_AMY)));","lastModifiedDate":"2017-05-25"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":174,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":175,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_FIRST_PERSON, DESC_BOB)));","lastModifiedDate":"2017-05-25"},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":178,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2019-02-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":" String expected \u003d EditCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", editPersonDescriptor\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":" + editPersonDescriptor + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08"}],"authorContributionMap":{"modembcc":3,"Lin-Shuang-Shuang":5,"-":180}},{"path":"src/test/java/seedu/address/logic/parser/AddProjectCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-15"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2017-12-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-07-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-07-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":13,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import seedu.address.logic.commands.AddProjectCommand;","lastModifiedDate":"2024-02-29"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":17,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"public class AddProjectCommandParserTest {","lastModifiedDate":"2024-02-29"},{"lineNumber":18,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" private AddProjectCommandParser parser \u003d new AddProjectCommandParser();","lastModifiedDate":"2024-02-29"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":22,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2018-07-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":25,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + \"Bob Choo\", new AddProjectCommand(expectedPerson));","lastModifiedDate":"2024-03-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":29,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // zero tags","lastModifiedDate":"2017-06-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2018-07-25"},{"lineNumber":37,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" assertParseSuccess(parser, \"Amy Bee\",","lastModifiedDate":"2024-03-06"},{"lineNumber":38,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" new AddProjectCommand(expectedPerson));","lastModifiedDate":"2024-02-29"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":43,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddProjectCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-02-29"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":46,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" assertParseFailure(parser, \"\",","lastModifiedDate":"2024-03-06"},{"lineNumber":47,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"Lin-Shuang-Shuang":9,"-":41}},{"path":"src/test/java/seedu/address/logic/parser/AddressBookParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-15"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2024-03-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":13,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import seedu.address.logic.commands.AddProjectCommand;","lastModifiedDate":"2024-02-29"},{"lineNumber":14,"author":{"gitId":"modembcc"},"content":"import seedu.address.logic.commands.DeleteProjectCommand;","lastModifiedDate":"2024-03-15"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2024-03-15"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2024-03-15"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonUtil;","lastModifiedDate":"2017-06-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":28,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public void parseCommand_addProject() throws Exception {","lastModifiedDate":"2024-03-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":30,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" AddProjectCommand command \u003d (AddProjectCommand) parser.parseCommand(PersonUtil.getAddCommand(person));","lastModifiedDate":"2024-02-29"},{"lineNumber":31,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" assertEquals(new AddProjectCommand(person), command);","lastModifiedDate":"2024-02-29"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":35,"author":{"gitId":"modembcc"},"content":" public void parseCommand_deleteProject() throws Exception {","lastModifiedDate":"2024-03-15"},{"lineNumber":36,"author":{"gitId":"modembcc"},"content":" DeleteProjectCommand command \u003d (DeleteProjectCommand) parser.parseCommand(","lastModifiedDate":"2024-03-15"},{"lineNumber":37,"author":{"gitId":"modembcc"},"content":" DeleteProjectCommand.COMMAND_WORD + \" \" + \"Dummy Project\");","lastModifiedDate":"2024-03-15"},{"lineNumber":38,"author":{"gitId":"modembcc"},"content":" assertEquals(new DeleteProjectCommand(\"Dummy Project\"), command);","lastModifiedDate":"2024-03-15"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":42,"author":{"gitId":"modembcc"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2024-03-15"},{"lineNumber":43,"author":{"gitId":"modembcc"},"content":" //clear function not yet implemented","lastModifiedDate":"2024-03-15"},{"lineNumber":44,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" assertEquals(0, 0);","lastModifiedDate":"2024-03-06"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2024-03-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(person).build();","lastModifiedDate":"2024-03-15"},{"lineNumber":51,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" //edit function not yet implemented","lastModifiedDate":"2024-03-06"},{"lineNumber":52,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" assertEquals(0, 0);","lastModifiedDate":"2024-03-06"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":57,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" //exit function not yet implemented","lastModifiedDate":"2024-03-06"},{"lineNumber":58,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" assertEquals(0, 0);","lastModifiedDate":"2024-03-06"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2024-03-15"},{"lineNumber":64,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" //find function not yet implemented","lastModifiedDate":"2024-03-06"},{"lineNumber":65,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" assertEquals(0, 0);","lastModifiedDate":"2024-03-06"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":70,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" //help function not yet implemented","lastModifiedDate":"2024-03-06"},{"lineNumber":71,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" assertEquals(0, 0);","lastModifiedDate":"2024-03-06"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":76,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" //list function not yet implemented","lastModifiedDate":"2024-03-06"},{"lineNumber":77,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" assertEquals(0, 0);","lastModifiedDate":"2024-03-06"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"modembcc":7,"Lin-Shuang-Shuang":15,"-":68}},{"path":"src/test/java/seedu/address/logic/parser/DeleteProjectCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-09"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":9,"author":{"gitId":"modembcc"},"content":"import seedu.address.logic.commands.DeleteProjectCommand;","lastModifiedDate":"2024-03-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * As we are only doing white-box testing, our test cases do not cover path variations","lastModifiedDate":"2017-06-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * outside of the DeleteCommand code. For example, inputs \"1\" and \"1 abc\" take the","lastModifiedDate":"2017-06-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * same path through the DeleteCommand, and therefore we test only one of them.","lastModifiedDate":"2017-06-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * The path variation for those two cases occur inside the ParserUtil, and","lastModifiedDate":"2017-06-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * therefore should be covered by the ParserUtilTest.","lastModifiedDate":"2017-06-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-09"},{"lineNumber":18,"author":{"gitId":"modembcc"},"content":"public class DeleteProjectCommandParserTest {","lastModifiedDate":"2024-03-15"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":20,"author":{"gitId":"modembcc"},"content":" private DeleteProjectCommandParser parser \u003d new DeleteProjectCommandParser();","lastModifiedDate":"2024-03-15"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void parse_validArgs_returnsDeleteCommand() {","lastModifiedDate":"2017-08-15"},{"lineNumber":24,"author":{"gitId":"modembcc"},"content":" assertParseSuccess(parser, \"Dummy Project\", new DeleteProjectCommand(\"Dummy Project\"));","lastModifiedDate":"2024-03-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09"},{"lineNumber":28,"author":{"gitId":"modembcc"},"content":" public void parse_emptyArgs_throwsParseException() {","lastModifiedDate":"2024-03-15"},{"lineNumber":29,"author":{"gitId":"modembcc"},"content":" assertParseFailure(","lastModifiedDate":"2024-03-15"},{"lineNumber":30,"author":{"gitId":"modembcc"},"content":" parser,","lastModifiedDate":"2024-03-15"},{"lineNumber":31,"author":{"gitId":"modembcc"},"content":" \"\",","lastModifiedDate":"2024-03-15"},{"lineNumber":32,"author":{"gitId":"modembcc"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteProjectCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-09"}],"authorContributionMap":{"modembcc":9,"-":25}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedPersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class JsonAdaptedPersonTest {","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"modembcc"},"content":" // private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2024-03-15"},{"lineNumber":11,"author":{"gitId":"modembcc"},"content":" // private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2024-03-15"},{"lineNumber":12,"author":{"gitId":"modembcc"},"content":" // private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2024-03-15"},{"lineNumber":13,"author":{"gitId":"modembcc"},"content":" // private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2024-03-15"},{"lineNumber":14,"author":{"gitId":"modembcc"},"content":" // private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2024-03-15"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"modembcc"},"content":" // private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2024-03-15"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public void toModelType_validPersonDetails_returnsPerson() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(BENSON);","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":" assertEquals(BENSON, person.toModelType());","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"modembcc":6,"-":21}},{"path":"src/test/java/seedu/address/testutil/PersonBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":3,"author":{"gitId":"modembcc"},"content":"// import java.util.HashSet;","lastModifiedDate":"2024-03-15"},{"lineNumber":4,"author":{"gitId":"modembcc"},"content":"// import java.util.Set;","lastModifiedDate":"2024-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":6,"author":{"gitId":"modembcc"},"content":"// import seedu.address.model.person.Address;","lastModifiedDate":"2024-03-15"},{"lineNumber":7,"author":{"gitId":"modembcc"},"content":"// import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-15"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-01-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-04-05"},{"lineNumber":10,"author":{"gitId":"modembcc"},"content":"// import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-15"},{"lineNumber":11,"author":{"gitId":"modembcc"},"content":"// import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-15"},{"lineNumber":12,"author":{"gitId":"modembcc"},"content":"// import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2024-03-15"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * A utility class to help with building Person objects.","lastModifiedDate":"2017-04-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class PersonBuilder {","lastModifiedDate":"2016-09-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2020-12-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2017-04-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2020-12-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2017-04-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":25,"author":{"gitId":"modembcc"},"content":" // private Phone phone;","lastModifiedDate":"2024-03-15"},{"lineNumber":26,"author":{"gitId":"modembcc"},"content":" // private Email email;","lastModifiedDate":"2024-03-15"},{"lineNumber":27,"author":{"gitId":"modembcc"},"content":" // private Address address;","lastModifiedDate":"2024-03-15"},{"lineNumber":28,"author":{"gitId":"modembcc"},"content":" // private Set\u003cTag\u003e tags;","lastModifiedDate":"2024-03-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2020-05-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public PersonBuilder() {","lastModifiedDate":"2017-08-15"},{"lineNumber":34,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20"},{"lineNumber":35,"author":{"gitId":"modembcc"},"content":" // phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2024-03-15"},{"lineNumber":36,"author":{"gitId":"modembcc"},"content":" // email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2024-03-15"},{"lineNumber":37,"author":{"gitId":"modembcc"},"content":" // address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2024-03-15"},{"lineNumber":38,"author":{"gitId":"modembcc"},"content":" // tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-15"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Initializes the PersonBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2016-12-11"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public PersonBuilder(Person personToCopy) {","lastModifiedDate":"2018-01-10"},{"lineNumber":45,"author":{"gitId":"-"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2017-12-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11"},{"lineNumber":48,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public PersonBuilder withName(String name) {","lastModifiedDate":"2017-08-15"},{"lineNumber":52,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public PersonBuilder withTags(String ... tags) {","lastModifiedDate":"2017-08-15"},{"lineNumber":60,"author":{"gitId":"modembcc"},"content":" // this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2024-03-15"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":64,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public PersonBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15"},{"lineNumber":68,"author":{"gitId":"modembcc"},"content":" // this.address \u003d new Address(address);","lastModifiedDate":"2024-03-15"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public PersonBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15"},{"lineNumber":76,"author":{"gitId":"modembcc"},"content":" // this.phone \u003d new Phone(phone);","lastModifiedDate":"2024-03-15"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":80,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":82,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15"},{"lineNumber":84,"author":{"gitId":"modembcc"},"content":" // this.email \u003d new Email(email);","lastModifiedDate":"2024-03-15"},{"lineNumber":85,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05"},{"lineNumber":89,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return new Person(name);","lastModifiedDate":"2024-03-05"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":92,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03"}],"authorContributionMap":{"modembcc":19,"Lin-Shuang-Shuang":1,"-":72}},{"path":"src/test/java/seedu/address/testutil/PersonUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-03-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26"},{"lineNumber":11,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import seedu.address.logic.commands.AddProjectCommand;","lastModifiedDate":"2024-02-29"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2018-03-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-03-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * A utility class for Person.","lastModifiedDate":"2017-04-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class PersonUtil {","lastModifiedDate":"2017-04-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Returns an add command string for adding the {@code person}.","lastModifiedDate":"2017-04-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static String getAddCommand(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":25,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return AddProjectCommand.COMMAND_WORD + \" \" + getPersonDetails(person);","lastModifiedDate":"2024-02-29"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code person}\u0027s details.","lastModifiedDate":"2017-04-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static String getPersonDetails(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":32,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05"},{"lineNumber":33,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" sb.append(person.getName().fullName);","lastModifiedDate":"2024-03-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-04-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26"},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code EditPersonDescriptor}\u0027s details.","lastModifiedDate":"2018-03-26"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static String getEditPersonDescriptorDetails(EditPersonDescriptor descriptor) {","lastModifiedDate":"2018-03-26"},{"lineNumber":41,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26"},{"lineNumber":42,"author":{"gitId":"-"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(PREFIX_NAME).append(name.fullName).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":43,"author":{"gitId":"-"},"content":" descriptor.getPhone().ifPresent(phone -\u003e sb.append(PREFIX_PHONE).append(phone.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":44,"author":{"gitId":"-"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(PREFIX_EMAIL).append(email.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":45,"author":{"gitId":"-"},"content":" descriptor.getAddress().ifPresent(address -\u003e sb.append(PREFIX_ADDRESS).append(address.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":46,"author":{"gitId":"-"},"content":" if (descriptor.getTags().isPresent()) {","lastModifiedDate":"2018-03-26"},{"lineNumber":47,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tags \u003d descriptor.getTags().get();","lastModifiedDate":"2018-03-26"},{"lineNumber":48,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2018-03-26"},{"lineNumber":49,"author":{"gitId":"-"},"content":" sb.append(PREFIX_TAG);","lastModifiedDate":"2018-03-26"},{"lineNumber":50,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-26"},{"lineNumber":51,"author":{"gitId":"-"},"content":" tags.forEach(s -\u003e sb.append(PREFIX_TAG).append(s.tagName).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05"}],"authorContributionMap":{"Lin-Shuang-Shuang":3,"-":53}}] +[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"modembcc"},"content":"[![CI Status](https://github.com/AY2324S2-CS2103T-W08-4/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2324S2-CS2103T-W08-4/tp/actions)","lastModifiedDate":"2024-03-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"[![codecov](https://codecov.io/gh/AY2324S2-CS2103T-W08-4/tp/graph/badge.svg?token\u003dJRBJM9DOXE)](https://codecov.io/gh/AY2324S2-CS2103T-W08-4/tp)","lastModifiedDate":"2024-02-20"},{"lineNumber":3,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"modembcc"},"content":"\u003cdiv align\u003d\"center\"\u003e","lastModifiedDate":"2024-03-03"},{"lineNumber":5,"author":{"gitId":"modembcc"},"content":" \u003ch3 align\u003d\"center\"\u003eDevPlan Pro\u003c/h3\u003e","lastModifiedDate":"2024-03-03"},{"lineNumber":6,"author":{"gitId":"modembcc"},"content":" \u003cp align\u003d\"center\"\u003e","lastModifiedDate":"2024-03-03"},{"lineNumber":7,"author":{"gitId":"modembcc"},"content":" Keep track of your projects in a single app","lastModifiedDate":"2024-03-03"},{"lineNumber":8,"author":{"gitId":"modembcc"},"content":" \u003cbr/\u003e","lastModifiedDate":"2024-03-03"},{"lineNumber":9,"author":{"gitId":"modembcc"},"content":" \u003ca href\u003d\"https://github.com/othneildrew/Best-README-Template\"\u003eProject Website\u003c/a\u003e","lastModifiedDate":"2024-03-03"},{"lineNumber":10,"author":{"gitId":"modembcc"},"content":" ·","lastModifiedDate":"2024-03-03"},{"lineNumber":11,"author":{"gitId":"modembcc"},"content":" \u003ca href\u003d\"https://github.com/othneildrew/Best-README-Template/issues\"\u003ePlanned Features\u003c/a\u003e","lastModifiedDate":"2024-03-03"},{"lineNumber":12,"author":{"gitId":"modembcc"},"content":" \u003c/p\u003e","lastModifiedDate":"2024-03-03"},{"lineNumber":13,"author":{"gitId":"modembcc"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-03-03"},{"lineNumber":14,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"modembcc"},"content":"### About The Project","lastModifiedDate":"2024-03-03"},{"lineNumber":18,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":19,"author":{"gitId":"modembcc"},"content":"**Devplan Pro** is a project management app that is catered towards project managers who love typing. It allows the user to keep track of their various projects, the ongoing tasks within the projects, and people who are responsible for those tasks. Every action is executed through the input box using an intuitive [list of commands](https://github.com/othneildrew/Best-README-Template). Download now get a boost to your productivity.","lastModifiedDate":"2024-03-03"},{"lineNumber":20,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":21,"author":{"gitId":"modembcc"},"content":"### Installation","lastModifiedDate":"2024-03-03"},{"lineNumber":22,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":23,"author":{"gitId":"modembcc"},"content":"- Still in development","lastModifiedDate":"2024-03-03"},{"lineNumber":24,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":25,"author":{"gitId":"modembcc"},"content":"### Acknowledgement","lastModifiedDate":"2024-03-03"},{"lineNumber":26,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":27,"author":{"gitId":"modembcc"},"content":"- This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-03-03"},{"lineNumber":28,"author":{"gitId":"modembcc"},"content":"- This README is based on the [Best-README-Template](https://github.com/othneildrew/Best-README-Template) template.","lastModifiedDate":"2024-03-03"},{"lineNumber":29,"author":{"gitId":"modembcc"},"content":"- Libraries used: [JavaFX](https://openjfx.io/), [Jackson](https://github.com/FasterXML/jackson), [JUnit5](https://github.com/junit-team/junit5)","lastModifiedDate":"2024-03-03"}],"authorContributionMap":{"modembcc":25,"-":4}},{"path":"build.gradle","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2016-08-29"},{"lineNumber":2,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2017-12-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2017-12-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2022-06-17"},{"lineNumber":5,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2016-12-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":" id \u0027jacoco\u0027","lastModifiedDate":"2020-08-07"},{"lineNumber":7,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-29"},{"lineNumber":9,"author":{"gitId":"-"},"content":"mainClassName \u003d \u0027seedu.address.Main\u0027","lastModifiedDate":"2019-02-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"sourceCompatibility \u003d JavaVersion.VERSION_11","lastModifiedDate":"2019-02-20"},{"lineNumber":12,"author":{"gitId":"-"},"content":"targetCompatibility \u003d JavaVersion.VERSION_11","lastModifiedDate":"2019-02-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" maven { url \u0027https://oss.sonatype.org/content/repositories/snapshots/\u0027 }","lastModifiedDate":"2018-04-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"checkstyle {","lastModifiedDate":"2016-10-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2022-04-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-10-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2018-03-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2018-03-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":" finalizedBy jacocoTestReport","lastModifiedDate":"2020-08-07"},{"lineNumber":26,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-08-07"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-08-07"},{"lineNumber":28,"author":{"gitId":"-"},"content":"task coverage(type: JacocoReport) {","lastModifiedDate":"2020-08-07"},{"lineNumber":29,"author":{"gitId":"-"},"content":" sourceDirectories.from files(sourceSets.main.allSource.srcDirs)","lastModifiedDate":"2020-08-07"},{"lineNumber":30,"author":{"gitId":"-"},"content":" classDirectories.from files(sourceSets.main.output)","lastModifiedDate":"2020-08-07"},{"lineNumber":31,"author":{"gitId":"-"},"content":" executionData.from files(jacocoTestReport.executionData)","lastModifiedDate":"2020-08-07"},{"lineNumber":32,"author":{"gitId":"-"},"content":" afterEvaluate {","lastModifiedDate":"2020-08-07"},{"lineNumber":33,"author":{"gitId":"-"},"content":" classDirectories.from files(classDirectories.files.collect {","lastModifiedDate":"2020-08-07"},{"lineNumber":34,"author":{"gitId":"-"},"content":" fileTree(dir: it, exclude: [\u0027**/*.jar\u0027])","lastModifiedDate":"2020-08-07"},{"lineNumber":35,"author":{"gitId":"-"},"content":" })","lastModifiedDate":"2020-08-07"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07"},{"lineNumber":37,"author":{"gitId":"-"},"content":" reports {","lastModifiedDate":"2020-08-07"},{"lineNumber":38,"author":{"gitId":"-"},"content":" html.required \u003d true","lastModifiedDate":"2022-06-17"},{"lineNumber":39,"author":{"gitId":"-"},"content":" xml.required \u003d true","lastModifiedDate":"2022-06-17"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07"},{"lineNumber":41,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-03-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" String jUnitVersion \u003d \u00275.4.0\u0027","lastModifiedDate":"2019-02-10"},{"lineNumber":45,"author":{"gitId":"-"},"content":" String javaFxVersion \u003d \u002717.0.7\u0027","lastModifiedDate":"2023-07-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":48,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":" implementation group: \u0027com.fasterxml.jackson.core\u0027, name: \u0027jackson-databind\u0027, version: \u00272.7.0\u0027","lastModifiedDate":"2018-03-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":" implementation group: \u0027com.fasterxml.jackson.datatype\u0027, name: \u0027jackson-datatype-jsr310\u0027, version: \u00272.7.4\u0027","lastModifiedDate":"2018-03-29"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-29"},{"lineNumber":68,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2016-08-29"},{"lineNumber":69,"author":{"gitId":"ananya21"},"content":" archiveFileName \u003d \u0027tp_new.jar\u0027","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":"defaultTasks \u0027clean\u0027, \u0027test\u0027","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"-":71,"ananya21":1}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: About Us","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"We are a team based in the [School of Computing, National University of Singapore](http://www.comp.nus.edu.sg).","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"You can reach us at the email `seer[at]comp.nus.edu.sg`","lastModifiedDate":"2020-06-17"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"modembcc"},"content":"### Lin Shuang Shuang","lastModifiedDate":"2024-02-28"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"modembcc"},"content":"\u003cimg src\u003d\"images/lin-shuang-shuang.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"[[github](http://github.com/johndoe)]","lastModifiedDate":"2020-06-17"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":18,"author":{"gitId":"modembcc"},"content":"- Role: Team Lead","lastModifiedDate":"2024-02-28"},{"lineNumber":19,"author":{"gitId":"modembcc"},"content":"- Responsibilities: UI","lastModifiedDate":"2024-02-28"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"modembcc"},"content":"### Ananya Shahi","lastModifiedDate":"2024-02-28"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"modembcc"},"content":"\u003cimg src\u003d\"images/ananya21.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"modembcc"},"content":"[[github](http://github.com/ananya21)]","lastModifiedDate":"2024-02-28"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"modembcc"},"content":"- Role: Developer","lastModifiedDate":"2024-02-28"},{"lineNumber":28,"author":{"gitId":"ThitipatC"},"content":"- Responsibilities: Data","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"ThitipatC"},"content":"### Thitipat Chaiyakul","lastModifiedDate":"2024-02-28"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"ThitipatC"},"content":"\u003cimg src\u003d\"images/thitipatc.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":36,"author":{"gitId":"ThitipatC"},"content":"[[github](http://github.com/ThitipatC)]","lastModifiedDate":"2024-02-28"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"modembcc"},"content":"- Role: Developer","lastModifiedDate":"2024-02-28"},{"lineNumber":39,"author":{"gitId":"modembcc"},"content":"- Responsibilities: Dev Ops + Threading","lastModifiedDate":"2024-02-28"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"modembcc"},"content":"### Pawirunsiri Thanakorn (Modem)","lastModifiedDate":"2024-02-28"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"modembcc"},"content":"\u003cimg src\u003d\"images/modembcc.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"modembcc"},"content":"[[github](http://github.com/modembcc)]","lastModifiedDate":"2024-02-28"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":47,"author":{"gitId":"modembcc"},"content":"\u003c!-- [[portfolio](team/johndoe.md)] --\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"modembcc"},"content":"- Role: Developer","lastModifiedDate":"2024-02-28"},{"lineNumber":50,"author":{"gitId":"modembcc"},"content":"- Responsibilities: UI","lastModifiedDate":"2024-02-28"}],"authorContributionMap":{"modembcc":16,"ThitipatC":4,"-":30}},{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: Developer Guide","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"modembcc"},"content":"- Table of Contents","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":" {:toc}","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"modembcc"},"content":"---","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":11,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":13,"author":{"gitId":"modembcc"},"content":"- {list here sources of all reused/adapted ideas, code, documentation, and third-party libraries -- include links to the original source as well}","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":15,"author":{"gitId":"modembcc"},"content":"---","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"modembcc"},"content":"---","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":":bulb: **Tip:** The `.puml` files used to create diagrams in this document `docs/diagrams` folder. Refer to the [_PlantUML Tutorial_ at se-edu/guides](https://se-education.org/guides/tutorials/plantUml.html) to learn how to create and edit diagrams.","lastModifiedDate":"2023-09-03"},{"lineNumber":28,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureDiagram.png\" width\u003d\"280\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"modembcc"},"content":"The **_Architecture Diagram_** given above explains the high-level design of the App.","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":"Given below is a quick overview of main components and how they interact with each other.","lastModifiedDate":"2021-07-31"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":39,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"**`Main`** (consisting of classes [`Main`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/Main.java) and [`MainApp`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/MainApp.java)) is in charge of the app launch and shut down.","lastModifiedDate":"2023-09-03"},{"lineNumber":42,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"modembcc"},"content":"- At app launch, it initializes the other components in the correct sequence, and connects them up with each other.","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"modembcc"},"content":"- At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"modembcc"},"content":"- [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"modembcc"},"content":"- [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"modembcc"},"content":"- [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"modembcc"},"content":"- [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"modembcc"},"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":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureSequenceDiagram.png\" width\u003d\"574\" /\u003e","lastModifiedDate":"2020-06-07"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":63,"author":{"gitId":"modembcc"},"content":"- defines its _API_ in an `interface` with the same name as the Component.","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"modembcc"},"content":"- implements its functionality using a concrete `{Component Name}Manager` class (which follows the corresponding API `interface` mentioned in the previous point.","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"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"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":68,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ComponentManagers.png\" width\u003d\"300\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":70,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"The **API** of this component is specified in [`Ui.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/Ui.java)","lastModifiedDate":"2021-07-31"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"![Structure of the UI Component](images/UiClassDiagram.png)","lastModifiedDate":"2021-07-31"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"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"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"The `UI` component uses the JavaFx UI framework. The layout of these UI parts are defined in matching `.fxml` files that are in the `src/main/resources/view` folder. For example, the layout of the [`MainWindow`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/MainWindow.java) is specified in [`MainWindow.fxml`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/resources/view/MainWindow.fxml)","lastModifiedDate":"2021-07-31"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"modembcc"},"content":"- executes user commands using the `Logic` component.","lastModifiedDate":"2024-03-12"},{"lineNumber":85,"author":{"gitId":"modembcc"},"content":"- listens for changes to `Model` data so that the UI can be updated with the modified data.","lastModifiedDate":"2024-03-12"},{"lineNumber":86,"author":{"gitId":"modembcc"},"content":"- keeps a reference to the `Logic` component, because the `UI` relies on the `Logic` to execute commands.","lastModifiedDate":"2024-03-12"},{"lineNumber":87,"author":{"gitId":"modembcc"},"content":"- depends on some classes in the `Model` component, as it displays `Person` object residing in the `Model`.","lastModifiedDate":"2024-03-12"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"**API** : [`Logic.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/logic/Logic.java)","lastModifiedDate":"2021-07-31"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/LogicClassDiagram.png\" width\u003d\"550\"/\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":"The sequence diagram below illustrates the interactions within the `Logic` component, taking `execute(\"delete 1\")` API call as an example.","lastModifiedDate":"2023-09-03"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"![Interactions Inside the Logic Component for the `delete project Duke` Command](images/DeleteSequenceDiagram.png)","lastModifiedDate":"2024-03-21"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"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"},{"lineNumber":102,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":106,"author":{"gitId":"-"},"content":"1. When `Logic` is called upon to execute a command, it is passed to an `AddressBookParser` object which in turn creates a parser that matches the command (e.g., `DeleteCommandParser`) and uses it to parse the command.","lastModifiedDate":"2023-09-03"},{"lineNumber":107,"author":{"gitId":"-"},"content":"1. This results in a `Command` object (more precisely, an object of one of its subclasses e.g., `DeleteCommand`) which is executed by the `LogicManager`.","lastModifiedDate":"2023-09-03"},{"lineNumber":108,"author":{"gitId":"-"},"content":"1. The command can communicate with the `Model` when it is executed (e.g. to delete a person).\u003cbr\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":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"},{"lineNumber":110,"author":{"gitId":"-"},"content":"1. The result of the command execution is encapsulated as a `CommandResult` object which is returned back from `Logic`.","lastModifiedDate":"2023-09-03"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"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"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":114,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ParserClasses.png\" width\u003d\"600\"/\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31"},{"lineNumber":117,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":118,"author":{"gitId":"modembcc"},"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":"2024-03-12"},{"lineNumber":119,"author":{"gitId":"modembcc"},"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":"2024-03-12"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31"},{"lineNumber":122,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":123,"author":{"gitId":"-"},"content":"**API** : [`Model.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/model/Model.java)","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":129,"author":{"gitId":"modembcc"},"content":"- stores the address book data i.e., all `Person` objects (which are contained in a `UniquePersonList` object).","lastModifiedDate":"2024-03-12"},{"lineNumber":130,"author":{"gitId":"modembcc"},"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":"2024-03-12"},{"lineNumber":131,"author":{"gitId":"modembcc"},"content":"- stores a `UserPref` object that represents the user’s preferences. This is exposed to the outside as a `ReadOnlyUserPref` objects.","lastModifiedDate":"2024-03-12"},{"lineNumber":132,"author":{"gitId":"modembcc"},"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":"2024-03-12"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":134,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** An alternative (arguably, a more OOP) model is given below. It has a `Tag` list in the `AddressBook`, which `Person` references. This allows `AddressBook` to only require one `Tag` object per unique tag, instead of each `Person` needing their own `Tag` objects.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":136,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/BetterModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":"**API** : [`Storage.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/storage/Storage.java)","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/StorageClassDiagram.png\" width\u003d\"550\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":146,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":148,"author":{"gitId":"modembcc"},"content":"- can save both address book data and user preference data in JSON format, and read them back into corresponding objects.","lastModifiedDate":"2024-03-12"},{"lineNumber":149,"author":{"gitId":"modembcc"},"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":"2024-03-12"},{"lineNumber":150,"author":{"gitId":"modembcc"},"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":"2024-03-12"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.addressbook.commons` package.","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"modembcc"},"content":"---","lastModifiedDate":"2024-03-12"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":"The proposed undo/redo mechanism is facilitated by `VersionedAddressBook`. It extends `AddressBook` with an undo/redo history, stored internally as an `addressBookStateList` and `currentStatePointer`. Additionally, it implements the following operations:","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"modembcc"},"content":"- `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2024-03-12"},{"lineNumber":169,"author":{"gitId":"modembcc"},"content":"- `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2024-03-12"},{"lineNumber":170,"author":{"gitId":"modembcc"},"content":"- `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2024-03-12"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":"These operations are exposed in the `Model` interface as `Model#commitAddressBook()`, `Model#undoAddressBook()` and `Model#redoAddressBook()` respectively.","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":"Given below is an example usage scenario and how the undo/redo mechanism behaves at each step.","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":"Step 1. The user launches the application for the first time. The `VersionedAddressBook` will be initialized with the initial address book state, and the `currentStatePointer` pointing to that single address book state.","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":"![UndoRedoState0](images/UndoRedoState0.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":"Step 2. The user executes `delete 5` command to delete the 5th person in the address book. The `delete` command calls `Model#commitAddressBook()`, causing the modified state of the address book after the `delete 5` command executes to be saved in the `addressBookStateList`, and the `currentStatePointer` is shifted to the newly inserted address book state.","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":"![UndoRedoState1](images/UndoRedoState1.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"Step 3. The user executes `add n/David …​` to add a new person. The `add` command also calls `Model#commitAddressBook()`, causing another modified address book state to be saved into the `addressBookStateList`.","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":"![UndoRedoState2](images/UndoRedoState2.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If a command fails its execution, it will not call `Model#commitAddressBook()`, so the address book state will not be saved into the `addressBookStateList`.","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":190,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":192,"author":{"gitId":"-"},"content":"Step 4. The user now decides that adding the person was a mistake, and decides to undo that action by executing the `undo` command. The `undo` command will call `Model#undoAddressBook()`, which will shift the `currentStatePointer` once to the left, pointing it to the previous address book state, and restores the address book to that state.","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":"![UndoRedoState3](images/UndoRedoState3.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If the `currentStatePointer` is at index 0, pointing to the initial AddressBook state, then there are no previous AddressBook states to restore. The `undo` command uses `Model#canUndoAddressBook()` to check if this is the case. If so, it will return an error to the user rather","lastModifiedDate":"2020-05-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":201,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-Logic.png)","lastModifiedDate":"2024-02-09"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** The lifeline for `UndoCommand` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.","lastModifiedDate":"2020-05-23"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":209,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":211,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-Model.png)","lastModifiedDate":"2024-02-09"},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":213,"author":{"gitId":"-"},"content":"The `redo` command does the opposite — it calls `Model#redoAddressBook()`, which shifts the `currentStatePointer` once to the right, pointing to the previously undone state, and restores the address book to that state.","lastModifiedDate":"2020-05-23"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If the `currentStatePointer` is at index `addressBookStateList.size() - 1`, pointing to the latest address book state, then there are no undone AddressBook states to restore. The `redo` command uses `Model#canRedoAddressBook()` to check if this is the case. If so, it will return an error to the user rather than attempting to perform the redo.","lastModifiedDate":"2020-05-23"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":217,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":219,"author":{"gitId":"-"},"content":"Step 5. The user then decides to execute the command `list`. Commands that do not modify the address book, such as `list`, will usually not call `Model#commitAddressBook()`, `Model#undoAddressBook()` or `Model#redoAddressBook()`. Thus, the `addressBookStateList` remains unchanged.","lastModifiedDate":"2020-05-23"},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":221,"author":{"gitId":"-"},"content":"![UndoRedoState4](images/UndoRedoState4.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":223,"author":{"gitId":"-"},"content":"Step 6. The user executes `clear`, which calls `Model#commitAddressBook()`. Since the `currentStatePointer` is not pointing at the end of the `addressBookStateList`, all address book states after the `currentStatePointer` will be purged. Reason: It no longer makes sense to redo the `add n/David …​` command. This is the behavior that most modern desktop applications follow.","lastModifiedDate":"2020-05-23"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":"![UndoRedoState5](images/UndoRedoState5.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23"},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/CommitActivityDiagram.png\" width\u003d\"250\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31"},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":235,"author":{"gitId":"modembcc"},"content":"- **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2024-03-12"},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"modembcc"},"content":" - Pros: Easy to implement.","lastModifiedDate":"2024-03-12"},{"lineNumber":238,"author":{"gitId":"modembcc"},"content":" - Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2024-03-12"},{"lineNumber":239,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":240,"author":{"gitId":"modembcc"},"content":"- **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2024-03-12"},{"lineNumber":241,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23"},{"lineNumber":242,"author":{"gitId":"modembcc"},"content":" - Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2024-03-12"},{"lineNumber":243,"author":{"gitId":"modembcc"},"content":" - Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2024-03-12"},{"lineNumber":244,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":247,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23"},{"lineNumber":248,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":249,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23"},{"lineNumber":250,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":251,"author":{"gitId":"modembcc"},"content":"---","lastModifiedDate":"2024-03-12"},{"lineNumber":252,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07"},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":255,"author":{"gitId":"modembcc"},"content":"- [Documentation guide](Documentation.md)","lastModifiedDate":"2024-03-12"},{"lineNumber":256,"author":{"gitId":"modembcc"},"content":"- [Testing guide](Testing.md)","lastModifiedDate":"2024-03-12"},{"lineNumber":257,"author":{"gitId":"modembcc"},"content":"- [Logging guide](Logging.md)","lastModifiedDate":"2024-03-12"},{"lineNumber":258,"author":{"gitId":"modembcc"},"content":"- [Configuration guide](Configuration.md)","lastModifiedDate":"2024-03-12"},{"lineNumber":259,"author":{"gitId":"modembcc"},"content":"- [DevOps guide](DevOps.md)","lastModifiedDate":"2024-03-12"},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"modembcc"},"content":"---","lastModifiedDate":"2024-03-12"},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23"},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":265,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23"},{"lineNumber":266,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":267,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23"},{"lineNumber":268,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":269,"author":{"gitId":"ananya21"},"content":"- has a need to organise various projects and people","lastModifiedDate":"2024-03-13"},{"lineNumber":270,"author":{"gitId":"modembcc"},"content":"- prefer desktop apps over other types","lastModifiedDate":"2024-03-12"},{"lineNumber":271,"author":{"gitId":"modembcc"},"content":"- can type fast","lastModifiedDate":"2024-03-12"},{"lineNumber":272,"author":{"gitId":"modembcc"},"content":"- prefers typing to mouse interactions","lastModifiedDate":"2024-03-12"},{"lineNumber":273,"author":{"gitId":"modembcc"},"content":"- is reasonably comfortable using CLI apps","lastModifiedDate":"2024-03-12"},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":275,"author":{"gitId":"ananya21"},"content":"**Value proposition**: manage projects and tasks faster than a typical mouse/GUI driven app","lastModifiedDate":"2024-03-13"},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":277,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07"},{"lineNumber":278,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":279,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23"},{"lineNumber":280,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":281,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23"},{"lineNumber":282,"author":{"gitId":"ananya21"},"content":"|----------|---------------------------------------------|----------------------------------------------------------------|---------------------------------------------------------------------------|","lastModifiedDate":"2024-03-13"},{"lineNumber":283,"author":{"gitId":"ananya21"},"content":"| `* * *` | software developer | keep track of all my projects’ tasks in the app | meet all my deadlines on time |","lastModifiedDate":"2024-03-13"},{"lineNumber":284,"author":{"gitId":"ananya21"},"content":"| `* *` | user | sort my tasks by their deadlines | see what is the next pending task to complete |","lastModifiedDate":"2024-03-13"},{"lineNumber":285,"author":{"gitId":"ananya21"},"content":"| `* *` | user | see what my tasks are due next week | schedule my timetable accordingly |","lastModifiedDate":"2024-03-13"},{"lineNumber":286,"author":{"gitId":"ananya21"},"content":"| `* *` | user | see who are my teammates for each project | know who to contact if I have any questions for that project |","lastModifiedDate":"2024-03-13"},{"lineNumber":287,"author":{"gitId":"ananya21"},"content":"| `* *` | user | mark my completed tasks as completed | keep them out of sight to prevent confusion |","lastModifiedDate":"2024-03-13"},{"lineNumber":288,"author":{"gitId":"ananya21"},"content":"| `* *` | user | mark my tasks as in progress | remind myself to come back to it once I have a clearer idea of what to do |","lastModifiedDate":"2024-03-13"},{"lineNumber":289,"author":{"gitId":"ananya21"},"content":"| `*` | user | keep track of all my ongoing projects | be reminded of what I need to do for the next few weeks/months |","lastModifiedDate":"2024-03-13"},{"lineNumber":290,"author":{"gitId":"ananya21"},"content":"| `*` | user | see what are the categories for each of my projects | know what knowledge I need to learn and utilize for each of their tasks |","lastModifiedDate":"2024-03-13"},{"lineNumber":291,"author":{"gitId":"ananya21"},"content":"| `*` | user | delete projects that have been discontinued or completed | know what to focus on |","lastModifiedDate":"2024-03-13"},{"lineNumber":292,"author":{"gitId":"ananya21"},"content":"| `*` | user | update the deadline of my tasks if it has been brought forward | know exactly when it is due |","lastModifiedDate":"2024-03-13"},{"lineNumber":293,"author":{"gitId":"ananya21"},"content":"| `* *` | project manager user | keep track of the team members | |","lastModifiedDate":"2024-03-13"},{"lineNumber":294,"author":{"gitId":"ananya21"},"content":"| `* * *` | user | create new projects | manage various tasks and activities |","lastModifiedDate":"2024-03-13"},{"lineNumber":295,"author":{"gitId":"ananya21"},"content":"| `* * *` | user | add team members to projects and assign them specific roles and tasks | |","lastModifiedDate":"2024-03-13"},{"lineNumber":296,"author":{"gitId":"ananya21"},"content":"| `* *` | user | set deadlines and milestones for subtasks within a project | |","lastModifiedDate":"2024-03-13"},{"lineNumber":297,"author":{"gitId":"ananya21"},"content":"| `*` | user | track the progress of tasks and projects through visual representations such as charts or graphs | |","lastModifiedDate":"2024-03-13"},{"lineNumber":298,"author":{"gitId":"ananya21"},"content":"| `*` | user | prioritize tasks within a project | ensure timely completion |","lastModifiedDate":"2024-03-13"},{"lineNumber":299,"author":{"gitId":"ananya21"},"content":"| `* *` | user | collaborate with team members by sharing files, comments, and updates within the software | |","lastModifiedDate":"2024-03-13"},{"lineNumber":300,"author":{"gitId":"ananya21"},"content":"| `* *` | user | receive notifications and reminders for upcoming deadlines or overdue tasks | |","lastModifiedDate":"2024-03-13"},{"lineNumber":301,"author":{"gitId":"ananya21"},"content":"| `*` | user | generate reports | analyze project performance and identify areas for improvement |","lastModifiedDate":"2024-03-13"},{"lineNumber":302,"author":{"gitId":"ananya21"},"content":"| `*` | user | integrate the software with other tools or platforms | have seamless workflow management |","lastModifiedDate":"2024-03-13"},{"lineNumber":303,"author":{"gitId":"ananya21"},"content":"| `* * *` | user | access the software from any device with an internet connection | for convenience |","lastModifiedDate":"2024-03-13"},{"lineNumber":304,"author":{"gitId":"ananya21"},"content":"| `*` | user | customize project templates or workflows | suit the specific needs of my team or organization |","lastModifiedDate":"2024-03-13"},{"lineNumber":305,"author":{"gitId":"ananya21"},"content":"| `* *` | user | securely store project-related documents and files within the software | |","lastModifiedDate":"2024-03-13"},{"lineNumber":306,"author":{"gitId":"ananya21"},"content":"| `* * *` | user | communicate with clients or stakeholders and provide them with updates on project progress | |","lastModifiedDate":"2024-03-13"},{"lineNumber":307,"author":{"gitId":"ananya21"},"content":"| `* *` | user | search for specific tasks, projects, or documents within the software | for quick access |","lastModifiedDate":"2024-03-13"},{"lineNumber":308,"author":{"gitId":"ananya21"},"content":"| `* *` | user | archive completed projects or tasks for future reference | |","lastModifiedDate":"2024-03-13"},{"lineNumber":309,"author":{"gitId":"ananya21"},"content":"| `*` | user | export data from the software in various formats | employ further analysis or sharing |","lastModifiedDate":"2024-03-13"},{"lineNumber":310,"author":{"gitId":"ananya21"},"content":"| `*` | user | invite external collaborators | they can participate in specific projects or tasks |","lastModifiedDate":"2024-03-13"},{"lineNumber":311,"author":{"gitId":"ananya21"},"content":"| `* *` | user | monitor team workload and redistribute tasks | balance workloads |","lastModifiedDate":"2024-03-13"},{"lineNumber":312,"author":{"gitId":"ananya21"},"content":"| `*` | user | access historical data and project archives | learn from past experiences and make informed decisions |","lastModifiedDate":"2024-03-13"},{"lineNumber":313,"author":{"gitId":"ananya21"},"content":"| `*` | user | provide feedback or suggestions for improving the software | better meet the needs of myself and my team |","lastModifiedDate":"2024-03-13"},{"lineNumber":314,"author":{"gitId":"ananya21"},"content":"| `* * *` | user | set the status of a project to be completed or incompleted | |","lastModifiedDate":"2024-03-13"},{"lineNumber":315,"author":{"gitId":"ananya21"},"content":"| `* * *` | user | set the deadline of a project to a specific date | |","lastModifiedDate":"2024-03-13"},{"lineNumber":316,"author":{"gitId":"ananya21"},"content":"| `* *` | user | edit the details of a project | |","lastModifiedDate":"2024-03-13"},{"lineNumber":317,"author":{"gitId":"ananya21"},"content":"| `* *` | user | filter the projects by their status | |","lastModifiedDate":"2024-03-13"},{"lineNumber":318,"author":{"gitId":"ananya21"},"content":"| `* * *` | user | add tasks to a project (ADD) | |","lastModifiedDate":"2024-03-13"},{"lineNumber":319,"author":{"gitId":"ananya21"},"content":"| `* *` | user | remove tasks from a project | |","lastModifiedDate":"2024-03-13"},{"lineNumber":320,"author":{"gitId":"ananya21"},"content":"| `* *` | user | edit the details of a task | |","lastModifiedDate":"2024-03-13"},{"lineNumber":321,"author":{"gitId":"ananya21"},"content":"| `* *` | user | mark task as not done or completed | |","lastModifiedDate":"2024-03-13"},{"lineNumber":322,"author":{"gitId":"ananya21"},"content":"| `* *` | user | assign tasks to a person | |","lastModifiedDate":"2024-03-13"},{"lineNumber":323,"author":{"gitId":"ananya21"},"content":"| `* *` | user | filter tasks by completion status | |","lastModifiedDate":"2024-03-13"},{"lineNumber":324,"author":{"gitId":"ananya21"},"content":"| `* *` | user | filter tasks by the person responsible | |","lastModifiedDate":"2024-03-13"},{"lineNumber":325,"author":{"gitId":"ananya21"},"content":"| `* * *` | user | save the project list on my hard drive | |","lastModifiedDate":"2024-03-13"},{"lineNumber":326,"author":{"gitId":"ananya21"},"content":"| `*` | user | share the project list so that other users can import the same list | |","lastModifiedDate":"2024-03-13"},{"lineNumber":327,"author":{"gitId":"ananya21"},"content":"| `*` | user | import lists from others while keeping my own list or discarding my old list | |","lastModifiedDate":"2024-03-13"},{"lineNumber":328,"author":{"gitId":"ananya21"},"content":"| `* *` | user | limit the amount of projects I can see on one page | |","lastModifiedDate":"2024-03-13"},{"lineNumber":329,"author":{"gitId":"ananya21"},"content":"| `* *` | user | search for projects by name | |","lastModifiedDate":"2024-03-13"},{"lineNumber":330,"author":{"gitId":"ananya21"},"content":"| `* *` | user | search for tasks by name | |","lastModifiedDate":"2024-03-13"},{"lineNumber":331,"author":{"gitId":"ananya21"},"content":"| `* * *` | user | access the user guide / command list | |","lastModifiedDate":"2024-03-13"},{"lineNumber":332,"author":{"gitId":"ananya21"},"content":"| `* *` | forgetful user | easily use the commands with guidance from the program | |","lastModifiedDate":"2024-03-13"},{"lineNumber":333,"author":{"gitId":"ananya21"},"content":"| `* *` | user | change font sizes | |","lastModifiedDate":"2024-03-13"},{"lineNumber":334,"author":{"gitId":"ananya21"},"content":"| `* * *` | typely user | use type commands to do everything a user does | |","lastModifiedDate":"2024-03-13"},{"lineNumber":335,"author":{"gitId":"ananya21"},"content":"| `*` | user | edit details of a person (Optional) | |","lastModifiedDate":"2024-03-13"},{"lineNumber":336,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":337,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":338,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07"},{"lineNumber":339,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":340,"author":{"gitId":"modembcc"},"content":"(For all use cases below, the **System** is the `DevPlan Pro` and the **Actor** is the `project manager`, unless specified otherwise)","lastModifiedDate":"2024-03-12"},{"lineNumber":341,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":342,"author":{"gitId":"modembcc"},"content":"**Use case: UC01 - Create a project**","lastModifiedDate":"2024-03-12"},{"lineNumber":343,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":344,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2024-03-12"},{"lineNumber":345,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":346,"author":{"gitId":"modembcc"},"content":"1. User inputs the project name to be added.","lastModifiedDate":"2024-03-12"},{"lineNumber":347,"author":{"gitId":"modembcc"},"content":"2. DevPlan Pro creates a new project with the specified name and adds it to the project list.","lastModifiedDate":"2024-03-12"},{"lineNumber":348,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":349,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2024-03-12"},{"lineNumber":350,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":351,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2024-03-12"},{"lineNumber":352,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":353,"author":{"gitId":"modembcc"},"content":"- 1a. The name is not unique.","lastModifiedDate":"2024-03-12"},{"lineNumber":354,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":355,"author":{"gitId":"modembcc"},"content":" - 1a1. DevPlan Pro rejects the project creation.","lastModifiedDate":"2024-03-12"},{"lineNumber":356,"author":{"gitId":"modembcc"},"content":" - 1a2. DevPlan Pro informs the user of the rejection.","lastModifiedDate":"2024-03-12"},{"lineNumber":357,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":358,"author":{"gitId":"modembcc"},"content":" Use case ends.","lastModifiedDate":"2024-03-12"},{"lineNumber":359,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":360,"author":{"gitId":"modembcc"},"content":"**Use case: UC02 - Delete a project**","lastModifiedDate":"2024-03-12"},{"lineNumber":361,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":362,"author":{"gitId":"modembcc"},"content":"**MSS**","lastModifiedDate":"2024-03-12"},{"lineNumber":363,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":364,"author":{"gitId":"modembcc"},"content":"1. User inputs the project name to be deleted.","lastModifiedDate":"2024-03-12"},{"lineNumber":365,"author":{"gitId":"modembcc"},"content":"2. DevPlan Pro deletes the project with the specified name and removes it from the project list. (Along with the project\u0027s tasks and members)","lastModifiedDate":"2024-03-12"},{"lineNumber":366,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":367,"author":{"gitId":"modembcc"},"content":" Use case ends.","lastModifiedDate":"2024-03-12"},{"lineNumber":368,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":369,"author":{"gitId":"modembcc"},"content":"**Extensions**","lastModifiedDate":"2024-03-12"},{"lineNumber":370,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":371,"author":{"gitId":"modembcc"},"content":"- 1a. The name is not valid. (No project with such name)","lastModifiedDate":"2024-03-12"},{"lineNumber":372,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":373,"author":{"gitId":"modembcc"},"content":" - 1a1. DevPlan Pro rejects the project deletion.","lastModifiedDate":"2024-03-12"},{"lineNumber":374,"author":{"gitId":"modembcc"},"content":" - 1a2. DevPlan Pro informs the user of the rejection.","lastModifiedDate":"2024-03-12"},{"lineNumber":375,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":376,"author":{"gitId":"modembcc"},"content":" Use case ends.","lastModifiedDate":"2024-03-12"},{"lineNumber":377,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":378,"author":{"gitId":"modembcc"},"content":"**Use case: UC03 - Add task to project**","lastModifiedDate":"2024-03-12"},{"lineNumber":379,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":380,"author":{"gitId":"modembcc"},"content":"**MSS**","lastModifiedDate":"2024-03-12"},{"lineNumber":381,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":382,"author":{"gitId":"modembcc"},"content":"1. User inputs the task and the project name.","lastModifiedDate":"2024-03-12"},{"lineNumber":383,"author":{"gitId":"modembcc"},"content":"2. DevPlan Pro creates a new task with the specified name and adds it to the specified project.","lastModifiedDate":"2024-03-12"},{"lineNumber":384,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":385,"author":{"gitId":"modembcc"},"content":" Use case ends.","lastModifiedDate":"2024-03-12"},{"lineNumber":386,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":387,"author":{"gitId":"modembcc"},"content":"**Extensions**","lastModifiedDate":"2024-03-12"},{"lineNumber":388,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":389,"author":{"gitId":"modembcc"},"content":"- 1a. The task name is not unique.","lastModifiedDate":"2024-03-12"},{"lineNumber":390,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":391,"author":{"gitId":"modembcc"},"content":" - 1a1. DevPlan Pro rejects the task creation.","lastModifiedDate":"2024-03-12"},{"lineNumber":392,"author":{"gitId":"modembcc"},"content":" - 1a2. DevPlan Pro informs the user of the rejection.","lastModifiedDate":"2024-03-12"},{"lineNumber":393,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":394,"author":{"gitId":"modembcc"},"content":" Use case ends.","lastModifiedDate":"2024-03-12"},{"lineNumber":395,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":396,"author":{"gitId":"modembcc"},"content":"- 1b. The project name is not valid.","lastModifiedDate":"2024-03-12"},{"lineNumber":397,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":398,"author":{"gitId":"modembcc"},"content":" - 1b1. DevPlan Pro rejects the task creation.","lastModifiedDate":"2024-03-12"},{"lineNumber":399,"author":{"gitId":"modembcc"},"content":" - 1b2. DevPlan Pro informs the user of the rejection.","lastModifiedDate":"2024-03-12"},{"lineNumber":400,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":401,"author":{"gitId":"modembcc"},"content":" Use case ends.","lastModifiedDate":"2024-03-12"},{"lineNumber":402,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":403,"author":{"gitId":"modembcc"},"content":"**Use case: UC04 - Remove task from project**","lastModifiedDate":"2024-03-12"},{"lineNumber":404,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":405,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23"},{"lineNumber":406,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":407,"author":{"gitId":"modembcc"},"content":"1. User inputs the task and the project name.","lastModifiedDate":"2024-03-12"},{"lineNumber":408,"author":{"gitId":"modembcc"},"content":"2. DevPlan Pro removes the task with the specified name from the specified project.","lastModifiedDate":"2024-03-12"},{"lineNumber":409,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":410,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":411,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":412,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23"},{"lineNumber":413,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":414,"author":{"gitId":"modembcc"},"content":"- 1a. The task name is not valid.","lastModifiedDate":"2024-03-12"},{"lineNumber":415,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":416,"author":{"gitId":"modembcc"},"content":" - 1a1. DevPlan Pro rejects the task deletion.","lastModifiedDate":"2024-03-12"},{"lineNumber":417,"author":{"gitId":"modembcc"},"content":" - 1a2. DevPlan Pro informs the user of the rejection.","lastModifiedDate":"2024-03-12"},{"lineNumber":418,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":419,"author":{"gitId":"modembcc"},"content":" Use case ends.","lastModifiedDate":"2024-03-12"},{"lineNumber":420,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":421,"author":{"gitId":"modembcc"},"content":"- 1b. The project name is not valid.","lastModifiedDate":"2024-03-12"},{"lineNumber":422,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":423,"author":{"gitId":"modembcc"},"content":" - 1b1. DevPlan Pro rejects the task deletion.","lastModifiedDate":"2024-03-12"},{"lineNumber":424,"author":{"gitId":"modembcc"},"content":" - 1b2. DevPlan Pro informs the user of the rejection.","lastModifiedDate":"2024-03-12"},{"lineNumber":425,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":426,"author":{"gitId":"modembcc"},"content":" Use case ends.","lastModifiedDate":"2024-03-12"},{"lineNumber":427,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":428,"author":{"gitId":"modembcc"},"content":"**Use case: UC05 - View a project**","lastModifiedDate":"2024-03-12"},{"lineNumber":429,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":430,"author":{"gitId":"modembcc"},"content":"**MSS**","lastModifiedDate":"2024-03-12"},{"lineNumber":431,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":432,"author":{"gitId":"modembcc"},"content":"1. User inputs the project name.","lastModifiedDate":"2024-03-12"},{"lineNumber":433,"author":{"gitId":"modembcc"},"content":"2. DevPlan Pro shows the information of the specified project.","lastModifiedDate":"2024-03-12"},{"lineNumber":434,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":435,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":436,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":437,"author":{"gitId":"modembcc"},"content":"**Extensions**","lastModifiedDate":"2024-03-12"},{"lineNumber":438,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":439,"author":{"gitId":"modembcc"},"content":"- 1a. The project name is not valid.","lastModifiedDate":"2024-03-12"},{"lineNumber":440,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":441,"author":{"gitId":"modembcc"},"content":" - 1b1. DevPlan Pro rejects showing the project.","lastModifiedDate":"2024-03-12"},{"lineNumber":442,"author":{"gitId":"modembcc"},"content":" - 1b2. DevPlan Pro informs the user of the rejection.","lastModifiedDate":"2024-03-12"},{"lineNumber":443,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":444,"author":{"gitId":"modembcc"},"content":" Use case ends.","lastModifiedDate":"2024-03-12"},{"lineNumber":445,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":446,"author":{"gitId":"modembcc"},"content":"**Use case: UC06 - Add team member to project**","lastModifiedDate":"2024-03-12"},{"lineNumber":447,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":448,"author":{"gitId":"modembcc"},"content":"**MSS**","lastModifiedDate":"2024-03-12"},{"lineNumber":449,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":450,"author":{"gitId":"modembcc"},"content":"1. User inputs the member name and the project name.","lastModifiedDate":"2024-03-12"},{"lineNumber":451,"author":{"gitId":"modembcc"},"content":"2. DevPlan Pro adds a person with the specified name to the specified project\u0027s team.","lastModifiedDate":"2024-03-12"},{"lineNumber":452,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":453,"author":{"gitId":"modembcc"},"content":" Use case ends.","lastModifiedDate":"2024-03-12"},{"lineNumber":454,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":455,"author":{"gitId":"modembcc"},"content":"**Extensions**","lastModifiedDate":"2024-03-12"},{"lineNumber":456,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":457,"author":{"gitId":"modembcc"},"content":"- 1a. The member name is not unique.","lastModifiedDate":"2024-03-12"},{"lineNumber":458,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":459,"author":{"gitId":"modembcc"},"content":" - 1a1. DevPlan Pro rejects the member addition.","lastModifiedDate":"2024-03-12"},{"lineNumber":460,"author":{"gitId":"modembcc"},"content":" - 1a2. DevPlan Pro informs the user of the rejection.","lastModifiedDate":"2024-03-12"},{"lineNumber":461,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":462,"author":{"gitId":"modembcc"},"content":" Use case ends.","lastModifiedDate":"2024-03-12"},{"lineNumber":463,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":464,"author":{"gitId":"modembcc"},"content":"- 1b. The project name is not valid.","lastModifiedDate":"2024-03-12"},{"lineNumber":465,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":466,"author":{"gitId":"modembcc"},"content":" - 1b1. DevPlan Pro rejects the member addition.","lastModifiedDate":"2024-03-12"},{"lineNumber":467,"author":{"gitId":"modembcc"},"content":" - 1b2. DevPlan Pro informs the user of the rejection.","lastModifiedDate":"2024-03-12"},{"lineNumber":468,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":469,"author":{"gitId":"modembcc"},"content":" Use case ends.","lastModifiedDate":"2024-03-12"},{"lineNumber":470,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":471,"author":{"gitId":"modembcc"},"content":"**Use case: UC07 - Remove team member from project**","lastModifiedDate":"2024-03-12"},{"lineNumber":472,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":473,"author":{"gitId":"modembcc"},"content":"**MSS**","lastModifiedDate":"2024-03-12"},{"lineNumber":474,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":475,"author":{"gitId":"modembcc"},"content":"1. User inputs the member name and the project name.","lastModifiedDate":"2024-03-12"},{"lineNumber":476,"author":{"gitId":"modembcc"},"content":"2. DevPlan Pro removes a person with the specified name from the specified project\u0027s team.","lastModifiedDate":"2024-03-12"},{"lineNumber":477,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":478,"author":{"gitId":"modembcc"},"content":" Use case ends.","lastModifiedDate":"2024-03-12"},{"lineNumber":479,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":480,"author":{"gitId":"modembcc"},"content":"**Extensions**","lastModifiedDate":"2024-03-12"},{"lineNumber":481,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":482,"author":{"gitId":"modembcc"},"content":"- 1a. The member name is not valid.","lastModifiedDate":"2024-03-12"},{"lineNumber":483,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":484,"author":{"gitId":"modembcc"},"content":" - 1a1. DevPlan Pro rejects the member deletion.","lastModifiedDate":"2024-03-12"},{"lineNumber":485,"author":{"gitId":"modembcc"},"content":" - 1a2. DevPlan Pro informs the user of the rejection.","lastModifiedDate":"2024-03-12"},{"lineNumber":486,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":487,"author":{"gitId":"modembcc"},"content":" Use case ends.","lastModifiedDate":"2024-03-12"},{"lineNumber":488,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":489,"author":{"gitId":"modembcc"},"content":"- 1b. The project name is not valid.","lastModifiedDate":"2024-03-12"},{"lineNumber":490,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":491,"author":{"gitId":"modembcc"},"content":" - 1b1. DevPlan Pro rejects the member deletion.","lastModifiedDate":"2024-03-12"},{"lineNumber":492,"author":{"gitId":"modembcc"},"content":" - 1b2. DevPlan Pro informs the user of the rejection.","lastModifiedDate":"2024-03-12"},{"lineNumber":493,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":494,"author":{"gitId":"modembcc"},"content":" Use case ends.","lastModifiedDate":"2024-03-12"},{"lineNumber":495,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":496,"author":{"gitId":"modembcc"},"content":"**Use case: UC08 - Assign member to task of project**","lastModifiedDate":"2024-03-12"},{"lineNumber":497,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":498,"author":{"gitId":"modembcc"},"content":"**MSS**","lastModifiedDate":"2024-03-12"},{"lineNumber":499,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":500,"author":{"gitId":"modembcc"},"content":"1. User inputs the member name, the task name, and the project name.","lastModifiedDate":"2024-03-12"},{"lineNumber":501,"author":{"gitId":"modembcc"},"content":"2. DevPlan Pro assign the specified member to the specified task in the specified project.","lastModifiedDate":"2024-03-12"},{"lineNumber":502,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":503,"author":{"gitId":"modembcc"},"content":" Use case ends.","lastModifiedDate":"2024-03-12"},{"lineNumber":504,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":505,"author":{"gitId":"modembcc"},"content":"**Extensions**","lastModifiedDate":"2024-03-12"},{"lineNumber":506,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":507,"author":{"gitId":"modembcc"},"content":"- 1a. The member name is not valid.","lastModifiedDate":"2024-03-12"},{"lineNumber":508,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":509,"author":{"gitId":"modembcc"},"content":" - 1a1. DevPlan Pro rejects the task assignment.","lastModifiedDate":"2024-03-12"},{"lineNumber":510,"author":{"gitId":"modembcc"},"content":" - 1a2. DevPlan Pro informs the user of the rejection.","lastModifiedDate":"2024-03-12"},{"lineNumber":511,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":512,"author":{"gitId":"modembcc"},"content":" Use case ends.","lastModifiedDate":"2024-03-12"},{"lineNumber":513,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":514,"author":{"gitId":"modembcc"},"content":"- 1b. The task name is not valid.","lastModifiedDate":"2024-03-12"},{"lineNumber":515,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":516,"author":{"gitId":"modembcc"},"content":" - 1b1. DevPlan Pro rejects the task assignment.","lastModifiedDate":"2024-03-12"},{"lineNumber":517,"author":{"gitId":"modembcc"},"content":" - 1b2. DevPlan Pro informs the user of the rejection.","lastModifiedDate":"2024-03-12"},{"lineNumber":518,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":519,"author":{"gitId":"modembcc"},"content":" Use case ends.","lastModifiedDate":"2024-03-12"},{"lineNumber":520,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":521,"author":{"gitId":"modembcc"},"content":"- 1c. The project name is not valid.","lastModifiedDate":"2024-03-12"},{"lineNumber":522,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":523,"author":{"gitId":"modembcc"},"content":" - 1b1. DevPlan Pro rejects the task assignment.","lastModifiedDate":"2024-03-12"},{"lineNumber":524,"author":{"gitId":"modembcc"},"content":" - 1b2. DevPlan Pro informs the user of the rejection.","lastModifiedDate":"2024-03-12"},{"lineNumber":525,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":526,"author":{"gitId":"modembcc"},"content":" Use case ends.","lastModifiedDate":"2024-03-12"},{"lineNumber":527,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":528,"author":{"gitId":"modembcc"},"content":"**Use case: UC09 - Assign deadline to task of project**","lastModifiedDate":"2024-03-12"},{"lineNumber":529,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":530,"author":{"gitId":"modembcc"},"content":"**MSS**","lastModifiedDate":"2024-03-12"},{"lineNumber":531,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":532,"author":{"gitId":"modembcc"},"content":"1. User inputs the deadline, the task name, and the project name.","lastModifiedDate":"2024-03-12"},{"lineNumber":533,"author":{"gitId":"modembcc"},"content":"2. DevPlan Pro assign deadline to the specified task in the specified project.","lastModifiedDate":"2024-03-12"},{"lineNumber":534,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":535,"author":{"gitId":"modembcc"},"content":" Use case ends.","lastModifiedDate":"2024-03-12"},{"lineNumber":536,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":537,"author":{"gitId":"modembcc"},"content":"**Extensions**","lastModifiedDate":"2024-03-12"},{"lineNumber":538,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":539,"author":{"gitId":"modembcc"},"content":"- 1a. Deadline is not in the “MMM D YYYY” format.","lastModifiedDate":"2024-03-12"},{"lineNumber":540,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":541,"author":{"gitId":"modembcc"},"content":" - 1a1. DevPlan Pro rejects the deadline assignment.","lastModifiedDate":"2024-03-12"},{"lineNumber":542,"author":{"gitId":"modembcc"},"content":" - 1a2. DevPlan Pro informs the user of the rejection and the correct format.","lastModifiedDate":"2024-03-12"},{"lineNumber":543,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":544,"author":{"gitId":"modembcc"},"content":" Use case ends.","lastModifiedDate":"2024-03-12"},{"lineNumber":545,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":546,"author":{"gitId":"modembcc"},"content":"- 1b. The task name is not valid.","lastModifiedDate":"2024-03-12"},{"lineNumber":547,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":548,"author":{"gitId":"modembcc"},"content":" - 1b1. DevPlan Pro rejects the deadline assignment.","lastModifiedDate":"2024-03-12"},{"lineNumber":549,"author":{"gitId":"modembcc"},"content":" - 1b2. DevPlan Pro informs the user of the rejection.","lastModifiedDate":"2024-03-12"},{"lineNumber":550,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":551,"author":{"gitId":"modembcc"},"content":" Use case ends.","lastModifiedDate":"2024-03-12"},{"lineNumber":552,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":553,"author":{"gitId":"modembcc"},"content":"- 1c. The project name is not valid.","lastModifiedDate":"2024-03-12"},{"lineNumber":554,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":555,"author":{"gitId":"modembcc"},"content":" - 1b1. DevPlan Pro rejects the deadline assignment.","lastModifiedDate":"2024-03-12"},{"lineNumber":556,"author":{"gitId":"modembcc"},"content":" - 1b2. DevPlan Pro informs the user of the rejection.","lastModifiedDate":"2024-03-12"},{"lineNumber":557,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":558,"author":{"gitId":"modembcc"},"content":" Use case ends.","lastModifiedDate":"2024-03-12"},{"lineNumber":559,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":560,"author":{"gitId":"modembcc"},"content":"**Use case: UC10 - Assign deadline to project**","lastModifiedDate":"2024-03-12"},{"lineNumber":561,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":562,"author":{"gitId":"modembcc"},"content":"**MSS**","lastModifiedDate":"2024-03-12"},{"lineNumber":563,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":564,"author":{"gitId":"modembcc"},"content":"1. User inputs the deadline and the project name.","lastModifiedDate":"2024-03-12"},{"lineNumber":565,"author":{"gitId":"modembcc"},"content":"2. DevPlan Pro assign deadline to the specified project.","lastModifiedDate":"2024-03-12"},{"lineNumber":566,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":567,"author":{"gitId":"modembcc"},"content":" Use case ends.","lastModifiedDate":"2024-03-12"},{"lineNumber":568,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":569,"author":{"gitId":"modembcc"},"content":"**Extensions**","lastModifiedDate":"2024-03-12"},{"lineNumber":570,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":571,"author":{"gitId":"modembcc"},"content":"- 1a. Deadline is not in the “MMM D YYYY” format.","lastModifiedDate":"2024-03-12"},{"lineNumber":572,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":573,"author":{"gitId":"modembcc"},"content":" - 1a1. DevPlan Pro rejects the deadline assignment.","lastModifiedDate":"2024-03-12"},{"lineNumber":574,"author":{"gitId":"modembcc"},"content":" - 1a2. DevPlan Pro informs the user of the rejection and the correct format.","lastModifiedDate":"2024-03-12"},{"lineNumber":575,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":576,"author":{"gitId":"modembcc"},"content":" Use case ends.","lastModifiedDate":"2024-03-12"},{"lineNumber":577,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":578,"author":{"gitId":"modembcc"},"content":"- 1b. The project name is not valid.","lastModifiedDate":"2024-03-12"},{"lineNumber":579,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":580,"author":{"gitId":"modembcc"},"content":" - 1b1. DevPlan Pro rejects the deadline assignment.","lastModifiedDate":"2024-03-12"},{"lineNumber":581,"author":{"gitId":"modembcc"},"content":" - 1b2. DevPlan Pro informs the user of the rejection.","lastModifiedDate":"2024-03-12"},{"lineNumber":582,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":583,"author":{"gitId":"modembcc"},"content":" Use case ends.","lastModifiedDate":"2024-03-12"},{"lineNumber":584,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":585,"author":{"gitId":"modembcc"},"content":"**Use case: UC11 - Set project status**","lastModifiedDate":"2024-03-12"},{"lineNumber":586,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":587,"author":{"gitId":"modembcc"},"content":"**MSS**","lastModifiedDate":"2024-03-12"},{"lineNumber":588,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":589,"author":{"gitId":"modembcc"},"content":"1. User inputs the status and the project name.","lastModifiedDate":"2024-03-12"},{"lineNumber":590,"author":{"gitId":"modembcc"},"content":"2. DevPlan Pro set the status of the specified project.","lastModifiedDate":"2024-03-12"},{"lineNumber":591,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":592,"author":{"gitId":"modembcc"},"content":" Use case ends.","lastModifiedDate":"2024-03-12"},{"lineNumber":593,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":594,"author":{"gitId":"modembcc"},"content":"**Extensions**","lastModifiedDate":"2024-03-12"},{"lineNumber":595,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":596,"author":{"gitId":"modembcc"},"content":"- 1a. The project name is not valid.","lastModifiedDate":"2024-03-12"},{"lineNumber":597,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":598,"author":{"gitId":"modembcc"},"content":" - 1b1. DevPlan Pro rejects the status change.","lastModifiedDate":"2024-03-12"},{"lineNumber":599,"author":{"gitId":"modembcc"},"content":" - 1b2. DevPlan Pro informs the user of the rejection.","lastModifiedDate":"2024-03-12"},{"lineNumber":600,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":601,"author":{"gitId":"modembcc"},"content":" Use case ends.","lastModifiedDate":"2024-03-12"},{"lineNumber":602,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":603,"author":{"gitId":"modembcc"},"content":"**Use case: UC11 - Set task status**","lastModifiedDate":"2024-03-12"},{"lineNumber":604,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":605,"author":{"gitId":"modembcc"},"content":"**MSS**","lastModifiedDate":"2024-03-12"},{"lineNumber":606,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":607,"author":{"gitId":"modembcc"},"content":"1. User inputs the status, the task name, and the project name.","lastModifiedDate":"2024-03-12"},{"lineNumber":608,"author":{"gitId":"modembcc"},"content":"2. DevPlan Pro set the status of the specified task in the specified project.","lastModifiedDate":"2024-03-12"},{"lineNumber":609,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":610,"author":{"gitId":"modembcc"},"content":" Use case ends.","lastModifiedDate":"2024-03-12"},{"lineNumber":611,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":612,"author":{"gitId":"modembcc"},"content":"**Extensions**","lastModifiedDate":"2024-03-12"},{"lineNumber":613,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":614,"author":{"gitId":"modembcc"},"content":"- 1a. The task name is not valid.","lastModifiedDate":"2024-03-12"},{"lineNumber":615,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":616,"author":{"gitId":"modembcc"},"content":" - 1b1. DevPlan Pro rejects the status change.","lastModifiedDate":"2024-03-12"},{"lineNumber":617,"author":{"gitId":"modembcc"},"content":" - 1b2. DevPlan Pro informs the user of the rejection.","lastModifiedDate":"2024-03-12"},{"lineNumber":618,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":619,"author":{"gitId":"modembcc"},"content":" Use case ends.","lastModifiedDate":"2024-03-12"},{"lineNumber":620,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":621,"author":{"gitId":"modembcc"},"content":"- 1b. The project name is not valid.","lastModifiedDate":"2024-03-12"},{"lineNumber":622,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":623,"author":{"gitId":"modembcc"},"content":" - 1b1. DevPlan Pro rejects the status change.","lastModifiedDate":"2024-03-12"},{"lineNumber":624,"author":{"gitId":"modembcc"},"content":" - 1b2. DevPlan Pro informs the user of the rejection.","lastModifiedDate":"2024-03-12"},{"lineNumber":625,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":626,"author":{"gitId":"modembcc"},"content":" Use case ends.","lastModifiedDate":"2024-03-12"},{"lineNumber":627,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":628,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23"},{"lineNumber":629,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":630,"author":{"gitId":"modembcc"},"content":"- Should work on any _mainstream OS_ as long as it has Java `11` or above installed.","lastModifiedDate":"2024-03-12"},{"lineNumber":631,"author":{"gitId":"modembcc"},"content":"- Should be able to hold up to 1000 projects without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2024-03-12"},{"lineNumber":632,"author":{"gitId":"modembcc"},"content":"- Should be able to hold up to 1000 tasks per project without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2024-03-12"},{"lineNumber":633,"author":{"gitId":"modembcc"},"content":"- A user with above average typing speed for regular English text (i.e. not code, not system admin commands) should be able to accomplish most of the tasks faster using commands than using the mouse.","lastModifiedDate":"2024-03-12"},{"lineNumber":634,"author":{"gitId":"modembcc"},"content":"- Should respond to user commands within 2 seconds.","lastModifiedDate":"2024-03-12"},{"lineNumber":635,"author":{"gitId":"modembcc"},"content":"- Should be usable by a novice who has never used DevPlan Pro before.","lastModifiedDate":"2024-03-12"},{"lineNumber":636,"author":{"gitId":"modembcc"},"content":"- Documentation should be understandable for a novice user who has never used DevPlan Pro, or any other similar project management application.","lastModifiedDate":"2024-03-12"},{"lineNumber":637,"author":{"gitId":"modembcc"},"content":"- The user interface should be intuitive enough for users who are not IT-savvy.","lastModifiedDate":"2024-03-12"},{"lineNumber":638,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":639,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23"},{"lineNumber":640,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":641,"author":{"gitId":"ThitipatC"},"content":"- **Project Manager**:The individual supervising a project whose role may include planning, executing, and closing a project.","lastModifiedDate":"2024-03-12"},{"lineNumber":642,"author":{"gitId":"ThitipatC"},"content":"- **Task Status**: A status of a task whether done or not done","lastModifiedDate":"2024-03-12"},{"lineNumber":643,"author":{"gitId":"ThitipatC"},"content":"- **Project Status**: A status of a project whether Completed or not Completed","lastModifiedDate":"2024-03-12"},{"lineNumber":644,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":645,"author":{"gitId":"modembcc"},"content":"---","lastModifiedDate":"2024-03-12"},{"lineNumber":646,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":647,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23"},{"lineNumber":648,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":649,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":650,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":651,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2020-05-23"},{"lineNumber":652,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":653,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":654,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":655,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":656,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":657,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":658,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":659,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":660,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23"},{"lineNumber":661,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":662,"author":{"gitId":"-"},"content":" 1. Double-click the jar file Expected: Shows the GUI with a set of sample contacts. The window size may not be optimum.","lastModifiedDate":"2020-05-23"},{"lineNumber":663,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":664,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23"},{"lineNumber":665,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":666,"author":{"gitId":"-"},"content":" 1. Resize the window to an optimum size. Move the window to a different location. Close the window.","lastModifiedDate":"2020-05-23"},{"lineNumber":667,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":668,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":669,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23"},{"lineNumber":670,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":671,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":672,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":673,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23"},{"lineNumber":674,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":675,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23"},{"lineNumber":676,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":677,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23"},{"lineNumber":678,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":679,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":680,"author":{"gitId":"-"},"content":" Expected: First contact is deleted from the list. Details of the deleted contact shown in the status message. Timestamp in the status bar is updated.","lastModifiedDate":"2020-05-23"},{"lineNumber":681,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":682,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":683,"author":{"gitId":"-"},"content":" Expected: No person is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2020-05-23"},{"lineNumber":684,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":685,"author":{"gitId":"-"},"content":" 1. Other incorrect delete commands to try: `delete`, `delete x`, `...` (where x is larger than the list size)\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":686,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":687,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":688,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":689,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":690,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":691,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":692,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":693,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":694,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23"},{"lineNumber":695,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":696,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"modembcc":319,"ThitipatC":3,"Lin-Shuang-Shuang":1,"-":317,"ananya21":56}},{"path":"docs/UserGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: User Guide","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"AddressBook Level 3 (AB3) is a **desktop app for managing contacts, optimized for use via a Command Line Interface** (CLI) while still having the benefits of a Graphical User Interface (GUI). If you can type fast, AB3 can get your contact management tasks done faster than traditional GUI apps.","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"modembcc"},"content":"- Table of Contents","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":" {:toc}","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"modembcc"},"content":"---","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"## Quick start","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"1. Ensure you have Java `11` or above installed in your Computer.","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"1. Download the latest `addressbook.jar` from [here](https://github.com/se-edu/addressbook-level3/releases).","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"1. Copy the file to the folder you want to use as the _home folder_ for your AddressBook.","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"1. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar addressbook.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2023-01-01"},{"lineNumber":22,"author":{"gitId":"-"},"content":" A GUI similar to the below should appear in a few seconds. Note how the app contains some sample data.\u003cbr\u003e","lastModifiedDate":"2023-01-01"},{"lineNumber":23,"author":{"gitId":"-"},"content":" ![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"1. Type the command in the command box and press Enter to execute it. e.g. typing **`help`** and pressing Enter will open the help window.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":" Some example commands you can try:","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" - `add project Duke` : Adds a project named `Duke` to the DevPlanPro.","lastModifiedDate":"2024-03-22"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" - `delete project Duke` : Deletes the Duke project from the list.","lastModifiedDate":"2024-03-22"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" - `clear` : Deletes all projects and tasks.","lastModifiedDate":"2024-03-22"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"modembcc"},"content":" - `exit` : Exits the app.","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":"1. Refer to the [Features](#features) below for details of each command.","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"modembcc"},"content":"---","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"block\" class\u003d\"alert alert-info\"\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"**:information_source: Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"modembcc"},"content":"- Words in `UPPER_CASE` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":" e.g. in `add n/NAME`, `NAME` is a parameter which can be used as `add n/John Doe`.","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"modembcc"},"content":"- Items in square brackets are optional.\u003cbr\u003e","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":" e.g `n/NAME [t/TAG]` can be used as `n/John Doe t/friend` or as `n/John Doe`.","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"modembcc"},"content":"- Items with `…`​ after them can be used multiple times including zero times.\u003cbr\u003e","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":" e.g. `[t/TAG]…​` can be used as ` ` (i.e. 0 times), `t/friend`, `t/friend t/family` etc.","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"modembcc"},"content":"- Parameters can be in any order.\u003cbr\u003e","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" e.g. if the command specifies `n/NAME p/PHONE_NUMBER`, `p/PHONE_NUMBER n/NAME` is also acceptable.","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"- Extraneous parameters for commands that do not take in parameters (such as `help`, `exit` and `clear`) will be ignored.\u003cbr\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":59,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2021-02-03"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03"},{"lineNumber":61,"author":{"gitId":"modembcc"},"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":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":"### Viewing help : `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"Shows a message explaning how to access the help page.","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"Format: `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"### Adding a project: `add project`","lastModifiedDate":"2024-02-28"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"Adds a project to the project manager.","lastModifiedDate":"2024-02-28"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"Format: `add project \u003cPROJECT_NAME\u003e`","lastModifiedDate":"2024-02-28"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":80,"author":{"gitId":"modembcc"},"content":"- `add project CS2103T Duke Chatbot Project`","lastModifiedDate":"2024-03-12"},{"lineNumber":81,"author":{"gitId":"modembcc"},"content":"- `add project CS2101 Presentation`","lastModifiedDate":"2024-03-12"},{"lineNumber":82,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":83,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"Expected output:","lastModifiedDate":"2024-02-28"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":85,"author":{"gitId":"modembcc"},"content":"- Success: `\u003cPROJECT_NAME\u003e has been added to the project list.`","lastModifiedDate":"2024-03-12"},{"lineNumber":86,"author":{"gitId":"modembcc"},"content":"- Failure: `Project \u003cPROJECT_NAME\u003e already exists.`","lastModifiedDate":"2024-03-12"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"### Editing a project : `edit project`","lastModifiedDate":"2024-03-22"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"Edits an existing project in the DevPlanPro.","lastModifiedDate":"2024-03-22"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"Format: `edit project \u003cOLD_PROJECT_NAME\u003e /to \u003cNEW_PROJECT_NAME\u003e`","lastModifiedDate":"2024-03-22"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"- Edits the name of a project","lastModifiedDate":"2024-03-22"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":99,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"- `edit project Duke /to Duke Chatbot` ","lastModifiedDate":"2024-03-22"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"### Locating projects by name: `find`","lastModifiedDate":"2024-03-22"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":103,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"Finds project whose names contain any of the given keywords.","lastModifiedDate":"2024-03-22"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":105,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"Format: `find project [KEYWORDS]`","lastModifiedDate":"2024-03-22"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":107,"author":{"gitId":"modembcc"},"content":"- The search is case-insensitive. e.g `hans` will match `Hans`","lastModifiedDate":"2024-03-12"},{"lineNumber":108,"author":{"gitId":"modembcc"},"content":"- The order of the keywords does not matter. e.g. `Hans Bo` will match `Bo Hans`","lastModifiedDate":"2024-03-12"},{"lineNumber":109,"author":{"gitId":"modembcc"},"content":"- Only the name is searched.","lastModifiedDate":"2024-03-12"},{"lineNumber":110,"author":{"gitId":"modembcc"},"content":"- Only full words will be matched e.g. `Han` will not match `Hans`","lastModifiedDate":"2024-03-12"},{"lineNumber":111,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"- Projects matching at least one keyword will be returned (i.e. `OR` search).","lastModifiedDate":"2024-03-22"},{"lineNumber":112,"author":{"gitId":"-"},"content":" e.g. `Hans Bo` will return `Hans Gruber`, `Bo Yang`","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":115,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":116,"author":{"gitId":"modembcc"},"content":"- `find John` returns `john` and `John Doe`","lastModifiedDate":"2024-03-12"},{"lineNumber":117,"author":{"gitId":"modembcc"},"content":"- `find alex david` returns `Alex Yeoh`, `David Li`\u003cbr\u003e","lastModifiedDate":"2024-03-12"},{"lineNumber":118,"author":{"gitId":"-"},"content":" ![result for \u0027find alex david\u0027](images/findAlexDavidResult.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"### Deleting a project : `delete project`","lastModifiedDate":"2024-02-28"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"Deletes the specified project from the project list.","lastModifiedDate":"2024-02-28"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"Format: `delete project \u003cPROJECT_NAME\u003e`","lastModifiedDate":"2024-02-28"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"modembcc"},"content":"- The specified project name must exist in the project list.","lastModifiedDate":"2024-03-12"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":128,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2024-03-12"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":130,"author":{"gitId":"modembcc"},"content":"- `delete project CS2101 Presentation`","lastModifiedDate":"2024-03-12"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":132,"author":{"gitId":"modembcc"},"content":"Expected output:","lastModifiedDate":"2024-03-12"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":134,"author":{"gitId":"modembcc"},"content":"- Successful deletion: `\u003cPROJECT_NAME\u003e has been deleted from the project list.`","lastModifiedDate":"2024-03-12"},{"lineNumber":135,"author":{"gitId":"modembcc"},"content":"- Failed deletion: `Project \u003cPROJECT_NAME\u003e not found: Please make sure the project exists.`","lastModifiedDate":"2024-03-12"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":137,"author":{"gitId":"modembcc"},"content":"### Assign member to task : `add person`","lastModifiedDate":"2024-03-12"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":139,"author":{"gitId":"modembcc"},"content":"Assigns a team member to a task within a project.","lastModifiedDate":"2024-03-12"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":141,"author":{"gitId":"modembcc"},"content":"Format: `add person \u003cPERSON_NAME\u003e /to \u003cTASK_NAME\u003e /in \u003cPROJECT_NAME\u003e`","lastModifiedDate":"2024-03-12"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":143,"author":{"gitId":"modembcc"},"content":"- The specified project name must exist in the project list.","lastModifiedDate":"2024-03-12"},{"lineNumber":144,"author":{"gitId":"modembcc"},"content":"- The specified task name must exist in the project\u0027s task.","lastModifiedDate":"2024-03-12"},{"lineNumber":145,"author":{"gitId":"modembcc"},"content":"- The specified member name must be a member of the project team.","lastModifiedDate":"2024-03-12"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":147,"author":{"gitId":"modembcc"},"content":"Examples:","lastModifiedDate":"2024-03-12"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":149,"author":{"gitId":"modembcc"},"content":"- `add person Joe /to unit test /in CS2103_TP`","lastModifiedDate":"2024-03-12"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":151,"author":{"gitId":"modembcc"},"content":"Expected output:","lastModifiedDate":"2024-03-12"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":153,"author":{"gitId":"modembcc"},"content":"- Successful assignment: `\u003cPERSON_NAME\u003e has been assigned to \u003cPROJECT_NAME\u003e: \u003cTASK_NAME\u003e`","lastModifiedDate":"2024-03-12"},{"lineNumber":154,"author":{"gitId":"modembcc"},"content":"- Failed assignment (example): `Person \u003cPERSON_NAME\u003e is not a team member.`","lastModifiedDate":"2024-03-12"},{"lineNumber":155,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":156,"author":{"gitId":"modembcc"},"content":"### Assign deadline to project : `add deadline`","lastModifiedDate":"2024-03-12"},{"lineNumber":157,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":158,"author":{"gitId":"modembcc"},"content":"Assigns a deadline to a project.","lastModifiedDate":"2024-03-12"},{"lineNumber":159,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":160,"author":{"gitId":"modembcc"},"content":"Format: `add deadline \u003cDEADLINE\u003e /to \u003cPROJECT_NAME\u003e`","lastModifiedDate":"2024-03-12"},{"lineNumber":161,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":162,"author":{"gitId":"modembcc"},"content":"- The specified project name must exist in the project list.","lastModifiedDate":"2024-03-12"},{"lineNumber":163,"author":{"gitId":"modembcc"},"content":"- The deadline must be in `MMM D YYYY` format","lastModifiedDate":"2024-03-12"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":167,"author":{"gitId":"modembcc"},"content":"- `add deadline Feb 25 2024 /to CS2103_TP`","lastModifiedDate":"2024-03-12"},{"lineNumber":168,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":169,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"Expected output:","lastModifiedDate":"2024-02-28"},{"lineNumber":170,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":171,"author":{"gitId":"modembcc"},"content":"- Successful assignment: `Deadline \u003cDEADLINE\u003e has been assigned to \u003cPROJECT_NAME\u003e`","lastModifiedDate":"2024-03-12"},{"lineNumber":172,"author":{"gitId":"modembcc"},"content":"- Failed assignment (example): `Deadline needs to be in MMM D YYYY format.`","lastModifiedDate":"2024-03-12"},{"lineNumber":173,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":174,"author":{"gitId":"modembcc"},"content":"### Assign deadline to task : `add deadline`","lastModifiedDate":"2024-03-12"},{"lineNumber":175,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":176,"author":{"gitId":"modembcc"},"content":"Assigns a deadline to a task in a project.","lastModifiedDate":"2024-03-12"},{"lineNumber":177,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":178,"author":{"gitId":"modembcc"},"content":"Format: `add deadline \u003cDEADLINE\u003e /to \u003cTASK_NAME\u003e /in \u003cPROJECT_NAME\u003e`","lastModifiedDate":"2024-03-12"},{"lineNumber":179,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":180,"author":{"gitId":"modembcc"},"content":"- The specified project name must exist in the project list.","lastModifiedDate":"2024-03-12"},{"lineNumber":181,"author":{"gitId":"modembcc"},"content":"- The specified task name must exist in the project\u0027s tasks.","lastModifiedDate":"2024-03-12"},{"lineNumber":182,"author":{"gitId":"modembcc"},"content":"- The deadline must be in `MMM D YYYY` format","lastModifiedDate":"2024-03-12"},{"lineNumber":183,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":184,"author":{"gitId":"modembcc"},"content":"Examples:","lastModifiedDate":"2024-03-12"},{"lineNumber":185,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":186,"author":{"gitId":"modembcc"},"content":"- `add deadline Feb 25 2024 /to submit feature list /in CS2103_TP`","lastModifiedDate":"2024-03-12"},{"lineNumber":187,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":188,"author":{"gitId":"modembcc"},"content":"Expected output:","lastModifiedDate":"2024-03-12"},{"lineNumber":189,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":190,"author":{"gitId":"modembcc"},"content":"- Successful assignment: `Deadline \u003cDEADLINE\u003e has been assigned to \u003cPROJECT_NAME\u003e:\u003cTASK_NAME\u003e`","lastModifiedDate":"2024-03-12"},{"lineNumber":191,"author":{"gitId":"modembcc"},"content":"- Failed assignment (example): `Deadline needs to be in MMM D YYYY format.`","lastModifiedDate":"2024-03-12"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"author":{"gitId":"ThitipatC"},"content":"### Add task : `add task`","lastModifiedDate":"2024-03-12"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"ThitipatC"},"content":"Add the specified task to a project.","lastModifiedDate":"2024-03-12"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":197,"author":{"gitId":"ThitipatC"},"content":"Format: `add task \u003cTASK_NAME\u003e /to \u003cPROJECT_NAME\u003e`","lastModifiedDate":"2024-03-12"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":199,"author":{"gitId":"modembcc"},"content":"- The specified project name must exist in the project list.","lastModifiedDate":"2024-03-15"},{"lineNumber":200,"author":{"gitId":"modembcc"},"content":"- The task\u0027s name must be unique","lastModifiedDate":"2024-03-15"},{"lineNumber":201,"author":{"gitId":"ThitipatC"},"content":" Examples:","lastModifiedDate":"2024-03-12"},{"lineNumber":202,"author":{"gitId":"modembcc"},"content":"- `add task add deadline command /to CS2103T Duke Chatbot Project`","lastModifiedDate":"2024-03-15"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":204,"author":{"gitId":"ThitipatC"},"content":"Expected output:","lastModifiedDate":"2024-03-12"},{"lineNumber":205,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":206,"author":{"gitId":"modembcc"},"content":"- Successful add command: `\u003cTASK_NAME\u003e has been added to \u003cPROJECT_NAME\u003e`","lastModifiedDate":"2024-03-15"},{"lineNumber":207,"author":{"gitId":"modembcc"},"content":"- Failed commands:","lastModifiedDate":"2024-03-15"},{"lineNumber":208,"author":{"gitId":"ThitipatC"},"content":" - invalid project name: `Project \u003cPROJECT_NAME\u003e not found: Please make sure the project exists.`","lastModifiedDate":"2024-03-12"},{"lineNumber":209,"author":{"gitId":"ThitipatC"},"content":" - repeated task: `Task \u003cTASK_NAME\u003e already exists in \u003cPROJECT_NAME\u003e`","lastModifiedDate":"2024-03-12"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"author":{"gitId":"ThitipatC"},"content":"### Remove task : `delete task`","lastModifiedDate":"2024-03-12"},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":213,"author":{"gitId":"ThitipatC"},"content":"Deletes the specified task from a project.","lastModifiedDate":"2024-03-12"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":215,"author":{"gitId":"ThitipatC"},"content":"Format: `delete task \u003cTASK_NAME\u003e /in \u003cPROJECT_NAME\u003e`","lastModifiedDate":"2024-03-12"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":217,"author":{"gitId":"modembcc"},"content":"- The specified project name must exist in the project list.","lastModifiedDate":"2024-03-15"},{"lineNumber":218,"author":{"gitId":"modembcc"},"content":"- The task name must exist","lastModifiedDate":"2024-03-15"},{"lineNumber":219,"author":{"gitId":"ThitipatC"},"content":" Examples:","lastModifiedDate":"2024-03-12"},{"lineNumber":220,"author":{"gitId":"modembcc"},"content":"- `delete task add deadline command /in CS2103T Duke Chatbot Project`","lastModifiedDate":"2024-03-15"},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":222,"author":{"gitId":"ThitipatC"},"content":"Expected output:","lastModifiedDate":"2024-03-12"},{"lineNumber":223,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":224,"author":{"gitId":"modembcc"},"content":"- Successful deletion: `\u003cTASK_NAME\u003e has been deleted from \u003cPROJECT_NAME\u003e`","lastModifiedDate":"2024-03-15"},{"lineNumber":225,"author":{"gitId":"modembcc"},"content":"- Failed commands:","lastModifiedDate":"2024-03-15"},{"lineNumber":226,"author":{"gitId":"ThitipatC"},"content":" - invalid project name: `Project \u003cPROJECT_NAME\u003e not found: Please make sure the project exists.`","lastModifiedDate":"2024-03-12"},{"lineNumber":227,"author":{"gitId":"ThitipatC"},"content":" - invalid task name: `Task \u003cTASK_NAME\u003e not found: Please make sure the task exists`","lastModifiedDate":"2024-03-12"},{"lineNumber":228,"author":{"gitId":"ThitipatC"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":229,"author":{"gitId":"ananya21"},"content":"### Set Task Status : `set status of Task`","lastModifiedDate":"2024-03-12"},{"lineNumber":230,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":231,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"sets the status of a task as completed or incomplete.","lastModifiedDate":"2024-03-22"},{"lineNumber":232,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":233,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"Format: `set status [complete/incomplete] /to task \u003cTASK_NAME\u003e /in \u003cPROJECT_NAME\u003e`","lastModifiedDate":"2024-03-22"},{"lineNumber":234,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":235,"author":{"gitId":"modembcc"},"content":"- The specified task name must exist in the task list.","lastModifiedDate":"2024-03-15"},{"lineNumber":236,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"- The task status can either be `complete` or `incomplete`","lastModifiedDate":"2024-03-22"},{"lineNumber":237,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":238,"author":{"gitId":"ananya21"},"content":"Examples:","lastModifiedDate":"2024-03-12"},{"lineNumber":239,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":240,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"- `set status complete /to unit test /in CS2103T Duke Chatbot Project`","lastModifiedDate":"2024-03-22"},{"lineNumber":241,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":242,"author":{"gitId":"ananya21"},"content":"Expected output:","lastModifiedDate":"2024-03-12"},{"lineNumber":243,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":244,"author":{"gitId":"modembcc"},"content":"- Successful status update: `Task \u003cTASK_NAME\u003e is set as \u003cSTATUS\u003e`","lastModifiedDate":"2024-03-15"},{"lineNumber":245,"author":{"gitId":"modembcc"},"content":"- Failed commands: `Task \u003cTASK_NAME\u003e not found: Please make sure the task exists.`","lastModifiedDate":"2024-03-15"},{"lineNumber":246,"author":{"gitId":"modembcc"},"content":"- `Project \u003cPROJECT_NAME\u003e not found: Please make sure the project exists.`","lastModifiedDate":"2024-03-15"},{"lineNumber":247,"author":{"gitId":"modembcc"},"content":"- `Status was entered incorrectly.`,","lastModifiedDate":"2024-03-15"},{"lineNumber":248,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":249,"author":{"gitId":"ananya21"},"content":"### Set Project Status : `set status of Project`","lastModifiedDate":"2024-03-12"},{"lineNumber":250,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":251,"author":{"gitId":"ananya21"},"content":"sets the status of a project as finished or unfinished","lastModifiedDate":"2024-03-12"},{"lineNumber":252,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":253,"author":{"gitId":"ananya21"},"content":"Format: `set status \u003cSTATUS\u003e project \u003cPROJECT_NAME\u003e`","lastModifiedDate":"2024-03-12"},{"lineNumber":254,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":255,"author":{"gitId":"modembcc"},"content":"- The specified project name must exist in the project list.","lastModifiedDate":"2024-03-15"},{"lineNumber":256,"author":{"gitId":"modembcc"},"content":"- The project status can either be `done` or `undone`","lastModifiedDate":"2024-03-15"},{"lineNumber":257,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":258,"author":{"gitId":"ananya21"},"content":"Examples:","lastModifiedDate":"2024-03-12"},{"lineNumber":259,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":260,"author":{"gitId":"modembcc"},"content":"- `set status done project CS2103T Duke Chatbot Project`","lastModifiedDate":"2024-03-15"},{"lineNumber":261,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":262,"author":{"gitId":"ananya21"},"content":"Expected output:","lastModifiedDate":"2024-03-12"},{"lineNumber":263,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":264,"author":{"gitId":"modembcc"},"content":"- Successful status update: `Project \u003cPROJECT_NAME\u003e is set as \u003cSTATUS\u003e`","lastModifiedDate":"2024-03-15"},{"lineNumber":265,"author":{"gitId":"modembcc"},"content":"- Failed commands: `Project \u003cPROJECT_NAME\u003e not found: Please make sure the project exists.`","lastModifiedDate":"2024-03-15"},{"lineNumber":266,"author":{"gitId":"modembcc"},"content":"- `Status was entered incorrectly.`","lastModifiedDate":"2024-03-15"},{"lineNumber":267,"author":{"gitId":"ThitipatC"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":268,"author":{"gitId":"ThitipatC"},"content":"### Show Project : `show project`","lastModifiedDate":"2024-03-12"},{"lineNumber":269,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":270,"author":{"gitId":"ThitipatC"},"content":"shows the project’s details","lastModifiedDate":"2024-03-12"},{"lineNumber":271,"author":{"gitId":"ThitipatC"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":272,"author":{"gitId":"ThitipatC"},"content":"Format: `show project \u003cPROJECT_NAME\u003e`","lastModifiedDate":"2024-03-12"},{"lineNumber":273,"author":{"gitId":"ThitipatC"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":274,"author":{"gitId":"modembcc"},"content":"- The specified project name must exist in the project list.","lastModifiedDate":"2024-03-15"},{"lineNumber":275,"author":{"gitId":"ThitipatC"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":276,"author":{"gitId":"ThitipatC"},"content":"Examples:","lastModifiedDate":"2024-03-12"},{"lineNumber":277,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":278,"author":{"gitId":"modembcc"},"content":"- `show project CS2103T Duke Chatbot Project`","lastModifiedDate":"2024-03-15"},{"lineNumber":279,"author":{"gitId":"ThitipatC"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":280,"author":{"gitId":"ThitipatC"},"content":"Expected output:","lastModifiedDate":"2024-03-12"},{"lineNumber":281,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":282,"author":{"gitId":"modembcc"},"content":"- Successful display: `The ui now shows the project’s information`","lastModifiedDate":"2024-03-15"},{"lineNumber":283,"author":{"gitId":"modembcc"},"content":"- Failed commands: `Project \u003cPROJECT_NAME\u003e not found: Please make sure the project exists.`","lastModifiedDate":"2024-03-15"},{"lineNumber":284,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":285,"author":{"gitId":"modembcc"},"content":"---","lastModifiedDate":"2024-03-12"},{"lineNumber":286,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":287,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23"},{"lineNumber":288,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":289,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":290,"author":{"gitId":"-"},"content":"**A**: Install the app in the other computer and overwrite the empty data file it creates with the file that contains the data of your previous AddressBook home folder.","lastModifiedDate":"2020-05-23"},{"lineNumber":291,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":292,"author":{"gitId":"modembcc"},"content":"---","lastModifiedDate":"2024-03-12"},{"lineNumber":293,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":294,"author":{"gitId":"-"},"content":"## Known issues","lastModifiedDate":"2023-09-08"},{"lineNumber":295,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":296,"author":{"gitId":"-"},"content":"1. **When using multiple screens**, if you move the application to a secondary screen, and later switch to using only the primary screen, the GUI will open off-screen. The remedy is to delete the `preferences.json` file created by the application before running the application again.","lastModifiedDate":"2023-09-08"},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":298,"author":{"gitId":"modembcc"},"content":"---","lastModifiedDate":"2024-03-12"},{"lineNumber":299,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":300,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23"},{"lineNumber":301,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":302,"author":{"gitId":"modembcc"},"content":"| Action | Format, Examples |","lastModifiedDate":"2024-03-12"},{"lineNumber":303,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"|--------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------|","lastModifiedDate":"2024-03-22"},{"lineNumber":304,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"| **Show project** | `show project \u003cPROJECT_NAME\u003e` \u003cbr\u003e e.g., `show project CS2101 Presentation` |","lastModifiedDate":"2024-03-22"},{"lineNumber":305,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"| **Add project** | `add project \u003cPROJECT_NAME\u003e` \u003cbr\u003e e.g., `add project CS2101 Presentation` |","lastModifiedDate":"2024-03-22"},{"lineNumber":306,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"| **Add task** | `add task \u003cTASK_NAME\u003e /to \u003cPROJECT_NAME\u003e` \u003cbr\u003e e.g., `add task add deadline command /to CS2103T Duke Chatbot Project` |","lastModifiedDate":"2024-03-22"},{"lineNumber":307,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"| **Delete project** | `delete project \u003cPROJECT_NAME\u003e`\u003cbr\u003e e.g., `delete project CS2101 Presentation` |","lastModifiedDate":"2024-03-22"},{"lineNumber":308,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"| **Delete task** | `delete task \u003cTASK_NAME\u003e /in \u003cPROJECT_NAME\u003e`\u003cbr\u003e e.g., `delete task add deadline command /in CS2103T Duke Chatbot Project` |","lastModifiedDate":"2024-03-22"},{"lineNumber":309,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"| **Assign deadline to project** | `add deadline \u003cDEADLINE\u003e /to \u003cPROJECT_NAME\u003e`\u003cbr\u003e e.g., `add deadline Feb 25 2024 /to CS2103_TP` |","lastModifiedDate":"2024-03-22"},{"lineNumber":310,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"| **Assign deadline to task** | `add deadline \u003cDEADLINE\u003e /to \u003cTASK_NAME\u003e /in \u003cPROJECT_NAME\u003e`\u003cbr\u003e e.g., `add deadline Feb 25 2024 /to submit feature list /in CS2103_TP` |","lastModifiedDate":"2024-03-22"},{"lineNumber":311,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"| **Add person to project** | `add person \u003cPERSON_NAME\u003e /to \u003cPROJECT_NAME\u003e`\u003cbr\u003e e.g., `add person Joe /to CS2103_TP` |","lastModifiedDate":"2024-03-22"},{"lineNumber":312,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"| **Add person to task** | `add person \u003cPERSON_NAME\u003e /to \u003cTASK_NAME\u003e /in \u003cPROJECT_NAME\u003e`\u003cbr\u003e e.g., `add person Joe /to unit test /in CS2103_TP` |","lastModifiedDate":"2024-03-22"},{"lineNumber":313,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"| **Set project status** | `set status \u003cSTATUS\u003e project \u003cPROJECT_NAME\u003e`\u003cbr\u003e e.g., `set status complete project CS2103T Duke Chatbot Project` |","lastModifiedDate":"2024-03-22"},{"lineNumber":314,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"| **Set task status** | `set status [complete/incomplete] /to task \u003cTASK_NAME\u003e /in \u003cPROJECT_NAME\u003e`\u003cbr\u003e e.g., `set status complete /to unit test /in CS2103T Duke Chatbot Project` |","lastModifiedDate":"2024-03-22"},{"lineNumber":315,"author":{"gitId":"modembcc"},"content":"| **Edit** | `edit INDEX [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [t/TAG]…​`\u003cbr\u003e e.g.,`edit 2 n/James Lee e/jameslee@example.com` |","lastModifiedDate":"2024-03-12"},{"lineNumber":316,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"| **Clear** | `clear` |","lastModifiedDate":"2024-03-22"},{"lineNumber":317,"author":{"gitId":"modembcc"},"content":"| **Find** | `find KEYWORD [MORE_KEYWORDS]`\u003cbr\u003e e.g., `find James Jake` |","lastModifiedDate":"2024-03-12"},{"lineNumber":318,"author":{"gitId":"modembcc"},"content":"| **Help** | `help` |","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"modembcc":107,"ThitipatC":25,"Lin-Shuang-Shuang":40,"-":126,"ananya21":20}},{"path":"docs/_sass/minima/_base.scss","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"html {","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":" font-size: $base-font-size;","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * Reset some basic elements","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"modembcc"},"content":"body,","lastModifiedDate":"2024-03-03"},{"lineNumber":9,"author":{"gitId":"modembcc"},"content":"h1,","lastModifiedDate":"2024-03-03"},{"lineNumber":10,"author":{"gitId":"modembcc"},"content":"h2,","lastModifiedDate":"2024-03-03"},{"lineNumber":11,"author":{"gitId":"modembcc"},"content":"h3,","lastModifiedDate":"2024-03-03"},{"lineNumber":12,"author":{"gitId":"modembcc"},"content":"h4,","lastModifiedDate":"2024-03-03"},{"lineNumber":13,"author":{"gitId":"modembcc"},"content":"h5,","lastModifiedDate":"2024-03-03"},{"lineNumber":14,"author":{"gitId":"modembcc"},"content":"h6,","lastModifiedDate":"2024-03-03"},{"lineNumber":15,"author":{"gitId":"modembcc"},"content":"p,","lastModifiedDate":"2024-03-03"},{"lineNumber":16,"author":{"gitId":"modembcc"},"content":"blockquote,","lastModifiedDate":"2024-03-03"},{"lineNumber":17,"author":{"gitId":"modembcc"},"content":"pre,","lastModifiedDate":"2024-03-03"},{"lineNumber":18,"author":{"gitId":"modembcc"},"content":"hr,","lastModifiedDate":"2024-03-03"},{"lineNumber":19,"author":{"gitId":"modembcc"},"content":"dl,","lastModifiedDate":"2024-03-03"},{"lineNumber":20,"author":{"gitId":"modembcc"},"content":"dd,","lastModifiedDate":"2024-03-03"},{"lineNumber":21,"author":{"gitId":"modembcc"},"content":"ol,","lastModifiedDate":"2024-03-03"},{"lineNumber":22,"author":{"gitId":"modembcc"},"content":"ul,","lastModifiedDate":"2024-03-03"},{"lineNumber":23,"author":{"gitId":"modembcc"},"content":"figure {","lastModifiedDate":"2024-03-03"},{"lineNumber":24,"author":{"gitId":"-"},"content":" margin: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":" padding: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Basic styling","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":"body {","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"modembcc"},"content":" font: $base-font-weight #{$base-font-size}/#{$base-line-height}","lastModifiedDate":"2024-03-03"},{"lineNumber":33,"author":{"gitId":"modembcc"},"content":" $base-font-family;","lastModifiedDate":"2024-03-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":" color: $text-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" background-color: $background-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":" -webkit-text-size-adjust: 100%;","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" -webkit-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" -moz-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" -o-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" font-kerning: normal;","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" display: flex;","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" min-height: 100vh;","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" flex-direction: column;","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" overflow-wrap: break-word;","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Set `margin-bottom` to maintain vertical rhythm","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"modembcc"},"content":"h1,","lastModifiedDate":"2024-03-03"},{"lineNumber":52,"author":{"gitId":"modembcc"},"content":"h2,","lastModifiedDate":"2024-03-03"},{"lineNumber":53,"author":{"gitId":"modembcc"},"content":"h3,","lastModifiedDate":"2024-03-03"},{"lineNumber":54,"author":{"gitId":"modembcc"},"content":"h4,","lastModifiedDate":"2024-03-03"},{"lineNumber":55,"author":{"gitId":"modembcc"},"content":"h5,","lastModifiedDate":"2024-03-03"},{"lineNumber":56,"author":{"gitId":"modembcc"},"content":"h6,","lastModifiedDate":"2024-03-03"},{"lineNumber":57,"author":{"gitId":"modembcc"},"content":"p,","lastModifiedDate":"2024-03-03"},{"lineNumber":58,"author":{"gitId":"modembcc"},"content":"blockquote,","lastModifiedDate":"2024-03-03"},{"lineNumber":59,"author":{"gitId":"modembcc"},"content":"pre,","lastModifiedDate":"2024-03-03"},{"lineNumber":60,"author":{"gitId":"modembcc"},"content":"ul,","lastModifiedDate":"2024-03-03"},{"lineNumber":61,"author":{"gitId":"modembcc"},"content":"ol,","lastModifiedDate":"2024-03-03"},{"lineNumber":62,"author":{"gitId":"modembcc"},"content":"dl,","lastModifiedDate":"2024-03-03"},{"lineNumber":63,"author":{"gitId":"modembcc"},"content":"figure,","lastModifiedDate":"2024-03-03"},{"lineNumber":64,"author":{"gitId":"-"},"content":"%vertical-rhythm {","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit / 2;","lastModifiedDate":"2020-05-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"hr {","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" margin-top: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * `main` element","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"main {","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" display: block; /* Default value of `display` of `main` element is \u0027inline\u0027 in IE 11. */","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * Images","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"img {","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" max-width: 100%;","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" vertical-align: middle;","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * Figures","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"figure \u003e img {","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":"figcaption {","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":" font-size: $small-font-size;","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * Lists","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"modembcc"},"content":"ul,","lastModifiedDate":"2024-03-03"},{"lineNumber":103,"author":{"gitId":"modembcc"},"content":"ol {","lastModifiedDate":"2024-03-03"},{"lineNumber":104,"author":{"gitId":"-"},"content":" margin-left: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":"li {","lastModifiedDate":"2020-05-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":" \u003e ul,","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":" \u003e ol {","lastModifiedDate":"2020-05-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":" margin-bottom: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":" * Headings","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":117,"author":{"gitId":"modembcc"},"content":"h1,","lastModifiedDate":"2024-03-03"},{"lineNumber":118,"author":{"gitId":"modembcc"},"content":"h2,","lastModifiedDate":"2024-03-03"},{"lineNumber":119,"author":{"gitId":"modembcc"},"content":"h3,","lastModifiedDate":"2024-03-03"},{"lineNumber":120,"author":{"gitId":"modembcc"},"content":"h4,","lastModifiedDate":"2024-03-03"},{"lineNumber":121,"author":{"gitId":"modembcc"},"content":"h5,","lastModifiedDate":"2024-03-03"},{"lineNumber":122,"author":{"gitId":"modembcc"},"content":"h6 {","lastModifiedDate":"2024-03-03"},{"lineNumber":123,"author":{"gitId":"-"},"content":" font-weight: $base-font-weight;","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":" * Links","lastModifiedDate":"2020-05-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":"a {","lastModifiedDate":"2020-05-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":" color: $link-base-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":" text-decoration: none;","lastModifiedDate":"2020-05-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":" \u0026:visited {","lastModifiedDate":"2020-05-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":" color: $link-visited-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":" \u0026:hover {","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":" color: $text-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":" text-decoration: underline;","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":" .social-media-list \u0026:hover {","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":" text-decoration: none;","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":" .username {","lastModifiedDate":"2020-05-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":" text-decoration: underline;","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":" * Blockquotes","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":"blockquote {","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":" color: $brand-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":" border-left: 4px solid $brand-color-light;","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit / 2;","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":" @include relative-font-size(1.125);","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":" font-style: italic;","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":" \u003e :last-child {","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":" margin-bottom: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"modembcc"},"content":" i,","lastModifiedDate":"2024-03-03"},{"lineNumber":166,"author":{"gitId":"modembcc"},"content":" em {","lastModifiedDate":"2024-03-03"},{"lineNumber":167,"author":{"gitId":"-"},"content":" font-style: normal;","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":" * Code formatting","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":"pre,","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":"code {","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":" font-family: $code-font-family;","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":" font-size: 0.9375em;","lastModifiedDate":"2020-05-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":" border: 1px solid $brand-color-light;","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":" border-radius: 3px;","lastModifiedDate":"2020-05-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":" background-color: $code-background-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"code {","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":" padding: 1px 5px;","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":"pre {","lastModifiedDate":"2020-05-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":" padding: 8px 12px;","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":" overflow-x: auto;","lastModifiedDate":"2020-05-23"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":" \u003e code {","lastModifiedDate":"2020-05-23"},{"lineNumber":192,"author":{"gitId":"-"},"content":" border: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":" padding-right: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":" padding-left: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":198,"author":{"gitId":"-"},"content":".highlight {","lastModifiedDate":"2020-05-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":" border-radius: 3px;","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"author":{"gitId":"-"},"content":" background: $code-background-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":201,"author":{"gitId":"-"},"content":" @extend %vertical-rhythm;","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":" .highlighter-rouge \u0026 {","lastModifiedDate":"2020-05-23"},{"lineNumber":204,"author":{"gitId":"-"},"content":" background: $code-background-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":206,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":208,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":209,"author":{"gitId":"-"},"content":" * Wrapper","lastModifiedDate":"2020-05-23"},{"lineNumber":210,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":".wrapper {","lastModifiedDate":"2020-05-23"},{"lineNumber":212,"author":{"gitId":"-"},"content":" max-width: calc(#{$content-width} - (#{$spacing-unit}));","lastModifiedDate":"2020-05-23"},{"lineNumber":213,"author":{"gitId":"-"},"content":" margin-right: auto;","lastModifiedDate":"2020-05-23"},{"lineNumber":214,"author":{"gitId":"-"},"content":" margin-left: auto;","lastModifiedDate":"2020-05-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":" padding-right: $spacing-unit / 2;","lastModifiedDate":"2020-05-23"},{"lineNumber":216,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit / 2;","lastModifiedDate":"2020-05-23"},{"lineNumber":217,"author":{"gitId":"-"},"content":" @extend %clearfix;","lastModifiedDate":"2020-05-23"},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":219,"author":{"gitId":"-"},"content":" @media screen and (min-width: $on-large) {","lastModifiedDate":"2020-05-23"},{"lineNumber":220,"author":{"gitId":"-"},"content":" max-width: calc(#{$content-width} - (#{$spacing-unit} * 2));","lastModifiedDate":"2020-05-23"},{"lineNumber":221,"author":{"gitId":"-"},"content":" padding-right: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":222,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":223,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":224,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":226,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"author":{"gitId":"-"},"content":" * Clearfix","lastModifiedDate":"2020-05-23"},{"lineNumber":228,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":"%clearfix:after {","lastModifiedDate":"2020-05-23"},{"lineNumber":230,"author":{"gitId":"-"},"content":" content: \"\";","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"author":{"gitId":"-"},"content":" display: table;","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":" clear: both;","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":" * Icons","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":".orange {","lastModifiedDate":"2020-05-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":" color: #f66a0a;","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":".grey {","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":" color: #828282;","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":247,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":248,"author":{"gitId":"-"},"content":" * Tables","lastModifiedDate":"2020-05-23"},{"lineNumber":249,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":250,"author":{"gitId":"-"},"content":"table {","lastModifiedDate":"2020-05-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":" width: 100%;","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":" text-align: $table-text-align;","lastModifiedDate":"2020-05-23"},{"lineNumber":254,"author":{"gitId":"-"},"content":" color: $table-text-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":" border-collapse: collapse;","lastModifiedDate":"2020-05-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":" border: 1px solid $table-border-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":257,"author":{"gitId":"-"},"content":" tr {","lastModifiedDate":"2020-05-23"},{"lineNumber":258,"author":{"gitId":"-"},"content":" \u0026:nth-child(even) {","lastModifiedDate":"2020-05-23"},{"lineNumber":259,"author":{"gitId":"-"},"content":" background-color: $table-zebra-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":262,"author":{"gitId":"modembcc"},"content":" th,","lastModifiedDate":"2024-03-03"},{"lineNumber":263,"author":{"gitId":"modembcc"},"content":" td {","lastModifiedDate":"2024-03-03"},{"lineNumber":264,"author":{"gitId":"-"},"content":" padding: ($spacing-unit / 3) ($spacing-unit / 2);","lastModifiedDate":"2020-05-23"},{"lineNumber":265,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":266,"author":{"gitId":"-"},"content":" th {","lastModifiedDate":"2020-05-23"},{"lineNumber":267,"author":{"gitId":"-"},"content":" background-color: $table-header-bg-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":268,"author":{"gitId":"-"},"content":" border: 1px solid $table-header-border;","lastModifiedDate":"2020-05-23"},{"lineNumber":269,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":270,"author":{"gitId":"-"},"content":" td {","lastModifiedDate":"2020-05-23"},{"lineNumber":271,"author":{"gitId":"-"},"content":" border: 1px solid $table-border-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":272,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":274,"author":{"gitId":"-"},"content":" @include media-query($on-laptop) {","lastModifiedDate":"2020-05-23"},{"lineNumber":275,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2020-05-23"},{"lineNumber":276,"author":{"gitId":"-"},"content":" overflow-x: auto;","lastModifiedDate":"2020-05-23"},{"lineNumber":277,"author":{"gitId":"-"},"content":" -webkit-overflow-scrolling: touch;","lastModifiedDate":"2020-05-23"},{"lineNumber":278,"author":{"gitId":"-"},"content":" -ms-overflow-style: -ms-autohiding-scrollbar;","lastModifiedDate":"2020-05-23"},{"lineNumber":279,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":280,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":281,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-01-11"},{"lineNumber":282,"author":{"gitId":"-"},"content":"@media print {","lastModifiedDate":"2021-01-12"},{"lineNumber":283,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2021-01-11"},{"lineNumber":284,"author":{"gitId":"-"},"content":" * Prevents page break from cutting through content when printing","lastModifiedDate":"2021-01-12"},{"lineNumber":285,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2021-01-11"},{"lineNumber":286,"author":{"gitId":"-"},"content":" body {","lastModifiedDate":"2021-01-11"},{"lineNumber":287,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2021-01-11"},{"lineNumber":288,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-11"},{"lineNumber":289,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2021-01-12"},{"lineNumber":290,"author":{"gitId":"-"},"content":" * Replaces the top navigation menu with the project name when printing","lastModifiedDate":"2021-01-12"},{"lineNumber":291,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2021-01-12"},{"lineNumber":292,"author":{"gitId":"-"},"content":" .site-header .wrapper {","lastModifiedDate":"2021-01-12"},{"lineNumber":293,"author":{"gitId":"-"},"content":" display: none;","lastModifiedDate":"2021-01-12"},{"lineNumber":294,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-12"},{"lineNumber":295,"author":{"gitId":"-"},"content":" .site-header {","lastModifiedDate":"2021-01-12"},{"lineNumber":296,"author":{"gitId":"-"},"content":" text-align: center;","lastModifiedDate":"2021-01-12"},{"lineNumber":297,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-12"},{"lineNumber":298,"author":{"gitId":"-"},"content":" .site-header:before {","lastModifiedDate":"2021-01-12"},{"lineNumber":299,"author":{"gitId":"modembcc"},"content":" content: \"DevPlan Pro\";","lastModifiedDate":"2024-03-03"},{"lineNumber":300,"author":{"gitId":"-"},"content":" font-size: 32px;","lastModifiedDate":"2021-01-12"},{"lineNumber":301,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-11"},{"lineNumber":302,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-01-12"}],"authorContributionMap":{"modembcc":44,"-":258}},{"path":"docs/diagrams/DeleteSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2023-07-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"participant \":AddressBookParser\" as AddressBookParser LOGIC_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":8,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"participant \":DeleteProjectCommandParser\" as DeleteProjectCommandParser LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"participant \"d:DeleteProjectCommand\" as DeleteProjectCommand LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"-"},"content":"participant \"r:CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-02-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"end box","lastModifiedDate":"2019-07-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"participant \"m:Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-02-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":"end box","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"[-\u003e LogicManager : execute(\"delete project Duke\")","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":"activate LogicManager","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(\"delete project Duke\")","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"-"},"content":"activate AddressBookParser","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":23,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"create DeleteProjectCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"AddressBookParser -\u003e DeleteProjectCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"activate DeleteProjectCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":27,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"DeleteProjectCommandParser --\u003e AddressBookParser","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"deactivate DeleteProjectCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"AddressBookParser -\u003e DeleteProjectCommandParser : parse(\"Duke\")","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"activate DeleteProjectCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":33,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"create DeleteProjectCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"DeleteProjectCommandParser -\u003e DeleteProjectCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"activate DeleteProjectCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":37,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"DeleteProjectCommand --\u003e DeleteProjectCommandParser :","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"deactivate DeleteProjectCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":40,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"DeleteProjectCommandParser --\u003e AddressBookParser : d","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"deactivate DeleteProjectCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":"\u0027Hidden arrow to position the destroy marker below the end of the activation bar.","lastModifiedDate":"2019-07-03"},{"lineNumber":43,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"DeleteProjectCommandParser -[hidden]-\u003e AddressBookParser","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"destroy DeleteProjectCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":46,"author":{"gitId":"-"},"content":"AddressBookParser --\u003e LogicManager : d","lastModifiedDate":"2019-07-03"},{"lineNumber":47,"author":{"gitId":"-"},"content":"deactivate AddressBookParser","lastModifiedDate":"2019-07-03"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":49,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"LogicManager -\u003e DeleteProjectCommand : execute(m)","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"activate DeleteProjectCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":52,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"DeleteProjectCommand -\u003e Model : deleteProject(Duke)","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":"activate Model","lastModifiedDate":"2019-07-03"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":55,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"Model --\u003e DeleteProjectCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":"deactivate Model","lastModifiedDate":"2019-07-03"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":58,"author":{"gitId":"-"},"content":"create CommandResult","lastModifiedDate":"2019-07-03"},{"lineNumber":59,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"DeleteProjectCommand -\u003e CommandResult","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"-"},"content":"activate CommandResult","lastModifiedDate":"2019-07-03"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":62,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"CommandResult --\u003e DeleteProjectCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":"deactivate CommandResult","lastModifiedDate":"2019-07-03"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":65,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"DeleteProjectCommand --\u003e LogicManager : r","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"deactivate DeleteProjectCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":68,"author":{"gitId":"-"},"content":"[\u003c--LogicManager","lastModifiedDate":"2019-07-03"},{"lineNumber":69,"author":{"gitId":"-"},"content":"deactivate LogicManager","lastModifiedDate":"2019-07-03"},{"lineNumber":70,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"Lin-Shuang-Shuang":28,"-":42}},{"path":"docs/index.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"modembcc"},"content":"title: DevPlan Pro","lastModifiedDate":"2024-03-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"modembcc"},"content":"[![CI Status](https://github.com/AY2324S2-CS2103T-W08-4/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2324S2-CS2103T-W08-4/tp/actions)","lastModifiedDate":"2024-03-03"},{"lineNumber":7,"author":{"gitId":"modembcc"},"content":"[![codecov](https://codecov.io/gh/AY2324S2-CS2103T-W08-4/tp/graph/badge.svg?token\u003dJRBJM9DOXE)](https://codecov.io/gh/AY2324S2-CS2103T-W08-4/tp)","lastModifiedDate":"2024-03-03"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"modembcc"},"content":"**Devplan Pro** is a project management app that is catered towards project managers who love typing. It allows the user to keep track of their various projects, the ongoing tasks within the projects, and people who are responsible for those tasks. Every action is executed through the input box using an intuitive [list of commands](https://github.com/othneildrew/Best-README-Template).","lastModifiedDate":"2024-03-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"modembcc"},"content":"- If you are interested in using DevPlan Pro, head over to the [_Quick Start_ section of the **User Guide**](UserGuide.html#quick-start).","lastModifiedDate":"2024-03-03"},{"lineNumber":14,"author":{"gitId":"modembcc"},"content":"- If you are interested about developing DevPlan Pro, the [**Developer Guide**](DeveloperGuide.html) is a good place to start.","lastModifiedDate":"2024-03-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"**Acknowledgements**","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"modembcc"},"content":"- Libraries used: [JavaFX](https://openjfx.io/), [Jackson](https://github.com/FasterXML/jackson), [JUnit5](https://github.com/junit-team/junit5)","lastModifiedDate":"2024-03-03"}],"authorContributionMap":{"modembcc":7,"-":11}},{"path":"src/main/java/seedu/address/MainApp.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.application.Application;","lastModifiedDate":"2016-08-26"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.Config;","lastModifiedDate":"2016-09-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.Version;","lastModifiedDate":"2016-09-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ConfigUtil;","lastModifiedDate":"2016-10-07"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2016-09-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.Logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.LogicManager;","lastModifiedDate":"2016-09-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-01-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-01-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-01-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2017-01-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-12-06"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-01-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2016-12-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.storage.AddressBookStorage;","lastModifiedDate":"2017-02-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-11-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2017-02-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.storage.Storage;","lastModifiedDate":"2016-09-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.storage.UserPrefsStorage;","lastModifiedDate":"2017-02-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.ui.Ui;","lastModifiedDate":"2016-09-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.ui.UiManager;","lastModifiedDate":"2016-09-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Runs the application.","lastModifiedDate":"2019-02-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":"public class MainApp extends Application {","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final Version VERSION \u003d new Version(0, 2, 2, true);","lastModifiedDate":"2023-08-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(MainApp.class);","lastModifiedDate":"2017-04-01"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":43,"author":{"gitId":"-"},"content":" protected Ui ui;","lastModifiedDate":"2016-09-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" protected Logic logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":" protected Storage storage;","lastModifiedDate":"2016-09-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":" protected Model model;","lastModifiedDate":"2016-09-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" protected Config config;","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void init() throws Exception {","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" logger.info(\"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d[ Initializing AddressBook ]\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\");","lastModifiedDate":"2016-09-29"},{"lineNumber":52,"author":{"gitId":"-"},"content":" super.init();","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" AppParameters appParameters \u003d AppParameters.parse(getParameters());","lastModifiedDate":"2018-04-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" config \u003d initConfig(appParameters.getConfigPath());","lastModifiedDate":"2018-04-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":" initLogging(config);","lastModifiedDate":"2023-07-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25"},{"lineNumber":58,"author":{"gitId":"-"},"content":" UserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(config.getUserPrefsFilePath());","lastModifiedDate":"2017-02-25"},{"lineNumber":59,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d initPrefs(userPrefsStorage);","lastModifiedDate":"2018-12-06"},{"lineNumber":60,"author":{"gitId":"-"},"content":" AddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(userPrefs.getAddressBookFilePath());","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2017-02-25"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" model \u003d initModelManager(storage, userPrefs);","lastModifiedDate":"2016-09-25"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":" ui \u003d new UiManager(logic);","lastModifiedDate":"2018-12-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Returns a {@code ModelManager} with the data from {@code storage}\u0027s address book and {@code userPrefs}. \u003cbr\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * The data from the sample address book will be used instead if {@code storage}\u0027s address book is not found,","lastModifiedDate":"2017-08-16"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * or an empty address book will be used instead if errors occur when reading {@code storage}\u0027s address book.","lastModifiedDate":"2017-08-16"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":75,"author":{"gitId":"-"},"content":" private Model initModelManager(Storage storage, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":76,"author":{"gitId":"-"},"content":" logger.info(\"Using data file : \" + storage.getAddressBookFilePath());","lastModifiedDate":"2023-07-29"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":78,"author":{"gitId":"-"},"content":" Optional\u003cReadOnlyAddressBook\u003e addressBookOptional;","lastModifiedDate":"2016-09-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook initialData;","lastModifiedDate":"2016-09-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":" addressBookOptional \u003d storage.readAddressBook();","lastModifiedDate":"2016-09-25"},{"lineNumber":82,"author":{"gitId":"-"},"content":" if (!addressBookOptional.isPresent()) {","lastModifiedDate":"2016-09-24"},{"lineNumber":83,"author":{"gitId":"-"},"content":" logger.info(\"Creating a new data file \" + storage.getAddressBookFilePath()","lastModifiedDate":"2023-05-15"},{"lineNumber":84,"author":{"gitId":"-"},"content":" + \" populated with a sample AddressBook.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":86,"author":{"gitId":"-"},"content":" initialData \u003d addressBookOptional.orElseGet(SampleDataUtil::getSampleAddressBook);","lastModifiedDate":"2016-12-20"},{"lineNumber":87,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14"},{"lineNumber":88,"author":{"gitId":"-"},"content":" logger.warning(\"Data file at \" + storage.getAddressBookFilePath() + \" could not be loaded.\"","lastModifiedDate":"2023-06-15"},{"lineNumber":89,"author":{"gitId":"-"},"content":" + \" Will be starting with an empty AddressBook.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":90,"author":{"gitId":"-"},"content":" initialData \u003d new AddressBook();","lastModifiedDate":"2016-09-24"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":93,"author":{"gitId":"-"},"content":" return new ModelManager(initialData, userPrefs);","lastModifiedDate":"2016-09-25"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":96,"author":{"gitId":"-"},"content":" private void initLogging(Config config) {","lastModifiedDate":"2016-09-24"},{"lineNumber":97,"author":{"gitId":"-"},"content":" LogsCenter.init(config);","lastModifiedDate":"2016-09-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":100,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * Returns a {@code Config} using the file at {@code configFilePath}. \u003cbr\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * The default file path {@code Config#DEFAULT_CONFIG_FILE} will be used instead","lastModifiedDate":"2017-08-16"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * if {@code configFilePath} is null.","lastModifiedDate":"2017-08-16"},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":105,"author":{"gitId":"-"},"content":" protected Config initConfig(Path configFilePath) {","lastModifiedDate":"2018-04-21"},{"lineNumber":106,"author":{"gitId":"-"},"content":" Config initializedConfig;","lastModifiedDate":"2016-09-24"},{"lineNumber":107,"author":{"gitId":"-"},"content":" Path configFilePathUsed;","lastModifiedDate":"2018-04-21"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":109,"author":{"gitId":"-"},"content":" configFilePathUsed \u003d Config.DEFAULT_CONFIG_FILE;","lastModifiedDate":"2016-09-24"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":111,"author":{"gitId":"-"},"content":" if (configFilePath !\u003d null) {","lastModifiedDate":"2016-09-24"},{"lineNumber":112,"author":{"gitId":"-"},"content":" logger.info(\"Custom Config file specified \" + configFilePath);","lastModifiedDate":"2016-09-24"},{"lineNumber":113,"author":{"gitId":"-"},"content":" configFilePathUsed \u003d configFilePath;","lastModifiedDate":"2016-09-24"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":" logger.info(\"Using config file : \" + configFilePathUsed);","lastModifiedDate":"2016-09-24"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":118,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":119,"author":{"gitId":"-"},"content":" Optional\u003cConfig\u003e configOptional \u003d ConfigUtil.readConfig(configFilePathUsed);","lastModifiedDate":"2016-09-24"},{"lineNumber":120,"author":{"gitId":"-"},"content":" if (!configOptional.isPresent()) {","lastModifiedDate":"2023-01-03"},{"lineNumber":121,"author":{"gitId":"-"},"content":" logger.info(\"Creating new config file \" + configFilePathUsed);","lastModifiedDate":"2023-05-15"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-01-03"},{"lineNumber":123,"author":{"gitId":"-"},"content":" initializedConfig \u003d configOptional.orElse(new Config());","lastModifiedDate":"2016-09-24"},{"lineNumber":124,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":" logger.warning(\"Config file at \" + configFilePathUsed + \" could not be loaded.\"","lastModifiedDate":"2023-06-15"},{"lineNumber":126,"author":{"gitId":"-"},"content":" + \" Using default config properties.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":127,"author":{"gitId":"-"},"content":" initializedConfig \u003d new Config();","lastModifiedDate":"2016-09-24"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":130,"author":{"gitId":"-"},"content":" //Update config file in case it was missing to begin with or there are new/unused fields","lastModifiedDate":"2016-09-24"},{"lineNumber":131,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":132,"author":{"gitId":"-"},"content":" ConfigUtil.saveConfig(initializedConfig, configFilePathUsed);","lastModifiedDate":"2016-09-24"},{"lineNumber":133,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24"},{"lineNumber":134,"author":{"gitId":"-"},"content":" logger.warning(\"Failed to save config file : \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":136,"author":{"gitId":"-"},"content":" return initializedConfig;","lastModifiedDate":"2016-09-24"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":140,"author":{"gitId":"-"},"content":" * Returns a {@code UserPrefs} using the file at {@code storage}\u0027s user prefs file path,","lastModifiedDate":"2017-08-16"},{"lineNumber":141,"author":{"gitId":"-"},"content":" * or a new {@code UserPrefs} with default configuration if errors occur when","lastModifiedDate":"2017-08-16"},{"lineNumber":142,"author":{"gitId":"-"},"content":" * reading from the file.","lastModifiedDate":"2017-08-16"},{"lineNumber":143,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":144,"author":{"gitId":"-"},"content":" protected UserPrefs initPrefs(UserPrefsStorage storage) {","lastModifiedDate":"2017-02-25"},{"lineNumber":145,"author":{"gitId":"-"},"content":" Path prefsFilePath \u003d storage.getUserPrefsFilePath();","lastModifiedDate":"2018-04-21"},{"lineNumber":146,"author":{"gitId":"-"},"content":" logger.info(\"Using preference file : \" + prefsFilePath);","lastModifiedDate":"2023-05-15"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":148,"author":{"gitId":"-"},"content":" UserPrefs initializedPrefs;","lastModifiedDate":"2016-09-24"},{"lineNumber":149,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":150,"author":{"gitId":"-"},"content":" Optional\u003cUserPrefs\u003e prefsOptional \u003d storage.readUserPrefs();","lastModifiedDate":"2016-09-25"},{"lineNumber":151,"author":{"gitId":"-"},"content":" if (!prefsOptional.isPresent()) {","lastModifiedDate":"2023-01-03"},{"lineNumber":152,"author":{"gitId":"-"},"content":" logger.info(\"Creating new preference file \" + prefsFilePath);","lastModifiedDate":"2023-05-15"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-01-03"},{"lineNumber":154,"author":{"gitId":"-"},"content":" initializedPrefs \u003d prefsOptional.orElse(new UserPrefs());","lastModifiedDate":"2016-09-24"},{"lineNumber":155,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14"},{"lineNumber":156,"author":{"gitId":"-"},"content":" logger.warning(\"Preference file at \" + prefsFilePath + \" could not be loaded.\"","lastModifiedDate":"2023-06-15"},{"lineNumber":157,"author":{"gitId":"-"},"content":" + \" Using default preferences.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":158,"author":{"gitId":"-"},"content":" initializedPrefs \u003d new UserPrefs();","lastModifiedDate":"2016-09-24"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":" //Update prefs file in case it was missing to begin with or there are new/unused fields","lastModifiedDate":"2016-09-24"},{"lineNumber":162,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":163,"author":{"gitId":"-"},"content":" storage.saveUserPrefs(initializedPrefs);","lastModifiedDate":"2016-09-25"},{"lineNumber":164,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24"},{"lineNumber":165,"author":{"gitId":"-"},"content":" logger.warning(\"Failed to save config file : \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24"},{"lineNumber":166,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":168,"author":{"gitId":"modembcc"},"content":" return new UserPrefs();","lastModifiedDate":"2024-03-22"},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":171,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":172,"author":{"gitId":"-"},"content":" public void start(Stage primaryStage) {","lastModifiedDate":"2016-08-08"},{"lineNumber":173,"author":{"gitId":"-"},"content":" logger.info(\"Starting AddressBook \" + MainApp.VERSION);","lastModifiedDate":"2016-09-29"},{"lineNumber":174,"author":{"gitId":"-"},"content":" ui.start(primaryStage);","lastModifiedDate":"2016-09-25"},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":177,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":178,"author":{"gitId":"-"},"content":" public void stop() {","lastModifiedDate":"2016-08-08"},{"lineNumber":179,"author":{"gitId":"-"},"content":" logger.info(\"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d [ Stopping Address Book ] \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\");","lastModifiedDate":"2016-09-29"},{"lineNumber":180,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":181,"author":{"gitId":"-"},"content":" storage.saveUserPrefs(model.getUserPrefs());","lastModifiedDate":"2018-12-06"},{"lineNumber":182,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24"},{"lineNumber":183,"author":{"gitId":"-"},"content":" logger.severe(\"Failed to save preferences \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24"},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":185,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26"},{"lineNumber":186,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"modembcc":1,"-":185}},{"path":"src/main/java/seedu/address/commons/core/GuiSettings.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.commons.core;","lastModifiedDate":"2016-09-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.awt.Point;","lastModifiedDate":"2017-01-18"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.io.Serializable;","lastModifiedDate":"2016-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2016-09-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * A Serializable class that contains the GUI settings.","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Guarantees: immutable.","lastModifiedDate":"2018-11-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class GuiSettings implements Serializable {","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"modembcc"},"content":" private static final double DEFAULT_HEIGHT \u003d 640;","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"modembcc"},"content":" private static final double DEFAULT_WIDTH \u003d 1020;","lastModifiedDate":"2024-03-22"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private final double windowWidth;","lastModifiedDate":"2018-11-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private final double windowHeight;","lastModifiedDate":"2018-11-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final Point windowCoordinates;","lastModifiedDate":"2018-11-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Constructs a {@code GuiSettings} with the default height, width and position.","lastModifiedDate":"2020-05-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public GuiSettings() {","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" windowWidth \u003d DEFAULT_WIDTH;","lastModifiedDate":"2018-08-14"},{"lineNumber":27,"author":{"gitId":"-"},"content":" windowHeight \u003d DEFAULT_HEIGHT;","lastModifiedDate":"2018-08-14"},{"lineNumber":28,"author":{"gitId":"-"},"content":" windowCoordinates \u003d null; // null represent no coordinates","lastModifiedDate":"2018-08-14"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Constructs a {@code GuiSettings} with the specified height, width and position.","lastModifiedDate":"2020-05-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public GuiSettings(double windowWidth, double windowHeight, int xPosition, int yPosition) {","lastModifiedDate":"2018-11-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.windowWidth \u003d windowWidth;","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.windowHeight \u003d windowHeight;","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" windowCoordinates \u003d new Point(xPosition, yPosition);","lastModifiedDate":"2018-08-14"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public double getWindowWidth() {","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" return windowWidth;","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public double getWindowHeight() {","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" return windowHeight;","lastModifiedDate":"2016-08-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public Point getWindowCoordinates() {","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" return windowCoordinates !\u003d null ? new Point(windowCoordinates) : null;","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2016-09-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2016-09-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" if (!(other instanceof GuiSettings)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2016-09-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" GuiSettings otherGuiSettings \u003d (GuiSettings) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return windowWidth \u003d\u003d otherGuiSettings.windowWidth","lastModifiedDate":"2023-07-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" \u0026\u0026 windowHeight \u003d\u003d otherGuiSettings.windowHeight","lastModifiedDate":"2023-07-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(windowCoordinates, otherGuiSettings.windowCoordinates);","lastModifiedDate":"2023-07-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-24"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return Objects.hash(windowWidth, windowHeight, windowCoordinates);","lastModifiedDate":"2016-09-24"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-09-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" .add(\"windowWidth\", windowWidth)","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":" .add(\"windowHeight\", windowHeight)","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" .add(\"windowCoordinates\", windowCoordinates)","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"modembcc":2,"-":80}},{"path":"src/main/java/seedu/address/logic/Logic.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-03"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * API of the Logic component","lastModifiedDate":"2016-09-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public interface Logic {","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2016-09-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * @param commandText The command as entered by the user.","lastModifiedDate":"2016-09-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * @return the result of the command execution.","lastModifiedDate":"2016-09-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2017-02-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * @throws ParseException If an error occurs during parsing.","lastModifiedDate":"2017-03-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" CommandResult execute(String commandText) throws CommandException, ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Returns the AddressBook.","lastModifiedDate":"2018-12-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * @see seedu.address.model.Model#getAddressBook()","lastModifiedDate":"2018-12-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2018-12-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":" /** Returns an unmodifiable view of the filtered list of persons */","lastModifiedDate":"2017-09-01"},{"lineNumber":34,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-26"},{"lineNumber":36,"author":{"gitId":"modembcc"},"content":" /** Returns an unmodifiable view of the current showing project (list of one entity) */","lastModifiedDate":"2024-03-22"},{"lineNumber":37,"author":{"gitId":"modembcc"},"content":" ObservableList\u003cPerson\u003e getCurrentProject();","lastModifiedDate":"2024-03-22"},{"lineNumber":38,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * Set the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"modembcc":3,"-":50}},{"path":"src/main/java/seedu/address/logic/LogicManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2016-09-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.AddressBookParser;","lastModifiedDate":"2017-07-07"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.storage.Storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * The main LogicManager of the app.","lastModifiedDate":"2016-09-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class LogicManager implements Logic {","lastModifiedDate":"2018-12-09"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_ERROR_FORMAT \u003d \"Could not save data due to the following error: %s\";","lastModifiedDate":"2023-06-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_PERMISSION_ERROR_FORMAT \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \"Could not save data to file %s due to insufficient permissions to write to the file or the folder.\";","lastModifiedDate":"2023-06-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(LogicManager.class);","lastModifiedDate":"2016-09-29"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final Model model;","lastModifiedDate":"2016-09-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final Storage storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final AddressBookParser addressBookParser;","lastModifiedDate":"2017-07-07"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Constructs a {@code LogicManager} with the given {@code Model} and {@code Storage}.","lastModifiedDate":"2020-05-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public LogicManager(Model model, Storage storage) {","lastModifiedDate":"2018-12-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.model \u003d model;","lastModifiedDate":"2016-09-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.storage \u003d storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":" addressBookParser \u003d new AddressBookParser();","lastModifiedDate":"2018-01-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public CommandResult execute(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":47,"author":{"gitId":"-"},"content":" logger.info(\"----------------[USER COMMAND][\" + commandText + \"]\");","lastModifiedDate":"2016-09-29"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":" CommandResult commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":" Command command \u003d addressBookParser.parseCommand(commandText);","lastModifiedDate":"2017-07-07"},{"lineNumber":51,"author":{"gitId":"-"},"content":" commandResult \u003d command.execute(model);","lastModifiedDate":"2019-01-25"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":" storage.saveAddressBook(model.getAddressBook());","lastModifiedDate":"2018-12-09"},{"lineNumber":55,"author":{"gitId":"-"},"content":" } catch (AccessDeniedException e) {","lastModifiedDate":"2023-06-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_PERMISSION_ERROR_FORMAT, e.getMessage()), e);","lastModifiedDate":"2023-06-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2018-12-09"},{"lineNumber":58,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_ERROR_FORMAT, ioe.getMessage()), ioe);","lastModifiedDate":"2023-06-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-03"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2018-12-03"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return model.getAddressBook();","lastModifiedDate":"2018-12-03"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-03"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return model.getFilteredPersonList();","lastModifiedDate":"2016-09-25"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-29"},{"lineNumber":74,"author":{"gitId":"modembcc"},"content":" @Override","lastModifiedDate":"2024-03-22"},{"lineNumber":75,"author":{"gitId":"modembcc"},"content":" public ObservableList\u003cPerson\u003e getCurrentProject() {","lastModifiedDate":"2024-03-22"},{"lineNumber":76,"author":{"gitId":"modembcc"},"content":" return model.getCurrentProject();","lastModifiedDate":"2024-03-22"},{"lineNumber":77,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":78,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":" return model.getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":" return model.getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":" model.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"modembcc":5,"-":88}},{"path":"src/main/java/seedu/address/logic/Messages.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2023-07-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-07-14"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-07-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2023-07-14"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"ananya21"},"content":"import seedu.address.model.project.Task;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Container for user visible messages.","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class Messages {","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2016-09-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_PERSON_DISPLAYED_INDEX \u003d \"The person index provided is invalid\";","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String MESSAGE_PERSONS_LISTED_OVERVIEW \u003d \"%1$d persons listed!\";","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2023-07-14"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-07-14"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2023-07-14"},{"lineNumber":27,"author":{"gitId":"-"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2023-07-14"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":29,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-07-14"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Formats the {@code person} for display to the user.","lastModifiedDate":"2019-02-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static String format(Person person) {","lastModifiedDate":"2019-02-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23"},{"lineNumber":40,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" builder.append(person.getName());","lastModifiedDate":"2024-02-29"},{"lineNumber":41,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"modembcc"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"modembcc"},"content":" * Formats the {@code task} for display to the user.","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"modembcc"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"ananya21"},"content":" public static String format(Task task) {","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"ananya21"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"ananya21"},"content":" builder.append(task.getName());","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"modembcc":3,"Lin-Shuang-Shuang":1,"-":45,"ananya21":4}},{"path":"src/main/java/seedu/address/logic/commands/AddProjectCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-02-29"},{"lineNumber":2,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":3,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-02-29"},{"lineNumber":4,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":5,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-02-29"},{"lineNumber":6,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-02-29"},{"lineNumber":7,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-02-29"},{"lineNumber":8,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-02-29"},{"lineNumber":9,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-02-29"},{"lineNumber":10,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":11,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"/**","lastModifiedDate":"2024-02-29"},{"lineNumber":12,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" * Adds a person to the address book.","lastModifiedDate":"2024-02-29"},{"lineNumber":13,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" */","lastModifiedDate":"2024-02-29"},{"lineNumber":14,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"public class AddProjectCommand extends Command {","lastModifiedDate":"2024-02-29"},{"lineNumber":15,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":16,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public static final String COMMAND_WORD \u003d \"add project\";","lastModifiedDate":"2024-02-29"},{"lineNumber":17,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":18,"author":{"gitId":"ananya21"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \"PROJECT_NAME\";","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":20,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public static final String MESSAGE_SUCCESS \u003d \"%1$s has been added to the project list.\";","lastModifiedDate":"2024-02-29"},{"lineNumber":21,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"Project %1$s already exists\";","lastModifiedDate":"2024-02-29"},{"lineNumber":22,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":23,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" private final Person toAdd;","lastModifiedDate":"2024-02-29"},{"lineNumber":24,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":25,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" /**","lastModifiedDate":"2024-02-29"},{"lineNumber":26,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2024-02-29"},{"lineNumber":27,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" */","lastModifiedDate":"2024-02-29"},{"lineNumber":28,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public AddProjectCommand(Person person) {","lastModifiedDate":"2024-02-29"},{"lineNumber":29,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" requireNonNull(person);","lastModifiedDate":"2024-02-29"},{"lineNumber":30,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" toAdd \u003d person;","lastModifiedDate":"2024-02-29"},{"lineNumber":31,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-02-29"},{"lineNumber":32,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":33,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" @Override","lastModifiedDate":"2024-02-29"},{"lineNumber":34,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-02-29"},{"lineNumber":35,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" requireNonNull(model);","lastModifiedDate":"2024-02-29"},{"lineNumber":36,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":37,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" if (model.hasPerson(toAdd)) {","lastModifiedDate":"2024-02-29"},{"lineNumber":38,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" throw new CommandException(String.format(MESSAGE_DUPLICATE_PERSON, Messages.format(toAdd)));","lastModifiedDate":"2024-02-29"},{"lineNumber":39,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-02-29"},{"lineNumber":40,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":41,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" model.addPerson(toAdd);","lastModifiedDate":"2024-02-29"},{"lineNumber":42,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2024-02-29"},{"lineNumber":43,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-02-29"},{"lineNumber":44,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":45,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" @Override","lastModifiedDate":"2024-02-29"},{"lineNumber":46,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-02-29"},{"lineNumber":47,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-02-29"},{"lineNumber":48,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return true;","lastModifiedDate":"2024-02-29"},{"lineNumber":49,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-02-29"},{"lineNumber":50,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":51,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-02-29"},{"lineNumber":52,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" if (!(other instanceof AddProjectCommand)) {","lastModifiedDate":"2024-02-29"},{"lineNumber":53,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return false;","lastModifiedDate":"2024-02-29"},{"lineNumber":54,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-02-29"},{"lineNumber":55,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":56,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" AddProjectCommand otherAddProjectCommand \u003d (AddProjectCommand) other;","lastModifiedDate":"2024-02-29"},{"lineNumber":57,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return toAdd.equals(otherAddProjectCommand.toAdd);","lastModifiedDate":"2024-02-29"},{"lineNumber":58,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-02-29"},{"lineNumber":59,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":60,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" @Override","lastModifiedDate":"2024-02-29"},{"lineNumber":61,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public String toString() {","lastModifiedDate":"2024-02-29"},{"lineNumber":62,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-02-29"},{"lineNumber":63,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2024-02-29"},{"lineNumber":64,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" .toString();","lastModifiedDate":"2024-02-29"},{"lineNumber":65,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-02-29"},{"lineNumber":66,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"}","lastModifiedDate":"2024-02-29"}],"authorContributionMap":{"Lin-Shuang-Shuang":65,"ananya21":1}},{"path":"src/main/java/seedu/address/logic/commands/AddTaskCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ananya21"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-15"},{"lineNumber":2,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":3,"author":{"gitId":"ananya21"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-15"},{"lineNumber":4,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":5,"author":{"gitId":"ananya21"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-15"},{"lineNumber":6,"author":{"gitId":"ananya21"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-15"},{"lineNumber":7,"author":{"gitId":"modembcc"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"ananya21"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-15"},{"lineNumber":9,"author":{"gitId":"ananya21"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-15"},{"lineNumber":10,"author":{"gitId":"ananya21"},"content":"import seedu.address.model.project.Task;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":12,"author":{"gitId":"ananya21"},"content":"/**","lastModifiedDate":"2024-03-15"},{"lineNumber":13,"author":{"gitId":"ananya21"},"content":" * Adds a task to a project.","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"ananya21"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":15,"author":{"gitId":"ananya21"},"content":"public class AddTaskCommand extends Command {","lastModifiedDate":"2024-03-15"},{"lineNumber":16,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":17,"author":{"gitId":"ananya21"},"content":" public static final String COMMAND_WORD \u003d \"add task\";","lastModifiedDate":"2024-03-15"},{"lineNumber":18,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":19,"author":{"gitId":"ananya21"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a task in a project \"","lastModifiedDate":"2024-03-15"},{"lineNumber":20,"author":{"gitId":"ananya21"},"content":" + \"Parameters: \"","lastModifiedDate":"2024-03-15"},{"lineNumber":21,"author":{"gitId":"ananya21"},"content":" + \"PROJECT_NAME, TASK_NAME\";","lastModifiedDate":"2024-03-15"},{"lineNumber":22,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":23,"author":{"gitId":"ananya21"},"content":" public static final String MESSAGE_SUCCESS \u003d \"%1$s has been added to the project %2$s.\";","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":25,"author":{"gitId":"ananya21"},"content":" public static final String MESSAGE_PROJECT_NOT_FOUND \u003d \"Project %1$s not found: \"","lastModifiedDate":"2024-03-22"},{"lineNumber":26,"author":{"gitId":"modembcc"},"content":" + \"Please make sure the project exists.\";","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":28,"author":{"gitId":"ananya21"},"content":" public static final String MESSAGE_DUPLICATE_TASK \u003d \"Task %1$s already exists in project %2$s\";","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":30,"author":{"gitId":"ananya21"},"content":" private final Task toAdd;","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"ananya21"},"content":" private final Person taskProject;","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":33,"author":{"gitId":"ananya21"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":34,"author":{"gitId":"ananya21"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2024-03-15"},{"lineNumber":35,"author":{"gitId":"ananya21"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":36,"author":{"gitId":"ananya21"},"content":" public AddTaskCommand(Task task, Person taskProject) {","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"ananya21"},"content":" requireNonNull(task);","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"ananya21"},"content":" requireNonNull(taskProject);","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"ananya21"},"content":" this.toAdd \u003d task;","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"ananya21"},"content":" this.taskProject \u003d taskProject;","lastModifiedDate":"2024-03-15"},{"lineNumber":41,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":42,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":43,"author":{"gitId":"ananya21"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":44,"author":{"gitId":"modembcc"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"modembcc"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"ananya21"},"content":" if (!model.hasPerson(taskProject)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"modembcc"},"content":" throw new CommandException(String.format(","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"modembcc"},"content":" MESSAGE_PROJECT_NOT_FOUND,","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"modembcc"},"content":" Messages.format(taskProject)));","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"ThitipatC"},"content":" Person combineTask \u003d model.findPerson(taskProject.getName());","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"ananya21"},"content":" if (combineTask.hasTask(toAdd)) {","lastModifiedDate":"2024-03-22"},{"lineNumber":55,"author":{"gitId":"ananya21"},"content":" throw new CommandException(String.format(","lastModifiedDate":"2024-03-22"},{"lineNumber":56,"author":{"gitId":"ananya21"},"content":" MESSAGE_DUPLICATE_TASK,","lastModifiedDate":"2024-03-22"},{"lineNumber":57,"author":{"gitId":"ananya21"},"content":" Messages.format(toAdd),","lastModifiedDate":"2024-03-22"},{"lineNumber":58,"author":{"gitId":"ananya21"},"content":" Messages.format(combineTask)));","lastModifiedDate":"2024-03-22"},{"lineNumber":59,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":60,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":61,"author":{"gitId":"ananya21"},"content":" combineTask.addTask(toAdd);","lastModifiedDate":"2024-03-22"},{"lineNumber":62,"author":{"gitId":"ThitipatC"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd), Messages.format(combineTask)));","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":64,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":65,"author":{"gitId":"ananya21"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":66,"author":{"gitId":"ananya21"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-15"},{"lineNumber":67,"author":{"gitId":"ananya21"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-15"},{"lineNumber":68,"author":{"gitId":"ananya21"},"content":" return true;","lastModifiedDate":"2024-03-15"},{"lineNumber":69,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":70,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":71,"author":{"gitId":"ananya21"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-15"},{"lineNumber":72,"author":{"gitId":"ananya21"},"content":" if (!(other instanceof AddTaskCommand)) {","lastModifiedDate":"2024-03-15"},{"lineNumber":73,"author":{"gitId":"ananya21"},"content":" return false;","lastModifiedDate":"2024-03-15"},{"lineNumber":74,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":75,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":76,"author":{"gitId":"ananya21"},"content":" AddTaskCommand otherAddTaskCommand \u003d (AddTaskCommand) other;","lastModifiedDate":"2024-03-15"},{"lineNumber":77,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return toAdd.equals(otherAddTaskCommand.toAdd)","lastModifiedDate":"2024-03-21"},{"lineNumber":78,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" \u0026\u0026 taskProject.equals(otherAddTaskCommand.taskProject);","lastModifiedDate":"2024-03-21"},{"lineNumber":79,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":80,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":81,"author":{"gitId":"ananya21"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":82,"author":{"gitId":"ananya21"},"content":" public String toString() {","lastModifiedDate":"2024-03-15"},{"lineNumber":83,"author":{"gitId":"ananya21"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-15"},{"lineNumber":84,"author":{"gitId":"ananya21"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2024-03-15"},{"lineNumber":85,"author":{"gitId":"ananya21"},"content":" .toString();","lastModifiedDate":"2024-03-15"},{"lineNumber":86,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":87,"author":{"gitId":"ananya21"},"content":"}","lastModifiedDate":"2024-03-15"}],"authorContributionMap":{"modembcc":8,"ThitipatC":2,"Lin-Shuang-Shuang":2,"ananya21":75}},{"path":"src/main/java/seedu/address/logic/commands/AssignPersonCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ananya21"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"ananya21"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"ananya21"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"ananya21"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"ananya21"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"ananya21"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"ananya21"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"ananya21"},"content":"import seedu.address.model.project.Member;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"ananya21"},"content":"import seedu.address.model.project.Task;","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"ananya21"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"ananya21"},"content":" * Adds a task to a project.","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"ananya21"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"ananya21"},"content":"public class AssignPersonCommand extends Command {","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"modembcc"},"content":" public static final String COMMAND_WORD \u003d \"add person\";","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"ananya21"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \"PERSON_NAME\"","lastModifiedDate":"2024-03-22"},{"lineNumber":21,"author":{"gitId":"ananya21"},"content":" + \"/to TASK_NAME\"","lastModifiedDate":"2024-03-22"},{"lineNumber":22,"author":{"gitId":"ananya21"},"content":" + \"/in PROJECT_NAME\";","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":24,"author":{"gitId":"ananya21"},"content":" public static final String MESSAGE_PROJECT_NOT_FOUND \u003d \"Project %1$s not found: \"","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"ananya21"},"content":" + \"Please make sure the project exists.\";","lastModifiedDate":"2024-03-22"},{"lineNumber":26,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":27,"author":{"gitId":"ananya21"},"content":" public static final String MESSAGE_TASK_NOT_FOUND \u003d \"Task %1s not found: \"","lastModifiedDate":"2024-03-22"},{"lineNumber":28,"author":{"gitId":"ananya21"},"content":" + \"Please make sure the task exists.\";","lastModifiedDate":"2024-03-22"},{"lineNumber":29,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"ananya21"},"content":" public static final String MESSAGE_SUCCESS \u003d \"The person %1$s has been assigned to the following task %2$s.\";","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"ananya21"},"content":" private final Task task;","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"ananya21"},"content":" private final Person project;","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"ananya21"},"content":" private final Member member;","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"ananya21"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"ananya21"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"ananya21"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"ananya21"},"content":" public AssignPersonCommand(String member, Task task, Person project) {","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"ananya21"},"content":" requireNonNull(task);","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"ananya21"},"content":" this.task \u003d task;","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"ananya21"},"content":" this.project \u003d project;","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"ananya21"},"content":" this.member \u003d new Member(member);","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"ananya21"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"ananya21"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"ananya21"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"ananya21"},"content":" Person projectAssign \u003d model.findPerson(project.getName());","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":52,"author":{"gitId":"ananya21"},"content":" if (projectAssign.equals(null)) {","lastModifiedDate":"2024-03-22"},{"lineNumber":53,"author":{"gitId":"ananya21"},"content":" throw new CommandException(String.format(","lastModifiedDate":"2024-03-22"},{"lineNumber":54,"author":{"gitId":"ananya21"},"content":" MESSAGE_PROJECT_NOT_FOUND,","lastModifiedDate":"2024-03-22"},{"lineNumber":55,"author":{"gitId":"ananya21"},"content":" Messages.format(project)));","lastModifiedDate":"2024-03-22"},{"lineNumber":56,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":57,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":58,"author":{"gitId":"ananya21"},"content":" Task assignTask \u003d projectAssign.findTask(task.getName());","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"ananya21"},"content":" if (assignTask.equals(null)) {","lastModifiedDate":"2024-03-22"},{"lineNumber":61,"author":{"gitId":"ananya21"},"content":" throw new CommandException(String.format(","lastModifiedDate":"2024-03-22"},{"lineNumber":62,"author":{"gitId":"ananya21"},"content":" MESSAGE_TASK_NOT_FOUND,","lastModifiedDate":"2024-03-22"},{"lineNumber":63,"author":{"gitId":"ananya21"},"content":" Messages.format(task)","lastModifiedDate":"2024-03-22"},{"lineNumber":64,"author":{"gitId":"ananya21"},"content":" ));","lastModifiedDate":"2024-03-22"},{"lineNumber":65,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":66,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":67,"author":{"gitId":"ananya21"},"content":" assignTask.assignPerson(this.member);","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"ananya21"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, member, Messages.format(task)));","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"ananya21"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"ananya21"},"content":" public String toString() {","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"ananya21"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-21"},{"lineNumber":75,"author":{"gitId":"ananya21"},"content":" .add(\"set Member\", member)","lastModifiedDate":"2024-03-21"},{"lineNumber":76,"author":{"gitId":"ananya21"},"content":" .toString();","lastModifiedDate":"2024-03-21"},{"lineNumber":77,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":78,"author":{"gitId":"ananya21"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"modembcc":1,"ananya21":77}},{"path":"src/main/java/seedu/address/logic/commands/DeleteProjectCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":9,"author":{"gitId":"modembcc"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"modembcc"},"content":" * Deletes a project identified using it\u0027s name from the project list.","lastModifiedDate":"2024-03-15"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"modembcc"},"content":"public class DeleteProjectCommand extends Command {","lastModifiedDate":"2024-03-15"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"modembcc"},"content":" public static final String COMMAND_WORD \u003d \"delete project\";","lastModifiedDate":"2024-03-15"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"ananya21"},"content":" + \"PROJECT_NAME\\n\";","lastModifiedDate":"2024-03-22"},{"lineNumber":21,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":22,"author":{"gitId":"ananya21"},"content":" public static final String MESSAGE_PROJECT_NOT_FOUND \u003d \"Project %1$s not found: \"","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"ananya21"},"content":" + \"Please make sure the project exists.\";","lastModifiedDate":"2024-03-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"ananya21"},"content":" public static final String MESSAGE_DELETE_PROJECT_SUCCESS \u003d \"%1$s has been deleted from the project list.\";","lastModifiedDate":"2024-03-22"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"modembcc"},"content":" private final String targetName;","lastModifiedDate":"2024-03-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"modembcc"},"content":" public DeleteProjectCommand(String targetName) {","lastModifiedDate":"2024-03-15"},{"lineNumber":30,"author":{"gitId":"modembcc"},"content":" this.targetName \u003d targetName;","lastModifiedDate":"2024-03-15"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":36,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":37,"author":{"gitId":"ananya21"},"content":" if (!model.hasPerson(new Person(new Name(targetName)))) {","lastModifiedDate":"2024-03-22"},{"lineNumber":38,"author":{"gitId":"ananya21"},"content":" throw new CommandException(String.format(","lastModifiedDate":"2024-03-22"},{"lineNumber":39,"author":{"gitId":"ananya21"},"content":" MESSAGE_PROJECT_NOT_FOUND,","lastModifiedDate":"2024-03-22"},{"lineNumber":40,"author":{"gitId":"ananya21"},"content":" targetName));","lastModifiedDate":"2024-03-22"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":43,"author":{"gitId":"ananya21"},"content":" Person targetProject \u003d model.findPerson(new Name(targetName));","lastModifiedDate":"2024-03-22"},{"lineNumber":44,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":45,"author":{"gitId":"ananya21"},"content":" model.deletePerson(targetProject);","lastModifiedDate":"2024-03-22"},{"lineNumber":46,"author":{"gitId":"ananya21"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_PROJECT_SUCCESS, Messages.format(targetProject)));","lastModifiedDate":"2024-03-22"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":56,"author":{"gitId":"modembcc"},"content":" if (!(other instanceof DeleteProjectCommand)) {","lastModifiedDate":"2024-03-15"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":60,"author":{"gitId":"modembcc"},"content":" DeleteProjectCommand otherDeleteCommand \u003d (DeleteProjectCommand) other;","lastModifiedDate":"2024-03-15"},{"lineNumber":61,"author":{"gitId":"modembcc"},"content":" return targetName.equals(otherDeleteCommand.targetName);","lastModifiedDate":"2024-03-15"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"modembcc"},"content":" .add(\"targetName\", targetName)","lastModifiedDate":"2024-03-15"},{"lineNumber":68,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"modembcc":12,"-":45,"ananya21":13}},{"path":"src/main/java/seedu/address/logic/commands/DeleteTaskCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ThitipatC"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"ThitipatC"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"ThitipatC"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"ThitipatC"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"ThitipatC"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"ThitipatC"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"modembcc"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"ThitipatC"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"ThitipatC"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"ThitipatC"},"content":"import seedu.address.model.project.Task;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"ThitipatC"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"ThitipatC"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"ThitipatC"},"content":" * Adds a task to a project.","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"ThitipatC"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"ThitipatC"},"content":"public class DeleteTaskCommand extends Command {","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"ThitipatC"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"ThitipatC"},"content":" public static final String COMMAND_WORD \u003d \"delete task\";","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"ThitipatC"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"ananya21"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \"TASK_NAME /in PROJECT_NAME\";","lastModifiedDate":"2024-03-22"},{"lineNumber":20,"author":{"gitId":"ThitipatC"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"ThitipatC"},"content":" public static final String MESSAGE_SUCCESS \u003d \"%1$s has been deleted from %2$s\";","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"ThitipatC"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"ananya21"},"content":" public static final String MESSAGE_PROJECT_NOT_FOUND \u003d \"Project %1$s not found: \"","lastModifiedDate":"2024-03-22"},{"lineNumber":24,"author":{"gitId":"modembcc"},"content":" + \"Please make sure the project exists.\";","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"modembcc"},"content":" public static final String MESSAGE_TASK_NOT_FOUND \u003d \"Task %1$s not found: \"","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"modembcc"},"content":" + \"Please make sure the task exists in project %2$s\";","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"ThitipatC"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"ThitipatC"},"content":" private final Task toDelete;","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"ThitipatC"},"content":" private final Person taskProject;","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"ThitipatC"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"ThitipatC"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"ThitipatC"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"ThitipatC"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"ThitipatC"},"content":" public DeleteTaskCommand(Task task, Person taskProject) {","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"ThitipatC"},"content":" requireNonNull(task);","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"ThitipatC"},"content":" requireNonNull(taskProject);","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"ThitipatC"},"content":" this.toDelete \u003d task;","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"ThitipatC"},"content":" this.taskProject \u003d taskProject;","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"ThitipatC"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"ThitipatC"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"ThitipatC"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"ThitipatC"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"ThitipatC"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"ThitipatC"},"content":" if (!model.hasPerson(taskProject)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"modembcc"},"content":" throw new CommandException(String.format(","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"modembcc"},"content":" MESSAGE_PROJECT_NOT_FOUND,","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"modembcc"},"content":" Messages.format(taskProject)));","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"ThitipatC"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"modembcc"},"content":" Person combineTask \u003d model.findPerson(taskProject.getName());","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"modembcc"},"content":" if (!combineTask.hasTask(toDelete)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"modembcc"},"content":" throw new CommandException(String.format(","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"modembcc"},"content":" MESSAGE_TASK_NOT_FOUND,","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"modembcc"},"content":" Messages.format(toDelete),","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"modembcc"},"content":" Messages.format(taskProject)));","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"ThitipatC"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"ThitipatC"},"content":" combineTask.removeTask(toDelete);","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"modembcc"},"content":" return new CommandResult(String.format(","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"modembcc"},"content":" MESSAGE_SUCCESS,","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"modembcc"},"content":" Messages.format(toDelete),","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"modembcc"},"content":" Messages.format(taskProject)));","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"ThitipatC"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"ThitipatC"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"ThitipatC"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"ThitipatC"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"ThitipatC"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"ThitipatC"},"content":" return true;","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"ThitipatC"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"ThitipatC"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"ThitipatC"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"ThitipatC"},"content":" if (!(other instanceof DeleteTaskCommand)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"ThitipatC"},"content":" return false;","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"ThitipatC"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"ThitipatC"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"ThitipatC"},"content":" DeleteTaskCommand otherDeleteTaskCommand \u003d (DeleteTaskCommand) other;","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return toDelete.equals(otherDeleteTaskCommand.toDelete)","lastModifiedDate":"2024-03-21"},{"lineNumber":76,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" \u0026\u0026 taskProject.equals(otherDeleteTaskCommand.taskProject);","lastModifiedDate":"2024-03-21"},{"lineNumber":77,"author":{"gitId":"ThitipatC"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"ThitipatC"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"ThitipatC"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":80,"author":{"gitId":"ThitipatC"},"content":" public String toString() {","lastModifiedDate":"2024-03-18"},{"lineNumber":81,"author":{"gitId":"ThitipatC"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-18"},{"lineNumber":82,"author":{"gitId":"ThitipatC"},"content":" .add(\"toDelete\", toDelete)","lastModifiedDate":"2024-03-18"},{"lineNumber":83,"author":{"gitId":"ThitipatC"},"content":" .toString();","lastModifiedDate":"2024-03-18"},{"lineNumber":84,"author":{"gitId":"ThitipatC"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":85,"author":{"gitId":"ThitipatC"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"modembcc":17,"ThitipatC":64,"Lin-Shuang-Shuang":2,"ananya21":2}},{"path":"src/main/java/seedu/address/logic/commands/EditCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-12-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-01-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-01-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2016-12-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-26"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":31,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Edits the details of an existing person in the address book.","lastModifiedDate":"2016-12-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":34,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2016-12-26"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the person identified \"","lastModifiedDate":"2016-12-26"},{"lineNumber":39,"author":{"gitId":"-"},"content":" + \"by the index number used in the displayed person list. \"","lastModifiedDate":"2018-04-01"},{"lineNumber":40,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26"},{"lineNumber":41,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2017-06-06"},{"lineNumber":42,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06"},{"lineNumber":43,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":44,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":45,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":46,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"91234567 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2017-05-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Person: %1$s\";","lastModifiedDate":"2016-12-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2016-12-26"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book.\";","lastModifiedDate":"2016-12-26"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2017-05-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":" private final EditPersonDescriptor editPersonDescriptor;","lastModifiedDate":"2016-12-26"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit","lastModifiedDate":"2017-05-25"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * @param editPersonDescriptor details to edit the person with","lastModifiedDate":"2016-12-26"},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public EditCommand(Index index, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2017-05-25"},{"lineNumber":63,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25"},{"lineNumber":64,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2017-05-15"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25"},{"lineNumber":67,"author":{"gitId":"-"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2016-12-26"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":72,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2018-04-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2018-04-19"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2018-08-07"},{"lineNumber":83,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":86,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":87,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":88,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson)));","lastModifiedDate":"2019-02-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":91,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2016-12-26"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2016-12-26"},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":95,"author":{"gitId":"-"},"content":" private static Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2018-01-10"},{"lineNumber":96,"author":{"gitId":"-"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2016-12-26"},{"lineNumber":97,"author":{"gitId":"-"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(personToEdit.getName());","lastModifiedDate":"2017-06-21"},{"lineNumber":98,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return new Person(updatedName);","lastModifiedDate":"2024-02-29"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":101,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08"},{"lineNumber":108,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08"},{"lineNumber":109,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":112,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":126,"author":{"gitId":"-"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2016-12-26"},{"lineNumber":127,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26"},{"lineNumber":128,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":129,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26"},{"lineNumber":130,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21"},{"lineNumber":131,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":132,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21"},{"lineNumber":133,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-06-21"},{"lineNumber":134,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":136,"author":{"gitId":"-"},"content":" public EditPersonDescriptor() {}","lastModifiedDate":"2016-12-26"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":138,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":139,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11"},{"lineNumber":140,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":141,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":142,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26"},{"lineNumber":143,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15"},{"lineNumber":144,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15"},{"lineNumber":145,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15"},{"lineNumber":146,"author":{"gitId":"-"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2018-01-15"},{"lineNumber":147,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11"},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":150,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":151,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26"},{"lineNumber":152,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":153,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26"},{"lineNumber":154,"author":{"gitId":"-"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, address, tags);","lastModifiedDate":"2018-08-14"},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":157,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21"},{"lineNumber":158,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":161,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26"},{"lineNumber":162,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21"},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":165,"author":{"gitId":"-"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2017-06-21"},{"lineNumber":166,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":167,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":169,"author":{"gitId":"-"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26"},{"lineNumber":170,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2017-06-21"},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":173,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2017-06-21"},{"lineNumber":174,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-06-21"},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":177,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26"},{"lineNumber":178,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21"},{"lineNumber":179,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":181,"author":{"gitId":"-"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2017-06-21"},{"lineNumber":182,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-06-21"},{"lineNumber":183,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":185,"author":{"gitId":"-"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2016-12-26"},{"lineNumber":186,"author":{"gitId":"-"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2017-06-21"},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":189,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":190,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2018-01-11"},{"lineNumber":191,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":192,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":193,"author":{"gitId":"-"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-06-21"},{"lineNumber":194,"author":{"gitId":"-"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2018-01-11"},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":197,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":198,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11"},{"lineNumber":199,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11"},{"lineNumber":200,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11"},{"lineNumber":201,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":202,"author":{"gitId":"-"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":203,"author":{"gitId":"-"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2018-01-11"},{"lineNumber":204,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":206,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05"},{"lineNumber":207,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05"},{"lineNumber":208,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05"},{"lineNumber":209,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05"},{"lineNumber":210,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":212,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05"},{"lineNumber":213,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05"},{"lineNumber":214,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05"},{"lineNumber":215,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":217,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":218,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":219,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":220,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":221,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(address, otherEditPersonDescriptor.address)","lastModifiedDate":"2023-07-13"},{"lineNumber":222,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(tags, otherEditPersonDescriptor.tags);","lastModifiedDate":"2023-07-13"},{"lineNumber":223,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":226,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":227,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":228,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":230,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":231,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":234,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":236,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26"}],"authorContributionMap":{"Lin-Shuang-Shuang":1,"-":235}},{"path":"src/main/java/seedu/address/logic/commands/SetDeadlineCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ananya21"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"ananya21"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"ananya21"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"ananya21"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"ananya21"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"ananya21"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"ananya21"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"ananya21"},"content":"import seedu.address.model.project.Task;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"ananya21"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"ananya21"},"content":" * Adds a task to a project.","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"ananya21"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"ananya21"},"content":"public class SetDeadlineCommand extends Command {","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"modembcc"},"content":" public static final String COMMAND_WORD \u003d \"add deadline\";","lastModifiedDate":"2024-03-22"},{"lineNumber":18,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"ananya21"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \"DEADLINE /to TASK_NAME /in PROJECT_NAME\";","lastModifiedDate":"2024-03-22"},{"lineNumber":20,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"ananya21"},"content":" public static final String MESSAGE_SUCCESS \u003d \"The task %1$s has been set with the following deadline %2$s.\";","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"ananya21"},"content":" public static final String MESSAGE_PROJECT_NOT_FOUND \u003d \"Project %1$s not found: \"","lastModifiedDate":"2024-03-22"},{"lineNumber":24,"author":{"gitId":"ananya21"},"content":" + \"Please make sure the project exists.\";","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":26,"author":{"gitId":"ananya21"},"content":" public static final String MESSAGE_TASK_NOT_FOUND \u003d \"Task %1$s not found: \"","lastModifiedDate":"2024-03-22"},{"lineNumber":27,"author":{"gitId":"ananya21"},"content":" + \"Please make sure the task exists in project %2$s\";","lastModifiedDate":"2024-03-22"},{"lineNumber":28,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":29,"author":{"gitId":"ananya21"},"content":" public static final String MESSAGE_WRONG_FORMAT_DEADLINE \u003d \"The deadline %1s has been entered in the wrong format. \"","lastModifiedDate":"2024-03-22"},{"lineNumber":30,"author":{"gitId":"ananya21"},"content":" + \"An example of the correct format is Mar 15 2024\";","lastModifiedDate":"2024-03-22"},{"lineNumber":31,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"ananya21"},"content":" private final Task task;","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"ananya21"},"content":" private final String deadline;","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"ananya21"},"content":" private final Person project;","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"modembcc"},"content":" private final String datePattern \u003d \"\\\\b(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\\\b \\\\d{1,2} \\\\d{4}\\\\b\";","lastModifiedDate":"2024-03-22"},{"lineNumber":37,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"ananya21"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"ananya21"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"ananya21"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"ananya21"},"content":" public SetDeadlineCommand(String deadline, Task task, Person project) {","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"ananya21"},"content":" requireNonNull(task);","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"ananya21"},"content":" this.task \u003d task;","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"ananya21"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"ananya21"},"content":" this.project \u003d project;","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"ananya21"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"ananya21"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"ananya21"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"ananya21"},"content":" if (!deadline.matches(datePattern)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"ananya21"},"content":" throw new CommandException(String.format(MESSAGE_WRONG_FORMAT_DEADLINE, deadline));","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"ananya21"},"content":" if (!model.hasPerson(project)) {","lastModifiedDate":"2024-03-22"},{"lineNumber":57,"author":{"gitId":"ananya21"},"content":" throw new CommandException(String.format(","lastModifiedDate":"2024-03-22"},{"lineNumber":58,"author":{"gitId":"ananya21"},"content":" MESSAGE_PROJECT_NOT_FOUND,","lastModifiedDate":"2024-03-22"},{"lineNumber":59,"author":{"gitId":"ananya21"},"content":" Messages.format(project)));","lastModifiedDate":"2024-03-22"},{"lineNumber":60,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":61,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":62,"author":{"gitId":"ananya21"},"content":" Person deadlineProject \u003d model.findPerson(project.getName());","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"ananya21"},"content":" if (!deadlineProject.hasTask(task)) {","lastModifiedDate":"2024-03-22"},{"lineNumber":64,"author":{"gitId":"ananya21"},"content":" throw new CommandException(String.format(","lastModifiedDate":"2024-03-22"},{"lineNumber":65,"author":{"gitId":"ananya21"},"content":" MESSAGE_TASK_NOT_FOUND,","lastModifiedDate":"2024-03-22"},{"lineNumber":66,"author":{"gitId":"ananya21"},"content":" Messages.format(task),","lastModifiedDate":"2024-03-22"},{"lineNumber":67,"author":{"gitId":"ananya21"},"content":" Messages.format(project)));","lastModifiedDate":"2024-03-22"},{"lineNumber":68,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":69,"author":{"gitId":"ananya21"},"content":" Task deadlineTask \u003d deadlineProject.findTask(task.getName());","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"ananya21"},"content":" deadlineTask.setDeadline(deadline);","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"ananya21"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(deadlineTask), deadline));","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":75,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":76,"author":{"gitId":"ananya21"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":77,"author":{"gitId":"ananya21"},"content":" public String toString() {","lastModifiedDate":"2024-03-21"},{"lineNumber":78,"author":{"gitId":"ananya21"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-21"},{"lineNumber":79,"author":{"gitId":"ananya21"},"content":" .add(\"setDeadline\", deadline)","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"ananya21"},"content":" .toString();","lastModifiedDate":"2024-03-21"},{"lineNumber":81,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"ananya21"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"modembcc":2,"ananya21":80}},{"path":"src/main/java/seedu/address/logic/commands/SetStatusCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ananya21"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"ananya21"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"ananya21"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"ananya21"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"ananya21"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"ananya21"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"ananya21"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"ananya21"},"content":"import seedu.address.model.project.Task;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"ananya21"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"ananya21"},"content":" * Adds a task to a project.","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"ananya21"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"ananya21"},"content":"public class SetStatusCommand extends Command {","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"ananya21"},"content":" public static final String COMMAND_WORD \u003d \"set status\";","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"ananya21"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Sets the status of a task in a project \"","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"ananya21"},"content":" + \"Parameters: \"","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"ananya21"},"content":" + \"TASK_NAME, STATUS, PROJECT_NAME\";","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"ananya21"},"content":" public static final String MESSAGE_SUCCESS \u003d \"The task %1$s has the following status %2$s.\";","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"ananya21"},"content":" public static final String MESSAGE_PROJECT_NOT_FOUND \u003d \"Project %1$s not found: \"","lastModifiedDate":"2024-03-22"},{"lineNumber":26,"author":{"gitId":"ananya21"},"content":" + \"Please make sure the project exists.\";","lastModifiedDate":"2024-03-22"},{"lineNumber":27,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":28,"author":{"gitId":"ananya21"},"content":" public static final String MESSAGE_TASK_NOT_FOUND \u003d \"Task %1$s not found: \"","lastModifiedDate":"2024-03-22"},{"lineNumber":29,"author":{"gitId":"ananya21"},"content":" + \"Please make sure the task exists in project %2$s\";","lastModifiedDate":"2024-03-22"},{"lineNumber":30,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":31,"author":{"gitId":"ananya21"},"content":" public static final String MESSAGE_WRONG_FORMAT_STATUS \u003d \"The status %1s has been entered in the wrong format.\";","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"ananya21"},"content":" private final Task task;","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"ananya21"},"content":" private final String status;","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"ananya21"},"content":" private final Person project;","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"ananya21"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"ananya21"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"ananya21"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"ananya21"},"content":" public SetStatusCommand(String status, Task task, Person project) {","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"ananya21"},"content":" requireNonNull(task);","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"ananya21"},"content":" requireNonNull(project);","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"ananya21"},"content":" requireNonNull(status);","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"ananya21"},"content":" this.task \u003d task;","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"ananya21"},"content":" this.status \u003d status;","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"ananya21"},"content":" this.project \u003d project;","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"ananya21"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"ananya21"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"ananya21"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"ananya21"},"content":" if (!model.hasPerson(project)) {","lastModifiedDate":"2024-03-22"},{"lineNumber":54,"author":{"gitId":"ananya21"},"content":" throw new CommandException(String.format(","lastModifiedDate":"2024-03-22"},{"lineNumber":55,"author":{"gitId":"ananya21"},"content":" MESSAGE_PROJECT_NOT_FOUND,","lastModifiedDate":"2024-03-22"},{"lineNumber":56,"author":{"gitId":"ananya21"},"content":" Messages.format(project)));","lastModifiedDate":"2024-03-22"},{"lineNumber":57,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":58,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":59,"author":{"gitId":"ananya21"},"content":" Person statusProject \u003d model.findPerson(project.getName());","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":61,"author":{"gitId":"ananya21"},"content":" if (!statusProject.hasTask(task)) {","lastModifiedDate":"2024-03-22"},{"lineNumber":62,"author":{"gitId":"ananya21"},"content":" throw new CommandException(String.format(","lastModifiedDate":"2024-03-22"},{"lineNumber":63,"author":{"gitId":"ananya21"},"content":" MESSAGE_TASK_NOT_FOUND,","lastModifiedDate":"2024-03-22"},{"lineNumber":64,"author":{"gitId":"ananya21"},"content":" Messages.format(task),","lastModifiedDate":"2024-03-22"},{"lineNumber":65,"author":{"gitId":"ananya21"},"content":" Messages.format(project)));","lastModifiedDate":"2024-03-22"},{"lineNumber":66,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":67,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":68,"author":{"gitId":"ananya21"},"content":" Task statusTask \u003d statusProject.findTask(task.getName());","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"ananya21"},"content":" if (status.equals(\"complete\")) {","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"ananya21"},"content":" statusTask.setComplete();","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"ananya21"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(statusTask), status));","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"ananya21"},"content":" } else if (status.equals(\"incomplete\")) {","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"ananya21"},"content":" statusTask.setIncomplete();","lastModifiedDate":"2024-03-21"},{"lineNumber":75,"author":{"gitId":"ananya21"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(statusTask), status));","lastModifiedDate":"2024-03-21"},{"lineNumber":76,"author":{"gitId":"ananya21"},"content":" } else {","lastModifiedDate":"2024-03-21"},{"lineNumber":77,"author":{"gitId":"ananya21"},"content":" throw new CommandException(String.format(MESSAGE_WRONG_FORMAT_STATUS, status));","lastModifiedDate":"2024-03-21"},{"lineNumber":78,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":79,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":81,"author":{"gitId":"ananya21"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"ananya21"},"content":" public String toString() {","lastModifiedDate":"2024-03-21"},{"lineNumber":83,"author":{"gitId":"ananya21"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-21"},{"lineNumber":84,"author":{"gitId":"ananya21"},"content":" .add(\"set status\", status)","lastModifiedDate":"2024-03-21"},{"lineNumber":85,"author":{"gitId":"ananya21"},"content":" .toString();","lastModifiedDate":"2024-03-21"},{"lineNumber":86,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":87,"author":{"gitId":"ananya21"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"ananya21":87}},{"path":"src/main/java/seedu/address/logic/commands/ShowProjectCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"modembcc"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":3,"author":{"gitId":"modembcc"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-22"},{"lineNumber":4,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":5,"author":{"gitId":"modembcc"},"content":"import java.util.List;","lastModifiedDate":"2024-03-22"},{"lineNumber":6,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":7,"author":{"gitId":"modembcc"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-22"},{"lineNumber":8,"author":{"gitId":"modembcc"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-22"},{"lineNumber":9,"author":{"gitId":"modembcc"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"modembcc"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"modembcc"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"modembcc"},"content":"import seedu.address.model.person.NameEqualsPredicate;","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"modembcc"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":15,"author":{"gitId":"modembcc"},"content":"/**","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"modembcc"},"content":" * Deletes a project identified using it\u0027s name from the project list.","lastModifiedDate":"2024-03-22"},{"lineNumber":17,"author":{"gitId":"modembcc"},"content":" */","lastModifiedDate":"2024-03-22"},{"lineNumber":18,"author":{"gitId":"modembcc"},"content":"public class ShowProjectCommand extends Command {","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":20,"author":{"gitId":"modembcc"},"content":" public static final String COMMAND_WORD \u003d \"show project\";","lastModifiedDate":"2024-03-22"},{"lineNumber":21,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":22,"author":{"gitId":"modembcc"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"modembcc"},"content":" + \": Shows the specified project. \"","lastModifiedDate":"2024-03-22"},{"lineNumber":24,"author":{"gitId":"modembcc"},"content":" + \"Parameters: PROJECT_NAME\\n\"","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"modembcc"},"content":" + \"Example: \" + COMMAND_WORD + \" CS2103\";","lastModifiedDate":"2024-03-22"},{"lineNumber":26,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":27,"author":{"gitId":"ananya21"},"content":" public static final String MESSAGE_SHOW_PROJECT_SUCCESS \u003d \"%1$s is now being shown.\";","lastModifiedDate":"2024-03-22"},{"lineNumber":28,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":29,"author":{"gitId":"ananya21"},"content":" public static final String MESSAGE_PROJECT_NOT_FOUND \u003d \"Project %1$s not found: \"","lastModifiedDate":"2024-03-22"},{"lineNumber":30,"author":{"gitId":"ananya21"},"content":" + \"Please make sure the project exists.\";","lastModifiedDate":"2024-03-22"},{"lineNumber":31,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":32,"author":{"gitId":"modembcc"},"content":" private final String targetName;","lastModifiedDate":"2024-03-22"},{"lineNumber":33,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":34,"author":{"gitId":"modembcc"},"content":" public ShowProjectCommand(String targetName) {","lastModifiedDate":"2024-03-22"},{"lineNumber":35,"author":{"gitId":"modembcc"},"content":" this.targetName \u003d targetName;","lastModifiedDate":"2024-03-22"},{"lineNumber":36,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":37,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":38,"author":{"gitId":"modembcc"},"content":" @Override","lastModifiedDate":"2024-03-22"},{"lineNumber":39,"author":{"gitId":"modembcc"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-22"},{"lineNumber":40,"author":{"gitId":"modembcc"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-22"},{"lineNumber":41,"author":{"gitId":"modembcc"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-03-22"},{"lineNumber":42,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":43,"author":{"gitId":"modembcc"},"content":" Person targetProject \u003d new Person(new Name(targetName));","lastModifiedDate":"2024-03-22"},{"lineNumber":44,"author":{"gitId":"modembcc"},"content":" Person projectToDelete \u003d null;","lastModifiedDate":"2024-03-22"},{"lineNumber":45,"author":{"gitId":"modembcc"},"content":" for (Person person : lastShownList) {","lastModifiedDate":"2024-03-22"},{"lineNumber":46,"author":{"gitId":"modembcc"},"content":" if (person.isSamePerson(targetProject)) {","lastModifiedDate":"2024-03-22"},{"lineNumber":47,"author":{"gitId":"modembcc"},"content":" projectToDelete \u003d person;","lastModifiedDate":"2024-03-22"},{"lineNumber":48,"author":{"gitId":"modembcc"},"content":" break;","lastModifiedDate":"2024-03-22"},{"lineNumber":49,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":50,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":51,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":52,"author":{"gitId":"modembcc"},"content":" if (projectToDelete \u003d\u003d null) {","lastModifiedDate":"2024-03-22"},{"lineNumber":53,"author":{"gitId":"ananya21"},"content":" throw new CommandException(String.format(","lastModifiedDate":"2024-03-22"},{"lineNumber":54,"author":{"gitId":"ananya21"},"content":" MESSAGE_PROJECT_NOT_FOUND,","lastModifiedDate":"2024-03-22"},{"lineNumber":55,"author":{"gitId":"ananya21"},"content":" Messages.format(targetProject)));","lastModifiedDate":"2024-03-22"},{"lineNumber":56,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":57,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":58,"author":{"gitId":"modembcc"},"content":" model.updateCurrentProject(new NameEqualsPredicate(projectToDelete.getName().fullName));","lastModifiedDate":"2024-03-22"},{"lineNumber":59,"author":{"gitId":"ananya21"},"content":" return new CommandResult(String.format(MESSAGE_SHOW_PROJECT_SUCCESS, Messages.format(projectToDelete)));","lastModifiedDate":"2024-03-22"},{"lineNumber":60,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":61,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":62,"author":{"gitId":"modembcc"},"content":" @Override","lastModifiedDate":"2024-03-22"},{"lineNumber":63,"author":{"gitId":"modembcc"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-22"},{"lineNumber":64,"author":{"gitId":"modembcc"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-22"},{"lineNumber":65,"author":{"gitId":"modembcc"},"content":" return true;","lastModifiedDate":"2024-03-22"},{"lineNumber":66,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":67,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":68,"author":{"gitId":"modembcc"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-22"},{"lineNumber":69,"author":{"gitId":"modembcc"},"content":" if (!(other instanceof ShowProjectCommand)) {","lastModifiedDate":"2024-03-22"},{"lineNumber":70,"author":{"gitId":"modembcc"},"content":" return false;","lastModifiedDate":"2024-03-22"},{"lineNumber":71,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":72,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":73,"author":{"gitId":"modembcc"},"content":" ShowProjectCommand otherDeleteCommand \u003d (ShowProjectCommand) other;","lastModifiedDate":"2024-03-22"},{"lineNumber":74,"author":{"gitId":"modembcc"},"content":" return targetName.equals(otherDeleteCommand.targetName);","lastModifiedDate":"2024-03-22"},{"lineNumber":75,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":76,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":77,"author":{"gitId":"modembcc"},"content":" @Override","lastModifiedDate":"2024-03-22"},{"lineNumber":78,"author":{"gitId":"modembcc"},"content":" public String toString() {","lastModifiedDate":"2024-03-22"},{"lineNumber":79,"author":{"gitId":"modembcc"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-22"},{"lineNumber":80,"author":{"gitId":"modembcc"},"content":" .add(\"targetName\", targetName)","lastModifiedDate":"2024-03-22"},{"lineNumber":81,"author":{"gitId":"modembcc"},"content":" .toString();","lastModifiedDate":"2024-03-22"},{"lineNumber":82,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":83,"author":{"gitId":"modembcc"},"content":"}","lastModifiedDate":"2024-03-22"}],"authorContributionMap":{"modembcc":75,"ananya21":8}},{"path":"src/main/java/seedu/address/logic/parser/AddProjectCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-02-29"},{"lineNumber":2,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":3,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-06"},{"lineNumber":4,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":5,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import seedu.address.logic.commands.AddProjectCommand;","lastModifiedDate":"2024-02-29"},{"lineNumber":6,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-02-29"},{"lineNumber":7,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-02-29"},{"lineNumber":8,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-02-29"},{"lineNumber":9,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":10,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":11,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"/**","lastModifiedDate":"2024-02-29"},{"lineNumber":12,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2024-02-29"},{"lineNumber":13,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" */","lastModifiedDate":"2024-02-29"},{"lineNumber":14,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"public class AddProjectCommandParser implements Parser\u003cAddProjectCommand\u003e {","lastModifiedDate":"2024-02-29"},{"lineNumber":15,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":16,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" /**","lastModifiedDate":"2024-02-29"},{"lineNumber":17,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2024-02-29"},{"lineNumber":18,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2024-02-29"},{"lineNumber":19,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-02-29"},{"lineNumber":20,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" */","lastModifiedDate":"2024-02-29"},{"lineNumber":21,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public AddProjectCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-02-29"},{"lineNumber":22,"author":{"gitId":"ananya21"},"content":" try {","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" String projectName \u003d args;","lastModifiedDate":"2024-02-29"},{"lineNumber":24,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" if (projectName.length() \u003d\u003d 0) {","lastModifiedDate":"2024-03-06"},{"lineNumber":25,"author":{"gitId":"ananya21"},"content":" throw new ParseException(\"Please enter the project field.\");","lastModifiedDate":"2024-03-22"},{"lineNumber":26,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":27,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" Name name \u003d ParserUtil.parseName(projectName);","lastModifiedDate":"2024-02-29"},{"lineNumber":28,"author":{"gitId":"modembcc"},"content":" Person person \u003d new Person(name);","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return new AddProjectCommand(person);","lastModifiedDate":"2024-02-29"},{"lineNumber":30,"author":{"gitId":"ananya21"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-03-22"},{"lineNumber":31,"author":{"gitId":"ananya21"},"content":" throw new ParseException(String.format(","lastModifiedDate":"2024-03-22"},{"lineNumber":32,"author":{"gitId":"ananya21"},"content":" MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-22"},{"lineNumber":33,"author":{"gitId":"ananya21"},"content":" AddProjectCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-22"},{"lineNumber":34,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":35,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-02-29"},{"lineNumber":36,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"}","lastModifiedDate":"2024-02-29"}],"authorContributionMap":{"modembcc":1,"Lin-Shuang-Shuang":28,"ananya21":7}},{"path":"src/main/java/seedu/address/logic/parser/AddTaskCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ananya21"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-15"},{"lineNumber":2,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":3,"author":{"gitId":"ananya21"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-15"},{"lineNumber":4,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":5,"author":{"gitId":"ananya21"},"content":"import seedu.address.logic.commands.AddTaskCommand;","lastModifiedDate":"2024-03-15"},{"lineNumber":6,"author":{"gitId":"ananya21"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-15"},{"lineNumber":7,"author":{"gitId":"ananya21"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-15"},{"lineNumber":8,"author":{"gitId":"ananya21"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-15"},{"lineNumber":9,"author":{"gitId":"ananya21"},"content":"import seedu.address.model.project.Task;","lastModifiedDate":"2024-03-15"},{"lineNumber":10,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":11,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":12,"author":{"gitId":"ananya21"},"content":"/**","lastModifiedDate":"2024-03-15"},{"lineNumber":13,"author":{"gitId":"ananya21"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2024-03-15"},{"lineNumber":14,"author":{"gitId":"ananya21"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":15,"author":{"gitId":"ananya21"},"content":"public class AddTaskCommandParser implements Parser\u003cAddTaskCommand\u003e {","lastModifiedDate":"2024-03-15"},{"lineNumber":16,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":17,"author":{"gitId":"ananya21"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":18,"author":{"gitId":"ananya21"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2024-03-15"},{"lineNumber":19,"author":{"gitId":"ananya21"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2024-03-15"},{"lineNumber":20,"author":{"gitId":"ananya21"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-15"},{"lineNumber":21,"author":{"gitId":"ananya21"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":22,"author":{"gitId":"ananya21"},"content":" public AddTaskCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-15"},{"lineNumber":23,"author":{"gitId":"modembcc"},"content":" try {","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"ananya21"},"content":" if (!args.contains(\" /to \")) { // Check if the input correctly uses \"/to\"","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"ananya21"},"content":" throw new ParseException(\"Whoops! When referring to another field like a project,\"","lastModifiedDate":"2024-03-22"},{"lineNumber":26,"author":{"gitId":"ananya21"},"content":" + \" always remember to put /to instead of just to. \");","lastModifiedDate":"2024-03-22"},{"lineNumber":27,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":28,"author":{"gitId":"modembcc"},"content":" String taskName \u003d args.split(\" /to\")[0];","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"modembcc"},"content":" String projectName \u003d args.split(\"/to \")[1];","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"ananya21"},"content":" if ((taskName.length() \u003d\u003d 0) || (projectName.length() \u003d\u003d 0)) {","lastModifiedDate":"2024-03-22"},{"lineNumber":31,"author":{"gitId":"ananya21"},"content":" throw new ParseException(\"Please enter the task and project fields\");","lastModifiedDate":"2024-03-22"},{"lineNumber":32,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":33,"author":{"gitId":"ananya21"},"content":" Task task \u003d new Task(taskName);","lastModifiedDate":"2024-03-22"},{"lineNumber":34,"author":{"gitId":"ananya21"},"content":" Name name \u003d ParserUtil.parseName(projectName);","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"modembcc"},"content":" Person person \u003d new Person(name);","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"ananya21"},"content":" return new AddTaskCommand(task, person);","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"modembcc"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"modembcc"},"content":" throw new ParseException(String.format(","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"modembcc"},"content":" MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"modembcc"},"content":" AddTaskCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":43,"author":{"gitId":"ananya21"},"content":"}","lastModifiedDate":"2024-03-15"}],"authorContributionMap":{"modembcc":9,"ananya21":34}},{"path":"src/main/java/seedu/address/logic/parser/AddressBookParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-07-29"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-07-29"},{"lineNumber":11,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import seedu.address.logic.commands.AddProjectCommand;","lastModifiedDate":"2024-02-29"},{"lineNumber":12,"author":{"gitId":"ananya21"},"content":"import seedu.address.logic.commands.AddTaskCommand;","lastModifiedDate":"2024-03-15"},{"lineNumber":13,"author":{"gitId":"ananya21"},"content":"import seedu.address.logic.commands.AssignPersonCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2017-01-18"},{"lineNumber":16,"author":{"gitId":"modembcc"},"content":"import seedu.address.logic.commands.DeleteProjectCommand;","lastModifiedDate":"2024-03-15"},{"lineNumber":17,"author":{"gitId":"modembcc"},"content":"import seedu.address.logic.commands.DeleteTaskCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":23,"author":{"gitId":"ananya21"},"content":"import seedu.address.logic.commands.SetDeadlineCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"ananya21"},"content":"import seedu.address.logic.commands.SetStatusCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"modembcc"},"content":"import seedu.address.logic.commands.ShowProjectCommand;","lastModifiedDate":"2024-03-22"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(","lastModifiedDate":"2024-03-05"},{"lineNumber":37,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" \"(?\u003ccommandWord\u003e[^\\\\s]+\\\\s[^\\\\s]+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2024-03-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":48,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":49,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" if (userInput.length() \u003d\u003d 0) {","lastModifiedDate":"2024-03-06"},{"lineNumber":50,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-06"},{"lineNumber":51,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":52,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24"},{"lineNumber":54,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" throw new ParseException(String.format(MESSAGE_UNKNOWN_COMMAND, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-06"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":62,"author":{"gitId":"-"},"content":" // Note to developers: Change the log level in config.json to enable lower level (i.e., FINE, FINER and lower)","lastModifiedDate":"2023-07-29"},{"lineNumber":63,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29"},{"lineNumber":64,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29"},{"lineNumber":65,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"ananya21"},"content":" case AssignPersonCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"ananya21"},"content":" return new AssignPersonCommandParser().parse(arguments);","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"ananya21"},"content":" case SetStatusCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"ananya21"},"content":" return new SetStatusCommandParser().parse(arguments);","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":75,"author":{"gitId":"modembcc"},"content":" case ShowProjectCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-22"},{"lineNumber":76,"author":{"gitId":"modembcc"},"content":" return new ShowProjectCommandParser().parse(arguments);","lastModifiedDate":"2024-03-22"},{"lineNumber":77,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":78,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" case AddProjectCommand.COMMAND_WORD:","lastModifiedDate":"2024-02-29"},{"lineNumber":79,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return new AddProjectCommandParser().parse(arguments);","lastModifiedDate":"2024-02-29"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":81,"author":{"gitId":"ananya21"},"content":" case AddTaskCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-15"},{"lineNumber":82,"author":{"gitId":"modembcc"},"content":" return new AddTaskCommandParser().parse(arguments.trim());","lastModifiedDate":"2024-03-19"},{"lineNumber":83,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":84,"author":{"gitId":"modembcc"},"content":" case DeleteProjectCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-15"},{"lineNumber":85,"author":{"gitId":"modembcc"},"content":" return new DeleteProjectCommandParser().parse(arguments);","lastModifiedDate":"2024-03-15"},{"lineNumber":86,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":87,"author":{"gitId":"ThitipatC"},"content":" case DeleteTaskCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-18"},{"lineNumber":88,"author":{"gitId":"modembcc"},"content":" return new DeleteTaskCommandParser().parse(arguments.trim());","lastModifiedDate":"2024-03-19"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21"},{"lineNumber":91,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":93,"author":{"gitId":"ananya21"},"content":" case SetDeadlineCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-21"},{"lineNumber":94,"author":{"gitId":"ananya21"},"content":" return new SetDeadlineCommandParser().parse(arguments);","lastModifiedDate":"2024-03-21"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":96,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":97,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":99,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":100,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":102,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":103,"author":{"gitId":"-"},"content":" return new ListCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":105,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24"},{"lineNumber":106,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":108,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26"},{"lineNumber":109,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":111,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26"},{"lineNumber":112,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29"},{"lineNumber":113,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":116,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"modembcc":11,"ThitipatC":1,"Lin-Shuang-Shuang":10,"-":78,"ananya21":16}},{"path":"src/main/java/seedu/address/logic/parser/AssignPersonCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ananya21"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"ananya21"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"ananya21"},"content":"import seedu.address.logic.commands.AssignPersonCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"ananya21"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"ananya21"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"ananya21"},"content":"import seedu.address.model.project.Task;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"ananya21"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"ananya21"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"ananya21"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"ananya21"},"content":"public class AssignPersonCommandParser implements Parser\u003cAssignPersonCommand\u003e {","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"ananya21"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"ananya21"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"ananya21"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"ananya21"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"ananya21"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"ananya21"},"content":" public AssignPersonCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"ananya21"},"content":" try {","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"ananya21"},"content":" if (!args.contains(\" /to \") || !args.contains(\" /in \")) {","lastModifiedDate":"2024-03-22"},{"lineNumber":24,"author":{"gitId":"ananya21"},"content":" throw new ParseException(\"Whoops! When referring to another field like a task,\"","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"ananya21"},"content":" + \" always remember to put /to instead of just to.\"","lastModifiedDate":"2024-03-22"},{"lineNumber":26,"author":{"gitId":"ananya21"},"content":" + \" When referring to a project, use /in instead of just in. \");","lastModifiedDate":"2024-03-22"},{"lineNumber":27,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":28,"author":{"gitId":"modembcc"},"content":" String member \u003d args.split(\" /to\")[0].trim();","lastModifiedDate":"2024-03-22"},{"lineNumber":29,"author":{"gitId":"modembcc"},"content":" String taskAndProject \u003d args.split(\" /to\")[1].trim();","lastModifiedDate":"2024-03-22"},{"lineNumber":30,"author":{"gitId":"modembcc"},"content":" String taskName \u003d taskAndProject.split(\"/in \")[0].trim();","lastModifiedDate":"2024-03-22"},{"lineNumber":31,"author":{"gitId":"modembcc"},"content":" String projectName \u003d taskAndProject.split(\"/in \")[1].trim();","lastModifiedDate":"2024-03-22"},{"lineNumber":32,"author":{"gitId":"ananya21"},"content":" if ((taskName.length() \u003d\u003d 0) || (projectName.length() \u003d\u003d 0) || (member.length() \u003d\u003d 0)) {","lastModifiedDate":"2024-03-22"},{"lineNumber":33,"author":{"gitId":"ananya21"},"content":" throw new ParseException(\"Please enter the task, project and member fields\");","lastModifiedDate":"2024-03-22"},{"lineNumber":34,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"ananya21"},"content":" Person project \u003d new Person(ParserUtil.parseName(projectName));","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"ananya21"},"content":" Task newTask \u003d new Task(taskName);","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"ananya21"},"content":" return new AssignPersonCommand(member, newTask, project);","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"ananya21"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-03-22"},{"lineNumber":39,"author":{"gitId":"ananya21"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-22"},{"lineNumber":40,"author":{"gitId":"ananya21"},"content":" AssignPersonCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-22"},{"lineNumber":41,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":42,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"ananya21"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"modembcc":4,"ananya21":39}},{"path":"src/main/java/seedu/address/logic/parser/DeleteProjectCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":5,"author":{"gitId":"modembcc"},"content":"import seedu.address.logic.commands.DeleteProjectCommand;","lastModifiedDate":"2024-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new DeleteCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":11,"author":{"gitId":"modembcc"},"content":"public class DeleteProjectCommandParser implements Parser\u003cDeleteProjectCommand\u003e {","lastModifiedDate":"2024-03-15"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the DeleteCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * and returns a DeleteCommand object for execution.","lastModifiedDate":"2019-05-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":18,"author":{"gitId":"modembcc"},"content":" public DeleteProjectCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-15"},{"lineNumber":19,"author":{"gitId":"ananya21"},"content":" try {","lastModifiedDate":"2024-03-22"},{"lineNumber":20,"author":{"gitId":"modembcc"},"content":" args \u003d args.trim();","lastModifiedDate":"2024-03-15"},{"lineNumber":21,"author":{"gitId":"modembcc"},"content":" if (args.length() \u003d\u003d 0) {","lastModifiedDate":"2024-03-15"},{"lineNumber":22,"author":{"gitId":"ananya21"},"content":" throw new ParseException(\"Please enter the project field.\");","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":24,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":25,"author":{"gitId":"modembcc"},"content":" System.out.println(args);","lastModifiedDate":"2024-03-15"},{"lineNumber":26,"author":{"gitId":"modembcc"},"content":" return new DeleteProjectCommand(args);","lastModifiedDate":"2024-03-15"},{"lineNumber":27,"author":{"gitId":"ananya21"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-03-22"},{"lineNumber":28,"author":{"gitId":"ananya21"},"content":" throw new ParseException(String.format(","lastModifiedDate":"2024-03-22"},{"lineNumber":29,"author":{"gitId":"ananya21"},"content":" MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-22"},{"lineNumber":30,"author":{"gitId":"ananya21"},"content":" DeleteProjectCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-22"},{"lineNumber":31,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"modembcc":8,"-":19,"ananya21":7}},{"path":"src/main/java/seedu/address/logic/parser/DeleteTaskCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ThitipatC"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"ThitipatC"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"ThitipatC"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"ThitipatC"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"ThitipatC"},"content":"import seedu.address.logic.commands.AddTaskCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"modembcc"},"content":"import seedu.address.logic.commands.DeleteTaskCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"ThitipatC"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"ThitipatC"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"ThitipatC"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"ThitipatC"},"content":"import seedu.address.model.project.Task;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"ThitipatC"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"ThitipatC"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"ThitipatC"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"ThitipatC"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"ThitipatC"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"ThitipatC"},"content":"public class DeleteTaskCommandParser implements Parser\u003cDeleteTaskCommand\u003e {","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"ThitipatC"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"ThitipatC"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"ThitipatC"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"ThitipatC"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"ThitipatC"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"ThitipatC"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"ThitipatC"},"content":" public DeleteTaskCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"modembcc"},"content":" try {","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"ananya21"},"content":" if (!args.contains(\" /in \")) {","lastModifiedDate":"2024-03-22"},{"lineNumber":26,"author":{"gitId":"ananya21"},"content":" throw new ParseException(\"Whoops! When referring to another field like a project,\"","lastModifiedDate":"2024-03-22"},{"lineNumber":27,"author":{"gitId":"ananya21"},"content":" + \" always remember to put /in instead of just in.\");","lastModifiedDate":"2024-03-22"},{"lineNumber":28,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":29,"author":{"gitId":"modembcc"},"content":" String taskName \u003d args.split(\" /in\")[0];","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"modembcc"},"content":" String projectName \u003d args.split(\"/in \")[1];","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"ThitipatC"},"content":" Task task \u003d new Task(taskName);","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"ananya21"},"content":" if ((taskName.length() \u003d\u003d 0) || (projectName.length() \u003d\u003d 0)) {","lastModifiedDate":"2024-03-22"},{"lineNumber":33,"author":{"gitId":"ananya21"},"content":" throw new ParseException(\"Please enter the project and the task field\");","lastModifiedDate":"2024-03-22"},{"lineNumber":34,"author":{"gitId":"ThitipatC"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"ThitipatC"},"content":" Name name \u003d ParserUtil.parseName(projectName);","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"modembcc"},"content":" Person person \u003d new Person(name);","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"ThitipatC"},"content":" return new DeleteTaskCommand(task, person);","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"modembcc"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"modembcc"},"content":" throw new ParseException(String.format(","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"modembcc"},"content":" MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"modembcc"},"content":" AddTaskCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"ThitipatC"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"ThitipatC"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"modembcc":10,"ThitipatC":28,"ananya21":6}},{"path":"src/main/java/seedu/address/logic/parser/SetDeadlineCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ananya21"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"ananya21"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"ananya21"},"content":"import seedu.address.logic.commands.SetDeadlineCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"ananya21"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"ananya21"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"ananya21"},"content":"import seedu.address.model.project.Task;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"ananya21"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"ananya21"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"ananya21"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"ananya21"},"content":"public class SetDeadlineCommandParser implements Parser\u003cSetDeadlineCommand\u003e {","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"ananya21"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"ananya21"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"ananya21"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"ananya21"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"ananya21"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"ananya21"},"content":" public SetDeadlineCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"ananya21"},"content":" try {","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"ananya21"},"content":" if (!args.contains(\" /in \") || !args.contains(\" /to \")) {","lastModifiedDate":"2024-03-22"},{"lineNumber":24,"author":{"gitId":"ananya21"},"content":" throw new ParseException(\"Whoops! When referring to another field like a task,\"","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"ananya21"},"content":" + \" always remember to put /to instead of just to.\"","lastModifiedDate":"2024-03-22"},{"lineNumber":26,"author":{"gitId":"ananya21"},"content":" + \"For projects, put /in instead of just in. \");","lastModifiedDate":"2024-03-22"},{"lineNumber":27,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":28,"author":{"gitId":"modembcc"},"content":" String deadline \u003d args.split(\" /to\")[0].trim();","lastModifiedDate":"2024-03-22"},{"lineNumber":29,"author":{"gitId":"modembcc"},"content":" String taskAndProject \u003d args.split(\" /to\")[1].trim();","lastModifiedDate":"2024-03-22"},{"lineNumber":30,"author":{"gitId":"modembcc"},"content":" String taskName \u003d taskAndProject.split(\"/in \")[0].trim();","lastModifiedDate":"2024-03-22"},{"lineNumber":31,"author":{"gitId":"modembcc"},"content":" String projectName \u003d taskAndProject.split(\"/in \")[1];","lastModifiedDate":"2024-03-22"},{"lineNumber":32,"author":{"gitId":"ananya21"},"content":" if ((projectName.length() \u003d\u003d 0) || (taskName.length() \u003d\u003d 0)) {","lastModifiedDate":"2024-03-22"},{"lineNumber":33,"author":{"gitId":"ananya21"},"content":" throw new ParseException(\"Please enter the project and task fields\");","lastModifiedDate":"2024-03-22"},{"lineNumber":34,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"ananya21"},"content":" Person project \u003d new Person(ParserUtil.parseName(projectName));","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"ananya21"},"content":" Task newTask \u003d new Task(taskName);","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"ananya21"},"content":" return new SetDeadlineCommand(deadline, newTask, project);","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"ananya21"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-03-22"},{"lineNumber":39,"author":{"gitId":"ananya21"},"content":" throw new ParseException(String.format(","lastModifiedDate":"2024-03-22"},{"lineNumber":40,"author":{"gitId":"ananya21"},"content":" MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-22"},{"lineNumber":41,"author":{"gitId":"ananya21"},"content":" SetDeadlineCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-22"},{"lineNumber":42,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":43,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"ananya21"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"modembcc":4,"ananya21":40}},{"path":"src/main/java/seedu/address/logic/parser/SetStatusCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ananya21"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"ananya21"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"ananya21"},"content":"import seedu.address.logic.commands.SetStatusCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"ananya21"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"ananya21"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"ananya21"},"content":"import seedu.address.model.project.Task;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"ananya21"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"ananya21"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"ananya21"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"ananya21"},"content":"public class SetStatusCommandParser implements Parser\u003cSetStatusCommand\u003e {","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"ananya21"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"ananya21"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"ananya21"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"ananya21"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"ananya21"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"ananya21"},"content":" public SetStatusCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"ananya21"},"content":" try {","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"ananya21"},"content":" if (!args.contains(\" /in \") || !args.contains(\" /to \")) {","lastModifiedDate":"2024-03-22"},{"lineNumber":24,"author":{"gitId":"ananya21"},"content":" throw new ParseException(\"Whoops! When referring to another field like a task,\"","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"ananya21"},"content":" + \" always remember to put /to instead of just to.\"","lastModifiedDate":"2024-03-22"},{"lineNumber":26,"author":{"gitId":"ananya21"},"content":" + \"For projects, put /in instead of just in. \");","lastModifiedDate":"2024-03-22"},{"lineNumber":27,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":28,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":29,"author":{"gitId":"modembcc"},"content":" String status \u003d args.split(\" /to\")[0].trim();","lastModifiedDate":"2024-03-22"},{"lineNumber":30,"author":{"gitId":"modembcc"},"content":" String taskAndProject \u003d args.split(\" /to\")[1].trim();","lastModifiedDate":"2024-03-22"},{"lineNumber":31,"author":{"gitId":"modembcc"},"content":" String taskName \u003d taskAndProject.split(\"/in \")[0].trim();","lastModifiedDate":"2024-03-22"},{"lineNumber":32,"author":{"gitId":"modembcc"},"content":" String projectName \u003d taskAndProject.split(\"/in \")[1];","lastModifiedDate":"2024-03-22"},{"lineNumber":33,"author":{"gitId":"ananya21"},"content":" if ((projectName.length() \u003d\u003d 0) || (taskName.length() \u003d\u003d 0) || (status.length() \u003d\u003d 0)) {","lastModifiedDate":"2024-03-22"},{"lineNumber":34,"author":{"gitId":"ananya21"},"content":" throw new ParseException(\"Please enter the status, project and task fields\");","lastModifiedDate":"2024-03-22"},{"lineNumber":35,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"ananya21"},"content":" Person project \u003d new Person(ParserUtil.parseName(projectName));","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"ananya21"},"content":" Task newTask \u003d new Task(taskName);","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"ananya21"},"content":" return new SetStatusCommand(status, newTask, project);","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"ananya21"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-03-22"},{"lineNumber":40,"author":{"gitId":"ananya21"},"content":" throw new ParseException(String.format(","lastModifiedDate":"2024-03-22"},{"lineNumber":41,"author":{"gitId":"ananya21"},"content":" MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-22"},{"lineNumber":42,"author":{"gitId":"ananya21"},"content":" SetStatusCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-22"},{"lineNumber":43,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":44,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"ananya21"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"modembcc":4,"ananya21":41}},{"path":"src/main/java/seedu/address/logic/parser/ShowProjectCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"modembcc"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":3,"author":{"gitId":"modembcc"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-22"},{"lineNumber":4,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":5,"author":{"gitId":"modembcc"},"content":"import seedu.address.logic.commands.ShowProjectCommand;","lastModifiedDate":"2024-03-22"},{"lineNumber":6,"author":{"gitId":"modembcc"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-22"},{"lineNumber":7,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":8,"author":{"gitId":"modembcc"},"content":"/**","lastModifiedDate":"2024-03-22"},{"lineNumber":9,"author":{"gitId":"modembcc"},"content":" * Parses input arguments and creates a new DeleteCommand object","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"modembcc"},"content":" */","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"modembcc"},"content":"public class ShowProjectCommandParser implements Parser\u003cShowProjectCommand\u003e {","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"modembcc"},"content":" /**","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"modembcc"},"content":" * Parses the given {@code String} of arguments in the context of the DeleteCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":15,"author":{"gitId":"modembcc"},"content":" * and returns a DeleteCommand object for execution.","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"modembcc"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-22"},{"lineNumber":17,"author":{"gitId":"modembcc"},"content":" */","lastModifiedDate":"2024-03-22"},{"lineNumber":18,"author":{"gitId":"modembcc"},"content":" public ShowProjectCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"author":{"gitId":"ananya21"},"content":" try {","lastModifiedDate":"2024-03-22"},{"lineNumber":20,"author":{"gitId":"modembcc"},"content":" args \u003d args.trim();","lastModifiedDate":"2024-03-22"},{"lineNumber":21,"author":{"gitId":"modembcc"},"content":" if (args.length() \u003d\u003d 0) {","lastModifiedDate":"2024-03-22"},{"lineNumber":22,"author":{"gitId":"ananya21"},"content":" throw new ParseException(\"Please enter the project field\");","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":24,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"modembcc"},"content":" System.out.println(args);","lastModifiedDate":"2024-03-22"},{"lineNumber":26,"author":{"gitId":"modembcc"},"content":" return new ShowProjectCommand(args);","lastModifiedDate":"2024-03-22"},{"lineNumber":27,"author":{"gitId":"ananya21"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-03-22"},{"lineNumber":28,"author":{"gitId":"ananya21"},"content":" throw new ParseException(String.format(","lastModifiedDate":"2024-03-22"},{"lineNumber":29,"author":{"gitId":"ananya21"},"content":" MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-22"},{"lineNumber":30,"author":{"gitId":"ananya21"},"content":" ShowProjectCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-22"},{"lineNumber":31,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":32,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":33,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":34,"author":{"gitId":"modembcc"},"content":"}","lastModifiedDate":"2024-03-22"}],"authorContributionMap":{"modembcc":27,"ananya21":7}},{"path":"src/main/java/seedu/address/model/AddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"ananya21"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.UniquePersonList;","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Wraps all data at the address-book level","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Duplicates are not allowed (by .isSamePerson comparison)","lastModifiedDate":"2018-04-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class AddressBook implements ReadOnlyAddressBook {","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private final UniquePersonList persons;","lastModifiedDate":"2016-08-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-19"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * The \u0027unusual\u0027 code block below is a non-static initialization block, sometimes used to avoid duplication","lastModifiedDate":"2019-05-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * between constructors. See https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html","lastModifiedDate":"2016-10-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Note that non-static init blocks are not recommended to use. There are other ways to avoid duplication","lastModifiedDate":"2016-10-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * among constructors.","lastModifiedDate":"2016-10-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" {","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" persons \u003d new UniquePersonList();","lastModifiedDate":"2016-08-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public AddressBook() {}","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Creates an AddressBook using the Persons in the {@code toBeCopied}","lastModifiedDate":"2018-03-29"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public AddressBook(ReadOnlyAddressBook toBeCopied) {","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" this();","lastModifiedDate":"2016-12-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" resetData(toBeCopied);","lastModifiedDate":"2016-12-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":42,"author":{"gitId":"-"},"content":" //// list overwrite operations","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * Replaces the contents of the person list with {@code persons}.","lastModifiedDate":"2018-08-07"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * {@code persons} must not contain duplicate persons.","lastModifiedDate":"2018-08-07"},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void setPersons(List\u003cPerson\u003e persons) {","lastModifiedDate":"2018-08-07"},{"lineNumber":49,"author":{"gitId":"-"},"content":" this.persons.setPersons(persons);","lastModifiedDate":"2016-10-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Resets the existing data of this {@code AddressBook} with {@code newData}.","lastModifiedDate":"2017-08-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void resetData(ReadOnlyAddressBook newData) {","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" requireNonNull(newData);","lastModifiedDate":"2017-05-15"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" setPersons(newData.getPersonList());","lastModifiedDate":"2018-03-29"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" //// person-level operations","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Returns true if a person with the same identity as {@code person} exists in the address book.","lastModifiedDate":"2018-08-06"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06"},{"lineNumber":67,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return persons.contains(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":71,"author":{"gitId":"modembcc"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"modembcc"},"content":" * Returns the person object with the matching name in the addressbook","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"modembcc"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"ananya21"},"content":" public Person findPerson(Name name) {","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"ananya21"},"content":" requireNonNull(name);","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"ananya21"},"content":" return persons.findPerson(name);","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-09-21"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * The person must not already exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":82,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void addPerson(Person p) {","lastModifiedDate":"2018-08-07"},{"lineNumber":84,"author":{"gitId":"-"},"content":" persons.add(p);","lastModifiedDate":"2018-03-29"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":87,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * Replaces the given person {@code target} in the list with {@code editedPerson}.","lastModifiedDate":"2018-01-10"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * The person identity of {@code editedPerson} must not be the same as another existing person in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":93,"author":{"gitId":"-"},"content":" requireNonNull(editedPerson);","lastModifiedDate":"2018-01-10"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" persons.setPerson(target, editedPerson);","lastModifiedDate":"2018-03-29"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":98,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * Removes {@code key} from this {@code AddressBook}.","lastModifiedDate":"2017-08-16"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * {@code key} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":101,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":102,"author":{"gitId":"-"},"content":" public void removePerson(Person key) {","lastModifiedDate":"2018-08-07"},{"lineNumber":103,"author":{"gitId":"-"},"content":" persons.remove(key);","lastModifiedDate":"2018-02-28"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":" //// util methods","lastModifiedDate":"2016-08-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":109,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-08"},{"lineNumber":110,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":" .add(\"persons\", persons)","lastModifiedDate":"2019-02-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":117,"author":{"gitId":"-"},"content":" return persons.asUnmodifiableObservableList();","lastModifiedDate":"2018-04-05"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-01"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-01"},{"lineNumber":120,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":121,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-21"},{"lineNumber":122,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":123,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":126,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":127,"author":{"gitId":"-"},"content":" if (!(other instanceof AddressBook)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":128,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":131,"author":{"gitId":"-"},"content":" AddressBook otherAddressBook \u003d (AddressBook) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":132,"author":{"gitId":"-"},"content":" return persons.equals(otherAddressBook.persons);","lastModifiedDate":"2023-07-13"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":136,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-21"},{"lineNumber":137,"author":{"gitId":"-"},"content":" return persons.hashCode();","lastModifiedDate":"2018-03-29"},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":139,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"modembcc":3,"-":130,"ananya21":6}},{"path":"src/main/java/seedu/address/model/Model.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":8,"author":{"gitId":"ananya21"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * The API of the Model component.","lastModifiedDate":"2016-09-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public interface Model {","lastModifiedDate":"2016-09-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":" /** {@code Predicate} that always evaluate to true */","lastModifiedDate":"2017-08-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":" Predicate\u003cPerson\u003e PREDICATE_SHOW_ALL_PERSONS \u003d unused -\u003e true;","lastModifiedDate":"2018-01-10"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Replaces user prefs data with the data in {@code userPrefs}.","lastModifiedDate":"2018-12-06"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":" void setUserPrefs(ReadOnlyUserPrefs userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Returns the user prefs.","lastModifiedDate":"2018-11-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" ReadOnlyUserPrefs getUserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" void setAddressBookFilePath(Path addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Replaces address book data with the data in {@code addressBook}.","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" void setAddressBook(ReadOnlyAddressBook addressBook);","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":" /** Returns the AddressBook */","lastModifiedDate":"2016-09-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2016-09-25"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Returns true if a person with the same identity as {@code person} exists in the address book.","lastModifiedDate":"2018-08-06"},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":59,"author":{"gitId":"-"},"content":" boolean hasPerson(Person person);","lastModifiedDate":"2018-08-06"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Deletes the given person.","lastModifiedDate":"2018-08-07"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * The person must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":65,"author":{"gitId":"-"},"content":" void deletePerson(Person target);","lastModifiedDate":"2018-08-07"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":67,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":68,"author":{"gitId":"-"},"content":" * Adds the given person.","lastModifiedDate":"2018-08-07"},{"lineNumber":69,"author":{"gitId":"-"},"content":" * {@code person} must not already exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":70,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":71,"author":{"gitId":"-"},"content":" void addPerson(Person person);","lastModifiedDate":"2018-08-07"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":73,"author":{"gitId":"ananya21"},"content":" Person findPerson(Name name);","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" * Replaces the given person {@code target} with {@code editedPerson}.","lastModifiedDate":"2017-06-07"},{"lineNumber":77,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * The person identity of {@code editedPerson} must not be the same as another existing person in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":79,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" void setPerson(Person target, Person editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" /** Returns an unmodifiable view of the filtered person list */","lastModifiedDate":"2017-09-01"},{"lineNumber":83,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":85,"author":{"gitId":"modembcc"},"content":" /** Returns an unmodifiable view of the filtered person list */","lastModifiedDate":"2024-03-22"},{"lineNumber":86,"author":{"gitId":"modembcc"},"content":" ObservableList\u003cPerson\u003e getCurrentProject();","lastModifiedDate":"2024-03-22"},{"lineNumber":87,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":88,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-05"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * Updates the filter of the filtered person list to filter by the given {@code predicate}.","lastModifiedDate":"2017-08-05"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2017-08-05"},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05"},{"lineNumber":92,"author":{"gitId":"-"},"content":" void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate);","lastModifiedDate":"2018-01-10"},{"lineNumber":93,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":94,"author":{"gitId":"modembcc"},"content":" /**","lastModifiedDate":"2024-03-22"},{"lineNumber":95,"author":{"gitId":"modembcc"},"content":" * Updates the filter of the current project to change the current project by the given {@code predicate}.","lastModifiedDate":"2024-03-22"},{"lineNumber":96,"author":{"gitId":"modembcc"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2024-03-22"},{"lineNumber":97,"author":{"gitId":"modembcc"},"content":" */","lastModifiedDate":"2024-03-22"},{"lineNumber":98,"author":{"gitId":"modembcc"},"content":" void updateCurrentProject(Predicate\u003cPerson\u003e predicate);","lastModifiedDate":"2024-03-22"},{"lineNumber":99,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"modembcc":9,"-":87,"ananya21":3}},{"path":"src/main/java/seedu/address/model/ModelManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-08-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2016-08-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23"},{"lineNumber":14,"author":{"gitId":"ananya21"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"modembcc"},"content":"import seedu.address.model.person.NameEqualsPredicate;","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Represents the in-memory model of the address book data.","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class ModelManager implements Model {","lastModifiedDate":"2018-12-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ModelManager.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final AddressBook addressBook;","lastModifiedDate":"2019-01-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final UserPrefs userPrefs;","lastModifiedDate":"2018-12-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final FilteredList\u003cPerson\u003e filteredPersons;","lastModifiedDate":"2018-01-10"},{"lineNumber":27,"author":{"gitId":"modembcc"},"content":" private final FilteredList\u003cPerson\u003e currentProject;","lastModifiedDate":"2024-03-22"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Initializes a ModelManager with the given addressBook and userPrefs.","lastModifiedDate":"2016-12-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public ModelManager(ReadOnlyAddressBook addressBook, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":" requireAllNonNull(addressBook, userPrefs);","lastModifiedDate":"2017-05-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" logger.fine(\"Initializing with address book: \" + addressBook + \" and user prefs \" + userPrefs);","lastModifiedDate":"2016-12-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" this.addressBook \u003d new AddressBook(addressBook);","lastModifiedDate":"2019-01-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":39,"author":{"gitId":"-"},"content":" filteredPersons \u003d new FilteredList\u003c\u003e(this.addressBook.getPersonList());","lastModifiedDate":"2019-01-25"},{"lineNumber":40,"author":{"gitId":"modembcc"},"content":" if (filteredPersons.size() \u003e 0) {","lastModifiedDate":"2024-03-22"},{"lineNumber":41,"author":{"gitId":"modembcc"},"content":" currentProject \u003d new FilteredList\u003c\u003e(","lastModifiedDate":"2024-03-22"},{"lineNumber":42,"author":{"gitId":"modembcc"},"content":" this.addressBook.getPersonList(),","lastModifiedDate":"2024-03-22"},{"lineNumber":43,"author":{"gitId":"modembcc"},"content":" new NameEqualsPredicate(filteredPersons.get(0).getName().fullName));","lastModifiedDate":"2024-03-22"},{"lineNumber":44,"author":{"gitId":"modembcc"},"content":" } else {","lastModifiedDate":"2024-03-22"},{"lineNumber":45,"author":{"gitId":"modembcc"},"content":" currentProject \u003d new FilteredList\u003c\u003e(this.addressBook.getPersonList());","lastModifiedDate":"2024-03-22"},{"lineNumber":46,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public ModelManager() {","lastModifiedDate":"2016-09-22"},{"lineNumber":50,"author":{"gitId":"-"},"content":" this(new AddressBook(), new UserPrefs());","lastModifiedDate":"2016-09-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d UserPrefs \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":57,"author":{"gitId":"-"},"content":" requireNonNull(userPrefs);","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" this.userPrefs.resetData(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return userPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return userPrefs.getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":" return userPrefs.getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":85,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d AddressBook \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook addressBook) {","lastModifiedDate":"2018-11-27"},{"lineNumber":92,"author":{"gitId":"-"},"content":" this.addressBook.resetData(addressBook);","lastModifiedDate":"2019-01-25"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":96,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2016-09-21"},{"lineNumber":97,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2019-01-25"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":100,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":101,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":102,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":103,"author":{"gitId":"-"},"content":" return addressBook.hasPerson(person);","lastModifiedDate":"2019-01-25"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":106,"author":{"gitId":"ananya21"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":107,"author":{"gitId":"ananya21"},"content":" public Person findPerson(Name name) {","lastModifiedDate":"2024-03-18"},{"lineNumber":108,"author":{"gitId":"ananya21"},"content":" requireNonNull(name);","lastModifiedDate":"2024-03-18"},{"lineNumber":109,"author":{"gitId":"ananya21"},"content":" return addressBook.findPerson(name);","lastModifiedDate":"2024-03-18"},{"lineNumber":110,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":111,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":113,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-15"},{"lineNumber":114,"author":{"gitId":"-"},"content":" addressBook.removePerson(target);","lastModifiedDate":"2019-01-25"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":118,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":119,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2019-01-25"},{"lineNumber":120,"author":{"gitId":"-"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26"},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-13"},{"lineNumber":124,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":125,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2017-06-07"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":127,"author":{"gitId":"-"},"content":" addressBook.setPerson(target, editedPerson);","lastModifiedDate":"2019-01-25"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"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"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":132,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19"},{"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"},{"lineNumber":134,"author":{"gitId":"-"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2018-06-11"},{"lineNumber":135,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19"},{"lineNumber":136,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":137,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":138,"author":{"gitId":"-"},"content":" return filteredPersons;","lastModifiedDate":"2018-12-09"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":141,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":142,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10"},{"lineNumber":143,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05"},{"lineNumber":144,"author":{"gitId":"-"},"content":" filteredPersons.setPredicate(predicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":147,"author":{"gitId":"modembcc"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Current Project Accessors \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-03-22"},{"lineNumber":148,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":149,"author":{"gitId":"modembcc"},"content":" /**","lastModifiedDate":"2024-03-22"},{"lineNumber":150,"author":{"gitId":"modembcc"},"content":" * Returns an unmodifiable view of the list of {@code Person} backed by the internal list of","lastModifiedDate":"2024-03-22"},{"lineNumber":151,"author":{"gitId":"modembcc"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2024-03-22"},{"lineNumber":152,"author":{"gitId":"modembcc"},"content":" */","lastModifiedDate":"2024-03-22"},{"lineNumber":153,"author":{"gitId":"modembcc"},"content":" @Override","lastModifiedDate":"2024-03-22"},{"lineNumber":154,"author":{"gitId":"modembcc"},"content":" public ObservableList\u003cPerson\u003e getCurrentProject() {","lastModifiedDate":"2024-03-22"},{"lineNumber":155,"author":{"gitId":"modembcc"},"content":" return currentProject;","lastModifiedDate":"2024-03-22"},{"lineNumber":156,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":157,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":158,"author":{"gitId":"modembcc"},"content":" @Override","lastModifiedDate":"2024-03-22"},{"lineNumber":159,"author":{"gitId":"modembcc"},"content":" public void updateCurrentProject(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2024-03-22"},{"lineNumber":160,"author":{"gitId":"modembcc"},"content":" requireNonNull(predicate);","lastModifiedDate":"2024-03-22"},{"lineNumber":161,"author":{"gitId":"modembcc"},"content":" currentProject.setPredicate(predicate);","lastModifiedDate":"2024-03-22"},{"lineNumber":162,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":163,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":164,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-31"},{"lineNumber":165,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13"},{"lineNumber":166,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":167,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31"},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":170,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31"},{"lineNumber":171,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":172,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-31"},{"lineNumber":173,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":175,"author":{"gitId":"-"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":176,"author":{"gitId":"-"},"content":" return addressBook.equals(otherModelManager.addressBook)","lastModifiedDate":"2023-07-13"},{"lineNumber":177,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13"},{"lineNumber":178,"author":{"gitId":"modembcc"},"content":" \u0026\u0026 filteredPersons.equals(otherModelManager.filteredPersons)","lastModifiedDate":"2024-03-22"},{"lineNumber":179,"author":{"gitId":"modembcc"},"content":" \u0026\u0026 currentProject.equals(otherModelManager.currentProject);","lastModifiedDate":"2024-03-22"},{"lineNumber":180,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":182,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"modembcc":28,"-":147,"ananya21":7}},{"path":"src/main/java/seedu/address/model/person/NameEqualsPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"modembcc"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":3,"author":{"gitId":"modembcc"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-22"},{"lineNumber":4,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":5,"author":{"gitId":"modembcc"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-22"},{"lineNumber":6,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":7,"author":{"gitId":"modembcc"},"content":"/**","lastModifiedDate":"2024-03-22"},{"lineNumber":8,"author":{"gitId":"modembcc"},"content":" * Tests that a {@code Person}\u0027s {@code Name} matches any of the keywords given.","lastModifiedDate":"2024-03-22"},{"lineNumber":9,"author":{"gitId":"modembcc"},"content":" */","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"modembcc"},"content":"public class NameEqualsPredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"modembcc"},"content":" private final String name;","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"modembcc"},"content":" public NameEqualsPredicate(String name) {","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"modembcc"},"content":" this.name \u003d name;","lastModifiedDate":"2024-03-22"},{"lineNumber":15,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":17,"author":{"gitId":"modembcc"},"content":" @Override","lastModifiedDate":"2024-03-22"},{"lineNumber":18,"author":{"gitId":"modembcc"},"content":" public boolean test(Person person) {","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"author":{"gitId":"modembcc"},"content":" return person.getName().fullName.equals(name);","lastModifiedDate":"2024-03-22"},{"lineNumber":20,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":21,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":22,"author":{"gitId":"modembcc"},"content":" @Override","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"modembcc"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-22"},{"lineNumber":24,"author":{"gitId":"modembcc"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"modembcc"},"content":" return true;","lastModifiedDate":"2024-03-22"},{"lineNumber":26,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":27,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":28,"author":{"gitId":"modembcc"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-22"},{"lineNumber":29,"author":{"gitId":"modembcc"},"content":" if (!(other instanceof NameEqualsPredicate)) {","lastModifiedDate":"2024-03-22"},{"lineNumber":30,"author":{"gitId":"modembcc"},"content":" return false;","lastModifiedDate":"2024-03-22"},{"lineNumber":31,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":32,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":33,"author":{"gitId":"modembcc"},"content":" NameEqualsPredicate otherNameContainsKeywordsPredicate \u003d (NameEqualsPredicate) other;","lastModifiedDate":"2024-03-22"},{"lineNumber":34,"author":{"gitId":"modembcc"},"content":" return name.equals(otherNameContainsKeywordsPredicate.name);","lastModifiedDate":"2024-03-22"},{"lineNumber":35,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":36,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":37,"author":{"gitId":"modembcc"},"content":" @Override","lastModifiedDate":"2024-03-22"},{"lineNumber":38,"author":{"gitId":"modembcc"},"content":" public String toString() {","lastModifiedDate":"2024-03-22"},{"lineNumber":39,"author":{"gitId":"modembcc"},"content":" return new ToStringBuilder(this).add(\"name\", name).toString();","lastModifiedDate":"2024-03-22"},{"lineNumber":40,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":41,"author":{"gitId":"modembcc"},"content":"}","lastModifiedDate":"2024-03-22"}],"authorContributionMap":{"modembcc":41}},{"path":"src/main/java/seedu/address/model/person/Person.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2016-08-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"ananya21"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"ananya21"},"content":"import java.util.List;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"ananya21"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":11,"author":{"gitId":"ananya21"},"content":"import seedu.address.model.project.Task;","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Represents a Person in the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2017-12-20"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class Person {","lastModifiedDate":"2018-01-10"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"ananya21"},"content":" private final List\u003cTask\u003e taskList;","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"modembcc"},"content":" * Constructs a Person object with empty taskList","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public Person(Name name) {","lastModifiedDate":"2024-02-29"},{"lineNumber":28,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" requireAllNonNull(name);","lastModifiedDate":"2024-02-29"},{"lineNumber":29,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20"},{"lineNumber":30,"author":{"gitId":"ananya21"},"content":" List\u003cTask\u003e taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"ananya21"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"modembcc"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"modembcc"},"content":" * Adds task to the Person object","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"modembcc"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"ananya21"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"ananya21"},"content":" taskList.add(task);","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"modembcc"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"modembcc"},"content":" * Removes task from the Person object","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"modembcc"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"ThitipatC"},"content":" public void removeTask(Task task) {","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"ThitipatC"},"content":" int i \u003d 0;","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"ThitipatC"},"content":" for (Task t : taskList) {","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"ThitipatC"},"content":" if (t.equals(task)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"ThitipatC"},"content":" taskList.remove(i);","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"ThitipatC"},"content":" break;","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"ThitipatC"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"ThitipatC"},"content":" i +\u003d 1;","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"ThitipatC"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"ThitipatC"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"ThitipatC"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"ananya21"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"ananya21"},"content":" * @param taskName name to be matched with the tasks listed in my project","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"ananya21"},"content":" * @return task in the project with the matching taskName","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"ananya21"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"ananya21"},"content":" public Task findTask(Name taskName) {","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"ananya21"},"content":" Optional\u003cTask\u003e foundTask \u003d taskList.stream()","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"ananya21"},"content":" .filter(task -\u003e task.getName().toString().equals(taskName.toString()))","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"ananya21"},"content":" .findFirst();","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"ananya21"},"content":" return foundTask.get();","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":70,"author":{"gitId":"modembcc"},"content":" public List\u003cTask\u003e getDoneTasks() {","lastModifiedDate":"2024-03-22"},{"lineNumber":71,"author":{"gitId":"modembcc"},"content":" ArrayList\u003cTask\u003e tmp \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-22"},{"lineNumber":72,"author":{"gitId":"modembcc"},"content":" for (Task task : taskList) {","lastModifiedDate":"2024-03-22"},{"lineNumber":73,"author":{"gitId":"modembcc"},"content":" if (task.getStatus() \u003d\u003d \"Complete\") {","lastModifiedDate":"2024-03-22"},{"lineNumber":74,"author":{"gitId":"modembcc"},"content":" tmp.add(task);","lastModifiedDate":"2024-03-22"},{"lineNumber":75,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":76,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":77,"author":{"gitId":"modembcc"},"content":" return tmp;","lastModifiedDate":"2024-03-22"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":80,"author":{"gitId":"modembcc"},"content":" public List\u003cTask\u003e getUndoneTasks() {","lastModifiedDate":"2024-03-22"},{"lineNumber":81,"author":{"gitId":"modembcc"},"content":" ArrayList\u003cTask\u003e tmp \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-22"},{"lineNumber":82,"author":{"gitId":"modembcc"},"content":" for (Task task : taskList) {","lastModifiedDate":"2024-03-22"},{"lineNumber":83,"author":{"gitId":"modembcc"},"content":" if (task.getStatus() \u003d\u003d \"Incomplete\") {","lastModifiedDate":"2024-03-22"},{"lineNumber":84,"author":{"gitId":"modembcc"},"content":" tmp.add(task);","lastModifiedDate":"2024-03-22"},{"lineNumber":85,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":86,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":87,"author":{"gitId":"modembcc"},"content":" return tmp;","lastModifiedDate":"2024-03-22"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":90,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":91,"author":{"gitId":"ananya21"},"content":" * Returns true if both projects have the same name.","lastModifiedDate":"2024-03-18"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":94,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public boolean isSamePerson(Person otherProject) {","lastModifiedDate":"2024-02-29"},{"lineNumber":95,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" if (otherProject \u003d\u003d this) {","lastModifiedDate":"2024-02-29"},{"lineNumber":96,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":99,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return otherProject !\u003d null","lastModifiedDate":"2024-02-29"},{"lineNumber":100,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" \u0026\u0026 otherProject.getName().equals(getName());","lastModifiedDate":"2024-02-29"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":103,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":104,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":106,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":109,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10"},{"lineNumber":110,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":113,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10"},{"lineNumber":115,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":118,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10"},{"lineNumber":119,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return name.equals(otherPerson.name);","lastModifiedDate":"2024-02-29"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":123,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":124,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24"},{"lineNumber":125,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return Objects.hash(name);","lastModifiedDate":"2024-02-29"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":129,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":130,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":131,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" .add(\"name\", name).toString();","lastModifiedDate":"2024-02-29"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":134,"author":{"gitId":"modembcc"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":135,"author":{"gitId":"modembcc"},"content":" * Returns true if the Person has a task that is equal to the specified task","lastModifiedDate":"2024-03-19"},{"lineNumber":136,"author":{"gitId":"modembcc"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":137,"author":{"gitId":"ThitipatC"},"content":" public boolean hasTask(Task task) {","lastModifiedDate":"2024-03-18"},{"lineNumber":138,"author":{"gitId":"ThitipatC"},"content":" for (Task t : taskList) {","lastModifiedDate":"2024-03-18"},{"lineNumber":139,"author":{"gitId":"modembcc"},"content":" System.out.println(task.getName().fullName);","lastModifiedDate":"2024-03-19"},{"lineNumber":140,"author":{"gitId":"ThitipatC"},"content":" if (t.equals(task)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":141,"author":{"gitId":"ThitipatC"},"content":" return true;","lastModifiedDate":"2024-03-18"},{"lineNumber":142,"author":{"gitId":"ThitipatC"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":143,"author":{"gitId":"ThitipatC"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":144,"author":{"gitId":"ThitipatC"},"content":" return false;","lastModifiedDate":"2024-03-18"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":147,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"modembcc":27,"ThitipatC":18,"Lin-Shuang-Shuang":9,"-":74,"ananya21":19}},{"path":"src/main/java/seedu/address/model/person/UniquePersonList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2016-08-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2018-01-10"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Iterator;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2017-06-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.PersonNotFoundException;","lastModifiedDate":"2017-06-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * A list of persons that enforces uniqueness between its elements and does not allow nulls.","lastModifiedDate":"2016-09-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * A person is considered unique by comparing using {@code Person#isSamePerson(Person)}. As such, adding and updating of","lastModifiedDate":"2018-04-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * persons uses Person#isSamePerson(Person) for equality so as to ensure that the person being added or updated is","lastModifiedDate":"2018-04-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * unique in terms of identity in the UniquePersonList. However, the removal of a person uses Person#equals(Object) so","lastModifiedDate":"2018-04-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * as to ensure that the person with exactly the same fields will be removed.","lastModifiedDate":"2018-04-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Supports a minimal set of list operations.","lastModifiedDate":"2016-09-22"},{"lineNumber":22,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * @see Person#isSamePerson(Person)","lastModifiedDate":"2018-04-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class UniquePersonList implements Iterable\u003cPerson\u003e {","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final ObservableList\u003cPerson\u003e internalList \u003d FXCollections.observableArrayList();","lastModifiedDate":"2016-10-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final ObservableList\u003cPerson\u003e internalUnmodifiableList \u003d","lastModifiedDate":"2018-12-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":" FXCollections.unmodifiableObservableList(internalList);","lastModifiedDate":"2018-12-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Returns true if the list contains an equivalent person as the given argument.","lastModifiedDate":"2016-09-22"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public boolean contains(Person toCheck) {","lastModifiedDate":"2018-01-10"},{"lineNumber":35,"author":{"gitId":"-"},"content":" requireNonNull(toCheck);","lastModifiedDate":"2017-05-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" return internalList.stream().anyMatch(toCheck::isSamePerson);","lastModifiedDate":"2018-04-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"modembcc"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"modembcc"},"content":" * Returns the person object with the matching name in the addressbook","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"modembcc"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"ananya21"},"content":" public Person findPerson(Name name) {","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"ananya21"},"content":" requireNonNull(name);","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"ananya21"},"content":" return internalList.stream()","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"ananya21"},"content":" .filter(person -\u003e person.getName().equals(name))","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"ananya21"},"content":" .findFirst()","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"ananya21"},"content":" .orElse(null);","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * Adds a person to the list.","lastModifiedDate":"2016-08-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * The person must not already exist in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void add(Person toAdd) {","lastModifiedDate":"2018-08-07"},{"lineNumber":55,"author":{"gitId":"-"},"content":" requireNonNull(toAdd);","lastModifiedDate":"2017-05-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":" if (contains(toAdd)) {","lastModifiedDate":"2016-08-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2016-08-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" internalList.add(toAdd);","lastModifiedDate":"2018-01-10"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * Replaces the person {@code target} in the list with {@code editedPerson}.","lastModifiedDate":"2017-06-07"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * {@code target} must exist in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":65,"author":{"gitId":"-"},"content":" * The person identity of {@code editedPerson} must not be the same as another existing person in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-07"},{"lineNumber":68,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2018-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" int index \u003d internalList.indexOf(target);","lastModifiedDate":"2017-06-07"},{"lineNumber":71,"author":{"gitId":"-"},"content":" if (index \u003d\u003d -1) {","lastModifiedDate":"2017-06-07"},{"lineNumber":72,"author":{"gitId":"-"},"content":" throw new PersonNotFoundException();","lastModifiedDate":"2017-06-07"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-07"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-07"},{"lineNumber":75,"author":{"gitId":"-"},"content":" if (!target.isSamePerson(editedPerson) \u0026\u0026 contains(editedPerson)) {","lastModifiedDate":"2018-04-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2016-12-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" internalList.set(index, editedPerson);","lastModifiedDate":"2018-01-10"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * Removes the equivalent person from the list.","lastModifiedDate":"2016-08-24"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * The person must exist in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":85,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void remove(Person toRemove) {","lastModifiedDate":"2018-08-07"},{"lineNumber":87,"author":{"gitId":"-"},"content":" requireNonNull(toRemove);","lastModifiedDate":"2017-05-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":" if (!internalList.remove(toRemove)) {","lastModifiedDate":"2018-02-28"},{"lineNumber":89,"author":{"gitId":"-"},"content":" throw new PersonNotFoundException();","lastModifiedDate":"2016-08-24"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void setPersons(UniquePersonList replacement) {","lastModifiedDate":"2016-10-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":" requireNonNull(replacement);","lastModifiedDate":"2018-08-08"},{"lineNumber":95,"author":{"gitId":"-"},"content":" internalList.setAll(replacement.internalList);","lastModifiedDate":"2018-08-14"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * Replaces the contents of this list with {@code persons}.","lastModifiedDate":"2018-08-07"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * {@code persons} must not contain duplicate persons.","lastModifiedDate":"2018-08-07"},{"lineNumber":101,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":102,"author":{"gitId":"-"},"content":" public void setPersons(List\u003cPerson\u003e persons) {","lastModifiedDate":"2018-08-07"},{"lineNumber":103,"author":{"gitId":"-"},"content":" requireAllNonNull(persons);","lastModifiedDate":"2018-01-10"},{"lineNumber":104,"author":{"gitId":"-"},"content":" if (!personsAreUnique(persons)) {","lastModifiedDate":"2018-04-19"},{"lineNumber":105,"author":{"gitId":"-"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2018-01-21"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-21"},{"lineNumber":108,"author":{"gitId":"-"},"content":" internalList.setAll(persons);","lastModifiedDate":"2018-08-14"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":111,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-09-01"},{"lineNumber":112,"author":{"gitId":"-"},"content":" * Returns the backing list as an unmodifiable {@code ObservableList}.","lastModifiedDate":"2017-09-01"},{"lineNumber":113,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-09-01"},{"lineNumber":114,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e asUnmodifiableObservableList() {","lastModifiedDate":"2018-04-05"},{"lineNumber":115,"author":{"gitId":"-"},"content":" return internalUnmodifiableList;","lastModifiedDate":"2018-12-09"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":118,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":119,"author":{"gitId":"-"},"content":" public Iterator\u003cPerson\u003e iterator() {","lastModifiedDate":"2016-08-24"},{"lineNumber":120,"author":{"gitId":"-"},"content":" return internalList.iterator();","lastModifiedDate":"2016-08-24"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":124,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-21"},{"lineNumber":125,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":126,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":129,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":130,"author":{"gitId":"-"},"content":" if (!(other instanceof UniquePersonList)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":131,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":134,"author":{"gitId":"-"},"content":" UniquePersonList otherUniquePersonList \u003d (UniquePersonList) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":135,"author":{"gitId":"-"},"content":" return internalList.equals(otherUniquePersonList.internalList);","lastModifiedDate":"2023-07-13"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":138,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":139,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-21"},{"lineNumber":140,"author":{"gitId":"-"},"content":" return internalList.hashCode();","lastModifiedDate":"2016-09-21"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":143,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-24"},{"lineNumber":144,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-24"},{"lineNumber":145,"author":{"gitId":"-"},"content":" return internalList.toString();","lastModifiedDate":"2019-02-24"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-24"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-24"},{"lineNumber":148,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":149,"author":{"gitId":"-"},"content":" * Returns true if {@code persons} contains only unique persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":150,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":151,"author":{"gitId":"-"},"content":" private boolean personsAreUnique(List\u003cPerson\u003e persons) {","lastModifiedDate":"2018-04-19"},{"lineNumber":152,"author":{"gitId":"-"},"content":" for (int i \u003d 0; i \u003c persons.size() - 1; i++) {","lastModifiedDate":"2018-04-19"},{"lineNumber":153,"author":{"gitId":"-"},"content":" for (int j \u003d i + 1; j \u003c persons.size(); j++) {","lastModifiedDate":"2018-04-19"},{"lineNumber":154,"author":{"gitId":"-"},"content":" if (persons.get(i).isSamePerson(persons.get(j))) {","lastModifiedDate":"2018-04-19"},{"lineNumber":155,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-04-19"},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":158,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":159,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19"},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":161,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"modembcc":3,"-":150,"ananya21":8}},{"path":"src/main/java/seedu/address/model/project/Member.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ananya21"},"content":"package seedu.address.model.project;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"ananya21"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"ananya21"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"ananya21"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"ananya21"},"content":" * Represents a Task of Project","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"ananya21"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"ananya21"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"ananya21"},"content":"public class Member {","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"ananya21"},"content":" // Identity fields","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"ananya21"},"content":" private final Name memberName;","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"ananya21"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"ananya21"},"content":" * Constructs a new task object","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"ananya21"},"content":" * @param name the task name","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"ananya21"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"ananya21"},"content":" public Member(String name) {","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"ananya21"},"content":" requireAllNonNull(name);","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"ananya21"},"content":" this.memberName \u003d new Name(name);","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"ananya21"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"ananya21"},"content":" * Get the name of the task","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"ananya21"},"content":" * @return","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"ananya21"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"ananya21"},"content":" public Name getName() {","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"ananya21"},"content":" return memberName;","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"ananya21"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"ananya21"},"content":" * Returns true if both tasks have the same identity and data fields.","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"ananya21"},"content":" * This defines a stronger notion of equality between two tasks.","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"ananya21"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"ananya21"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"ananya21"},"content":" public boolean equals(Object obj) {","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"ananya21"},"content":" if (this \u003d\u003d obj) {","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"ananya21"},"content":" return true;","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"ananya21"},"content":" if (!(obj instanceof Task)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"ananya21"},"content":" return false;","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"ananya21"},"content":" Member other \u003d (Member) obj;","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"ananya21"},"content":" return memberName.equals(other.memberName);","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"ananya21"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"ananya21"},"content":" public String toString() {","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"ananya21"},"content":" return memberName.toString();","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"ananya21"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"ananya21":54}},{"path":"src/main/java/seedu/address/model/project/Task.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ananya21"},"content":"package seedu.address.model.project;","lastModifiedDate":"2024-03-15"},{"lineNumber":2,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":3,"author":{"gitId":"ananya21"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"modembcc"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"modembcc"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-03-22"},{"lineNumber":7,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"ananya21"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"modembcc"},"content":"/**","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"modembcc"},"content":" * Represents a Task of Project","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"modembcc"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"modembcc"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"ananya21"},"content":"public class Task {","lastModifiedDate":"2024-03-15"},{"lineNumber":15,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"ananya21"},"content":" // Identity fields","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"ananya21"},"content":" private final Name taskName;","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"ananya21"},"content":" private Member member;","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"ananya21"},"content":" private boolean status;","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"ananya21"},"content":" private Integer progressCounter \u003d 0;","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"ananya21"},"content":" private LocalDate deadlineDate;","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"modembcc"},"content":" private DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM d yyyy\");","lastModifiedDate":"2024-03-22"},{"lineNumber":27,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"modembcc"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"modembcc"},"content":" * Constructs a new task object","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"modembcc"},"content":" * @param name the task name","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"modembcc"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"ananya21"},"content":" public Task(String name) {","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"ananya21"},"content":" requireAllNonNull(name);","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"ananya21"},"content":" this.taskName \u003d new Name(name);","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"ananya21"},"content":" this.status \u003d true;","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"modembcc"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"modembcc"},"content":" * Assigns a Person to the task","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"ananya21"},"content":" * @param member the person assigned to the task","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"modembcc"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"ananya21"},"content":" public void assignPerson(Member member) {","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"ananya21"},"content":" this.member \u003d member;","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"modembcc"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"modembcc"},"content":" * Sets the task status as complete","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"modembcc"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"ananya21"},"content":" public void setComplete() {","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"ananya21"},"content":" this.status \u003d false;","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"modembcc"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"modembcc"},"content":" * Sets the task status as incomplete","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"modembcc"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"ananya21"},"content":" public void setIncomplete() {","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"ananya21"},"content":" this.status \u003d true;","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"ananya21"},"content":" progressCounter \u003d progressCounter + 1;","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"modembcc"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"modembcc"},"content":" * Gets the status of the task as a string","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"modembcc"},"content":" * @return the string represeting the status of the task","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"modembcc"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"ananya21"},"content":" public String getStatus() {","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"ananya21"},"content":" if (status) {","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"ananya21"},"content":" return \"Incomplete\";","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"ananya21"},"content":" } else {","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"ananya21"},"content":" return \"Complete\";","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"modembcc"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"modembcc"},"content":" * Sets the deadline of the task","lastModifiedDate":"2024-03-19"},{"lineNumber":75,"author":{"gitId":"modembcc"},"content":" * @param deadline the datetime string to be parsed and set as deadline","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"modembcc"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"ananya21"},"content":" public void setDeadline(String deadline) {","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"modembcc"},"content":" this.deadlineDate \u003d LocalDate.parse(deadline, formatter);","lastModifiedDate":"2024-03-22"},{"lineNumber":79,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"modembcc"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":82,"author":{"gitId":"modembcc"},"content":" * Get the name of the task","lastModifiedDate":"2024-03-19"},{"lineNumber":83,"author":{"gitId":"modembcc"},"content":" * @return","lastModifiedDate":"2024-03-19"},{"lineNumber":84,"author":{"gitId":"modembcc"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":85,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":86,"author":{"gitId":"ananya21"},"content":" public Name getName() {","lastModifiedDate":"2024-03-18"},{"lineNumber":87,"author":{"gitId":"ananya21"},"content":" return taskName;","lastModifiedDate":"2024-03-18"},{"lineNumber":88,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":89,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":90,"author":{"gitId":"modembcc"},"content":" public String getMemberName() {","lastModifiedDate":"2024-03-22"},{"lineNumber":91,"author":{"gitId":"modembcc"},"content":" return member \u003d\u003d null","lastModifiedDate":"2024-03-22"},{"lineNumber":92,"author":{"gitId":"modembcc"},"content":" ? \"\"","lastModifiedDate":"2024-03-22"},{"lineNumber":93,"author":{"gitId":"modembcc"},"content":" : member.getName().fullName;","lastModifiedDate":"2024-03-22"},{"lineNumber":94,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":95,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":96,"author":{"gitId":"modembcc"},"content":" public String getDeadlineString() {","lastModifiedDate":"2024-03-22"},{"lineNumber":97,"author":{"gitId":"modembcc"},"content":" return deadlineDate \u003d\u003d null","lastModifiedDate":"2024-03-22"},{"lineNumber":98,"author":{"gitId":"modembcc"},"content":" ? \"\"","lastModifiedDate":"2024-03-22"},{"lineNumber":99,"author":{"gitId":"modembcc"},"content":" : deadlineDate.format(formatter);","lastModifiedDate":"2024-03-22"},{"lineNumber":100,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":101,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":102,"author":{"gitId":"modembcc"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":103,"author":{"gitId":"modembcc"},"content":" * Returns true if both tasks have the same identity and data fields.","lastModifiedDate":"2024-03-19"},{"lineNumber":104,"author":{"gitId":"modembcc"},"content":" * This defines a stronger notion of equality between two tasks.","lastModifiedDate":"2024-03-19"},{"lineNumber":105,"author":{"gitId":"modembcc"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":106,"author":{"gitId":"ThitipatC"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":107,"author":{"gitId":"ThitipatC"},"content":" public boolean equals(Object obj) {","lastModifiedDate":"2024-03-18"},{"lineNumber":108,"author":{"gitId":"ThitipatC"},"content":" if (this \u003d\u003d obj) {","lastModifiedDate":"2024-03-18"},{"lineNumber":109,"author":{"gitId":"ThitipatC"},"content":" return true;","lastModifiedDate":"2024-03-18"},{"lineNumber":110,"author":{"gitId":"ThitipatC"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":111,"author":{"gitId":"ThitipatC"},"content":" if (!(obj instanceof Task)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":112,"author":{"gitId":"ThitipatC"},"content":" return false;","lastModifiedDate":"2024-03-18"},{"lineNumber":113,"author":{"gitId":"ThitipatC"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":114,"author":{"gitId":"ThitipatC"},"content":" Task other \u003d (Task) obj;","lastModifiedDate":"2024-03-18"},{"lineNumber":115,"author":{"gitId":"ThitipatC"},"content":" return taskName.equals(other.taskName);","lastModifiedDate":"2024-03-18"},{"lineNumber":116,"author":{"gitId":"ThitipatC"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":117,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":118,"author":{"gitId":"ananya21"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":119,"author":{"gitId":"ananya21"},"content":" public String toString() {","lastModifiedDate":"2024-03-21"},{"lineNumber":120,"author":{"gitId":"ananya21"},"content":" return taskName.toString();","lastModifiedDate":"2024-03-21"},{"lineNumber":121,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":122,"author":{"gitId":"ThitipatC"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":123,"author":{"gitId":"ananya21"},"content":"}","lastModifiedDate":"2024-03-15"}],"authorContributionMap":{"modembcc":51,"ThitipatC":12,"ananya21":60}},{"path":"src/main/java/seedu/address/model/util/SampleDataUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.util;","lastModifiedDate":"2016-12-20"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-12-20"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-12-20"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-20"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-20"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-14"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public static Person[] getSamplePersons() {","lastModifiedDate":"2016-12-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":" return new Person[] {","lastModifiedDate":"2016-12-20"},{"lineNumber":19,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" new Person(new Name(\"CS2101 Presentation\")),","lastModifiedDate":"2024-02-29"},{"lineNumber":20,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" new Person(new Name(\"Duke chatbot\")),","lastModifiedDate":"2024-02-29"},{"lineNumber":21,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" new Person(new Name(\"IS1128 project\")),","lastModifiedDate":"2024-02-29"},{"lineNumber":22,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" new Person(new Name(\"CS2103T Ab3\")),","lastModifiedDate":"2024-02-29"},{"lineNumber":23,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" new Person(new Name(\"Coding project\"))","lastModifiedDate":"2024-02-29"},{"lineNumber":24,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07"},{"lineNumber":29,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20"},{"lineNumber":30,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":32,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2017-05-30"},{"lineNumber":39,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2018-01-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":44,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20"}],"authorContributionMap":{"Lin-Shuang-Shuang":5,"-":39}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedPerson.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-08-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Jackson-friendly version of {@link Person}.","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"class JsonAdaptedPerson {","lastModifiedDate":"2018-12-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private final String name;","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedTag\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-01-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given person details.","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(@JsonProperty(\"name\") String name, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @JsonProperty(\"email\") String email, @JsonProperty(\"address\") String address,","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags) {","lastModifiedDate":"2023-05-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" if (tags !\u003d null) {","lastModifiedDate":"2023-01-09"},{"lineNumber":33,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2023-01-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" final List\u003cTag\u003e personTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" for (JsonAdaptedTag tag : tags) {","lastModifiedDate":"2023-01-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":" personTags.add(tag.toModelType());","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return new Person(modelName);","lastModifiedDate":"2024-02-29"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"Lin-Shuang-Shuang":1,"-":64}},{"path":"src/main/java/seedu/address/ui/CurrentProjectPanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"modembcc"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":3,"author":{"gitId":"modembcc"},"content":"// import java.util.logging.Logger;","lastModifiedDate":"2024-03-22"},{"lineNumber":4,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":5,"author":{"gitId":"modembcc"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-22"},{"lineNumber":6,"author":{"gitId":"modembcc"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-03-22"},{"lineNumber":7,"author":{"gitId":"modembcc"},"content":"import javafx.scene.control.ListCell;","lastModifiedDate":"2024-03-22"},{"lineNumber":8,"author":{"gitId":"modembcc"},"content":"import javafx.scene.control.ListView;","lastModifiedDate":"2024-03-22"},{"lineNumber":9,"author":{"gitId":"modembcc"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"modembcc"},"content":"// import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"modembcc"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"modembcc"},"content":"/**","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"modembcc"},"content":" * Panel containing the list of persons.","lastModifiedDate":"2024-03-22"},{"lineNumber":15,"author":{"gitId":"modembcc"},"content":" */","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"modembcc"},"content":"public class CurrentProjectPanel extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-03-22"},{"lineNumber":17,"author":{"gitId":"modembcc"},"content":" private static final String FXML \u003d \"CurrentProjectPanel.fxml\";","lastModifiedDate":"2024-03-22"},{"lineNumber":18,"author":{"gitId":"modembcc"},"content":" // private final Logger logger \u003d LogsCenter.getLogger(PersonListPanel.class);","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":20,"author":{"gitId":"modembcc"},"content":" @FXML","lastModifiedDate":"2024-03-22"},{"lineNumber":21,"author":{"gitId":"modembcc"},"content":" private ListView\u003cPerson\u003e currentProjectView;","lastModifiedDate":"2024-03-22"},{"lineNumber":22,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"modembcc"},"content":" /**","lastModifiedDate":"2024-03-22"},{"lineNumber":24,"author":{"gitId":"modembcc"},"content":" * Creates a {@code PersonListPanel} with the given {@code ObservableList}.","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"modembcc"},"content":" */","lastModifiedDate":"2024-03-22"},{"lineNumber":26,"author":{"gitId":"modembcc"},"content":" public CurrentProjectPanel(ObservableList\u003cPerson\u003e currentProject) {","lastModifiedDate":"2024-03-22"},{"lineNumber":27,"author":{"gitId":"modembcc"},"content":" super(FXML);","lastModifiedDate":"2024-03-22"},{"lineNumber":28,"author":{"gitId":"modembcc"},"content":" currentProjectView.setItems(currentProject);","lastModifiedDate":"2024-03-22"},{"lineNumber":29,"author":{"gitId":"modembcc"},"content":" currentProjectView.setCellFactory(listView -\u003e new PersonListViewCell());","lastModifiedDate":"2024-03-22"},{"lineNumber":30,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":31,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":32,"author":{"gitId":"modembcc"},"content":" /**","lastModifiedDate":"2024-03-22"},{"lineNumber":33,"author":{"gitId":"modembcc"},"content":" * Custom {@code ListCell} that displays the graphics of a {@code Person} using a {@code PersonCard}.","lastModifiedDate":"2024-03-22"},{"lineNumber":34,"author":{"gitId":"modembcc"},"content":" */","lastModifiedDate":"2024-03-22"},{"lineNumber":35,"author":{"gitId":"modembcc"},"content":" class PersonListViewCell extends ListCell\u003cPerson\u003e {","lastModifiedDate":"2024-03-22"},{"lineNumber":36,"author":{"gitId":"modembcc"},"content":" @Override","lastModifiedDate":"2024-03-22"},{"lineNumber":37,"author":{"gitId":"modembcc"},"content":" protected void updateItem(Person person, boolean empty) {","lastModifiedDate":"2024-03-22"},{"lineNumber":38,"author":{"gitId":"modembcc"},"content":" super.updateItem(person, empty);","lastModifiedDate":"2024-03-22"},{"lineNumber":39,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":40,"author":{"gitId":"modembcc"},"content":" if (empty || person \u003d\u003d null) {","lastModifiedDate":"2024-03-22"},{"lineNumber":41,"author":{"gitId":"modembcc"},"content":" setGraphic(null);","lastModifiedDate":"2024-03-22"},{"lineNumber":42,"author":{"gitId":"modembcc"},"content":" setText(null);","lastModifiedDate":"2024-03-22"},{"lineNumber":43,"author":{"gitId":"modembcc"},"content":" } else {","lastModifiedDate":"2024-03-22"},{"lineNumber":44,"author":{"gitId":"modembcc"},"content":" setGraphic(new TaskListPanel(person).getRoot());","lastModifiedDate":"2024-03-22"},{"lineNumber":45,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":46,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":47,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":48,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":49,"author":{"gitId":"modembcc"},"content":"}","lastModifiedDate":"2024-03-22"}],"authorContributionMap":{"modembcc":49}},{"path":"src/main/java/seedu/address/ui/MainWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-06-16"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.event.ActionEvent;","lastModifiedDate":"2016-12-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-08-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.MenuItem;","lastModifiedDate":"2016-08-26"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.control.TextInputControl;","lastModifiedDate":"2016-12-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyCombination;","lastModifiedDate":"2016-08-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyEvent;","lastModifiedDate":"2016-12-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.scene.layout.StackPane;","lastModifiedDate":"2017-05-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2016-09-28"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2017-06-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.Logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * The Main Window. Provides the basic application layout containing","lastModifiedDate":"2016-08-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * a menu bar and space where other JavaFX elements can be placed.","lastModifiedDate":"2016-08-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class MainWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-11-29"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"MainWindow.fxml\";","lastModifiedDate":"2016-08-18"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(getClass());","lastModifiedDate":"2018-08-14"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Stage primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // Independent Ui parts residing in this Ui container","lastModifiedDate":"2016-08-18"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private PersonListPanel personListPanel;","lastModifiedDate":"2016-08-18"},{"lineNumber":35,"author":{"gitId":"modembcc"},"content":" private CurrentProjectPanel currentProjectPanel;","lastModifiedDate":"2024-03-22"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private ResultDisplay resultDisplay;","lastModifiedDate":"2018-12-09"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private HelpWindow helpWindow;","lastModifiedDate":"2018-03-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private StackPane commandBoxPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":43,"author":{"gitId":"-"},"content":" private MenuItem helpMenuItem;","lastModifiedDate":"2016-08-18"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":46,"author":{"gitId":"-"},"content":" private StackPane personListPanelPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":" private StackPane resultDisplayPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2024-03-22"},{"lineNumber":52,"author":{"gitId":"modembcc"},"content":" private StackPane currentProjectPanelPlaceholder;","lastModifiedDate":"2024-03-22"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * Creates a {@code MainWindow} with the given {@code Stage} and {@code Logic}.","lastModifiedDate":"2020-05-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public MainWindow(Stage primaryStage, Logic logic) {","lastModifiedDate":"2018-12-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" super(FXML, primaryStage);","lastModifiedDate":"2017-11-29"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":60,"author":{"gitId":"-"},"content":" // Set dependencies","lastModifiedDate":"2016-09-21"},{"lineNumber":61,"author":{"gitId":"-"},"content":" this.primaryStage \u003d primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":62,"author":{"gitId":"-"},"content":" this.logic \u003d logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":" // Configure the UI","lastModifiedDate":"2016-09-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":" setWindowDefaultSize(logic.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":67,"author":{"gitId":"-"},"content":" setAccelerators();","lastModifiedDate":"2016-09-21"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":69,"author":{"gitId":"-"},"content":" helpWindow \u003d new HelpWindow();","lastModifiedDate":"2018-03-15"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public Stage getPrimaryStage() {","lastModifiedDate":"2016-12-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return primaryStage;","lastModifiedDate":"2016-12-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":" private void setAccelerators() {","lastModifiedDate":"2016-09-21"},{"lineNumber":77,"author":{"gitId":"-"},"content":" setAccelerator(helpMenuItem, KeyCombination.valueOf(\"F1\"));","lastModifiedDate":"2016-12-18"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":80,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-18"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * Sets the accelerator of a MenuItem.","lastModifiedDate":"2016-12-18"},{"lineNumber":82,"author":{"gitId":"-"},"content":" * @param keyCombination the KeyCombination value of the accelerator","lastModifiedDate":"2016-12-18"},{"lineNumber":83,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":84,"author":{"gitId":"-"},"content":" private void setAccelerator(MenuItem menuItem, KeyCombination keyCombination) {","lastModifiedDate":"2016-12-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":" menuItem.setAccelerator(keyCombination);","lastModifiedDate":"2016-12-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-12-18"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * TODO: the code below can be removed once the bug reported here","lastModifiedDate":"2016-12-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * https://bugs.openjdk.java.net/browse/JDK-8131666","lastModifiedDate":"2016-12-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * is fixed in later version of SDK.","lastModifiedDate":"2016-12-18"},{"lineNumber":91,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * According to the bug report, TextInputControl (TextField, TextArea) will","lastModifiedDate":"2016-12-18"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * consume function-key events. Because CommandBox contains a TextField, and","lastModifiedDate":"2016-12-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * ResultDisplay contains a TextArea, thus some accelerators (e.g F1) will","lastModifiedDate":"2016-12-18"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * not work when the focus is in them because the key event is consumed by","lastModifiedDate":"2016-12-18"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * the TextInputControl(s).","lastModifiedDate":"2016-12-18"},{"lineNumber":97,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * For now, we add following event filter to capture such key events and open","lastModifiedDate":"2016-12-18"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * help window purposely so to support accelerators even when focus is","lastModifiedDate":"2016-12-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * in CommandBox or ResultDisplay.","lastModifiedDate":"2016-12-18"},{"lineNumber":101,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":102,"author":{"gitId":"-"},"content":" getRoot().addEventFilter(KeyEvent.KEY_PRESSED, event -\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":103,"author":{"gitId":"-"},"content":" if (event.getTarget() instanceof TextInputControl \u0026\u0026 keyCombination.match(event)) {","lastModifiedDate":"2016-12-18"},{"lineNumber":104,"author":{"gitId":"-"},"content":" menuItem.getOnAction().handle(new ActionEvent());","lastModifiedDate":"2016-12-18"},{"lineNumber":105,"author":{"gitId":"-"},"content":" event.consume();","lastModifiedDate":"2016-12-18"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":107,"author":{"gitId":"-"},"content":" });","lastModifiedDate":"2016-12-18"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":110,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":111,"author":{"gitId":"-"},"content":" * Fills up all the placeholders of this window.","lastModifiedDate":"2017-08-16"},{"lineNumber":112,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":113,"author":{"gitId":"-"},"content":" void fillInnerParts() {","lastModifiedDate":"2016-09-21"},{"lineNumber":114,"author":{"gitId":"-"},"content":" personListPanel \u003d new PersonListPanel(logic.getFilteredPersonList());","lastModifiedDate":"2019-01-25"},{"lineNumber":115,"author":{"gitId":"-"},"content":" personListPanelPlaceholder.getChildren().add(personListPanel.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":117,"author":{"gitId":"modembcc"},"content":" currentProjectPanel \u003d new CurrentProjectPanel(logic.getCurrentProject());","lastModifiedDate":"2024-03-22"},{"lineNumber":118,"author":{"gitId":"modembcc"},"content":" currentProjectPanelPlaceholder.getChildren().add(currentProjectPanel.getRoot());","lastModifiedDate":"2024-03-22"},{"lineNumber":119,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":120,"author":{"gitId":"-"},"content":" resultDisplay \u003d new ResultDisplay();","lastModifiedDate":"2018-12-09"},{"lineNumber":121,"author":{"gitId":"-"},"content":" resultDisplayPlaceholder.getChildren().add(resultDisplay.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":" CommandBox commandBox \u003d new CommandBox(this::executeCommand);","lastModifiedDate":"2019-01-25"},{"lineNumber":124,"author":{"gitId":"-"},"content":" commandBoxPlaceholder.getChildren().add(commandBox.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":127,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":128,"author":{"gitId":"-"},"content":" * Sets the default size based on {@code guiSettings}.","lastModifiedDate":"2018-11-27"},{"lineNumber":129,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":130,"author":{"gitId":"-"},"content":" private void setWindowDefaultSize(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":131,"author":{"gitId":"-"},"content":" primaryStage.setHeight(guiSettings.getWindowHeight());","lastModifiedDate":"2018-11-27"},{"lineNumber":132,"author":{"gitId":"-"},"content":" primaryStage.setWidth(guiSettings.getWindowWidth());","lastModifiedDate":"2018-11-27"},{"lineNumber":133,"author":{"gitId":"-"},"content":" if (guiSettings.getWindowCoordinates() !\u003d null) {","lastModifiedDate":"2018-11-27"},{"lineNumber":134,"author":{"gitId":"-"},"content":" primaryStage.setX(guiSettings.getWindowCoordinates().getX());","lastModifiedDate":"2018-11-27"},{"lineNumber":135,"author":{"gitId":"-"},"content":" primaryStage.setY(guiSettings.getWindowCoordinates().getY());","lastModifiedDate":"2018-11-27"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":139,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":140,"author":{"gitId":"-"},"content":" * Opens the help window or focuses on it if it\u0027s already opened.","lastModifiedDate":"2018-03-15"},{"lineNumber":141,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":142,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":143,"author":{"gitId":"-"},"content":" public void handleHelp() {","lastModifiedDate":"2016-08-31"},{"lineNumber":144,"author":{"gitId":"-"},"content":" if (!helpWindow.isShowing()) {","lastModifiedDate":"2018-03-15"},{"lineNumber":145,"author":{"gitId":"-"},"content":" helpWindow.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":146,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-15"},{"lineNumber":147,"author":{"gitId":"-"},"content":" helpWindow.focus();","lastModifiedDate":"2018-03-15"},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":151,"author":{"gitId":"-"},"content":" void show() {","lastModifiedDate":"2016-10-15"},{"lineNumber":152,"author":{"gitId":"-"},"content":" primaryStage.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":155,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":156,"author":{"gitId":"-"},"content":" * Closes the application.","lastModifiedDate":"2016-08-18"},{"lineNumber":157,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":158,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":159,"author":{"gitId":"-"},"content":" private void handleExit() {","lastModifiedDate":"2016-08-18"},{"lineNumber":160,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(primaryStage.getWidth(), primaryStage.getHeight(),","lastModifiedDate":"2018-12-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":" (int) primaryStage.getX(), (int) primaryStage.getY());","lastModifiedDate":"2018-12-08"},{"lineNumber":162,"author":{"gitId":"-"},"content":" logic.setGuiSettings(guiSettings);","lastModifiedDate":"2018-12-08"},{"lineNumber":163,"author":{"gitId":"-"},"content":" helpWindow.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":" primaryStage.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-25"},{"lineNumber":167,"author":{"gitId":"-"},"content":" public PersonListPanel getPersonListPanel() {","lastModifiedDate":"2016-08-25"},{"lineNumber":168,"author":{"gitId":"-"},"content":" return personListPanel;","lastModifiedDate":"2018-08-14"},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-25"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":171,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":172,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2018-12-09"},{"lineNumber":173,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09"},{"lineNumber":174,"author":{"gitId":"-"},"content":" * @see seedu.address.logic.Logic#execute(String)","lastModifiedDate":"2018-12-09"},{"lineNumber":175,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":176,"author":{"gitId":"-"},"content":" private CommandResult executeCommand(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2018-12-09"},{"lineNumber":177,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":178,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d logic.execute(commandText);","lastModifiedDate":"2018-12-09"},{"lineNumber":179,"author":{"gitId":"-"},"content":" logger.info(\"Result: \" + commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":180,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":182,"author":{"gitId":"-"},"content":" if (commandResult.isShowHelp()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":183,"author":{"gitId":"-"},"content":" handleHelp();","lastModifiedDate":"2018-12-09"},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":186,"author":{"gitId":"-"},"content":" if (commandResult.isExit()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":187,"author":{"gitId":"-"},"content":" handleExit();","lastModifiedDate":"2018-12-09"},{"lineNumber":188,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":190,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":191,"author":{"gitId":"-"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2018-12-09"},{"lineNumber":192,"author":{"gitId":"-"},"content":" logger.info(\"An error occurred while executing command: \" + commandText);","lastModifiedDate":"2023-06-13"},{"lineNumber":193,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(e.getMessage());","lastModifiedDate":"2018-12-09"},{"lineNumber":194,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2018-12-09"},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":197,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"modembcc":5,"-":192}},{"path":"src/main/java/seedu/address/ui/PersonListPanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"modembcc"},"content":"// import java.util.logging.Logger;","lastModifiedDate":"2024-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-08-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-08-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.ListCell;","lastModifiedDate":"2016-09-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.control.ListView;","lastModifiedDate":"2016-08-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24"},{"lineNumber":10,"author":{"gitId":"modembcc"},"content":"// import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-03-15"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Panel containing the list of persons.","lastModifiedDate":"2016-09-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class PersonListPanel extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"PersonListPanel.fxml\";","lastModifiedDate":"2016-09-14"},{"lineNumber":18,"author":{"gitId":"modembcc"},"content":" // private final Logger logger \u003d LogsCenter.getLogger(PersonListPanel.class);","lastModifiedDate":"2024-03-15"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private ListView\u003cPerson\u003e personListView;","lastModifiedDate":"2018-02-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Creates a {@code PersonListPanel} with the given {@code ObservableList}.","lastModifiedDate":"2020-05-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public PersonListPanel(ObservableList\u003cPerson\u003e personList) {","lastModifiedDate":"2019-01-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" personListView.setItems(personList);","lastModifiedDate":"2018-02-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" personListView.setCellFactory(listView -\u003e new PersonListViewCell());","lastModifiedDate":"2016-08-18"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Custom {@code ListCell} that displays the graphics of a {@code Person} using a {@code PersonCard}.","lastModifiedDate":"2018-02-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":" class PersonListViewCell extends ListCell\u003cPerson\u003e {","lastModifiedDate":"2018-02-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" protected void updateItem(Person person, boolean empty) {","lastModifiedDate":"2018-02-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" super.updateItem(person, empty);","lastModifiedDate":"2016-09-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" if (empty || person \u003d\u003d null) {","lastModifiedDate":"2016-09-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" setGraphic(null);","lastModifiedDate":"2016-09-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" setText(null);","lastModifiedDate":"2016-09-21"},{"lineNumber":43,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2016-09-21"},{"lineNumber":44,"author":{"gitId":"-"},"content":" setGraphic(new PersonCard(person, getIndex() + 1).getRoot());","lastModifiedDate":"2018-02-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"modembcc":3,"-":46}},{"path":"src/main/java/seedu/address/ui/TaskCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"modembcc"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":3,"author":{"gitId":"modembcc"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-03-22"},{"lineNumber":4,"author":{"gitId":"modembcc"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2024-03-22"},{"lineNumber":5,"author":{"gitId":"modembcc"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2024-03-22"},{"lineNumber":6,"author":{"gitId":"modembcc"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-03-22"},{"lineNumber":7,"author":{"gitId":"modembcc"},"content":"import seedu.address.model.project.Task;","lastModifiedDate":"2024-03-22"},{"lineNumber":8,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":9,"author":{"gitId":"modembcc"},"content":"/**","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"modembcc"},"content":" * An UI component that displays information of a {@code Person}.","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"modembcc"},"content":" */","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"modembcc"},"content":"public class TaskCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"modembcc"},"content":" private static final String FXML \u003d \"TaskListCard.fxml\";","lastModifiedDate":"2024-03-22"},{"lineNumber":15,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"modembcc"},"content":" /**","lastModifiedDate":"2024-03-22"},{"lineNumber":17,"author":{"gitId":"modembcc"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2024-03-22"},{"lineNumber":18,"author":{"gitId":"modembcc"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"author":{"gitId":"modembcc"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2024-03-22"},{"lineNumber":20,"author":{"gitId":"modembcc"},"content":" *","lastModifiedDate":"2024-03-22"},{"lineNumber":21,"author":{"gitId":"modembcc"},"content":" * @see \u003ca href\u003d\"https://github.com/se-edu/addressbook-level4/issues/336\"\u003eThe issue on AddressBook level 4\u003c/a\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":22,"author":{"gitId":"modembcc"},"content":" */","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":24,"author":{"gitId":"modembcc"},"content":" public final Task task;","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":26,"author":{"gitId":"modembcc"},"content":" @FXML","lastModifiedDate":"2024-03-22"},{"lineNumber":27,"author":{"gitId":"modembcc"},"content":" private HBox cardPane;","lastModifiedDate":"2024-03-22"},{"lineNumber":28,"author":{"gitId":"modembcc"},"content":" @FXML","lastModifiedDate":"2024-03-22"},{"lineNumber":29,"author":{"gitId":"modembcc"},"content":" private Label name;","lastModifiedDate":"2024-03-22"},{"lineNumber":30,"author":{"gitId":"modembcc"},"content":" @FXML","lastModifiedDate":"2024-03-22"},{"lineNumber":31,"author":{"gitId":"modembcc"},"content":" private Label member;","lastModifiedDate":"2024-03-22"},{"lineNumber":32,"author":{"gitId":"modembcc"},"content":" @FXML","lastModifiedDate":"2024-03-22"},{"lineNumber":33,"author":{"gitId":"modembcc"},"content":" private Label deadlineDate;","lastModifiedDate":"2024-03-22"},{"lineNumber":34,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":35,"author":{"gitId":"modembcc"},"content":" /**","lastModifiedDate":"2024-03-22"},{"lineNumber":36,"author":{"gitId":"modembcc"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2024-03-22"},{"lineNumber":37,"author":{"gitId":"modembcc"},"content":" */","lastModifiedDate":"2024-03-22"},{"lineNumber":38,"author":{"gitId":"modembcc"},"content":" public TaskCard(Task task) {","lastModifiedDate":"2024-03-22"},{"lineNumber":39,"author":{"gitId":"modembcc"},"content":" super(FXML);","lastModifiedDate":"2024-03-22"},{"lineNumber":40,"author":{"gitId":"modembcc"},"content":" this.task \u003d task;","lastModifiedDate":"2024-03-22"},{"lineNumber":41,"author":{"gitId":"modembcc"},"content":" name.setText(task.getName().fullName);","lastModifiedDate":"2024-03-22"},{"lineNumber":42,"author":{"gitId":"modembcc"},"content":" member.setText(\"Member: \" + task.getMemberName());","lastModifiedDate":"2024-03-22"},{"lineNumber":43,"author":{"gitId":"modembcc"},"content":" deadlineDate.setText(\"Deadline: \" + task.getDeadlineString());","lastModifiedDate":"2024-03-22"},{"lineNumber":44,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":45,"author":{"gitId":"modembcc"},"content":"}","lastModifiedDate":"2024-03-22"}],"authorContributionMap":{"modembcc":45}},{"path":"src/main/java/seedu/address/ui/TaskListPanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"modembcc"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":3,"author":{"gitId":"modembcc"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-03-22"},{"lineNumber":4,"author":{"gitId":"modembcc"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2024-03-22"},{"lineNumber":5,"author":{"gitId":"modembcc"},"content":"import javafx.scene.control.ListCell;","lastModifiedDate":"2024-03-22"},{"lineNumber":6,"author":{"gitId":"modembcc"},"content":"import javafx.scene.control.ListView;","lastModifiedDate":"2024-03-22"},{"lineNumber":7,"author":{"gitId":"modembcc"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-03-22"},{"lineNumber":8,"author":{"gitId":"modembcc"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-22"},{"lineNumber":9,"author":{"gitId":"modembcc"},"content":"import seedu.address.model.project.Task;","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"modembcc"},"content":"/**","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"modembcc"},"content":" * Panel containing the list of persons.","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"modembcc"},"content":" */","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"modembcc"},"content":"public class TaskListPanel extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-03-22"},{"lineNumber":15,"author":{"gitId":"modembcc"},"content":" private static final String FXML \u003d \"TaskListPanel.fxml\";","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":17,"author":{"gitId":"modembcc"},"content":" public final Person currentProject;","lastModifiedDate":"2024-03-22"},{"lineNumber":18,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"author":{"gitId":"modembcc"},"content":" @FXML","lastModifiedDate":"2024-03-22"},{"lineNumber":20,"author":{"gitId":"modembcc"},"content":" private Label showingProjectName;","lastModifiedDate":"2024-03-22"},{"lineNumber":21,"author":{"gitId":"modembcc"},"content":" @FXML","lastModifiedDate":"2024-03-22"},{"lineNumber":22,"author":{"gitId":"modembcc"},"content":" private ListView\u003cTask\u003e undoneTaskListView;","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"modembcc"},"content":" @FXML","lastModifiedDate":"2024-03-22"},{"lineNumber":24,"author":{"gitId":"modembcc"},"content":" private ListView\u003cTask\u003e doneTaskListView;","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":26,"author":{"gitId":"modembcc"},"content":" /**","lastModifiedDate":"2024-03-22"},{"lineNumber":27,"author":{"gitId":"modembcc"},"content":" * Creates a {@code PersonListPanel} with the given {@code ObservableList}.","lastModifiedDate":"2024-03-22"},{"lineNumber":28,"author":{"gitId":"modembcc"},"content":" */","lastModifiedDate":"2024-03-22"},{"lineNumber":29,"author":{"gitId":"modembcc"},"content":" public TaskListPanel(Person currentProject) {","lastModifiedDate":"2024-03-22"},{"lineNumber":30,"author":{"gitId":"modembcc"},"content":" super(FXML);","lastModifiedDate":"2024-03-22"},{"lineNumber":31,"author":{"gitId":"modembcc"},"content":" this.currentProject \u003d currentProject;","lastModifiedDate":"2024-03-22"},{"lineNumber":32,"author":{"gitId":"modembcc"},"content":" showingProjectName.setText(\"Showing Project: \" + currentProject.getName().fullName);","lastModifiedDate":"2024-03-22"},{"lineNumber":33,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":34,"author":{"gitId":"modembcc"},"content":" undoneTaskListView.getItems().clear();","lastModifiedDate":"2024-03-22"},{"lineNumber":35,"author":{"gitId":"modembcc"},"content":" undoneTaskListView.getItems().addAll(currentProject.getUndoneTasks());","lastModifiedDate":"2024-03-22"},{"lineNumber":36,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":37,"author":{"gitId":"modembcc"},"content":" undoneTaskListView.setCellFactory(param -\u003e new TaskListCell());","lastModifiedDate":"2024-03-22"},{"lineNumber":38,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":39,"author":{"gitId":"modembcc"},"content":" doneTaskListView.getItems().clear();","lastModifiedDate":"2024-03-22"},{"lineNumber":40,"author":{"gitId":"modembcc"},"content":" doneTaskListView.getItems().addAll(currentProject.getDoneTasks());","lastModifiedDate":"2024-03-22"},{"lineNumber":41,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":42,"author":{"gitId":"modembcc"},"content":" doneTaskListView.setCellFactory(param -\u003e new TaskListCell());","lastModifiedDate":"2024-03-22"},{"lineNumber":43,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":44,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":45,"author":{"gitId":"modembcc"},"content":" class TaskListCell extends ListCell\u003cTask\u003e {","lastModifiedDate":"2024-03-22"},{"lineNumber":46,"author":{"gitId":"modembcc"},"content":" @Override","lastModifiedDate":"2024-03-22"},{"lineNumber":47,"author":{"gitId":"modembcc"},"content":" protected void updateItem(Task task, boolean empty) {","lastModifiedDate":"2024-03-22"},{"lineNumber":48,"author":{"gitId":"modembcc"},"content":" super.updateItem(task, empty);","lastModifiedDate":"2024-03-22"},{"lineNumber":49,"author":{"gitId":"modembcc"},"content":" if (empty || task \u003d\u003d null) {","lastModifiedDate":"2024-03-22"},{"lineNumber":50,"author":{"gitId":"modembcc"},"content":" setGraphic(null);","lastModifiedDate":"2024-03-22"},{"lineNumber":51,"author":{"gitId":"modembcc"},"content":" } else {","lastModifiedDate":"2024-03-22"},{"lineNumber":52,"author":{"gitId":"modembcc"},"content":" setGraphic(new TaskCard(task).getRoot());","lastModifiedDate":"2024-03-22"},{"lineNumber":53,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":54,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":55,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":56,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":57,"author":{"gitId":"modembcc"},"content":"}","lastModifiedDate":"2024-03-22"}],"authorContributionMap":{"modembcc":57}},{"path":"src/main/resources/view/CurrentProjectPanel.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"modembcc"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":3,"author":{"gitId":"modembcc"},"content":"\u003c?import javafx.scene.control.ListView?\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":4,"author":{"gitId":"modembcc"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":5,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":6,"author":{"gitId":"modembcc"},"content":"\u003cVBox xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":7,"author":{"gitId":"modembcc"},"content":" \u003cListView fx:id\u003d\"currentProjectView\" VBox.vgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":8,"author":{"gitId":"modembcc"},"content":"\u003c/VBox\u003e","lastModifiedDate":"2024-03-22"}],"authorContributionMap":{"modembcc":8}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2016-08-26"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Menu?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuBar?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuItem?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.SplitPane?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":13,"author":{"gitId":"modembcc"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"\u003cfx:root type\u003d\"javafx.stage.Stage\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"","lastModifiedDate":"2023-07-27"},{"lineNumber":16,"author":{"gitId":"modembcc"},"content":" title\u003d\"Address App\" onCloseRequest\u003d\"#handleExit\"\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cicons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cImage url\u003d\"@/images/address_book_32.png\" /\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003c/icons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cscene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cScene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@DarkTheme.css\" /\u003e","lastModifiedDate":"2016-08-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@Extensions.css\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cVBox\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cMenuBar fx:id\u003d\"menuBar\" VBox.vgrow\u003d\"NEVER\"\u003e","lastModifiedDate":"2017-06-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"File\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003cMenuItem mnemonicParsing\u003d\"false\" onAction\u003d\"#handleExit\" text\u003d\"Exit\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"Help\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003cMenuItem fx:id\u003d\"helpMenuItem\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleHelp\" text\u003d\"Help\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003c/MenuBar\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"modembcc"},"content":" \u003cHBox\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"modembcc"},"content":" \u003cVBox\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"modembcc"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"commandBoxPlaceholder\" styleClass\u003d\"pane-with-border\"\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":40,"author":{"gitId":"modembcc"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":42,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"resultDisplayPlaceholder\" styleClass\u003d\"pane-with-border\"","lastModifiedDate":"2017-05-15"},{"lineNumber":45,"author":{"gitId":"modembcc"},"content":" minHeight\u003d\"100\" prefHeight\u003d\"100\" maxHeight\u003d\"100\"\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":47,"author":{"gitId":"modembcc"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":51,"author":{"gitId":"modembcc"},"content":" \u003cVBox fx:id\u003d\"personList\" styleClass\u003d\"pane-with-border\"","lastModifiedDate":"2024-03-22"},{"lineNumber":52,"author":{"gitId":"modembcc"},"content":" minWidth\u003d\"360\" prefWidth\u003d\"360\" VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"10\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"personListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\"/\u003e","lastModifiedDate":"2017-06-21"},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"modembcc"},"content":" \u003cVBox fx:id\u003d\"currentProject\" styleClass\u003d\"pane-with-border\"","lastModifiedDate":"2024-03-22"},{"lineNumber":60,"author":{"gitId":"modembcc"},"content":" minWidth\u003d\"640\" prefWidth\u003d\"640\" VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":61,"author":{"gitId":"modembcc"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"modembcc"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"10\" left\u003d\"10\" /\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"modembcc"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"modembcc"},"content":" \u003cStackPane fx:id\u003d\"currentProjectPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\"/\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":65,"author":{"gitId":"modembcc"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":66,"author":{"gitId":"modembcc"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"-"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":69,"author":{"gitId":"-"},"content":" \u003c/scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":70,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-11-29"}],"authorContributionMap":{"modembcc":18,"-":52}},{"path":"src/main/resources/view/PersonListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003cHBox id\u003d\"cardPane\" fx:id\u003d\"cardPane\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-07-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2017-03-28"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"modembcc"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"40\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003c/Label\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"name\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2016-09-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"modembcc":1,"-":31}},{"path":"src/main/resources/view/TaskListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"modembcc"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":3,"author":{"gitId":"modembcc"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":4,"author":{"gitId":"modembcc"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":5,"author":{"gitId":"modembcc"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":6,"author":{"gitId":"modembcc"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":7,"author":{"gitId":"modembcc"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":8,"author":{"gitId":"modembcc"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":9,"author":{"gitId":"modembcc"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"modembcc"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"modembcc"},"content":"\u003cHBox id\u003d\"taskCardPane\" fx:id\u003d\"taskCardPane\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"modembcc"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"modembcc"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":15,"author":{"gitId":"modembcc"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"modembcc"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":17,"author":{"gitId":"modembcc"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":18,"author":{"gitId":"modembcc"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"author":{"gitId":"modembcc"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":20,"author":{"gitId":"modembcc"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":21,"author":{"gitId":"modembcc"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":22,"author":{"gitId":"modembcc"},"content":" \u003cLabel fx:id\u003d\"name\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"modembcc"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":24,"author":{"gitId":"modembcc"},"content":" \u003cLabel fx:id\u003d\"member\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$member\" /\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"modembcc"},"content":" \u003cLabel fx:id\u003d\"deadlineDate\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$deadlineDate\" /\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":26,"author":{"gitId":"modembcc"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":27,"author":{"gitId":"modembcc"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":28,"author":{"gitId":"modembcc"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2024-03-22"}],"authorContributionMap":{"modembcc":28}},{"path":"src/main/resources/view/TaskListPanel.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"modembcc"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":3,"author":{"gitId":"modembcc"},"content":"\u003c?import javafx.scene.control.ListView?\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":4,"author":{"gitId":"modembcc"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":5,"author":{"gitId":"modembcc"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":6,"author":{"gitId":"modembcc"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":7,"author":{"gitId":"modembcc"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":8,"author":{"gitId":"modembcc"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":9,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"modembcc"},"content":"\u003cVBox id\u003d\"taskPane\" fx:id\u003d\"taskPane\" minHeight\u003d\"540\" prefHeight\u003d\"540\"","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"modembcc"},"content":" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"modembcc"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" styleClass\u003d\"pane-with-border\"","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"modembcc"},"content":" minWidth\u003d\"280\" prefWidth\u003d\"280\" minHeight\u003d\"64\" prefHeight\u003d\"64\"\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"modembcc"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":15,"author":{"gitId":"modembcc"},"content":" \u003cInsets top\u003d\"20\" right\u003d\"8\" bottom\u003d\"20\" left\u003d\"8\" /\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"modembcc"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":17,"author":{"gitId":"modembcc"},"content":" \u003cLabel fx:id\u003d\"showingProjectName\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":18,"author":{"gitId":"modembcc"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"author":{"gitId":"modembcc"},"content":" \u003cHBox fx:id\u003d\"taskList\" styleClass\u003d\"pane-with-border\"","lastModifiedDate":"2024-03-22"},{"lineNumber":20,"author":{"gitId":"modembcc"},"content":" minHeight\u003d\"540\" prefHeight\u003d\"540\"\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":21,"author":{"gitId":"modembcc"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":22,"author":{"gitId":"modembcc"},"content":" \u003cInsets top\u003d\"20\" right\u003d\"8\" bottom\u003d\"20\" left\u003d\"8\" /\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"modembcc"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":24,"author":{"gitId":"modembcc"},"content":" \u003cVBox styleClass\u003d\"pane-with-border\"\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"modembcc"},"content":" \u003cLabel text\u003d\"Not Done\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":26,"author":{"gitId":"modembcc"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":27,"author":{"gitId":"modembcc"},"content":" \u003cInsets top\u003d\"12\" left\u003d\"12\" /\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":28,"author":{"gitId":"modembcc"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":29,"author":{"gitId":"modembcc"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":30,"author":{"gitId":"modembcc"},"content":" \u003cVBox fx:id\u003d\"undoneTaskList\"","lastModifiedDate":"2024-03-22"},{"lineNumber":31,"author":{"gitId":"modembcc"},"content":" minWidth\u003d\"280\" prefWidth\u003d\"280\" VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":32,"author":{"gitId":"modembcc"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":33,"author":{"gitId":"modembcc"},"content":" \u003cInsets top\u003d\"8\" right\u003d\"8\" bottom\u003d\"8\" left\u003d\"8\" /\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":34,"author":{"gitId":"modembcc"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":35,"author":{"gitId":"modembcc"},"content":" \u003cListView fx:id\u003d\"undoneTaskListView\" VBox.vgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":36,"author":{"gitId":"modembcc"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":37,"author":{"gitId":"modembcc"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":38,"author":{"gitId":"modembcc"},"content":" \u003cVBox styleClass\u003d\"pane-with-border\"\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":39,"author":{"gitId":"modembcc"},"content":" \u003cLabel text\u003d\"Done\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":40,"author":{"gitId":"modembcc"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":41,"author":{"gitId":"modembcc"},"content":" \u003cInsets top\u003d\"12\" left\u003d\"12\" /\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":42,"author":{"gitId":"modembcc"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":43,"author":{"gitId":"modembcc"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":44,"author":{"gitId":"modembcc"},"content":" \u003cVBox fx:id\u003d\"doneTaskList\"","lastModifiedDate":"2024-03-22"},{"lineNumber":45,"author":{"gitId":"modembcc"},"content":" minWidth\u003d\"280\" prefWidth\u003d\"280\" VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":46,"author":{"gitId":"modembcc"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":47,"author":{"gitId":"modembcc"},"content":" \u003cInsets top\u003d\"8\" right\u003d\"8\" bottom\u003d\"8\" left\u003d\"8\" /\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":48,"author":{"gitId":"modembcc"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":49,"author":{"gitId":"modembcc"},"content":" \u003cListView fx:id\u003d\"doneTaskListView\" VBox.vgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":50,"author":{"gitId":"modembcc"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":51,"author":{"gitId":"modembcc"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":52,"author":{"gitId":"modembcc"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":53,"author":{"gitId":"modembcc"},"content":"\u003c/VBox\u003e","lastModifiedDate":"2024-03-22"}],"authorContributionMap":{"modembcc":53}},{"path":"src/test/java/seedu/address/logic/LogicManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":20,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import seedu.address.logic.commands.AddProjectCommand;","lastModifiedDate":"2024-02-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2017-01-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2016-09-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-09"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-31"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-12-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-12-09"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2018-12-09"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2018-12-09"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-12-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":"public class LogicManagerTest {","lastModifiedDate":"2016-09-22"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_IO_EXCEPTION \u003d new IOException(\"dummy IO exception\");","lastModifiedDate":"2023-06-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_AD_EXCEPTION \u003d new AccessDeniedException(\"dummy access denied exception\");","lastModifiedDate":"2023-06-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public Path temporaryFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-20"},{"lineNumber":43,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2018-12-09"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2019-04-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d","lastModifiedDate":"2019-04-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(temporaryFolder.resolve(\"addressBook.json\"));","lastModifiedDate":"2019-04-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2019-04-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2018-12-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-20"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void execute_invalidCommandFormat_throwsParseException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":" String invalidCommand \u003d \"uicfhmowqewca\";","lastModifiedDate":"2017-06-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertParseException(invalidCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-06-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-14"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void execute_commandExecutionError_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":62,"author":{"gitId":"-"},"content":" String deleteCommand \u003d \"delete 9\";","lastModifiedDate":"2017-06-14"},{"lineNumber":63,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" assertParseException(deleteCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2024-03-06"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-19"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void execute_validCommand_success() throws Exception {","lastModifiedDate":"2019-03-14"},{"lineNumber":68,"author":{"gitId":"-"},"content":" String listCommand \u003d ListCommand.COMMAND_WORD;","lastModifiedDate":"2017-06-19"},{"lineNumber":69,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" assertParseException(listCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2024-03-06"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20"},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2019-04-25"},{"lineNumber":74,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" assertEquals(0, 0);","lastModifiedDate":"2024-03-06"},{"lineNumber":75,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-06-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":78,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-06-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2023-06-13"},{"lineNumber":80,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" assertEquals(0, 0);","lastModifiedDate":"2024-03-06"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":86,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":89,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":95,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":96,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14"},{"lineNumber":97,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14"},{"lineNumber":98,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14"},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":103,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":104,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a ParseException is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":106,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":107,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":111,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14"},{"lineNumber":112,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a CommandException is thrown and that the result message is correct.","lastModifiedDate":"2017-06-14"},{"lineNumber":113,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":114,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14"},{"lineNumber":115,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14"},{"lineNumber":116,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":120,"author":{"gitId":"-"},"content":" * Executes the command, confirms that the exception is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":121,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":123,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-05-31"},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":129,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":130,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":131,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":132,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":133,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":134,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":135,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":136,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":137,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31"},{"lineNumber":138,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14"},{"lineNumber":139,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19"},{"lineNumber":142,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":143,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13"},{"lineNumber":144,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13"},{"lineNumber":145,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13"},{"lineNumber":146,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13"},{"lineNumber":147,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":148,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13"},{"lineNumber":149,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":151,"author":{"gitId":"-"},"content":" // Inject LogicManager with an AddressBookStorage that throws the IOException e when saving","lastModifiedDate":"2023-06-13"},{"lineNumber":152,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(prefPath) {","lastModifiedDate":"2023-06-13"},{"lineNumber":153,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":154,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath)","lastModifiedDate":"2023-06-13"},{"lineNumber":155,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13"},{"lineNumber":156,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13"},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":158,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":160,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":161,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13"},{"lineNumber":162,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2023-06-13"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":164,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":166,"author":{"gitId":"-"},"content":" // Triggers the saveAddressBook method by executing an add command","lastModifiedDate":"2023-06-13"},{"lineNumber":167,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" String addCommand \u003d AddProjectCommand.COMMAND_WORD + NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2024-02-29"},{"lineNumber":168,"author":{"gitId":"-"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY;","lastModifiedDate":"2023-06-13"},{"lineNumber":169,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2023-06-13"},{"lineNumber":170,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13"},{"lineNumber":171,"author":{"gitId":"-"},"content":" expectedModel.addPerson(expectedPerson);","lastModifiedDate":"2023-06-13"},{"lineNumber":172,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13"},{"lineNumber":173,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":174,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"Lin-Shuang-Shuang":8,"-":166}},{"path":"src/test/java/seedu/address/logic/commands/AddProjectCommandIntegrationTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-15"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-15"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-15"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-15"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-15"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code AddCommand}.","lastModifiedDate":"2017-06-15"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-15"},{"lineNumber":20,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"public class AddProjectCommandIntegrationTest {","lastModifiedDate":"2024-02-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void execute_newPerson_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":31,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-15"},{"lineNumber":34,"author":{"gitId":"-"},"content":" expectedModel.addPerson(validPerson);","lastModifiedDate":"2017-06-15"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":36,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" assertCommandSuccess(new AddProjectCommand(validPerson), model,","lastModifiedDate":"2024-02-29"},{"lineNumber":37,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" String.format(AddProjectCommand.MESSAGE_SUCCESS, Messages.format(validPerson)),","lastModifiedDate":"2024-02-29"},{"lineNumber":38,"author":{"gitId":"-"},"content":" expectedModel);","lastModifiedDate":"2019-02-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(0);","lastModifiedDate":"2018-01-10"},{"lineNumber":44,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" assertCommandFailure(new AddProjectCommand(personInList), model,","lastModifiedDate":"2024-02-29"},{"lineNumber":45,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" String.format(AddProjectCommand.MESSAGE_DUPLICATE_PERSON, Messages.format(personInList)));","lastModifiedDate":"2024-03-06"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"Lin-Shuang-Shuang":5,"-":43}},{"path":"src/test/java/seedu/address/logic/commands/AddProjectCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-01-10"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-05-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-05-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2017-05-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":25,"author":{"gitId":"ananya21"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":29,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"public class AddProjectCommandTest {","lastModifiedDate":"2024-02-29"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":33,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddProjectCommand(null));","lastModifiedDate":"2024-02-29"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void execute_personAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2017-05-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":" ModelStubAcceptingPersonAdded modelStub \u003d new ModelStubAcceptingPersonAdded();","lastModifiedDate":"2017-05-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":41,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" CommandResult commandResult \u003d new AddProjectCommand(validPerson).execute(modelStub);","lastModifiedDate":"2024-02-29"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":43,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" assertEquals(String.format(AddProjectCommand.MESSAGE_SUCCESS, Messages.format(validPerson)),","lastModifiedDate":"2024-02-29"},{"lineNumber":44,"author":{"gitId":"-"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(validPerson), modelStub.personsAdded);","lastModifiedDate":"2017-05-12"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12"},{"lineNumber":51,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" AddProjectCommand addProjectCommand \u003d new AddProjectCommand(validPerson);","lastModifiedDate":"2024-02-29"},{"lineNumber":52,"author":{"gitId":"-"},"content":" ModelStub modelStub \u003d new ModelStubWithPerson(validPerson);","lastModifiedDate":"2018-08-07"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":54,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" assertThrows(CommandException.class, String.format(AddProjectCommand.MESSAGE_DUPLICATE_PERSON,","lastModifiedDate":"2024-03-06"},{"lineNumber":55,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" Messages.format(validPerson)), () -\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":56,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" addProjectCommand.execute(modelStub));","lastModifiedDate":"2024-03-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-22"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":61,"author":{"gitId":"-"},"content":" Person alice \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2017-06-22"},{"lineNumber":62,"author":{"gitId":"-"},"content":" Person bob \u003d new PersonBuilder().withName(\"Bob\").build();","lastModifiedDate":"2017-06-22"},{"lineNumber":63,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" AddProjectCommand addAliceCommand \u003d new AddProjectCommand(alice);","lastModifiedDate":"2024-02-29"},{"lineNumber":64,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" AddProjectCommand addBobCommand \u003d new AddProjectCommand(bob);","lastModifiedDate":"2024-02-29"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":66,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommand));","lastModifiedDate":"2017-06-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":69,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":70,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" AddProjectCommand addAliceCommandCopy \u003d new AddProjectCommand(alice);","lastModifiedDate":"2024-02-29"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommandCopy));","lastModifiedDate":"2017-06-22"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":73,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(1));","lastModifiedDate":"2017-06-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":76,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(null));","lastModifiedDate":"2017-06-22"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":79,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(addBobCommand));","lastModifiedDate":"2017-06-22"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" AddProjectCommand addProjectCommand \u003d new AddProjectCommand(ALICE);","lastModifiedDate":"2024-02-29"},{"lineNumber":86,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" String expected \u003d AddProjectCommand.class.getCanonicalName() + \"{toAdd\u003d\" + ALICE + \"}\";","lastModifiedDate":"2024-02-29"},{"lineNumber":87,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" assertEquals(expected, addProjectCommand.toString());","lastModifiedDate":"2024-02-29"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2017-05-12"},{"lineNumber":92,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":93,"author":{"gitId":"-"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2017-05-12"},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":96,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27"},{"lineNumber":101,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":105,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":106,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":110,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":111,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":114,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":115,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":116,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":119,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":120,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27"},{"lineNumber":121,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":124,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":125,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":126,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":129,"author":{"gitId":"ananya21"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":130,"author":{"gitId":"ananya21"},"content":" public Person findPerson(Name name) {","lastModifiedDate":"2024-03-18"},{"lineNumber":131,"author":{"gitId":"ananya21"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-18"},{"lineNumber":132,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":133,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":134,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":135,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2018-11-27"},{"lineNumber":136,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":139,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":140,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-12"},{"lineNumber":141,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":144,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":145,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06"},{"lineNumber":146,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":149,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":150,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-08"},{"lineNumber":151,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":152,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":154,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":155,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":156,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":159,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":160,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":161,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":162,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":164,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":165,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10"},{"lineNumber":166,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":167,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":168,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":169,"author":{"gitId":"modembcc"},"content":" @Override","lastModifiedDate":"2024-03-22"},{"lineNumber":170,"author":{"gitId":"modembcc"},"content":" public ObservableList\u003cPerson\u003e getCurrentProject() {","lastModifiedDate":"2024-03-22"},{"lineNumber":171,"author":{"gitId":"modembcc"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-22"},{"lineNumber":172,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":173,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":174,"author":{"gitId":"modembcc"},"content":" @Override","lastModifiedDate":"2024-03-22"},{"lineNumber":175,"author":{"gitId":"modembcc"},"content":" public void updateCurrentProject(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2024-03-22"},{"lineNumber":176,"author":{"gitId":"modembcc"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-22"},{"lineNumber":177,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":180,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":181,"author":{"gitId":"-"},"content":" * A Model stub that contains a single person.","lastModifiedDate":"2018-08-07"},{"lineNumber":182,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":183,"author":{"gitId":"-"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2018-08-07"},{"lineNumber":184,"author":{"gitId":"-"},"content":" private final Person person;","lastModifiedDate":"2018-08-07"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":186,"author":{"gitId":"-"},"content":" ModelStubWithPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":187,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":188,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2018-08-07"},{"lineNumber":189,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":191,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":192,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":193,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":194,"author":{"gitId":"-"},"content":" return this.person.isSamePerson(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":198,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":199,"author":{"gitId":"-"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2017-05-12"},{"lineNumber":200,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":201,"author":{"gitId":"-"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2017-05-12"},{"lineNumber":202,"author":{"gitId":"-"},"content":" final ArrayList\u003cPerson\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2017-05-12"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":204,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07"},{"lineNumber":205,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":206,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":207,"author":{"gitId":"-"},"content":" return personsAdded.stream().anyMatch(person::isSamePerson);","lastModifiedDate":"2018-08-07"},{"lineNumber":208,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":210,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":211,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-08"},{"lineNumber":212,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":213,"author":{"gitId":"-"},"content":" personsAdded.add(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":214,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":216,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":217,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04"},{"lineNumber":218,"author":{"gitId":"-"},"content":" return new AddressBook();","lastModifiedDate":"2017-05-04"},{"lineNumber":219,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":220,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":222,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12"}],"authorContributionMap":{"modembcc":10,"Lin-Shuang-Shuang":14,"-":192,"ananya21":6}},{"path":"src/test/java/seedu/address/logic/commands/AddTaskCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"ananya21"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"ananya21"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"ananya21"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"ananya21"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"ananya21"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"ananya21"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"ananya21"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"ananya21"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import seedu.address.model.project.Task;","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"ananya21"},"content":"public class AddTaskCommandTest {","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"ananya21"},"content":" private Person taskProject \u003d new Person(new Name(\"default\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"ananya21"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"ananya21"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddTaskCommand(null, taskProject));","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public void equals() {","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"ananya21"},"content":" Task alice \u003d new Task(\"Alice\");","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"ananya21"},"content":" Task bob \u003d new Task(\"Bob\");","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"ananya21"},"content":" AddTaskCommand addAliceCommand \u003d new AddTaskCommand(alice, taskProject);","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"ananya21"},"content":" AddTaskCommand addBobCommand \u003d new AddTaskCommand(bob, taskProject);","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"ananya21"},"content":" assertTrue(addAliceCommand.equals(addAliceCommand));","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"ananya21"},"content":" AddTaskCommand addAliceCommandCopy \u003d new AddTaskCommand(alice, taskProject);","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"ananya21"},"content":" assertTrue(addAliceCommand.equals(addAliceCommandCopy));","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"ananya21"},"content":" assertFalse(addAliceCommand.equals(1));","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"ananya21"},"content":" assertFalse(addAliceCommand.equals(null));","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"ananya21"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"ananya21"},"content":" assertFalse(addAliceCommand.equals(addBobCommand));","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":75,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":76,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":77,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2024-03-21"},{"lineNumber":78,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-21"},{"lineNumber":79,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":81,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2024-03-21"},{"lineNumber":83,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-21"},{"lineNumber":84,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":85,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":86,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":87,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-21"},{"lineNumber":89,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":90,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":91,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":92,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2024-03-21"},{"lineNumber":93,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-21"},{"lineNumber":94,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":95,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":96,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":97,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public Person findPerson(Name name) {","lastModifiedDate":"2024-03-21"},{"lineNumber":98,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-21"},{"lineNumber":99,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":100,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":101,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":102,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2024-03-21"},{"lineNumber":103,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-21"},{"lineNumber":104,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":105,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":106,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":107,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2024-03-21"},{"lineNumber":108,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-21"},{"lineNumber":109,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":110,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":111,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":112,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2024-03-21"},{"lineNumber":113,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-21"},{"lineNumber":114,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":115,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":116,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":117,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2024-03-21"},{"lineNumber":118,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-21"},{"lineNumber":119,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":120,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":121,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":122,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2024-03-21"},{"lineNumber":123,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-21"},{"lineNumber":124,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":125,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":126,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":127,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2024-03-21"},{"lineNumber":128,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-21"},{"lineNumber":129,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":130,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":131,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":132,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2024-03-21"},{"lineNumber":133,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-21"},{"lineNumber":134,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":135,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":136,"author":{"gitId":"modembcc"},"content":" @Override","lastModifiedDate":"2024-03-22"},{"lineNumber":137,"author":{"gitId":"modembcc"},"content":" public ObservableList\u003cPerson\u003e getCurrentProject() {","lastModifiedDate":"2024-03-22"},{"lineNumber":138,"author":{"gitId":"modembcc"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-22"},{"lineNumber":139,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":140,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":141,"author":{"gitId":"modembcc"},"content":" @Override","lastModifiedDate":"2024-03-22"},{"lineNumber":142,"author":{"gitId":"modembcc"},"content":" public void updateCurrentProject(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2024-03-22"},{"lineNumber":143,"author":{"gitId":"modembcc"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-22"},{"lineNumber":144,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":145,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":146,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":147,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":148,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" * A Model stub that contains a single person.","lastModifiedDate":"2024-03-21"},{"lineNumber":149,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":150,"author":{"gitId":"ananya21"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2024-03-21"},{"lineNumber":151,"author":{"gitId":"ananya21"},"content":" private final Person person;","lastModifiedDate":"2024-03-21"},{"lineNumber":152,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":153,"author":{"gitId":"ananya21"},"content":" ModelStubWithPerson(Person person) {","lastModifiedDate":"2024-03-21"},{"lineNumber":154,"author":{"gitId":"ananya21"},"content":" requireNonNull(person);","lastModifiedDate":"2024-03-21"},{"lineNumber":155,"author":{"gitId":"ananya21"},"content":" this.person \u003d person;","lastModifiedDate":"2024-03-21"},{"lineNumber":156,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":157,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":158,"author":{"gitId":"ananya21"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":159,"author":{"gitId":"ananya21"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2024-03-21"},{"lineNumber":160,"author":{"gitId":"ananya21"},"content":" requireNonNull(person);","lastModifiedDate":"2024-03-21"},{"lineNumber":161,"author":{"gitId":"ananya21"},"content":" return this.person.isSamePerson(person);","lastModifiedDate":"2024-03-21"},{"lineNumber":162,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":163,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":164,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":165,"author":{"gitId":"ananya21"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":166,"author":{"gitId":"ananya21"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2024-03-21"},{"lineNumber":167,"author":{"gitId":"ananya21"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":168,"author":{"gitId":"ananya21"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2024-03-21"},{"lineNumber":169,"author":{"gitId":"ananya21"},"content":" final ArrayList\u003cPerson\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-21"},{"lineNumber":170,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":171,"author":{"gitId":"ananya21"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":172,"author":{"gitId":"ananya21"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2024-03-21"},{"lineNumber":173,"author":{"gitId":"ananya21"},"content":" requireNonNull(person);","lastModifiedDate":"2024-03-21"},{"lineNumber":174,"author":{"gitId":"ananya21"},"content":" return personsAdded.stream().anyMatch(person::isSamePerson);","lastModifiedDate":"2024-03-21"},{"lineNumber":175,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":176,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":177,"author":{"gitId":"ananya21"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":178,"author":{"gitId":"ananya21"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2024-03-21"},{"lineNumber":179,"author":{"gitId":"ananya21"},"content":" requireNonNull(person);","lastModifiedDate":"2024-03-21"},{"lineNumber":180,"author":{"gitId":"ananya21"},"content":" personsAdded.add(person);","lastModifiedDate":"2024-03-21"},{"lineNumber":181,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":182,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":183,"author":{"gitId":"ananya21"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":184,"author":{"gitId":"ananya21"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2024-03-21"},{"lineNumber":185,"author":{"gitId":"ananya21"},"content":" return new AddressBook();","lastModifiedDate":"2024-03-21"},{"lineNumber":186,"author":{"gitId":"ananya21"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":187,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":188,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":189,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"modembcc":10,"Lin-Shuang-Shuang":117,"ananya21":62}},{"path":"src/test/java/seedu/address/logic/commands/DeleteProjectCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"ananya21"},"content":"import static seedu.address.logic.commands.DeleteProjectCommand.MESSAGE_PROJECT_NOT_FOUND;","lastModifiedDate":"2024-03-22"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2020-12-16"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * {@code DeleteCommand}.","lastModifiedDate":"2018-01-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":24,"author":{"gitId":"modembcc"},"content":"public class DeleteProjectCommandTest {","lastModifiedDate":"2024-03-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":29,"author":{"gitId":"modembcc"},"content":" public void execute_validProject_success() {","lastModifiedDate":"2024-03-15"},{"lineNumber":30,"author":{"gitId":"modembcc"},"content":" Person projectToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-03-15"},{"lineNumber":31,"author":{"gitId":"modembcc"},"content":" DeleteProjectCommand deleteCommand \u003d new DeleteProjectCommand(projectToDelete.getName().fullName);","lastModifiedDate":"2024-03-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":33,"author":{"gitId":"modembcc"},"content":" String expectedMessage \u003d String.format(DeleteProjectCommand.MESSAGE_DELETE_PROJECT_SUCCESS,","lastModifiedDate":"2024-03-15"},{"lineNumber":34,"author":{"gitId":"modembcc"},"content":" Messages.format(projectToDelete));","lastModifiedDate":"2024-03-15"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":37,"author":{"gitId":"modembcc"},"content":" expectedModel.deletePerson(projectToDelete);","lastModifiedDate":"2024-03-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":43,"author":{"gitId":"modembcc"},"content":" public void execute_invalidProject_throwsCommandException() {","lastModifiedDate":"2024-03-15"},{"lineNumber":44,"author":{"gitId":"modembcc"},"content":" DeleteProjectCommand deleteCommand \u003d new DeleteProjectCommand(\"thereisnoproject withthisname\");","lastModifiedDate":"2024-03-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":46,"author":{"gitId":"ananya21"},"content":" assertCommandFailure(deleteCommand, model, String.format(MESSAGE_PROJECT_NOT_FOUND,","lastModifiedDate":"2024-03-22"},{"lineNumber":47,"author":{"gitId":"ananya21"},"content":" \"thereisnoproject withthisname\"));","lastModifiedDate":"2024-03-22"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":52,"author":{"gitId":"modembcc"},"content":" DeleteProjectCommand deleteFirstCommand \u003d new DeleteProjectCommand(\"FirstProject\");","lastModifiedDate":"2024-03-15"},{"lineNumber":53,"author":{"gitId":"modembcc"},"content":" DeleteProjectCommand deleteSecondCommand \u003d new DeleteProjectCommand(\"SecondProject\");","lastModifiedDate":"2024-03-15"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":59,"author":{"gitId":"modembcc"},"content":" DeleteProjectCommand deleteFirstCommandCopy \u003d new DeleteProjectCommand(\"FirstProject\");","lastModifiedDate":"2024-03-15"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2017-06-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2017-06-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2017-06-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":74,"author":{"gitId":"modembcc"},"content":" String targetName \u003d \"Dummy Project\";","lastModifiedDate":"2024-03-15"},{"lineNumber":75,"author":{"gitId":"modembcc"},"content":" DeleteProjectCommand deleteCommand \u003d new DeleteProjectCommand(targetName);","lastModifiedDate":"2024-03-15"},{"lineNumber":76,"author":{"gitId":"modembcc"},"content":" String expected \u003d DeleteProjectCommand.class.getCanonicalName() + \"{targetName\u003d\" + targetName + \"}\";","lastModifiedDate":"2024-03-15"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertEquals(expected, deleteCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"modembcc":15,"-":61,"ananya21":3}},{"path":"src/test/java/seedu/address/logic/commands/DeleteTaskCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"ananya21"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"ananya21"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"ananya21"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"ananya21"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"ananya21"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import seedu.address.model.project.Task;","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"class DeleteTaskCommandTest {","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"ananya21"},"content":" private Task tempTask1 \u003d new Task(\"rehearse\");","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"ananya21"},"content":" private Task tempTask2 \u003d new Task(\"Write script\");","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"ananya21"},"content":" private Person presentation \u003d new PersonBuilder().withName(\"Presentation\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"ananya21"},"content":" private Person codingProject \u003d new PersonBuilder().withName(\"Coding Project\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public void equals() {","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" DeleteTaskCommand deleteFirstCommand \u003d new DeleteTaskCommand(tempTask1, presentation);","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" DeleteTaskCommand deleteSecondCommand \u003d new DeleteTaskCommand(tempTask1, codingProject);","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" DeleteTaskCommand deleteThirdCommand \u003d new DeleteTaskCommand(tempTask2, presentation);","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" DeleteTaskCommand deleteFirstCommandCopy \u003d new DeleteTaskCommand(tempTask1, presentation);","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" // different project, same task -\u003e returns false (FAILED!)","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" // same project, different task -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" assertFalse(deleteFirstCommand.equals(deleteThirdCommand));","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" // different project, different task -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" assertFalse(deleteSecondCommand.equals(deleteThirdCommand));","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" String targetName \u003d \"rehearse\";","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" DeleteTaskCommand deleteCommand \u003d new DeleteTaskCommand(tempTask1, presentation);","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" String expected \u003d DeleteTaskCommand.class.getCanonicalName() + \"{toDelete\u003d\" + tempTask1 + \"}\";","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" assertEquals(expected, deleteCommand.toString());","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"Lin-Shuang-Shuang":51,"ananya21":10}},{"path":"src/test/java/seedu/address/logic/commands/EditCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-05-04"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-04"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-22"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-04"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-04"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for EditCommand.","lastModifiedDate":"2020-12-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-04"},{"lineNumber":34,"author":{"gitId":"-"},"content":"public class EditCommandTest {","lastModifiedDate":"2017-05-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":40,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-26"},{"lineNumber":41,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(editedPerson).build();","lastModifiedDate":"2024-03-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, descriptor);","lastModifiedDate":"2024-03-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":44,"author":{"gitId":"modembcc"},"content":" String expectedMessage \u003d String.format(","lastModifiedDate":"2024-03-15"},{"lineNumber":45,"author":{"gitId":"modembcc"},"content":" EditCommand.MESSAGE_EDIT_PERSON_SUCCESS,","lastModifiedDate":"2024-03-15"},{"lineNumber":46,"author":{"gitId":"modembcc"},"content":" Messages.format(editedPerson));","lastModifiedDate":"2024-03-15"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":48,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":51,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" //Filtering not yet implemented","lastModifiedDate":"2024-03-06"},{"lineNumber":52,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" assertEquals(0, 0);","lastModifiedDate":"2024-03-06"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":57,"author":{"gitId":"-"},"content":" Index indexLastPerson \u003d Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2017-05-18"},{"lineNumber":58,"author":{"gitId":"-"},"content":" Person lastPerson \u003d model.getFilteredPersonList().get(indexLastPerson.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":60,"author":{"gitId":"-"},"content":" PersonBuilder personInList \u003d new PersonBuilder(lastPerson);","lastModifiedDate":"2017-05-18"},{"lineNumber":61,"author":{"gitId":"-"},"content":" Person editedPerson \u003d personInList.withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-18"},{"lineNumber":62,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":64,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-05-18"},{"lineNumber":65,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18"},{"lineNumber":66,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(indexLastPerson, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":68,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":70,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":71,"author":{"gitId":"-"},"content":" expectedModel.setPerson(lastPerson, editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":78,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, new EditPersonDescriptor());","lastModifiedDate":"2018-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":" Person editedPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":81,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":83,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":90,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":92,"author":{"gitId":"-"},"content":" Person personInFilteredList \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":93,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder(personInFilteredList).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08"},{"lineNumber":95,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":97,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":99,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":106,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonUnfilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":107,"author":{"gitId":"-"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-03-15"},{"lineNumber":108,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(firstPerson).build();","lastModifiedDate":"2024-03-15"},{"lineNumber":109,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_SECOND_PERSON, descriptor);","lastModifiedDate":"2024-03-15"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":111,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" assertEquals(0, 0);","lastModifiedDate":"2024-03-06"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":114,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":115,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonFilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":116,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":118,"author":{"gitId":"-"},"content":" // edit person in filtered list into a duplicate in address book","lastModifiedDate":"2017-05-18"},{"lineNumber":119,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(INDEX_SECOND_PERSON.getZeroBased());","lastModifiedDate":"2024-03-15"},{"lineNumber":120,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2024-03-15"},{"lineNumber":121,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder(personInList).build());","lastModifiedDate":"2024-03-15"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":123,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" // Filtering not yet implemented","lastModifiedDate":"2024-03-06"},{"lineNumber":124,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" assertEquals(0, 0);","lastModifiedDate":"2024-03-06"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":128,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":129,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-05-18"},{"lineNumber":130,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-22"},{"lineNumber":131,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":133,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":136,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-18"},{"lineNumber":137,"author":{"gitId":"-"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2017-05-18"},{"lineNumber":138,"author":{"gitId":"-"},"content":" * but smaller than size of address book","lastModifiedDate":"2017-05-18"},{"lineNumber":139,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-18"},{"lineNumber":140,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":141,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":142,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":143,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-18"},{"lineNumber":144,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-05-18"},{"lineNumber":145,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-05-18"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":147,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex,","lastModifiedDate":"2018-08-08"},{"lineNumber":148,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":150,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":153,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":155,"author":{"gitId":"-"},"content":" final EditCommand standardCommand \u003d new EditCommand(INDEX_FIRST_PERSON, DESC_AMY);","lastModifiedDate":"2018-08-08"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":157,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":158,"author":{"gitId":"-"},"content":" EditPersonDescriptor copyDescriptor \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-08"},{"lineNumber":159,"author":{"gitId":"-"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(INDEX_FIRST_PERSON, copyDescriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":160,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":162,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":163,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":166,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":168,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":169,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2017-05-08"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":171,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":172,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_SECOND_PERSON, DESC_AMY)));","lastModifiedDate":"2017-05-25"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":174,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":175,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_FIRST_PERSON, DESC_BOB)));","lastModifiedDate":"2017-05-25"},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":178,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2019-02-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":" String expected \u003d EditCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", editPersonDescriptor\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":" + editPersonDescriptor + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08"}],"authorContributionMap":{"modembcc":3,"Lin-Shuang-Shuang":5,"-":180}},{"path":"src/test/java/seedu/address/logic/parser/AddProjectCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-15"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2017-12-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-07-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-07-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":13,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import seedu.address.logic.commands.AddProjectCommand;","lastModifiedDate":"2024-02-29"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":17,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"public class AddProjectCommandParserTest {","lastModifiedDate":"2024-02-29"},{"lineNumber":18,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" private AddProjectCommandParser parser \u003d new AddProjectCommandParser();","lastModifiedDate":"2024-02-29"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":22,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2018-07-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":25,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + \"Bob Choo\", new AddProjectCommand(expectedPerson));","lastModifiedDate":"2024-03-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":27,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // zero tags","lastModifiedDate":"2017-06-15"},{"lineNumber":34,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2018-07-25"},{"lineNumber":35,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" assertParseSuccess(parser, \"Amy Bee\",","lastModifiedDate":"2024-03-06"},{"lineNumber":36,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" new AddProjectCommand(expectedPerson));","lastModifiedDate":"2024-02-29"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":41,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddProjectCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-02-29"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":44,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" assertParseFailure(parser, \"\",","lastModifiedDate":"2024-03-06"},{"lineNumber":45,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"Lin-Shuang-Shuang":9,"-":39}},{"path":"src/test/java/seedu/address/logic/parser/AddressBookParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-15"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2024-03-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":13,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import seedu.address.logic.commands.AddProjectCommand;","lastModifiedDate":"2024-02-29"},{"lineNumber":14,"author":{"gitId":"modembcc"},"content":"import seedu.address.logic.commands.DeleteProjectCommand;","lastModifiedDate":"2024-03-15"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2024-03-15"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2024-03-15"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonUtil;","lastModifiedDate":"2017-06-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":28,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public void parseCommand_addProject() throws Exception {","lastModifiedDate":"2024-03-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":30,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" AddProjectCommand command \u003d (AddProjectCommand) parser.parseCommand(PersonUtil.getAddCommand(person));","lastModifiedDate":"2024-02-29"},{"lineNumber":31,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" assertEquals(new AddProjectCommand(person), command);","lastModifiedDate":"2024-02-29"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":35,"author":{"gitId":"modembcc"},"content":" public void parseCommand_deleteProject() throws Exception {","lastModifiedDate":"2024-03-15"},{"lineNumber":36,"author":{"gitId":"modembcc"},"content":" DeleteProjectCommand command \u003d (DeleteProjectCommand) parser.parseCommand(","lastModifiedDate":"2024-03-15"},{"lineNumber":37,"author":{"gitId":"modembcc"},"content":" DeleteProjectCommand.COMMAND_WORD + \" \" + \"Dummy Project\");","lastModifiedDate":"2024-03-15"},{"lineNumber":38,"author":{"gitId":"modembcc"},"content":" assertEquals(new DeleteProjectCommand(\"Dummy Project\"), command);","lastModifiedDate":"2024-03-15"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":42,"author":{"gitId":"modembcc"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2024-03-15"},{"lineNumber":43,"author":{"gitId":"modembcc"},"content":" //clear function not yet implemented","lastModifiedDate":"2024-03-15"},{"lineNumber":44,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" assertEquals(0, 0);","lastModifiedDate":"2024-03-06"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2024-03-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(person).build();","lastModifiedDate":"2024-03-15"},{"lineNumber":51,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" //edit function not yet implemented","lastModifiedDate":"2024-03-06"},{"lineNumber":52,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" assertEquals(0, 0);","lastModifiedDate":"2024-03-06"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":57,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" //exit function not yet implemented","lastModifiedDate":"2024-03-06"},{"lineNumber":58,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" assertEquals(0, 0);","lastModifiedDate":"2024-03-06"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2024-03-15"},{"lineNumber":64,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" //find function not yet implemented","lastModifiedDate":"2024-03-06"},{"lineNumber":65,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" assertEquals(0, 0);","lastModifiedDate":"2024-03-06"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":70,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" //help function not yet implemented","lastModifiedDate":"2024-03-06"},{"lineNumber":71,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" assertEquals(0, 0);","lastModifiedDate":"2024-03-06"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":76,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" //list function not yet implemented","lastModifiedDate":"2024-03-06"},{"lineNumber":77,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" assertEquals(0, 0);","lastModifiedDate":"2024-03-06"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"modembcc":7,"Lin-Shuang-Shuang":15,"-":68}},{"path":"src/test/java/seedu/address/logic/parser/DeleteProjectCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-09"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":9,"author":{"gitId":"modembcc"},"content":"import seedu.address.logic.commands.DeleteProjectCommand;","lastModifiedDate":"2024-03-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * As we are only doing white-box testing, our test cases do not cover path variations","lastModifiedDate":"2017-06-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * outside of the DeleteCommand code. For example, inputs \"1\" and \"1 abc\" take the","lastModifiedDate":"2017-06-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * same path through the DeleteCommand, and therefore we test only one of them.","lastModifiedDate":"2017-06-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * The path variation for those two cases occur inside the ParserUtil, and","lastModifiedDate":"2017-06-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * therefore should be covered by the ParserUtilTest.","lastModifiedDate":"2017-06-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-09"},{"lineNumber":18,"author":{"gitId":"modembcc"},"content":"public class DeleteProjectCommandParserTest {","lastModifiedDate":"2024-03-15"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":20,"author":{"gitId":"modembcc"},"content":" private DeleteProjectCommandParser parser \u003d new DeleteProjectCommandParser();","lastModifiedDate":"2024-03-15"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void parse_validArgs_returnsDeleteCommand() {","lastModifiedDate":"2017-08-15"},{"lineNumber":24,"author":{"gitId":"modembcc"},"content":" assertParseSuccess(parser, \"Dummy Project\", new DeleteProjectCommand(\"Dummy Project\"));","lastModifiedDate":"2024-03-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09"},{"lineNumber":28,"author":{"gitId":"modembcc"},"content":" public void parse_emptyArgs_throwsParseException() {","lastModifiedDate":"2024-03-15"},{"lineNumber":29,"author":{"gitId":"modembcc"},"content":" assertParseFailure(","lastModifiedDate":"2024-03-15"},{"lineNumber":30,"author":{"gitId":"modembcc"},"content":" parser,","lastModifiedDate":"2024-03-15"},{"lineNumber":31,"author":{"gitId":"modembcc"},"content":" \"\",","lastModifiedDate":"2024-03-15"},{"lineNumber":32,"author":{"gitId":"modembcc"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteProjectCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-09"}],"authorContributionMap":{"modembcc":9,"-":25}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedPersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class JsonAdaptedPersonTest {","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"modembcc"},"content":" // private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2024-03-15"},{"lineNumber":11,"author":{"gitId":"modembcc"},"content":" // private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2024-03-15"},{"lineNumber":12,"author":{"gitId":"modembcc"},"content":" // private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2024-03-15"},{"lineNumber":13,"author":{"gitId":"modembcc"},"content":" // private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2024-03-15"},{"lineNumber":14,"author":{"gitId":"modembcc"},"content":" // private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2024-03-15"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"modembcc"},"content":" // private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2024-03-15"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public void toModelType_validPersonDetails_returnsPerson() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(BENSON);","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":" assertEquals(BENSON, person.toModelType());","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"modembcc":6,"-":21}},{"path":"src/test/java/seedu/address/testutil/PersonBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":3,"author":{"gitId":"modembcc"},"content":"// import java.util.HashSet;","lastModifiedDate":"2024-03-15"},{"lineNumber":4,"author":{"gitId":"modembcc"},"content":"// import java.util.Set;","lastModifiedDate":"2024-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":6,"author":{"gitId":"modembcc"},"content":"// import seedu.address.model.person.Address;","lastModifiedDate":"2024-03-15"},{"lineNumber":7,"author":{"gitId":"modembcc"},"content":"// import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-15"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-01-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-04-05"},{"lineNumber":10,"author":{"gitId":"modembcc"},"content":"// import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-15"},{"lineNumber":11,"author":{"gitId":"modembcc"},"content":"// import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-15"},{"lineNumber":12,"author":{"gitId":"modembcc"},"content":"// import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2024-03-15"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * A utility class to help with building Person objects.","lastModifiedDate":"2017-04-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class PersonBuilder {","lastModifiedDate":"2016-09-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2020-12-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2017-04-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2020-12-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2017-04-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":25,"author":{"gitId":"modembcc"},"content":" // private Phone phone;","lastModifiedDate":"2024-03-15"},{"lineNumber":26,"author":{"gitId":"modembcc"},"content":" // private Email email;","lastModifiedDate":"2024-03-15"},{"lineNumber":27,"author":{"gitId":"modembcc"},"content":" // private Address address;","lastModifiedDate":"2024-03-15"},{"lineNumber":28,"author":{"gitId":"modembcc"},"content":" // private Set\u003cTag\u003e tags;","lastModifiedDate":"2024-03-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2020-05-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public PersonBuilder() {","lastModifiedDate":"2017-08-15"},{"lineNumber":34,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20"},{"lineNumber":35,"author":{"gitId":"modembcc"},"content":" // phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2024-03-15"},{"lineNumber":36,"author":{"gitId":"modembcc"},"content":" // email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2024-03-15"},{"lineNumber":37,"author":{"gitId":"modembcc"},"content":" // address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2024-03-15"},{"lineNumber":38,"author":{"gitId":"modembcc"},"content":" // tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-15"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Initializes the PersonBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2016-12-11"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public PersonBuilder(Person personToCopy) {","lastModifiedDate":"2018-01-10"},{"lineNumber":45,"author":{"gitId":"-"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2017-12-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11"},{"lineNumber":48,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public PersonBuilder withName(String name) {","lastModifiedDate":"2017-08-15"},{"lineNumber":52,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public PersonBuilder withTags(String ... tags) {","lastModifiedDate":"2017-08-15"},{"lineNumber":60,"author":{"gitId":"modembcc"},"content":" // this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2024-03-15"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":64,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public PersonBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15"},{"lineNumber":68,"author":{"gitId":"modembcc"},"content":" // this.address \u003d new Address(address);","lastModifiedDate":"2024-03-15"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public PersonBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15"},{"lineNumber":76,"author":{"gitId":"modembcc"},"content":" // this.phone \u003d new Phone(phone);","lastModifiedDate":"2024-03-15"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":80,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":82,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15"},{"lineNumber":84,"author":{"gitId":"modembcc"},"content":" // this.email \u003d new Email(email);","lastModifiedDate":"2024-03-15"},{"lineNumber":85,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05"},{"lineNumber":89,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return new Person(name);","lastModifiedDate":"2024-03-05"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":92,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03"}],"authorContributionMap":{"modembcc":19,"Lin-Shuang-Shuang":1,"-":72}},{"path":"src/test/java/seedu/address/testutil/PersonUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-03-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26"},{"lineNumber":11,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import seedu.address.logic.commands.AddProjectCommand;","lastModifiedDate":"2024-02-29"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2018-03-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-03-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * A utility class for Person.","lastModifiedDate":"2017-04-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class PersonUtil {","lastModifiedDate":"2017-04-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Returns an add command string for adding the {@code person}.","lastModifiedDate":"2017-04-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static String getAddCommand(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":25,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return AddProjectCommand.COMMAND_WORD + \" \" + getPersonDetails(person);","lastModifiedDate":"2024-02-29"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code person}\u0027s details.","lastModifiedDate":"2017-04-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static String getPersonDetails(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":32,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05"},{"lineNumber":33,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" sb.append(person.getName().fullName);","lastModifiedDate":"2024-03-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-04-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26"},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code EditPersonDescriptor}\u0027s details.","lastModifiedDate":"2018-03-26"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static String getEditPersonDescriptorDetails(EditPersonDescriptor descriptor) {","lastModifiedDate":"2018-03-26"},{"lineNumber":41,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26"},{"lineNumber":42,"author":{"gitId":"-"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(PREFIX_NAME).append(name.fullName).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":43,"author":{"gitId":"-"},"content":" descriptor.getPhone().ifPresent(phone -\u003e sb.append(PREFIX_PHONE).append(phone.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":44,"author":{"gitId":"-"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(PREFIX_EMAIL).append(email.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":45,"author":{"gitId":"-"},"content":" descriptor.getAddress().ifPresent(address -\u003e sb.append(PREFIX_ADDRESS).append(address.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":46,"author":{"gitId":"-"},"content":" if (descriptor.getTags().isPresent()) {","lastModifiedDate":"2018-03-26"},{"lineNumber":47,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tags \u003d descriptor.getTags().get();","lastModifiedDate":"2018-03-26"},{"lineNumber":48,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2018-03-26"},{"lineNumber":49,"author":{"gitId":"-"},"content":" sb.append(PREFIX_TAG);","lastModifiedDate":"2018-03-26"},{"lineNumber":50,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-26"},{"lineNumber":51,"author":{"gitId":"-"},"content":" tags.forEach(s -\u003e sb.append(PREFIX_TAG).append(s.tagName).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05"}],"authorContributionMap":{"Lin-Shuang-Shuang":3,"-":53}}] diff --git a/AY2324S2-CS2103T-W08-4_tp_master/commits.json b/AY2324S2-CS2103T-W08-4_tp_master/commits.json index d2edd2f3..6302eb00 100644 --- a/AY2324S2-CS2103T-W08-4_tp_master/commits.json +++ b/AY2324S2-CS2103T-W08-4_tp_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"modembcc":[{"date":"2024-02-28","commitResults":[{"hash":"0a6fac1ca4b174bbccf0df6cf1e1f09fad962bf4","isMergeCommit":false,"messageTitle":"Update AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":14,"deletions":13}}},{"hash":"23ee228683d3017803e5b9c66593350e3d157701","isMergeCommit":true,"messageTitle":"Merge pull request #2 from Lin-Shuang-Shuang/branch-update_aboutUs","messageBody":"Update AboutUs.md Shuang Shuang","fileTypesAndContributionMap":{}},{"hash":"84c6d11b32856439a4e915d33c05c47e0c77c3bb","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-update-aboutus","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"34b669cd54113e7f4a288227f4a659ee31fd03a8","isMergeCommit":true,"messageTitle":"Merge pull request #1 from modembcc/branch-update-aboutus","messageBody":"Update AboutUs for Thanakorn","fileTypesAndContributionMap":{}},{"hash":"e6a53c51620b53452611a2f6ab566f390f8e3c38","isMergeCommit":true,"messageTitle":"Merge pull request #3 from ananya21/AboutUs","messageBody":"AboutUs Ananya Shahi Created","fileTypesAndContributionMap":{}},{"hash":"a30942d6fb1136d91621ded3702a8c13ab90bfab","isMergeCommit":true,"messageTitle":"Merge pull request #5 from ThitipatC/UpdateAboutUs","messageBody":"Update AboutUs Thitipat","fileTypesAndContributionMap":{}},{"hash":"f311581f2fca2420200c159bc9bf96541d88ab6b","isMergeCommit":false,"messageTitle":"Revert \"Merge pull request #5 from ThitipatC/UpdateAboutUs\"","messageBody":"This reverts commit a30942d6fb1136d91621ded3702a8c13ab90bfab, reversing\nchanges made to e6a53c51620b53452611a2f6ab566f390f8e3c38.\n","fileTypesAndContributionMap":{"docs":{"insertions":19,"deletions":18}}},{"hash":"83db78f48ac0fed2634b78f8a3db14b1c007cc0a","isMergeCommit":true,"messageTitle":"Merge pull request #19 from ThitipatC/UpdateAboutUs","messageBody":"Update about us","fileTypesAndContributionMap":{}}]},{"date":"2024-03-03","commitResults":[{"hash":"6886a4a55ee0a0138d37ec5c5cb92d533a87d395","isMergeCommit":false,"messageTitle":"Update README","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":29,"deletions":11}}},{"hash":"d9d419648856606a07eee416c5c584e63fc9a481","isMergeCommit":false,"messageTitle":"Update site-wide settings and homepage","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":13}}}]},{"date":"2024-03-06","commitResults":[{"hash":"e4f6e77afe464955a6230aa0dcd689ef01fd6da4","isMergeCommit":false,"messageTitle":"Fix pictures not showing up in dashboard","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":5}}},{"hash":"6517ecd6eaf2e200c833e2b5702a9442cf8bede2","isMergeCommit":true,"messageTitle":"Merge pull request #20 from Lin-Shuang-Shuang/branch-Update-UG","messageBody":"Update UserGuide for features Add and Delete Project","fileTypesAndContributionMap":{}},{"hash":"71db047d902c87199c5415e96985b6e8ff65e2f2","isMergeCommit":true,"messageTitle":"Merge pull request #1 from modembcc/master","messageBody":"Update PR to latest version","fileTypesAndContributionMap":{}},{"hash":"3a7448cafcecde85936b2c5b0cbcea7e52e879b8","isMergeCommit":true,"messageTitle":"Merge pull request #2 from modembcc/master","messageBody":"Update PR to lastest version","fileTypesAndContributionMap":{}}]},{"date":"2024-03-07","commitResults":[{"hash":"e34b791270c282160e226feb1b6ef067a7e469b7","isMergeCommit":true,"messageTitle":"Merge pull request #21 from Lin-Shuang-Shuang/branch-Update-DG","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"6248386c823ab5dcedc1a0f9d54230bf85c1d92b","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-fix-images-AboutUs","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"9b9becfda0bf615019c2dafbbf437c1130a4e9ef","isMergeCommit":true,"messageTitle":"Merge pull request #3 from modembcc/master","messageBody":"Update Pr","fileTypesAndContributionMap":{}}]},{"date":"2024-03-09","commitResults":[{"hash":"f523735a2484a5f3fe66aa4619bb8e510d86b005","isMergeCommit":true,"messageTitle":"Merge pull request #23 from modembcc/branch-update-readme","messageBody":"Update the README and project website","fileTypesAndContributionMap":{}},{"hash":"a12827eec1d7c63c807de4e507c5c801da5eac86","isMergeCommit":true,"messageTitle":"Merge pull request #5 from modembcc/master","messageBody":"Update PR","fileTypesAndContributionMap":{}}]},{"date":"2024-03-12","commitResults":[{"hash":"e119752f9c7cff49e74725641d5fae76954dadba","isMergeCommit":false,"messageTitle":"Update Use Case for DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":352,"deletions":88}}},{"hash":"0510219e2d759c2263088581b8ba623309a2e2f3","isMergeCommit":false,"messageTitle":"Update UG with assign member to task, assign deadline to project\u0026task","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":112,"deletions":51}}},{"hash":"4c5b24117b3ccba31ae5e0c2e9e4eaf79780d10c","isMergeCommit":true,"messageTitle":"Merge pull request #24 from modembcc/branch-fix-images-AboutUs","messageBody":"Fix pictures not showing up in dashboard","fileTypesAndContributionMap":{}},{"hash":"8bbb9499eab1440eb95d7e88143368232177e136","isMergeCommit":true,"messageTitle":"Merge pull request #6 from modembcc/master","messageBody":"Update PR","fileTypesAndContributionMap":{}},{"hash":"f2346b7fb6e34ee9b84cf8cce15b61956a473715","isMergeCommit":true,"messageTitle":"Merge pull request #7 from modembcc/master","messageBody":"Update PR","fileTypesAndContributionMap":{}},{"hash":"32c1c425bb1ce6b12898d6afde80edcd8cc27ca3","isMergeCommit":true,"messageTitle":"Merge pull request #26 from modembcc/branch-Update-DG-UseCases","messageBody":"Update Use Case for DG","fileTypesAndContributionMap":{}},{"hash":"8dad032e63538639c0d8c7bf1b1dca9ff414e884","isMergeCommit":true,"messageTitle":"Merge pull request #8 from modembcc/master","messageBody":"Update PR","fileTypesAndContributionMap":{}},{"hash":"48b5ab935702cba51dfcc13a4f46fe2066317ed7","isMergeCommit":true,"messageTitle":"Merge pull request #27 from modembcc/branch-Update-UG-Modem","messageBody":"Update UG with assign member to task, assign deadline to project\u0026task","fileTypesAndContributionMap":{}},{"hash":"4bd204c983633554edf7dc623af43bb299f173ab","isMergeCommit":true,"messageTitle":"Merge pull request #28 from ThitipatC/updateUG","messageBody":"Update UserGuide","fileTypesAndContributionMap":{}},{"hash":"ab0dc2b140890ba8505dae33e062c040c369e3d0","isMergeCommit":true,"messageTitle":"Merge pull request #29 from ThitipatC/updateDG","messageBody":"Update glossary inside DG","fileTypesAndContributionMap":{}}]},{"date":"2024-03-13","commitResults":[{"hash":"ca1561b681a85a18e6424d56014be17f43c0434b","isMergeCommit":true,"messageTitle":"Merge pull request #32 from ananya21/Update-DG-Target-User-Profile-Value-Proposition-User-Stories","messageBody":"Update DG target user profile value proposition user stories","fileTypesAndContributionMap":{}},{"hash":"4cdc52fa9b2b7452921d6892ae898f7eb27b675a","isMergeCommit":true,"messageTitle":"Merge pull request #33 from ananya21/master","messageBody":"Fixed User Guide","fileTypesAndContributionMap":{}},{"hash":"f80ac43fc8aa5abf4fa03bd2ab7f450bb5f091fb","isMergeCommit":true,"messageTitle":"Merge pull request #22 from Lin-Shuang-Shuang/branch-AddProjectCommand","messageBody":"Update AddCommand to AddProjectCommand","fileTypesAndContributionMap":{}}]},{"date":"2024-03-15","commitResults":[{"hash":"4a96885ef26c7e87b9d56efde268d52d77d39652","isMergeCommit":false,"messageTitle":"Remove unused imports and set up for delete project command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":17,"deletions":15},"other":{"insertions":31,"deletions":31},"test-code":{"insertions":91,"deletions":91}}},{"hash":"fda6b200ef3210f13ed2b9e13e41a331c21339de","isMergeCommit":false,"messageTitle":"Implement Delect Project","messageBody":"Filtered Lists have been removed from the delete command tests as there is no filter function in v1.2.\n\nThe arguement has been changed from using index to using string and searching through the list.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":26,"deletions":18},"test-code":{"insertions":17,"deletions":61}}},{"hash":"6cf7d3635acebd029d521ca2726ea03ccec071ad","isMergeCommit":false,"messageTitle":"Remove trailing whitespaces","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":2},"docs":{"insertions":41,"deletions":36}}},{"hash":"d5860d73cd454e449a0b54e7bdf7e12d5050e187","isMergeCommit":false,"messageTitle":"Fix Checkstyles","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":12}}},{"hash":"3b545406cd17dab785f1066165529b947509f668","isMergeCommit":false,"messageTitle":"Fix more checkstyles","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":73,"deletions":68}}},{"hash":"72752905a2809365bc9704317957c9835f095ca6","isMergeCommit":false,"messageTitle":"Add deleteProjectCommand test in AddressBookParserTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":7,"deletions":5}}},{"hash":"666ec5db42c993b7ca32d92caef9f525a80ad863","isMergeCommit":true,"messageTitle":"Merge pull request #34 from modembcc/branch-Delete-Project","messageBody":"Add Delete Project Command","fileTypesAndContributionMap":{}},{"hash":"cf2a243da9fc68c20887612c8866098a99dffab1","isMergeCommit":false,"messageTitle":"Update UI project list part","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":195,"deletions":185}}},{"hash":"0a8e723a4b1d6208e272abf883072ab025fa7cee","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-New-Ui\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"6d120a1142d73b0d45cebb2f57d44b72ffead960","isMergeCommit":false,"messageTitle":"Revert \"Merge branch \u0027branch-New-Ui\u0027 into master\"","messageBody":"This reverts commit 0a8e723a4b1d6208e272abf883072ab025fa7cee, reversing\nchanges made to 666ec5db42c993b7ca32d92caef9f525a80ad863.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":186,"deletions":196}}},{"hash":"f7e29376e5afc7e286990c965d53f25c071d06f0","isMergeCommit":false,"messageTitle":"Revert \"Update UI project list part\"","messageBody":"This reverts commit cf2a243da9fc68c20887612c8866098a99dffab1.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":0}}},{"hash":"320a46e7fa99acb6299a76c071fd1b2a9d3f1ab3","isMergeCommit":false,"messageTitle":"Fix master branch","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":4}}}]},{"date":"2024-03-18","commitResults":[{"hash":"4dc316b7eb094429686e35f66e24f41dbe4004d8","isMergeCommit":true,"messageTitle":"Merge pull request #39 from ananya21/addTask","messageBody":"Add task","fileTypesAndContributionMap":{}},{"hash":"09a530d3ffd0c804cce198fd47cc447401835a39","isMergeCommit":true,"messageTitle":"Merge pull request #10 from AY2324S2-CS2103T-W08-4/master","messageBody":"Update Master","fileTypesAndContributionMap":{}}]},{"date":"2024-03-19","commitResults":[{"hash":"9f65bd3e059815bff40b3eb07b54cae2c8ac99d0","isMergeCommit":true,"messageTitle":"Merge pull request #11 from ThitipatC/DeleteTaskCommand","messageBody":"Delete task command","fileTypesAndContributionMap":{}},{"hash":"4d9eaddd0992f4a5c3955d5bc62ec611e4ba33ae","isMergeCommit":false,"messageTitle":"Clean the codes and remove bugs","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":27,"deletions":134},"other":{"insertions":14,"deletions":22}}},{"hash":"324f7283cac73776e36d6bcadea21a2c1809f78c","isMergeCommit":false,"messageTitle":"Move exception to commons/exceptions","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":11},"other":{"insertions":1,"deletions":1},"test-code":{"insertions":3,"deletions":3}}},{"hash":"3154ed5fedc3c8ca5f52f6297ba9ddf54e8f6c46","isMergeCommit":false,"messageTitle":"Fix checkstyles","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":144,"deletions":84},"other":{"insertions":1,"deletions":1},"test-code":{"insertions":3,"deletions":200}}},{"hash":"28ea475d6a878f9b09f1d171de5d9f9dc11ebbbe","isMergeCommit":true,"messageTitle":"Merge pull request #44 from modembcc/branch-fix-task-commands","messageBody":"Branch fix task commands","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"1416c7613295bccc7b267b1bee22e410d21395dc","isMergeCommit":true,"messageTitle":"Merge pull request #59 from Lin-Shuang-Shuang/branch-addtest","messageBody":"Add tests for new commands","fileTypesAndContributionMap":{}},{"hash":"ae24b2bf9738cc8d0802ed789eaf49997a1ecc6e","isMergeCommit":true,"messageTitle":"Merge pull request #58 from ananya21/statusCommand","messageBody":"Status command","fileTypesAndContributionMap":{}},{"hash":"ac8a436fc0a3202528dcbe36a619ced78001dd4c","isMergeCommit":true,"messageTitle":"Merge pull request #56 from ananya21/deadlineCommand","messageBody":"Deadline command","fileTypesAndContributionMap":{}},{"hash":"575d85de5f01bc1c9e48a9b58340fd76c400719e","isMergeCommit":true,"messageTitle":"Merge pull request #57 from ananya21/assign-person","messageBody":"Finished assign-person","fileTypesAndContributionMap":{}},{"hash":"b56fba01556e2d9a495efbb61dbef11fd5472601","isMergeCommit":false,"messageTitle":"Add column for tasks","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":47,"deletions":21}}},{"hash":"531645a6efda7f36c03d43235d0e7f8f6930ca16","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-New-ui","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-22","commitResults":[{"hash":"f10532bd1662ff3647940dae806aec495ae94e52","isMergeCommit":false,"messageTitle":"Edit window size","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":17}}},{"hash":"dfba4a6aa1fd41a7b905c7f090617685dc34f6e4","isMergeCommit":false,"messageTitle":"Resize and style task column","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":25,"deletions":18}}},{"hash":"d2f208642f39c93380aa71419ea001187f063161","isMergeCommit":false,"messageTitle":"Add task columns","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":234,"deletions":28}}},{"hash":"5f646c58735513af0b7835f9a53cbd5882006a49","isMergeCommit":false,"messageTitle":"Add text to columns","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":3}}},{"hash":"6c8e3121727ae8afb3ba1c8c2284a0ca43c65a14","isMergeCommit":false,"messageTitle":"Add show project command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":111,"deletions":0}}},{"hash":"0126b2068040783e008c205767ee3e271d101b07","isMergeCommit":false,"messageTitle":"Show tasks based on their status","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":118,"deletions":5}}},{"hash":"8e4db778dd29939eaeb889ab892b9b26b5c78527","isMergeCommit":false,"messageTitle":"Add member and deadline to ui","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":33,"deletions":13}}},{"hash":"371bcd503ddbcb6e5f279702ccaebaa804f71411","isMergeCommit":false,"messageTitle":"Fix checkstyles and model stub in tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":21},"test-code":{"insertions":20,"deletions":0}}},{"hash":"c155258fbc27f9bccc831025ccd82be8dab1b98e","isMergeCommit":false,"messageTitle":"Fix bug where program fails if model is initialized without projects.","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":3}}},{"hash":"1d9aeaf3d1ff1911fdebe67cb771b3c39a69977c","isMergeCommit":false,"messageTitle":"Clean up code and change command word to match the documents","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":20,"deletions":67}}}]}],"ThitipatC":[{"date":"2024-02-28","commitResults":[{"hash":"6c139f6949074705286f0029f76a1521e24f92aa","isMergeCommit":false,"messageTitle":"Update AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"f47f6391c492ef96654534ff48f1b1a39db247a1","isMergeCommit":true,"messageTitle":"Clean AboutUs","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ee948f7d5e4413dd65123a14efe1b82e964f8057","isMergeCommit":false,"messageTitle":"Clean AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":14}}}]},{"date":"2024-03-12","commitResults":[{"hash":"5ebf8d17bd52042f5e4f46985b53ef7caa73a2f2","isMergeCommit":false,"messageTitle":"Update UserGuide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":39,"deletions":16}}},{"hash":"53885a8b1ca28f17b40f48ef6acf11b22ad5d508","isMergeCommit":false,"messageTitle":"Update UserGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":7}}},{"hash":"7547c099e94935395f959938b011083cf8a6e960","isMergeCommit":false,"messageTitle":"Update to glossary inside DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":3}}},{"hash":"bb69388daf237826019378a592a07f0b3039fc33","isMergeCommit":false,"messageTitle":"delete typo","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-18","commitResults":[{"hash":"a3ca75e6840ada23bdfc8895af69596ba87fa487","isMergeCommit":false,"messageTitle":"Add delete task feature","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":165,"deletions":8}}},{"hash":"23cdd50345257c4b9998ab769e50ada22b311e9a","isMergeCommit":false,"messageTitle":"Update DeleteTaskCommand.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"097b65f2db758b081d4d379f165f8e7ff903554b","isMergeCommit":false,"messageTitle":"Update Person.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"9155e30378c8c09355ea74e3411e326a600d65e0","isMergeCommit":false,"messageTitle":"move hasTask to Person","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":8}}},{"hash":"97663ad5602d809d6bba6a8c466f21894365a732","isMergeCommit":false,"messageTitle":"Update Person with hasTask","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":0}}},{"hash":"0645b77f718d029ef1a7e43a1e3d73d59a6c5120","isMergeCommit":false,"messageTitle":"Update Person.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]}],"Lin-Shuang-Shuang":[{"date":"2024-02-28","commitResults":[{"hash":"e59ff31686b8cb2e71eabf0f8edc60c384ab8514","isMergeCommit":false,"messageTitle":"Update AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"1f480b0db1f3d73823484eb2377d09ef1b5c4a60","isMergeCommit":false,"messageTitle":"Update UserGuide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":20,"deletions":19}}},{"hash":"69e5d072c8f912580e73f1ae0d1ba40ef5403441","isMergeCommit":false,"messageTitle":"Update DeveloperGuide NFRs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":5}}},{"hash":"4834d85179569a7700124185b3091c949390b625","isMergeCommit":false,"messageTitle":"Correct mistakes in command format","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":9,"deletions":9}}}]},{"date":"2024-02-29","commitResults":[{"hash":"761dd614a13f2342842dbd68d56d1be4544b5d89","isMergeCommit":false,"messageTitle":"Update AddCommand to AddProjectCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":149,"deletions":270},"other":{"insertions":25,"deletions":25},"test-code":{"insertions":7,"deletions":7}}}]},{"date":"2024-03-05","commitResults":[{"hash":"d574a2a8c181ad48554d2c8d6e75dbd5cb2325cb","isMergeCommit":false,"messageTitle":"Edit to pass checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":45},"test-code":{"insertions":4,"deletions":114}}}]},{"date":"2024-03-06","commitResults":[{"hash":"e87b492aa54d26f4c6fe028e5ed749f4fbc7109f","isMergeCommit":false,"messageTitle":"Fix tests and checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":1},"test-code":{"insertions":34,"deletions":205}}}]},{"date":"2024-03-07","commitResults":[{"hash":"cdccd70b6b1030c0ff641fb1bc98376bd0fba87c","isMergeCommit":true,"messageTitle":"Merge pull request #1 from Lin-Shuang-Shuang/master","messageBody":"Update pull request","fileTypesAndContributionMap":{}},{"hash":"65477ef2c7fa6f0bea74ee64bf0357ac43b10e56","isMergeCommit":true,"messageTitle":"Merge pull request #2 from Lin-Shuang-Shuang/master","messageBody":"Update pull request","fileTypesAndContributionMap":{}},{"hash":"d4cd817724e6cb3a08b7d0d4db71ff79fa15784e","isMergeCommit":true,"messageTitle":"Merge pull request #3 from Lin-Shuang-Shuang/master","messageBody":"Update Pull Request","fileTypesAndContributionMap":{}}]},{"date":"2024-03-09","commitResults":[{"hash":"33a24752f2057091f6b3d961c83fa7d2c6dcecd8","isMergeCommit":true,"messageTitle":"Merge pull request #4 from Lin-Shuang-Shuang/master","messageBody":"Create PR","fileTypesAndContributionMap":{}}]},{"date":"2024-03-13","commitResults":[{"hash":"5cecfc62a0b7d52ff7b6adbb2d629dbd5b2dd032","isMergeCommit":true,"messageTitle":"Merge pull request #5 from Lin-Shuang-Shuang/master","messageBody":"Update PR","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"7392da6f85a5cbdf9d75197b99da3ce3c83dbbfa","isMergeCommit":false,"messageTitle":"Add tests for new commands","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":2},"test-code":{"insertions":267,"deletions":0}}},{"hash":"75983ac539a5dd45a8e3c7bf2ef7f6566f3d5cc3","isMergeCommit":false,"messageTitle":"Correct checktyle errors","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":47}}}]}],"ananya21":[{"date":"2024-02-28","commitResults":[{"hash":"7f78afc8e4a1f8f89b3290a000228c11a4b0c900","isMergeCommit":false,"messageTitle":"AboutUs Created","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"d91089e047b387edc7a60e891f88424e4292ac80","isMergeCommit":false,"messageTitle":"AboutUs Created","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"3e869856eddd0d34ea0b5cf58cf0fe6fe3f0fd6f","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/ananya21/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"12d17e2d920512ed05ea27b1eae1af361ae7e1a9","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into AboutUs","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-12","commitResults":[{"hash":"100530fcb126c6980ca1fc2a784069d72ff5dacd","isMergeCommit":false,"messageTitle":"Update user guide for task and project status settings","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":34,"deletions":0}}}]},{"date":"2024-03-13","commitResults":[{"hash":"9b06718cdc18a0aa644a25d5d98607f4c5207d71","isMergeCommit":false,"messageTitle":"Update developer guide to include the target user profile, value proposition and the user stories","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":57,"deletions":11}}},{"hash":"302615fc0cb59b3651b66ac527d688385582506c","isMergeCommit":false,"messageTitle":"Fixed User Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":3}}}]},{"date":"2024-03-15","commitResults":[{"hash":"88479f4a4d79e85d6ac7a3f197fac8147d1a9359","isMergeCommit":false,"messageTitle":"Implemented Add Task command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":163,"deletions":20},"test-code":{"insertions":208,"deletions":0}}}]},{"date":"2024-03-17","commitResults":[{"hash":"3850bb2bbe28157aab44aa38f7352ee125f28c6e","isMergeCommit":false,"messageTitle":"Added Project and Tasks","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":150,"deletions":4}}}]},{"date":"2024-03-18","commitResults":[{"hash":"2516fc2273abd78c804ff8d28ed6405000617529","isMergeCommit":false,"messageTitle":"Added AddTask","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":83,"deletions":27},"other":{"insertions":5,"deletions":1},"test-code":{"insertions":22,"deletions":7}}},{"hash":"dec91ea4bed8a25206d45a2dab20f6b2a5caf29a","isMergeCommit":false,"messageTitle":"AddTask","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":6,"deletions":24}}},{"hash":"edbaa79fd0a166d97dffc033007349894154b513","isMergeCommit":false,"messageTitle":"Fixed checkstyle violations","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":8,"deletions":10}}}]},{"date":"2024-03-21","commitResults":[{"hash":"6a85e9d54a74dc36b1cfa83eafba680ce4ff945e","isMergeCommit":false,"messageTitle":"Finished assign-person","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":184,"deletions":5}}},{"hash":"78f6d74f341eddd0c388b9887efdbf1e0b510002","isMergeCommit":false,"messageTitle":"Resolved merge conflicts with master","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":6}}},{"hash":"e656ef2c5fe37abf43e4ecf2c97ac71b6ea55ad9","isMergeCommit":false,"messageTitle":"Finished setting the status","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":127,"deletions":0}}},{"hash":"0c9fffe90b0d040180c40d5d67c9012904a22ae9","isMergeCommit":false,"messageTitle":"adjust AddTaskCommand to master","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":6}}},{"hash":"bccd01e635a26c5bc97ba5295584c3a10abd69fb","isMergeCommit":false,"messageTitle":"Fixed merge conflicts","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":140,"deletions":1},"test-code":{"insertions":63,"deletions":49}}},{"hash":"fe3aa673b6ab4b4c093f097e055410140c41d0e5","isMergeCommit":false,"messageTitle":"Fixing merge conflicts","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":16},"test-code":{"insertions":0,"deletions":1}}},{"hash":"744fadd13a8c2176bbf37a37a71a12b89c085ba2","isMergeCommit":false,"messageTitle":"Fixed Merge Conflicts","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":6},"other":{"insertions":0,"deletions":4}}},{"hash":"654c81a12a7dc5f61ecfbc4bfc257053b22c6cb6","isMergeCommit":false,"messageTitle":"Fixed gradle checkstyle issue","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":10,"deletions":7}}},{"hash":"fdad1d712ca23292d952570845086f5076722368","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into deadlineCommand","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"d38564e6586d4260a5bc9e3c164515cab4efc163","isMergeCommit":false,"messageTitle":"Update Person.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":10}}},{"hash":"0070dc2905e4bb4f1615615b61b52091e0f51a3c","isMergeCommit":true,"messageTitle":"Fixed merge conflicts","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"6e63ab5c238ffa9bae97e712ee02b71fadb6cdd4","isMergeCommit":false,"messageTitle":"Update Person.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}}]},{"date":"2024-03-22","commitResults":[{"hash":"0399204f40e5b7f0bdcc69baa2cb6b1a678799fc","isMergeCommit":true,"messageTitle":"Merge pull request #61 from modembcc/branch-New-ui","messageBody":"Add new UI","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"modembcc":{"docs":496,"functional-code":668,"test-code":79,"other":44},"ThitipatC":{"docs":32,"functional-code":130,"test-code":0},"Lin-Shuang-Shuang":{"docs":9,"functional-code":128,"test-code":228},"ananya21":{"docs":78,"functional-code":546,"test-code":78,"other":1}},"authorContributionVariance":{"modembcc":102544.64,"ThitipatC":1472.0355,"Lin-Shuang-Shuang":12964.133,"ananya21":19596.182},"authorDisplayNameMap":{"modembcc":"CS2103T-W08-4 PAWI..KORN","ThitipatC":"CS2103T-W08-4 CHAI..IPAT","Lin-Shuang-Shuang":"CS2103T-W08-4 LIN ..UANG","ananya21":"CS2103T-W08-4 SHAH..ANYA"}} +{"authorDailyContributionsMap":{"modembcc":[{"date":"2024-02-28","commitResults":[{"hash":"0a6fac1ca4b174bbccf0df6cf1e1f09fad962bf4","isMergeCommit":false,"messageTitle":"Update AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":14,"deletions":13}}},{"hash":"23ee228683d3017803e5b9c66593350e3d157701","isMergeCommit":true,"messageTitle":"Merge pull request #2 from Lin-Shuang-Shuang/branch-update_aboutUs","messageBody":"Update AboutUs.md Shuang Shuang","fileTypesAndContributionMap":{}},{"hash":"84c6d11b32856439a4e915d33c05c47e0c77c3bb","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-update-aboutus","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"34b669cd54113e7f4a288227f4a659ee31fd03a8","isMergeCommit":true,"messageTitle":"Merge pull request #1 from modembcc/branch-update-aboutus","messageBody":"Update AboutUs for Thanakorn","fileTypesAndContributionMap":{}},{"hash":"e6a53c51620b53452611a2f6ab566f390f8e3c38","isMergeCommit":true,"messageTitle":"Merge pull request #3 from ananya21/AboutUs","messageBody":"AboutUs Ananya Shahi Created","fileTypesAndContributionMap":{}},{"hash":"a30942d6fb1136d91621ded3702a8c13ab90bfab","isMergeCommit":true,"messageTitle":"Merge pull request #5 from ThitipatC/UpdateAboutUs","messageBody":"Update AboutUs Thitipat","fileTypesAndContributionMap":{}},{"hash":"f311581f2fca2420200c159bc9bf96541d88ab6b","isMergeCommit":false,"messageTitle":"Revert \"Merge pull request #5 from ThitipatC/UpdateAboutUs\"","messageBody":"This reverts commit a30942d6fb1136d91621ded3702a8c13ab90bfab, reversing\nchanges made to e6a53c51620b53452611a2f6ab566f390f8e3c38.\n","fileTypesAndContributionMap":{"docs":{"insertions":19,"deletions":18}}},{"hash":"83db78f48ac0fed2634b78f8a3db14b1c007cc0a","isMergeCommit":true,"messageTitle":"Merge pull request #19 from ThitipatC/UpdateAboutUs","messageBody":"Update about us","fileTypesAndContributionMap":{}}]},{"date":"2024-03-03","commitResults":[{"hash":"6886a4a55ee0a0138d37ec5c5cb92d533a87d395","isMergeCommit":false,"messageTitle":"Update README","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":29,"deletions":11}}},{"hash":"d9d419648856606a07eee416c5c584e63fc9a481","isMergeCommit":false,"messageTitle":"Update site-wide settings and homepage","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":13}}}]},{"date":"2024-03-06","commitResults":[{"hash":"e4f6e77afe464955a6230aa0dcd689ef01fd6da4","isMergeCommit":false,"messageTitle":"Fix pictures not showing up in dashboard","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":5}}},{"hash":"6517ecd6eaf2e200c833e2b5702a9442cf8bede2","isMergeCommit":true,"messageTitle":"Merge pull request #20 from Lin-Shuang-Shuang/branch-Update-UG","messageBody":"Update UserGuide for features Add and Delete Project","fileTypesAndContributionMap":{}},{"hash":"71db047d902c87199c5415e96985b6e8ff65e2f2","isMergeCommit":true,"messageTitle":"Merge pull request #1 from modembcc/master","messageBody":"Update PR to latest version","fileTypesAndContributionMap":{}},{"hash":"3a7448cafcecde85936b2c5b0cbcea7e52e879b8","isMergeCommit":true,"messageTitle":"Merge pull request #2 from modembcc/master","messageBody":"Update PR to lastest version","fileTypesAndContributionMap":{}}]},{"date":"2024-03-07","commitResults":[{"hash":"e34b791270c282160e226feb1b6ef067a7e469b7","isMergeCommit":true,"messageTitle":"Merge pull request #21 from Lin-Shuang-Shuang/branch-Update-DG","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"6248386c823ab5dcedc1a0f9d54230bf85c1d92b","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-fix-images-AboutUs","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"9b9becfda0bf615019c2dafbbf437c1130a4e9ef","isMergeCommit":true,"messageTitle":"Merge pull request #3 from modembcc/master","messageBody":"Update Pr","fileTypesAndContributionMap":{}}]},{"date":"2024-03-09","commitResults":[{"hash":"f523735a2484a5f3fe66aa4619bb8e510d86b005","isMergeCommit":true,"messageTitle":"Merge pull request #23 from modembcc/branch-update-readme","messageBody":"Update the README and project website","fileTypesAndContributionMap":{}},{"hash":"a12827eec1d7c63c807de4e507c5c801da5eac86","isMergeCommit":true,"messageTitle":"Merge pull request #5 from modembcc/master","messageBody":"Update PR","fileTypesAndContributionMap":{}}]},{"date":"2024-03-12","commitResults":[{"hash":"e119752f9c7cff49e74725641d5fae76954dadba","isMergeCommit":false,"messageTitle":"Update Use Case for DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":352,"deletions":88}}},{"hash":"0510219e2d759c2263088581b8ba623309a2e2f3","isMergeCommit":false,"messageTitle":"Update UG with assign member to task, assign deadline to project\u0026task","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":112,"deletions":51}}},{"hash":"4c5b24117b3ccba31ae5e0c2e9e4eaf79780d10c","isMergeCommit":true,"messageTitle":"Merge pull request #24 from modembcc/branch-fix-images-AboutUs","messageBody":"Fix pictures not showing up in dashboard","fileTypesAndContributionMap":{}},{"hash":"8bbb9499eab1440eb95d7e88143368232177e136","isMergeCommit":true,"messageTitle":"Merge pull request #6 from modembcc/master","messageBody":"Update PR","fileTypesAndContributionMap":{}},{"hash":"f2346b7fb6e34ee9b84cf8cce15b61956a473715","isMergeCommit":true,"messageTitle":"Merge pull request #7 from modembcc/master","messageBody":"Update PR","fileTypesAndContributionMap":{}},{"hash":"32c1c425bb1ce6b12898d6afde80edcd8cc27ca3","isMergeCommit":true,"messageTitle":"Merge pull request #26 from modembcc/branch-Update-DG-UseCases","messageBody":"Update Use Case for DG","fileTypesAndContributionMap":{}},{"hash":"8dad032e63538639c0d8c7bf1b1dca9ff414e884","isMergeCommit":true,"messageTitle":"Merge pull request #8 from modembcc/master","messageBody":"Update PR","fileTypesAndContributionMap":{}},{"hash":"48b5ab935702cba51dfcc13a4f46fe2066317ed7","isMergeCommit":true,"messageTitle":"Merge pull request #27 from modembcc/branch-Update-UG-Modem","messageBody":"Update UG with assign member to task, assign deadline to project\u0026task","fileTypesAndContributionMap":{}},{"hash":"4bd204c983633554edf7dc623af43bb299f173ab","isMergeCommit":true,"messageTitle":"Merge pull request #28 from ThitipatC/updateUG","messageBody":"Update UserGuide","fileTypesAndContributionMap":{}},{"hash":"ab0dc2b140890ba8505dae33e062c040c369e3d0","isMergeCommit":true,"messageTitle":"Merge pull request #29 from ThitipatC/updateDG","messageBody":"Update glossary inside DG","fileTypesAndContributionMap":{}}]},{"date":"2024-03-13","commitResults":[{"hash":"ca1561b681a85a18e6424d56014be17f43c0434b","isMergeCommit":true,"messageTitle":"Merge pull request #32 from ananya21/Update-DG-Target-User-Profile-Value-Proposition-User-Stories","messageBody":"Update DG target user profile value proposition user stories","fileTypesAndContributionMap":{}},{"hash":"4cdc52fa9b2b7452921d6892ae898f7eb27b675a","isMergeCommit":true,"messageTitle":"Merge pull request #33 from ananya21/master","messageBody":"Fixed User Guide","fileTypesAndContributionMap":{}},{"hash":"f80ac43fc8aa5abf4fa03bd2ab7f450bb5f091fb","isMergeCommit":true,"messageTitle":"Merge pull request #22 from Lin-Shuang-Shuang/branch-AddProjectCommand","messageBody":"Update AddCommand to AddProjectCommand","fileTypesAndContributionMap":{}}]},{"date":"2024-03-15","commitResults":[{"hash":"4a96885ef26c7e87b9d56efde268d52d77d39652","isMergeCommit":false,"messageTitle":"Remove unused imports and set up for delete project command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":17,"deletions":15},"other":{"insertions":31,"deletions":31},"test-code":{"insertions":91,"deletions":91}}},{"hash":"fda6b200ef3210f13ed2b9e13e41a331c21339de","isMergeCommit":false,"messageTitle":"Implement Delect Project","messageBody":"Filtered Lists have been removed from the delete command tests as there is no filter function in v1.2.\n\nThe arguement has been changed from using index to using string and searching through the list.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":26,"deletions":18},"test-code":{"insertions":17,"deletions":61}}},{"hash":"6cf7d3635acebd029d521ca2726ea03ccec071ad","isMergeCommit":false,"messageTitle":"Remove trailing whitespaces","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":2},"docs":{"insertions":41,"deletions":36}}},{"hash":"d5860d73cd454e449a0b54e7bdf7e12d5050e187","isMergeCommit":false,"messageTitle":"Fix Checkstyles","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":12}}},{"hash":"3b545406cd17dab785f1066165529b947509f668","isMergeCommit":false,"messageTitle":"Fix more checkstyles","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":73,"deletions":68}}},{"hash":"72752905a2809365bc9704317957c9835f095ca6","isMergeCommit":false,"messageTitle":"Add deleteProjectCommand test in AddressBookParserTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":7,"deletions":5}}},{"hash":"666ec5db42c993b7ca32d92caef9f525a80ad863","isMergeCommit":true,"messageTitle":"Merge pull request #34 from modembcc/branch-Delete-Project","messageBody":"Add Delete Project Command","fileTypesAndContributionMap":{}},{"hash":"cf2a243da9fc68c20887612c8866098a99dffab1","isMergeCommit":false,"messageTitle":"Update UI project list part","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":195,"deletions":185}}},{"hash":"0a8e723a4b1d6208e272abf883072ab025fa7cee","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-New-Ui\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"6d120a1142d73b0d45cebb2f57d44b72ffead960","isMergeCommit":false,"messageTitle":"Revert \"Merge branch \u0027branch-New-Ui\u0027 into master\"","messageBody":"This reverts commit 0a8e723a4b1d6208e272abf883072ab025fa7cee, reversing\nchanges made to 666ec5db42c993b7ca32d92caef9f525a80ad863.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":186,"deletions":196}}},{"hash":"f7e29376e5afc7e286990c965d53f25c071d06f0","isMergeCommit":false,"messageTitle":"Revert \"Update UI project list part\"","messageBody":"This reverts commit cf2a243da9fc68c20887612c8866098a99dffab1.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":0}}},{"hash":"320a46e7fa99acb6299a76c071fd1b2a9d3f1ab3","isMergeCommit":false,"messageTitle":"Fix master branch","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":4}}}]},{"date":"2024-03-18","commitResults":[{"hash":"4dc316b7eb094429686e35f66e24f41dbe4004d8","isMergeCommit":true,"messageTitle":"Merge pull request #39 from ananya21/addTask","messageBody":"Add task","fileTypesAndContributionMap":{}},{"hash":"09a530d3ffd0c804cce198fd47cc447401835a39","isMergeCommit":true,"messageTitle":"Merge pull request #10 from AY2324S2-CS2103T-W08-4/master","messageBody":"Update Master","fileTypesAndContributionMap":{}}]},{"date":"2024-03-19","commitResults":[{"hash":"9f65bd3e059815bff40b3eb07b54cae2c8ac99d0","isMergeCommit":true,"messageTitle":"Merge pull request #11 from ThitipatC/DeleteTaskCommand","messageBody":"Delete task command","fileTypesAndContributionMap":{}},{"hash":"4d9eaddd0992f4a5c3955d5bc62ec611e4ba33ae","isMergeCommit":false,"messageTitle":"Clean the codes and remove bugs","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":27,"deletions":134},"other":{"insertions":14,"deletions":22}}},{"hash":"324f7283cac73776e36d6bcadea21a2c1809f78c","isMergeCommit":false,"messageTitle":"Move exception to commons/exceptions","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":11},"other":{"insertions":1,"deletions":1},"test-code":{"insertions":3,"deletions":3}}},{"hash":"3154ed5fedc3c8ca5f52f6297ba9ddf54e8f6c46","isMergeCommit":false,"messageTitle":"Fix checkstyles","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":144,"deletions":84},"other":{"insertions":1,"deletions":1},"test-code":{"insertions":3,"deletions":200}}},{"hash":"28ea475d6a878f9b09f1d171de5d9f9dc11ebbbe","isMergeCommit":true,"messageTitle":"Merge pull request #44 from modembcc/branch-fix-task-commands","messageBody":"Branch fix task commands","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"1416c7613295bccc7b267b1bee22e410d21395dc","isMergeCommit":true,"messageTitle":"Merge pull request #59 from Lin-Shuang-Shuang/branch-addtest","messageBody":"Add tests for new commands","fileTypesAndContributionMap":{}},{"hash":"ae24b2bf9738cc8d0802ed789eaf49997a1ecc6e","isMergeCommit":true,"messageTitle":"Merge pull request #58 from ananya21/statusCommand","messageBody":"Status command","fileTypesAndContributionMap":{}},{"hash":"ac8a436fc0a3202528dcbe36a619ced78001dd4c","isMergeCommit":true,"messageTitle":"Merge pull request #56 from ananya21/deadlineCommand","messageBody":"Deadline command","fileTypesAndContributionMap":{}},{"hash":"575d85de5f01bc1c9e48a9b58340fd76c400719e","isMergeCommit":true,"messageTitle":"Merge pull request #57 from ananya21/assign-person","messageBody":"Finished assign-person","fileTypesAndContributionMap":{}},{"hash":"b56fba01556e2d9a495efbb61dbef11fd5472601","isMergeCommit":false,"messageTitle":"Add column for tasks","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":47,"deletions":21}}},{"hash":"531645a6efda7f36c03d43235d0e7f8f6930ca16","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-New-ui","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-22","commitResults":[{"hash":"f10532bd1662ff3647940dae806aec495ae94e52","isMergeCommit":false,"messageTitle":"Edit window size","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":17}}},{"hash":"dfba4a6aa1fd41a7b905c7f090617685dc34f6e4","isMergeCommit":false,"messageTitle":"Resize and style task column","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":25,"deletions":18}}},{"hash":"d2f208642f39c93380aa71419ea001187f063161","isMergeCommit":false,"messageTitle":"Add task columns","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":234,"deletions":28}}},{"hash":"5f646c58735513af0b7835f9a53cbd5882006a49","isMergeCommit":false,"messageTitle":"Add text to columns","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":3}}},{"hash":"6c8e3121727ae8afb3ba1c8c2284a0ca43c65a14","isMergeCommit":false,"messageTitle":"Add show project command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":111,"deletions":0}}},{"hash":"0126b2068040783e008c205767ee3e271d101b07","isMergeCommit":false,"messageTitle":"Show tasks based on their status","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":118,"deletions":5}}},{"hash":"8e4db778dd29939eaeb889ab892b9b26b5c78527","isMergeCommit":false,"messageTitle":"Add member and deadline to ui","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":33,"deletions":13}}},{"hash":"371bcd503ddbcb6e5f279702ccaebaa804f71411","isMergeCommit":false,"messageTitle":"Fix checkstyles and model stub in tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":21},"test-code":{"insertions":20,"deletions":0}}},{"hash":"c155258fbc27f9bccc831025ccd82be8dab1b98e","isMergeCommit":false,"messageTitle":"Fix bug where program fails if model is initialized without projects.","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":3}}},{"hash":"1d9aeaf3d1ff1911fdebe67cb771b3c39a69977c","isMergeCommit":false,"messageTitle":"Clean up code and change command word to match the documents","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":20,"deletions":67}}}]}],"ThitipatC":[{"date":"2024-02-28","commitResults":[{"hash":"6c139f6949074705286f0029f76a1521e24f92aa","isMergeCommit":false,"messageTitle":"Update AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"f47f6391c492ef96654534ff48f1b1a39db247a1","isMergeCommit":true,"messageTitle":"Clean AboutUs","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ee948f7d5e4413dd65123a14efe1b82e964f8057","isMergeCommit":false,"messageTitle":"Clean AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":14}}}]},{"date":"2024-03-12","commitResults":[{"hash":"5ebf8d17bd52042f5e4f46985b53ef7caa73a2f2","isMergeCommit":false,"messageTitle":"Update UserGuide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":39,"deletions":16}}},{"hash":"53885a8b1ca28f17b40f48ef6acf11b22ad5d508","isMergeCommit":false,"messageTitle":"Update UserGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":7}}},{"hash":"7547c099e94935395f959938b011083cf8a6e960","isMergeCommit":false,"messageTitle":"Update to glossary inside DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":3}}},{"hash":"bb69388daf237826019378a592a07f0b3039fc33","isMergeCommit":false,"messageTitle":"delete typo","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-18","commitResults":[{"hash":"a3ca75e6840ada23bdfc8895af69596ba87fa487","isMergeCommit":false,"messageTitle":"Add delete task feature","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":165,"deletions":8}}},{"hash":"23cdd50345257c4b9998ab769e50ada22b311e9a","isMergeCommit":false,"messageTitle":"Update DeleteTaskCommand.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"097b65f2db758b081d4d379f165f8e7ff903554b","isMergeCommit":false,"messageTitle":"Update Person.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"9155e30378c8c09355ea74e3411e326a600d65e0","isMergeCommit":false,"messageTitle":"move hasTask to Person","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":8}}},{"hash":"97663ad5602d809d6bba6a8c466f21894365a732","isMergeCommit":false,"messageTitle":"Update Person with hasTask","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":0}}},{"hash":"0645b77f718d029ef1a7e43a1e3d73d59a6c5120","isMergeCommit":false,"messageTitle":"Update Person.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]}],"Lin-Shuang-Shuang":[{"date":"2024-02-28","commitResults":[{"hash":"e59ff31686b8cb2e71eabf0f8edc60c384ab8514","isMergeCommit":false,"messageTitle":"Update AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"1f480b0db1f3d73823484eb2377d09ef1b5c4a60","isMergeCommit":false,"messageTitle":"Update UserGuide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":20,"deletions":19}}},{"hash":"69e5d072c8f912580e73f1ae0d1ba40ef5403441","isMergeCommit":false,"messageTitle":"Update DeveloperGuide NFRs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":5}}},{"hash":"4834d85179569a7700124185b3091c949390b625","isMergeCommit":false,"messageTitle":"Correct mistakes in command format","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":9,"deletions":9}}}]},{"date":"2024-02-29","commitResults":[{"hash":"761dd614a13f2342842dbd68d56d1be4544b5d89","isMergeCommit":false,"messageTitle":"Update AddCommand to AddProjectCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":149,"deletions":270},"other":{"insertions":25,"deletions":25},"test-code":{"insertions":7,"deletions":7}}}]},{"date":"2024-03-05","commitResults":[{"hash":"d574a2a8c181ad48554d2c8d6e75dbd5cb2325cb","isMergeCommit":false,"messageTitle":"Edit to pass checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":45},"test-code":{"insertions":4,"deletions":114}}}]},{"date":"2024-03-06","commitResults":[{"hash":"e87b492aa54d26f4c6fe028e5ed749f4fbc7109f","isMergeCommit":false,"messageTitle":"Fix tests and checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":1},"test-code":{"insertions":34,"deletions":205}}}]},{"date":"2024-03-07","commitResults":[{"hash":"cdccd70b6b1030c0ff641fb1bc98376bd0fba87c","isMergeCommit":true,"messageTitle":"Merge pull request #1 from Lin-Shuang-Shuang/master","messageBody":"Update pull request","fileTypesAndContributionMap":{}},{"hash":"65477ef2c7fa6f0bea74ee64bf0357ac43b10e56","isMergeCommit":true,"messageTitle":"Merge pull request #2 from Lin-Shuang-Shuang/master","messageBody":"Update pull request","fileTypesAndContributionMap":{}},{"hash":"d4cd817724e6cb3a08b7d0d4db71ff79fa15784e","isMergeCommit":true,"messageTitle":"Merge pull request #3 from Lin-Shuang-Shuang/master","messageBody":"Update Pull Request","fileTypesAndContributionMap":{}}]},{"date":"2024-03-09","commitResults":[{"hash":"33a24752f2057091f6b3d961c83fa7d2c6dcecd8","isMergeCommit":true,"messageTitle":"Merge pull request #4 from Lin-Shuang-Shuang/master","messageBody":"Create PR","fileTypesAndContributionMap":{}}]},{"date":"2024-03-13","commitResults":[{"hash":"5cecfc62a0b7d52ff7b6adbb2d629dbd5b2dd032","isMergeCommit":true,"messageTitle":"Merge pull request #5 from Lin-Shuang-Shuang/master","messageBody":"Update PR","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"7392da6f85a5cbdf9d75197b99da3ce3c83dbbfa","isMergeCommit":false,"messageTitle":"Add tests for new commands","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":2},"test-code":{"insertions":267,"deletions":0}}},{"hash":"75983ac539a5dd45a8e3c7bf2ef7f6566f3d5cc3","isMergeCommit":false,"messageTitle":"Correct checktyle errors","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":47}}},{"hash":"e41d9ea73e60aefd8d4d363dd05ae7e8b71ce7a4","isMergeCommit":false,"messageTitle":"Update Delete Sequence Diagram","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":29,"deletions":29}}},{"hash":"0193966a3db43931cc17096c45dfe254c9f714fb","isMergeCommit":true,"messageTitle":"Merge pull request #6 from Lin-Shuang-Shuang/master","messageBody":"update pr","fileTypesAndContributionMap":{}}]},{"date":"2024-03-22","commitResults":[{"hash":"0885c0570d57c001ca5c5f31315f5bce77208732","isMergeCommit":true,"messageTitle":"Merge pull request #7 from Lin-Shuang-Shuang/master","messageBody":"update pr","fileTypesAndContributionMap":{}},{"hash":"5019e2f9a229b9b326979401f1f98fdf0106b81f","isMergeCommit":true,"messageTitle":"Merge pull request #60 from Lin-Shuang-Shuang/branch-UML","messageBody":"Update Delete Sequence Diagram","fileTypesAndContributionMap":{}},{"hash":"49175c611d4fb2118751431ca9a89c4fe1dd16fd","isMergeCommit":false,"messageTitle":"Update UG for v1.2","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":38,"deletions":35}}},{"hash":"0b6f0486b69d0e5143e91d75298285b3d92752e1","isMergeCommit":false,"messageTitle":"Remove list feature","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":9}}},{"hash":"1dd3659c77b1ec871cceacdd8fbbd964a36435c0","isMergeCommit":true,"messageTitle":"Merge pull request #62 from Lin-Shuang-Shuang/branch-UpdateUG2","messageBody":"Update UG for v1.2","fileTypesAndContributionMap":{}},{"hash":"e6cf4e68651b9ca53c43c9a65ba3d811a4a56bd5","isMergeCommit":true,"messageTitle":"Merge pull request #63 from ananya21/add-exceptions","messageBody":"Added correct exceptions","tags":["v1.2"],"fileTypesAndContributionMap":{}}]}],"ananya21":[{"date":"2024-02-28","commitResults":[{"hash":"7f78afc8e4a1f8f89b3290a000228c11a4b0c900","isMergeCommit":false,"messageTitle":"AboutUs Created","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"d91089e047b387edc7a60e891f88424e4292ac80","isMergeCommit":false,"messageTitle":"AboutUs Created","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"3e869856eddd0d34ea0b5cf58cf0fe6fe3f0fd6f","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/ananya21/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"12d17e2d920512ed05ea27b1eae1af361ae7e1a9","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into AboutUs","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-12","commitResults":[{"hash":"100530fcb126c6980ca1fc2a784069d72ff5dacd","isMergeCommit":false,"messageTitle":"Update user guide for task and project status settings","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":34,"deletions":0}}}]},{"date":"2024-03-13","commitResults":[{"hash":"9b06718cdc18a0aa644a25d5d98607f4c5207d71","isMergeCommit":false,"messageTitle":"Update developer guide to include the target user profile, value proposition and the user stories","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":57,"deletions":11}}},{"hash":"302615fc0cb59b3651b66ac527d688385582506c","isMergeCommit":false,"messageTitle":"Fixed User Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":3}}}]},{"date":"2024-03-15","commitResults":[{"hash":"88479f4a4d79e85d6ac7a3f197fac8147d1a9359","isMergeCommit":false,"messageTitle":"Implemented Add Task command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":163,"deletions":20},"test-code":{"insertions":208,"deletions":0}}}]},{"date":"2024-03-17","commitResults":[{"hash":"3850bb2bbe28157aab44aa38f7352ee125f28c6e","isMergeCommit":false,"messageTitle":"Added Project and Tasks","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":150,"deletions":4}}}]},{"date":"2024-03-18","commitResults":[{"hash":"2516fc2273abd78c804ff8d28ed6405000617529","isMergeCommit":false,"messageTitle":"Added AddTask","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":83,"deletions":27},"other":{"insertions":5,"deletions":1},"test-code":{"insertions":22,"deletions":7}}},{"hash":"dec91ea4bed8a25206d45a2dab20f6b2a5caf29a","isMergeCommit":false,"messageTitle":"AddTask","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":6,"deletions":24}}},{"hash":"edbaa79fd0a166d97dffc033007349894154b513","isMergeCommit":false,"messageTitle":"Fixed checkstyle violations","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":8,"deletions":10}}}]},{"date":"2024-03-21","commitResults":[{"hash":"6a85e9d54a74dc36b1cfa83eafba680ce4ff945e","isMergeCommit":false,"messageTitle":"Finished assign-person","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":184,"deletions":5}}},{"hash":"78f6d74f341eddd0c388b9887efdbf1e0b510002","isMergeCommit":false,"messageTitle":"Resolved merge conflicts with master","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":6}}},{"hash":"e656ef2c5fe37abf43e4ecf2c97ac71b6ea55ad9","isMergeCommit":false,"messageTitle":"Finished setting the status","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":127,"deletions":0}}},{"hash":"0c9fffe90b0d040180c40d5d67c9012904a22ae9","isMergeCommit":false,"messageTitle":"adjust AddTaskCommand to master","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":6}}},{"hash":"bccd01e635a26c5bc97ba5295584c3a10abd69fb","isMergeCommit":false,"messageTitle":"Fixed merge conflicts","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":140,"deletions":1},"test-code":{"insertions":63,"deletions":49}}},{"hash":"fe3aa673b6ab4b4c093f097e055410140c41d0e5","isMergeCommit":false,"messageTitle":"Fixing merge conflicts","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":16},"test-code":{"insertions":0,"deletions":1}}},{"hash":"744fadd13a8c2176bbf37a37a71a12b89c085ba2","isMergeCommit":false,"messageTitle":"Fixed Merge Conflicts","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":6},"other":{"insertions":0,"deletions":4}}},{"hash":"654c81a12a7dc5f61ecfbc4bfc257053b22c6cb6","isMergeCommit":false,"messageTitle":"Fixed gradle checkstyle issue","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":10,"deletions":7}}},{"hash":"fdad1d712ca23292d952570845086f5076722368","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into deadlineCommand","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"d38564e6586d4260a5bc9e3c164515cab4efc163","isMergeCommit":false,"messageTitle":"Update Person.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":10}}},{"hash":"0070dc2905e4bb4f1615615b61b52091e0f51a3c","isMergeCommit":true,"messageTitle":"Fixed merge conflicts","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"6e63ab5c238ffa9bae97e712ee02b71fadb6cdd4","isMergeCommit":false,"messageTitle":"Update Person.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}}]},{"date":"2024-03-22","commitResults":[{"hash":"0399204f40e5b7f0bdcc69baa2cb6b1a678799fc","isMergeCommit":true,"messageTitle":"Merge pull request #61 from modembcc/branch-New-ui","messageBody":"Add new UI","fileTypesAndContributionMap":{}},{"hash":"8549bcf381221dfefffdb883d8ec213bbd5b1c6b","isMergeCommit":false,"messageTitle":"Added correct exceptions","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":208,"deletions":100},"test-code":{"insertions":3,"deletions":3}}},{"hash":"7e917912aee8c603e71b686ce3a3264b7c682891","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-exceptions","messageBody":"","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"modembcc":{"docs":474,"functional-code":636,"test-code":79,"other":44},"ThitipatC":{"docs":32,"functional-code":125,"test-code":0},"Lin-Shuang-Shuang":{"docs":69,"functional-code":124,"test-code":228},"ananya21":{"docs":76,"functional-code":701,"test-code":81,"other":1}},"authorContributionVariance":{"modembcc":102544.64,"ThitipatC":1472.0355,"Lin-Shuang-Shuang":14155.134,"ananya21":21747.512},"authorDisplayNameMap":{"modembcc":"CS2103T-W08-4 PAWI..KORN","ThitipatC":"CS2103T-W08-4 CHAI..IPAT","Lin-Shuang-Shuang":"CS2103T-W08-4 LIN ..UANG","ananya21":"CS2103T-W08-4 SHAH..ANYA"}} diff --git a/AY2324S2-CS2103T-W09-2_tp_master/authorship.json b/AY2324S2-CS2103T-W09-2_tp_master/authorship.json index 2c87921d..560f1d1a 100644 --- a/AY2324S2-CS2103T-W09-2_tp_master/authorship.json +++ b/AY2324S2-CS2103T-W09-2_tp_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"menatahari"},"content":"[![CI Status](https://github.com/AY2324S2-CS2103T-W09-2/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2324S2-CS2103T-W09-2/tp/actions)","lastModifiedDate":"2024-03-07"},{"lineNumber":2,"author":{"gitId":"menatahari"},"content":"# Capital Connect #","lastModifiedDate":"2024-03-07"},{"lineNumber":3,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"menatahari"},"content":"## Description ##","lastModifiedDate":"2024-03-07"},{"lineNumber":7,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":8,"author":{"gitId":"menatahari"},"content":"---","lastModifiedDate":"2024-03-07"},{"lineNumber":9,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":10,"author":{"gitId":"menatahari"},"content":"Capital Connect is an app that is designed to streamline the management of startup investments, enabling VC firms to easily add, categorize, and track a diverse portfolio of investments in various industries and funding stages.","lastModifiedDate":"2024-03-07"},{"lineNumber":11,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":12,"author":{"gitId":"menatahari"},"content":"## Documentation ##","lastModifiedDate":"2024-03-07"},{"lineNumber":13,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":14,"author":{"gitId":"menatahari"},"content":"---","lastModifiedDate":"2024-03-07"},{"lineNumber":15,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":16,"author":{"gitId":"menatahari"},"content":"For the detailed documentation of this project, see the **[Capital Connect Product Website](https://ay2324s2-cs2103t-w09-2.github.io/tp/)**.","lastModifiedDate":"2024-03-07"},{"lineNumber":17,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":18,"author":{"gitId":"menatahari"},"content":"## Credits and Acknowledgements ##","lastModifiedDate":"2024-03-07"},{"lineNumber":19,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":20,"author":{"gitId":"menatahari"},"content":"---","lastModifiedDate":"2024-03-07"},{"lineNumber":21,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":22,"author":{"gitId":"menatahari"},"content":"* This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-03-07"}],"authorContributionMap":{"menatahari":19,"-":3}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"About Us\"","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"# About Us","lastModifiedDate":"2023-09-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"We are a team based in the [School of Computing, National University of Singapore](http://www.comp.nus.edu.sg).","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"You can reach us at the email `seer[at]comp.nus.edu.sg`","lastModifiedDate":"2020-06-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"yeoshuheng"},"content":"### Yeo Shu Heng","lastModifiedDate":"2024-02-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"yeoshuheng"},"content":"\u003cimg src\u003d\"images/yeoshuheng.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"yeoshuheng"},"content":"[[homepage](https://www.linkedin.com/in/yeoshuheng/)]","lastModifiedDate":"2024-02-25"},{"lineNumber":19,"author":{"gitId":"yeoshuheng"},"content":"[[github](https://github.com/yeoshuheng)]","lastModifiedDate":"2024-02-25"},{"lineNumber":20,"author":{"gitId":"yeoshuheng"},"content":"[[portfolio](team/shuheng.md)]","lastModifiedDate":"2024-02-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"yeoshuheng"},"content":"* Role: Developer","lastModifiedDate":"2024-02-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"dwangwk"},"content":"### Daniel Wang","lastModifiedDate":"2024-03-07"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"dwangwk"},"content":"\u003cimg src\u003d\"images/dwangwk.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-07"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"dwangwk"},"content":"[[github](http://github.com/dwangwk)]","lastModifiedDate":"2024-03-07"},{"lineNumber":29,"author":{"gitId":"dwangwk"},"content":"[[portfolio](team/danielwang.md)]","lastModifiedDate":"2024-03-07"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2024-03-07"},{"lineNumber":32,"author":{"gitId":"-"},"content":"* Responsibilities: Data","lastModifiedDate":"2024-03-07"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"dwangwk"},"content":"### Ye Si Fan","lastModifiedDate":"2024-03-07"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"dwangwk"},"content":"\u003cimg src\u003d\"images/yespiggy.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-07"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"dwangwk"},"content":"[[github](http://github.com/yespiggy)] [[portfolio](team/sifan.md)]","lastModifiedDate":"2024-03-07"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"dwangwk"},"content":"* Responsibilities: UI","lastModifiedDate":"2024-03-07"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"dwangwk"},"content":"### Natasya Hadiatullah Buhari","lastModifiedDate":"2024-03-07"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"dwangwk"},"content":"\u003cimg src\u003d\"images/menatahari.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-07"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"dwangwk"},"content":"[[github](http://github.com/menatahari)]","lastModifiedDate":"2024-03-07"},{"lineNumber":48,"author":{"gitId":"dwangwk"},"content":"[[portfolio](team/natasya.md)]","lastModifiedDate":"2024-03-07"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"dwangwk"},"content":"* Responsibilities: Dev Ops","lastModifiedDate":"2024-03-07"}],"authorContributionMap":{"dwangwk":13,"-":32,"yeoshuheng":6}},{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"Developer Guide\"","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":7,"author":{"gitId":"yespiggy"},"content":"# CapitalConnect Developer Guide","lastModifiedDate":"2024-03-07"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":14,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":16,"author":{"gitId":"-"},"content":"_{ list here sources of all reused/adapted ideas, code, documentation, and third-party libraries -- include links to the original source as well }_","lastModifiedDate":"2023-09-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureDiagram.puml\" width\u003d\"280\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":"The ***Architecture Diagram*** given above explains the high-level design of the App.","lastModifiedDate":"2021-07-31"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":"Given below is a quick overview of main components and how they interact with each other.","lastModifiedDate":"2021-07-31"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"**`Main`** (consisting of classes [`Main`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/Main.java) and [`MainApp`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/MainApp.java)) is in charge of the app launch and shut down.","lastModifiedDate":"2023-09-03"},{"lineNumber":39,"author":{"gitId":"-"},"content":"* At app launch, it initializes the other components in the correct sequence, and connects them up with each other.","lastModifiedDate":"2023-09-03"},{"lineNumber":40,"author":{"gitId":"-"},"content":"* At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2023-09-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"* [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"* [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"* [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"The *Sequence Diagram* below shows how the components interact with each other for the scenario where the user issues the command `delete 1`.","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureSequenceDiagram.puml\" width\u003d\"574\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":59,"author":{"gitId":"-"},"content":"* defines its *API* in an `interface` with the same name as the Component.","lastModifiedDate":"2021-07-31"},{"lineNumber":60,"author":{"gitId":"-"},"content":"* implements its functionality using a concrete `{Component Name}Manager` class (which follows the corresponding API `interface` mentioned in the previous point.","lastModifiedDate":"2021-07-31"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":62,"author":{"gitId":"-"},"content":"For example, the `Logic` component defines its API in the `Logic.java` interface and implements its functionality using the `LogicManager.java` class which follows the `Logic` interface. Other components interact with a given component through its interface rather than the concrete class (reason: to prevent outside component\u0027s being coupled to the implementation of a component), as illustrated in the (partial) class diagram below.","lastModifiedDate":"2021-07-31"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":64,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ComponentManagers.puml\" width\u003d\"300\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":66,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"The **API** of this component is specified in [`Ui.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/Ui.java)","lastModifiedDate":"2021-07-31"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UiClassDiagram.puml\" alt\u003d\"Structure of the UI Component\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"The UI consists of a `MainWindow` that is made up of parts e.g.`CommandBox`, `ResultDisplay`, `PersonListPanel`, `StatusBarFooter` etc. All these, including the `MainWindow`, inherit from the abstract `UiPart` class which captures the commonalities between classes that represent parts of the visible GUI.","lastModifiedDate":"2021-07-31"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"The `UI` component uses the JavaFx UI framework. The layout of these UI parts are defined in matching `.fxml` files that are in the `src/main/resources/view` folder. For example, the layout of the [`MainWindow`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/MainWindow.java) is specified in [`MainWindow.fxml`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/resources/view/MainWindow.fxml)","lastModifiedDate":"2021-07-31"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"* executes user commands using the `Logic` component.","lastModifiedDate":"2021-07-31"},{"lineNumber":81,"author":{"gitId":"-"},"content":"* listens for changes to `Model` data so that the UI can be updated with the modified data.","lastModifiedDate":"2021-07-31"},{"lineNumber":82,"author":{"gitId":"-"},"content":"* keeps a reference to the `Logic` component, because the `UI` relies on the `Logic` to execute commands.","lastModifiedDate":"2021-07-31"},{"lineNumber":83,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component, as it displays `Person` object residing in the `Model`.","lastModifiedDate":"2021-07-31"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"**API** : [`Logic.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/logic/Logic.java)","lastModifiedDate":"2021-07-31"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/LogicClassDiagram.puml\" width\u003d\"550\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"The sequence diagram below illustrates the interactions within the `Logic` component, taking `execute(\"delete 1\")` API call as an example.","lastModifiedDate":"2023-09-03"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/DeleteSequenceDiagram.puml\" alt\u003d\"Interactions Inside the Logic Component for the `delete 1` Command\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":97,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"**Note:** The lifeline for `DeleteCommandParser` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline continues till the end of diagram.","lastModifiedDate":"2023-09-12"},{"lineNumber":100,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":104,"author":{"gitId":"-"},"content":"1. When `Logic` is called upon to execute a command, it is passed to an `AddressBookParser` object which in turn creates a parser that matches the command (e.g., `DeleteCommandParser`) and uses it to parse the command.","lastModifiedDate":"2023-09-03"},{"lineNumber":105,"author":{"gitId":"-"},"content":"1. This results in a `Command` object (more precisely, an object of one of its subclasses e.g., `DeleteCommand`) which is executed by the `LogicManager`.","lastModifiedDate":"2023-09-03"},{"lineNumber":106,"author":{"gitId":"-"},"content":"1. The command can communicate with the `Model` when it is executed (e.g. to delete a person).\u003cbr\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":107,"author":{"gitId":"-"},"content":" Note that although this is shown as a single step in the diagram above (for simplicity), in the code it can take several interactions (between the command object and the `Model`) to achieve.","lastModifiedDate":"2024-02-09"},{"lineNumber":108,"author":{"gitId":"-"},"content":"1. The result of the command execution is encapsulated as a `CommandResult` object which is returned back from `Logic`.","lastModifiedDate":"2023-09-03"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":110,"author":{"gitId":"-"},"content":"Here are the other classes in `Logic` (omitted from the class diagram above) that are used for parsing a user command:","lastModifiedDate":"2021-07-31"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":112,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ParserClasses.puml\" width\u003d\"600\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31"},{"lineNumber":115,"author":{"gitId":"-"},"content":"* When called upon to parse a user command, the `AddressBookParser` class creates an `XYZCommandParser` (`XYZ` is a placeholder for the specific command name e.g., `AddCommandParser`) which uses the other classes shown above to parse the user command and create a `XYZCommand` object (e.g., `AddCommand`) which the `AddressBookParser` returns back as a `Command` object.","lastModifiedDate":"2021-07-31"},{"lineNumber":116,"author":{"gitId":"-"},"content":"* All `XYZCommandParser` classes (e.g., `AddCommandParser`, `DeleteCommandParser`, ...) inherit from the `Parser` interface so that they can be treated similarly where possible e.g, during testing.","lastModifiedDate":"2021-07-31"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31"},{"lineNumber":119,"author":{"gitId":"-"},"content":"**API** : [`Model.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/model/Model.java)","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":"* stores the address book data i.e., all `Person` objects (which are contained in a `UniquePersonList` object).","lastModifiedDate":"2021-07-31"},{"lineNumber":127,"author":{"gitId":"-"},"content":"* stores the currently \u0027selected\u0027 `Person` objects (e.g., results of a search query) as a separate _filtered_ list which is exposed to outsiders as an unmodifiable `ObservableList\u003cPerson\u003e` that can be \u0027observed\u0027 e.g. the UI can be bound to this list so that the UI automatically updates when the data in the list change.","lastModifiedDate":"2021-07-31"},{"lineNumber":128,"author":{"gitId":"-"},"content":"* stores a `UserPref` object that represents the user’s preferences. This is exposed to the outside as a `ReadOnlyUserPref` objects.","lastModifiedDate":"2021-07-31"},{"lineNumber":129,"author":{"gitId":"-"},"content":"* does not depend on any of the other three components (as the `Model` represents data entities of the domain, they should make sense on their own without depending on other components)","lastModifiedDate":"2021-07-31"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":131,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":133,"author":{"gitId":"-"},"content":"**Note:** An alternative (arguably, a more OOP) model is given below. It has a `Tag` list in the `AddressBook`, which `Person` references. This allows `AddressBook` to only require one `Tag` object per unique tag, instead of each `Person` needing their own `Tag` objects.\u003cbr\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":135,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/BetterModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":"**API** : [`Storage.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/storage/Storage.java)","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/StorageClassDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":146,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":"* can save both address book data and user preference data in JSON format, and read them back into corresponding objects.","lastModifiedDate":"2023-09-03"},{"lineNumber":148,"author":{"gitId":"-"},"content":"* inherits from both `AddressBookStorage` and `UserPrefStorage`, which means it can be treated as either one (if only the functionality of only one is needed).","lastModifiedDate":"2021-07-31"},{"lineNumber":149,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component (because the `Storage` component\u0027s job is to save/retrieve objects that belong to the `Model`)","lastModifiedDate":"2021-07-21"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.addressbook.commons` package.","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":"The proposed undo/redo mechanism is facilitated by `VersionedAddressBook`. It extends `AddressBook` with an undo/redo history, stored internally as an `addressBookStateList` and `currentStatePointer`. Additionally, it implements the following operations:","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":"These operations are exposed in the `Model` interface as `Model#commitAddressBook()`, `Model#undoAddressBook()` and `Model#redoAddressBook()` respectively.","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":"Given below is an example usage scenario and how the undo/redo mechanism behaves at each step.","lastModifiedDate":"2020-05-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":"Step 1. The user launches the application for the first time. The `VersionedAddressBook` will be initialized with the initial address book state, and the `currentStatePointer` pointing to that single address book state.","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState0.puml\" alt\u003d\"UndoRedoState0\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":"Step 2. The user executes `delete 5` command to delete the 5th person in the address book. The `delete` command calls `Model#commitAddressBook()`, causing the modified state of the address book after the `delete 5` command executes to be saved in the `addressBookStateList`, and the `currentStatePointer` is shifted to the newly inserted address book state.","lastModifiedDate":"2020-05-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState1.puml\" alt\u003d\"UndoRedoState1\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"Step 3. The user executes `add n/David …​` to add a new person. The `add` command also calls `Model#commitAddressBook()`, causing another modified address book state to be saved into the `addressBookStateList`.","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState2.puml\" alt\u003d\"UndoRedoState2\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":"**Note:** If a command fails its execution, it will not call `Model#commitAddressBook()`, so the address book state will not be saved into the `addressBookStateList`.","lastModifiedDate":"2023-09-12"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":191,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":"Step 4. The user now decides that adding the person was a mistake, and decides to undo that action by executing the `undo` command. The `undo` command will call `Model#undoAddressBook()`, which will shift the `currentStatePointer` once to the left, pointing it to the previous address book state, and restores the address book to that state.","lastModifiedDate":"2020-05-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState3.puml\" alt\u003d\"UndoRedoState3\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":198,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"author":{"gitId":"-"},"content":"**Note:** If the `currentStatePointer` is at index 0, pointing to the initial AddressBook state, then there are no previous AddressBook states to restore. The `undo` command uses `Model#canUndoAddressBook()` to check if this is the case. If so, it will return an error to the user rather","lastModifiedDate":"2023-09-12"},{"lineNumber":201,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Logic.puml\" alt\u003d\"UndoSequenceDiagram-Logic\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":209,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":"**Note:** The lifeline for `UndoCommand` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.","lastModifiedDate":"2023-09-12"},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":213,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":217,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Model.puml\" alt\u003d\"UndoSequenceDiagram-Model\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":219,"author":{"gitId":"-"},"content":"The `redo` command does the opposite — it calls `Model#redoAddressBook()`, which shifts the `currentStatePointer` once to the right, pointing to the previously undone state, and restores the address book to that state.","lastModifiedDate":"2020-05-23"},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":221,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":223,"author":{"gitId":"-"},"content":"**Note:** If the `currentStatePointer` is at index `addressBookStateList.size() - 1`, pointing to the latest address book state, then there are no undone AddressBook states to restore. The `redo` command uses `Model#canRedoAddressBook()` to check if this is the case. If so, it will return an error to the user rather than attempting to perform the redo.","lastModifiedDate":"2023-09-12"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"author":{"gitId":"-"},"content":"Step 5. The user then decides to execute the command `list`. Commands that do not modify the address book, such as `list`, will usually not call `Model#commitAddressBook()`, `Model#undoAddressBook()` or `Model#redoAddressBook()`. Thus, the `addressBookStateList` remains unchanged.","lastModifiedDate":"2020-05-23"},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState4.puml\" alt\u003d\"UndoRedoState4\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"author":{"gitId":"-"},"content":"Step 6. The user executes `clear`, which calls `Model#commitAddressBook()`. Since the `currentStatePointer` is not pointing at the end of the `addressBookStateList`, all address book states after the `currentStatePointer` will be purged. Reason: It no longer makes sense to redo the `add n/David …​` command. This is the behavior that most modern desktop applications follow.","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState5.puml\" alt\u003d\"UndoRedoState5\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/CommitActivityDiagram.puml\" width\u003d\"250\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31"},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31"},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":247,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23"},{"lineNumber":248,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23"},{"lineNumber":249,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23"},{"lineNumber":250,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":254,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23"},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":259,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07"},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":264,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":265,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":266,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":267,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":268,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":269,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":271,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":273,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23"},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":275,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":276,"author":{"gitId":"yespiggy"},"content":"**Target user profile**: A venture capital portfolio manager who","lastModifiedDate":"2024-03-07"},{"lineNumber":277,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":278,"author":{"gitId":"yespiggy"},"content":"* has a need to keep a significant amount of startup investments","lastModifiedDate":"2024-03-07"},{"lineNumber":279,"author":{"gitId":"-"},"content":"* prefer desktop apps over other types","lastModifiedDate":"2020-05-23"},{"lineNumber":280,"author":{"gitId":"-"},"content":"* can type fast","lastModifiedDate":"2020-05-23"},{"lineNumber":281,"author":{"gitId":"-"},"content":"* prefers typing to mouse interactions","lastModifiedDate":"2020-05-26"},{"lineNumber":282,"author":{"gitId":"-"},"content":"* is reasonably comfortable using CLI apps","lastModifiedDate":"2020-05-23"},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":284,"author":{"gitId":"yespiggy"},"content":"**Value proposition**: Venture capital firms manage diverse portfolios of startup ","lastModifiedDate":"2024-03-07"},{"lineNumber":285,"author":{"gitId":"yespiggy"},"content":"investments across various industries. The app streamlines the management of startup","lastModifiedDate":"2024-03-07"},{"lineNumber":286,"author":{"gitId":"yespiggy"},"content":"investments, enabling VC firms to easily add, categorize, and track a diverse ","lastModifiedDate":"2024-03-07"},{"lineNumber":287,"author":{"gitId":"yespiggy"},"content":"portfolio of investments in various industries and funding stages.","lastModifiedDate":"2024-03-07"},{"lineNumber":288,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":290,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07"},{"lineNumber":291,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":292,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23"},{"lineNumber":293,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":294,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23"},{"lineNumber":295,"author":{"gitId":"yespiggy"},"content":"|-----------|-------------------|-------------------------------------------------------|--------------------------------------------------------------------------|","lastModifiedDate":"2024-03-07"},{"lineNumber":296,"author":{"gitId":"-"},"content":"| `* * *` | new user | see usage instructions | refer to instructions when I forget how to use the App |","lastModifiedDate":"2020-05-23"},{"lineNumber":297,"author":{"gitId":"yespiggy"},"content":"| `* * *` | user | view the startup investments in my portfolio | see the list of startup investments that I\u0027m interested in |","lastModifiedDate":"2024-03-07"},{"lineNumber":298,"author":{"gitId":"yespiggy"},"content":"| `* * *` | user | add a new startup investment to my portfolio | save the details of the new startup investment |","lastModifiedDate":"2024-03-07"},{"lineNumber":299,"author":{"gitId":"yespiggy"},"content":"| `* * *` | user | delete a startup investment to my portfolio | remove the startup investment that I am no longer interested in |","lastModifiedDate":"2024-03-07"},{"lineNumber":300,"author":{"gitId":"yespiggy"},"content":"| `* *` | user | find a startup investment by name | locate a startup investment without having to go through the entire list |","lastModifiedDate":"2024-03-07"},{"lineNumber":301,"author":{"gitId":"yespiggy"},"content":"| `* *` | intermediate user | assign funding stages to startup investments | know more about the startup investment when checking it through the app |","lastModifiedDate":"2024-03-07"},{"lineNumber":302,"author":{"gitId":"yespiggy"},"content":"| `* *` | intermediate user | find a startup investment by industry \u0026 funding stage | locate a startup investment without having to go through the entire list |","lastModifiedDate":"2024-03-07"},{"lineNumber":303,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":304,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":306,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07"},{"lineNumber":307,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":308,"author":{"gitId":"-"},"content":"(For all use cases below, the **System** is the `AddressBook` and the **Actor** is the `user`, unless specified otherwise)","lastModifiedDate":"2020-05-23"},{"lineNumber":309,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":310,"author":{"gitId":"dwangwk"},"content":"**Use case: Add a startup investment**","lastModifiedDate":"2024-03-07"},{"lineNumber":311,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":312,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23"},{"lineNumber":313,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":314,"author":{"gitId":"dwangwk"},"content":"1. User requests to add a new startup investment to their portfolio.","lastModifiedDate":"2024-03-07"},{"lineNumber":315,"author":{"gitId":"dwangwk"},"content":"2. CapitalConnect dashboard prompts the user to provide details including:","lastModifiedDate":"2024-03-07"},{"lineNumber":316,"author":{"gitId":"dwangwk"},"content":" * Startup name","lastModifiedDate":"2024-03-07"},{"lineNumber":317,"author":{"gitId":"dwangwk"},"content":" * Industry","lastModifiedDate":"2024-03-07"},{"lineNumber":318,"author":{"gitId":"dwangwk"},"content":" * Funding stage","lastModifiedDate":"2024-03-07"},{"lineNumber":319,"author":{"gitId":"dwangwk"},"content":" * Address","lastModifiedDate":"2024-03-07"},{"lineNumber":320,"author":{"gitId":"dwangwk"},"content":" * Contact information","lastModifiedDate":"2024-03-07"},{"lineNumber":321,"author":{"gitId":"dwangwk"},"content":"3. User provides the necessary details.","lastModifiedDate":"2024-03-07"},{"lineNumber":322,"author":{"gitId":"dwangwk"},"content":"4. CapitalConnect verifies the input for validity.","lastModifiedDate":"2024-03-07"},{"lineNumber":323,"author":{"gitId":"dwangwk"},"content":"5. CapitalConnect adds the new startup investment to the user\u0027s portfolio in the dashboard.","lastModifiedDate":"2024-03-07"},{"lineNumber":324,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":325,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":326,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":327,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23"},{"lineNumber":328,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":329,"author":{"gitId":"dwangwk"},"content":"* 4a. Invalid input or missing parameters.","lastModifiedDate":"2024-03-07"},{"lineNumber":330,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":331,"author":{"gitId":"dwangwk"},"content":" * 4a1. CapitalConnect shows an error message.","lastModifiedDate":"2024-03-07"},{"lineNumber":332,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":333,"author":{"gitId":"dwangwk"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-07"},{"lineNumber":334,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":335,"author":{"gitId":"dwangwk"},"content":"* 4b. Startup name already exists in the portfolio.","lastModifiedDate":"2024-03-07"},{"lineNumber":336,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":337,"author":{"gitId":"dwangwk"},"content":" * 4b1. CapitalConnect notifies the user about the duplicate entry.","lastModifiedDate":"2024-03-07"},{"lineNumber":338,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":339,"author":{"gitId":"dwangwk"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-07"},{"lineNumber":340,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":341,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":342,"author":{"gitId":"dwangwk"},"content":"**Use case: Search for startup investments by industry \u0026 funding stage**","lastModifiedDate":"2024-03-07"},{"lineNumber":343,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":344,"author":{"gitId":"dwangwk"},"content":"**MSS**","lastModifiedDate":"2024-03-07"},{"lineNumber":345,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":346,"author":{"gitId":"dwangwk"},"content":"1. User requests to search for startup investments by industry and funding stage.","lastModifiedDate":"2024-03-07"},{"lineNumber":347,"author":{"gitId":"dwangwk"},"content":"2. CapitalConnect dashboard prompts the user to input the industry and funding stage.","lastModifiedDate":"2024-03-07"},{"lineNumber":348,"author":{"gitId":"dwangwk"},"content":"3. User provides the industry and funding stage.","lastModifiedDate":"2024-03-07"},{"lineNumber":349,"author":{"gitId":"dwangwk"},"content":"4. CapitalConnect verifies the input for validity.","lastModifiedDate":"2024-03-07"},{"lineNumber":350,"author":{"gitId":"dwangwk"},"content":"5. CapitalConnect searches for startup investments matching the specified industry and funding stage in the user\u0027s portfolio.","lastModifiedDate":"2024-03-07"},{"lineNumber":351,"author":{"gitId":"dwangwk"},"content":"6. CapitalConnect displays the startup investments matching the search criteria.","lastModifiedDate":"2024-03-07"},{"lineNumber":352,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":353,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":354,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":355,"author":{"gitId":"dwangwk"},"content":"**Extensions**","lastModifiedDate":"2024-03-07"},{"lineNumber":356,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":357,"author":{"gitId":"dwangwk"},"content":"* 4a. Invalid input or missing parameters.","lastModifiedDate":"2024-03-07"},{"lineNumber":358,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":359,"author":{"gitId":"dwangwk"},"content":" * 4a1. CapitalConnect shows an error message.","lastModifiedDate":"2024-03-07"},{"lineNumber":360,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":361,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2020-05-23"},{"lineNumber":362,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":363,"author":{"gitId":"dwangwk"},"content":"* 6a. No startup investments match the search criteria.","lastModifiedDate":"2024-03-07"},{"lineNumber":364,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":365,"author":{"gitId":"dwangwk"},"content":" * 6a1. CapitalConnect shows an error message indicating no matches found.","lastModifiedDate":"2024-03-07"},{"lineNumber":366,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":367,"author":{"gitId":"dwangwk"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":368,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":369,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":370,"author":{"gitId":"dwangwk"},"content":"**Use case: Search for startup investments by name**","lastModifiedDate":"2024-03-07"},{"lineNumber":371,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":372,"author":{"gitId":"dwangwk"},"content":"**MSS**","lastModifiedDate":"2024-03-07"},{"lineNumber":373,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":374,"author":{"gitId":"dwangwk"},"content":"1. User requests to search for startup investments by name.","lastModifiedDate":"2024-03-07"},{"lineNumber":375,"author":{"gitId":"dwangwk"},"content":"2. CapitalConnect dashboard prompts the user to input the name of the startup.","lastModifiedDate":"2024-03-07"},{"lineNumber":376,"author":{"gitId":"dwangwk"},"content":"3. User provides the name of the startup.","lastModifiedDate":"2024-03-07"},{"lineNumber":377,"author":{"gitId":"dwangwk"},"content":"4. CapitalConnect verifies the input for validity.","lastModifiedDate":"2024-03-07"},{"lineNumber":378,"author":{"gitId":"dwangwk"},"content":"5. CapitalConnect searches for startup investments matching the specified name in the user\u0027s portfolio.","lastModifiedDate":"2024-03-07"},{"lineNumber":379,"author":{"gitId":"dwangwk"},"content":"6. CapitalConnect displays the startup investments matching the search criteria.","lastModifiedDate":"2024-03-07"},{"lineNumber":380,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":381,"author":{"gitId":"dwangwk"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":382,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":383,"author":{"gitId":"dwangwk"},"content":"**Extensions**","lastModifiedDate":"2024-03-07"},{"lineNumber":384,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":385,"author":{"gitId":"dwangwk"},"content":"* 4a. Invalid input or missing parameters.","lastModifiedDate":"2024-03-07"},{"lineNumber":386,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":387,"author":{"gitId":"dwangwk"},"content":" * 4a1. CapitalConnect shows an error message.","lastModifiedDate":"2024-03-07"},{"lineNumber":388,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":389,"author":{"gitId":"dwangwk"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-07"},{"lineNumber":390,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":391,"author":{"gitId":"dwangwk"},"content":"* 6a. No startup investments match the provided name.","lastModifiedDate":"2024-03-07"},{"lineNumber":392,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":393,"author":{"gitId":"dwangwk"},"content":" * 6a1. CapitalConnect shows an error message indicating no matches found.","lastModifiedDate":"2024-03-07"},{"lineNumber":394,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":395,"author":{"gitId":"dwangwk"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":396,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":397,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":398,"author":{"gitId":"dwangwk"},"content":"**Use case: Save the current state of CapitalConnect dashboard**","lastModifiedDate":"2024-03-07"},{"lineNumber":399,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":400,"author":{"gitId":"dwangwk"},"content":"**MSS**","lastModifiedDate":"2024-03-07"},{"lineNumber":401,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":402,"author":{"gitId":"dwangwk"},"content":"1. CapitalConnect automatically saves the state of the dashboard after every add and delete operation.","lastModifiedDate":"2024-03-07"},{"lineNumber":403,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":404,"author":{"gitId":"dwangwk"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":405,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":406,"author":{"gitId":"dwangwk"},"content":"**Extensions**","lastModifiedDate":"2024-03-07"},{"lineNumber":407,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":408,"author":{"gitId":"dwangwk"},"content":"* 1a. Issue with saving the dashboard state.","lastModifiedDate":"2024-03-07"},{"lineNumber":409,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":410,"author":{"gitId":"dwangwk"},"content":" * 1a1. CapitalConnect shows an error message indicating the issue with saving the dashboard state.","lastModifiedDate":"2024-03-07"},{"lineNumber":411,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":412,"author":{"gitId":"dwangwk"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":413,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":414,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":415,"author":{"gitId":"dwangwk"},"content":"**Use case: Delete a startup investment from the portfolio**","lastModifiedDate":"2024-03-07"},{"lineNumber":416,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":417,"author":{"gitId":"dwangwk"},"content":"**MSS**","lastModifiedDate":"2024-03-07"},{"lineNumber":418,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":419,"author":{"gitId":"dwangwk"},"content":"1. User requests to delete a specific startup investment from their portfolio.","lastModifiedDate":"2024-03-07"},{"lineNumber":420,"author":{"gitId":"dwangwk"},"content":"2. CapitalConnect dashboard prompts the user to input the index of the startup investment to be deleted.","lastModifiedDate":"2024-03-07"},{"lineNumber":421,"author":{"gitId":"dwangwk"},"content":"3. User provides the index of the startup investment.","lastModifiedDate":"2024-03-07"},{"lineNumber":422,"author":{"gitId":"dwangwk"},"content":"4. CapitalConnect verifies the input for validity.","lastModifiedDate":"2024-03-07"},{"lineNumber":423,"author":{"gitId":"dwangwk"},"content":"5. CapitalConnect deletes the startup investment at the specified index from the user\u0027s portfolio.","lastModifiedDate":"2024-03-07"},{"lineNumber":424,"author":{"gitId":"dwangwk"},"content":"6. CapitalConnect displays a confirmation message indicating successful deletion of the startup investment.","lastModifiedDate":"2024-03-07"},{"lineNumber":425,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":426,"author":{"gitId":"dwangwk"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":427,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":428,"author":{"gitId":"dwangwk"},"content":"**Extensions**","lastModifiedDate":"2024-03-07"},{"lineNumber":429,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":430,"author":{"gitId":"dwangwk"},"content":"* 4a. Invalid input or missing parameters.","lastModifiedDate":"2024-03-07"},{"lineNumber":431,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":432,"author":{"gitId":"dwangwk"},"content":" * 4a1. CapitalConnect shows an error message.","lastModifiedDate":"2024-03-07"},{"lineNumber":433,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":434,"author":{"gitId":"dwangwk"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-07"},{"lineNumber":435,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":436,"author":{"gitId":"dwangwk"},"content":"* 5a. Specified index is out of range or no startup investments at the specified index.","lastModifiedDate":"2024-03-07"},{"lineNumber":437,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":438,"author":{"gitId":"dwangwk"},"content":" * 5a1. CapitalConnect shows an error message indicating the issue.","lastModifiedDate":"2024-03-07"},{"lineNumber":439,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":440,"author":{"gitId":"dwangwk"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":441,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":442,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23"},{"lineNumber":443,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":444,"author":{"gitId":"-"},"content":"1. Should work on any _mainstream OS_ as long as it has Java `11` or above installed.","lastModifiedDate":"2020-05-23"},{"lineNumber":445,"author":{"gitId":"dwangwk"},"content":"2. Should be able to hold up to 1000 startups without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2024-03-07"},{"lineNumber":446,"author":{"gitId":"-"},"content":"3. A user with above average typing speed for regular English text (i.e. not code, not system admin commands) should be able to accomplish most of the tasks faster using commands than using the mouse.","lastModifiedDate":"2020-05-23"},{"lineNumber":447,"author":{"gitId":"dwangwk"},"content":"4. The system should have a response time of less than 1 second for common operations, such as adding or deleting a startup investment, to provide a smooth user experience.","lastModifiedDate":"2024-03-07"},{"lineNumber":448,"author":{"gitId":"dwangwk"},"content":"5. The application should provide clear and user-friendly error messages in case of invalid input or system errors to assist users in troubleshooting issues efficiently.","lastModifiedDate":"2024-03-07"},{"lineNumber":449,"author":{"gitId":"dwangwk"},"content":"6. The dashboard interface should be responsive and adapt to different screen sizes, ensuring a seamless user experience across devices such as desktops, laptops, tablets, and smartphones.","lastModifiedDate":"2024-03-07"},{"lineNumber":450,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":451,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":452,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23"},{"lineNumber":453,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":454,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09"},{"lineNumber":455,"author":{"gitId":"-"},"content":"* **Private contact detail**: A contact detail that is not meant to be shared with others","lastModifiedDate":"2020-05-23"},{"lineNumber":456,"author":{"gitId":"dwangwk"},"content":"* **CapitalConnect dashboard**: The user interface of the CapitalConnect application where users can manage their startup investments, perform searches, and view their portfolio.","lastModifiedDate":"2024-03-07"},{"lineNumber":457,"author":{"gitId":"dwangwk"},"content":"* **Startup investment**: An investment made by a user in a startup company, typically including details such as the startup name, industry, funding stage, address, and contact information.","lastModifiedDate":"2024-03-07"},{"lineNumber":458,"author":{"gitId":"dwangwk"},"content":"* **Industry**: The sector or field in which a startup operates, such as Tech, Biotech, or Finance.","lastModifiedDate":"2024-03-07"},{"lineNumber":459,"author":{"gitId":"dwangwk"},"content":"* **Funding stage**: The development stage of a startup at which it has received a certain level of investment, such as Seed, Series A, or Series B.","lastModifiedDate":"2024-03-07"},{"lineNumber":460,"author":{"gitId":"dwangwk"},"content":"* **Dashboard state**: The current configuration and data displayed in the CapitalConnect dashboard, including startup investments and any applied filters or search results.","lastModifiedDate":"2024-03-07"},{"lineNumber":461,"author":{"gitId":"dwangwk"},"content":"* **Index**: A numeric value representing the position of an item within a list, used in commands to reference specific startup investments in the portfolio.","lastModifiedDate":"2024-03-07"},{"lineNumber":462,"author":{"gitId":"dwangwk"},"content":"* **Confirmation message**: A notification displayed to the user indicating the successful completion of an action, such as adding or deleting a startup investment.","lastModifiedDate":"2024-03-07"},{"lineNumber":463,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":464,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":465,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":466,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23"},{"lineNumber":467,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":468,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":469,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":470,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":471,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":472,"author":{"gitId":"-"},"content":"**Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2023-09-12"},{"lineNumber":473,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":474,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":475,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":476,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":477,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":478,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":479,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":480,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":481,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23"},{"lineNumber":482,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":483,"author":{"gitId":"-"},"content":" 1. Double-click the jar file Expected: Shows the GUI with a set of sample contacts. The window size may not be optimum.","lastModifiedDate":"2020-05-23"},{"lineNumber":484,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":485,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23"},{"lineNumber":486,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":487,"author":{"gitId":"-"},"content":" 1. Resize the window to an optimum size. Move the window to a different location. Close the window.","lastModifiedDate":"2020-05-23"},{"lineNumber":488,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":489,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":490,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23"},{"lineNumber":491,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":492,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":493,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":494,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23"},{"lineNumber":495,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":496,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23"},{"lineNumber":497,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":498,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23"},{"lineNumber":499,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":500,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":501,"author":{"gitId":"-"},"content":" Expected: First contact is deleted from the list. Details of the deleted contact shown in the status message. Timestamp in the status bar is updated.","lastModifiedDate":"2020-05-23"},{"lineNumber":502,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":503,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":504,"author":{"gitId":"-"},"content":" Expected: No person is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2020-05-23"},{"lineNumber":505,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":506,"author":{"gitId":"-"},"content":" 1. Other incorrect delete commands to try: `delete`, `delete x`, `...` (where x is larger than the list size)\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":507,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":508,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":509,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":510,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":511,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":512,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":513,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":514,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":515,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23"},{"lineNumber":516,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":517,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"dwangwk":126,"yespiggy":15,"-":376}},{"path":"docs/UserGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"User Guide\"","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"yeoshuheng"},"content":"# CapitalConnect User Guide","lastModifiedDate":"2024-03-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"yeoshuheng"},"content":"**Welcome to CapitalConnect: Your Portfolio Powerhouse!**","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"yespiggy"},"content":"Do you ever feel like your startup portfolio is a tangled mess of spreadsheets and endless documents? You\u0027re not alone. ","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"yespiggy"},"content":"As a Venture Capital Portfolio Manager, juggling diverse investments across industries can be a complex challenge.","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"yeoshuheng"},"content":"**Who are you?**","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"yeoshuheng"},"content":"Our application is build for the aspiring venture capitalist! You are a professional on the lookout for the next Google. ","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"yeoshuheng"},"content":"You are passionate about innovative and new technologies. Most importantly, you want to **make your network your net-worth.**","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"yespiggy"},"content":"**CapitalConnect is here to revolutionize your experience**.","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"yespiggy"},"content":"As a desktop app for managing startup investments and contacts, CapitalConnect is optimized","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"yespiggy"},"content":"for use via **a Line Interface (CLI)** while still having the benefits of a Graphical User Interface (GUI). If you can","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"yespiggy"},"content":"type fast, CapitalConnect can get your investment management done faster than traditional GUI apps.","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"yeoshuheng"},"content":"We streamline and wrap **everything** in a sleek, easy to use platform. And by everything, we mean everything from","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"yeoshuheng"},"content":"- Adding new startups to your watch list!","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"yeoshuheng"},"content":"- Tracking the profile of various startups!","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"yeoshuheng"},"content":"- Categorising and searching for startups based on your requirements!","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"yeoshuheng"},"content":"and much, much, more!","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"yespiggy"},"content":"This user guide is your key to unlocking the full potential of the app. We\u0027ll walk you through every step, from","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"yespiggy"},"content":"effortlessly adding new investments to categorizing them by industry and funding stage. Forget the days of chasing","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"yespiggy"},"content":"down data – CapitalConnect empowers you to track your startup investments with ease.","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"yespiggy"},"content":"Throughout this guide, we\u0027ll use clear, step-by-step instructions and helpful screenshots to ensure you master ","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"yespiggy"},"content":"CapitalConnect in no time. So, buckle up and get ready to experience a smoother, more efficient way to manage your ","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"yespiggy"},"content":"startup investments!","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":42,"author":{"gitId":"yeoshuheng"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"yeoshuheng"},"content":"## Table Of Contents","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"## Quick start","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"1. Ensure you have Java `11` or above installed in your Computer.","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"yespiggy"},"content":"1. Download the latest `capitalconnect.jar` from [here](https://github.com/AY2324S2-CS2103T-W09-2/tp).","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"yespiggy"},"content":"1. Copy the file to the folder you want to use as the _home folder_ for CapitalConnect.","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"author":{"gitId":"yespiggy"},"content":"1. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar capitalconnect.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":" A GUI similar to the below should appear in a few seconds. Note how the app contains some sample data.\u003cbr\u003e","lastModifiedDate":"2023-01-01"},{"lineNumber":62,"author":{"gitId":"-"},"content":" ![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":"1. Type the command in the command box and press Enter to execute it. e.g. typing **`help`** and pressing Enter will open the help window.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" Some example commands you can try:","lastModifiedDate":"2020-05-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" * `list` : Lists all contacts.","lastModifiedDate":"2023-01-01"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"yeoshuheng"},"content":" * `add n/Pichu p/98765432 i/finance f/B e/pichuhr@example.com a/pichu street, block 123, #01-01` : Adds a start up called `Pichu` to CapitalConnect.","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"yespiggy"},"content":" * `delete 3` : Deletes the 3rd startup shown in the current list.","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"yespiggy"},"content":" * `clear` : Deletes all startups.","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":" * `exit` : Exits the app.","lastModifiedDate":"2023-01-01"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":"1. Refer to the [Features](#features) below for details of each command.","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"**Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"* Words in `UPPER_CASE` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"yeoshuheng"},"content":" e.g. in `add n/NAME`, `NAME` is a parameter which can be used as `add n/capital connect`.","lastModifiedDate":"2024-03-11"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":"* Items in square brackets are optional.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"yeoshuheng"},"content":" e.g `n/NAME [t/TAG]` can be used as `n/capital connect t/stealth startup` or as `n/capital connect`.","lastModifiedDate":"2024-03-11"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"* Items with `…`​ after them can be used multiple times including zero times.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"yeoshuheng"},"content":" e.g. `[t/TAG]…​` can be used as ` ` (i.e. 0 times), `t/stealth startup`, `t/steath startup t/mvp` etc.","lastModifiedDate":"2024-03-11"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"* Parameters can be in any order.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":" e.g. if the command specifies `n/NAME p/PHONE_NUMBER`, `p/PHONE_NUMBER n/NAME` is also acceptable.","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"* Extraneous parameters for commands that do not take in parameters (such as `help`, `list`, `exit` and `clear`) will be ignored.\u003cbr\u003e","lastModifiedDate":"2021-02-03"},{"lineNumber":100,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2021-02-03"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03"},{"lineNumber":102,"author":{"gitId":"-"},"content":"* If you are using a PDF version of this document, be careful when copying and pasting commands that span multiple lines as space characters surrounding line-breaks may be omitted when copied over to the application.","lastModifiedDate":"2023-06-26"},{"lineNumber":103,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":"### Viewing help : `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":107,"author":{"gitId":"yeoshuheng"},"content":"Shows a message explaining how to access the help page.","lastModifiedDate":"2024-03-20"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":"Format: `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"yeoshuheng"},"content":"### Adding a startup: `add`","lastModifiedDate":"2024-03-20"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"yeoshuheng"},"content":"Adds a startup to the address book.","lastModifiedDate":"2024-03-11"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"yeoshuheng"},"content":"Format: `add n/NAME p/PHONE_NUMBER i/INDUSTRY f/FUNDING_STAGE e/EMAIL a/ADDRESS [t/TAG]…​`","lastModifiedDate":"2024-03-11"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":122,"author":{"gitId":"yeoshuheng"},"content":"**Tip:** A startup can have any number of tags (including 0)","lastModifiedDate":"2024-03-20"},{"lineNumber":123,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"yeoshuheng"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":126,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":127,"author":{"gitId":"yeoshuheng"},"content":"**Tip:** We only support traditional funding stages, hence inputs for `FUNDING_STAGE` must be either `S`, `PS`, `A`, `B` or `C`!","lastModifiedDate":"2024-03-20"},{"lineNumber":128,"author":{"gitId":"yeoshuheng"},"content":"`A`, `B`, `C` represents the respective funding series whilst `PS` refers to pre-seed and `S` refers to the seed stage.","lastModifiedDate":"2024-03-20"},{"lineNumber":129,"author":{"gitId":"yeoshuheng"},"content":"\u003c/box\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":130,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":131,"author":{"gitId":"yeoshuheng"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":132,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":133,"author":{"gitId":"yeoshuheng"},"content":"**Tip:** You can\u0027t give us blank inputs! We need you to give us a valid input for mandatory fields! Check that phone number again,","lastModifiedDate":"2024-03-20"},{"lineNumber":134,"author":{"gitId":"yeoshuheng"},"content":"did you accidentally add a digit?","lastModifiedDate":"2024-03-20"},{"lineNumber":135,"author":{"gitId":"yeoshuheng"},"content":"\u003c/box\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":136,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":137,"author":{"gitId":"yeoshuheng"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":138,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":139,"author":{"gitId":"yeoshuheng"},"content":"**Tip:** We understand that profitable investments requires prospecting a large range of industries. Hence, we have no restrictions on `INDUSTRY`!","lastModifiedDate":"2024-03-20"},{"lineNumber":140,"author":{"gitId":"yeoshuheng"},"content":"We let **you** decide how specific you want to define your startup categories by! If `Tech` is too general, you can now use more specific industry categories, such as","lastModifiedDate":"2024-03-20"},{"lineNumber":141,"author":{"gitId":"yeoshuheng"},"content":"`web 3`, `AI`, `IAAS`!","lastModifiedDate":"2024-03-20"},{"lineNumber":142,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":144,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"yeoshuheng"},"content":"* `add n/Google p/98765432 e/sundarpichal@example.com a/Menlo Park, block 123, #01-01 f/A i/tech`","lastModifiedDate":"2024-03-20"},{"lineNumber":146,"author":{"gitId":"yeoshuheng"},"content":"* `add n/FTX t/bankrupted e/sbf@example.com a/Newgate Prison p/1234567 t/criminal f/A i/web 3`","lastModifiedDate":"2024-03-11"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"yeoshuheng"},"content":"### Listing all startups : `list`","lastModifiedDate":"2024-03-20"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"yeoshuheng"},"content":"Shows a list of all startups in the address book.","lastModifiedDate":"2024-03-11"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":"Format: `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"dwangwk"},"content":"### Adding or Editing a Startup Note: `note`","lastModifiedDate":"2024-03-20"},{"lineNumber":155,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":156,"author":{"gitId":"dwangwk"},"content":"Adds or edits a note for an existing startup in the address book.","lastModifiedDate":"2024-03-20"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":158,"author":{"gitId":"dwangwk"},"content":"Format: `note INDEX NOTE`","lastModifiedDate":"2024-03-20"},{"lineNumber":159,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":160,"author":{"gitId":"dwangwk"},"content":"- Adds or edits the note of the startup at the specified `INDEX`. The index refers to the index number shown in the displayed startup list. The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2024-03-20"},{"lineNumber":161,"author":{"gitId":"dwangwk"},"content":"- The `NOTE` field must be provided and cannot be empty.","lastModifiedDate":"2024-03-20"},{"lineNumber":162,"author":{"gitId":"dwangwk"},"content":"- Existing note will be updated to the input value.","lastModifiedDate":"2024-03-20"},{"lineNumber":163,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":164,"author":{"gitId":"dwangwk"},"content":"Examples:","lastModifiedDate":"2024-03-20"},{"lineNumber":165,"author":{"gitId":"dwangwk"},"content":"- `note 1 Innovative e-commerce platform` Adds or edits the note of the 1st startup to be \"Innovative e-commerce platform\".","lastModifiedDate":"2024-03-20"},{"lineNumber":166,"author":{"gitId":"dwangwk"},"content":"- `note 2 Expanding to new markets in Q3` Adds or edits the note of the 2nd startup with the information about its expansion plans. \u003cbr\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":169,"author":{"gitId":"dwangwk"},"content":" ![result for \u0027note 1 Innovative e-commerce platform\u0027](images/tracing/NoteCommand.png)","lastModifiedDate":"2024-03-20"},{"lineNumber":170,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":171,"author":{"gitId":"yeoshuheng"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":172,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":173,"author":{"gitId":"yeoshuheng"},"content":"**Tip:** Indexes are taken with respect to the list! Warnings might show up if you give us a invalid index.","lastModifiedDate":"2024-03-20"},{"lineNumber":174,"author":{"gitId":"yeoshuheng"},"content":"\u003c/box\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":175,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":176,"author":{"gitId":"yeoshuheng"},"content":"### Editing a startup : `edit`","lastModifiedDate":"2024-03-20"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":178,"author":{"gitId":"yeoshuheng"},"content":"Edits an existing startup in the address book.","lastModifiedDate":"2024-03-11"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":180,"author":{"gitId":"yeoshuheng"},"content":"Format: `edit INDEX [n/NAME] [p/PHONE] [f/FUNDING_STAGE] [i/INDUSTRY] [e/EMAIL] [a/ADDRESS] [t/TAG]…​`","lastModifiedDate":"2024-03-11"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":182,"author":{"gitId":"yeoshuheng"},"content":"* Edits the startup at the specified `INDEX`. The index refers to the index number shown in the displayed startup list. The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2024-03-20"},{"lineNumber":183,"author":{"gitId":"-"},"content":"* At least one of the optional fields must be provided.","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"* Existing values will be updated to the input values.","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"yeoshuheng"},"content":"* When editing tags, the existing tags of the startup will be removed i.e adding of tags is not cumulative.","lastModifiedDate":"2024-03-20"},{"lineNumber":186,"author":{"gitId":"yeoshuheng"},"content":"* You can remove all the startup’s tags by typing `t/` without","lastModifiedDate":"2024-03-11"},{"lineNumber":187,"author":{"gitId":"-"},"content":" specifying any tags after it.","lastModifiedDate":"2020-05-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":190,"author":{"gitId":"yeoshuheng"},"content":"* `edit 1 p/91234567 e/stripe@example.com` Edits the phone number and email address of the 1st startup to be `91234567` and `johndoe@example.com` respectively.","lastModifiedDate":"2024-03-20"},{"lineNumber":191,"author":{"gitId":"yeoshuheng"},"content":"* `edit 2 n/Stripe t/` Edits the name of the 2nd startup to be `Stripe` and clears all existing tags.","lastModifiedDate":"2024-03-20"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":194,"author":{"gitId":"yeoshuheng"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":195,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":196,"author":{"gitId":"yeoshuheng"},"content":"**Tip:** The same input rules for `add` applies here! An invalid input will throw an error.","lastModifiedDate":"2024-03-20"},{"lineNumber":197,"author":{"gitId":"yeoshuheng"},"content":"\u003c/box\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":198,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":199,"author":{"gitId":"yespiggy"},"content":"### Locating startups by name: `find`","lastModifiedDate":"2024-03-20"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":201,"author":{"gitId":"yespiggy"},"content":"Finds startups with names that contain any of the given keywords.","lastModifiedDate":"2024-03-20"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"yespiggy"},"content":"Format: `find n/NAME [MORE_NAME]`","lastModifiedDate":"2024-03-20"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"yeoshuheng"},"content":"* The search is case-insensitive. e.g `apple` will match `Apple`","lastModifiedDate":"2024-03-11"},{"lineNumber":206,"author":{"gitId":"yeoshuheng"},"content":"* The order of the keywords does not matter. e.g. `Jane Street` will match `Street Jane`","lastModifiedDate":"2024-03-11"},{"lineNumber":207,"author":{"gitId":"-"},"content":"* Only the name is searched.","lastModifiedDate":"2020-05-23"},{"lineNumber":208,"author":{"gitId":"yeoshuheng"},"content":"* Only full words will be matched e.g. `Microsoft` will not match `Microsofts`","lastModifiedDate":"2024-03-11"},{"lineNumber":209,"author":{"gitId":"yespiggy"},"content":"* Startups matching at least one keyword will be returned (i.e. `OR` search).","lastModifiedDate":"2024-03-20"},{"lineNumber":210,"author":{"gitId":"yeoshuheng"},"content":" e.g. `Jane Street` will return `Jane Technologies`, `State Street`","lastModifiedDate":"2024-03-11"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":212,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":213,"author":{"gitId":"yespiggy"},"content":"* `find n/Google` returns `google` and `Google Deepmind`","lastModifiedDate":"2024-03-20"},{"lineNumber":214,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":215,"author":{"gitId":"yespiggy"},"content":" ![result for \u0027find by name google\u0027](images/findByNameGoogle.png)","lastModifiedDate":"2024-03-20"},{"lineNumber":216,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":217,"author":{"gitId":"yespiggy"},"content":"* `find n/apple` returns `apple pay`, `eat apple`\u003cbr\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":218,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":219,"author":{"gitId":"yespiggy"},"content":" ![result for \u0027find by name apple\u0027](images/findByNameApple.png)","lastModifiedDate":"2024-03-20"},{"lineNumber":220,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":221,"author":{"gitId":"yespiggy"},"content":"### Locating startups by funding stage: `find`","lastModifiedDate":"2024-03-20"},{"lineNumber":222,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":223,"author":{"gitId":"yespiggy"},"content":"Finds startups that match the funding stages you are looking for.","lastModifiedDate":"2024-03-20"},{"lineNumber":224,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":225,"author":{"gitId":"yespiggy"},"content":"Format: `find f/FUNDING_STAGE [MORE_FUNDING_STAGES]`","lastModifiedDate":"2024-03-20"},{"lineNumber":226,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":227,"author":{"gitId":"yespiggy"},"content":"* The search is case-insensitive. e.g `a` will match `A`","lastModifiedDate":"2024-03-20"},{"lineNumber":228,"author":{"gitId":"yeoshuheng"},"content":"* Multiple funding stages can be looked up in a single search.","lastModifiedDate":"2024-03-20"},{"lineNumber":229,"author":{"gitId":"yespiggy"},"content":"* The order of the keywords does not matter. e.g. `A B` will match `B A`","lastModifiedDate":"2024-03-20"},{"lineNumber":230,"author":{"gitId":"yespiggy"},"content":"* Only the funding stage is searched.","lastModifiedDate":"2024-03-20"},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":232,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2024-03-20"},{"lineNumber":233,"author":{"gitId":"yespiggy"},"content":"* `find f/C` returns startups that are currently in Series C funding","lastModifiedDate":"2024-03-20"},{"lineNumber":234,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":235,"author":{"gitId":"yespiggy"},"content":" ![result for \u0027find by fundingStage C\u0027](images/findByFundingStage.png)","lastModifiedDate":"2024-03-20"},{"lineNumber":236,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":237,"author":{"gitId":"yespiggy"},"content":"### Locating startups by industry: `find`","lastModifiedDate":"2024-03-20"},{"lineNumber":238,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":239,"author":{"gitId":"yespiggy"},"content":"Finds startups with industries that match any of the given keywords.","lastModifiedDate":"2024-03-20"},{"lineNumber":240,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":241,"author":{"gitId":"yespiggy"},"content":"Format: `find f/INDUSTRY [MORE_INDUSTRIES]`","lastModifiedDate":"2024-03-20"},{"lineNumber":242,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":243,"author":{"gitId":"yespiggy"},"content":"* The search is case-insensitive. e.g `ai` will match `AI`","lastModifiedDate":"2024-03-20"},{"lineNumber":244,"author":{"gitId":"yeoshuheng"},"content":"* Startups from multiple industries can be looked up in a single search.","lastModifiedDate":"2024-03-20"},{"lineNumber":245,"author":{"gitId":"yespiggy"},"content":"* The order of the keywords does not matter. e.g. `AI WEB3` will match `WEB3 AI`","lastModifiedDate":"2024-03-20"},{"lineNumber":246,"author":{"gitId":"yespiggy"},"content":"* Only the industry is searched.","lastModifiedDate":"2024-03-20"},{"lineNumber":247,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":248,"author":{"gitId":"yespiggy"},"content":"Examples:","lastModifiedDate":"2024-03-20"},{"lineNumber":249,"author":{"gitId":"yeoshuheng"},"content":"* `find i/AI` returns startups that have AI tagged within their industry.","lastModifiedDate":"2024-03-20"},{"lineNumber":250,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":251,"author":{"gitId":"yespiggy"},"content":" ![result for \u0027find by fundingStage C\u0027](images/findByIndustry.png)","lastModifiedDate":"2024-03-20"},{"lineNumber":252,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"author":{"gitId":"yespiggy"},"content":"### Deleting a startup : `delete`","lastModifiedDate":"2024-03-20"},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":255,"author":{"gitId":"yespiggy"},"content":"Deletes the specified startup from CapitalConnect.","lastModifiedDate":"2024-03-20"},{"lineNumber":256,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":257,"author":{"gitId":"-"},"content":"Format: `delete INDEX`","lastModifiedDate":"2020-05-23"},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":259,"author":{"gitId":"yespiggy"},"content":"* Deletes the startup at the specified `INDEX`.","lastModifiedDate":"2024-03-20"},{"lineNumber":260,"author":{"gitId":"yeoshuheng"},"content":"* The index refers to the index number shown in the displayed startup list.","lastModifiedDate":"2024-03-11"},{"lineNumber":261,"author":{"gitId":"-"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2020-05-23"},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":264,"author":{"gitId":"yeoshuheng"},"content":"* `list` followed by `delete 2` deletes the 2nd startup in the address book.","lastModifiedDate":"2024-03-11"},{"lineNumber":265,"author":{"gitId":"yeoshuheng"},"content":"* `find Betsy` followed by `delete 1` deletes the 1st startup in the results of the `find` command.","lastModifiedDate":"2024-03-11"},{"lineNumber":266,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":267,"author":{"gitId":"-"},"content":"### Clearing all entries : `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":268,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":269,"author":{"gitId":"yespiggy"},"content":"Clears all entries from CapitalConnect.","lastModifiedDate":"2024-03-20"},{"lineNumber":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":271,"author":{"gitId":"-"},"content":"Format: `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":273,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":275,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23"},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":277,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":278,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":279,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23"},{"lineNumber":280,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":281,"author":{"gitId":"yespiggy"},"content":"CapitalConnect data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.","lastModifiedDate":"2024-03-20"},{"lineNumber":282,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":283,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04"},{"lineNumber":284,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":285,"author":{"gitId":"yeoshuheng"},"content":"CapitalConnect data are saved automatically as a JSON file `[JAR file location]/data/addressbook.json`. Advanced users are welcome to update data directly by editing that data file.","lastModifiedDate":"2024-03-20"},{"lineNumber":286,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":287,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"warning\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":288,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":289,"author":{"gitId":"-"},"content":"**Caution:**","lastModifiedDate":"2023-09-12"},{"lineNumber":290,"author":{"gitId":"yeoshuheng"},"content":"If your changes to the data file makes its format invalid, CapitalConnect will discard all data and start with an empty data file at the next run. Hence, it is recommended to take a backup of the file before editing it.\u003cbr\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":291,"author":{"gitId":"yeoshuheng"},"content":"Furthermore, certain edits can cause CapitalConnect to behave in unexpected ways (e.g., if a value entered is outside the acceptable range). Therefore, edit the data file only if you are confident that you can update it correctly.","lastModifiedDate":"2024-03-20"},{"lineNumber":292,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":293,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":294,"author":{"gitId":"-"},"content":"### Archiving data files `[coming in v2.0]`","lastModifiedDate":"2020-05-23"},{"lineNumber":295,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":296,"author":{"gitId":"-"},"content":"_Details coming soon ..._","lastModifiedDate":"2021-02-04"},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":298,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":299,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":300,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23"},{"lineNumber":301,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":302,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":303,"author":{"gitId":"-"},"content":"**A**: Install the app in the other computer and overwrite the empty data file it creates with the file that contains the data of your previous AddressBook home folder.","lastModifiedDate":"2020-05-23"},{"lineNumber":304,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":305,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":306,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":307,"author":{"gitId":"-"},"content":"## Known issues","lastModifiedDate":"2023-09-08"},{"lineNumber":308,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":309,"author":{"gitId":"-"},"content":"1. **When using multiple screens**, if you move the application to a secondary screen, and later switch to using only the primary screen, the GUI will open off-screen. The remedy is to delete the `preferences.json` file created by the application before running the application again.","lastModifiedDate":"2023-09-08"},{"lineNumber":310,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":311,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08"},{"lineNumber":312,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":313,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23"},{"lineNumber":314,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":315,"author":{"gitId":"yespiggy"},"content":"| Action | Format, Examples |","lastModifiedDate":"2024-03-20"},{"lineNumber":316,"author":{"gitId":"yeoshuheng"},"content":"|---------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|","lastModifiedDate":"2024-03-20"},{"lineNumber":317,"author":{"gitId":"yeoshuheng"},"content":"| **Add** | `add n/NAME p/PHONE_NUMBER f/FUNDING_STAGE i/INDUSTRY e/EMAIL a/ADDRESS [t/TAG]…​` \u003cbr\u003e e.g., `add n/Google p/22224444 e/larrypage@example.com a/123, menlo park, 1234665 t/SV-based i/Tech f/A` |","lastModifiedDate":"2024-03-20"},{"lineNumber":318,"author":{"gitId":"yespiggy"},"content":"| **Clear** | `clear` |","lastModifiedDate":"2024-03-20"},{"lineNumber":319,"author":{"gitId":"yespiggy"},"content":"| **Delete** | `delete INDEX`\u003cbr\u003e e.g., `delete 3` |","lastModifiedDate":"2024-03-20"},{"lineNumber":320,"author":{"gitId":"yeoshuheng"},"content":"| **Edit** | `edit INDEX [n/NAME] [p/PHONE_NUMBER] [i/INDUSTRY] [f/FUNDING_STAGE] [e/EMAIL] [a/ADDRESS] [t/TAG]…​`\u003cbr\u003e e.g.,`edit 2 n/James Lee e/jameslee@example.com` |","lastModifiedDate":"2024-03-20"},{"lineNumber":321,"author":{"gitId":"yespiggy"},"content":"| **Find by Name** | `find n/NAME [MORE_NAMES]`\u003cbr\u003e e.g., `find n/apple` |","lastModifiedDate":"2024-03-20"},{"lineNumber":322,"author":{"gitId":"yeoshuheng"},"content":"| **Find by Funding Stage** | `find f/FUNDING_STAGE [MORE_FUNDING_STAGES]`\u003cbr\u003e e.g., `find f/A`, `find f/A B` |","lastModifiedDate":"2024-03-20"},{"lineNumber":323,"author":{"gitId":"yeoshuheng"},"content":"| **Find by Industry** | `find i/INDUSTRY [MORE_INDUSTRIES]`\u003cbr\u003e e.g., `find i/AI`, `find i/AI Robotics` |","lastModifiedDate":"2024-03-20"},{"lineNumber":324,"author":{"gitId":"yespiggy"},"content":"| **List** | `list` |","lastModifiedDate":"2024-03-20"},{"lineNumber":325,"author":{"gitId":"yespiggy"},"content":"| **Help** | `help` |","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"dwangwk":14,"yespiggy":66,"-":155,"yeoshuheng":90}},{"path":"docs/_markbind/layouts/default.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003chead-bottom\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":" \u003clink rel\u003d\"stylesheet\" href\u003d\"{{baseUrl}}/stylesheets/main.css\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c/head-bottom\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003cheader sticky\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":" \u003cnavbar type\u003d\"dark\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":7,"author":{"gitId":"yespiggy"},"content":" \u003ca slot\u003d\"brand\" href\u003d\"{{baseUrl}}/index.html\" title\u003d\"Home\" class\u003d\"navbar-brand\"\u003eCapitalConnect\u003c/a\u003e","lastModifiedDate":"2024-03-10"},{"lineNumber":8,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/index.html\" class\u003d\"nav-link\"\u003eHome\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/UserGuide.html\" class\u003d\"nav-link\"\u003eUser Guide\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/DeveloperGuide.html\" class\u003d\"nav-link\"\u003eDeveloper Guide\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/AboutUs.html\" class\u003d\"nav-link\"\u003eAbout Us\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":12,"author":{"gitId":"yespiggy"},"content":" \u003cli\u003e\u003ca href\u003d\"https://github.com/AY2324S2-CS2103T-W09-2/tp\" target\u003d\"_blank\" class\u003d\"nav-link\"\u003e\u003cmd\u003e:fab-github:\u003c/md\u003e\u003c/a\u003e","lastModifiedDate":"2024-03-10"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003cli slot\u003d\"right\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cform class\u003d\"navbar-form\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003csearchbar :data\u003d\"searchData\" placeholder\u003d\"Search\" :on-hit\u003d\"searchCallback\" menu-align-right\u003e\u003c/searchbar\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003c/form\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003c/navbar\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"\u003c/header\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"\u003cdiv id\u003d\"flex-body\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"site-nav\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"site-nav-top\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"fw-bold mb-2\" style\u003d\"font-size: 1.25rem;\"\u003eSite Map\u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003csite-nav\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"* [Home]({{ baseUrl }}/index.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":"* [User Guide]({{ baseUrl }}/UserGuide.html) :expanded:","lastModifiedDate":"2023-09-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * [Quick Start]({{ baseUrl }}/UserGuide.html#quick-start)","lastModifiedDate":"2023-09-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * [Features]({{ baseUrl }}/UserGuide.html#features)","lastModifiedDate":"2023-09-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * [FAQ]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * [Command Summary]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":"* [Developer Guide]({{ baseUrl }}/DeveloperGuide.html) :expanded:","lastModifiedDate":"2023-09-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * [Acknowledgements]({{ baseUrl }}/DeveloperGuide.html#acknowledgements)","lastModifiedDate":"2023-09-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * [Setting Up]({{ baseUrl }}/DeveloperGuide.html#setting-up-getting-started)","lastModifiedDate":"2023-09-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * [Design]({{ baseUrl }}/DeveloperGuide.html#design)","lastModifiedDate":"2023-09-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * [Implementation]({{ baseUrl }}/DeveloperGuide.html#implementation)","lastModifiedDate":"2023-09-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * [Documentation, logging, testing, configuration, dev-ops]({{ baseUrl }}/DeveloperGuide.html#documentation-logging-testing-configuration-dev-ops)","lastModifiedDate":"2023-09-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * [Appendix: Requirements]({{ baseUrl }}/DeveloperGuide.html#appendix-requirements)","lastModifiedDate":"2023-09-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * [Appendix: Instructions for manual testing]({{ baseUrl }}/DeveloperGuide.html#appendix-instructions-for-manual-testing)","lastModifiedDate":"2023-09-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":"* Tutorials","lastModifiedDate":"2023-09-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * [Tracing code]({{ baseUrl }}/tutorials/TracingCode.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * [Adding a command]({{ baseUrl }}/tutorials/AddRemark.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * [Removing Fields]({{ baseUrl }}/tutorials/RemovingFields.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [About Us]({{ baseUrl }}/AboutUs.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u003c/site-nav\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003cdiv id\u003d\"content-wrapper\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":" {{ content }}","lastModifiedDate":"2023-09-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"page-nav\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cpage-nav /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003cscroll-top-button\u003e\u003c/scroll-top-button\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":62,"author":{"gitId":"-"},"content":"\u003cfooter\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":63,"author":{"gitId":"-"},"content":" \u003c!-- Support MarkBind by including a link to us on your landing page! --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":64,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"text-center\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":" \u003csmall\u003e[\u003cmd\u003e**Powered by**\u003c/md\u003e \u003cimg src\u003d\"https://markbind.org/favicon.ico\" width\u003d\"30\"\u003e {{MarkBind}}, generated on {{timestamp}}]\u003c/small\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":66,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":"\u003c/footer\u003e","lastModifiedDate":"2023-09-12"}],"authorContributionMap":{"yespiggy":2,"-":65}},{"path":"docs/index.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"\"","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"yespiggy"},"content":"# CapitalConnect","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"[![CI Status](https://github.com/se-edu/addressbook-level3/workflows/Java%20CI/badge.svg)](https://github.com/se-edu/addressbook-level3/actions)","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"[![codecov](https://codecov.io/gh/se-edu/addressbook-level3/branch/master/graph/badge.svg)](https://codecov.io/gh/se-edu/addressbook-level3)","lastModifiedDate":"2020-08-07"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"yespiggy"},"content":"**CapitalConnect is a desktop application for managing your contact details.** While it has a GUI, most of the user interactions happen using a CLI (Command Line Interface).","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"yespiggy"},"content":"* If you are interested in using CapitalConnect, head over to the [_Quick Start_ section of the **User Guide**](UserGuide.html#quick-start).","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"yespiggy"},"content":"* If you are interested about developing CapitalConnect, the [**Developer Guide**](DeveloperGuide.html) is a good place to start.","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"**Acknowledgements**","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"* Libraries used: [JavaFX](https://openjfx.io/), [Jackson](https://github.com/FasterXML/jackson), [JUnit5](https://github.com/junit-team/junit5)","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"yespiggy":4,"-":17}},{"path":"docs/team/danielwang.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"dwangwk"},"content":"---","lastModifiedDate":"2024-03-07"},{"lineNumber":2,"author":{"gitId":"dwangwk"},"content":" layout: default.md","lastModifiedDate":"2024-03-07"},{"lineNumber":3,"author":{"gitId":"dwangwk"},"content":" title: \"Daniel Wang\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-03-07"},{"lineNumber":4,"author":{"gitId":"dwangwk"},"content":"---","lastModifiedDate":"2024-03-07"},{"lineNumber":5,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":6,"author":{"gitId":"dwangwk"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-03-07"},{"lineNumber":7,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":8,"author":{"gitId":"dwangwk"},"content":"AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2024-03-07"},{"lineNumber":9,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":10,"author":{"gitId":"dwangwk"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-03-07"},{"lineNumber":11,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":12,"author":{"gitId":"dwangwk"},"content":"* **New Feature**: Added the ability to delete startups from the project.","lastModifiedDate":"2024-03-07"},{"lineNumber":13,"author":{"gitId":"dwangwk"},"content":" * What it does: This allows users to delete startups from the Capital Connect data.","lastModifiedDate":"2024-03-07"},{"lineNumber":14,"author":{"gitId":"dwangwk"},"content":" * Justification: This is imperative for our users to upkeep the data with the latest information.","lastModifiedDate":"2024-03-07"},{"lineNumber":15,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":16,"author":{"gitId":"dwangwk"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-03-07"},{"lineNumber":17,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":18,"author":{"gitId":"dwangwk"},"content":"* **Project management**:","lastModifiedDate":"2024-03-07"},{"lineNumber":19,"author":{"gitId":"dwangwk"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-03-07"},{"lineNumber":20,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":21,"author":{"gitId":"dwangwk"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-03-07"},{"lineNumber":22,"author":{"gitId":"dwangwk"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-03-07"},{"lineNumber":23,"author":{"gitId":"dwangwk"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-03-07"},{"lineNumber":24,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":25,"author":{"gitId":"dwangwk"},"content":"* **Documentation**:","lastModifiedDate":"2024-03-07"},{"lineNumber":26,"author":{"gitId":"dwangwk"},"content":" * User Guide:","lastModifiedDate":"2024-03-07"},{"lineNumber":27,"author":{"gitId":"dwangwk"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-03-07"},{"lineNumber":28,"author":{"gitId":"dwangwk"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-03-07"},{"lineNumber":29,"author":{"gitId":"dwangwk"},"content":" * Developer Guide:","lastModifiedDate":"2024-03-07"},{"lineNumber":30,"author":{"gitId":"dwangwk"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-03-07"},{"lineNumber":31,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":32,"author":{"gitId":"dwangwk"},"content":"* **Community**:","lastModifiedDate":"2024-03-07"},{"lineNumber":33,"author":{"gitId":"dwangwk"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-03-07"},{"lineNumber":34,"author":{"gitId":"dwangwk"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-03-07"},{"lineNumber":35,"author":{"gitId":"dwangwk"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-03-07"},{"lineNumber":36,"author":{"gitId":"dwangwk"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-03-07"},{"lineNumber":37,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":38,"author":{"gitId":"dwangwk"},"content":"* **Tools**:","lastModifiedDate":"2024-03-07"},{"lineNumber":39,"author":{"gitId":"dwangwk"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-03-07"},{"lineNumber":40,"author":{"gitId":"dwangwk"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-03-07"},{"lineNumber":41,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":42,"author":{"gitId":"dwangwk"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-03-07"}],"authorContributionMap":{"dwangwk":42}},{"path":"docs/team/natasya.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"dwangwk"},"content":"---","lastModifiedDate":"2024-03-07"},{"lineNumber":2,"author":{"gitId":"dwangwk"},"content":" layout: default.md","lastModifiedDate":"2024-03-07"},{"lineNumber":3,"author":{"gitId":"dwangwk"},"content":" title: \"Natasya\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-03-07"},{"lineNumber":4,"author":{"gitId":"dwangwk"},"content":"---","lastModifiedDate":"2024-03-07"},{"lineNumber":5,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":6,"author":{"gitId":"dwangwk"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-03-07"},{"lineNumber":7,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":8,"author":{"gitId":"dwangwk"},"content":"AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2024-03-07"},{"lineNumber":9,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":10,"author":{"gitId":"dwangwk"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-03-07"},{"lineNumber":11,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":12,"author":{"gitId":"dwangwk"},"content":"* **New Feature**: Added the ability to delete startups from the project.","lastModifiedDate":"2024-03-07"},{"lineNumber":13,"author":{"gitId":"dwangwk"},"content":" * What it does: This allows users to delete startups from the Capital Connect data.","lastModifiedDate":"2024-03-07"},{"lineNumber":14,"author":{"gitId":"dwangwk"},"content":" * Justification: This is imperative for our users to upkeep the data with the latest information.","lastModifiedDate":"2024-03-07"},{"lineNumber":15,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":16,"author":{"gitId":"dwangwk"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-03-07"},{"lineNumber":17,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":18,"author":{"gitId":"dwangwk"},"content":"* **Project management**:","lastModifiedDate":"2024-03-07"},{"lineNumber":19,"author":{"gitId":"dwangwk"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-03-07"},{"lineNumber":20,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":21,"author":{"gitId":"dwangwk"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-03-07"},{"lineNumber":22,"author":{"gitId":"dwangwk"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-03-07"},{"lineNumber":23,"author":{"gitId":"dwangwk"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-03-07"},{"lineNumber":24,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":25,"author":{"gitId":"dwangwk"},"content":"* **Documentation**:","lastModifiedDate":"2024-03-07"},{"lineNumber":26,"author":{"gitId":"dwangwk"},"content":" * User Guide:","lastModifiedDate":"2024-03-07"},{"lineNumber":27,"author":{"gitId":"dwangwk"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-03-07"},{"lineNumber":28,"author":{"gitId":"dwangwk"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-03-07"},{"lineNumber":29,"author":{"gitId":"dwangwk"},"content":" * Developer Guide:","lastModifiedDate":"2024-03-07"},{"lineNumber":30,"author":{"gitId":"dwangwk"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-03-07"},{"lineNumber":31,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":32,"author":{"gitId":"dwangwk"},"content":"* **Community**:","lastModifiedDate":"2024-03-07"},{"lineNumber":33,"author":{"gitId":"dwangwk"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-03-07"},{"lineNumber":34,"author":{"gitId":"dwangwk"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-03-07"},{"lineNumber":35,"author":{"gitId":"dwangwk"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-03-07"},{"lineNumber":36,"author":{"gitId":"dwangwk"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-03-07"},{"lineNumber":37,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":38,"author":{"gitId":"dwangwk"},"content":"* **Tools**:","lastModifiedDate":"2024-03-07"},{"lineNumber":39,"author":{"gitId":"dwangwk"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-03-07"},{"lineNumber":40,"author":{"gitId":"dwangwk"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-03-07"},{"lineNumber":41,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":42,"author":{"gitId":"dwangwk"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-03-07"}],"authorContributionMap":{"dwangwk":42}},{"path":"docs/team/shuheng.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"John Doe\u0027s Project Portfolio Page\"","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2021-07-30"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"yeoshuheng"},"content":"* **New Feature**: Added the ability to add startups to the project.","lastModifiedDate":"2024-02-25"},{"lineNumber":13,"author":{"gitId":"yeoshuheng"},"content":" * What it does: This allows users to add startups to Capital Connect alongside information such as funding stage.","lastModifiedDate":"2024-02-25"},{"lineNumber":14,"author":{"gitId":"yeoshuheng"},"content":" * Justification: This is imperative for our users as they consist of key information they have to track.","lastModifiedDate":"2024-02-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"* **Project management**:","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":"* **Documentation**:","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * User Guide:","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Developer Guide:","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":"* **Community**:","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"* **Tools**:","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"-":41,"yeoshuheng":3}},{"path":"docs/team/sifan.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"dwangwk"},"content":"---","lastModifiedDate":"2024-03-07"},{"lineNumber":2,"author":{"gitId":"dwangwk"},"content":" layout: default.md","lastModifiedDate":"2024-03-07"},{"lineNumber":3,"author":{"gitId":"dwangwk"},"content":" title: \"Si Fan\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-03-07"},{"lineNumber":4,"author":{"gitId":"dwangwk"},"content":"---","lastModifiedDate":"2024-03-07"},{"lineNumber":5,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":6,"author":{"gitId":"dwangwk"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-03-07"},{"lineNumber":7,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":8,"author":{"gitId":"dwangwk"},"content":"AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2024-03-07"},{"lineNumber":9,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":10,"author":{"gitId":"dwangwk"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-03-07"},{"lineNumber":11,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":12,"author":{"gitId":"dwangwk"},"content":"* **New Feature**: Added the ability to delete startups from the project.","lastModifiedDate":"2024-03-07"},{"lineNumber":13,"author":{"gitId":"dwangwk"},"content":" * What it does: This allows users to delete startups from the Capital Connect data.","lastModifiedDate":"2024-03-07"},{"lineNumber":14,"author":{"gitId":"dwangwk"},"content":" * Justification: This is imperative for our users to upkeep the data with the latest information.","lastModifiedDate":"2024-03-07"},{"lineNumber":15,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":16,"author":{"gitId":"dwangwk"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-03-07"},{"lineNumber":17,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":18,"author":{"gitId":"dwangwk"},"content":"* **Project management**:","lastModifiedDate":"2024-03-07"},{"lineNumber":19,"author":{"gitId":"dwangwk"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-03-07"},{"lineNumber":20,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":21,"author":{"gitId":"dwangwk"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-03-07"},{"lineNumber":22,"author":{"gitId":"dwangwk"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-03-07"},{"lineNumber":23,"author":{"gitId":"dwangwk"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-03-07"},{"lineNumber":24,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":25,"author":{"gitId":"dwangwk"},"content":"* **Documentation**:","lastModifiedDate":"2024-03-07"},{"lineNumber":26,"author":{"gitId":"dwangwk"},"content":" * User Guide:","lastModifiedDate":"2024-03-07"},{"lineNumber":27,"author":{"gitId":"dwangwk"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-03-07"},{"lineNumber":28,"author":{"gitId":"dwangwk"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-03-07"},{"lineNumber":29,"author":{"gitId":"dwangwk"},"content":" * Developer Guide:","lastModifiedDate":"2024-03-07"},{"lineNumber":30,"author":{"gitId":"dwangwk"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-03-07"},{"lineNumber":31,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":32,"author":{"gitId":"dwangwk"},"content":"* **Community**:","lastModifiedDate":"2024-03-07"},{"lineNumber":33,"author":{"gitId":"dwangwk"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-03-07"},{"lineNumber":34,"author":{"gitId":"dwangwk"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-03-07"},{"lineNumber":35,"author":{"gitId":"dwangwk"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-03-07"},{"lineNumber":36,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":37,"author":{"gitId":"dwangwk"},"content":"* **Tools**:","lastModifiedDate":"2024-03-07"},{"lineNumber":38,"author":{"gitId":"dwangwk"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-03-07"},{"lineNumber":39,"author":{"gitId":"dwangwk"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-03-07"},{"lineNumber":40,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":41,"author":{"gitId":"dwangwk"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-03-07"}],"authorContributionMap":{"dwangwk":41}},{"path":"src/main/java/seedu/address/logic/Logic.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-03"},{"lineNumber":11,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * API of the Logic component","lastModifiedDate":"2016-09-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public interface Logic {","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2016-09-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * @param commandText The command as entered by the user.","lastModifiedDate":"2016-09-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * @return the result of the command execution.","lastModifiedDate":"2016-09-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2017-02-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * @throws ParseException If an error occurs during parsing.","lastModifiedDate":"2017-03-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" CommandResult execute(String commandText) throws CommandException, ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Returns the AddressBook.","lastModifiedDate":"2018-12-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * @see seedu.address.model.Model#getAddressBook()","lastModifiedDate":"2018-12-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2018-12-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03"},{"lineNumber":33,"author":{"gitId":"menatahari"},"content":" /** Returns an unmodifiable view of the filtered list of startups */","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"menatahari"},"content":" ObservableList\u003cStartup\u003e getFilteredStartupList();","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-26"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Set the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"menatahari":3,"-":47}},{"path":"src/main/java/seedu/address/logic/LogicManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2016-09-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.AddressBookParser;","lastModifiedDate":"2017-07-07"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-03"},{"lineNumber":18,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.storage.Storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * The main LogicManager of the app.","lastModifiedDate":"2016-09-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class LogicManager implements Logic {","lastModifiedDate":"2018-12-09"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_ERROR_FORMAT \u003d \"Could not save data due to the following error: %s\";","lastModifiedDate":"2023-06-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_PERMISSION_ERROR_FORMAT \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \"Could not save data to file %s due to insufficient permissions to write to the file or the folder.\";","lastModifiedDate":"2023-06-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(LogicManager.class);","lastModifiedDate":"2016-09-29"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final Model model;","lastModifiedDate":"2016-09-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final Storage storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final AddressBookParser addressBookParser;","lastModifiedDate":"2017-07-07"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Constructs a {@code LogicManager} with the given {@code Model} and {@code Storage}.","lastModifiedDate":"2020-05-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public LogicManager(Model model, Storage storage) {","lastModifiedDate":"2018-12-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.model \u003d model;","lastModifiedDate":"2016-09-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.storage \u003d storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":" addressBookParser \u003d new AddressBookParser();","lastModifiedDate":"2018-01-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public CommandResult execute(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":47,"author":{"gitId":"-"},"content":" logger.info(\"----------------[USER COMMAND][\" + commandText + \"]\");","lastModifiedDate":"2016-09-29"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":" CommandResult commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":" Command command \u003d addressBookParser.parseCommand(commandText);","lastModifiedDate":"2017-07-07"},{"lineNumber":51,"author":{"gitId":"-"},"content":" commandResult \u003d command.execute(model);","lastModifiedDate":"2019-01-25"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":" storage.saveAddressBook(model.getAddressBook());","lastModifiedDate":"2018-12-09"},{"lineNumber":55,"author":{"gitId":"-"},"content":" } catch (AccessDeniedException e) {","lastModifiedDate":"2023-06-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_PERMISSION_ERROR_FORMAT, e.getMessage()), e);","lastModifiedDate":"2023-06-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2018-12-09"},{"lineNumber":58,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_ERROR_FORMAT, ioe.getMessage()), ioe);","lastModifiedDate":"2023-06-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-03"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2018-12-03"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return model.getAddressBook();","lastModifiedDate":"2018-12-03"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-03"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":70,"author":{"gitId":"menatahari"},"content":" public ObservableList\u003cStartup\u003e getFilteredStartupList() {","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"menatahari"},"content":" return model.getFilteredStartupList();","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-29"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return model.getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":" return model.getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":" model.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"menatahari":3,"-":85}},{"path":"src/main/java/seedu/address/logic/Messages.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2023-07-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-07-14"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-07-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2023-07-14"},{"lineNumber":8,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Container for user visible messages.","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class Messages {","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2016-09-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"menatahari"},"content":" public static final String MESSAGE_INVALID_STARTUP_DISPLAYED_INDEX \u003d \"The startup index provided is invalid\";","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"menatahari"},"content":" public static final String MESSAGE_STARTUPS_LISTED_OVERVIEW \u003d \"%1$d startups listed!\";","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2023-07-14"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-07-14"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2023-07-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2023-07-14"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":28,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":29,"author":{"gitId":"-"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-07-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":31,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23"},{"lineNumber":35,"author":{"gitId":"menatahari"},"content":" * Formats the {@code startup} for display to the user.","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23"},{"lineNumber":37,"author":{"gitId":"menatahari"},"content":" public static String format(Startup startup) {","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23"},{"lineNumber":39,"author":{"gitId":"menatahari"},"content":" builder.append(startup.getName())","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"yeoshuheng"},"content":" .append(\"; Industry: \")","lastModifiedDate":"2024-02-25"},{"lineNumber":41,"author":{"gitId":"menatahari"},"content":" .append(startup.getIndustry())","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"yeoshuheng"},"content":" .append(\"; Funding Stage: \")","lastModifiedDate":"2024-02-25"},{"lineNumber":43,"author":{"gitId":"menatahari"},"content":" .append(startup.getFundingStage())","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"-"},"content":" .append(\"; Phone: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"menatahari"},"content":" .append(startup.getPhone())","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"-"},"content":" .append(\"; Email: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"menatahari"},"content":" .append(startup.getEmail())","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"-"},"content":" .append(\"; Address: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"menatahari"},"content":" .append(startup.getAddress())","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"dwangwk"},"content":" .append(\"; Note: \")","lastModifiedDate":"2024-03-13"},{"lineNumber":51,"author":{"gitId":"menatahari"},"content":" .append(startup.getNote())","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" .append(\"; Tags: \");","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"menatahari"},"content":" startup.getTags().forEach(builder::append);","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"dwangwk":1,"menatahari":13,"-":41,"yeoshuheng":2}},{"path":"src/main/java/seedu/address/logic/commands/AddCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-02-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-02-25"},{"lineNumber":6,"author":{"gitId":"yeoshuheng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FUNDING_STAGE;","lastModifiedDate":"2024-02-25"},{"lineNumber":7,"author":{"gitId":"yeoshuheng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_INDUSTRY;","lastModifiedDate":"2024-02-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-02-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-02-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-02-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":16,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"menatahari"},"content":" * Adds a startup to the address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"add\";","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"menatahari"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a startup to the address book. \"","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2017-06-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2017-06-06"},{"lineNumber":28,"author":{"gitId":"yeoshuheng"},"content":" + PREFIX_INDUSTRY + \"INDUSTRY \"","lastModifiedDate":"2024-02-25"},{"lineNumber":29,"author":{"gitId":"yeoshuheng"},"content":" + PREFIX_FUNDING_STAGE + \"FUNDING STAGE \"","lastModifiedDate":"2024-02-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2017-05-09"},{"lineNumber":31,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2017-05-09"},{"lineNumber":32,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"ADDRESS \"","lastModifiedDate":"2017-05-09"},{"lineNumber":33,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06"},{"lineNumber":35,"author":{"gitId":"dwangwk"},"content":" + PREFIX_NAME + \"Allium \"","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"dwangwk"},"content":" + PREFIX_INDUSTRY + \"WEB3 \"","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"yespiggy"},"content":" + PREFIX_FUNDING_STAGE + \"S \"","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":39,"author":{"gitId":"dwangwk"},"content":" + PREFIX_EMAIL + \"allium@gmail.com \"","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"dwangwk"},"content":" + PREFIX_ADDRESS + \"420, 23rd Street, #02-25 \"","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"dwangwk"},"content":" + PREFIX_TAG + \"competitive \"","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"owesMoney\";","lastModifiedDate":"2017-05-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"menatahari"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New startup added: %1$s\";","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"menatahari"},"content":" public static final String MESSAGE_DUPLICATE_STARTUP \u003d \"This startup already exists in the address book\";","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"menatahari"},"content":" private final Startup toAdd;","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":50,"author":{"gitId":"menatahari"},"content":" * Creates an AddCommand to add the specified {@code Startup}","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":52,"author":{"gitId":"menatahari"},"content":" public AddCommand(Startup startup) {","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"menatahari"},"content":" requireNonNull(startup);","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"menatahari"},"content":" toAdd \u003d startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":59,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":61,"author":{"gitId":"menatahari"},"content":" if (model.hasStartup(toAdd)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"menatahari"},"content":" throw new CommandException(MESSAGE_DUPLICATE_STARTUP);","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":65,"author":{"gitId":"menatahari"},"content":" model.addStartup(toAdd);","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22"},{"lineNumber":71,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" if (!(other instanceof AddCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" AddCommand otherAddCommand \u003d (AddCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2023-07-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"dwangwk":5,"menatahari":13,"yespiggy":1,"-":67,"yeoshuheng":4}},{"path":"src/main/java/seedu/address/logic/commands/DeleteCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-09-01"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":12,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"menatahari"},"content":" * Deletes a startup identified using it\u0027s displayed index from the address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"delete\";","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"menatahari"},"content":" + \": Deletes the startup identified by the index number used in the displayed startup list.\\n\"","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer)\\n\"","lastModifiedDate":"2016-09-29"},{"lineNumber":24,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"menatahari"},"content":" public static final String MESSAGE_DELETE_STARTUP_SUCCESS \u003d \"Deleted Startup: %1$s\";","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final Index targetIndex;","lastModifiedDate":"2017-06-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public DeleteCommand(Index targetIndex) {","lastModifiedDate":"2017-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2016-09-22"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":37,"author":{"gitId":"menatahari"},"content":" List\u003cStartup\u003e lastShownList \u003d model.getFilteredStartupList();","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":39,"author":{"gitId":"-"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19"},{"lineNumber":40,"author":{"gitId":"menatahari"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_STARTUP_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":43,"author":{"gitId":"menatahari"},"content":" Startup startupToDelete \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"menatahari"},"content":" model.deleteStartup(startupToDelete);","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"menatahari"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_STARTUP_SUCCESS, Messages.format(startupToDelete)));","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" if (!(other instanceof DeleteCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" DeleteCommand otherDeleteCommand \u003d (DeleteCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return targetIndex.equals(otherDeleteCommand.targetIndex);","lastModifiedDate":"2023-07-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"menatahari":9,"-":60}},{"path":"src/main/java/seedu/address/logic/commands/EditCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-12-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-02-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-02-25"},{"lineNumber":6,"author":{"gitId":"yeoshuheng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FUNDING_STAGE;","lastModifiedDate":"2024-02-25"},{"lineNumber":7,"author":{"gitId":"yeoshuheng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_INDUSTRY;","lastModifiedDate":"2024-02-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-02-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-02-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-02-25"},{"lineNumber":11,"author":{"gitId":"menatahari"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_STARTUPS;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-01-11"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-01-11"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2016-12-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":26,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Address;","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Email;","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.FundingStage;","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Industry;","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Name;","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Phone;","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":35,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26"},{"lineNumber":36,"author":{"gitId":"menatahari"},"content":" * Edits the details of an existing startup in the address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":38,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2016-12-26"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":42,"author":{"gitId":"menatahari"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the startup identified \"","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"menatahari"},"content":" + \"by the index number used in the displayed startup list. \"","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26"},{"lineNumber":45,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2017-06-06"},{"lineNumber":46,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06"},{"lineNumber":47,"author":{"gitId":"yeoshuheng"},"content":" + \"[\" + PREFIX_INDUSTRY + \"INDUSTRY\" + \"] \"","lastModifiedDate":"2024-02-25"},{"lineNumber":48,"author":{"gitId":"yeoshuheng"},"content":" + \"[\" + PREFIX_FUNDING_STAGE + \"FUNDING STAGE] \"","lastModifiedDate":"2024-02-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"91234567 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":55,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2017-05-09"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":57,"author":{"gitId":"menatahari"},"content":" public static final String MESSAGE_EDIT_STARTUP_SUCCESS \u003d \"Edited Startup: %1$s\";","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2016-12-26"},{"lineNumber":59,"author":{"gitId":"menatahari"},"content":" public static final String MESSAGE_DUPLICATE_STARTUP \u003d \"This startup already exists in the address book.\";","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":61,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2017-05-25"},{"lineNumber":62,"author":{"gitId":"menatahari"},"content":" private final EditStartupDescriptor editStartupDescriptor;","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":65,"author":{"gitId":"menatahari"},"content":" * @param index of the startup in the filtered startup list to edit","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"menatahari"},"content":" * @param editStartupDescriptor details to edit the startup with","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":68,"author":{"gitId":"menatahari"},"content":" public EditCommand(Index index, EditStartupDescriptor editStartupDescriptor) {","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25"},{"lineNumber":70,"author":{"gitId":"menatahari"},"content":" requireNonNull(editStartupDescriptor);","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25"},{"lineNumber":73,"author":{"gitId":"menatahari"},"content":" this.editStartupDescriptor \u003d new EditStartupDescriptor(editStartupDescriptor);","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":78,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":79,"author":{"gitId":"menatahari"},"content":" List\u003cStartup\u003e lastShownList \u003d model.getFilteredStartupList();","lastModifiedDate":"2024-03-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":81,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19"},{"lineNumber":82,"author":{"gitId":"menatahari"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_STARTUP_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":85,"author":{"gitId":"menatahari"},"content":" Startup startupToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-03-19"},{"lineNumber":86,"author":{"gitId":"menatahari"},"content":" Startup editedStartup \u003d createEditedStartup(startupToEdit, editStartupDescriptor);","lastModifiedDate":"2024-03-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":88,"author":{"gitId":"menatahari"},"content":" if (!startupToEdit.isSameStartup(editedStartup) \u0026\u0026 model.hasStartup(editedStartup)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":89,"author":{"gitId":"menatahari"},"content":" throw new CommandException(MESSAGE_DUPLICATE_STARTUP);","lastModifiedDate":"2024-03-19"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":92,"author":{"gitId":"menatahari"},"content":" model.setStartup(startupToEdit, editedStartup);","lastModifiedDate":"2024-03-19"},{"lineNumber":93,"author":{"gitId":"menatahari"},"content":" model.updateFilteredStartupList(PREDICATE_SHOW_ALL_STARTUPS);","lastModifiedDate":"2024-03-19"},{"lineNumber":94,"author":{"gitId":"menatahari"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_STARTUP_SUCCESS, Messages.format(editedStartup)));","lastModifiedDate":"2024-03-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":97,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":98,"author":{"gitId":"menatahari"},"content":" * Creates and returns a {@code Startup} with the details of {@code startupToEdit}","lastModifiedDate":"2024-03-19"},{"lineNumber":99,"author":{"gitId":"menatahari"},"content":" * edited with {@code editStartupDescriptor}.","lastModifiedDate":"2024-03-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":101,"author":{"gitId":"menatahari"},"content":" private static Startup createEditedStartup(Startup startupToEdit, EditStartupDescriptor editStartupDescriptor) {","lastModifiedDate":"2024-03-19"},{"lineNumber":102,"author":{"gitId":"menatahari"},"content":" assert startupToEdit !\u003d null;","lastModifiedDate":"2024-03-19"},{"lineNumber":103,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":104,"author":{"gitId":"menatahari"},"content":" Name updatedName \u003d editStartupDescriptor.getName().orElse(startupToEdit.getName());","lastModifiedDate":"2024-03-19"},{"lineNumber":105,"author":{"gitId":"menatahari"},"content":" Phone updatedPhone \u003d editStartupDescriptor.getPhone().orElse(startupToEdit.getPhone());","lastModifiedDate":"2024-03-19"},{"lineNumber":106,"author":{"gitId":"menatahari"},"content":" FundingStage updatedFundingStage \u003d editStartupDescriptor.getFundingStage().orElse(","lastModifiedDate":"2024-03-19"},{"lineNumber":107,"author":{"gitId":"menatahari"},"content":" startupToEdit.getFundingStage());","lastModifiedDate":"2024-03-19"},{"lineNumber":108,"author":{"gitId":"menatahari"},"content":" Industry updatedIndustry \u003d editStartupDescriptor.getIndustry().orElse(startupToEdit.getIndustry());","lastModifiedDate":"2024-03-19"},{"lineNumber":109,"author":{"gitId":"menatahari"},"content":" Email updatedEmail \u003d editStartupDescriptor.getEmail().orElse(startupToEdit.getEmail());","lastModifiedDate":"2024-03-19"},{"lineNumber":110,"author":{"gitId":"menatahari"},"content":" Address updatedAddress \u003d editStartupDescriptor.getAddress().orElse(startupToEdit.getAddress());","lastModifiedDate":"2024-03-19"},{"lineNumber":111,"author":{"gitId":"menatahari"},"content":" Set\u003cTag\u003e updatedTags \u003d editStartupDescriptor.getTags().orElse(startupToEdit.getTags());","lastModifiedDate":"2024-03-19"},{"lineNumber":112,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":113,"author":{"gitId":"menatahari"},"content":" return new Startup(updatedName, updatedFundingStage, updatedIndustry,","lastModifiedDate":"2024-03-19"},{"lineNumber":114,"author":{"gitId":"yeoshuheng"},"content":" updatedPhone, updatedEmail, updatedAddress, updatedTags);","lastModifiedDate":"2024-02-25"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08"},{"lineNumber":125,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":129,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13"},{"lineNumber":130,"author":{"gitId":"menatahari"},"content":" \u0026\u0026 editStartupDescriptor.equals(otherEditCommand.editStartupDescriptor);","lastModifiedDate":"2024-03-19"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23"},{"lineNumber":137,"author":{"gitId":"menatahari"},"content":" .add(\"editStartupDescriptor\", editStartupDescriptor)","lastModifiedDate":"2024-03-19"},{"lineNumber":138,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":142,"author":{"gitId":"menatahari"},"content":" * Stores the details to edit the startup with. Each non-empty field value will replace the","lastModifiedDate":"2024-03-19"},{"lineNumber":143,"author":{"gitId":"menatahari"},"content":" * corresponding field value of the startup.","lastModifiedDate":"2024-03-19"},{"lineNumber":144,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":145,"author":{"gitId":"menatahari"},"content":" public static class EditStartupDescriptor {","lastModifiedDate":"2024-03-19"},{"lineNumber":146,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21"},{"lineNumber":147,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":148,"author":{"gitId":"yeoshuheng"},"content":" private Industry industry;","lastModifiedDate":"2024-02-25"},{"lineNumber":149,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":150,"author":{"gitId":"yeoshuheng"},"content":" private FundingStage fundingStage;","lastModifiedDate":"2024-02-25"},{"lineNumber":151,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":152,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":153,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21"},{"lineNumber":154,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-06-21"},{"lineNumber":155,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":157,"author":{"gitId":"menatahari"},"content":" public EditStartupDescriptor() {}","lastModifiedDate":"2024-03-19"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":159,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":160,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11"},{"lineNumber":161,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":162,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":163,"author":{"gitId":"menatahari"},"content":" public EditStartupDescriptor(EditStartupDescriptor toCopy) {","lastModifiedDate":"2024-03-19"},{"lineNumber":164,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15"},{"lineNumber":165,"author":{"gitId":"yeoshuheng"},"content":" setFundingStage(toCopy.fundingStage);","lastModifiedDate":"2024-02-25"},{"lineNumber":166,"author":{"gitId":"yeoshuheng"},"content":" setIndustry(toCopy.industry);","lastModifiedDate":"2024-02-25"},{"lineNumber":167,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15"},{"lineNumber":168,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15"},{"lineNumber":169,"author":{"gitId":"-"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2018-01-15"},{"lineNumber":170,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11"},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":173,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":174,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26"},{"lineNumber":175,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":176,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26"},{"lineNumber":177,"author":{"gitId":"yeoshuheng"},"content":" return CollectionUtil.isAnyNonNull(name, industry, fundingStage, phone, email, address, tags);","lastModifiedDate":"2024-02-25"},{"lineNumber":178,"author":{"gitId":"yeoshuheng"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":179,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":180,"author":{"gitId":"yeoshuheng"},"content":" public void setIndustry(Industry industry) {","lastModifiedDate":"2024-02-25"},{"lineNumber":181,"author":{"gitId":"yeoshuheng"},"content":" this.industry \u003d industry;","lastModifiedDate":"2024-02-25"},{"lineNumber":182,"author":{"gitId":"yeoshuheng"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":183,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":184,"author":{"gitId":"yeoshuheng"},"content":" public void setFundingStage(FundingStage fundingStage) {","lastModifiedDate":"2024-02-25"},{"lineNumber":185,"author":{"gitId":"yeoshuheng"},"content":" this.fundingStage \u003d fundingStage;","lastModifiedDate":"2024-02-25"},{"lineNumber":186,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":188,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21"},{"lineNumber":189,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21"},{"lineNumber":190,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":192,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26"},{"lineNumber":193,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21"},{"lineNumber":194,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":196,"author":{"gitId":"yeoshuheng"},"content":" public Optional\u003cIndustry\u003e getIndustry() {","lastModifiedDate":"2024-02-25"},{"lineNumber":197,"author":{"gitId":"yeoshuheng"},"content":" return Optional.ofNullable(industry);","lastModifiedDate":"2024-02-25"},{"lineNumber":198,"author":{"gitId":"yeoshuheng"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":199,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":200,"author":{"gitId":"yeoshuheng"},"content":" public Optional\u003cFundingStage\u003e getFundingStage() {","lastModifiedDate":"2024-02-25"},{"lineNumber":201,"author":{"gitId":"yeoshuheng"},"content":" return Optional.ofNullable(fundingStage);","lastModifiedDate":"2024-02-25"},{"lineNumber":202,"author":{"gitId":"yeoshuheng"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":203,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":204,"author":{"gitId":"-"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2017-06-21"},{"lineNumber":205,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":206,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":208,"author":{"gitId":"-"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26"},{"lineNumber":209,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2017-06-21"},{"lineNumber":210,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":212,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2017-06-21"},{"lineNumber":213,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-06-21"},{"lineNumber":214,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":216,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26"},{"lineNumber":217,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21"},{"lineNumber":218,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":220,"author":{"gitId":"-"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2017-06-21"},{"lineNumber":221,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-06-21"},{"lineNumber":222,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":224,"author":{"gitId":"-"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2016-12-26"},{"lineNumber":225,"author":{"gitId":"-"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2017-06-21"},{"lineNumber":226,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":228,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":229,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2018-01-11"},{"lineNumber":230,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":231,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":232,"author":{"gitId":"-"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-06-21"},{"lineNumber":233,"author":{"gitId":"-"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2018-01-11"},{"lineNumber":234,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":236,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":237,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11"},{"lineNumber":238,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11"},{"lineNumber":239,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11"},{"lineNumber":240,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":241,"author":{"gitId":"-"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":242,"author":{"gitId":"-"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2018-01-11"},{"lineNumber":243,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":244,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":245,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05"},{"lineNumber":246,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05"},{"lineNumber":247,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05"},{"lineNumber":248,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05"},{"lineNumber":249,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":250,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":251,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05"},{"lineNumber":252,"author":{"gitId":"menatahari"},"content":" if (!(other instanceof EditStartupDescriptor)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":253,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05"},{"lineNumber":254,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":256,"author":{"gitId":"menatahari"},"content":" EditStartupDescriptor otherEditStartupDescriptor \u003d (EditStartupDescriptor) other;","lastModifiedDate":"2024-03-19"},{"lineNumber":257,"author":{"gitId":"menatahari"},"content":" return Objects.equals(name, otherEditStartupDescriptor.name)","lastModifiedDate":"2024-03-19"},{"lineNumber":258,"author":{"gitId":"menatahari"},"content":" \u0026\u0026 Objects.equals(phone, otherEditStartupDescriptor.phone)","lastModifiedDate":"2024-03-19"},{"lineNumber":259,"author":{"gitId":"menatahari"},"content":" \u0026\u0026 Objects.equals(fundingStage, otherEditStartupDescriptor.fundingStage)","lastModifiedDate":"2024-03-19"},{"lineNumber":260,"author":{"gitId":"menatahari"},"content":" \u0026\u0026 Objects.equals(industry, otherEditStartupDescriptor.industry)","lastModifiedDate":"2024-03-19"},{"lineNumber":261,"author":{"gitId":"menatahari"},"content":" \u0026\u0026 Objects.equals(email, otherEditStartupDescriptor.email)","lastModifiedDate":"2024-03-19"},{"lineNumber":262,"author":{"gitId":"menatahari"},"content":" \u0026\u0026 Objects.equals(address, otherEditStartupDescriptor.address)","lastModifiedDate":"2024-03-19"},{"lineNumber":263,"author":{"gitId":"menatahari"},"content":" \u0026\u0026 Objects.equals(tags, otherEditStartupDescriptor.tags);","lastModifiedDate":"2024-03-19"},{"lineNumber":264,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":266,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":267,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":268,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":269,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":270,"author":{"gitId":"yeoshuheng"},"content":" .add(\"industry\", industry)","lastModifiedDate":"2024-02-25"},{"lineNumber":271,"author":{"gitId":"yeoshuheng"},"content":" .add(\"funding stage\", fundingStage)","lastModifiedDate":"2024-02-25"},{"lineNumber":272,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":273,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":274,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":275,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":276,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":277,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":278,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":279,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26"}],"authorContributionMap":{"menatahari":59,"-":189,"yeoshuheng":31}},{"path":"src/main/java/seedu/address/logic/commands/FindCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":5,"author":{"gitId":"yespiggy"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-15"},{"lineNumber":6,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":10,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.FundingStageContainsKeywordsPredicate;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.IndustryContainsKeywordsPredicate;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-22"},{"lineNumber":17,"author":{"gitId":"menatahari"},"content":" * Finds and lists all startups in address book whose name contains any of the argument keywords.","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Keyword matching is case insensitive.","lastModifiedDate":"2018-04-01"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class FindCommand extends Command {","lastModifiedDate":"2016-09-22"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"find\";","lastModifiedDate":"2016-09-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":24,"author":{"gitId":"yespiggy"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Finds all startups that contain any of \"","lastModifiedDate":"2024-03-15"},{"lineNumber":25,"author":{"gitId":"yespiggy"},"content":" + \"the specified keywords (case-insensitive) of either name / industry / funding stage\"","lastModifiedDate":"2024-03-15"},{"lineNumber":26,"author":{"gitId":"yespiggy"},"content":" + \" and displays them as a list with index numbers.\\n\"","lastModifiedDate":"2024-03-15"},{"lineNumber":27,"author":{"gitId":"yespiggy"},"content":" + \"Example: \" + COMMAND_WORD + \" n/ Names \\n\"","lastModifiedDate":"2024-03-15"},{"lineNumber":28,"author":{"gitId":"yespiggy"},"content":" + \"Example: \" + COMMAND_WORD + \" i/ Industries \\n\"","lastModifiedDate":"2024-03-15"},{"lineNumber":29,"author":{"gitId":"yespiggy"},"content":" + \"Example: \" + COMMAND_WORD + \" f/ Funding Stages \\n\"","lastModifiedDate":"2024-03-15"},{"lineNumber":30,"author":{"gitId":"yespiggy"},"content":" + \"Example: \" + COMMAND_WORD + \" f/ B C\";;","lastModifiedDate":"2024-03-15"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":32,"author":{"gitId":"menatahari"},"content":" private final Predicate\u003cStartup\u003e predicate;","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public FindCommand(NameContainsKeywordsPredicate predicate) {","lastModifiedDate":"2017-06-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":37,"author":{"gitId":"yespiggy"},"content":" public FindCommand(IndustryContainsKeywordsPredicate predicate) {","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"yespiggy"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"yespiggy"},"content":" public FindCommand(FundingStageContainsKeywordsPredicate predicate) {","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"yespiggy"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-22"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":48,"author":{"gitId":"menatahari"},"content":" model.updateFilteredStartupList(predicate);","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" return new CommandResult(","lastModifiedDate":"2018-04-01"},{"lineNumber":50,"author":{"gitId":"menatahari"},"content":" String.format(Messages.MESSAGE_STARTUPS_LISTED_OVERVIEW, model.getFilteredStartupList().size()));","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" if (!(other instanceof FindCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" FindCommand otherFindCommand \u003d (FindCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" return predicate.equals(otherFindCommand.predicate);","lastModifiedDate":"2023-07-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" .add(\"predicate\", predicate)","lastModifiedDate":"2019-02-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22"}],"authorContributionMap":{"menatahari":8,"yespiggy":17,"-":49}},{"path":"src/main/java/seedu/address/logic/commands/ListCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"menatahari"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_STARTUPS;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"yespiggy"},"content":" * Lists all startup investments in CapitalConnect to the user.","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2016-09-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"list\";","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"yespiggy"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Listed all startup investments\";","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":21,"author":{"gitId":"menatahari"},"content":" model.updateFilteredStartupList(PREDICATE_SHOW_ALL_STARTUPS);","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"-"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2016-09-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"menatahari":2,"yespiggy":2,"-":20}},{"path":"src/main/java/seedu/address/logic/commands/NoteCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"dwangwk"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"dwangwk"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"menatahari"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_STARTUPS;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"dwangwk"},"content":"import java.util.List;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"dwangwk"},"content":"import java.util.Objects;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"dwangwk"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"dwangwk"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"dwangwk"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"dwangwk"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"dwangwk"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"dwangwk"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Note;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"dwangwk"},"content":"/**","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"yeoshuheng"},"content":" * Edits a Note of a startup in the address book!","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"dwangwk"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"dwangwk"},"content":"public class NoteCommand extends Command {","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"dwangwk"},"content":" public static final String COMMAND_WORD \u003d \"note\";","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"menatahari"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the notes of the startup identified \"","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"menatahari"},"content":" + \"by the index number used in the displayed startup list. \"","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"dwangwk"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"dwangwk"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"dwangwk"},"content":" + \"[NOTE]...\\n\"","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"dwangwk"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"dwangwk"},"content":" + \"Lovely Smell \";","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"menatahari"},"content":" public static final String MESSAGE_EDIT_STARTUP_SUCCESS \u003d \"Edited Note of Startup: %1$s\";","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"dwangwk"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"menatahari"},"content":" public static final String MESSAGE_DUPLICATE_STARTUP \u003d \"This startup already exists in the address book.\";","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"dwangwk"},"content":" private final Index index;","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"dwangwk"},"content":" private final NoteStartupDescriptor noteStartupDescriptor;","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"dwangwk"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"menatahari"},"content":" * @param index of the startup in the filtered startup list to edit","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"dwangwk"},"content":" * @param noteStartupDescriptor details to edit the startup with","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"dwangwk"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":44,"author":{"gitId":"dwangwk"},"content":" public NoteCommand(Index index, NoteStartupDescriptor noteStartupDescriptor) {","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"dwangwk"},"content":" requireNonNull(index);","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"dwangwk"},"content":" requireNonNull(noteStartupDescriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":48,"author":{"gitId":"dwangwk"},"content":" this.index \u003d index;","lastModifiedDate":"2024-03-13"},{"lineNumber":49,"author":{"gitId":"dwangwk"},"content":" this.noteStartupDescriptor \u003d new NoteStartupDescriptor(noteStartupDescriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"dwangwk"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":51,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":52,"author":{"gitId":"dwangwk"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":53,"author":{"gitId":"dwangwk"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-13"},{"lineNumber":54,"author":{"gitId":"dwangwk"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-13"},{"lineNumber":55,"author":{"gitId":"menatahari"},"content":" List\u003cStartup\u003e lastShownList \u003d model.getFilteredStartupList();","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":57,"author":{"gitId":"dwangwk"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-03-13"},{"lineNumber":58,"author":{"gitId":"menatahari"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_STARTUP_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"dwangwk"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":60,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":61,"author":{"gitId":"menatahari"},"content":" Startup startupToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"dwangwk"},"content":" Startup editedStartup \u003d createEditedStartup(startupToEdit, noteStartupDescriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":64,"author":{"gitId":"menatahari"},"content":" model.setStartup(startupToEdit, editedStartup);","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"menatahari"},"content":" model.updateFilteredStartupList(PREDICATE_SHOW_ALL_STARTUPS);","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"menatahari"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_STARTUP_SUCCESS, Messages.format(editedStartup)));","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"dwangwk"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":68,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":69,"author":{"gitId":"dwangwk"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":70,"author":{"gitId":"menatahari"},"content":" * Creates and returns a {@code Startup} with the details of {@code startupToEdit}","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"menatahari"},"content":" * edited with {@code editStartupDescriptor}.","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"dwangwk"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":73,"author":{"gitId":"dwangwk"},"content":" private static Startup createEditedStartup(Startup startupToEdit, NoteStartupDescriptor noteStartupDescriptor) {","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"menatahari"},"content":" assert startupToEdit !\u003d null;","lastModifiedDate":"2024-03-19"},{"lineNumber":75,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"dwangwk"},"content":" Note updatedNote \u003d noteStartupDescriptor.getNote().orElse(startupToEdit.getNote());","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"dwangwk"},"content":" return new Startup(startupToEdit.getName(), startupToEdit.getFundingStage(), startupToEdit.getIndustry(),","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"dwangwk"},"content":" startupToEdit.getPhone(), startupToEdit.getEmail(), startupToEdit.getAddress(),","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"dwangwk"},"content":" startupToEdit.getTags(), updatedNote);","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"dwangwk"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":82,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":83,"author":{"gitId":"dwangwk"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":84,"author":{"gitId":"dwangwk"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-13"},{"lineNumber":85,"author":{"gitId":"dwangwk"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-13"},{"lineNumber":86,"author":{"gitId":"dwangwk"},"content":" return true;","lastModifiedDate":"2024-03-13"},{"lineNumber":87,"author":{"gitId":"dwangwk"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":88,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":89,"author":{"gitId":"dwangwk"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-13"},{"lineNumber":90,"author":{"gitId":"dwangwk"},"content":" if (!(other instanceof NoteCommand)) {","lastModifiedDate":"2024-03-13"},{"lineNumber":91,"author":{"gitId":"dwangwk"},"content":" return false;","lastModifiedDate":"2024-03-13"},{"lineNumber":92,"author":{"gitId":"dwangwk"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":93,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":94,"author":{"gitId":"dwangwk"},"content":" NoteCommand otherNoteCommand \u003d (NoteCommand) other;","lastModifiedDate":"2024-03-13"},{"lineNumber":95,"author":{"gitId":"dwangwk"},"content":" return index.equals(otherNoteCommand.index)","lastModifiedDate":"2024-03-13"},{"lineNumber":96,"author":{"gitId":"dwangwk"},"content":" \u0026\u0026 noteStartupDescriptor.equals(otherNoteCommand.noteStartupDescriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":97,"author":{"gitId":"dwangwk"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":98,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":99,"author":{"gitId":"dwangwk"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":100,"author":{"gitId":"dwangwk"},"content":" public String toString() {","lastModifiedDate":"2024-03-13"},{"lineNumber":101,"author":{"gitId":"dwangwk"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-13"},{"lineNumber":102,"author":{"gitId":"dwangwk"},"content":" .add(\"index\", index)","lastModifiedDate":"2024-03-13"},{"lineNumber":103,"author":{"gitId":"dwangwk"},"content":" .add(\"noteStartupDescriptor\", noteStartupDescriptor)","lastModifiedDate":"2024-03-20"},{"lineNumber":104,"author":{"gitId":"dwangwk"},"content":" .toString();","lastModifiedDate":"2024-03-13"},{"lineNumber":105,"author":{"gitId":"dwangwk"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":106,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":107,"author":{"gitId":"dwangwk"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":108,"author":{"gitId":"menatahari"},"content":" * Stores the details to edit the startup with. Each non-empty field value will replace the","lastModifiedDate":"2024-03-19"},{"lineNumber":109,"author":{"gitId":"menatahari"},"content":" * corresponding field value of the startup.","lastModifiedDate":"2024-03-19"},{"lineNumber":110,"author":{"gitId":"dwangwk"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":111,"author":{"gitId":"dwangwk"},"content":" public static class NoteStartupDescriptor {","lastModifiedDate":"2024-03-20"},{"lineNumber":112,"author":{"gitId":"dwangwk"},"content":" private Note note;","lastModifiedDate":"2024-03-13"},{"lineNumber":113,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":114,"author":{"gitId":"dwangwk"},"content":" public NoteStartupDescriptor() {}","lastModifiedDate":"2024-03-20"},{"lineNumber":115,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":116,"author":{"gitId":"dwangwk"},"content":" // Copy constructor","lastModifiedDate":"2024-03-20"},{"lineNumber":117,"author":{"gitId":"dwangwk"},"content":" public NoteStartupDescriptor(NoteStartupDescriptor toCopy) {","lastModifiedDate":"2024-03-20"},{"lineNumber":118,"author":{"gitId":"dwangwk"},"content":" setNote(toCopy.note);","lastModifiedDate":"2024-03-13"},{"lineNumber":119,"author":{"gitId":"dwangwk"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":120,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":121,"author":{"gitId":"dwangwk"},"content":" public void setNote(Note note) {","lastModifiedDate":"2024-03-13"},{"lineNumber":122,"author":{"gitId":"dwangwk"},"content":" this.note \u003d note;","lastModifiedDate":"2024-03-13"},{"lineNumber":123,"author":{"gitId":"dwangwk"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":124,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":125,"author":{"gitId":"dwangwk"},"content":" public Optional\u003cNote\u003e getNote() {","lastModifiedDate":"2024-03-13"},{"lineNumber":126,"author":{"gitId":"dwangwk"},"content":" return Optional.ofNullable(note);","lastModifiedDate":"2024-03-13"},{"lineNumber":127,"author":{"gitId":"dwangwk"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":128,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":129,"author":{"gitId":"dwangwk"},"content":" // Returns true if the note field is edited.","lastModifiedDate":"2024-03-20"},{"lineNumber":130,"author":{"gitId":"dwangwk"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2024-03-20"},{"lineNumber":131,"author":{"gitId":"dwangwk"},"content":" return note !\u003d null;","lastModifiedDate":"2024-03-20"},{"lineNumber":132,"author":{"gitId":"dwangwk"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":133,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":134,"author":{"gitId":"dwangwk"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":135,"author":{"gitId":"dwangwk"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-13"},{"lineNumber":136,"author":{"gitId":"dwangwk"},"content":" if (this \u003d\u003d other) {","lastModifiedDate":"2024-03-20"},{"lineNumber":137,"author":{"gitId":"dwangwk"},"content":" return true;","lastModifiedDate":"2024-03-13"},{"lineNumber":138,"author":{"gitId":"dwangwk"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":139,"author":{"gitId":"dwangwk"},"content":" if (!(other instanceof NoteStartupDescriptor)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":140,"author":{"gitId":"dwangwk"},"content":" return false;","lastModifiedDate":"2024-03-13"},{"lineNumber":141,"author":{"gitId":"dwangwk"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":142,"author":{"gitId":"dwangwk"},"content":" NoteStartupDescriptor that \u003d (NoteStartupDescriptor) other;","lastModifiedDate":"2024-03-20"},{"lineNumber":143,"author":{"gitId":"dwangwk"},"content":" return Objects.equals(note, that.note);","lastModifiedDate":"2024-03-20"},{"lineNumber":144,"author":{"gitId":"dwangwk"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":145,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":146,"author":{"gitId":"dwangwk"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":147,"author":{"gitId":"dwangwk"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-20"},{"lineNumber":148,"author":{"gitId":"dwangwk"},"content":" return Objects.hash(note);","lastModifiedDate":"2024-03-20"},{"lineNumber":149,"author":{"gitId":"dwangwk"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":150,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":151,"author":{"gitId":"dwangwk"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":152,"author":{"gitId":"dwangwk"},"content":" public String toString() {","lastModifiedDate":"2024-03-13"},{"lineNumber":153,"author":{"gitId":"dwangwk"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-13"},{"lineNumber":154,"author":{"gitId":"dwangwk"},"content":" .add(\"note\", note)","lastModifiedDate":"2024-03-13"},{"lineNumber":155,"author":{"gitId":"dwangwk"},"content":" .toString();","lastModifiedDate":"2024-03-13"},{"lineNumber":156,"author":{"gitId":"dwangwk"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":157,"author":{"gitId":"dwangwk"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":158,"author":{"gitId":"dwangwk"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"dwangwk":136,"menatahari":21,"yeoshuheng":1}},{"path":"src/main/java/seedu/address/logic/parser/AddCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-02-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-02-25"},{"lineNumber":6,"author":{"gitId":"yeoshuheng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FUNDING_STAGE;","lastModifiedDate":"2024-02-25"},{"lineNumber":7,"author":{"gitId":"yeoshuheng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_INDUSTRY;","lastModifiedDate":"2024-02-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-02-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-02-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-02-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-02-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":17,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Address;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Email;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.FundingStage;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Industry;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Name;","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Phone;","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-17"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":37,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":38,"author":{"gitId":"yeoshuheng"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME,","lastModifiedDate":"2024-02-25"},{"lineNumber":39,"author":{"gitId":"yeoshuheng"},"content":" PREFIX_INDUSTRY, PREFIX_FUNDING_STAGE, PREFIX_PHONE,","lastModifiedDate":"2024-02-25"},{"lineNumber":40,"author":{"gitId":"yeoshuheng"},"content":" PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_TAG);","lastModifiedDate":"2024-02-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":42,"author":{"gitId":"yeoshuheng"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_INDUSTRY,","lastModifiedDate":"2024-02-25"},{"lineNumber":43,"author":{"gitId":"yeoshuheng"},"content":" PREFIX_FUNDING_STAGE, PREFIX_ADDRESS,","lastModifiedDate":"2024-02-25"},{"lineNumber":44,"author":{"gitId":"yeoshuheng"},"content":" PREFIX_PHONE, PREFIX_EMAIL)","lastModifiedDate":"2024-02-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":49,"author":{"gitId":"yeoshuheng"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-03-05"},{"lineNumber":50,"author":{"gitId":"yeoshuheng"},"content":" PREFIX_FUNDING_STAGE, PREFIX_INDUSTRY);","lastModifiedDate":"2024-03-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":52,"author":{"gitId":"yeoshuheng"},"content":" FundingStage fundingStage \u003d ParserUtil.parseFundingStage(argMultimap.getValue(PREFIX_FUNDING_STAGE).get());","lastModifiedDate":"2024-02-25"},{"lineNumber":53,"author":{"gitId":"yeoshuheng"},"content":" Industry industry \u003d ParserUtil.parseIndustry(argMultimap.getValue(PREFIX_INDUSTRY).get());","lastModifiedDate":"2024-02-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":55,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":56,"author":{"gitId":"-"},"content":" Address address \u003d ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":57,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2017-03-17"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":59,"author":{"gitId":"menatahari"},"content":" Startup startup \u003d new Startup(name, fundingStage, industry, phone, email, address, tagList);","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":61,"author":{"gitId":"menatahari"},"content":" return new AddCommand(startup);","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":64,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17"},{"lineNumber":65,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17"},{"lineNumber":66,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17"},{"lineNumber":67,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17"},{"lineNumber":68,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":72,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05"}],"authorContributionMap":{"menatahari":9,"-":51,"yeoshuheng":12}},{"path":"src/main/java/seedu/address/logic/parser/AddressBookParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-07-29"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-07-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2017-01-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":20,"author":{"gitId":"dwangwk"},"content":"import seedu.address.logic.commands.NoteCommand;","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":42,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":50,"author":{"gitId":"-"},"content":" // Note to developers: Change the log level in config.json to enable lower level (i.e., FINE, FINER and lower)","lastModifiedDate":"2023-07-29"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":55,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":72,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return new ListCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":78,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26"},{"lineNumber":79,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":81,"author":{"gitId":"dwangwk"},"content":" case NoteCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-13"},{"lineNumber":82,"author":{"gitId":"dwangwk"},"content":" return new NoteCommandParser().parse(arguments);","lastModifiedDate":"2024-03-13"},{"lineNumber":83,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26"},{"lineNumber":85,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29"},{"lineNumber":86,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":90,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"dwangwk":4,"-":86}},{"path":"src/main/java/seedu/address/logic/parser/CliSyntax.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11"},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":" /* Prefix definitions */","lastModifiedDate":"2017-02-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"n/\");","lastModifiedDate":"2017-06-06"},{"lineNumber":10,"author":{"gitId":"yeoshuheng"},"content":" public static final Prefix PREFIX_INDUSTRY \u003d new Prefix(\"i/\");","lastModifiedDate":"2024-02-25"},{"lineNumber":11,"author":{"gitId":"yeoshuheng"},"content":" public static final Prefix PREFIX_FUNDING_STAGE \u003d new Prefix(\"f/\");","lastModifiedDate":"2024-02-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"p/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"e/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":14,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_ADDRESS \u003d new Prefix(\"a/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"t/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"-":15,"yeoshuheng":2}},{"path":"src/main/java/seedu/address/logic/parser/EditCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-01-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-01-26"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-26"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-26"},{"lineNumber":13,"author":{"gitId":"menatahari"},"content":"import seedu.address.logic.commands.EditCommand.EditStartupDescriptor;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new EditCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class EditCommandParser implements Parser\u003cEditCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the EditCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * and returns an EditCommand object for execution.","lastModifiedDate":"2017-01-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public EditCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":28,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2017-05-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":30,"author":{"gitId":"yeoshuheng"},"content":" ArgumentTokenizer.tokenize(args, CliSyntax.PREFIX_NAME,","lastModifiedDate":"2024-02-25"},{"lineNumber":31,"author":{"gitId":"yeoshuheng"},"content":" CliSyntax.PREFIX_INDUSTRY, CliSyntax.PREFIX_FUNDING_STAGE, CliSyntax.PREFIX_PHONE,","lastModifiedDate":"2024-02-25"},{"lineNumber":32,"author":{"gitId":"yeoshuheng"},"content":" CliSyntax.PREFIX_EMAIL, CliSyntax.PREFIX_ADDRESS, CliSyntax.PREFIX_TAG);","lastModifiedDate":"2024-02-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":34,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2017-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2017-06-06"},{"lineNumber":38,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10"},{"lineNumber":39,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2018-08-06"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":42,"author":{"gitId":"yeoshuheng"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(CliSyntax.PREFIX_NAME, CliSyntax.PREFIX_PHONE,","lastModifiedDate":"2024-02-25"},{"lineNumber":43,"author":{"gitId":"yeoshuheng"},"content":" CliSyntax.PREFIX_EMAIL, CliSyntax.PREFIX_ADDRESS);","lastModifiedDate":"2024-02-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":45,"author":{"gitId":"menatahari"},"content":" EditStartupDescriptor editStartupDescriptor \u003d new EditStartupDescriptor();","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":47,"author":{"gitId":"yeoshuheng"},"content":" if (argMultimap.getValue(CliSyntax.PREFIX_NAME).isPresent()) {","lastModifiedDate":"2024-02-25"},{"lineNumber":48,"author":{"gitId":"menatahari"},"content":" editStartupDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(CliSyntax.PREFIX_NAME).get()));","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":50,"author":{"gitId":"yeoshuheng"},"content":" if (argMultimap.getValue(CliSyntax.PREFIX_FUNDING_STAGE).isPresent()) {","lastModifiedDate":"2024-02-25"},{"lineNumber":51,"author":{"gitId":"menatahari"},"content":" editStartupDescriptor.setFundingStage(","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"yeoshuheng"},"content":" ParserUtil.parseFundingStage(argMultimap.getValue(CliSyntax.PREFIX_FUNDING_STAGE).get()));","lastModifiedDate":"2024-02-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":54,"author":{"gitId":"yeoshuheng"},"content":" if (argMultimap.getValue(CliSyntax.PREFIX_INDUSTRY).isPresent()) {","lastModifiedDate":"2024-02-25"},{"lineNumber":55,"author":{"gitId":"menatahari"},"content":" editStartupDescriptor.setIndustry(","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"yeoshuheng"},"content":" ParserUtil.parseIndustry(argMultimap.getValue(CliSyntax.PREFIX_INDUSTRY).get()));","lastModifiedDate":"2024-02-25"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":58,"author":{"gitId":"yeoshuheng"},"content":" if (argMultimap.getValue(CliSyntax.PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2024-02-25"},{"lineNumber":59,"author":{"gitId":"menatahari"},"content":" editStartupDescriptor.setPhone(","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"yeoshuheng"},"content":" ParserUtil.parsePhone(argMultimap.getValue(CliSyntax.PREFIX_PHONE).get()));","lastModifiedDate":"2024-02-25"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":62,"author":{"gitId":"yeoshuheng"},"content":" if (argMultimap.getValue(CliSyntax.PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2024-02-25"},{"lineNumber":63,"author":{"gitId":"menatahari"},"content":" editStartupDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(CliSyntax.PREFIX_EMAIL).get()));","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"yeoshuheng"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":65,"author":{"gitId":"yeoshuheng"},"content":" if (argMultimap.getValue(CliSyntax.PREFIX_ADDRESS).isPresent()) {","lastModifiedDate":"2024-02-25"},{"lineNumber":66,"author":{"gitId":"menatahari"},"content":" editStartupDescriptor.setAddress(ParserUtil.parseAddress(","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"yeoshuheng"},"content":" argMultimap.getValue(CliSyntax.PREFIX_ADDRESS).get()));","lastModifiedDate":"2024-02-25"},{"lineNumber":68,"author":{"gitId":"yeoshuheng"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":69,"author":{"gitId":"menatahari"},"content":" parseTagsForEdit(argMultimap.getAllValues(CliSyntax.PREFIX_TAG)).ifPresent(editStartupDescriptor::setTags);","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":71,"author":{"gitId":"menatahari"},"content":" if (!editStartupDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-03-11"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":75,"author":{"gitId":"menatahari"},"content":" return new EditCommand(index, editStartupDescriptor);","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"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"},{"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"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * {@code Set\u003cTag\u003e} containing zero tags.","lastModifiedDate":"2017-03-07"},{"lineNumber":82,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":83,"author":{"gitId":"-"},"content":" private Optional\u003cSet\u003cTag\u003e\u003e parseTagsForEdit(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assert tags !\u003d null;","lastModifiedDate":"2017-01-26"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":86,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2017-01-26"},{"lineNumber":87,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2017-01-26"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"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"},{"lineNumber":90,"author":{"gitId":"-"},"content":" return Optional.of(ParserUtil.parseTags(tagSet));","lastModifiedDate":"2017-01-26"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":93,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"menatahari":11,"-":65,"yeoshuheng":17}},{"path":"src/main/java/seedu/address/logic/parser/FindCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-01-26"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":7,"author":{"gitId":"yespiggy"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2024-03-15"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-26"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":10,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.FundingStageContainsKeywordsPredicate;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.IndustryContainsKeywordsPredicate;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new FindCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class FindCommandParser implements Parser\u003cFindCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the FindCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * and returns a FindCommand object for execution.","lastModifiedDate":"2019-05-11"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public FindCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":25,"author":{"gitId":"yespiggy"},"content":" FindCommand findCommand \u003d null;","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2017-02-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2017-02-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" throw new ParseException(","lastModifiedDate":"2017-03-11"},{"lineNumber":29,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-01-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":32,"author":{"gitId":"yespiggy"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"yespiggy"},"content":" ArgumentTokenizer.tokenize(args, CliSyntax.PREFIX_NAME,","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"yespiggy"},"content":" CliSyntax.PREFIX_INDUSTRY,","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"yespiggy"},"content":" CliSyntax.PREFIX_FUNDING_STAGE","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"yespiggy"},"content":" );","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"yespiggy"},"content":" String[] nameKeywords \u003d new String[0];","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"yespiggy"},"content":" String[] industryKeywords \u003d new String[0];","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"yespiggy"},"content":" String[] fundingStageKeywords \u003d new String[0];","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"yespiggy"},"content":" if (argMultimap.getValue(CliSyntax.PREFIX_NAME).isPresent()) {","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"yespiggy"},"content":" nameKeywords \u003d argMultimap.getValue(CliSyntax.PREFIX_NAME).get().split(\"\\\\s+\");","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"yespiggy"},"content":" findCommand \u003d new FindCommand(new NameContainsKeywordsPredicate((Arrays.asList(nameKeywords))));","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"yespiggy"},"content":" } else if (argMultimap.getValue(CliSyntax.PREFIX_INDUSTRY).isPresent()) {","lastModifiedDate":"2024-03-15"},{"lineNumber":45,"author":{"gitId":"yespiggy"},"content":" industryKeywords \u003d argMultimap.getValue(CliSyntax.PREFIX_INDUSTRY).get().split(\"\\\\s+\");","lastModifiedDate":"2024-03-14"},{"lineNumber":46,"author":{"gitId":"yespiggy"},"content":" findCommand \u003d new FindCommand(new IndustryContainsKeywordsPredicate((Arrays.asList(industryKeywords))));","lastModifiedDate":"2024-03-14"},{"lineNumber":47,"author":{"gitId":"yespiggy"},"content":" } else if (argMultimap.getValue(CliSyntax.PREFIX_FUNDING_STAGE).isPresent()) {","lastModifiedDate":"2024-03-15"},{"lineNumber":48,"author":{"gitId":"yespiggy"},"content":" fundingStageKeywords \u003d argMultimap.getValue(CliSyntax.PREFIX_FUNDING_STAGE).get().split(\"\\\\s+\");","lastModifiedDate":"2024-03-14"},{"lineNumber":49,"author":{"gitId":"yespiggy"},"content":" findCommand \u003d new FindCommand(","lastModifiedDate":"2024-03-15"},{"lineNumber":50,"author":{"gitId":"yespiggy"},"content":" new FundingStageContainsKeywordsPredicate((Arrays.asList(fundingStageKeywords))));","lastModifiedDate":"2024-03-15"},{"lineNumber":51,"author":{"gitId":"yespiggy"},"content":" } else {","lastModifiedDate":"2024-03-15"},{"lineNumber":52,"author":{"gitId":"yespiggy"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-15"},{"lineNumber":53,"author":{"gitId":"yespiggy"},"content":" EditCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-15"},{"lineNumber":54,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":56,"author":{"gitId":"yespiggy"},"content":" return findCommand;","lastModifiedDate":"2024-03-14"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"menatahari":3,"yespiggy":26,"-":30}},{"path":"src/main/java/seedu/address/logic/parser/NoteCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"dwangwk"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"dwangwk"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"dwangwk"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"dwangwk"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"dwangwk"},"content":"import seedu.address.logic.commands.NoteCommand;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"dwangwk"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Note;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"dwangwk"},"content":"/**","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"dwangwk"},"content":" * Parses input arguments and creates a new NoteCommand object","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"dwangwk"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"dwangwk"},"content":"public class NoteCommandParser implements Parser\u003cNoteCommand\u003e {","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"dwangwk"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"dwangwk"},"content":" * Parses the given {@code String} of arguments in the context of the NoteCommand","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"dwangwk"},"content":" * and returns a NoteCommand object for execution.","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"dwangwk"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"dwangwk"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"dwangwk"},"content":" public NoteCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"dwangwk"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"dwangwk"},"content":" NoteCommand.NoteStartupDescriptor noteStartupDescriptor \u003d new NoteCommand.NoteStartupDescriptor();","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"dwangwk"},"content":" String[] argParts \u003d args.trim().split(\"\\\\s+\", 2); // Split into index and note description","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"dwangwk"},"content":" if (argParts.length !\u003d 2 || !argParts[0].matches(\"\\\\d+\")) {","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"dwangwk"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, NoteCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"dwangwk"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"dwangwk"},"content":" Index index;","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"dwangwk"},"content":" try {","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"dwangwk"},"content":" index \u003d ParserUtil.parseIndex(argParts[0]);","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"dwangwk"},"content":" Note newNote \u003d new Note(argParts[1]);","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"dwangwk"},"content":" noteStartupDescriptor.setNote(newNote);","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"dwangwk"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"dwangwk"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, NoteCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"dwangwk"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"dwangwk"},"content":" return new NoteCommand(index, new NoteCommand.NoteStartupDescriptor(noteStartupDescriptor));","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"dwangwk"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"dwangwk"},"content":"}","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"dwangwk":40,"menatahari":1}},{"path":"src/main/java/seedu/address/logic/parser/ParserUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-02-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-02-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-02-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-02-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10"},{"lineNumber":12,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Address;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Email;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.FundingStage;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Industry;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Name;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Phone;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-02-11"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02"},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2017-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":33,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02"},{"lineNumber":35,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":37,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29"},{"lineNumber":43,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":47,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29"},{"lineNumber":48,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29"},{"lineNumber":49,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":50,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":52,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":55,"author":{"gitId":"yeoshuheng"},"content":" /**","lastModifiedDate":"2024-02-25"},{"lineNumber":56,"author":{"gitId":"yeoshuheng"},"content":" * Parses a {@code String industry} into a {@code Industry}.","lastModifiedDate":"2024-02-25"},{"lineNumber":57,"author":{"gitId":"yeoshuheng"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-02-25"},{"lineNumber":58,"author":{"gitId":"yeoshuheng"},"content":" *","lastModifiedDate":"2024-02-25"},{"lineNumber":59,"author":{"gitId":"yeoshuheng"},"content":" * @throws ParseException if the given {@code industry} is invalid.","lastModifiedDate":"2024-02-25"},{"lineNumber":60,"author":{"gitId":"yeoshuheng"},"content":" */","lastModifiedDate":"2024-02-25"},{"lineNumber":61,"author":{"gitId":"yeoshuheng"},"content":" public static Industry parseIndustry(String industry) throws ParseException {","lastModifiedDate":"2024-02-25"},{"lineNumber":62,"author":{"gitId":"yeoshuheng"},"content":" requireNonNull(industry);","lastModifiedDate":"2024-02-25"},{"lineNumber":63,"author":{"gitId":"yeoshuheng"},"content":" String trimmedIndustry \u003d industry.trim();","lastModifiedDate":"2024-02-25"},{"lineNumber":64,"author":{"gitId":"yeoshuheng"},"content":" if (!Industry.isValidIndustry(trimmedIndustry)) {","lastModifiedDate":"2024-02-25"},{"lineNumber":65,"author":{"gitId":"yeoshuheng"},"content":" throw new ParseException(Industry.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-25"},{"lineNumber":66,"author":{"gitId":"yeoshuheng"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":67,"author":{"gitId":"yeoshuheng"},"content":" return new Industry(trimmedIndustry);","lastModifiedDate":"2024-02-25"},{"lineNumber":68,"author":{"gitId":"yeoshuheng"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":69,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":70,"author":{"gitId":"yeoshuheng"},"content":" /**","lastModifiedDate":"2024-02-25"},{"lineNumber":71,"author":{"gitId":"yeoshuheng"},"content":" * Parses a {@code String fundingLevel} into a {@code FundingStage}.","lastModifiedDate":"2024-02-25"},{"lineNumber":72,"author":{"gitId":"yeoshuheng"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-02-25"},{"lineNumber":73,"author":{"gitId":"yeoshuheng"},"content":" *","lastModifiedDate":"2024-02-25"},{"lineNumber":74,"author":{"gitId":"yeoshuheng"},"content":" * @throws ParseException if the given {@code fundingStage} is invalid.","lastModifiedDate":"2024-02-25"},{"lineNumber":75,"author":{"gitId":"yeoshuheng"},"content":" */","lastModifiedDate":"2024-02-25"},{"lineNumber":76,"author":{"gitId":"yeoshuheng"},"content":" public static FundingStage parseFundingStage(String fundingLevel) throws ParseException {","lastModifiedDate":"2024-02-25"},{"lineNumber":77,"author":{"gitId":"yeoshuheng"},"content":" requireNonNull(fundingLevel);","lastModifiedDate":"2024-02-25"},{"lineNumber":78,"author":{"gitId":"yeoshuheng"},"content":" String trimmedFundingLevel \u003d fundingLevel.trim();","lastModifiedDate":"2024-02-25"},{"lineNumber":79,"author":{"gitId":"yeoshuheng"},"content":" if (!FundingStage.isValidFundingLevel(fundingLevel)) {","lastModifiedDate":"2024-02-25"},{"lineNumber":80,"author":{"gitId":"yeoshuheng"},"content":" throw new ParseException(FundingStage.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-25"},{"lineNumber":81,"author":{"gitId":"yeoshuheng"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":82,"author":{"gitId":"yeoshuheng"},"content":" return new FundingStage(trimmedFundingLevel);","lastModifiedDate":"2024-02-25"},{"lineNumber":83,"author":{"gitId":"yeoshuheng"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":84,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":85,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":86,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":89,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":93,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30"},{"lineNumber":94,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":95,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":96,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":98,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","lastModifiedDate":"2017-05-30"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":101,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":104,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":106,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":108,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-30"},{"lineNumber":109,"author":{"gitId":"-"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":110,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(trimmedAddress)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":111,"author":{"gitId":"-"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":113,"author":{"gitId":"-"},"content":" return new Address(trimmedAddress);","lastModifiedDate":"2017-05-30"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":116,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":117,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30"},{"lineNumber":118,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":119,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":120,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":121,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":122,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":123,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30"},{"lineNumber":124,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":125,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":126,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":128,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","lastModifiedDate":"2017-05-30"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":131,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":132,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30"},{"lineNumber":133,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":134,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":135,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":136,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":137,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":138,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30"},{"lineNumber":139,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":140,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":141,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":143,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","lastModifiedDate":"2017-05-30"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":146,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":147,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2017-03-07"},{"lineNumber":148,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":149,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":150,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15"},{"lineNumber":151,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11"},{"lineNumber":152,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11"},{"lineNumber":153,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":155,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07"},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":157,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"menatahari":6,"-":120,"yeoshuheng":31}},{"path":"src/main/java/seedu/address/model/AddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.UniqueStartupList;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * Wraps all data at the address-book level","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"menatahari"},"content":" * Duplicates are not allowed (by .isSameStartup comparison)","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class AddressBook implements ReadOnlyAddressBook {","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"menatahari"},"content":" private final UniqueStartupList startups;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * The \u0027unusual\u0027 code block below is a non-static initialization block, sometimes used to avoid duplication","lastModifiedDate":"2019-05-11"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * between constructors. See https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html","lastModifiedDate":"2016-10-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Note that non-static init blocks are not recommended to use. There are other ways to avoid duplication","lastModifiedDate":"2016-10-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * among constructors.","lastModifiedDate":"2016-10-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" {","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"menatahari"},"content":" startups \u003d new UniqueStartupList();","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public AddressBook() {}","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"menatahari"},"content":" * Creates an AddressBook using the Startups in the {@code toBeCopied}","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public AddressBook(ReadOnlyAddressBook toBeCopied) {","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" this();","lastModifiedDate":"2016-12-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" resetData(toBeCopied);","lastModifiedDate":"2016-12-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":41,"author":{"gitId":"-"},"content":" //// list overwrite operations","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":44,"author":{"gitId":"menatahari"},"content":" * Replaces the contents of the startup list with {@code startups}.","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"menatahari"},"content":" * {@code startups} must not contain duplicate startups.","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":47,"author":{"gitId":"menatahari"},"content":" public void setStartups(List\u003cStartup\u003e startups) {","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"menatahari"},"content":" this.startups.setStartups(startups);","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Resets the existing data of this {@code AddressBook} with {@code newData}.","lastModifiedDate":"2017-08-16"},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void resetData(ReadOnlyAddressBook newData) {","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":" requireNonNull(newData);","lastModifiedDate":"2017-05-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-20"},{"lineNumber":57,"author":{"gitId":"menatahari"},"content":" setStartups(newData.getStartupList());","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"menatahari"},"content":" //// startup-level operations","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":63,"author":{"gitId":"menatahari"},"content":" * Returns true if a startup with the same identity as {@code startup} exists in the address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":65,"author":{"gitId":"menatahari"},"content":" public boolean hasStartup(Startup startup) {","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"menatahari"},"content":" requireNonNull(startup);","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"menatahari"},"content":" return startups.contains(startup);","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":71,"author":{"gitId":"menatahari"},"content":" * Adds a startup to the address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"menatahari"},"content":" * The startup must not already exist in the address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":74,"author":{"gitId":"menatahari"},"content":" public void addStartup(Startup p) {","lastModifiedDate":"2024-03-19"},{"lineNumber":75,"author":{"gitId":"menatahari"},"content":" startups.add(p);","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":79,"author":{"gitId":"menatahari"},"content":" * Replaces the given startup {@code target} in the list with {@code editedStartup}.","lastModifiedDate":"2024-03-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":81,"author":{"gitId":"menatahari"},"content":" * The startup identity of {@code editedStartup} must not be the same as another existing startup","lastModifiedDate":"2024-03-19"},{"lineNumber":82,"author":{"gitId":"menatahari"},"content":" * in the address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":84,"author":{"gitId":"menatahari"},"content":" public void setStartup(Startup target, Startup editedStartup) {","lastModifiedDate":"2024-03-19"},{"lineNumber":85,"author":{"gitId":"menatahari"},"content":" requireNonNull(editedStartup);","lastModifiedDate":"2024-03-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":87,"author":{"gitId":"menatahari"},"content":" startups.setStartup(target, editedStartup);","lastModifiedDate":"2024-03-19"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":90,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * Removes {@code key} from this {@code AddressBook}.","lastModifiedDate":"2017-08-16"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * {@code key} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":93,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":94,"author":{"gitId":"menatahari"},"content":" public void removeStartup(Startup key) {","lastModifiedDate":"2024-03-19"},{"lineNumber":95,"author":{"gitId":"menatahari"},"content":" startups.remove(key);","lastModifiedDate":"2024-03-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":" //// util methods","lastModifiedDate":"2016-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":103,"author":{"gitId":"menatahari"},"content":" .add(\"startups\", startups)","lastModifiedDate":"2024-03-19"},{"lineNumber":104,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":108,"author":{"gitId":"menatahari"},"content":" public ObservableList\u003cStartup\u003e getStartupList() {","lastModifiedDate":"2024-03-19"},{"lineNumber":109,"author":{"gitId":"menatahari"},"content":" return startups.asUnmodifiableObservableList();","lastModifiedDate":"2024-03-19"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-01"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-01"},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":113,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-21"},{"lineNumber":114,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":119,"author":{"gitId":"-"},"content":" if (!(other instanceof AddressBook)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":123,"author":{"gitId":"-"},"content":" AddressBook otherAddressBook \u003d (AddressBook) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":124,"author":{"gitId":"menatahari"},"content":" return startups.equals(otherAddressBook.startups);","lastModifiedDate":"2024-03-19"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":128,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-21"},{"lineNumber":129,"author":{"gitId":"menatahari"},"content":" return startups.hashCode();","lastModifiedDate":"2024-03-19"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":131,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"menatahari":33,"-":98}},{"path":"src/main/java/seedu/address/model/Model.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":8,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * The API of the Model component.","lastModifiedDate":"2016-09-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public interface Model {","lastModifiedDate":"2016-09-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":" /** {@code Predicate} that always evaluate to true */","lastModifiedDate":"2017-08-05"},{"lineNumber":15,"author":{"gitId":"menatahari"},"content":" Predicate\u003cStartup\u003e PREDICATE_SHOW_ALL_STARTUPS \u003d unused -\u003e true;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Replaces user prefs data with the data in {@code userPrefs}.","lastModifiedDate":"2018-12-06"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":" void setUserPrefs(ReadOnlyUserPrefs userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Returns the user prefs.","lastModifiedDate":"2018-11-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" ReadOnlyUserPrefs getUserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" void setAddressBookFilePath(Path addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Replaces address book data with the data in {@code addressBook}.","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" void setAddressBook(ReadOnlyAddressBook addressBook);","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":52,"author":{"gitId":"-"},"content":" /** Returns the AddressBook */","lastModifiedDate":"2016-09-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2016-09-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":56,"author":{"gitId":"menatahari"},"content":" * Returns true if a startup with the same identity as {@code startup} exists in the address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":58,"author":{"gitId":"menatahari"},"content":" boolean hasStartup(Startup startup);","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":61,"author":{"gitId":"menatahari"},"content":" * Deletes the given startup.","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"menatahari"},"content":" * The startup must exist in the address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":64,"author":{"gitId":"menatahari"},"content":" void deleteStartup(Startup target);","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":66,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":67,"author":{"gitId":"menatahari"},"content":" * Adds the given startup.","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"menatahari"},"content":" * {@code startup} must not already exist in the address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":70,"author":{"gitId":"menatahari"},"content":" void addStartup(Startup startup);","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":73,"author":{"gitId":"menatahari"},"content":" * Replaces the given startup {@code target} with {@code editedStartup}.","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":75,"author":{"gitId":"menatahari"},"content":" * The startup identity of {@code editedStartup} must not be the same as another existing startup","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"menatahari"},"content":" * in the address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":78,"author":{"gitId":"menatahari"},"content":" void setStartup(Startup target, Startup editedStartup);","lastModifiedDate":"2024-03-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":80,"author":{"gitId":"menatahari"},"content":" /** Returns an unmodifiable view of the filtered startup list */","lastModifiedDate":"2024-03-19"},{"lineNumber":81,"author":{"gitId":"menatahari"},"content":" ObservableList\u003cStartup\u003e getFilteredStartupList();","lastModifiedDate":"2024-03-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":83,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-05"},{"lineNumber":84,"author":{"gitId":"menatahari"},"content":" * Updates the filter of the filtered startup list to filter by the given {@code predicate}.","lastModifiedDate":"2024-03-19"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2017-08-05"},{"lineNumber":86,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05"},{"lineNumber":87,"author":{"gitId":"menatahari"},"content":" void updateFilteredStartupList(Predicate\u003cStartup\u003e predicate);","lastModifiedDate":"2024-03-19"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"menatahari":18,"-":70}},{"path":"src/main/java/seedu/address/model/ModelManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-08-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2016-08-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23"},{"lineNumber":14,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Represents the in-memory model of the address book data.","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class ModelManager implements Model {","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ModelManager.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final AddressBook addressBook;","lastModifiedDate":"2019-01-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final UserPrefs userPrefs;","lastModifiedDate":"2018-12-06"},{"lineNumber":24,"author":{"gitId":"menatahari"},"content":" private final FilteredList\u003cStartup\u003e filteredStartups;","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Initializes a ModelManager with the given addressBook and userPrefs.","lastModifiedDate":"2016-12-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public ModelManager(ReadOnlyAddressBook addressBook, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":" requireAllNonNull(addressBook, userPrefs);","lastModifiedDate":"2017-05-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" logger.fine(\"Initializing with address book: \" + addressBook + \" and user prefs \" + userPrefs);","lastModifiedDate":"2016-12-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" this.addressBook \u003d new AddressBook(addressBook);","lastModifiedDate":"2019-01-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":36,"author":{"gitId":"menatahari"},"content":" filteredStartups \u003d new FilteredList\u003c\u003e(this.addressBook.getStartupList());","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public ModelManager() {","lastModifiedDate":"2016-09-22"},{"lineNumber":40,"author":{"gitId":"-"},"content":" this(new AddressBook(), new UserPrefs());","lastModifiedDate":"2016-09-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d UserPrefs \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":47,"author":{"gitId":"-"},"content":" requireNonNull(userPrefs);","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" this.userPrefs.resetData(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return userPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return userPrefs.getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return userPrefs.getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d AddressBook \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook addressBook) {","lastModifiedDate":"2018-11-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" this.addressBook.resetData(addressBook);","lastModifiedDate":"2019-01-25"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2016-09-21"},{"lineNumber":87,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2019-01-25"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":91,"author":{"gitId":"menatahari"},"content":" public boolean hasStartup(Startup startup) {","lastModifiedDate":"2024-03-19"},{"lineNumber":92,"author":{"gitId":"menatahari"},"content":" requireNonNull(startup);","lastModifiedDate":"2024-03-19"},{"lineNumber":93,"author":{"gitId":"menatahari"},"content":" return addressBook.hasStartup(startup);","lastModifiedDate":"2024-03-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":97,"author":{"gitId":"menatahari"},"content":" public void deleteStartup(Startup target) {","lastModifiedDate":"2024-03-19"},{"lineNumber":98,"author":{"gitId":"menatahari"},"content":" addressBook.removeStartup(target);","lastModifiedDate":"2024-03-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":102,"author":{"gitId":"menatahari"},"content":" public void addStartup(Startup startup) {","lastModifiedDate":"2024-03-19"},{"lineNumber":103,"author":{"gitId":"menatahari"},"content":" addressBook.addStartup(startup);","lastModifiedDate":"2024-03-19"},{"lineNumber":104,"author":{"gitId":"menatahari"},"content":" updateFilteredStartupList(PREDICATE_SHOW_ALL_STARTUPS);","lastModifiedDate":"2024-03-19"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-13"},{"lineNumber":108,"author":{"gitId":"menatahari"},"content":" public void setStartup(Startup target, Startup editedStartup) {","lastModifiedDate":"2024-03-19"},{"lineNumber":109,"author":{"gitId":"menatahari"},"content":" requireAllNonNull(target, editedStartup);","lastModifiedDate":"2024-03-19"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":111,"author":{"gitId":"menatahari"},"content":" addressBook.setStartup(target, editedStartup);","lastModifiedDate":"2024-03-19"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":114,"author":{"gitId":"menatahari"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Filtered Startup List Accessors \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-03-19"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19"},{"lineNumber":117,"author":{"gitId":"menatahari"},"content":" * Returns an unmodifiable view of the list of {@code Startup} backed by the internal list of","lastModifiedDate":"2024-03-19"},{"lineNumber":118,"author":{"gitId":"-"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2018-06-11"},{"lineNumber":119,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19"},{"lineNumber":120,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":121,"author":{"gitId":"menatahari"},"content":" public ObservableList\u003cStartup\u003e getFilteredStartupList() {","lastModifiedDate":"2024-03-19"},{"lineNumber":122,"author":{"gitId":"menatahari"},"content":" return filteredStartups;","lastModifiedDate":"2024-03-19"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":125,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":126,"author":{"gitId":"menatahari"},"content":" public void updateFilteredStartupList(Predicate\u003cStartup\u003e predicate) {","lastModifiedDate":"2024-03-19"},{"lineNumber":127,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05"},{"lineNumber":128,"author":{"gitId":"menatahari"},"content":" filteredStartups.setPredicate(predicate);","lastModifiedDate":"2024-03-19"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":131,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-31"},{"lineNumber":132,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13"},{"lineNumber":133,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":134,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":137,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31"},{"lineNumber":138,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":139,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-31"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":142,"author":{"gitId":"-"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":143,"author":{"gitId":"-"},"content":" return addressBook.equals(otherModelManager.addressBook)","lastModifiedDate":"2023-07-13"},{"lineNumber":144,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13"},{"lineNumber":145,"author":{"gitId":"menatahari"},"content":" \u0026\u0026 filteredStartups.equals(otherModelManager.filteredStartups);","lastModifiedDate":"2024-03-19"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":148,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"menatahari":21,"-":127}},{"path":"src/main/java/seedu/address/model/ReadOnlyAddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * Unmodifiable view of an address book","lastModifiedDate":"2016-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public interface ReadOnlyAddressBook {","lastModifiedDate":"2019-01-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"menatahari"},"content":" * Returns an unmodifiable view of the startups list.","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"menatahari"},"content":" * This list will not contain any duplicate startups.","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"menatahari"},"content":" ObservableList\u003cStartup\u003e getStartupList();","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"menatahari":4,"-":13}},{"path":"src/main/java/seedu/address/model/startup/Address.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"menatahari"},"content":"package seedu.address.model.startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"menatahari"},"content":" * Represents a Startup\u0027s address in the address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidAddress(String)}","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Address {","lastModifiedDate":"2016-09-21"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Addresses can take any values, and it should not be blank\";","lastModifiedDate":"2018-09-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":14,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2017-01-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2017-01-16"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2017-01-16"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d \"[^\\\\s].*\";","lastModifiedDate":"2018-09-22"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public final String value;","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Constructs an {@code Address}.","lastModifiedDate":"2017-05-30"},{"lineNumber":24,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * @param address A valid address.","lastModifiedDate":"2017-05-30"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public Address(String address) {","lastModifiedDate":"2017-05-30"},{"lineNumber":28,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":" checkArgument(isValidAddress(address), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":30,"author":{"gitId":"-"},"content":" value \u003d address;","lastModifiedDate":"2018-08-14"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid email.","lastModifiedDate":"2018-04-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static boolean isValidAddress(String test) {","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return value;","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" if (!(other instanceof Address)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" Address otherAddress \u003d (Address) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return value.equals(otherAddress.value);","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return value.hashCode();","lastModifiedDate":"2016-08-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"menatahari":2,"-":63}},{"path":"src/main/java/seedu/address/model/startup/Email.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"menatahari"},"content":"package seedu.address.model.startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"menatahari"},"content":" * Represents a Startup\u0027s email in the address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidEmail(String)}","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Email {","lastModifiedDate":"2016-09-21"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" private static final String SPECIAL_CHARACTERS \u003d \"+_.-\";","lastModifiedDate":"2021-07-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Emails should be of the format local-part@domain \"","lastModifiedDate":"2018-09-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":" + \"and adhere to the following constraints:\\n\"","lastModifiedDate":"2018-02-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":" + \"1. The local-part should only contain alphanumeric characters and these special characters, excluding \"","lastModifiedDate":"2018-02-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":" + \"the parentheses, (\" + SPECIAL_CHARACTERS + \"). The local-part may not start or end with any special \"","lastModifiedDate":"2021-07-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":" + \"characters.\\n\"","lastModifiedDate":"2021-07-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":" + \"2. This is followed by a \u0027@\u0027 and then a domain name. The domain name is made up of domain labels \"","lastModifiedDate":"2021-07-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":" + \"separated by periods.\\n\"","lastModifiedDate":"2021-07-20"},{"lineNumber":20,"author":{"gitId":"-"},"content":" + \"The domain name must:\\n\"","lastModifiedDate":"2018-02-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":" + \" - end with a domain label at least 2 characters long\\n\"","lastModifiedDate":"2021-07-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":" + \" - have each domain label start and end with alphanumeric characters\\n\"","lastModifiedDate":"2021-07-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":" + \" - have each domain label consist of alphanumeric characters, separated only by hyphens, if any.\";","lastModifiedDate":"2021-07-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // alphanumeric and special characters","lastModifiedDate":"2018-02-09"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String ALPHANUMERIC_NO_UNDERSCORE \u003d \"[^\\\\W_]+\"; // alphanumeric characters except underscore","lastModifiedDate":"2021-07-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String LOCAL_PART_REGEX \u003d \"^\" + ALPHANUMERIC_NO_UNDERSCORE + \"([\" + SPECIAL_CHARACTERS + \"]\"","lastModifiedDate":"2021-07-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" + ALPHANUMERIC_NO_UNDERSCORE + \")*\";","lastModifiedDate":"2021-07-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String DOMAIN_PART_REGEX \u003d ALPHANUMERIC_NO_UNDERSCORE","lastModifiedDate":"2021-07-20"},{"lineNumber":29,"author":{"gitId":"-"},"content":" + \"(-\" + ALPHANUMERIC_NO_UNDERSCORE + \")*\";","lastModifiedDate":"2021-07-20"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String DOMAIN_LAST_PART_REGEX \u003d \"(\" + DOMAIN_PART_REGEX + \"){2,}$\"; // At least two chars","lastModifiedDate":"2021-07-20"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String DOMAIN_REGEX \u003d \"(\" + DOMAIN_PART_REGEX + \"\\\\.)*\" + DOMAIN_LAST_PART_REGEX;","lastModifiedDate":"2021-07-20"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d LOCAL_PART_REGEX + \"@\" + DOMAIN_REGEX;","lastModifiedDate":"2021-07-20"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public final String value;","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Constructs an {@code Email}.","lastModifiedDate":"2017-05-30"},{"lineNumber":38,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * @param email A valid email address.","lastModifiedDate":"2017-05-30"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public Email(String email) {","lastModifiedDate":"2017-05-30"},{"lineNumber":42,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":" checkArgument(isValidEmail(email), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":44,"author":{"gitId":"-"},"content":" value \u003d email;","lastModifiedDate":"2018-08-14"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Returns if a given string is a valid email.","lastModifiedDate":"2018-04-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static boolean isValidEmail(String test) {","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" return value;","lastModifiedDate":"2016-08-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" if (!(other instanceof Email)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" Email otherEmail \u003d (Email) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return value.equals(otherEmail.value);","lastModifiedDate":"2023-07-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return value.hashCode();","lastModifiedDate":"2016-08-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"menatahari":2,"-":77}},{"path":"src/main/java/seedu/address/model/startup/FundingStage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"menatahari"},"content":"package seedu.address.model.startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":3,"author":{"gitId":"yeoshuheng"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-02-25"},{"lineNumber":4,"author":{"gitId":"yeoshuheng"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-02-25"},{"lineNumber":5,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":6,"author":{"gitId":"yeoshuheng"},"content":"/**","lastModifiedDate":"2024-02-25"},{"lineNumber":7,"author":{"gitId":"yeoshuheng"},"content":" * Represents funding stage of current project.","lastModifiedDate":"2024-02-25"},{"lineNumber":8,"author":{"gitId":"yeoshuheng"},"content":" */","lastModifiedDate":"2024-02-25"},{"lineNumber":9,"author":{"gitId":"yeoshuheng"},"content":"public class FundingStage {","lastModifiedDate":"2024-02-25"},{"lineNumber":10,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":11,"author":{"gitId":"yeoshuheng"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-02-25"},{"lineNumber":12,"author":{"gitId":"yeoshuheng"},"content":" \"Funding stages should be either \u0027A\u0027, \u0027B\u0027, \u0027S\u0027, \u0027PS\u0027 or \u0027C\u0027.\";","lastModifiedDate":"2024-03-15"},{"lineNumber":13,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":14,"author":{"gitId":"yeoshuheng"},"content":" public final String value;","lastModifiedDate":"2024-02-25"},{"lineNumber":15,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":16,"author":{"gitId":"yeoshuheng"},"content":" /**","lastModifiedDate":"2024-02-25"},{"lineNumber":17,"author":{"gitId":"yeoshuheng"},"content":" * Constructor for a funding stage.","lastModifiedDate":"2024-02-25"},{"lineNumber":18,"author":{"gitId":"yeoshuheng"},"content":" * @param fundingLevel The funding level (A, B, C) of the current stage.","lastModifiedDate":"2024-02-25"},{"lineNumber":19,"author":{"gitId":"yeoshuheng"},"content":" */","lastModifiedDate":"2024-02-25"},{"lineNumber":20,"author":{"gitId":"yeoshuheng"},"content":" public FundingStage(String fundingLevel) {","lastModifiedDate":"2024-02-25"},{"lineNumber":21,"author":{"gitId":"yeoshuheng"},"content":" requireNonNull(fundingLevel);","lastModifiedDate":"2024-02-25"},{"lineNumber":22,"author":{"gitId":"yeoshuheng"},"content":" fundingLevel \u003d fundingLevel.toUpperCase();","lastModifiedDate":"2024-02-25"},{"lineNumber":23,"author":{"gitId":"yeoshuheng"},"content":" checkArgument(isValidFundingLevel(fundingLevel), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-25"},{"lineNumber":24,"author":{"gitId":"yeoshuheng"},"content":" value \u003d fundingLevel;","lastModifiedDate":"2024-02-25"},{"lineNumber":25,"author":{"gitId":"yeoshuheng"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":26,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":27,"author":{"gitId":"yeoshuheng"},"content":" /**","lastModifiedDate":"2024-02-25"},{"lineNumber":28,"author":{"gitId":"yeoshuheng"},"content":" * Returns true if a given industry is a valid industry.","lastModifiedDate":"2024-02-25"},{"lineNumber":29,"author":{"gitId":"yeoshuheng"},"content":" */","lastModifiedDate":"2024-02-25"},{"lineNumber":30,"author":{"gitId":"yeoshuheng"},"content":" public static boolean isValidFundingLevel(String fundingLevel) {","lastModifiedDate":"2024-02-25"},{"lineNumber":31,"author":{"gitId":"yeoshuheng"},"content":" fundingLevel \u003d fundingLevel.toUpperCase();","lastModifiedDate":"2024-03-15"},{"lineNumber":32,"author":{"gitId":"yeoshuheng"},"content":" return fundingLevel.equals(\"A\") || fundingLevel.equals(\"B\") || fundingLevel.equals(\"C\")","lastModifiedDate":"2024-03-15"},{"lineNumber":33,"author":{"gitId":"yeoshuheng"},"content":" || fundingLevel.equals(\"S\") || fundingLevel.equals(\"PS\");","lastModifiedDate":"2024-03-15"},{"lineNumber":34,"author":{"gitId":"yeoshuheng"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":35,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":36,"author":{"gitId":"yeoshuheng"},"content":" @Override","lastModifiedDate":"2024-02-25"},{"lineNumber":37,"author":{"gitId":"yeoshuheng"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-02-25"},{"lineNumber":38,"author":{"gitId":"yeoshuheng"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-02-25"},{"lineNumber":39,"author":{"gitId":"yeoshuheng"},"content":" return true;","lastModifiedDate":"2024-02-25"},{"lineNumber":40,"author":{"gitId":"yeoshuheng"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":41,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":42,"author":{"gitId":"yeoshuheng"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-02-25"},{"lineNumber":43,"author":{"gitId":"yeoshuheng"},"content":" if (!(other instanceof FundingStage)) {","lastModifiedDate":"2024-02-25"},{"lineNumber":44,"author":{"gitId":"yeoshuheng"},"content":" return false;","lastModifiedDate":"2024-02-25"},{"lineNumber":45,"author":{"gitId":"yeoshuheng"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":46,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":47,"author":{"gitId":"yeoshuheng"},"content":" FundingStage otherFundingStage \u003d (FundingStage) other;","lastModifiedDate":"2024-02-25"},{"lineNumber":48,"author":{"gitId":"yeoshuheng"},"content":" return value.equals(otherFundingStage.value);","lastModifiedDate":"2024-02-25"},{"lineNumber":49,"author":{"gitId":"yeoshuheng"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":50,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":51,"author":{"gitId":"yeoshuheng"},"content":" @Override","lastModifiedDate":"2024-02-25"},{"lineNumber":52,"author":{"gitId":"yeoshuheng"},"content":" public String toString() {","lastModifiedDate":"2024-02-25"},{"lineNumber":53,"author":{"gitId":"yeoshuheng"},"content":" return this.value;","lastModifiedDate":"2024-02-25"},{"lineNumber":54,"author":{"gitId":"yeoshuheng"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":55,"author":{"gitId":"yeoshuheng"},"content":"}","lastModifiedDate":"2024-02-25"}],"authorContributionMap":{"menatahari":1,"yeoshuheng":54}},{"path":"src/main/java/seedu/address/model/startup/FundingStageContainsKeywordsPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"menatahari"},"content":"package seedu.address.model.startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"yespiggy"},"content":"import java.util.List;","lastModifiedDate":"2024-03-15"},{"lineNumber":4,"author":{"gitId":"yespiggy"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-15"},{"lineNumber":5,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":6,"author":{"gitId":"yespiggy"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"yespiggy"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"yespiggy"},"content":"/**","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"menatahari"},"content":" * Tests that a {@code Startup}\u0027s {@code FundingStage} matches any of the keywords given.","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"yespiggy"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"menatahari"},"content":"public class FundingStageContainsKeywordsPredicate implements Predicate\u003cStartup\u003e {","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"yespiggy"},"content":" private final List\u003cString\u003e keywords;","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"yespiggy"},"content":" public FundingStageContainsKeywordsPredicate(List\u003cString\u003e keywords) {","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"yespiggy"},"content":" this.keywords \u003d keywords;","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"yespiggy"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"menatahari"},"content":" public boolean test(Startup startup) {","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"yespiggy"},"content":" return keywords.stream()","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"menatahari"},"content":" .anyMatch(keyword -\u003e StringUtil.containsWordIgnoreCase(startup.getFundingStage().value, keyword));","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"yespiggy"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"yespiggy"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"yespiggy"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"yespiggy"},"content":" return true;","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"yespiggy"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"yespiggy"},"content":" if (!(other instanceof FundingStageContainsKeywordsPredicate)) {","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"yespiggy"},"content":" return false;","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"yespiggy"},"content":" FundingStageContainsKeywordsPredicate otherFundingStageContainsKeywordsPredicate \u003d","lastModifiedDate":"2024-03-15"},{"lineNumber":38,"author":{"gitId":"yespiggy"},"content":" (FundingStageContainsKeywordsPredicate) other;","lastModifiedDate":"2024-03-15"},{"lineNumber":39,"author":{"gitId":"yespiggy"},"content":" return keywords.equals(otherFundingStageContainsKeywordsPredicate.keywords);","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"yespiggy"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"yespiggy"},"content":" public String toString() {","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"yespiggy"},"content":" return new ToStringBuilder(this).add(\"keywords\", keywords).toString();","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":46,"author":{"gitId":"yespiggy"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"menatahari":5,"yespiggy":41}},{"path":"src/main/java/seedu/address/model/startup/Industry.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"menatahari"},"content":"package seedu.address.model.startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":3,"author":{"gitId":"yeoshuheng"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-02-25"},{"lineNumber":4,"author":{"gitId":"yeoshuheng"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-02-25"},{"lineNumber":5,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":6,"author":{"gitId":"yeoshuheng"},"content":"/**","lastModifiedDate":"2024-02-25"},{"lineNumber":7,"author":{"gitId":"menatahari"},"content":" * Represents industry startup is from.","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"yeoshuheng"},"content":" */","lastModifiedDate":"2024-02-25"},{"lineNumber":9,"author":{"gitId":"yeoshuheng"},"content":"public class Industry {","lastModifiedDate":"2024-02-25"},{"lineNumber":10,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":11,"author":{"gitId":"yeoshuheng"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-02-25"},{"lineNumber":12,"author":{"gitId":"yeoshuheng"},"content":" \"Industry names should only contain alphanumeric characters and spaces, and it should not be blank\";","lastModifiedDate":"2024-02-25"},{"lineNumber":13,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":14,"author":{"gitId":"yeoshuheng"},"content":" /*","lastModifiedDate":"2024-02-25"},{"lineNumber":15,"author":{"gitId":"yeoshuheng"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2024-02-25"},{"lineNumber":16,"author":{"gitId":"yeoshuheng"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2024-02-25"},{"lineNumber":17,"author":{"gitId":"yeoshuheng"},"content":" */","lastModifiedDate":"2024-02-25"},{"lineNumber":18,"author":{"gitId":"yeoshuheng"},"content":" public static final String VALIDATION_REGEX \u003d \"[\\\\p{Alnum}][\\\\p{Alnum} ]*\";","lastModifiedDate":"2024-02-25"},{"lineNumber":19,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":20,"author":{"gitId":"yeoshuheng"},"content":" public final String value;","lastModifiedDate":"2024-02-25"},{"lineNumber":21,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":22,"author":{"gitId":"yeoshuheng"},"content":" /**","lastModifiedDate":"2024-02-25"},{"lineNumber":23,"author":{"gitId":"yeoshuheng"},"content":" * Constructor for an industry.","lastModifiedDate":"2024-02-25"},{"lineNumber":24,"author":{"gitId":"yeoshuheng"},"content":" * @param industry Name of the industry.","lastModifiedDate":"2024-02-25"},{"lineNumber":25,"author":{"gitId":"yeoshuheng"},"content":" */","lastModifiedDate":"2024-02-25"},{"lineNumber":26,"author":{"gitId":"yeoshuheng"},"content":" public Industry(String industry) {","lastModifiedDate":"2024-02-25"},{"lineNumber":27,"author":{"gitId":"yeoshuheng"},"content":" requireNonNull(industry);","lastModifiedDate":"2024-02-25"},{"lineNumber":28,"author":{"gitId":"yeoshuheng"},"content":" checkArgument(isValidIndustry(industry), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-25"},{"lineNumber":29,"author":{"gitId":"yeoshuheng"},"content":" value \u003d industry.toUpperCase();","lastModifiedDate":"2024-02-25"},{"lineNumber":30,"author":{"gitId":"yeoshuheng"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":31,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":32,"author":{"gitId":"yeoshuheng"},"content":" /**","lastModifiedDate":"2024-02-25"},{"lineNumber":33,"author":{"gitId":"yeoshuheng"},"content":" * Returns true if a given industry is a valid industry.","lastModifiedDate":"2024-02-25"},{"lineNumber":34,"author":{"gitId":"yeoshuheng"},"content":" */","lastModifiedDate":"2024-02-25"},{"lineNumber":35,"author":{"gitId":"yeoshuheng"},"content":" public static boolean isValidIndustry(String test) {","lastModifiedDate":"2024-02-25"},{"lineNumber":36,"author":{"gitId":"yeoshuheng"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-02-25"},{"lineNumber":37,"author":{"gitId":"yeoshuheng"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":38,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":39,"author":{"gitId":"yeoshuheng"},"content":" @Override","lastModifiedDate":"2024-02-25"},{"lineNumber":40,"author":{"gitId":"yeoshuheng"},"content":" public String toString() {","lastModifiedDate":"2024-02-25"},{"lineNumber":41,"author":{"gitId":"yeoshuheng"},"content":" return this.value;","lastModifiedDate":"2024-02-25"},{"lineNumber":42,"author":{"gitId":"yeoshuheng"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":43,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":44,"author":{"gitId":"yeoshuheng"},"content":" @Override","lastModifiedDate":"2024-02-25"},{"lineNumber":45,"author":{"gitId":"yeoshuheng"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-02-25"},{"lineNumber":46,"author":{"gitId":"yeoshuheng"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-02-25"},{"lineNumber":47,"author":{"gitId":"yeoshuheng"},"content":" return true;","lastModifiedDate":"2024-02-25"},{"lineNumber":48,"author":{"gitId":"yeoshuheng"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":49,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":50,"author":{"gitId":"yeoshuheng"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-02-25"},{"lineNumber":51,"author":{"gitId":"yeoshuheng"},"content":" if (!(other instanceof Industry)) {","lastModifiedDate":"2024-02-25"},{"lineNumber":52,"author":{"gitId":"yeoshuheng"},"content":" return false;","lastModifiedDate":"2024-02-25"},{"lineNumber":53,"author":{"gitId":"yeoshuheng"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":54,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":55,"author":{"gitId":"yeoshuheng"},"content":" Industry otherIndustry \u003d (Industry) other;","lastModifiedDate":"2024-02-25"},{"lineNumber":56,"author":{"gitId":"yeoshuheng"},"content":" return value.equals(otherIndustry.value);","lastModifiedDate":"2024-02-25"},{"lineNumber":57,"author":{"gitId":"yeoshuheng"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":58,"author":{"gitId":"yeoshuheng"},"content":"}","lastModifiedDate":"2024-02-25"}],"authorContributionMap":{"menatahari":2,"yeoshuheng":56}},{"path":"src/main/java/seedu/address/model/startup/IndustryContainsKeywordsPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"menatahari"},"content":"package seedu.address.model.startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"yespiggy"},"content":"import java.util.List;","lastModifiedDate":"2024-03-15"},{"lineNumber":4,"author":{"gitId":"yespiggy"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-15"},{"lineNumber":5,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":6,"author":{"gitId":"yespiggy"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"yespiggy"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":10,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"yespiggy"},"content":"/**","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"yespiggy"},"content":" * Tests that a {@code Startup}\u0027s {@code Industry} matches any of the keywords given.","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"yespiggy"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"menatahari"},"content":"public class IndustryContainsKeywordsPredicate implements Predicate\u003cStartup\u003e {","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"yespiggy"},"content":" private final List\u003cString\u003e keywords;","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"yespiggy"},"content":" public IndustryContainsKeywordsPredicate(List\u003cString\u003e keywords) {","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"yespiggy"},"content":" this.keywords \u003d keywords;","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"yespiggy"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"menatahari"},"content":" public boolean test(Startup startup) {","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"yespiggy"},"content":" return keywords.stream()","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"menatahari"},"content":" .anyMatch(keyword -\u003e StringUtil.containsWordIgnoreCase(startup.getIndustry().value, keyword));","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"yespiggy"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"yespiggy"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"yespiggy"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"yespiggy"},"content":" return true;","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"yespiggy"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"yespiggy"},"content":" if (!(other instanceof IndustryContainsKeywordsPredicate)) {","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"yespiggy"},"content":" return false;","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"yespiggy"},"content":" IndustryContainsKeywordsPredicate otherIndustryContainsKeywordsPredicate \u003d","lastModifiedDate":"2024-03-15"},{"lineNumber":39,"author":{"gitId":"yespiggy"},"content":" (IndustryContainsKeywordsPredicate) other;","lastModifiedDate":"2024-03-15"},{"lineNumber":40,"author":{"gitId":"yespiggy"},"content":" return keywords.equals(otherIndustryContainsKeywordsPredicate.keywords);","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"yespiggy"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"yespiggy"},"content":" public String toString() {","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"yespiggy"},"content":" return new ToStringBuilder(this).add(\"keywords\", keywords).toString();","lastModifiedDate":"2024-03-14"},{"lineNumber":46,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":47,"author":{"gitId":"yespiggy"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"menatahari":4,"yespiggy":43}},{"path":"src/main/java/seedu/address/model/startup/Name.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"menatahari"},"content":"package seedu.address.model.startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"menatahari"},"content":" * Represents a Startup\u0027s name in the address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidName(String)}","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Name {","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2018-09-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \"Names should only contain alphanumeric characters and spaces, and it should not be blank\";","lastModifiedDate":"2018-04-04"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2017-01-16"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2017-01-16"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2017-01-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d \"[\\\\p{Alnum}][\\\\p{Alnum} ]*\";","lastModifiedDate":"2018-09-22"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public final String fullName;","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Constructs a {@code Name}.","lastModifiedDate":"2017-05-30"},{"lineNumber":25,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * @param name A valid name.","lastModifiedDate":"2017-05-30"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public Name(String name) {","lastModifiedDate":"2017-05-30"},{"lineNumber":29,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":" checkArgument(isValidName(name), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":31,"author":{"gitId":"-"},"content":" fullName \u003d name;","lastModifiedDate":"2018-08-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid name.","lastModifiedDate":"2018-04-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static boolean isValidName(String test) {","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" return fullName;","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (!(other instanceof Name)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" Name otherName \u003d (Name) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return fullName.equals(otherName.fullName);","lastModifiedDate":"2023-07-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return fullName.hashCode();","lastModifiedDate":"2016-08-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"menatahari":2,"-":65}},{"path":"src/main/java/seedu/address/model/startup/NameContainsKeywordsPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"menatahari"},"content":"package seedu.address.model.startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-06-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":10,"author":{"gitId":"menatahari"},"content":" * Tests that a {@code Startup}\u0027s {@code Name} matches any of the keywords given.","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":12,"author":{"gitId":"menatahari"},"content":"public class NameContainsKeywordsPredicate implements Predicate\u003cStartup\u003e {","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":" private final List\u003cString\u003e keywords;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public NameContainsKeywordsPredicate(List\u003cString\u003e keywords) {","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":" this.keywords \u003d keywords;","lastModifiedDate":"2017-06-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"menatahari"},"content":" public boolean test(Startup startup) {","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":" return keywords.stream()","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"menatahari"},"content":" .anyMatch(keyword -\u003e StringUtil.containsWordIgnoreCase(startup.getName().fullName, keyword));","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" if (!(other instanceof NameContainsKeywordsPredicate)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate otherNameContainsKeywordsPredicate \u003d (NameContainsKeywordsPredicate) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" return keywords.equals(otherNameContainsKeywordsPredicate.keywords);","lastModifiedDate":"2023-07-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this).add(\"keywords\", keywords).toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"menatahari":5,"-":39}},{"path":"src/main/java/seedu/address/model/startup/Note.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"menatahari"},"content":"package seedu.address.model.startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"dwangwk"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"dwangwk"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"dwangwk"},"content":"/**","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"dwangwk"},"content":" * Represents a Note of a Startup in the address book.","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"dwangwk"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidNote(String)}","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"dwangwk"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"dwangwk"},"content":"public class Note {","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"dwangwk"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Notes can take any values, and it should not be blank\";","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"dwangwk"},"content":" /*","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"dwangwk"},"content":" * The first character of the note must not be a whitespace,","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"dwangwk"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"dwangwk"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"dwangwk"},"content":" public static final String VALIDATION_REGEX \u003d \"[^\\\\s].*\";","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"dwangwk"},"content":" public final String value;","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"dwangwk"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"dwangwk"},"content":" * Constructs an {@code Note}.","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"dwangwk"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"dwangwk"},"content":" * @param note A valid note.","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"dwangwk"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"dwangwk"},"content":" public Note(String note) {","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"dwangwk"},"content":" requireNonNull(note);","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"dwangwk"},"content":" checkArgument(isValidNote(note), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"dwangwk"},"content":" value \u003d note;","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"dwangwk"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"dwangwk"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"dwangwk"},"content":" * Returns true if a given string is a valid email.","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"dwangwk"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"dwangwk"},"content":" public static boolean isValidNote(String test) {","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"dwangwk"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"dwangwk"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"dwangwk"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"dwangwk"},"content":" public String toString() {","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"dwangwk"},"content":" return value;","lastModifiedDate":"2024-03-13"},{"lineNumber":43,"author":{"gitId":"dwangwk"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":44,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"dwangwk"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"dwangwk"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"dwangwk"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-13"},{"lineNumber":48,"author":{"gitId":"dwangwk"},"content":" return true;","lastModifiedDate":"2024-03-13"},{"lineNumber":49,"author":{"gitId":"dwangwk"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":50,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":51,"author":{"gitId":"dwangwk"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-13"},{"lineNumber":52,"author":{"gitId":"dwangwk"},"content":" if (!(other instanceof Note)) {","lastModifiedDate":"2024-03-13"},{"lineNumber":53,"author":{"gitId":"dwangwk"},"content":" return false;","lastModifiedDate":"2024-03-13"},{"lineNumber":54,"author":{"gitId":"dwangwk"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":55,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":56,"author":{"gitId":"dwangwk"},"content":" Note otherNote \u003d (Note) other;","lastModifiedDate":"2024-03-13"},{"lineNumber":57,"author":{"gitId":"dwangwk"},"content":" return value.equals(otherNote.value);","lastModifiedDate":"2024-03-13"},{"lineNumber":58,"author":{"gitId":"dwangwk"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":59,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":60,"author":{"gitId":"dwangwk"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":61,"author":{"gitId":"dwangwk"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-13"},{"lineNumber":62,"author":{"gitId":"dwangwk"},"content":" return value.hashCode();","lastModifiedDate":"2024-03-13"},{"lineNumber":63,"author":{"gitId":"dwangwk"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":64,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":65,"author":{"gitId":"dwangwk"},"content":"}","lastModifiedDate":"2024-03-13"},{"lineNumber":66,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"dwangwk":65,"menatahari":1}},{"path":"src/main/java/seedu/address/model/startup/Phone.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"menatahari"},"content":"package seedu.address.model.startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"menatahari"},"content":" * Represents a Startup\u0027s phone number in the address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidPhone(String)}","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Phone {","lastModifiedDate":"2016-09-21"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2018-09-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \"Phone numbers should only contain numbers, and it should be at least 3 digits long\";","lastModifiedDate":"2018-04-04"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d \"\\\\d{3,}\";","lastModifiedDate":"2018-09-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public final String value;","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Constructs a {@code Phone}.","lastModifiedDate":"2017-05-30"},{"lineNumber":20,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * @param phone A valid phone number.","lastModifiedDate":"2017-05-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public Phone(String phone) {","lastModifiedDate":"2017-05-30"},{"lineNumber":24,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" checkArgument(isValidPhone(phone), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":26,"author":{"gitId":"-"},"content":" value \u003d phone;","lastModifiedDate":"2018-08-14"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid phone number.","lastModifiedDate":"2018-04-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static boolean isValidPhone(String test) {","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" return value;","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" if (!(other instanceof Phone)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" Phone otherPhone \u003d (Phone) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return value.equals(otherPhone.value);","lastModifiedDate":"2023-07-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return value.hashCode();","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"menatahari":2,"-":59}},{"path":"src/main/java/seedu/address/model/startup/Startup.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"menatahari"},"content":"package seedu.address.model.startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-03-07"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-03-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"menatahari"},"content":" * Represents a Startup in the address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2017-12-20"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"menatahari"},"content":"public class Startup {","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private final Phone phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final Email email;","lastModifiedDate":"2017-12-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19"},{"lineNumber":25,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":26,"author":{"gitId":"yeoshuheng"},"content":" private final FundingStage fundingStage;","lastModifiedDate":"2024-02-25"},{"lineNumber":27,"author":{"gitId":"yeoshuheng"},"content":" private final Industry industry;","lastModifiedDate":"2024-02-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final Address address;","lastModifiedDate":"2018-04-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private final Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26"},{"lineNumber":30,"author":{"gitId":"dwangwk"},"content":" private final Note note;","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"menatahari"},"content":" public Startup(Name name, FundingStage fundingStage, Industry industry,","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"yeoshuheng"},"content":" Phone phone, Email email, Address address, Set\u003cTag\u003e tags) {","lastModifiedDate":"2024-02-25"},{"lineNumber":37,"author":{"gitId":"yeoshuheng"},"content":" requireAllNonNull(name, fundingStage, industry, phone, email, address, tags);","lastModifiedDate":"2024-02-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20"},{"lineNumber":39,"author":{"gitId":"yeoshuheng"},"content":" this.fundingStage \u003d fundingStage;","lastModifiedDate":"2024-02-25"},{"lineNumber":40,"author":{"gitId":"yeoshuheng"},"content":" this.industry \u003d industry;","lastModifiedDate":"2024-02-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20"},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-12-20"},{"lineNumber":44,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":45,"author":{"gitId":"dwangwk"},"content":" this.note \u003d new Note(\"Add a note!\");","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"dwangwk"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":48,"author":{"gitId":"dwangwk"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":49,"author":{"gitId":"dwangwk"},"content":" * Every field must be present and not null.","lastModifiedDate":"2024-03-13"},{"lineNumber":50,"author":{"gitId":"dwangwk"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":51,"author":{"gitId":"menatahari"},"content":" public Startup(Name name, FundingStage fundingStage, Industry industry,","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"dwangwk"},"content":" Phone phone, Email email, Address address, Set\u003cTag\u003e tags, Note note) {","lastModifiedDate":"2024-03-13"},{"lineNumber":53,"author":{"gitId":"dwangwk"},"content":" requireAllNonNull(name, fundingStage, industry, phone, email, address, tags);","lastModifiedDate":"2024-03-13"},{"lineNumber":54,"author":{"gitId":"dwangwk"},"content":" this.name \u003d name;","lastModifiedDate":"2024-03-13"},{"lineNumber":55,"author":{"gitId":"dwangwk"},"content":" this.fundingStage \u003d fundingStage;","lastModifiedDate":"2024-03-13"},{"lineNumber":56,"author":{"gitId":"dwangwk"},"content":" this.industry \u003d industry;","lastModifiedDate":"2024-03-13"},{"lineNumber":57,"author":{"gitId":"dwangwk"},"content":" this.phone \u003d phone;","lastModifiedDate":"2024-03-13"},{"lineNumber":58,"author":{"gitId":"dwangwk"},"content":" this.email \u003d email;","lastModifiedDate":"2024-03-13"},{"lineNumber":59,"author":{"gitId":"dwangwk"},"content":" this.address \u003d address;","lastModifiedDate":"2024-03-13"},{"lineNumber":60,"author":{"gitId":"dwangwk"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2024-03-13"},{"lineNumber":61,"author":{"gitId":"dwangwk"},"content":" this.note \u003d note;","lastModifiedDate":"2024-03-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":64,"author":{"gitId":"yeoshuheng"},"content":" public FundingStage getFundingStage() {","lastModifiedDate":"2024-02-25"},{"lineNumber":65,"author":{"gitId":"yeoshuheng"},"content":" return this.fundingStage;","lastModifiedDate":"2024-02-25"},{"lineNumber":66,"author":{"gitId":"yeoshuheng"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":67,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":68,"author":{"gitId":"yeoshuheng"},"content":" public Industry getIndustry() {","lastModifiedDate":"2024-02-25"},{"lineNumber":69,"author":{"gitId":"yeoshuheng"},"content":" return this.industry;","lastModifiedDate":"2024-02-25"},{"lineNumber":70,"author":{"gitId":"yeoshuheng"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":71,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2017-07-12"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12"},{"lineNumber":81,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2017-12-20"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public Address getAddress() {","lastModifiedDate":"2017-07-12"},{"lineNumber":85,"author":{"gitId":"-"},"content":" return address;","lastModifiedDate":"2017-12-20"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":88,"author":{"gitId":"dwangwk"},"content":" public Note getNote() {","lastModifiedDate":"2024-03-13"},{"lineNumber":89,"author":{"gitId":"dwangwk"},"content":" return note;","lastModifiedDate":"2024-03-13"},{"lineNumber":90,"author":{"gitId":"dwangwk"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":91,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07"},{"lineNumber":95,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07"},{"lineNumber":96,"author":{"gitId":"-"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":97,"author":{"gitId":"-"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":100,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":101,"author":{"gitId":"menatahari"},"content":" * Returns true if both startups have the same name.","lastModifiedDate":"2024-03-19"},{"lineNumber":102,"author":{"gitId":"menatahari"},"content":" * This defines a weaker notion of equality between two startups.","lastModifiedDate":"2024-03-19"},{"lineNumber":103,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":104,"author":{"gitId":"menatahari"},"content":" public boolean isSameStartup(Startup otherStartup) {","lastModifiedDate":"2024-03-19"},{"lineNumber":105,"author":{"gitId":"menatahari"},"content":" if (otherStartup \u003d\u003d this) {","lastModifiedDate":"2024-03-19"},{"lineNumber":106,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":109,"author":{"gitId":"menatahari"},"content":" return otherStartup !\u003d null","lastModifiedDate":"2024-03-19"},{"lineNumber":110,"author":{"gitId":"menatahari"},"content":" \u0026\u0026 otherStartup.getName().equals(getName());","lastModifiedDate":"2024-03-19"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":113,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":114,"author":{"gitId":"menatahari"},"content":" * Returns true if both startups have the same identity and data fields.","lastModifiedDate":"2024-03-19"},{"lineNumber":115,"author":{"gitId":"menatahari"},"content":" * This defines a stronger notion of equality between two startups.","lastModifiedDate":"2024-03-19"},{"lineNumber":116,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":118,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":119,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10"},{"lineNumber":120,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":123,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":124,"author":{"gitId":"menatahari"},"content":" if (!(other instanceof Startup)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":125,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":128,"author":{"gitId":"menatahari"},"content":" Startup otherStartup \u003d (Startup) other;","lastModifiedDate":"2024-03-19"},{"lineNumber":129,"author":{"gitId":"menatahari"},"content":" return name.equals(otherStartup.name)","lastModifiedDate":"2024-03-19"},{"lineNumber":130,"author":{"gitId":"menatahari"},"content":" \u0026\u0026 industry.equals(otherStartup.industry)","lastModifiedDate":"2024-03-19"},{"lineNumber":131,"author":{"gitId":"menatahari"},"content":" \u0026\u0026 fundingStage.equals(otherStartup.fundingStage)","lastModifiedDate":"2024-03-19"},{"lineNumber":132,"author":{"gitId":"menatahari"},"content":" \u0026\u0026 phone.equals(otherStartup.phone)","lastModifiedDate":"2024-03-19"},{"lineNumber":133,"author":{"gitId":"menatahari"},"content":" \u0026\u0026 email.equals(otherStartup.email)","lastModifiedDate":"2024-03-19"},{"lineNumber":134,"author":{"gitId":"menatahari"},"content":" \u0026\u0026 address.equals(otherStartup.address)","lastModifiedDate":"2024-03-19"},{"lineNumber":135,"author":{"gitId":"menatahari"},"content":" \u0026\u0026 tags.equals(otherStartup.tags);","lastModifiedDate":"2024-03-19"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":138,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":139,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":140,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24"},{"lineNumber":141,"author":{"gitId":"-"},"content":" return Objects.hash(name, phone, email, address, tags);","lastModifiedDate":"2016-08-24"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":144,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":145,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":146,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":148,"author":{"gitId":"yeoshuheng"},"content":" .add(\"industry\", industry)","lastModifiedDate":"2024-02-25"},{"lineNumber":149,"author":{"gitId":"yeoshuheng"},"content":" .add(\"funding stage\", fundingStage)","lastModifiedDate":"2024-02-25"},{"lineNumber":150,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":153,"author":{"gitId":"dwangwk"},"content":" .add(\"note\", note)","lastModifiedDate":"2024-03-13"},{"lineNumber":154,"author":{"gitId":"dwangwk"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2024-03-14"},{"lineNumber":155,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":158,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"dwangwk":23,"menatahari":22,"-":96,"yeoshuheng":17}},{"path":"src/main/java/seedu/address/model/startup/UniqueStartupList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"menatahari"},"content":"package seedu.address.model.startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"menatahari"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"menatahari"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"menatahari"},"content":"import java.util.Iterator;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"menatahari"},"content":"import java.util.List;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"menatahari"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"menatahari"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.exceptions.DuplicateStartupException;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.exceptions.StartupNotFoundException;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"menatahari"},"content":"/**","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"menatahari"},"content":" * A list of startups that enforces uniqueness between its elements and does not allow nulls.","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"menatahari"},"content":" * A startup is considered unique by comparing using {@code Startup#isSameStartup(Startup)}. As such, adding and","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"menatahari"},"content":" * updating of startups uses Startup#isSameStartup(Startup) for equality so as to ensure that the startup being added","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"menatahari"},"content":" * or updated is unique in terms of identity in the UniqueStartupList. However, the removal of a startup uses","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"menatahari"},"content":" * Startup#equals(Object) so as to ensure that the startup with exactly the same fields will be removed.","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"menatahari"},"content":" *","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"menatahari"},"content":" * Supports a minimal set of list operations.","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"menatahari"},"content":" *","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"menatahari"},"content":" * @see Startup#isSameStartup(Startup)","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"menatahari"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"menatahari"},"content":"public class UniqueStartupList implements Iterable\u003cStartup\u003e {","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"menatahari"},"content":" private final ObservableList\u003cStartup\u003e internalList \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"menatahari"},"content":" private final ObservableList\u003cStartup\u003e internalUnmodifiableList \u003d","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"menatahari"},"content":" FXCollections.unmodifiableObservableList(internalList);","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"menatahari"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"menatahari"},"content":" * Returns true if the list contains an equivalent startup as the given argument.","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"menatahari"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"menatahari"},"content":" public boolean contains(Startup toCheck) {","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"menatahari"},"content":" requireNonNull(toCheck);","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"menatahari"},"content":" return internalList.stream().anyMatch(toCheck::isSameStartup);","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"menatahari"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"menatahari"},"content":" * Adds a startup to the list.","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"menatahari"},"content":" * The startup must not already exist in the list.","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"menatahari"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"menatahari"},"content":" public void add(Startup toAdd) {","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"menatahari"},"content":" requireNonNull(toAdd);","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"menatahari"},"content":" if (contains(toAdd)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"menatahari"},"content":" throw new DuplicateStartupException();","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"menatahari"},"content":" internalList.add(toAdd);","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"menatahari"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"menatahari"},"content":" * Replaces the startup {@code target} in the list with {@code editedStartup}.","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"menatahari"},"content":" * {@code target} must exist in the list.","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"menatahari"},"content":" * The startup identity of {@code editedStartup} must not be the same as another existing startup in the list.","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"menatahari"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"menatahari"},"content":" public void setStartup(Startup target, Startup editedStartup) {","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"menatahari"},"content":" requireAllNonNull(target, editedStartup);","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"menatahari"},"content":" int index \u003d internalList.indexOf(target);","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"menatahari"},"content":" if (index \u003d\u003d -1) {","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"menatahari"},"content":" throw new StartupNotFoundException();","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"menatahari"},"content":" if (!target.isSameStartup(editedStartup) \u0026\u0026 contains(editedStartup)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"menatahari"},"content":" throw new DuplicateStartupException();","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"menatahari"},"content":" internalList.set(index, editedStartup);","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"menatahari"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"menatahari"},"content":" * Removes the equivalent startup from the list.","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"menatahari"},"content":" * The startup must exist in the list.","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"menatahari"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":75,"author":{"gitId":"menatahari"},"content":" public void remove(Startup toRemove) {","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"menatahari"},"content":" requireNonNull(toRemove);","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"menatahari"},"content":" if (!internalList.remove(toRemove)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"menatahari"},"content":" throw new StartupNotFoundException();","lastModifiedDate":"2024-03-19"},{"lineNumber":79,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":80,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":81,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":82,"author":{"gitId":"menatahari"},"content":" public void setStartups(UniqueStartupList replacement) {","lastModifiedDate":"2024-03-19"},{"lineNumber":83,"author":{"gitId":"menatahari"},"content":" requireNonNull(replacement);","lastModifiedDate":"2024-03-19"},{"lineNumber":84,"author":{"gitId":"menatahari"},"content":" internalList.setAll(replacement.internalList);","lastModifiedDate":"2024-03-19"},{"lineNumber":85,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":86,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":87,"author":{"gitId":"menatahari"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":88,"author":{"gitId":"menatahari"},"content":" * Replaces the contents of this list with {@code startups}.","lastModifiedDate":"2024-03-19"},{"lineNumber":89,"author":{"gitId":"menatahari"},"content":" * {@code startups} must not contain duplicate startups.","lastModifiedDate":"2024-03-19"},{"lineNumber":90,"author":{"gitId":"menatahari"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":91,"author":{"gitId":"menatahari"},"content":" public void setStartups(List\u003cStartup\u003e startups) {","lastModifiedDate":"2024-03-19"},{"lineNumber":92,"author":{"gitId":"menatahari"},"content":" requireAllNonNull(startups);","lastModifiedDate":"2024-03-19"},{"lineNumber":93,"author":{"gitId":"menatahari"},"content":" if (!startupsAreUnique(startups)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":94,"author":{"gitId":"menatahari"},"content":" throw new DuplicateStartupException();","lastModifiedDate":"2024-03-19"},{"lineNumber":95,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":96,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":97,"author":{"gitId":"menatahari"},"content":" internalList.setAll(startups);","lastModifiedDate":"2024-03-19"},{"lineNumber":98,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":99,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":100,"author":{"gitId":"menatahari"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":101,"author":{"gitId":"menatahari"},"content":" * Returns the backing list as an unmodifiable {@code ObservableList}.","lastModifiedDate":"2024-03-19"},{"lineNumber":102,"author":{"gitId":"menatahari"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":103,"author":{"gitId":"menatahari"},"content":" public ObservableList\u003cStartup\u003e asUnmodifiableObservableList() {","lastModifiedDate":"2024-03-19"},{"lineNumber":104,"author":{"gitId":"menatahari"},"content":" return internalUnmodifiableList;","lastModifiedDate":"2024-03-19"},{"lineNumber":105,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":106,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":107,"author":{"gitId":"menatahari"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":108,"author":{"gitId":"menatahari"},"content":" public Iterator\u003cStartup\u003e iterator() {","lastModifiedDate":"2024-03-19"},{"lineNumber":109,"author":{"gitId":"menatahari"},"content":" return internalList.iterator();","lastModifiedDate":"2024-03-19"},{"lineNumber":110,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":111,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":112,"author":{"gitId":"menatahari"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":113,"author":{"gitId":"menatahari"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-19"},{"lineNumber":114,"author":{"gitId":"menatahari"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-19"},{"lineNumber":115,"author":{"gitId":"menatahari"},"content":" return true;","lastModifiedDate":"2024-03-19"},{"lineNumber":116,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":117,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":118,"author":{"gitId":"menatahari"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-19"},{"lineNumber":119,"author":{"gitId":"menatahari"},"content":" if (!(other instanceof UniqueStartupList)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":120,"author":{"gitId":"menatahari"},"content":" return false;","lastModifiedDate":"2024-03-19"},{"lineNumber":121,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":122,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":123,"author":{"gitId":"menatahari"},"content":" UniqueStartupList otherUniqueStartupList \u003d (UniqueStartupList) other;","lastModifiedDate":"2024-03-19"},{"lineNumber":124,"author":{"gitId":"menatahari"},"content":" return internalList.equals(otherUniqueStartupList.internalList);","lastModifiedDate":"2024-03-19"},{"lineNumber":125,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":126,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":127,"author":{"gitId":"menatahari"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":128,"author":{"gitId":"menatahari"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-19"},{"lineNumber":129,"author":{"gitId":"menatahari"},"content":" return internalList.hashCode();","lastModifiedDate":"2024-03-19"},{"lineNumber":130,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":131,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":132,"author":{"gitId":"menatahari"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":133,"author":{"gitId":"menatahari"},"content":" public String toString() {","lastModifiedDate":"2024-03-19"},{"lineNumber":134,"author":{"gitId":"menatahari"},"content":" return internalList.toString();","lastModifiedDate":"2024-03-19"},{"lineNumber":135,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":136,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":137,"author":{"gitId":"menatahari"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":138,"author":{"gitId":"menatahari"},"content":" * Returns true if {@code startups} contains only unique startups.","lastModifiedDate":"2024-03-19"},{"lineNumber":139,"author":{"gitId":"menatahari"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":140,"author":{"gitId":"menatahari"},"content":" private boolean startupsAreUnique(List\u003cStartup\u003e startups) {","lastModifiedDate":"2024-03-19"},{"lineNumber":141,"author":{"gitId":"menatahari"},"content":" for (int i \u003d 0; i \u003c startups.size() - 1; i++) {","lastModifiedDate":"2024-03-19"},{"lineNumber":142,"author":{"gitId":"menatahari"},"content":" for (int j \u003d i + 1; j \u003c startups.size(); j++) {","lastModifiedDate":"2024-03-19"},{"lineNumber":143,"author":{"gitId":"menatahari"},"content":" if (startups.get(i).isSameStartup(startups.get(j))) {","lastModifiedDate":"2024-03-19"},{"lineNumber":144,"author":{"gitId":"menatahari"},"content":" return false;","lastModifiedDate":"2024-03-19"},{"lineNumber":145,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":146,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":147,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":148,"author":{"gitId":"menatahari"},"content":" return true;","lastModifiedDate":"2024-03-19"},{"lineNumber":149,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":150,"author":{"gitId":"menatahari"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"menatahari":150}},{"path":"src/main/java/seedu/address/model/startup/exceptions/DuplicateStartupException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"menatahari"},"content":"package seedu.address.model.startup.exceptions;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"menatahari"},"content":"/**","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"menatahari"},"content":" * Signals that the operation will result in duplicate Startups (Startups are considered duplicates if they have the","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"menatahari"},"content":" * same identity).","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"menatahari"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"menatahari"},"content":"public class DuplicateStartupException extends RuntimeException {","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"menatahari"},"content":" public DuplicateStartupException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"menatahari"},"content":" super(\"Operation would result in duplicate startups\");","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"menatahari"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"menatahari":11}},{"path":"src/main/java/seedu/address/model/startup/exceptions/StartupNotFoundException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"menatahari"},"content":"package seedu.address.model.startup.exceptions;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"menatahari"},"content":"/**","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"menatahari"},"content":" * Signals that the operation is unable to find the specified startup.","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"menatahari"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"menatahari"},"content":"public class StartupNotFoundException extends RuntimeException {}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"menatahari":6}},{"path":"src/main/java/seedu/address/model/util/SampleDataUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.util;","lastModifiedDate":"2016-12-20"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-12-20"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-12-20"},{"lineNumber":9,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Address;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Email;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.FundingStage;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Industry;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Name;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Phone;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-14"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20"},{"lineNumber":22,"author":{"gitId":"menatahari"},"content":" public static Startup[] getSampleStartups() {","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"menatahari"},"content":" return new Startup[] {","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"menatahari"},"content":" new Startup(new Name(\"Alex Yeoh\"), new FundingStage(\"A\"), new Industry(\"Finance\"),","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"yeoshuheng"},"content":" new Phone(\"87438807\"), new Email(\"alexyeoh@example.com\"),","lastModifiedDate":"2024-02-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" new Address(\"Blk 30 Geylang Street 29, #06-40\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" getTagSet(\"friends\")),","lastModifiedDate":"2017-03-14"},{"lineNumber":28,"author":{"gitId":"menatahari"},"content":" new Startup(new Name(\"Bernice Yu\"), new FundingStage(\"B\"), new Industry(\"GreenTech\"),","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"yeoshuheng"},"content":" new Phone(\"99272758\"), new Email(\"berniceyu@example.com\"),","lastModifiedDate":"2024-02-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" new Address(\"Blk 30 Lorong 3 Serangoon Gardens, #07-18\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":31,"author":{"gitId":"-"},"content":" getTagSet(\"colleagues\", \"friends\")),","lastModifiedDate":"2017-03-14"},{"lineNumber":32,"author":{"gitId":"menatahari"},"content":" new Startup(new Name(\"Charlotte Oliveiro\"), new FundingStage(\"C\"), new Industry(\"Health\"),","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"yeoshuheng"},"content":" new Phone(\"93210283\"), new Email(\"charlotte@example.com\"),","lastModifiedDate":"2024-02-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" new Address(\"Blk 11 Ang Mo Kio Street 74, #11-04\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":35,"author":{"gitId":"-"},"content":" getTagSet(\"neighbours\")),","lastModifiedDate":"2017-03-14"},{"lineNumber":36,"author":{"gitId":"menatahari"},"content":" new Startup(new Name(\"David Li\"), new FundingStage(\"A\"), new Industry(\"Manufacturing\"),","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"yeoshuheng"},"content":" new Phone(\"91031282\"), new Email(\"lidavid@example.com\"),","lastModifiedDate":"2024-02-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" new Address(\"Blk 436 Serangoon Gardens Street 26, #16-43\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":39,"author":{"gitId":"-"},"content":" getTagSet(\"family\")),","lastModifiedDate":"2017-03-14"},{"lineNumber":40,"author":{"gitId":"menatahari"},"content":" new Startup(new Name(\"Irfan Ibrahim\"), new FundingStage(\"C\"), new Industry(\"Tech\"),","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"yeoshuheng"},"content":" new Phone(\"92492021\"), new Email(\"irfan@example.com\"),","lastModifiedDate":"2024-02-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" new Address(\"Blk 47 Tampines Street 20, #17-35\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":43,"author":{"gitId":"-"},"content":" getTagSet(\"classmates\")),","lastModifiedDate":"2017-03-14"},{"lineNumber":44,"author":{"gitId":"menatahari"},"content":" new Startup(new Name(\"Roy Balakrishnan\"), new FundingStage(\"A\"), new Industry(\"Food\"),","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"yeoshuheng"},"content":" new Phone(\"92624417\"), new Email(\"royb@example.com\"),","lastModifiedDate":"2024-02-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":" new Address(\"Blk 45 Aljunied Street 85, #11-31\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":47,"author":{"gitId":"-"},"content":" getTagSet(\"colleagues\"))","lastModifiedDate":"2017-03-14"},{"lineNumber":48,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20"},{"lineNumber":52,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07"},{"lineNumber":53,"author":{"gitId":"menatahari"},"content":" for (Startup sampleStartup : getSampleStartups()) {","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"menatahari"},"content":" sampleAb.addStartup(sampleStartup);","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":56,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14"},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2017-05-30"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2018-01-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":68,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20"}],"authorContributionMap":{"menatahari":17,"-":45,"yeoshuheng":6}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedStartup.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":13,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Address;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Email;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.FundingStage;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Industry;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Name;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Note;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Phone;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"menatahari"},"content":" * Jackson-friendly version of {@link Startup}.","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"menatahari"},"content":"class JsonAdaptedStartup {","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"menatahari"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Startup\u0027s %s field is missing!\";","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final String name;","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":32,"author":{"gitId":"yeoshuheng"},"content":" private final String industry;","lastModifiedDate":"2024-02-25"},{"lineNumber":33,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":34,"author":{"gitId":"yeoshuheng"},"content":" private final String fundingStage;","lastModifiedDate":"2024-02-25"},{"lineNumber":35,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private final String phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private final String address;","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"dwangwk"},"content":" private final String note;","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedTag\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-01-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"menatahari"},"content":" * Constructs a {@code JsonAdaptedStartup} with the given startup details.","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"menatahari"},"content":" public JsonAdaptedStartup(@JsonProperty(\"name\") String name, @JsonProperty(\"industry\") String industry,","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"yeoshuheng"},"content":" @JsonProperty(\"fundingStage\") String fundingStage, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2024-02-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @JsonProperty(\"email\") String email, @JsonProperty(\"address\") String address,","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"dwangwk"},"content":" @JsonProperty(\"note\") String note,","lastModifiedDate":"2024-03-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags) {","lastModifiedDate":"2023-05-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"yeoshuheng"},"content":" this.fundingStage \u003d fundingStage;","lastModifiedDate":"2024-02-25"},{"lineNumber":54,"author":{"gitId":"yeoshuheng"},"content":" this.industry \u003d industry;","lastModifiedDate":"2024-02-25"},{"lineNumber":55,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"dwangwk"},"content":" this.note \u003d note;","lastModifiedDate":"2024-03-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" if (tags !\u003d null) {","lastModifiedDate":"2023-01-09"},{"lineNumber":60,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2023-01-09"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"menatahari"},"content":" * Converts a given {@code Startup} into this class for Jackson use.","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"menatahari"},"content":" public JsonAdaptedStartup(Startup source) {","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" phone \u003d source.getPhone().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" address \u003d source.getAddress().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"dwangwk"},"content":" note \u003d source.getNote().value;","lastModifiedDate":"2024-03-13"},{"lineNumber":73,"author":{"gitId":"yeoshuheng"},"content":" industry \u003d source.getIndustry().value;","lastModifiedDate":"2024-02-25"},{"lineNumber":74,"author":{"gitId":"yeoshuheng"},"content":" fundingStage \u003d source.getFundingStage().value;","lastModifiedDate":"2024-02-25"},{"lineNumber":75,"author":{"gitId":"-"},"content":" tags.addAll(source.getTags().stream()","lastModifiedDate":"2023-01-09"},{"lineNumber":76,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":81,"author":{"gitId":"menatahari"},"content":" * Converts this Jackson-friendly adapted startup object into the model\u0027s {@code Startup} object.","lastModifiedDate":"2024-03-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":83,"author":{"gitId":"menatahari"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted startup.","lastModifiedDate":"2024-03-19"},{"lineNumber":84,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"menatahari"},"content":" public Startup toModelType() throws IllegalValueException {","lastModifiedDate":"2024-03-19"},{"lineNumber":86,"author":{"gitId":"menatahari"},"content":" final List\u003cTag\u003e startupTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":" for (JsonAdaptedTag tag : tags) {","lastModifiedDate":"2023-01-09"},{"lineNumber":88,"author":{"gitId":"menatahari"},"content":" startupTags.add(tag.toModelType());","lastModifiedDate":"2024-03-19"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":99,"author":{"gitId":"yeoshuheng"},"content":" if (industry \u003d\u003d null) {","lastModifiedDate":"2024-02-25"},{"lineNumber":100,"author":{"gitId":"yeoshuheng"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-02-25"},{"lineNumber":101,"author":{"gitId":"yeoshuheng"},"content":" Industry.class.getSimpleName()));","lastModifiedDate":"2024-02-25"},{"lineNumber":102,"author":{"gitId":"yeoshuheng"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":103,"author":{"gitId":"yeoshuheng"},"content":" if (!Industry.isValidIndustry(industry)) {","lastModifiedDate":"2024-02-25"},{"lineNumber":104,"author":{"gitId":"yeoshuheng"},"content":" throw new IllegalValueException(Industry.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-25"},{"lineNumber":105,"author":{"gitId":"yeoshuheng"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":106,"author":{"gitId":"yeoshuheng"},"content":" final Industry modelIndustry \u003d new Industry(industry);","lastModifiedDate":"2024-02-25"},{"lineNumber":107,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":108,"author":{"gitId":"yeoshuheng"},"content":" if (fundingStage \u003d\u003d null) {","lastModifiedDate":"2024-02-25"},{"lineNumber":109,"author":{"gitId":"yeoshuheng"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-02-25"},{"lineNumber":110,"author":{"gitId":"yeoshuheng"},"content":" FundingStage.class.getSimpleName()));","lastModifiedDate":"2024-02-25"},{"lineNumber":111,"author":{"gitId":"yeoshuheng"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":112,"author":{"gitId":"yeoshuheng"},"content":" if (!FundingStage.isValidFundingLevel(fundingStage)) {","lastModifiedDate":"2024-02-25"},{"lineNumber":113,"author":{"gitId":"yeoshuheng"},"content":" throw new IllegalValueException(FundingStage.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-25"},{"lineNumber":114,"author":{"gitId":"yeoshuheng"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":115,"author":{"gitId":"yeoshuheng"},"content":" final FundingStage modelFundingStage \u003d new FundingStage(fundingStage);","lastModifiedDate":"2024-02-25"},{"lineNumber":116,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":117,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":121,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":123,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":126,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":128,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":129,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":131,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":133,"author":{"gitId":"-"},"content":" if (address \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":134,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":136,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(address)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":137,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":139,"author":{"gitId":"-"},"content":" final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2018-08-13"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":141,"author":{"gitId":"dwangwk"},"content":" if (note \u003d\u003d null) {","lastModifiedDate":"2024-03-13"},{"lineNumber":142,"author":{"gitId":"dwangwk"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Note.class.getSimpleName()));","lastModifiedDate":"2024-03-13"},{"lineNumber":143,"author":{"gitId":"dwangwk"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":144,"author":{"gitId":"dwangwk"},"content":" if (!Note.isValidNote(note)) {","lastModifiedDate":"2024-03-13"},{"lineNumber":145,"author":{"gitId":"dwangwk"},"content":" throw new IllegalValueException(Note.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-20"},{"lineNumber":146,"author":{"gitId":"dwangwk"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":147,"author":{"gitId":"dwangwk"},"content":" final Note modelNote \u003d new Note(note);","lastModifiedDate":"2024-03-13"},{"lineNumber":148,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":149,"author":{"gitId":"menatahari"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(startupTags);","lastModifiedDate":"2024-03-19"},{"lineNumber":150,"author":{"gitId":"menatahari"},"content":" return new Startup(modelName, modelFundingStage, modelIndustry,","lastModifiedDate":"2024-03-19"},{"lineNumber":151,"author":{"gitId":"dwangwk"},"content":" modelPhone, modelEmail, modelAddress, modelTags, modelNote);","lastModifiedDate":"2024-03-13"},{"lineNumber":152,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":154,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"dwangwk":14,"menatahari":22,"-":90,"yeoshuheng":28}},{"path":"src/main/java/seedu/address/storage/JsonSerializableAddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonRootName;","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2018-08-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * An Immutable AddressBook that is serializable to JSON format.","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":"@JsonRootName(value \u003d \"addressbook\")","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"class JsonSerializableAddressBook {","lastModifiedDate":"2018-12-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"menatahari"},"content":" public static final String MESSAGE_DUPLICATE_STARTUP \u003d \"Startups list contains duplicate startup(s).\";","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"menatahari"},"content":" private final List\u003cJsonAdaptedStartup\u003e startups \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"menatahari"},"content":" * Constructs a {@code JsonSerializableAddressBook} with the given startups.","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"menatahari"},"content":" public JsonSerializableAddressBook(@JsonProperty(\"startups\") List\u003cJsonAdaptedStartup\u003e startups) {","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"menatahari"},"content":" this.startups.addAll(startups);","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Converts a given {@code ReadOnlyAddressBook} into this class for Jackson use.","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * @param source future changes to this will not affect the created {@code JsonSerializableAddressBook}.","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public JsonSerializableAddressBook(ReadOnlyAddressBook source) {","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"menatahari"},"content":" startups.addAll(source.getStartupList().stream().map(JsonAdaptedStartup::new).collect(Collectors.toList()));","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Converts this address book into the model\u0027s {@code AddressBook} object.","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated.","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public AddressBook toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"menatahari"},"content":" for (JsonAdaptedStartup jsonAdaptedStartup : startups) {","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"menatahari"},"content":" Startup startup \u003d jsonAdaptedStartup.toModelType();","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"menatahari"},"content":" if (addressBook.hasStartup(startup)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"menatahari"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_STARTUP);","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"menatahari"},"content":" addressBook.addStartup(startup);","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"menatahari":12,"-":48}},{"path":"src/main/java/seedu/address/ui/HelpWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-12-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2019-08-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2019-08-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.input.Clipboard;","lastModifiedDate":"2019-08-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.input.ClipboardContent;","lastModifiedDate":"2019-08-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Controller for a help page","lastModifiedDate":"2016-08-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class HelpWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-12-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":18,"author":{"gitId":"yespiggy"},"content":" public static final String USERGUIDE_URL \u003d \"https://ay2324s2-cs2103t-w09-2.github.io/tp/UserGuide.html\";","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String HELP_MESSAGE \u003d \"Refer to the user guide: \" + USERGUIDE_URL;","lastModifiedDate":"2019-08-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(HelpWindow.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"HelpWindow.fxml\";","lastModifiedDate":"2016-09-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-12-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private Button copyButton;","lastModifiedDate":"2019-08-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-08-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2019-08-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Label helpMessage;","lastModifiedDate":"2019-08-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-12-01"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-12-01"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * @param root Stage to use as the root of the HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-12-01"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public HelpWindow(Stage root) {","lastModifiedDate":"2017-12-01"},{"lineNumber":36,"author":{"gitId":"-"},"content":" super(FXML, root);","lastModifiedDate":"2017-12-01"},{"lineNumber":37,"author":{"gitId":"-"},"content":" helpMessage.setText(HELP_MESSAGE);","lastModifiedDate":"2019-08-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-12-01"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-12-01"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public HelpWindow() {","lastModifiedDate":"2017-12-01"},{"lineNumber":44,"author":{"gitId":"-"},"content":" this(new Stage());","lastModifiedDate":"2017-12-01"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-01"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-01"},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Shows the help window.","lastModifiedDate":"2017-08-16"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * @throws IllegalStateException","lastModifiedDate":"2017-08-16"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * \u003cul\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * if this method is called on a thread other than the JavaFX Application Thread.","lastModifiedDate":"2017-08-16"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * if this method is called during animation or layout processing.","lastModifiedDate":"2017-08-16"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * if this method is called on the primary stage.","lastModifiedDate":"2017-08-16"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * if {@code dialogStage} is already showing.","lastModifiedDate":"2017-08-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * \u003c/ul\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void show() {","lastModifiedDate":"2016-08-18"},{"lineNumber":66,"author":{"gitId":"-"},"content":" logger.fine(\"Showing help page about the application.\");","lastModifiedDate":"2016-12-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":" getRoot().show();","lastModifiedDate":"2018-02-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" getRoot().centerOnScreen();","lastModifiedDate":"2019-08-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-15"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * Returns true if the help window is currently being shown.","lastModifiedDate":"2018-03-15"},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-15"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public boolean isShowing() {","lastModifiedDate":"2018-03-15"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return getRoot().isShowing();","lastModifiedDate":"2018-03-15"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Hides the help window.","lastModifiedDate":"2018-12-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void hide() {","lastModifiedDate":"2018-12-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":" getRoot().hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-15"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Focuses on the help window.","lastModifiedDate":"2018-03-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void focus() {","lastModifiedDate":"2018-03-15"},{"lineNumber":89,"author":{"gitId":"-"},"content":" getRoot().requestFocus();","lastModifiedDate":"2018-03-15"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-08-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-08-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Copies the URL to the user guide to the clipboard.","lastModifiedDate":"2019-08-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-08-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2019-08-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":" private void copyUrl() {","lastModifiedDate":"2019-08-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":" final Clipboard clipboard \u003d Clipboard.getSystemClipboard();","lastModifiedDate":"2019-08-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" final ClipboardContent url \u003d new ClipboardContent();","lastModifiedDate":"2019-08-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" url.putString(USERGUIDE_URL);","lastModifiedDate":"2019-08-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":" clipboard.setContent(url);","lastModifiedDate":"2019-08-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-08-19"},{"lineNumber":102,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"yespiggy":1,"-":101}},{"path":"src/main/java/seedu/address/ui/MainWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-06-16"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.event.ActionEvent;","lastModifiedDate":"2016-12-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-08-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.MenuItem;","lastModifiedDate":"2016-08-26"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.control.TextInputControl;","lastModifiedDate":"2016-12-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyCombination;","lastModifiedDate":"2016-08-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyEvent;","lastModifiedDate":"2016-12-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.scene.layout.StackPane;","lastModifiedDate":"2017-05-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2016-09-28"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2017-06-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.Logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * The Main Window. Provides the basic application layout containing","lastModifiedDate":"2016-08-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * a menu bar and space where other JavaFX elements can be placed.","lastModifiedDate":"2016-08-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class MainWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-11-29"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"MainWindow.fxml\";","lastModifiedDate":"2016-08-18"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(getClass());","lastModifiedDate":"2018-08-14"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Stage primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // Independent Ui parts residing in this Ui container","lastModifiedDate":"2016-08-18"},{"lineNumber":34,"author":{"gitId":"menatahari"},"content":" private StartupListPanel startupListPanel;","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private ResultDisplay resultDisplay;","lastModifiedDate":"2018-12-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private HelpWindow helpWindow;","lastModifiedDate":"2018-03-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private StackPane commandBoxPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":42,"author":{"gitId":"-"},"content":" private MenuItem helpMenuItem;","lastModifiedDate":"2016-08-18"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":45,"author":{"gitId":"menatahari"},"content":" private StackPane startupListPanelPlaceholder;","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":48,"author":{"gitId":"-"},"content":" private StackPane resultDisplayPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":" private StackPane statusbarPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Creates a {@code MainWindow} with the given {@code Stage} and {@code Logic}.","lastModifiedDate":"2020-05-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public MainWindow(Stage primaryStage, Logic logic) {","lastModifiedDate":"2018-12-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" super(FXML, primaryStage);","lastModifiedDate":"2017-11-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // Set dependencies","lastModifiedDate":"2016-09-21"},{"lineNumber":60,"author":{"gitId":"-"},"content":" this.primaryStage \u003d primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":61,"author":{"gitId":"-"},"content":" this.logic \u003d logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":" // Configure the UI","lastModifiedDate":"2016-09-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":" setWindowDefaultSize(logic.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":66,"author":{"gitId":"-"},"content":" setAccelerators();","lastModifiedDate":"2016-09-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":68,"author":{"gitId":"-"},"content":" helpWindow \u003d new HelpWindow();","lastModifiedDate":"2018-03-15"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public Stage getPrimaryStage() {","lastModifiedDate":"2016-12-24"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return primaryStage;","lastModifiedDate":"2016-12-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":" private void setAccelerators() {","lastModifiedDate":"2016-09-21"},{"lineNumber":76,"author":{"gitId":"-"},"content":" setAccelerator(helpMenuItem, KeyCombination.valueOf(\"F1\"));","lastModifiedDate":"2016-12-18"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":79,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-18"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * Sets the accelerator of a MenuItem.","lastModifiedDate":"2016-12-18"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * @param keyCombination the KeyCombination value of the accelerator","lastModifiedDate":"2016-12-18"},{"lineNumber":82,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":83,"author":{"gitId":"-"},"content":" private void setAccelerator(MenuItem menuItem, KeyCombination keyCombination) {","lastModifiedDate":"2016-12-18"},{"lineNumber":84,"author":{"gitId":"-"},"content":" menuItem.setAccelerator(keyCombination);","lastModifiedDate":"2016-12-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-12-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * TODO: the code below can be removed once the bug reported here","lastModifiedDate":"2016-12-18"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * https://bugs.openjdk.java.net/browse/JDK-8131666","lastModifiedDate":"2016-12-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * is fixed in later version of SDK.","lastModifiedDate":"2016-12-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * According to the bug report, TextInputControl (TextField, TextArea) will","lastModifiedDate":"2016-12-18"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * consume function-key events. Because CommandBox contains a TextField, and","lastModifiedDate":"2016-12-18"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * ResultDisplay contains a TextArea, thus some accelerators (e.g F1) will","lastModifiedDate":"2016-12-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * not work when the focus is in them because the key event is consumed by","lastModifiedDate":"2016-12-18"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * the TextInputControl(s).","lastModifiedDate":"2016-12-18"},{"lineNumber":96,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * For now, we add following event filter to capture such key events and open","lastModifiedDate":"2016-12-18"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * help window purposely so to support accelerators even when focus is","lastModifiedDate":"2016-12-18"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * in CommandBox or ResultDisplay.","lastModifiedDate":"2016-12-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":101,"author":{"gitId":"-"},"content":" getRoot().addEventFilter(KeyEvent.KEY_PRESSED, event -\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":102,"author":{"gitId":"-"},"content":" if (event.getTarget() instanceof TextInputControl \u0026\u0026 keyCombination.match(event)) {","lastModifiedDate":"2016-12-18"},{"lineNumber":103,"author":{"gitId":"-"},"content":" menuItem.getOnAction().handle(new ActionEvent());","lastModifiedDate":"2016-12-18"},{"lineNumber":104,"author":{"gitId":"-"},"content":" event.consume();","lastModifiedDate":"2016-12-18"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":106,"author":{"gitId":"-"},"content":" });","lastModifiedDate":"2016-12-18"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":109,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":110,"author":{"gitId":"-"},"content":" * Fills up all the placeholders of this window.","lastModifiedDate":"2017-08-16"},{"lineNumber":111,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":112,"author":{"gitId":"-"},"content":" void fillInnerParts() {","lastModifiedDate":"2016-09-21"},{"lineNumber":113,"author":{"gitId":"menatahari"},"content":" startupListPanel \u003d new StartupListPanel(logic.getFilteredStartupList());","lastModifiedDate":"2024-03-19"},{"lineNumber":114,"author":{"gitId":"menatahari"},"content":" startupListPanelPlaceholder.getChildren().add(startupListPanel.getRoot());","lastModifiedDate":"2024-03-19"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":116,"author":{"gitId":"-"},"content":" resultDisplay \u003d new ResultDisplay();","lastModifiedDate":"2018-12-09"},{"lineNumber":117,"author":{"gitId":"-"},"content":" resultDisplayPlaceholder.getChildren().add(resultDisplay.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":" StatusBarFooter statusBarFooter \u003d new StatusBarFooter(logic.getAddressBookFilePath());","lastModifiedDate":"2019-01-25"},{"lineNumber":120,"author":{"gitId":"-"},"content":" statusbarPlaceholder.getChildren().add(statusBarFooter.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":" CommandBox commandBox \u003d new CommandBox(this::executeCommand);","lastModifiedDate":"2019-01-25"},{"lineNumber":123,"author":{"gitId":"-"},"content":" commandBoxPlaceholder.getChildren().add(commandBox.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":126,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":127,"author":{"gitId":"-"},"content":" * Sets the default size based on {@code guiSettings}.","lastModifiedDate":"2018-11-27"},{"lineNumber":128,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":129,"author":{"gitId":"-"},"content":" private void setWindowDefaultSize(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":130,"author":{"gitId":"-"},"content":" primaryStage.setHeight(guiSettings.getWindowHeight());","lastModifiedDate":"2018-11-27"},{"lineNumber":131,"author":{"gitId":"-"},"content":" primaryStage.setWidth(guiSettings.getWindowWidth());","lastModifiedDate":"2018-11-27"},{"lineNumber":132,"author":{"gitId":"-"},"content":" if (guiSettings.getWindowCoordinates() !\u003d null) {","lastModifiedDate":"2018-11-27"},{"lineNumber":133,"author":{"gitId":"-"},"content":" primaryStage.setX(guiSettings.getWindowCoordinates().getX());","lastModifiedDate":"2018-11-27"},{"lineNumber":134,"author":{"gitId":"-"},"content":" primaryStage.setY(guiSettings.getWindowCoordinates().getY());","lastModifiedDate":"2018-11-27"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":138,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":139,"author":{"gitId":"-"},"content":" * Opens the help window or focuses on it if it\u0027s already opened.","lastModifiedDate":"2018-03-15"},{"lineNumber":140,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":141,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":142,"author":{"gitId":"-"},"content":" public void handleHelp() {","lastModifiedDate":"2016-08-31"},{"lineNumber":143,"author":{"gitId":"-"},"content":" if (!helpWindow.isShowing()) {","lastModifiedDate":"2018-03-15"},{"lineNumber":144,"author":{"gitId":"-"},"content":" helpWindow.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":145,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-15"},{"lineNumber":146,"author":{"gitId":"-"},"content":" helpWindow.focus();","lastModifiedDate":"2018-03-15"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":150,"author":{"gitId":"-"},"content":" void show() {","lastModifiedDate":"2016-10-15"},{"lineNumber":151,"author":{"gitId":"-"},"content":" primaryStage.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":152,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":154,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":155,"author":{"gitId":"-"},"content":" * Closes the application.","lastModifiedDate":"2016-08-18"},{"lineNumber":156,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":157,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":158,"author":{"gitId":"-"},"content":" private void handleExit() {","lastModifiedDate":"2016-08-18"},{"lineNumber":159,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(primaryStage.getWidth(), primaryStage.getHeight(),","lastModifiedDate":"2018-12-08"},{"lineNumber":160,"author":{"gitId":"-"},"content":" (int) primaryStage.getX(), (int) primaryStage.getY());","lastModifiedDate":"2018-12-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":" logic.setGuiSettings(guiSettings);","lastModifiedDate":"2018-12-08"},{"lineNumber":162,"author":{"gitId":"-"},"content":" helpWindow.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":163,"author":{"gitId":"-"},"content":" primaryStage.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-25"},{"lineNumber":166,"author":{"gitId":"menatahari"},"content":" public StartupListPanel getStartupListPanel() {","lastModifiedDate":"2024-03-19"},{"lineNumber":167,"author":{"gitId":"menatahari"},"content":" return startupListPanel;","lastModifiedDate":"2024-03-19"},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-25"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":170,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":171,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2018-12-09"},{"lineNumber":172,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09"},{"lineNumber":173,"author":{"gitId":"-"},"content":" * @see seedu.address.logic.Logic#execute(String)","lastModifiedDate":"2018-12-09"},{"lineNumber":174,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":175,"author":{"gitId":"-"},"content":" private CommandResult executeCommand(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2018-12-09"},{"lineNumber":176,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":177,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d logic.execute(commandText);","lastModifiedDate":"2018-12-09"},{"lineNumber":178,"author":{"gitId":"-"},"content":" logger.info(\"Result: \" + commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":179,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":181,"author":{"gitId":"-"},"content":" if (commandResult.isShowHelp()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":182,"author":{"gitId":"-"},"content":" handleHelp();","lastModifiedDate":"2018-12-09"},{"lineNumber":183,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":185,"author":{"gitId":"-"},"content":" if (commandResult.isExit()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":186,"author":{"gitId":"-"},"content":" handleExit();","lastModifiedDate":"2018-12-09"},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":189,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":190,"author":{"gitId":"-"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2018-12-09"},{"lineNumber":191,"author":{"gitId":"-"},"content":" logger.info(\"An error occurred while executing command: \" + commandText);","lastModifiedDate":"2023-06-13"},{"lineNumber":192,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(e.getMessage());","lastModifiedDate":"2018-12-09"},{"lineNumber":193,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2018-12-09"},{"lineNumber":194,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":196,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"menatahari":6,"-":190}},{"path":"src/main/java/seedu/address/ui/StartupCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Comparator;","lastModifiedDate":"2019-01-02"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-01-02"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-09-21"},{"lineNumber":6,"author":{"gitId":"dwangwk"},"content":"import javafx.geometry.Insets;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"dwangwk"},"content":"import javafx.geometry.Pos;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2016-09-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2016-12-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2016-09-21"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24"},{"lineNumber":12,"author":{"gitId":"dwangwk"},"content":"import javafx.scene.layout.VBox;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":16,"author":{"gitId":"menatahari"},"content":" * An UI component that displays information of a {@code Startup}.","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":18,"author":{"gitId":"menatahari"},"content":"public class StartupCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":20,"author":{"gitId":"menatahari"},"content":" private static final String FXML \u003d \"StartupListCard.fxml\";","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2017-03-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2017-03-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2017-03-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * @see \u003ca href\u003d\"https://github.com/se-edu/addressbook-level4/issues/336\"\u003eThe issue on AddressBook level 4\u003c/a\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":30,"author":{"gitId":"menatahari"},"content":" public final Startup startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private HBox cardPane;","lastModifiedDate":"2016-09-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private Label name;","lastModifiedDate":"2016-09-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private Label id;","lastModifiedDate":"2016-09-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private Label phone;","lastModifiedDate":"2016-09-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" private Label address;","lastModifiedDate":"2016-09-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":43,"author":{"gitId":"-"},"content":" private Label email;","lastModifiedDate":"2016-09-21"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":45,"author":{"gitId":"yespiggy"},"content":" private FlowPane industryAndFundingStage;","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"dwangwk"},"content":" @FXML","lastModifiedDate":"2024-03-13"},{"lineNumber":48,"author":{"gitId":"dwangwk"},"content":" private Label note; // Add this field for note","lastModifiedDate":"2024-03-13"},{"lineNumber":49,"author":{"gitId":"yespiggy"},"content":" @FXML","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"-"},"content":" private FlowPane tags;","lastModifiedDate":"2016-12-18"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":52,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":53,"author":{"gitId":"menatahari"},"content":" * Creates a {@code StartupCode} with the given {@code Startup} and index to display.","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":55,"author":{"gitId":"menatahari"},"content":" public StartupCard(Startup startup, int displayedIndex) {","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":57,"author":{"gitId":"menatahari"},"content":" this.startup \u003d startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21"},{"lineNumber":59,"author":{"gitId":"menatahari"},"content":" name.setText(startup.getName().fullName);","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"menatahari"},"content":" phone.setText(startup.getPhone().value);","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"menatahari"},"content":" address.setText(startup.getAddress().value);","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"menatahari"},"content":" email.setText(startup.getEmail().value);","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":64,"author":{"gitId":"menatahari"},"content":" String fundingLevel \u003d startup.getFundingStage().value;","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"yeoshuheng"},"content":" if (fundingLevel.equals(\"PS\")) {","lastModifiedDate":"2024-03-15"},{"lineNumber":66,"author":{"gitId":"yeoshuheng"},"content":" fundingLevel \u003d \"PRE-SEED\";","lastModifiedDate":"2024-03-15"},{"lineNumber":67,"author":{"gitId":"yeoshuheng"},"content":" } else if (fundingLevel.equals(\"S\")) {","lastModifiedDate":"2024-03-15"},{"lineNumber":68,"author":{"gitId":"yeoshuheng"},"content":" fundingLevel \u003d \"SEED\";","lastModifiedDate":"2024-03-15"},{"lineNumber":69,"author":{"gitId":"yeoshuheng"},"content":" } else {","lastModifiedDate":"2024-03-15"},{"lineNumber":70,"author":{"gitId":"yeoshuheng"},"content":" fundingLevel \u003d \"SERIES \" + fundingLevel;","lastModifiedDate":"2024-03-15"},{"lineNumber":71,"author":{"gitId":"yeoshuheng"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":72,"author":{"gitId":"yespiggy"},"content":" industryAndFundingStage.getChildren().addAll(","lastModifiedDate":"2024-03-11"},{"lineNumber":73,"author":{"gitId":"menatahari"},"content":" new Label(startup.getIndustry().value),","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"yeoshuheng"},"content":" new Label(fundingLevel));","lastModifiedDate":"2024-03-15"},{"lineNumber":75,"author":{"gitId":"dwangwk"},"content":" createNoteSection();","lastModifiedDate":"2024-03-13"},{"lineNumber":76,"author":{"gitId":"menatahari"},"content":" startup.getTags().stream()","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"-"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.tagName))","lastModifiedDate":"2019-01-02"},{"lineNumber":78,"author":{"gitId":"-"},"content":" .forEach(tag -\u003e tags.getChildren().add(new Label(tag.tagName)));","lastModifiedDate":"2019-01-02"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":80,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":81,"author":{"gitId":"dwangwk"},"content":" private void createNoteSection() {","lastModifiedDate":"2024-03-13"},{"lineNumber":82,"author":{"gitId":"dwangwk"},"content":" // Create note label","lastModifiedDate":"2024-03-13"},{"lineNumber":83,"author":{"gitId":"menatahari"},"content":" note \u003d new Label(startup.getNote().value);","lastModifiedDate":"2024-03-19"},{"lineNumber":84,"author":{"gitId":"dwangwk"},"content":" note.setVisible(true); // Note is always visible","lastModifiedDate":"2024-03-13"},{"lineNumber":85,"author":{"gitId":"dwangwk"},"content":" note.setWrapText(true); // Allow text wrapping if too long","lastModifiedDate":"2024-03-13"},{"lineNumber":86,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":87,"author":{"gitId":"dwangwk"},"content":" // Layout note section","lastModifiedDate":"2024-03-13"},{"lineNumber":88,"author":{"gitId":"dwangwk"},"content":" VBox noteSection \u003d new VBox();","lastModifiedDate":"2024-03-13"},{"lineNumber":89,"author":{"gitId":"dwangwk"},"content":" noteSection.setAlignment(Pos.TOP_LEFT); // Align content to the top left","lastModifiedDate":"2024-03-13"},{"lineNumber":90,"author":{"gitId":"dwangwk"},"content":" noteSection.setPadding(new Insets(10)); // Add padding around the note section","lastModifiedDate":"2024-03-13"},{"lineNumber":91,"author":{"gitId":"dwangwk"},"content":" noteSection.setPrefWidth(200); // Set preferred width for the note section","lastModifiedDate":"2024-03-13"},{"lineNumber":92,"author":{"gitId":"dwangwk"},"content":" noteSection.setStyle(\"-fx-border-color: Transparent;\"","lastModifiedDate":"2024-03-13"},{"lineNumber":93,"author":{"gitId":"dwangwk"},"content":" + \"-fx-border-width: 1px;\"); // Add border around the note section","lastModifiedDate":"2024-03-13"},{"lineNumber":94,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":95,"author":{"gitId":"dwangwk"},"content":" // Add note label to the note section","lastModifiedDate":"2024-03-13"},{"lineNumber":96,"author":{"gitId":"dwangwk"},"content":" noteSection.getChildren().addAll(new Label(\"\"), note);","lastModifiedDate":"2024-03-13"},{"lineNumber":97,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":98,"author":{"gitId":"menatahari"},"content":" // Add some padding between note section and startup card box","lastModifiedDate":"2024-03-19"},{"lineNumber":99,"author":{"gitId":"dwangwk"},"content":" VBox.setMargin(noteSection, new Insets(10));","lastModifiedDate":"2024-03-13"},{"lineNumber":100,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":101,"author":{"gitId":"dwangwk"},"content":" // Add note section to cardPane","lastModifiedDate":"2024-03-13"},{"lineNumber":102,"author":{"gitId":"dwangwk"},"content":" cardPane.getChildren().add(noteSection);","lastModifiedDate":"2024-03-13"},{"lineNumber":103,"author":{"gitId":"dwangwk"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":104,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"dwangwk":30,"menatahari":17,"yespiggy":3,"-":46,"yeoshuheng":9}},{"path":"src/main/java/seedu/address/ui/StartupListPanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"menatahari"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"menatahari"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"menatahari"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"menatahari"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"menatahari"},"content":"import javafx.scene.control.ListCell;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"menatahari"},"content":"import javafx.scene.control.ListView;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"menatahari"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"menatahari"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"menatahari"},"content":"/**","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"menatahari"},"content":" * Panel containing the list of startups.","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"menatahari"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"menatahari"},"content":"public class StartupListPanel extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"menatahari"},"content":" private static final String FXML \u003d \"StartupListPanel.fxml\";","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"menatahari"},"content":" private final Logger logger \u003d LogsCenter.getLogger(StartupListPanel.class);","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"menatahari"},"content":" @FXML","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"menatahari"},"content":" private ListView\u003cStartup\u003e startupListView;","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"menatahari"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"menatahari"},"content":" * Creates a {@code StartupListPanel} with the given {@code ObservableList}.","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"menatahari"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"menatahari"},"content":" public StartupListPanel(ObservableList\u003cStartup\u003e startupList) {","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"menatahari"},"content":" super(FXML);","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"menatahari"},"content":" startupListView.setItems(startupList);","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"menatahari"},"content":" startupListView.setCellFactory(listView -\u003e new StartupListViewCell());","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"menatahari"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"menatahari"},"content":" * Custom {@code ListCell} that displays the graphics of a {@code Startup} using a {@code StartupCard}.","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"menatahari"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"menatahari"},"content":" class StartupListViewCell extends ListCell\u003cStartup\u003e {","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"menatahari"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"menatahari"},"content":" protected void updateItem(Startup startup, boolean empty) {","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"menatahari"},"content":" super.updateItem(startup, empty);","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"menatahari"},"content":" if (empty || startup \u003d\u003d null) {","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"menatahari"},"content":" setGraphic(null);","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"menatahari"},"content":" setText(null);","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"menatahari"},"content":" } else {","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"menatahari"},"content":" setGraphic(new StartupCard(startup, getIndex() + 1).getRoot());","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"menatahari"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"menatahari":49}},{"path":"src/main/java/seedu/address/ui/UiManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.application.Platform;","lastModifiedDate":"2016-08-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Alert;","lastModifiedDate":"2016-08-18"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.Alert.AlertType;","lastModifiedDate":"2016-08-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2016-08-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.MainApp;","lastModifiedDate":"2016-08-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2016-09-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.Logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * The manager of the UI component.","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class UiManager implements Ui {","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String ALERT_DIALOG_PANE_FIELD_ID \u003d \"alertDialogPane\";","lastModifiedDate":"2017-04-01"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(UiManager.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":23,"author":{"gitId":"menatahari"},"content":" private static final String ICON_APPLICATION \u003d \"/images/capital_connect.png\";","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private MainWindow mainWindow;","lastModifiedDate":"2016-08-18"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Creates a {@code UiManager} with the given {@code Logic}.","lastModifiedDate":"2020-05-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public UiManager(Logic logic) {","lastModifiedDate":"2018-12-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" this.logic \u003d logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public void start(Stage primaryStage) {","lastModifiedDate":"2016-09-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" logger.info(\"Starting UI...\");","lastModifiedDate":"2016-09-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":" //Set the application icon.","lastModifiedDate":"2016-08-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":" primaryStage.getIcons().add(getImage(ICON_APPLICATION));","lastModifiedDate":"2016-08-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":42,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-08-18"},{"lineNumber":43,"author":{"gitId":"-"},"content":" mainWindow \u003d new MainWindow(primaryStage, logic);","lastModifiedDate":"2018-12-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" mainWindow.show(); //This should be called before creating other UI parts","lastModifiedDate":"2016-08-18"},{"lineNumber":45,"author":{"gitId":"-"},"content":" mainWindow.fillInnerParts();","lastModifiedDate":"2016-08-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" } catch (Throwable e) {","lastModifiedDate":"2016-08-18"},{"lineNumber":48,"author":{"gitId":"-"},"content":" logger.severe(StringUtil.getDetails(e));","lastModifiedDate":"2016-09-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":" showFatalErrorDialogAndShutdown(\"Fatal error during initializing\", e);","lastModifiedDate":"2016-08-18"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":53,"author":{"gitId":"-"},"content":" private Image getImage(String imagePath) {","lastModifiedDate":"2016-08-18"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return new Image(MainApp.class.getResourceAsStream(imagePath));","lastModifiedDate":"2016-08-18"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":57,"author":{"gitId":"-"},"content":" void showAlertDialogAndWait(Alert.AlertType type, String title, String headerText, String contentText) {","lastModifiedDate":"2016-09-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" showAlertDialogAndWait(mainWindow.getPrimaryStage(), type, title, headerText, contentText);","lastModifiedDate":"2016-08-18"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Shows an alert dialog on {@code owner} with the given parameters.","lastModifiedDate":"2017-08-16"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * This method only returns after the user has closed the alert dialog.","lastModifiedDate":"2017-08-16"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":" private static void showAlertDialogAndWait(Stage owner, AlertType type, String title, String headerText,","lastModifiedDate":"2016-09-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":" String contentText) {","lastModifiedDate":"2016-08-18"},{"lineNumber":67,"author":{"gitId":"-"},"content":" final Alert alert \u003d new Alert(type);","lastModifiedDate":"2016-08-18"},{"lineNumber":68,"author":{"gitId":"-"},"content":" alert.getDialogPane().getStylesheets().add(\"view/DarkTheme.css\");","lastModifiedDate":"2016-08-20"},{"lineNumber":69,"author":{"gitId":"-"},"content":" alert.initOwner(owner);","lastModifiedDate":"2016-08-18"},{"lineNumber":70,"author":{"gitId":"-"},"content":" alert.setTitle(title);","lastModifiedDate":"2016-08-18"},{"lineNumber":71,"author":{"gitId":"-"},"content":" alert.setHeaderText(headerText);","lastModifiedDate":"2016-08-18"},{"lineNumber":72,"author":{"gitId":"-"},"content":" alert.setContentText(contentText);","lastModifiedDate":"2016-08-18"},{"lineNumber":73,"author":{"gitId":"-"},"content":" alert.getDialogPane().setId(ALERT_DIALOG_PANE_FIELD_ID);","lastModifiedDate":"2016-10-12"},{"lineNumber":74,"author":{"gitId":"-"},"content":" alert.showAndWait();","lastModifiedDate":"2016-08-18"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * Shows an error alert dialog with {@code title} and error message, {@code e},","lastModifiedDate":"2017-08-16"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * and exits the application after the user has closed the alert dialog.","lastModifiedDate":"2017-08-16"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":81,"author":{"gitId":"-"},"content":" private void showFatalErrorDialogAndShutdown(String title, Throwable e) {","lastModifiedDate":"2016-09-21"},{"lineNumber":82,"author":{"gitId":"-"},"content":" logger.severe(title + \" \" + e.getMessage() + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-21"},{"lineNumber":83,"author":{"gitId":"-"},"content":" showAlertDialogAndWait(Alert.AlertType.ERROR, title, e.getMessage(), e.toString());","lastModifiedDate":"2016-08-18"},{"lineNumber":84,"author":{"gitId":"-"},"content":" Platform.exit();","lastModifiedDate":"2016-08-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":" System.exit(1);","lastModifiedDate":"2016-08-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-25"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"menatahari":1,"-":87}},{"path":"src/main/resources/view/DarkTheme.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":".background {","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":" background-color: #383838; /* Used in the default.html file */","lastModifiedDate":"2017-03-02"},{"lineNumber":4,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":".label {","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":" -fx-text-fill: #555555;","lastModifiedDate":"2016-08-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":".label-bright {","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":".label-header {","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" -fx-font-size: 32pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":".text-field {","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" -fx-font-size: 12pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":".tab-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":".tab-pane .tab-header-area {","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" -fx-min-height: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" -fx-max-height: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":".table-view {","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" -fx-base: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" -fx-control-inner-background: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" -fx-table-cell-border-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" -fx-table-header-border-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" -fx-padding: 5;","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":".table-view .column-header-background {","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":".table-view .column-header, .table-view .filler {","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" -fx-size: 35;","lastModifiedDate":"2016-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" -fx-border-width: 0 0 1 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" -fx-border-color:","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" derive(-fx-base, 80%)","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" -fx-border-insets: 0 10 1 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":".table-view .column-header .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" -fx-font-size: 20pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" -fx-alignment: center-left;","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":".table-view:focused .table-row-cell:filled:focused:selected {","lastModifiedDate":"2016-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":".split-pane:horizontal .split-pane-divider {","lastModifiedDate":"2016-08-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02"},{"lineNumber":81,"author":{"gitId":"-"},"content":" -fx-border-color: transparent transparent transparent #4d4d4d;","lastModifiedDate":"2017-03-02"},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":84,"author":{"gitId":"-"},"content":".split-pane {","lastModifiedDate":"2016-08-15"},{"lineNumber":85,"author":{"gitId":"-"},"content":" -fx-border-radius: 1;","lastModifiedDate":"2016-08-15"},{"lineNumber":86,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2016-08-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":".list-view {","lastModifiedDate":"2017-03-02"},{"lineNumber":91,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":92,"author":{"gitId":"-"},"content":" -fx-padding: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":93,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2018-01-10"},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":96,"author":{"gitId":"-"},"content":".list-cell {","lastModifiedDate":"2016-08-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":" -fx-label-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":" -fx-graphic-text-gap : 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":".list-cell:filled:even {","lastModifiedDate":"2017-03-02"},{"lineNumber":103,"author":{"gitId":"-"},"content":" -fx-background-color: #3c3e3f;","lastModifiedDate":"2017-03-02"},{"lineNumber":104,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":106,"author":{"gitId":"-"},"content":".list-cell:filled:odd {","lastModifiedDate":"2017-03-02"},{"lineNumber":107,"author":{"gitId":"-"},"content":" -fx-background-color: #515658;","lastModifiedDate":"2017-03-02"},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":110,"author":{"gitId":"-"},"content":".list-cell:filled:selected {","lastModifiedDate":"2017-03-02"},{"lineNumber":111,"author":{"gitId":"-"},"content":" -fx-background-color: #424d5f;","lastModifiedDate":"2017-03-02"},{"lineNumber":112,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":114,"author":{"gitId":"-"},"content":".list-cell:filled:selected #cardPane {","lastModifiedDate":"2017-03-02"},{"lineNumber":115,"author":{"gitId":"-"},"content":" -fx-border-color: #3e7b91;","lastModifiedDate":"2017-03-02"},{"lineNumber":116,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02"},{"lineNumber":117,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":119,"author":{"gitId":"-"},"content":".list-cell .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":121,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":".cell_big_label {","lastModifiedDate":"2016-08-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":" -fx-font-size: 16px;","lastModifiedDate":"2016-08-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":".cell_small_label {","lastModifiedDate":"2016-08-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\";","lastModifiedDate":"2022-01-13"},{"lineNumber":131,"author":{"gitId":"-"},"content":" -fx-font-size: 13px;","lastModifiedDate":"2017-03-02"},{"lineNumber":132,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":".stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":136,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":137,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":".pane-with-border {","lastModifiedDate":"2017-05-15"},{"lineNumber":140,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-05-09"},{"lineNumber":141,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 10%);","lastModifiedDate":"2017-05-09"},{"lineNumber":142,"author":{"gitId":"-"},"content":" -fx-border-top-width: 1px;","lastModifiedDate":"2017-05-09"},{"lineNumber":143,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-09"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":145,"author":{"gitId":"-"},"content":".status-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":146,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2018-12-08"},{"lineNumber":147,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":149,"author":{"gitId":"-"},"content":".result-display {","lastModifiedDate":"2016-09-14"},{"lineNumber":150,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2017-03-02"},{"lineNumber":151,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":152,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02"},{"lineNumber":153,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":154,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":156,"author":{"gitId":"-"},"content":".result-display .label {","lastModifiedDate":"2016-09-14"},{"lineNumber":157,"author":{"gitId":"-"},"content":" -fx-text-fill: black !important;","lastModifiedDate":"2016-09-14"},{"lineNumber":158,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":160,"author":{"gitId":"-"},"content":".status-bar .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":162,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":163,"author":{"gitId":"-"},"content":" -fx-padding: 4px;","lastModifiedDate":"2018-12-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":" -fx-pref-height: 30px;","lastModifiedDate":"2018-12-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":".status-bar-with-border {","lastModifiedDate":"2016-08-08"},{"lineNumber":168,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":169,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15"},{"lineNumber":170,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08"},{"lineNumber":171,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":173,"author":{"gitId":"-"},"content":".status-bar-with-border .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":174,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":175,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":177,"author":{"gitId":"-"},"content":".grid-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":178,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":179,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":180,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08"},{"lineNumber":181,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":183,"author":{"gitId":"-"},"content":".grid-pane .stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":184,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":185,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":187,"author":{"gitId":"-"},"content":".context-menu {","lastModifiedDate":"2016-08-08"},{"lineNumber":188,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15"},{"lineNumber":189,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":191,"author":{"gitId":"-"},"content":".context-menu .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":192,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":193,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":195,"author":{"gitId":"-"},"content":".menu-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":196,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":197,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":199,"author":{"gitId":"-"},"content":".menu-bar .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":200,"author":{"gitId":"-"},"content":" -fx-font-size: 14pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":201,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":202,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":203,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08"},{"lineNumber":204,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":206,"author":{"gitId":"-"},"content":".menu .left-container {","lastModifiedDate":"2016-08-08"},{"lineNumber":207,"author":{"gitId":"-"},"content":" -fx-background-color: black;","lastModifiedDate":"2016-08-08"},{"lineNumber":208,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":210,"author":{"gitId":"-"},"content":"/*","lastModifiedDate":"2016-08-08"},{"lineNumber":211,"author":{"gitId":"-"},"content":" * Metro style Push Button","lastModifiedDate":"2016-08-08"},{"lineNumber":212,"author":{"gitId":"-"},"content":" * Author: Pedro Duque Vieira","lastModifiedDate":"2016-08-08"},{"lineNumber":213,"author":{"gitId":"-"},"content":" * http://pixelduke.wordpress.com/2012/10/23/jmetro-windows-8-controls-on-java/","lastModifiedDate":"2016-08-08"},{"lineNumber":214,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":215,"author":{"gitId":"-"},"content":".button {","lastModifiedDate":"2016-08-08"},{"lineNumber":216,"author":{"gitId":"-"},"content":" -fx-padding: 5 22 5 22;","lastModifiedDate":"2016-08-08"},{"lineNumber":217,"author":{"gitId":"-"},"content":" -fx-border-color: #e2e2e2;","lastModifiedDate":"2016-08-08"},{"lineNumber":218,"author":{"gitId":"-"},"content":" -fx-border-width: 2;","lastModifiedDate":"2016-08-08"},{"lineNumber":219,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":220,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":221,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\", Helvetica, Arial, sans-serif;","lastModifiedDate":"2022-01-13"},{"lineNumber":222,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":223,"author":{"gitId":"-"},"content":" -fx-text-fill: #d8d8d8;","lastModifiedDate":"2016-08-08"},{"lineNumber":224,"author":{"gitId":"-"},"content":" -fx-background-insets: 0 0 0 0, 0, 1, 2;","lastModifiedDate":"2016-08-08"},{"lineNumber":225,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":227,"author":{"gitId":"-"},"content":".button:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":228,"author":{"gitId":"-"},"content":" -fx-background-color: #3a3a3a;","lastModifiedDate":"2016-08-08"},{"lineNumber":229,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":231,"author":{"gitId":"-"},"content":".button:pressed, .button:default:hover:pressed {","lastModifiedDate":"2016-08-08"},{"lineNumber":232,"author":{"gitId":"-"},"content":" -fx-background-color: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":233,"author":{"gitId":"-"},"content":" -fx-text-fill: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":234,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":236,"author":{"gitId":"-"},"content":".button:focused {","lastModifiedDate":"2016-08-08"},{"lineNumber":237,"author":{"gitId":"-"},"content":" -fx-border-color: white, white;","lastModifiedDate":"2016-08-08"},{"lineNumber":238,"author":{"gitId":"-"},"content":" -fx-border-width: 1, 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":239,"author":{"gitId":"-"},"content":" -fx-border-style: solid, segments(1, 1);","lastModifiedDate":"2016-08-08"},{"lineNumber":240,"author":{"gitId":"-"},"content":" -fx-border-radius: 0, 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":241,"author":{"gitId":"-"},"content":" -fx-border-insets: 1 1 1 1, 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":242,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":244,"author":{"gitId":"-"},"content":".button:disabled, .button:default:disabled {","lastModifiedDate":"2016-08-08"},{"lineNumber":245,"author":{"gitId":"-"},"content":" -fx-opacity: 0.4;","lastModifiedDate":"2016-08-08"},{"lineNumber":246,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":247,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":248,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":250,"author":{"gitId":"-"},"content":".button:default {","lastModifiedDate":"2016-08-08"},{"lineNumber":251,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08"},{"lineNumber":252,"author":{"gitId":"-"},"content":" -fx-text-fill: #ffffff;","lastModifiedDate":"2016-08-08"},{"lineNumber":253,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":255,"author":{"gitId":"-"},"content":".button:default:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":256,"author":{"gitId":"-"},"content":" -fx-background-color: derive(-fx-focus-color, 30%);","lastModifiedDate":"2016-08-08"},{"lineNumber":257,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":259,"author":{"gitId":"-"},"content":".dialog-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":260,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":261,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":263,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.button-bar \u003e *.container {","lastModifiedDate":"2016-08-08"},{"lineNumber":264,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":265,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":266,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":267,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.label.content {","lastModifiedDate":"2016-08-08"},{"lineNumber":268,"author":{"gitId":"-"},"content":" -fx-font-size: 14px;","lastModifiedDate":"2016-08-08"},{"lineNumber":269,"author":{"gitId":"-"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2016-08-08"},{"lineNumber":270,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":271,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":273,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel {","lastModifiedDate":"2016-08-08"},{"lineNumber":274,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15"},{"lineNumber":275,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":277,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel *.label {","lastModifiedDate":"2016-08-08"},{"lineNumber":278,"author":{"gitId":"-"},"content":" -fx-font-size: 18px;","lastModifiedDate":"2016-08-08"},{"lineNumber":279,"author":{"gitId":"-"},"content":" -fx-font-style: italic;","lastModifiedDate":"2016-08-08"},{"lineNumber":280,"author":{"gitId":"-"},"content":" -fx-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":281,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":282,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":284,"author":{"gitId":"-"},"content":".scroll-bar {","lastModifiedDate":"2017-03-02"},{"lineNumber":285,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02"},{"lineNumber":286,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":288,"author":{"gitId":"-"},"content":".scroll-bar .thumb {","lastModifiedDate":"2016-08-15"},{"lineNumber":289,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15"},{"lineNumber":290,"author":{"gitId":"-"},"content":" -fx-background-insets: 3;","lastModifiedDate":"2016-08-15"},{"lineNumber":291,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":293,"author":{"gitId":"-"},"content":".scroll-bar .increment-button, .scroll-bar .decrement-button {","lastModifiedDate":"2016-08-15"},{"lineNumber":294,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-15"},{"lineNumber":295,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-15"},{"lineNumber":296,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":298,"author":{"gitId":"-"},"content":".scroll-bar .increment-arrow, .scroll-bar .decrement-arrow {","lastModifiedDate":"2016-08-15"},{"lineNumber":299,"author":{"gitId":"-"},"content":" -fx-shape: \" \";","lastModifiedDate":"2016-08-15"},{"lineNumber":300,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":301,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":302,"author":{"gitId":"-"},"content":".scroll-bar:vertical .increment-arrow, .scroll-bar:vertical .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":303,"author":{"gitId":"-"},"content":" -fx-padding: 1 8 1 8;","lastModifiedDate":"2016-08-15"},{"lineNumber":304,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":306,"author":{"gitId":"-"},"content":".scroll-bar:horizontal .increment-arrow, .scroll-bar:horizontal .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":307,"author":{"gitId":"-"},"content":" -fx-padding: 8 1 8 1;","lastModifiedDate":"2016-08-18"},{"lineNumber":308,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":309,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":310,"author":{"gitId":"-"},"content":"#cardPane {","lastModifiedDate":"2016-08-08"},{"lineNumber":311,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":312,"author":{"gitId":"-"},"content":" -fx-border-width: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":313,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":314,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":315,"author":{"gitId":"-"},"content":"#commandTypeLabel {","lastModifiedDate":"2016-08-08"},{"lineNumber":316,"author":{"gitId":"-"},"content":" -fx-font-size: 11px;","lastModifiedDate":"2016-08-08"},{"lineNumber":317,"author":{"gitId":"-"},"content":" -fx-text-fill: #F70D1A;","lastModifiedDate":"2016-08-08"},{"lineNumber":318,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":319,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":320,"author":{"gitId":"-"},"content":"#commandTextField {","lastModifiedDate":"2017-03-02"},{"lineNumber":321,"author":{"gitId":"-"},"content":" -fx-background-color: transparent #383838 transparent #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":322,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":323,"author":{"gitId":"-"},"content":" -fx-border-color: #383838 #383838 #ffffff #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":324,"author":{"gitId":"-"},"content":" -fx-border-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":325,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02"},{"lineNumber":326,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":327,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02"},{"lineNumber":328,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":329,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":330,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":331,"author":{"gitId":"menatahari"},"content":"#filterField, #startupListPanel, #startupWebpage {","lastModifiedDate":"2024-03-19"},{"lineNumber":332,"author":{"gitId":"-"},"content":" -fx-effect: innershadow(gaussian, black, 10, 0, 0, 0);","lastModifiedDate":"2016-08-15"},{"lineNumber":333,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":334,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":335,"author":{"gitId":"-"},"content":"#resultDisplay .content {","lastModifiedDate":"2017-03-02"},{"lineNumber":336,"author":{"gitId":"-"},"content":" -fx-background-color: transparent, #383838, transparent, #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":337,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":338,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":339,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":340,"author":{"gitId":"-"},"content":"#tags {","lastModifiedDate":"2016-12-18"},{"lineNumber":341,"author":{"gitId":"-"},"content":" -fx-hgap: 7;","lastModifiedDate":"2016-12-18"},{"lineNumber":342,"author":{"gitId":"-"},"content":" -fx-vgap: 3;","lastModifiedDate":"2016-12-18"},{"lineNumber":343,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"},{"lineNumber":344,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":345,"author":{"gitId":"-"},"content":"#tags .label {","lastModifiedDate":"2016-12-18"},{"lineNumber":346,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-12-18"},{"lineNumber":347,"author":{"gitId":"-"},"content":" -fx-background-color: #3e7b91;","lastModifiedDate":"2017-03-02"},{"lineNumber":348,"author":{"gitId":"-"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2016-12-18"},{"lineNumber":349,"author":{"gitId":"-"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2016-12-18"},{"lineNumber":350,"author":{"gitId":"-"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2016-12-18"},{"lineNumber":351,"author":{"gitId":"-"},"content":" -fx-font-size: 11;","lastModifiedDate":"2016-12-18"},{"lineNumber":352,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"},{"lineNumber":353,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":354,"author":{"gitId":"yespiggy"},"content":"#industryAndFundingStage {","lastModifiedDate":"2024-03-11"},{"lineNumber":355,"author":{"gitId":"yespiggy"},"content":" -fx-hgap: 7;","lastModifiedDate":"2024-03-11"},{"lineNumber":356,"author":{"gitId":"yespiggy"},"content":" -fx-vgap: 3;","lastModifiedDate":"2024-03-11"},{"lineNumber":357,"author":{"gitId":"yespiggy"},"content":"}","lastModifiedDate":"2024-03-11"},{"lineNumber":358,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":359,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":360,"author":{"gitId":"yespiggy"},"content":"#industryAndFundingStage .label {","lastModifiedDate":"2024-03-11"},{"lineNumber":361,"author":{"gitId":"yespiggy"},"content":" -fx-background-color: #7e8464;","lastModifiedDate":"2024-03-11"},{"lineNumber":362,"author":{"gitId":"yespiggy"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-11"},{"lineNumber":363,"author":{"gitId":"yespiggy"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2024-03-11"},{"lineNumber":364,"author":{"gitId":"yespiggy"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2024-03-11"},{"lineNumber":365,"author":{"gitId":"yespiggy"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2024-03-11"},{"lineNumber":366,"author":{"gitId":"yespiggy"},"content":" -fx-font-size: 11;","lastModifiedDate":"2024-03-11"},{"lineNumber":367,"author":{"gitId":"yespiggy"},"content":"}","lastModifiedDate":"2024-03-11"},{"lineNumber":368,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":369,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"menatahari":1,"yespiggy":17,"-":351}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2016-08-26"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Menu?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuBar?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuItem?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.SplitPane?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"\u003cfx:root type\u003d\"javafx.stage.Stage\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"","lastModifiedDate":"2023-07-27"},{"lineNumber":15,"author":{"gitId":"menatahari"},"content":" title\u003d\"Capital Connect\" minWidth\u003d\"450\" minHeight\u003d\"600\" onCloseRequest\u003d\"#handleExit\"\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cicons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":17,"author":{"gitId":"menatahari"},"content":" \u003cImage url\u003d\"@/images/capital_connect.png\" /\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/icons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cscene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cScene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@DarkTheme.css\" /\u003e","lastModifiedDate":"2016-08-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@Extensions.css\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003cVBox\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cMenuBar fx:id\u003d\"menuBar\" VBox.vgrow\u003d\"NEVER\"\u003e","lastModifiedDate":"2017-06-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"File\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003cMenuItem mnemonicParsing\u003d\"false\" onAction\u003d\"#handleExit\" text\u003d\"Exit\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"Help\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cMenuItem fx:id\u003d\"helpMenuItem\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleHelp\" text\u003d\"Help\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003c/MenuBar\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"commandBoxPlaceholder\" styleClass\u003d\"pane-with-border\"\u003e","lastModifiedDate":"2017-05-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"resultDisplayPlaceholder\" styleClass\u003d\"pane-with-border\"","lastModifiedDate":"2017-05-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":" minHeight\u003d\"100\" prefHeight\u003d\"100\" maxHeight\u003d\"100\"\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":45,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":47,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":49,"author":{"gitId":"menatahari"},"content":" \u003cVBox fx:id\u003d\"startupList\" styleClass\u003d\"pane-with-border\" minWidth\u003d\"340\" prefWidth\u003d\"340\" VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"10\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":53,"author":{"gitId":"menatahari"},"content":" \u003cStackPane fx:id\u003d\"startupListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\"/\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"statusbarPlaceholder\" VBox.vgrow\u003d\"NEVER\" /\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003c/scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":60,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-11-29"}],"authorContributionMap":{"menatahari":4,"-":56}},{"path":"src/main/resources/view/StartupListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003cHBox id\u003d\"cardPane\" fx:id\u003d\"cardPane\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-07-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2017-03-28"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2017-03-28"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003c/Label\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"name\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2016-09-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003cFlowPane fx:id\u003d\"tags\" /\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":31,"author":{"gitId":"yespiggy"},"content":" \u003cFlowPane fx:id\u003d\"industryAndFundingStage\" /\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"yespiggy":1,"-":36}},{"path":"src/main/resources/view/StartupListPanel.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.ListView?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003cVBox xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-07-27"},{"lineNumber":7,"author":{"gitId":"menatahari"},"content":" \u003cListView fx:id\u003d\"startupListView\" VBox.vgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c/VBox\u003e","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"menatahari":1,"-":7}},{"path":"src/test/java/seedu/address/commons/core/index/IndexTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.commons.core.index;","lastModifiedDate":"2017-05-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class IndexTest {","lastModifiedDate":"2017-05-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public void createOneBasedIndex() {","lastModifiedDate":"2017-05-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" // invalid index","lastModifiedDate":"2017-05-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" assertThrows(IndexOutOfBoundsException.class, () -\u003e Index.fromOneBased(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" // check equality using the same base","lastModifiedDate":"2017-05-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" assertEquals(1, Index.fromOneBased(1).getOneBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertEquals(5, Index.fromOneBased(5).getOneBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" // convert from one-based index to zero-based index","lastModifiedDate":"2017-05-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" assertEquals(0, Index.fromOneBased(1).getZeroBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" assertEquals(4, Index.fromOneBased(5).getZeroBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void createZeroBasedIndex() {","lastModifiedDate":"2017-05-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" // invalid index","lastModifiedDate":"2017-05-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertThrows(IndexOutOfBoundsException.class, () -\u003e Index.fromZeroBased(-1));","lastModifiedDate":"2019-03-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // check equality using the same base","lastModifiedDate":"2017-05-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertEquals(0, Index.fromZeroBased(0).getZeroBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertEquals(5, Index.fromZeroBased(5).getZeroBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // convert from zero-based index to one-based index","lastModifiedDate":"2017-05-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertEquals(1, Index.fromZeroBased(0).getOneBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertEquals(6, Index.fromZeroBased(5).getOneBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-05-24"},{"lineNumber":42,"author":{"gitId":"menatahari"},"content":" final Index fifthStartupIndex \u003d Index.fromOneBased(5);","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-24"},{"lineNumber":45,"author":{"gitId":"menatahari"},"content":" assertTrue(fifthStartupIndex.equals(Index.fromOneBased(5)));","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"menatahari"},"content":" assertTrue(fifthStartupIndex.equals(Index.fromZeroBased(4)));","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-24"},{"lineNumber":49,"author":{"gitId":"menatahari"},"content":" assertTrue(fifthStartupIndex.equals(fifthStartupIndex));","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-24"},{"lineNumber":52,"author":{"gitId":"menatahari"},"content":" assertFalse(fifthStartupIndex.equals(null));","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-24"},{"lineNumber":55,"author":{"gitId":"menatahari"},"content":" assertFalse(fifthStartupIndex.equals(5.0f));","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-24"},{"lineNumber":58,"author":{"gitId":"menatahari"},"content":" assertFalse(fifthStartupIndex.equals(Index.fromOneBased(1)));","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromZeroBased(0);","lastModifiedDate":"2019-02-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" String expected \u003d Index.class.getCanonicalName() + \"{zeroBasedIndex\u003d\" + index.getZeroBased() + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertEquals(expected, index.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"menatahari":7,"-":60}},{"path":"src/test/java/seedu/address/commons/util/AppUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.commons.util;","lastModifiedDate":"2016-09-30"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertNotNull;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class AppUtilTest {","lastModifiedDate":"2016-09-30"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":10,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-30"},{"lineNumber":11,"author":{"gitId":"-"},"content":" public void getImage_exitingImage() {","lastModifiedDate":"2016-09-30"},{"lineNumber":12,"author":{"gitId":"menatahari"},"content":" assertNotNull(AppUtil.getImage(\"/images/capital_connect.png\"));","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-30"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":15,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-30"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public void getImage_nullGiven_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":17,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e AppUtil.getImage(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-15"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public void checkArgument_true_nothingHappens() {","lastModifiedDate":"2017-05-15"},{"lineNumber":22,"author":{"gitId":"-"},"content":" AppUtil.checkArgument(true);","lastModifiedDate":"2017-05-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":" AppUtil.checkArgument(true, \"\");","lastModifiedDate":"2017-05-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-15"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void checkArgument_falseWithoutErrorMessage_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e AppUtil.checkArgument(false));","lastModifiedDate":"2019-03-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void checkArgument_falseWithErrorMessage_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":" String errorMessage \u003d \"error message\";","lastModifiedDate":"2017-05-15"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, errorMessage, () -\u003e AppUtil.checkArgument(false, errorMessage));","lastModifiedDate":"2019-03-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-30"}],"authorContributionMap":{"menatahari":1,"-":35}},{"path":"src/test/java/seedu/address/logic/LogicManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"menatahari"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_STARTUP_DISPLAYED_INDEX;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":7,"author":{"gitId":"menatahari"},"content":"import static seedu.address.testutil.TypicalStartups.AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2017-01-18"},{"lineNumber":19,"author":{"gitId":"yeoshuheng"},"content":"import seedu.address.logic.commands.CommandTestUtil;","lastModifiedDate":"2024-02-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2016-09-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-09"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-31"},{"lineNumber":27,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-12-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2018-12-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2018-12-09"},{"lineNumber":31,"author":{"gitId":"menatahari"},"content":"import seedu.address.testutil.StartupBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":"public class LogicManagerTest {","lastModifiedDate":"2016-09-22"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_IO_EXCEPTION \u003d new IOException(\"dummy IO exception\");","lastModifiedDate":"2023-06-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_AD_EXCEPTION \u003d new AccessDeniedException(\"dummy access denied exception\");","lastModifiedDate":"2023-06-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public Path temporaryFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-20"},{"lineNumber":41,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2018-12-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2019-04-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d","lastModifiedDate":"2019-04-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(temporaryFolder.resolve(\"addressBook.json\"));","lastModifiedDate":"2019-04-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2019-04-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2018-12-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-20"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void execute_invalidCommandFormat_throwsParseException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":54,"author":{"gitId":"-"},"content":" String invalidCommand \u003d \"uicfhmowqewca\";","lastModifiedDate":"2017-06-20"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertParseException(invalidCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-06-20"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-14"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void execute_commandExecutionError_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":60,"author":{"gitId":"-"},"content":" String deleteCommand \u003d \"delete 9\";","lastModifiedDate":"2017-06-14"},{"lineNumber":61,"author":{"gitId":"menatahari"},"content":" assertCommandException(deleteCommand, MESSAGE_INVALID_STARTUP_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-19"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void execute_validCommand_success() throws Exception {","lastModifiedDate":"2019-03-14"},{"lineNumber":66,"author":{"gitId":"-"},"content":" String listCommand \u003d ListCommand.COMMAND_WORD;","lastModifiedDate":"2017-06-19"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertCommandSuccess(listCommand, ListCommand.MESSAGE_SUCCESS, model);","lastModifiedDate":"2017-06-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20"},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2019-04-25"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-06-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-06-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2023-06-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":83,"author":{"gitId":"menatahari"},"content":" public void getFilteredStartupList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":84,"author":{"gitId":"menatahari"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredStartupList().remove(0));","lastModifiedDate":"2024-03-19"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":87,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":93,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":94,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14"},{"lineNumber":95,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14"},{"lineNumber":96,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14"},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":101,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a ParseException is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":105,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11"},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":109,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14"},{"lineNumber":110,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a CommandException is thrown and that the result message is correct.","lastModifiedDate":"2017-06-14"},{"lineNumber":111,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":112,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14"},{"lineNumber":113,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":117,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":118,"author":{"gitId":"-"},"content":" * Executes the command, confirms that the exception is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":119,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":121,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-05-31"},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":127,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":128,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":129,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":130,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":131,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":132,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":133,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":134,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":135,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31"},{"lineNumber":136,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14"},{"lineNumber":137,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31"},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19"},{"lineNumber":140,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":141,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13"},{"lineNumber":142,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13"},{"lineNumber":143,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13"},{"lineNumber":144,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13"},{"lineNumber":145,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":146,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13"},{"lineNumber":147,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":149,"author":{"gitId":"-"},"content":" // Inject LogicManager with an AddressBookStorage that throws the IOException e when saving","lastModifiedDate":"2023-06-13"},{"lineNumber":150,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(prefPath) {","lastModifiedDate":"2023-06-13"},{"lineNumber":151,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":152,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath)","lastModifiedDate":"2023-06-13"},{"lineNumber":153,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13"},{"lineNumber":154,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13"},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":156,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":158,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":159,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13"},{"lineNumber":160,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2023-06-13"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":162,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":164,"author":{"gitId":"-"},"content":" // Triggers the saveAddressBook method by executing an add command","lastModifiedDate":"2023-06-13"},{"lineNumber":165,"author":{"gitId":"yeoshuheng"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + CommandTestUtil.FUNDING_DESC_AMY","lastModifiedDate":"2024-02-25"},{"lineNumber":166,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.INDUSTRY_DESC_AMY + CommandTestUtil.NAME_DESC_AMY + CommandTestUtil.PHONE_DESC_AMY","lastModifiedDate":"2024-02-25"},{"lineNumber":167,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.EMAIL_DESC_AMY + CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2024-02-25"},{"lineNumber":168,"author":{"gitId":"menatahari"},"content":" Startup expectedStartup \u003d new StartupBuilder(AMY).withTags().build();","lastModifiedDate":"2024-03-19"},{"lineNumber":169,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13"},{"lineNumber":170,"author":{"gitId":"menatahari"},"content":" expectedModel.addStartup(expectedStartup);","lastModifiedDate":"2024-03-19"},{"lineNumber":171,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13"},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":173,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"menatahari":9,"-":160,"yeoshuheng":4}},{"path":"src/test/java/seedu/address/logic/commands/AddCommandIntegrationTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-15"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":5,"author":{"gitId":"menatahari"},"content":"import static seedu.address.testutil.TypicalStartups.getTypicalAddressBook;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-15"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-15"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-15"},{"lineNumber":14,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"menatahari"},"content":"import seedu.address.testutil.StartupBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-15"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code AddCommand}.","lastModifiedDate":"2017-06-15"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-15"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class AddCommandIntegrationTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":30,"author":{"gitId":"menatahari"},"content":" public void execute_newStartup_success() {","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"menatahari"},"content":" Startup validStartup \u003d new StartupBuilder().build();","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-15"},{"lineNumber":34,"author":{"gitId":"menatahari"},"content":" expectedModel.addStartup(validStartup);","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":36,"author":{"gitId":"menatahari"},"content":" assertCommandSuccess(new AddCommand(validStartup), model,","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"menatahari"},"content":" String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validStartup)),","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":" expectedModel);","lastModifiedDate":"2019-02-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":42,"author":{"gitId":"menatahari"},"content":" public void execute_duplicateStartup_throwsCommandException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"menatahari"},"content":" Startup startupInList \u003d model.getAddressBook().getStartupList().get(0);","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"menatahari"},"content":" assertCommandFailure(new AddCommand(startupInList), model,","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"menatahari"},"content":" AddCommand.MESSAGE_DUPLICATE_STARTUP);","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"menatahari":12,"-":36}},{"path":"src/test/java/seedu/address/logic/commands/AddCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-01-10"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"menatahari"},"content":"import static seedu.address.testutil.TypicalStartups.ALICE;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-05-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-05-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2017-05-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":25,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"menatahari"},"content":"import seedu.address.testutil.StartupBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class AddCommandTest {","lastModifiedDate":"2017-05-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":31,"author":{"gitId":"menatahari"},"content":" public void constructor_nullStartup_throwsNullPointerException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddCommand(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":36,"author":{"gitId":"menatahari"},"content":" public void execute_startupAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"menatahari"},"content":" ModelStubAcceptingStartupAdded modelStub \u003d new ModelStubAcceptingStartupAdded();","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"menatahari"},"content":" Startup validStartup \u003d new StartupBuilder().build();","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":40,"author":{"gitId":"menatahari"},"content":" CommandResult commandResult \u003d new AddCommand(validStartup).execute(modelStub);","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":42,"author":{"gitId":"menatahari"},"content":" assertEquals(String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validStartup)),","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"menatahari"},"content":" assertEquals(Arrays.asList(validStartup), modelStub.startupsAdded);","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":48,"author":{"gitId":"menatahari"},"content":" public void execute_duplicateStartup_throwsCommandException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"menatahari"},"content":" Startup validStartup \u003d new StartupBuilder().build();","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"menatahari"},"content":" AddCommand addCommand \u003d new AddCommand(validStartup);","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"menatahari"},"content":" ModelStub modelStub \u003d new ModelStubWithStartup(validStartup);","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":53,"author":{"gitId":"menatahari"},"content":" assertThrows(CommandException.class, AddCommand.MESSAGE_DUPLICATE_STARTUP, () -\u003e addCommand.execute(modelStub));","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-22"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":58,"author":{"gitId":"menatahari"},"content":" Startup alice \u003d new StartupBuilder().withName(\"Alice\").build();","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"menatahari"},"content":" Startup bob \u003d new StartupBuilder().withName(\"Bob\").build();","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":" AddCommand addAliceCommand \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22"},{"lineNumber":61,"author":{"gitId":"-"},"content":" AddCommand addBobCommand \u003d new AddCommand(bob);","lastModifiedDate":"2017-06-22"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":63,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommand));","lastModifiedDate":"2017-06-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":66,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":67,"author":{"gitId":"-"},"content":" AddCommand addAliceCommandCopy \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommandCopy));","lastModifiedDate":"2017-06-22"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(1));","lastModifiedDate":"2017-06-22"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":73,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(null));","lastModifiedDate":"2017-06-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":76,"author":{"gitId":"menatahari"},"content":" // different startup -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(addBobCommand));","lastModifiedDate":"2017-06-22"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(ALICE);","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" String expected \u003d AddCommand.class.getCanonicalName() + \"{toAdd\u003d\" + ALICE + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertEquals(expected, addCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2017-05-12"},{"lineNumber":89,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":90,"author":{"gitId":"-"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2017-05-12"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":93,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":101,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":102,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":108,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":112,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":113,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":117,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27"},{"lineNumber":118,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":122,"author":{"gitId":"menatahari"},"content":" public void addStartup(Startup startup) {","lastModifiedDate":"2024-03-19"},{"lineNumber":123,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":127,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2018-11-27"},{"lineNumber":128,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":131,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":132,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-12"},{"lineNumber":133,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":136,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":137,"author":{"gitId":"menatahari"},"content":" public boolean hasStartup(Startup startup) {","lastModifiedDate":"2024-03-19"},{"lineNumber":138,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":141,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":142,"author":{"gitId":"menatahari"},"content":" public void deleteStartup(Startup target) {","lastModifiedDate":"2024-03-19"},{"lineNumber":143,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":146,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":147,"author":{"gitId":"menatahari"},"content":" public void setStartup(Startup target, Startup editedStartup) {","lastModifiedDate":"2024-03-19"},{"lineNumber":148,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":151,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":152,"author":{"gitId":"menatahari"},"content":" public ObservableList\u003cStartup\u003e getFilteredStartupList() {","lastModifiedDate":"2024-03-19"},{"lineNumber":153,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":156,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":157,"author":{"gitId":"menatahari"},"content":" public void updateFilteredStartupList(Predicate\u003cStartup\u003e predicate) {","lastModifiedDate":"2024-03-19"},{"lineNumber":158,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":162,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":163,"author":{"gitId":"menatahari"},"content":" * A Model stub that contains a single startup.","lastModifiedDate":"2024-03-19"},{"lineNumber":164,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":165,"author":{"gitId":"menatahari"},"content":" private class ModelStubWithStartup extends ModelStub {","lastModifiedDate":"2024-03-19"},{"lineNumber":166,"author":{"gitId":"menatahari"},"content":" private final Startup startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":168,"author":{"gitId":"menatahari"},"content":" ModelStubWithStartup(Startup startup) {","lastModifiedDate":"2024-03-19"},{"lineNumber":169,"author":{"gitId":"menatahari"},"content":" requireNonNull(startup);","lastModifiedDate":"2024-03-19"},{"lineNumber":170,"author":{"gitId":"menatahari"},"content":" this.startup \u003d startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":173,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":174,"author":{"gitId":"menatahari"},"content":" public boolean hasStartup(Startup startup) {","lastModifiedDate":"2024-03-19"},{"lineNumber":175,"author":{"gitId":"menatahari"},"content":" requireNonNull(startup);","lastModifiedDate":"2024-03-19"},{"lineNumber":176,"author":{"gitId":"menatahari"},"content":" return this.startup.isSameStartup(startup);","lastModifiedDate":"2024-03-19"},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":180,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":181,"author":{"gitId":"menatahari"},"content":" * A Model stub that always accept the startup being added.","lastModifiedDate":"2024-03-19"},{"lineNumber":182,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":183,"author":{"gitId":"menatahari"},"content":" private class ModelStubAcceptingStartupAdded extends ModelStub {","lastModifiedDate":"2024-03-19"},{"lineNumber":184,"author":{"gitId":"menatahari"},"content":" final ArrayList\u003cStartup\u003e startupsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-19"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":186,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07"},{"lineNumber":187,"author":{"gitId":"menatahari"},"content":" public boolean hasStartup(Startup startup) {","lastModifiedDate":"2024-03-19"},{"lineNumber":188,"author":{"gitId":"menatahari"},"content":" requireNonNull(startup);","lastModifiedDate":"2024-03-19"},{"lineNumber":189,"author":{"gitId":"menatahari"},"content":" return startupsAdded.stream().anyMatch(startup::isSameStartup);","lastModifiedDate":"2024-03-19"},{"lineNumber":190,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":192,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":193,"author":{"gitId":"menatahari"},"content":" public void addStartup(Startup startup) {","lastModifiedDate":"2024-03-19"},{"lineNumber":194,"author":{"gitId":"menatahari"},"content":" requireNonNull(startup);","lastModifiedDate":"2024-03-19"},{"lineNumber":195,"author":{"gitId":"menatahari"},"content":" startupsAdded.add(startup);","lastModifiedDate":"2024-03-19"},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":198,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":199,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04"},{"lineNumber":200,"author":{"gitId":"-"},"content":" return new AddressBook();","lastModifiedDate":"2017-05-04"},{"lineNumber":201,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":202,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":204,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12"}],"authorContributionMap":{"menatahari":42,"-":162}},{"path":"src/test/java/seedu/address/logic/commands/ClearCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":4,"author":{"gitId":"menatahari"},"content":"import static seedu.address.testutil.TypicalStartups.getTypicalAddressBook;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2018-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class ClearCommandTest {","lastModifiedDate":"2017-06-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public void execute_emptyAddressBook_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":17,"author":{"gitId":"-"},"content":" Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2018-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ClearCommand(), model, ClearCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void execute_nonEmptyAddressBook_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2018-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" expectedModel.setAddressBook(new AddressBook());","lastModifiedDate":"2018-11-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ClearCommand(), model, ClearCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-08"}],"authorContributionMap":{"menatahari":1,"-":31}},{"path":"src/test/java/seedu/address/logic/commands/CommandTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05"},{"lineNumber":13,"author":{"gitId":"yeoshuheng"},"content":"import seedu.address.logic.parser.CliSyntax;","lastModifiedDate":"2024-02-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-06-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05"},{"lineNumber":16,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"menatahari"},"content":"import seedu.address.testutil.EditStartupDescriptorBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"dwangwk"},"content":"import seedu.address.testutil.NoteStartupDescriptorBuilder;","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_AMY \u003d \"11111111\";","lastModifiedDate":"2017-07-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_BOB \u003d \"22222222\";","lastModifiedDate":"2017-07-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_AMY \u003d \"Block 312, Amy Street 1\";","lastModifiedDate":"2017-07-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_BOB \u003d \"Block 123, Bobby Street 3\";","lastModifiedDate":"2017-07-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_HUSBAND \u003d \"husband\";","lastModifiedDate":"2017-07-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_FRIEND \u003d \"friend\";","lastModifiedDate":"2017-07-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":37,"author":{"gitId":"yeoshuheng"},"content":" public static final String VALID_INDUSTRY_BOB \u003d \"Finance\";","lastModifiedDate":"2024-02-25"},{"lineNumber":38,"author":{"gitId":"yeoshuheng"},"content":" public static final String VALID_INDUSTRY_AMY \u003d \"Finance\";","lastModifiedDate":"2024-02-25"},{"lineNumber":39,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":40,"author":{"gitId":"yeoshuheng"},"content":" public static final String VALID_FUNDING_BOB \u003d \"A\";","lastModifiedDate":"2024-02-25"},{"lineNumber":41,"author":{"gitId":"yeoshuheng"},"content":" public static final String VALID_FUNDING_AMY \u003d \"A\";","lastModifiedDate":"2024-02-25"},{"lineNumber":42,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":43,"author":{"gitId":"yeoshuheng"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + CliSyntax.PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2024-02-25"},{"lineNumber":44,"author":{"gitId":"yeoshuheng"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + CliSyntax.PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2024-02-25"},{"lineNumber":45,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":46,"author":{"gitId":"yeoshuheng"},"content":" public static final String INDUSTRY_DESC_AMY \u003d \" \" + CliSyntax.PREFIX_INDUSTRY + VALID_INDUSTRY_AMY;","lastModifiedDate":"2024-02-25"},{"lineNumber":47,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":48,"author":{"gitId":"yeoshuheng"},"content":" public static final String INDUSTRY_DESC_BOB \u003d \" \" + CliSyntax.PREFIX_INDUSTRY + VALID_INDUSTRY_BOB;","lastModifiedDate":"2024-02-25"},{"lineNumber":49,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":50,"author":{"gitId":"yeoshuheng"},"content":" public static final String FUNDING_DESC_AMY \u003d \" \" + CliSyntax.PREFIX_FUNDING_STAGE + VALID_FUNDING_AMY;","lastModifiedDate":"2024-02-25"},{"lineNumber":51,"author":{"gitId":"yeoshuheng"},"content":" public static final String FUNDING_DESC_BOB \u003d \" \" + CliSyntax.PREFIX_FUNDING_STAGE + VALID_FUNDING_BOB;","lastModifiedDate":"2024-02-25"},{"lineNumber":52,"author":{"gitId":"yeoshuheng"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + CliSyntax.PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2024-02-25"},{"lineNumber":53,"author":{"gitId":"yeoshuheng"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + CliSyntax.PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2024-02-25"},{"lineNumber":54,"author":{"gitId":"yeoshuheng"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + CliSyntax.PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2024-02-25"},{"lineNumber":55,"author":{"gitId":"yeoshuheng"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + CliSyntax.PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2024-02-25"},{"lineNumber":56,"author":{"gitId":"yeoshuheng"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + CliSyntax.PREFIX_ADDRESS + VALID_ADDRESS_AMY;","lastModifiedDate":"2024-02-25"},{"lineNumber":57,"author":{"gitId":"yeoshuheng"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + CliSyntax.PREFIX_ADDRESS + VALID_ADDRESS_BOB;","lastModifiedDate":"2024-02-25"},{"lineNumber":58,"author":{"gitId":"yeoshuheng"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + CliSyntax.PREFIX_TAG + VALID_TAG_FRIEND;","lastModifiedDate":"2024-02-25"},{"lineNumber":59,"author":{"gitId":"yeoshuheng"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + CliSyntax.PREFIX_TAG + VALID_TAG_HUSBAND;","lastModifiedDate":"2024-02-25"},{"lineNumber":60,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":61,"author":{"gitId":"yeoshuheng"},"content":" public static final String INVALID_NAME_DESC \u003d \" \"","lastModifiedDate":"2024-02-25"},{"lineNumber":62,"author":{"gitId":"yeoshuheng"},"content":" + CliSyntax.PREFIX_NAME + \"James\u0026\"; // \u0027\u0026\u0027 not allowed in names","lastModifiedDate":"2024-02-25"},{"lineNumber":63,"author":{"gitId":"yeoshuheng"},"content":" public static final String INVALID_PHONE_DESC \u003d \" \"","lastModifiedDate":"2024-02-25"},{"lineNumber":64,"author":{"gitId":"yeoshuheng"},"content":" + CliSyntax.PREFIX_PHONE + \"911a\"; // \u0027a\u0027 not allowed in phones","lastModifiedDate":"2024-02-25"},{"lineNumber":65,"author":{"gitId":"yeoshuheng"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \"","lastModifiedDate":"2024-02-25"},{"lineNumber":66,"author":{"gitId":"yeoshuheng"},"content":" + CliSyntax.PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2024-02-25"},{"lineNumber":67,"author":{"gitId":"yeoshuheng"},"content":" public static final String INVALID_ADDRESS_DESC \u003d \" \"","lastModifiedDate":"2024-02-25"},{"lineNumber":68,"author":{"gitId":"yeoshuheng"},"content":" + CliSyntax.PREFIX_ADDRESS; // empty string not allowed for addresses","lastModifiedDate":"2024-02-25"},{"lineNumber":69,"author":{"gitId":"yeoshuheng"},"content":" public static final String INVALID_TAG_DESC \u003d \" \"","lastModifiedDate":"2024-02-25"},{"lineNumber":70,"author":{"gitId":"yeoshuheng"},"content":" + CliSyntax.PREFIX_TAG + \"hubby*\"; // \u0027*\u0027 not allowed in tags","lastModifiedDate":"2024-02-25"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":72,"author":{"gitId":"yeoshuheng"},"content":" public static final String INVALID_INDUSTRY_DESC \u003d \" \" + CliSyntax.PREFIX_INDUSTRY + \"\";","lastModifiedDate":"2024-03-05"},{"lineNumber":73,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":74,"author":{"gitId":"yeoshuheng"},"content":" public static final String INVALID_FUNDING_DESC \u003d \" \" + CliSyntax.PREFIX_FUNDING_STAGE + \"D\";","lastModifiedDate":"2024-03-05"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":79,"author":{"gitId":"menatahari"},"content":" public static final EditCommand.EditStartupDescriptor DESC_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":80,"author":{"gitId":"menatahari"},"content":" public static final EditCommand.EditStartupDescriptor DESC_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":82,"author":{"gitId":"dwangwk"},"content":" public static final NoteCommand.NoteStartupDescriptor DESC_AMY_N;","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"dwangwk"},"content":" public static final NoteCommand.NoteStartupDescriptor DESC_BOB_N;","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05"},{"lineNumber":86,"author":{"gitId":"menatahari"},"content":" DESC_AMY \u003d new EditStartupDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2024-03-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-07-05"},{"lineNumber":88,"author":{"gitId":"yeoshuheng"},"content":" .withTags(VALID_TAG_FRIEND).withIndustry(VALID_INDUSTRY_AMY)","lastModifiedDate":"2024-02-25"},{"lineNumber":89,"author":{"gitId":"yeoshuheng"},"content":" .withFundingStage(VALID_FUNDING_AMY).build();","lastModifiedDate":"2024-02-25"},{"lineNumber":90,"author":{"gitId":"menatahari"},"content":" DESC_BOB \u003d new EditStartupDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2024-03-19"},{"lineNumber":91,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2017-07-05"},{"lineNumber":92,"author":{"gitId":"yeoshuheng"},"content":" .withFundingStage(VALID_FUNDING_BOB).withIndustry(VALID_INDUSTRY_BOB)","lastModifiedDate":"2024-02-25"},{"lineNumber":93,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05"},{"lineNumber":94,"author":{"gitId":"dwangwk"},"content":" DESC_AMY_N \u003d new NoteStartupDescriptorBuilder().withNote(\"Add a note for Amy!\").build();","lastModifiedDate":"2024-03-20"},{"lineNumber":95,"author":{"gitId":"dwangwk"},"content":" DESC_BOB_N \u003d new NoteStartupDescriptorBuilder().withNote(\"Add a note for Bob!\").build();","lastModifiedDate":"2024-03-20"},{"lineNumber":96,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":99,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25"},{"lineNumber":103,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25"},{"lineNumber":105,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":106,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":107,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09"},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":110,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15"},{"lineNumber":111,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":115,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":116,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25"},{"lineNumber":117,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09"},{"lineNumber":118,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":119,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25"},{"lineNumber":120,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":121,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09"},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":125,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":126,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":127,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":128,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":129,"author":{"gitId":"menatahari"},"content":" * - the address book, filtered startup list and selected startup in {@code actualModel} remain unchanged","lastModifiedDate":"2024-03-19"},{"lineNumber":130,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":131,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25"},{"lineNumber":132,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05"},{"lineNumber":133,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05"},{"lineNumber":134,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":135,"author":{"gitId":"menatahari"},"content":" List\u003cStartup\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredStartupList());","lastModifiedDate":"2024-03-19"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":137,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03"},{"lineNumber":138,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":139,"author":{"gitId":"menatahari"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredStartupList());","lastModifiedDate":"2024-03-19"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":141,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20"},{"lineNumber":142,"author":{"gitId":"menatahari"},"content":" * Updates {@code model}\u0027s filtered list to show only the startup at the given {@code targetIndex} in the","lastModifiedDate":"2024-03-19"},{"lineNumber":143,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31"},{"lineNumber":144,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20"},{"lineNumber":145,"author":{"gitId":"menatahari"},"content":" public static void showStartupAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2024-03-19"},{"lineNumber":146,"author":{"gitId":"menatahari"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredStartupList().size());","lastModifiedDate":"2024-03-19"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31"},{"lineNumber":148,"author":{"gitId":"menatahari"},"content":" Startup startup \u003d model.getFilteredStartupList().get(targetIndex.getZeroBased());","lastModifiedDate":"2024-03-19"},{"lineNumber":149,"author":{"gitId":"menatahari"},"content":" final String[] splitName \u003d startup.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2024-03-19"},{"lineNumber":150,"author":{"gitId":"menatahari"},"content":" model.updateFilteredStartupList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2024-03-19"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":152,"author":{"gitId":"menatahari"},"content":" assertEquals(1, model.getFilteredStartupList().size());","lastModifiedDate":"2024-03-19"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":155,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"dwangwk":6,"menatahari":17,"-":91,"yeoshuheng":41}},{"path":"src/test/java/seedu/address/logic/commands/DeleteCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"menatahari"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showStartupAtIndex;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"menatahari"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_STARTUP;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"menatahari"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_STARTUP;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"menatahari"},"content":"import static seedu.address.testutil.TypicalStartups.getTypicalAddressBook;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-06-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-05"},{"lineNumber":20,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2020-12-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * {@code DeleteCommand}.","lastModifiedDate":"2018-01-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class DeleteCommandTest {","lastModifiedDate":"2017-06-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void execute_validIndexUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":32,"author":{"gitId":"menatahari"},"content":" Startup startupToDelete \u003d model.getFilteredStartupList().get(INDEX_FIRST_STARTUP.getZeroBased());","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"menatahari"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(INDEX_FIRST_STARTUP);","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":35,"author":{"gitId":"menatahari"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_STARTUP_SUCCESS,","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"menatahari"},"content":" Messages.format(startupToDelete));","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":39,"author":{"gitId":"menatahari"},"content":" expectedModel.deleteStartup(startupToDelete);","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":46,"author":{"gitId":"menatahari"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredStartupList().size() + 1);","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(outOfBoundIndex);","lastModifiedDate":"2018-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":49,"author":{"gitId":"menatahari"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_STARTUP_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void execute_validIndexFilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":54,"author":{"gitId":"menatahari"},"content":" showStartupAtIndex(model, INDEX_FIRST_STARTUP);","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":56,"author":{"gitId":"menatahari"},"content":" Startup startupToDelete \u003d model.getFilteredStartupList().get(INDEX_FIRST_STARTUP.getZeroBased());","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"menatahari"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(INDEX_FIRST_STARTUP);","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":59,"author":{"gitId":"menatahari"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_STARTUP_SUCCESS,","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"menatahari"},"content":" Messages.format(startupToDelete));","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":63,"author":{"gitId":"menatahari"},"content":" expectedModel.deleteStartup(startupToDelete);","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"menatahari"},"content":" showNoStartup(expectedModel);","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void execute_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":71,"author":{"gitId":"menatahari"},"content":" showStartupAtIndex(model, INDEX_FIRST_STARTUP);","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":73,"author":{"gitId":"menatahari"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_STARTUP;","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-06-05"},{"lineNumber":75,"author":{"gitId":"menatahari"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getStartupList().size());","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":77,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(outOfBoundIndex);","lastModifiedDate":"2018-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":79,"author":{"gitId":"menatahari"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_STARTUP_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":84,"author":{"gitId":"menatahari"},"content":" DeleteCommand deleteFirstCommand \u003d new DeleteCommand(INDEX_FIRST_STARTUP);","lastModifiedDate":"2024-03-19"},{"lineNumber":85,"author":{"gitId":"menatahari"},"content":" DeleteCommand deleteSecondCommand \u003d new DeleteCommand(INDEX_SECOND_STARTUP);","lastModifiedDate":"2024-03-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":91,"author":{"gitId":"menatahari"},"content":" DeleteCommand deleteFirstCommandCopy \u003d new DeleteCommand(INDEX_FIRST_STARTUP);","lastModifiedDate":"2024-03-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2017-06-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2017-06-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2017-06-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":100,"author":{"gitId":"menatahari"},"content":" // different startup -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(targetIndex);","lastModifiedDate":"2019-02-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":" String expected \u003d DeleteCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertEquals(expected, deleteCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":113,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show no one.","lastModifiedDate":"2017-06-05"},{"lineNumber":114,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":115,"author":{"gitId":"menatahari"},"content":" private void showNoStartup(Model model) {","lastModifiedDate":"2024-03-19"},{"lineNumber":116,"author":{"gitId":"menatahari"},"content":" model.updateFilteredStartupList(p -\u003e false);","lastModifiedDate":"2024-03-19"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":118,"author":{"gitId":"menatahari"},"content":" assertTrue(model.getFilteredStartupList().isEmpty());","lastModifiedDate":"2024-03-19"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":120,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"menatahari":30,"-":90}},{"path":"src/test/java/seedu/address/logic/commands/EditCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"menatahari"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showStartupAtIndex;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"menatahari"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_STARTUP;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"menatahari"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_STARTUP;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"menatahari"},"content":"import static seedu.address.testutil.TypicalStartups.getTypicalAddressBook;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":22,"author":{"gitId":"menatahari"},"content":"import seedu.address.logic.commands.EditCommand.EditStartupDescriptor;","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-05-04"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-04"},{"lineNumber":27,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"menatahari"},"content":"import seedu.address.testutil.EditStartupDescriptorBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"menatahari"},"content":"import seedu.address.testutil.StartupBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-04"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for EditCommand.","lastModifiedDate":"2020-12-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-04"},{"lineNumber":34,"author":{"gitId":"-"},"content":"public class EditCommandTest {","lastModifiedDate":"2017-05-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":40,"author":{"gitId":"menatahari"},"content":" Startup editedStartup \u003d new StartupBuilder().build();","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"menatahari"},"content":" EditStartupDescriptor descriptor \u003d new EditStartupDescriptorBuilder(editedStartup).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"menatahari"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_STARTUP, descriptor);","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":44,"author":{"gitId":"menatahari"},"content":" String expectedMessage \u003d String.format(","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"menatahari"},"content":" EditCommand.MESSAGE_EDIT_STARTUP_SUCCESS, Messages.format(editedStartup));","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":47,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":48,"author":{"gitId":"menatahari"},"content":" expectedModel.setStartup(model.getFilteredStartupList().get(0), editedStartup);","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":55,"author":{"gitId":"menatahari"},"content":" Index indexLastStartup \u003d Index.fromOneBased(model.getFilteredStartupList().size());","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"menatahari"},"content":" Startup lastStartup \u003d model.getFilteredStartupList().get(indexLastStartup.getZeroBased());","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":58,"author":{"gitId":"menatahari"},"content":" StartupBuilder startupInList \u003d new StartupBuilder(lastStartup);","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"menatahari"},"content":" Startup editedStartup \u003d startupInList.withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":62,"author":{"gitId":"menatahari"},"content":" EditStartupDescriptor descriptor \u003d new EditStartupDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18"},{"lineNumber":64,"author":{"gitId":"menatahari"},"content":" EditCommand editCommand \u003d new EditCommand(indexLastStartup, descriptor);","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":66,"author":{"gitId":"menatahari"},"content":" String expectedMessage \u003d String.format(","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"menatahari"},"content":" EditCommand.MESSAGE_EDIT_STARTUP_SUCCESS, Messages.format(editedStartup));","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":69,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":70,"author":{"gitId":"menatahari"},"content":" expectedModel.setStartup(lastStartup, editedStartup);","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":77,"author":{"gitId":"menatahari"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_STARTUP, new EditStartupDescriptor());","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"menatahari"},"content":" Startup editedStartup \u003d model.getFilteredStartupList().get(INDEX_FIRST_STARTUP.getZeroBased());","lastModifiedDate":"2024-03-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":80,"author":{"gitId":"menatahari"},"content":" String expectedMessage \u003d String.format(","lastModifiedDate":"2024-03-19"},{"lineNumber":81,"author":{"gitId":"menatahari"},"content":" EditCommand.MESSAGE_EDIT_STARTUP_SUCCESS, Messages.format(editedStartup));","lastModifiedDate":"2024-03-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":83,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":90,"author":{"gitId":"menatahari"},"content":" showStartupAtIndex(model, INDEX_FIRST_STARTUP);","lastModifiedDate":"2024-03-19"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":92,"author":{"gitId":"menatahari"},"content":" Startup startupInFilteredList \u003d model.getFilteredStartupList().get(INDEX_FIRST_STARTUP.getZeroBased());","lastModifiedDate":"2024-03-19"},{"lineNumber":93,"author":{"gitId":"menatahari"},"content":" Startup editedStartup \u003d new StartupBuilder(startupInFilteredList).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":94,"author":{"gitId":"menatahari"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_STARTUP,","lastModifiedDate":"2024-03-19"},{"lineNumber":95,"author":{"gitId":"menatahari"},"content":" new EditStartupDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2024-03-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":97,"author":{"gitId":"menatahari"},"content":" String expectedMessage \u003d String.format(","lastModifiedDate":"2024-03-19"},{"lineNumber":98,"author":{"gitId":"menatahari"},"content":" EditCommand.MESSAGE_EDIT_STARTUP_SUCCESS, Messages.format(editedStartup));","lastModifiedDate":"2024-03-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":101,"author":{"gitId":"menatahari"},"content":" expectedModel.setStartup(model.getFilteredStartupList().get(0), editedStartup);","lastModifiedDate":"2024-03-19"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":107,"author":{"gitId":"menatahari"},"content":" public void execute_duplicateStartupUnfilteredList_failure() {","lastModifiedDate":"2024-03-19"},{"lineNumber":108,"author":{"gitId":"menatahari"},"content":" Startup firstStartup \u003d model.getFilteredStartupList().get(INDEX_FIRST_STARTUP.getZeroBased());","lastModifiedDate":"2024-03-19"},{"lineNumber":109,"author":{"gitId":"menatahari"},"content":" EditStartupDescriptor descriptor \u003d new EditStartupDescriptorBuilder(firstStartup).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":110,"author":{"gitId":"menatahari"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_SECOND_STARTUP, descriptor);","lastModifiedDate":"2024-03-19"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":112,"author":{"gitId":"menatahari"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_STARTUP);","lastModifiedDate":"2024-03-19"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":116,"author":{"gitId":"menatahari"},"content":" public void execute_duplicateStartupFilteredList_failure() {","lastModifiedDate":"2024-03-19"},{"lineNumber":117,"author":{"gitId":"menatahari"},"content":" showStartupAtIndex(model, INDEX_FIRST_STARTUP);","lastModifiedDate":"2024-03-19"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":119,"author":{"gitId":"menatahari"},"content":" // edit startup in filtered list into a duplicate in address book","lastModifiedDate":"2024-03-19"},{"lineNumber":120,"author":{"gitId":"menatahari"},"content":" Startup startupInList \u003d model.getAddressBook().getStartupList().get(INDEX_SECOND_STARTUP.getZeroBased());","lastModifiedDate":"2024-03-19"},{"lineNumber":121,"author":{"gitId":"menatahari"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_STARTUP,","lastModifiedDate":"2024-03-19"},{"lineNumber":122,"author":{"gitId":"menatahari"},"content":" new EditStartupDescriptorBuilder(startupInList).build());","lastModifiedDate":"2024-03-19"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":124,"author":{"gitId":"menatahari"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_STARTUP);","lastModifiedDate":"2024-03-19"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":128,"author":{"gitId":"menatahari"},"content":" public void execute_invalidStartupIndexUnfilteredList_failure() {","lastModifiedDate":"2024-03-19"},{"lineNumber":129,"author":{"gitId":"menatahari"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredStartupList().size() + 1);","lastModifiedDate":"2024-03-19"},{"lineNumber":130,"author":{"gitId":"menatahari"},"content":" EditStartupDescriptor descriptor \u003d new EditStartupDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":131,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":133,"author":{"gitId":"menatahari"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_STARTUP_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-19"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":136,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-18"},{"lineNumber":137,"author":{"gitId":"-"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2017-05-18"},{"lineNumber":138,"author":{"gitId":"-"},"content":" * but smaller than size of address book","lastModifiedDate":"2017-05-18"},{"lineNumber":139,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-18"},{"lineNumber":140,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":141,"author":{"gitId":"menatahari"},"content":" public void execute_invalidStartupIndexFilteredList_failure() {","lastModifiedDate":"2024-03-19"},{"lineNumber":142,"author":{"gitId":"menatahari"},"content":" showStartupAtIndex(model, INDEX_FIRST_STARTUP);","lastModifiedDate":"2024-03-19"},{"lineNumber":143,"author":{"gitId":"menatahari"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_STARTUP;","lastModifiedDate":"2024-03-19"},{"lineNumber":144,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-05-18"},{"lineNumber":145,"author":{"gitId":"menatahari"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getStartupList().size());","lastModifiedDate":"2024-03-19"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":147,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex,","lastModifiedDate":"2018-08-08"},{"lineNumber":148,"author":{"gitId":"menatahari"},"content":" new EditStartupDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2024-03-19"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":150,"author":{"gitId":"menatahari"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_STARTUP_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-19"},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":153,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":155,"author":{"gitId":"menatahari"},"content":" final EditCommand standardCommand \u003d new EditCommand(INDEX_FIRST_STARTUP, DESC_AMY);","lastModifiedDate":"2024-03-19"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":157,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":158,"author":{"gitId":"menatahari"},"content":" EditStartupDescriptor copyDescriptor \u003d new EditStartupDescriptor(DESC_AMY);","lastModifiedDate":"2024-03-19"},{"lineNumber":159,"author":{"gitId":"menatahari"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(INDEX_FIRST_STARTUP, copyDescriptor);","lastModifiedDate":"2024-03-19"},{"lineNumber":160,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":162,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":163,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":166,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":168,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":169,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2017-05-08"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":171,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":172,"author":{"gitId":"menatahari"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_SECOND_STARTUP, DESC_AMY)));","lastModifiedDate":"2024-03-19"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":174,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":175,"author":{"gitId":"menatahari"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_FIRST_STARTUP, DESC_BOB)));","lastModifiedDate":"2024-03-19"},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":178,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23"},{"lineNumber":181,"author":{"gitId":"menatahari"},"content":" EditStartupDescriptor editStartupDescriptor \u003d new EditStartupDescriptor();","lastModifiedDate":"2024-03-19"},{"lineNumber":182,"author":{"gitId":"menatahari"},"content":" EditCommand editCommand \u003d new EditCommand(index, editStartupDescriptor);","lastModifiedDate":"2024-03-19"},{"lineNumber":183,"author":{"gitId":"menatahari"},"content":" String expected \u003d EditCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", editStartupDescriptor\u003d\"","lastModifiedDate":"2024-03-19"},{"lineNumber":184,"author":{"gitId":"menatahari"},"content":" + editStartupDescriptor + \"}\";","lastModifiedDate":"2024-03-19"},{"lineNumber":185,"author":{"gitId":"-"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08"}],"authorContributionMap":{"menatahari":66,"-":122}},{"path":"src/test/java/seedu/address/logic/commands/EditStartupDescriptorTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":16,"author":{"gitId":"menatahari"},"content":"import seedu.address.logic.commands.EditCommand.EditStartupDescriptor;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"menatahari"},"content":"import seedu.address.testutil.EditStartupDescriptorBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":19,"author":{"gitId":"menatahari"},"content":"public class EditStartupDescriptorTest {","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-05"},{"lineNumber":24,"author":{"gitId":"menatahari"},"content":" EditStartupDescriptor descriptorWithSameValues \u003d new EditStartupDescriptor(DESC_AMY);","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(descriptorWithSameValues));","lastModifiedDate":"2017-05-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(DESC_AMY));","lastModifiedDate":"2017-05-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(null));","lastModifiedDate":"2017-05-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(5));","lastModifiedDate":"2017-05-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(DESC_BOB));","lastModifiedDate":"2017-05-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":40,"author":{"gitId":"menatahari"},"content":" EditStartupDescriptor editedAmy \u003d new EditStartupDescriptorBuilder(DESC_AMY).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":44,"author":{"gitId":"menatahari"},"content":" editedAmy \u003d new EditStartupDescriptorBuilder(DESC_AMY).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":48,"author":{"gitId":"menatahari"},"content":" editedAmy \u003d new EditStartupDescriptorBuilder(DESC_AMY).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":52,"author":{"gitId":"menatahari"},"content":" editedAmy \u003d new EditStartupDescriptorBuilder(DESC_AMY).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":56,"author":{"gitId":"menatahari"},"content":" editedAmy \u003d new EditStartupDescriptorBuilder(DESC_AMY).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"menatahari"},"content":" EditStartupDescriptor editStartupDescriptor \u003d new EditStartupDescriptor();","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"menatahari"},"content":" String expected \u003d EditStartupDescriptor.class.getCanonicalName() + \"{name\u003d\"","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"menatahari"},"content":" + editStartupDescriptor.getName().orElse(null) + \", industry\u003d\"","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"menatahari"},"content":" + editStartupDescriptor.getIndustry().orElse(null) + \", funding stage\u003d\"","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"menatahari"},"content":" + editStartupDescriptor.getFundingStage().orElse(null) + \", phone\u003d\"","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"menatahari"},"content":" + editStartupDescriptor.getPhone().orElse(null) + \", email\u003d\"","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"menatahari"},"content":" + editStartupDescriptor.getEmail().orElse(null) + \", address\u003d\"","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"menatahari"},"content":" + editStartupDescriptor.getAddress().orElse(null) + \", tags\u003d\"","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"menatahari"},"content":" + editStartupDescriptor.getTags().orElse(null) + \"}\";","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"menatahari"},"content":" assertEquals(expected, editStartupDescriptor.toString());","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"menatahari":19,"-":54}},{"path":"src/test/java/seedu/address/logic/commands/FindByFundingStageCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"menatahari"},"content":"import static seedu.address.logic.Messages.MESSAGE_STARTUPS_LISTED_OVERVIEW;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2018-08-08"},{"lineNumber":8,"author":{"gitId":"menatahari"},"content":"import static seedu.address.testutil.TypicalStartups.CARL;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"menatahari"},"content":"import static seedu.address.testutil.TypicalStartups.ELLE;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"menatahari"},"content":"import static seedu.address.testutil.TypicalStartups.FIONA;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"menatahari"},"content":"import static seedu.address.testutil.TypicalStartups.getTypicalAddressBook;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.FundingStageContainsKeywordsPredicate;","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"yespiggy"},"content":" * Contains integration tests (interaction with the Model) for {@code FindByFundingStage}.","lastModifiedDate":"2024-03-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"yespiggy"},"content":"public class FindByFundingStageCommandTest {","lastModifiedDate":"2024-03-15"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2018-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-27"},{"lineNumber":32,"author":{"gitId":"yespiggy"},"content":" // Tests for find by names","lastModifiedDate":"2024-03-15"},{"lineNumber":33,"author":{"gitId":"yespiggy"},"content":" FundingStageContainsKeywordsPredicate firstFundingStagePredicate \u003d","lastModifiedDate":"2024-03-15"},{"lineNumber":34,"author":{"gitId":"yespiggy"},"content":" new FundingStageContainsKeywordsPredicate(Collections.singletonList(\"A\"));","lastModifiedDate":"2024-03-15"},{"lineNumber":35,"author":{"gitId":"yespiggy"},"content":" FundingStageContainsKeywordsPredicate secondFundingStagePredicate \u003d","lastModifiedDate":"2024-03-15"},{"lineNumber":36,"author":{"gitId":"yespiggy"},"content":" new FundingStageContainsKeywordsPredicate(Collections.singletonList(\"Seed\"));","lastModifiedDate":"2024-03-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":38,"author":{"gitId":"yespiggy"},"content":" FindCommand findFirstFundingStageCommand \u003d new FindCommand(firstFundingStagePredicate);","lastModifiedDate":"2024-03-15"},{"lineNumber":39,"author":{"gitId":"yespiggy"},"content":" FindCommand findSecondFundingStageCommand \u003d new FindCommand(secondFundingStagePredicate);","lastModifiedDate":"2024-03-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":42,"author":{"gitId":"yespiggy"},"content":" assertTrue(findFirstFundingStageCommand.equals(findFirstFundingStageCommand));","lastModifiedDate":"2024-03-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":45,"author":{"gitId":"yespiggy"},"content":" FindCommand findFirstFundingStageCommandCopy \u003d new FindCommand(firstFundingStagePredicate);","lastModifiedDate":"2024-03-15"},{"lineNumber":46,"author":{"gitId":"yespiggy"},"content":" assertTrue(findFirstFundingStageCommand.equals(findFirstFundingStageCommandCopy));","lastModifiedDate":"2024-03-15"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"yespiggy"},"content":" assertFalse(findFirstFundingStageCommand.equals(1));","lastModifiedDate":"2024-03-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"yespiggy"},"content":" assertFalse(findFirstFundingStageCommand.equals(null));","lastModifiedDate":"2024-03-15"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":54,"author":{"gitId":"menatahari"},"content":" // different startup -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"yespiggy"},"content":" assertFalse(findFirstFundingStageCommand.equals(findSecondFundingStageCommand));","lastModifiedDate":"2024-03-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":59,"author":{"gitId":"menatahari"},"content":" public void execute_zeroKeywords_noStartupFound() {","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"menatahari"},"content":" String expectedMessage \u003d String.format(MESSAGE_STARTUPS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"yespiggy"},"content":" FundingStageContainsKeywordsPredicate predicate \u003d preparePredicate(\" \");","lastModifiedDate":"2024-03-15"},{"lineNumber":62,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":63,"author":{"gitId":"menatahari"},"content":" expectedModel.updateFilteredStartupList(predicate);","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":65,"author":{"gitId":"menatahari"},"content":" assertEquals(Collections.emptyList(), model.getFilteredStartupList());","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":69,"author":{"gitId":"menatahari"},"content":" public void execute_multipleKeywords_multipleStartupsFound() {","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"menatahari"},"content":" String expectedMessage \u003d String.format(MESSAGE_STARTUPS_LISTED_OVERVIEW, 3);","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"yespiggy"},"content":" FundingStageContainsKeywordsPredicate predicate \u003d preparePredicate(\"C\");","lastModifiedDate":"2024-03-15"},{"lineNumber":72,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":73,"author":{"gitId":"menatahari"},"content":" expectedModel.updateFilteredStartupList(predicate);","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":75,"author":{"gitId":"menatahari"},"content":" assertEquals(Arrays.asList(CARL, ELLE, FIONA), model.getFilteredStartupList());","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":78,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"yespiggy"},"content":" FundingStageContainsKeywordsPredicate predicate \u003d","lastModifiedDate":"2024-03-15"},{"lineNumber":81,"author":{"gitId":"yespiggy"},"content":" new FundingStageContainsKeywordsPredicate(Arrays.asList(\"keyword\"));","lastModifiedDate":"2024-03-15"},{"lineNumber":82,"author":{"gitId":"-"},"content":" FindCommand findCommand \u003d new FindCommand(predicate);","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" String expected \u003d FindCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertEquals(expected, findCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-12"},{"lineNumber":88,"author":{"gitId":"yespiggy"},"content":" * Parses {@code userInput} into a {@code FundingStageContainsKeywordsPredicate}.","lastModifiedDate":"2024-03-15"},{"lineNumber":89,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":90,"author":{"gitId":"yespiggy"},"content":" private FundingStageContainsKeywordsPredicate preparePredicate(String userInput) {","lastModifiedDate":"2024-03-15"},{"lineNumber":91,"author":{"gitId":"yespiggy"},"content":" return new FundingStageContainsKeywordsPredicate(Arrays.asList(userInput.split(\"\\\\s+\")));","lastModifiedDate":"2024-03-15"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":93,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"menatahari":15,"yespiggy":22,"-":56}},{"path":"src/test/java/seedu/address/logic/commands/FindByIndustryCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"menatahari"},"content":"import static seedu.address.logic.Messages.MESSAGE_STARTUPS_LISTED_OVERVIEW;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2018-08-08"},{"lineNumber":8,"author":{"gitId":"menatahari"},"content":"import static seedu.address.testutil.TypicalStartups.CARL;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"menatahari"},"content":"import static seedu.address.testutil.TypicalStartups.ELLE;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"menatahari"},"content":"import static seedu.address.testutil.TypicalStartups.FIONA;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"menatahari"},"content":"import static seedu.address.testutil.TypicalStartups.getTypicalAddressBook;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.IndustryContainsKeywordsPredicate;","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"yespiggy"},"content":" * Contains integration tests (interaction with the Model) for {@code FindByIndustryCommand}.","lastModifiedDate":"2024-03-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"yespiggy"},"content":"public class FindByIndustryCommandTest {","lastModifiedDate":"2024-03-15"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2018-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-27"},{"lineNumber":32,"author":{"gitId":"yespiggy"},"content":" // Tests for find by names","lastModifiedDate":"2024-03-15"},{"lineNumber":33,"author":{"gitId":"yespiggy"},"content":" IndustryContainsKeywordsPredicate firstIndustryPredicate \u003d","lastModifiedDate":"2024-03-15"},{"lineNumber":34,"author":{"gitId":"yespiggy"},"content":" new IndustryContainsKeywordsPredicate(Collections.singletonList(\"first\"));","lastModifiedDate":"2024-03-15"},{"lineNumber":35,"author":{"gitId":"yespiggy"},"content":" IndustryContainsKeywordsPredicate secondIndustryPredicate \u003d","lastModifiedDate":"2024-03-15"},{"lineNumber":36,"author":{"gitId":"yespiggy"},"content":" new IndustryContainsKeywordsPredicate(Collections.singletonList(\"second\"));","lastModifiedDate":"2024-03-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":38,"author":{"gitId":"yespiggy"},"content":" FindCommand findFirstIndustryCommand \u003d new FindCommand(firstIndustryPredicate);","lastModifiedDate":"2024-03-15"},{"lineNumber":39,"author":{"gitId":"yespiggy"},"content":" FindCommand findSecondIndustryCommand \u003d new FindCommand(secondIndustryPredicate);","lastModifiedDate":"2024-03-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":42,"author":{"gitId":"yespiggy"},"content":" assertTrue(findFirstIndustryCommand.equals(findFirstIndustryCommand));","lastModifiedDate":"2024-03-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":45,"author":{"gitId":"yespiggy"},"content":" FindCommand findFirstIndustryCommandCopy \u003d new FindCommand(firstIndustryPredicate);","lastModifiedDate":"2024-03-15"},{"lineNumber":46,"author":{"gitId":"yespiggy"},"content":" assertTrue(findFirstIndustryCommand.equals(findFirstIndustryCommandCopy));","lastModifiedDate":"2024-03-15"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"yespiggy"},"content":" assertFalse(findFirstIndustryCommand.equals(1));","lastModifiedDate":"2024-03-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"yespiggy"},"content":" assertFalse(findFirstIndustryCommand.equals(null));","lastModifiedDate":"2024-03-15"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":54,"author":{"gitId":"menatahari"},"content":" // different startup -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"yespiggy"},"content":" assertFalse(findFirstIndustryCommand.equals(findSecondIndustryCommand));","lastModifiedDate":"2024-03-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":59,"author":{"gitId":"menatahari"},"content":" public void execute_zeroKeywords_noStartupFound() {","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"menatahari"},"content":" String expectedMessage \u003d String.format(MESSAGE_STARTUPS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"yespiggy"},"content":" IndustryContainsKeywordsPredicate predicate \u003d preparePredicate(\" \");","lastModifiedDate":"2024-03-15"},{"lineNumber":62,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":63,"author":{"gitId":"menatahari"},"content":" expectedModel.updateFilteredStartupList(predicate);","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":65,"author":{"gitId":"menatahari"},"content":" assertEquals(Collections.emptyList(), model.getFilteredStartupList());","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":69,"author":{"gitId":"menatahari"},"content":" public void execute_multipleKeywords_multipleStartupsFound() {","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"menatahari"},"content":" String expectedMessage \u003d String.format(MESSAGE_STARTUPS_LISTED_OVERVIEW, 3);","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"yespiggy"},"content":" IndustryContainsKeywordsPredicate predicate \u003d preparePredicate(\"web3\");","lastModifiedDate":"2024-03-15"},{"lineNumber":72,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":73,"author":{"gitId":"menatahari"},"content":" expectedModel.updateFilteredStartupList(predicate);","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":75,"author":{"gitId":"menatahari"},"content":" assertEquals(Arrays.asList(CARL, ELLE, FIONA), model.getFilteredStartupList());","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":78,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"yespiggy"},"content":" IndustryContainsKeywordsPredicate predicate \u003d new IndustryContainsKeywordsPredicate(Arrays.asList(\"keyword\"));","lastModifiedDate":"2024-03-15"},{"lineNumber":81,"author":{"gitId":"-"},"content":" FindCommand findCommand \u003d new FindCommand(predicate);","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" String expected \u003d FindCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertEquals(expected, findCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-12"},{"lineNumber":87,"author":{"gitId":"yespiggy"},"content":" * Parses {@code userInput} into a {@code IndustryContainsKeywordsPredicate}.","lastModifiedDate":"2024-03-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":89,"author":{"gitId":"yespiggy"},"content":" private IndustryContainsKeywordsPredicate preparePredicate(String userInput) {","lastModifiedDate":"2024-03-15"},{"lineNumber":90,"author":{"gitId":"yespiggy"},"content":" return new IndustryContainsKeywordsPredicate(Arrays.asList(userInput.split(\"\\\\s+\")));","lastModifiedDate":"2024-03-15"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":92,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"menatahari":15,"yespiggy":21,"-":56}},{"path":"src/test/java/seedu/address/logic/commands/FindByNameCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"menatahari"},"content":"import static seedu.address.logic.Messages.MESSAGE_STARTUPS_LISTED_OVERVIEW;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2018-08-08"},{"lineNumber":8,"author":{"gitId":"menatahari"},"content":"import static seedu.address.testutil.TypicalStartups.CARL;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"menatahari"},"content":"import static seedu.address.testutil.TypicalStartups.ELLE;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"menatahari"},"content":"import static seedu.address.testutil.TypicalStartups.FIONA;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"menatahari"},"content":"import static seedu.address.testutil.TypicalStartups.getTypicalAddressBook;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"yespiggy"},"content":" * Contains integration tests (interaction with the Model) for {@code FindByNameCommand}.","lastModifiedDate":"2024-03-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"yespiggy"},"content":"public class FindByNameCommandTest {","lastModifiedDate":"2024-03-15"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2018-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-27"},{"lineNumber":32,"author":{"gitId":"yespiggy"},"content":" // Tests for find by names","lastModifiedDate":"2024-03-15"},{"lineNumber":33,"author":{"gitId":"yespiggy"},"content":" NameContainsKeywordsPredicate firstNamePredicate \u003d","lastModifiedDate":"2024-03-15"},{"lineNumber":34,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"first\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":35,"author":{"gitId":"yespiggy"},"content":" NameContainsKeywordsPredicate secondNamePredicate \u003d","lastModifiedDate":"2024-03-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"second\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":38,"author":{"gitId":"yespiggy"},"content":" FindCommand findFirstNameCommand \u003d new FindCommand(firstNamePredicate);","lastModifiedDate":"2024-03-15"},{"lineNumber":39,"author":{"gitId":"yespiggy"},"content":" FindCommand findSecondNameCommand \u003d new FindCommand(secondNamePredicate);","lastModifiedDate":"2024-03-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":42,"author":{"gitId":"yespiggy"},"content":" assertTrue(findFirstNameCommand.equals(findFirstNameCommand));","lastModifiedDate":"2024-03-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":45,"author":{"gitId":"yespiggy"},"content":" FindCommand findFirstNameCommandCopy \u003d new FindCommand(firstNamePredicate);","lastModifiedDate":"2024-03-15"},{"lineNumber":46,"author":{"gitId":"yespiggy"},"content":" assertTrue(findFirstNameCommand.equals(findFirstNameCommandCopy));","lastModifiedDate":"2024-03-15"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"yespiggy"},"content":" assertFalse(findFirstNameCommand.equals(1));","lastModifiedDate":"2024-03-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"yespiggy"},"content":" assertFalse(findFirstNameCommand.equals(null));","lastModifiedDate":"2024-03-15"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":54,"author":{"gitId":"menatahari"},"content":" // different startup -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"yespiggy"},"content":" assertFalse(findFirstNameCommand.equals(findSecondNameCommand));","lastModifiedDate":"2024-03-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":59,"author":{"gitId":"menatahari"},"content":" public void execute_zeroKeywords_noStartupFound() {","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"menatahari"},"content":" String expectedMessage \u003d String.format(MESSAGE_STARTUPS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\" \");","lastModifiedDate":"2018-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":63,"author":{"gitId":"menatahari"},"content":" expectedModel.updateFilteredStartupList(predicate);","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":65,"author":{"gitId":"menatahari"},"content":" assertEquals(Collections.emptyList(), model.getFilteredStartupList());","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":69,"author":{"gitId":"menatahari"},"content":" public void execute_multipleKeywords_multipleStartupsFound() {","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"menatahari"},"content":" String expectedMessage \u003d String.format(MESSAGE_STARTUPS_LISTED_OVERVIEW, 3);","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\"Kurz Elle Kunz\");","lastModifiedDate":"2018-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":73,"author":{"gitId":"menatahari"},"content":" expectedModel.updateFilteredStartupList(predicate);","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":75,"author":{"gitId":"menatahari"},"content":" assertEquals(Arrays.asList(CARL, ELLE, FIONA), model.getFilteredStartupList());","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":78,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"keyword\"));","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" FindCommand findCommand \u003d new FindCommand(predicate);","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" String expected \u003d FindCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertEquals(expected, findCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-12"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Parses {@code userInput} into a {@code NameContainsKeywordsPredicate}.","lastModifiedDate":"2018-08-08"},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":89,"author":{"gitId":"-"},"content":" private NameContainsKeywordsPredicate preparePredicate(String userInput) {","lastModifiedDate":"2018-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":" return new NameContainsKeywordsPredicate(Arrays.asList(userInput.split(\"\\\\s+\")));","lastModifiedDate":"2018-08-08"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":92,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"menatahari":15,"yespiggy":13,"-":64}},{"path":"src/test/java/seedu/address/logic/commands/ListCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":4,"author":{"gitId":"menatahari"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showStartupAtIndex;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"menatahari"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_STARTUP;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"menatahari"},"content":"import static seedu.address.testutil.TypicalStartups.getTypicalAddressBook;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for ListCommand.","lastModifiedDate":"2017-06-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class ListCommandTest {","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private Model expectedModel;","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void execute_listIsNotFiltered_showsSameList() {","lastModifiedDate":"2017-08-15"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ListCommand(), model, ListCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public void execute_listIsFiltered_showsEverything() {","lastModifiedDate":"2017-08-15"},{"lineNumber":36,"author":{"gitId":"menatahari"},"content":" showStartupAtIndex(model, INDEX_FIRST_STARTUP);","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ListCommand(), model, ListCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"menatahari":4,"-":35}},{"path":"src/test/java/seedu/address/logic/commands/NoteCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"dwangwk"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"dwangwk"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"dwangwk"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"dwangwk"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"dwangwk"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY_N;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"dwangwk"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB_N;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"dwangwk"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"dwangwk"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"dwangwk"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_STARTUP;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"dwangwk"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_STARTUP;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"dwangwk"},"content":"import static seedu.address.testutil.TypicalStartups.getTypicalAddressBook;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"dwangwk"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"dwangwk"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"dwangwk"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"dwangwk"},"content":"import seedu.address.logic.commands.NoteCommand.NoteStartupDescriptor;","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"dwangwk"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"dwangwk"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"dwangwk"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"dwangwk"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"dwangwk"},"content":"import seedu.address.model.startup.Note;","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"dwangwk"},"content":"import seedu.address.model.startup.Startup;","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"dwangwk"},"content":"import seedu.address.testutil.NoteStartupDescriptorBuilder;","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"dwangwk"},"content":"import seedu.address.testutil.StartupBuilder;","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"dwangwk"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"dwangwk"},"content":" * Contains integration tests (interaction with the Model) and unit tests for NoteCommand.","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"dwangwk"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"dwangwk"},"content":"public class NoteCommandTest {","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"dwangwk"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"dwangwk"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"dwangwk"},"content":" public void execute_noteFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"dwangwk"},"content":" // Setup","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"dwangwk"},"content":" Startup startupToEdit \u003d model.getFilteredStartupList().get(INDEX_FIRST_STARTUP.getZeroBased());","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"dwangwk"},"content":" Note updatedNote \u003d new Note(\"Updated note content\");","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"dwangwk"},"content":" NoteStartupDescriptor descriptor \u003d new NoteStartupDescriptorBuilder().withNote(updatedNote.toString()).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"dwangwk"},"content":" NoteCommand noteCommand \u003d new NoteCommand(INDEX_FIRST_STARTUP, descriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"dwangwk"},"content":" // Expected outcome","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"dwangwk"},"content":" Startup expectedStartup \u003d new StartupBuilder(startupToEdit).withNote(updatedNote.toString()).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"dwangwk"},"content":" String expectedMessage \u003d String.format(NoteCommand.MESSAGE_EDIT_STARTUP_SUCCESS,","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"dwangwk"},"content":" Messages.format(expectedStartup));","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"dwangwk"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"dwangwk"},"content":" expectedModel.setStartup(startupToEdit, expectedStartup);","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"dwangwk"},"content":" // Assert command success","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"dwangwk"},"content":" assertCommandSuccess(noteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"dwangwk"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"dwangwk"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"dwangwk"},"content":" public void execute_invalidStartupIndexUnfilteredList_failure() {","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"dwangwk"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredStartupList().size() + 1);","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"dwangwk"},"content":" NoteStartupDescriptor descriptor \u003d new NoteStartupDescriptorBuilder().withNote(\"Some note\").build();","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"dwangwk"},"content":" NoteCommand noteCommand \u003d new NoteCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"dwangwk"},"content":" assertCommandFailure(noteCommand, model, Messages.MESSAGE_INVALID_STARTUP_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"dwangwk"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"dwangwk"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"dwangwk"},"content":" public void equals() {","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"dwangwk"},"content":" final NoteCommand standardCommand \u003d new NoteCommand(INDEX_FIRST_STARTUP, DESC_AMY_N);","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"dwangwk"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"dwangwk"},"content":" NoteStartupDescriptor copyDescriptor \u003d new NoteStartupDescriptor(DESC_AMY_N);","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"dwangwk"},"content":" NoteCommand commandWithSameValues \u003d new NoteCommand(INDEX_FIRST_STARTUP, copyDescriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"dwangwk"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"dwangwk"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"dwangwk"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"dwangwk"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"dwangwk"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"dwangwk"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"dwangwk"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"dwangwk"},"content":" // different index -\u003e returns false","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"dwangwk"},"content":" assertFalse(standardCommand.equals(new NoteCommand(INDEX_SECOND_STARTUP, DESC_AMY_N)));","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"dwangwk"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"dwangwk"},"content":" assertFalse(standardCommand.equals(new NoteCommand(INDEX_FIRST_STARTUP, DESC_BOB_N)));","lastModifiedDate":"2024-03-20"},{"lineNumber":88,"author":{"gitId":"dwangwk"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":89,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":90,"author":{"gitId":"dwangwk"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":91,"author":{"gitId":"dwangwk"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-20"},{"lineNumber":92,"author":{"gitId":"dwangwk"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-03-20"},{"lineNumber":93,"author":{"gitId":"dwangwk"},"content":" NoteStartupDescriptor noteStartupDescriptor \u003d new NoteStartupDescriptor();","lastModifiedDate":"2024-03-20"},{"lineNumber":94,"author":{"gitId":"dwangwk"},"content":" NoteCommand noteCommand \u003d new NoteCommand(index, noteStartupDescriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":95,"author":{"gitId":"dwangwk"},"content":" String expected \u003d NoteCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", noteStartupDescriptor\u003d\"","lastModifiedDate":"2024-03-20"},{"lineNumber":96,"author":{"gitId":"dwangwk"},"content":" + noteStartupDescriptor + \"}\";","lastModifiedDate":"2024-03-20"},{"lineNumber":97,"author":{"gitId":"dwangwk"},"content":" assertEquals(expected, noteCommand.toString());","lastModifiedDate":"2024-03-20"},{"lineNumber":98,"author":{"gitId":"dwangwk"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":99,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":100,"author":{"gitId":"dwangwk"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"dwangwk":100}},{"path":"src/test/java/seedu/address/logic/parser/AddCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-15"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":6,"author":{"gitId":"menatahari"},"content":"import static seedu.address.testutil.TypicalStartups.AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"menatahari"},"content":"import static seedu.address.testutil.TypicalStartups.BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-15"},{"lineNumber":13,"author":{"gitId":"yeoshuheng"},"content":"import seedu.address.logic.commands.CommandTestUtil;","lastModifiedDate":"2024-02-25"},{"lineNumber":14,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Address;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Email;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.FundingStage;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Industry;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Name;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Phone;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-06-15"},{"lineNumber":22,"author":{"gitId":"menatahari"},"content":"import seedu.address.testutil.StartupBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2017-06-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":29,"author":{"gitId":"menatahari"},"content":" Startup expectedStartup \u003d new StartupBuilder(BOB).withTags(CommandTestUtil.VALID_TAG_FRIEND).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":32,"author":{"gitId":"yeoshuheng"},"content":" assertParseSuccess(parser, CommandTestUtil.PREAMBLE_WHITESPACE","lastModifiedDate":"2024-02-25"},{"lineNumber":33,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.NAME_DESC_BOB + CommandTestUtil.PHONE_DESC_BOB","lastModifiedDate":"2024-02-25"},{"lineNumber":34,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.EMAIL_DESC_BOB","lastModifiedDate":"2024-02-25"},{"lineNumber":35,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.INDUSTRY_DESC_BOB + CommandTestUtil.FUNDING_DESC_BOB","lastModifiedDate":"2024-02-25"},{"lineNumber":36,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.ADDRESS_DESC_BOB","lastModifiedDate":"2024-02-25"},{"lineNumber":37,"author":{"gitId":"menatahari"},"content":" + CommandTestUtil.TAG_DESC_FRIEND, new AddCommand(expectedStartup));","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":" // multiple tags - all accepted","lastModifiedDate":"2017-06-15"},{"lineNumber":41,"author":{"gitId":"menatahari"},"content":" Startup expectedStartupMultipleTags \u003d new StartupBuilder(BOB).withTags(","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"yeoshuheng"},"content":" CommandTestUtil.VALID_TAG_FRIEND, CommandTestUtil.VALID_TAG_HUSBAND)","lastModifiedDate":"2024-02-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-07-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":45,"author":{"gitId":"yeoshuheng"},"content":" CommandTestUtil.NAME_DESC_BOB + CommandTestUtil.PHONE_DESC_BOB","lastModifiedDate":"2024-02-25"},{"lineNumber":46,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.EMAIL_DESC_BOB + CommandTestUtil.ADDRESS_DESC_BOB","lastModifiedDate":"2024-02-25"},{"lineNumber":47,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.INDUSTRY_DESC_BOB + CommandTestUtil.FUNDING_DESC_BOB","lastModifiedDate":"2024-02-25"},{"lineNumber":48,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.TAG_DESC_HUSBAND + CommandTestUtil.TAG_DESC_FRIEND,","lastModifiedDate":"2024-02-25"},{"lineNumber":49,"author":{"gitId":"menatahari"},"content":" new AddCommand(expectedStartupMultipleTags));","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":54,"author":{"gitId":"menatahari"},"content":" String validExpectedStartupString \u003d CommandTestUtil.NAME_DESC_BOB","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.INDUSTRY_DESC_BOB + CommandTestUtil.FUNDING_DESC_BOB","lastModifiedDate":"2024-02-25"},{"lineNumber":56,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.PHONE_DESC_BOB + CommandTestUtil.EMAIL_DESC_BOB","lastModifiedDate":"2024-02-25"},{"lineNumber":57,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.ADDRESS_DESC_BOB + CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2024-02-25"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14"},{"lineNumber":60,"author":{"gitId":"menatahari"},"content":" assertParseFailure(parser, CommandTestUtil.NAME_DESC_AMY + validExpectedStartupString,","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"yeoshuheng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(CliSyntax.PREFIX_NAME));","lastModifiedDate":"2024-03-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":63,"author":{"gitId":"-"},"content":" // multiple phones","lastModifiedDate":"2023-07-14"},{"lineNumber":64,"author":{"gitId":"menatahari"},"content":" assertParseFailure(parser, CommandTestUtil.PHONE_DESC_AMY + validExpectedStartupString,","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"yeoshuheng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(CliSyntax.PREFIX_PHONE));","lastModifiedDate":"2024-03-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14"},{"lineNumber":68,"author":{"gitId":"menatahari"},"content":" assertParseFailure(parser, CommandTestUtil.EMAIL_DESC_AMY + validExpectedStartupString,","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"yeoshuheng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(CliSyntax.PREFIX_EMAIL));","lastModifiedDate":"2024-03-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // multiple addresses","lastModifiedDate":"2023-07-14"},{"lineNumber":72,"author":{"gitId":"menatahari"},"content":" assertParseFailure(parser, CommandTestUtil.ADDRESS_DESC_AMY + validExpectedStartupString,","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"yeoshuheng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(CliSyntax.PREFIX_ADDRESS));","lastModifiedDate":"2024-03-05"},{"lineNumber":74,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":75,"author":{"gitId":"yeoshuheng"},"content":" // multiple funding stage","lastModifiedDate":"2024-03-05"},{"lineNumber":76,"author":{"gitId":"menatahari"},"content":" assertParseFailure(parser, CommandTestUtil.FUNDING_DESC_AMY + validExpectedStartupString,","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"yeoshuheng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(CliSyntax.PREFIX_FUNDING_STAGE));","lastModifiedDate":"2024-03-05"},{"lineNumber":78,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":79,"author":{"gitId":"yeoshuheng"},"content":" // multiple industry","lastModifiedDate":"2024-03-05"},{"lineNumber":80,"author":{"gitId":"menatahari"},"content":" assertParseFailure(parser, CommandTestUtil.INDUSTRY_DESC_AMY + validExpectedStartupString,","lastModifiedDate":"2024-03-19"},{"lineNumber":81,"author":{"gitId":"yeoshuheng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(CliSyntax.PREFIX_INDUSTRY));","lastModifiedDate":"2024-03-05"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":83,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":85,"author":{"gitId":"menatahari"},"content":" validExpectedStartupString + CommandTestUtil.PHONE_DESC_AMY","lastModifiedDate":"2024-03-19"},{"lineNumber":86,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.EMAIL_DESC_AMY + CommandTestUtil.NAME_DESC_AMY","lastModifiedDate":"2024-02-25"},{"lineNumber":87,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.ADDRESS_DESC_AMY,","lastModifiedDate":"2024-03-05"},{"lineNumber":88,"author":{"gitId":"yeoshuheng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(CliSyntax.PREFIX_NAME,","lastModifiedDate":"2024-03-05"},{"lineNumber":89,"author":{"gitId":"yeoshuheng"},"content":" CliSyntax.PREFIX_ADDRESS, CliSyntax.PREFIX_EMAIL, CliSyntax.PREFIX_PHONE));","lastModifiedDate":"2024-03-05"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":91,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":93,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":94,"author":{"gitId":"menatahari"},"content":" assertParseFailure(parser, CommandTestUtil.INVALID_NAME_DESC + validExpectedStartupString,","lastModifiedDate":"2024-03-19"},{"lineNumber":95,"author":{"gitId":"yeoshuheng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(CliSyntax.PREFIX_NAME));","lastModifiedDate":"2024-03-05"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":97,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":98,"author":{"gitId":"menatahari"},"content":" assertParseFailure(parser, CommandTestUtil.INVALID_EMAIL_DESC + validExpectedStartupString,","lastModifiedDate":"2024-03-19"},{"lineNumber":99,"author":{"gitId":"yeoshuheng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(CliSyntax.PREFIX_EMAIL));","lastModifiedDate":"2024-03-05"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":101,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":102,"author":{"gitId":"menatahari"},"content":" assertParseFailure(parser, CommandTestUtil.INVALID_PHONE_DESC + validExpectedStartupString,","lastModifiedDate":"2024-03-19"},{"lineNumber":103,"author":{"gitId":"yeoshuheng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(CliSyntax.PREFIX_PHONE));","lastModifiedDate":"2024-03-05"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":105,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":106,"author":{"gitId":"menatahari"},"content":" assertParseFailure(parser, CommandTestUtil.INVALID_ADDRESS_DESC + validExpectedStartupString,","lastModifiedDate":"2024-03-19"},{"lineNumber":107,"author":{"gitId":"yeoshuheng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(CliSyntax.PREFIX_ADDRESS));","lastModifiedDate":"2024-03-05"},{"lineNumber":108,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":109,"author":{"gitId":"yeoshuheng"},"content":" // invalid industry","lastModifiedDate":"2024-03-05"},{"lineNumber":110,"author":{"gitId":"menatahari"},"content":" assertParseFailure(parser, CommandTestUtil.INVALID_INDUSTRY_DESC + validExpectedStartupString,","lastModifiedDate":"2024-03-19"},{"lineNumber":111,"author":{"gitId":"yeoshuheng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(CliSyntax.PREFIX_INDUSTRY));","lastModifiedDate":"2024-03-05"},{"lineNumber":112,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":113,"author":{"gitId":"yeoshuheng"},"content":" // invalid funding stage","lastModifiedDate":"2024-03-05"},{"lineNumber":114,"author":{"gitId":"menatahari"},"content":" assertParseFailure(parser, CommandTestUtil.INVALID_FUNDING_DESC + validExpectedStartupString,","lastModifiedDate":"2024-03-19"},{"lineNumber":115,"author":{"gitId":"yeoshuheng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(CliSyntax.PREFIX_FUNDING_STAGE));","lastModifiedDate":"2024-03-05"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":117,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":120,"author":{"gitId":"menatahari"},"content":" assertParseFailure(parser, validExpectedStartupString + CommandTestUtil.INVALID_NAME_DESC,","lastModifiedDate":"2024-03-19"},{"lineNumber":121,"author":{"gitId":"yeoshuheng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(CliSyntax.PREFIX_NAME));","lastModifiedDate":"2024-03-05"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":124,"author":{"gitId":"menatahari"},"content":" assertParseFailure(parser, validExpectedStartupString + CommandTestUtil.INVALID_EMAIL_DESC,","lastModifiedDate":"2024-03-19"},{"lineNumber":125,"author":{"gitId":"yeoshuheng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(CliSyntax.PREFIX_EMAIL));","lastModifiedDate":"2024-03-05"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":127,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":128,"author":{"gitId":"menatahari"},"content":" assertParseFailure(parser, validExpectedStartupString + CommandTestUtil.INVALID_PHONE_DESC,","lastModifiedDate":"2024-03-19"},{"lineNumber":129,"author":{"gitId":"yeoshuheng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(CliSyntax.PREFIX_PHONE));","lastModifiedDate":"2024-03-05"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":131,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":132,"author":{"gitId":"menatahari"},"content":" assertParseFailure(parser, validExpectedStartupString + CommandTestUtil.INVALID_ADDRESS_DESC,","lastModifiedDate":"2024-03-19"},{"lineNumber":133,"author":{"gitId":"yeoshuheng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(CliSyntax.PREFIX_ADDRESS));","lastModifiedDate":"2024-03-05"},{"lineNumber":134,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":135,"author":{"gitId":"yeoshuheng"},"content":" // invalid industry","lastModifiedDate":"2024-03-05"},{"lineNumber":136,"author":{"gitId":"menatahari"},"content":" assertParseFailure(parser, validExpectedStartupString + CommandTestUtil.INVALID_INDUSTRY_DESC,","lastModifiedDate":"2024-03-19"},{"lineNumber":137,"author":{"gitId":"yeoshuheng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(CliSyntax.PREFIX_INDUSTRY));","lastModifiedDate":"2024-03-05"},{"lineNumber":138,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":139,"author":{"gitId":"yeoshuheng"},"content":" // invalid funding stage","lastModifiedDate":"2024-03-05"},{"lineNumber":140,"author":{"gitId":"menatahari"},"content":" assertParseFailure(parser, validExpectedStartupString + CommandTestUtil.INVALID_FUNDING_DESC,","lastModifiedDate":"2024-03-19"},{"lineNumber":141,"author":{"gitId":"yeoshuheng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(CliSyntax.PREFIX_FUNDING_STAGE));","lastModifiedDate":"2024-03-05"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":144,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":145,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":146,"author":{"gitId":"-"},"content":" // zero tags","lastModifiedDate":"2017-06-15"},{"lineNumber":147,"author":{"gitId":"menatahari"},"content":" Startup expectedStartup \u003d new StartupBuilder(AMY).withTags().build();","lastModifiedDate":"2024-03-19"},{"lineNumber":148,"author":{"gitId":"yeoshuheng"},"content":" assertParseSuccess(parser, CommandTestUtil.NAME_DESC_AMY","lastModifiedDate":"2024-02-25"},{"lineNumber":149,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.INDUSTRY_DESC_AMY","lastModifiedDate":"2024-02-25"},{"lineNumber":150,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.FUNDING_DESC_AMY + CommandTestUtil.PHONE_DESC_AMY","lastModifiedDate":"2024-02-25"},{"lineNumber":151,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.EMAIL_DESC_AMY + CommandTestUtil.ADDRESS_DESC_AMY,","lastModifiedDate":"2024-02-25"},{"lineNumber":152,"author":{"gitId":"menatahari"},"content":" new AddCommand(expectedStartup));","lastModifiedDate":"2024-03-19"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":155,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":156,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":157,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":159,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":160,"author":{"gitId":"yeoshuheng"},"content":" assertParseFailure(parser, CommandTestUtil.VALID_NAME_BOB","lastModifiedDate":"2024-02-25"},{"lineNumber":161,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.FUNDING_DESC_BOB + CommandTestUtil.INDUSTRY_DESC_BOB","lastModifiedDate":"2024-02-25"},{"lineNumber":162,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.PHONE_DESC_BOB + CommandTestUtil.EMAIL_DESC_BOB","lastModifiedDate":"2024-02-25"},{"lineNumber":163,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.ADDRESS_DESC_BOB,","lastModifiedDate":"2024-02-25"},{"lineNumber":164,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":166,"author":{"gitId":"-"},"content":" // missing phone prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":167,"author":{"gitId":"yeoshuheng"},"content":" assertParseFailure(parser, CommandTestUtil.NAME_DESC_BOB","lastModifiedDate":"2024-02-25"},{"lineNumber":168,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.FUNDING_DESC_BOB + CommandTestUtil.INDUSTRY_DESC_BOB","lastModifiedDate":"2024-02-25"},{"lineNumber":169,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.VALID_PHONE_BOB","lastModifiedDate":"2024-02-25"},{"lineNumber":170,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.EMAIL_DESC_BOB + CommandTestUtil.ADDRESS_DESC_BOB,","lastModifiedDate":"2024-02-25"},{"lineNumber":171,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":173,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":174,"author":{"gitId":"yeoshuheng"},"content":" assertParseFailure(parser, CommandTestUtil.NAME_DESC_BOB","lastModifiedDate":"2024-02-25"},{"lineNumber":175,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.FUNDING_DESC_BOB + CommandTestUtil.INDUSTRY_DESC_BOB","lastModifiedDate":"2024-02-25"},{"lineNumber":176,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.PHONE_DESC_BOB + CommandTestUtil.VALID_EMAIL_BOB","lastModifiedDate":"2024-02-25"},{"lineNumber":177,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.ADDRESS_DESC_BOB,","lastModifiedDate":"2024-02-25"},{"lineNumber":178,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":180,"author":{"gitId":"-"},"content":" // missing address prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":181,"author":{"gitId":"yeoshuheng"},"content":" assertParseFailure(parser, CommandTestUtil.NAME_DESC_BOB","lastModifiedDate":"2024-02-25"},{"lineNumber":182,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.FUNDING_DESC_BOB + CommandTestUtil.INDUSTRY_DESC_BOB","lastModifiedDate":"2024-02-25"},{"lineNumber":183,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.PHONE_DESC_BOB + CommandTestUtil.EMAIL_DESC_BOB","lastModifiedDate":"2024-02-25"},{"lineNumber":184,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.VALID_ADDRESS_BOB,","lastModifiedDate":"2024-02-25"},{"lineNumber":185,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":187,"author":{"gitId":"yeoshuheng"},"content":" // missing industry prefix","lastModifiedDate":"2024-03-05"},{"lineNumber":188,"author":{"gitId":"yeoshuheng"},"content":" assertParseFailure(parser, CommandTestUtil.NAME_DESC_BOB","lastModifiedDate":"2024-03-05"},{"lineNumber":189,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.FUNDING_DESC_BOB + CommandTestUtil.ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-05"},{"lineNumber":190,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.PHONE_DESC_BOB + CommandTestUtil.EMAIL_DESC_BOB","lastModifiedDate":"2024-03-05"},{"lineNumber":191,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.VALID_ADDRESS_BOB,","lastModifiedDate":"2024-03-05"},{"lineNumber":192,"author":{"gitId":"yeoshuheng"},"content":" expectedMessage);","lastModifiedDate":"2024-03-05"},{"lineNumber":193,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":194,"author":{"gitId":"yeoshuheng"},"content":" // missing funding stage prefix","lastModifiedDate":"2024-03-05"},{"lineNumber":195,"author":{"gitId":"yeoshuheng"},"content":" assertParseFailure(parser, CommandTestUtil.NAME_DESC_BOB","lastModifiedDate":"2024-03-05"},{"lineNumber":196,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.ADDRESS_DESC_BOB + CommandTestUtil.INDUSTRY_DESC_BOB","lastModifiedDate":"2024-03-05"},{"lineNumber":197,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.PHONE_DESC_BOB + CommandTestUtil.EMAIL_DESC_BOB","lastModifiedDate":"2024-03-05"},{"lineNumber":198,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.VALID_ADDRESS_BOB,","lastModifiedDate":"2024-03-05"},{"lineNumber":199,"author":{"gitId":"yeoshuheng"},"content":" expectedMessage);","lastModifiedDate":"2024-03-05"},{"lineNumber":200,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":201,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15"},{"lineNumber":202,"author":{"gitId":"yeoshuheng"},"content":" assertParseFailure(parser, CommandTestUtil.VALID_NAME_BOB","lastModifiedDate":"2024-02-25"},{"lineNumber":203,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.FUNDING_DESC_BOB + CommandTestUtil.INDUSTRY_DESC_BOB","lastModifiedDate":"2024-02-25"},{"lineNumber":204,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.VALID_PHONE_BOB + CommandTestUtil.VALID_EMAIL_BOB","lastModifiedDate":"2024-02-25"},{"lineNumber":205,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.VALID_ADDRESS_BOB,","lastModifiedDate":"2024-02-25"},{"lineNumber":206,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":209,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":210,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":211,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15"},{"lineNumber":212,"author":{"gitId":"yeoshuheng"},"content":" assertParseFailure(parser, CommandTestUtil.INVALID_NAME_DESC","lastModifiedDate":"2024-02-25"},{"lineNumber":213,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.PHONE_DESC_BOB + CommandTestUtil.EMAIL_DESC_BOB","lastModifiedDate":"2024-02-25"},{"lineNumber":214,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.ADDRESS_DESC_BOB","lastModifiedDate":"2024-02-25"},{"lineNumber":215,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.FUNDING_DESC_BOB + CommandTestUtil.INDUSTRY_DESC_BOB","lastModifiedDate":"2024-02-25"},{"lineNumber":216,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.TAG_DESC_HUSBAND","lastModifiedDate":"2024-02-25"},{"lineNumber":217,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.TAG_DESC_FRIEND, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-25"},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":219,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15"},{"lineNumber":220,"author":{"gitId":"yeoshuheng"},"content":" assertParseFailure(parser, CommandTestUtil.NAME_DESC_BOB","lastModifiedDate":"2024-02-25"},{"lineNumber":221,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.INVALID_PHONE_DESC + CommandTestUtil.EMAIL_DESC_BOB","lastModifiedDate":"2024-02-25"},{"lineNumber":222,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.ADDRESS_DESC_BOB","lastModifiedDate":"2024-02-25"},{"lineNumber":223,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.FUNDING_DESC_BOB + CommandTestUtil.INDUSTRY_DESC_BOB","lastModifiedDate":"2024-02-25"},{"lineNumber":224,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.TAG_DESC_HUSBAND","lastModifiedDate":"2024-02-25"},{"lineNumber":225,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.TAG_DESC_FRIEND, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-25"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":227,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15"},{"lineNumber":228,"author":{"gitId":"yeoshuheng"},"content":" assertParseFailure(parser, CommandTestUtil.NAME_DESC_BOB","lastModifiedDate":"2024-02-25"},{"lineNumber":229,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.PHONE_DESC_BOB + CommandTestUtil.INVALID_EMAIL_DESC","lastModifiedDate":"2024-02-25"},{"lineNumber":230,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.ADDRESS_DESC_BOB","lastModifiedDate":"2024-02-25"},{"lineNumber":231,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.FUNDING_DESC_BOB + CommandTestUtil.INDUSTRY_DESC_BOB","lastModifiedDate":"2024-02-25"},{"lineNumber":232,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.TAG_DESC_HUSBAND","lastModifiedDate":"2024-02-25"},{"lineNumber":233,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.TAG_DESC_FRIEND, Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-25"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":235,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2017-06-15"},{"lineNumber":236,"author":{"gitId":"yeoshuheng"},"content":" assertParseFailure(parser, CommandTestUtil.NAME_DESC_BOB","lastModifiedDate":"2024-02-25"},{"lineNumber":237,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.PHONE_DESC_BOB + CommandTestUtil.EMAIL_DESC_BOB","lastModifiedDate":"2024-02-25"},{"lineNumber":238,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.INVALID_ADDRESS_DESC","lastModifiedDate":"2024-02-25"},{"lineNumber":239,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.FUNDING_DESC_BOB + CommandTestUtil.INDUSTRY_DESC_BOB","lastModifiedDate":"2024-02-25"},{"lineNumber":240,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.TAG_DESC_HUSBAND","lastModifiedDate":"2024-02-25"},{"lineNumber":241,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.TAG_DESC_FRIEND, Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-25"},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":243,"author":{"gitId":"yeoshuheng"},"content":" // invalid funding stage","lastModifiedDate":"2024-03-05"},{"lineNumber":244,"author":{"gitId":"yeoshuheng"},"content":" assertParseFailure(parser, CommandTestUtil.NAME_DESC_BOB","lastModifiedDate":"2024-03-05"},{"lineNumber":245,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.PHONE_DESC_BOB + CommandTestUtil.EMAIL_DESC_BOB","lastModifiedDate":"2024-03-05"},{"lineNumber":246,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.ADDRESS_DESC_BOB + CommandTestUtil.INVALID_FUNDING_DESC","lastModifiedDate":"2024-03-05"},{"lineNumber":247,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.INDUSTRY_DESC_BOB","lastModifiedDate":"2024-03-05"},{"lineNumber":248,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.TAG_DESC_HUSBAND","lastModifiedDate":"2024-03-05"},{"lineNumber":249,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.TAG_DESC_FRIEND, FundingStage.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-05"},{"lineNumber":250,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":251,"author":{"gitId":"yeoshuheng"},"content":" // invalid industry","lastModifiedDate":"2024-03-05"},{"lineNumber":252,"author":{"gitId":"yeoshuheng"},"content":" assertParseFailure(parser, CommandTestUtil.NAME_DESC_BOB","lastModifiedDate":"2024-03-05"},{"lineNumber":253,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.PHONE_DESC_BOB + CommandTestUtil.EMAIL_DESC_BOB","lastModifiedDate":"2024-03-05"},{"lineNumber":254,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-05"},{"lineNumber":255,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.FUNDING_DESC_BOB + CommandTestUtil.INVALID_INDUSTRY_DESC","lastModifiedDate":"2024-03-05"},{"lineNumber":256,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.TAG_DESC_HUSBAND","lastModifiedDate":"2024-03-05"},{"lineNumber":257,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.TAG_DESC_FRIEND, Industry.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-05"},{"lineNumber":258,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":259,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":260,"author":{"gitId":"-"},"content":" // invalid tag","lastModifiedDate":"2017-06-15"},{"lineNumber":261,"author":{"gitId":"yeoshuheng"},"content":" assertParseFailure(parser, CommandTestUtil.NAME_DESC_BOB","lastModifiedDate":"2024-02-25"},{"lineNumber":262,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.PHONE_DESC_BOB + CommandTestUtil.EMAIL_DESC_BOB","lastModifiedDate":"2024-02-25"},{"lineNumber":263,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.ADDRESS_DESC_BOB","lastModifiedDate":"2024-02-25"},{"lineNumber":264,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.FUNDING_DESC_BOB + CommandTestUtil.INDUSTRY_DESC_BOB","lastModifiedDate":"2024-02-25"},{"lineNumber":265,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.INVALID_TAG_DESC","lastModifiedDate":"2024-02-25"},{"lineNumber":266,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.VALID_TAG_FRIEND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-25"},{"lineNumber":267,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":268,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15"},{"lineNumber":269,"author":{"gitId":"yeoshuheng"},"content":" assertParseFailure(parser, CommandTestUtil.INVALID_NAME_DESC","lastModifiedDate":"2024-02-25"},{"lineNumber":270,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.PHONE_DESC_BOB","lastModifiedDate":"2024-02-25"},{"lineNumber":271,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.FUNDING_DESC_BOB + CommandTestUtil.INDUSTRY_DESC_BOB","lastModifiedDate":"2024-02-25"},{"lineNumber":272,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.EMAIL_DESC_BOB + CommandTestUtil.INVALID_ADDRESS_DESC,","lastModifiedDate":"2024-02-25"},{"lineNumber":273,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":275,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":276,"author":{"gitId":"yeoshuheng"},"content":" assertParseFailure(parser, CommandTestUtil.PREAMBLE_NON_EMPTY","lastModifiedDate":"2024-02-25"},{"lineNumber":277,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.NAME_DESC_BOB + CommandTestUtil.PHONE_DESC_BOB","lastModifiedDate":"2024-02-25"},{"lineNumber":278,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.EMAIL_DESC_BOB","lastModifiedDate":"2024-02-25"},{"lineNumber":279,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.FUNDING_DESC_BOB + CommandTestUtil.INDUSTRY_DESC_BOB","lastModifiedDate":"2024-02-25"},{"lineNumber":280,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.ADDRESS_DESC_BOB + CommandTestUtil.TAG_DESC_HUSBAND + CommandTestUtil.TAG_DESC_FRIEND,","lastModifiedDate":"2024-02-25"},{"lineNumber":281,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-12-23"},{"lineNumber":282,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":283,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"menatahari":36,"-":106,"yeoshuheng":141}},{"path":"src/test/java/seedu/address/logic/parser/AddressBookParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"menatahari"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_STARTUP;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-06-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":20,"author":{"gitId":"menatahari"},"content":"import seedu.address.logic.commands.EditCommand.EditStartupDescriptor;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24"},{"lineNumber":26,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.FundingStageContainsKeywordsPredicate;","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.IndustryContainsKeywordsPredicate;","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"menatahari"},"content":"import seedu.address.testutil.EditStartupDescriptorBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"menatahari"},"content":"import seedu.address.testutil.StartupBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"menatahari"},"content":"import seedu.address.testutil.StartupUtil;","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":40,"author":{"gitId":"menatahari"},"content":" Startup startup \u003d new StartupBuilder().build();","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"menatahari"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(StartupUtil.getAddCommand(startup));","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"menatahari"},"content":" assertEquals(new AddCommand(startup), command);","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":54,"author":{"gitId":"menatahari"},"content":" DeleteCommand.COMMAND_WORD + \" \" + INDEX_FIRST_STARTUP.getOneBased());","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"menatahari"},"content":" assertEquals(new DeleteCommand(INDEX_FIRST_STARTUP), command);","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":60,"author":{"gitId":"menatahari"},"content":" Startup startup \u003d new StartupBuilder().build();","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"menatahari"},"content":" EditStartupDescriptor descriptor \u003d new EditStartupDescriptorBuilder(startup).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-27"},{"lineNumber":63,"author":{"gitId":"menatahari"},"content":" + INDEX_FIRST_STARTUP.getOneBased() + \" \" + StartupUtil.getEditStartupDescriptorDetails(descriptor));","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"menatahari"},"content":" assertEquals(new EditCommand(INDEX_FIRST_STARTUP, descriptor), command);","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":74,"author":{"gitId":"yespiggy"},"content":" public void parseCommand_findByName() throws Exception {","lastModifiedDate":"2024-03-15"},{"lineNumber":75,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2017-06-12"},{"lineNumber":76,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":77,"author":{"gitId":"yespiggy"},"content":" FindCommand.COMMAND_WORD + \" n/\" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2024-03-15"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertEquals(new FindCommand(new NameContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2017-06-12"},{"lineNumber":79,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":80,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":81,"author":{"gitId":"yespiggy"},"content":" @Test","lastModifiedDate":"2024-03-15"},{"lineNumber":82,"author":{"gitId":"yespiggy"},"content":" public void parseCommand_findByIndustry() throws Exception {","lastModifiedDate":"2024-03-15"},{"lineNumber":83,"author":{"gitId":"yespiggy"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"web3\", \"crypto\", \"greentech\");","lastModifiedDate":"2024-03-15"},{"lineNumber":84,"author":{"gitId":"yespiggy"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2024-03-15"},{"lineNumber":85,"author":{"gitId":"yespiggy"},"content":" FindCommand.COMMAND_WORD + \" i/\" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2024-03-15"},{"lineNumber":86,"author":{"gitId":"yespiggy"},"content":" assertEquals(new FindCommand(new IndustryContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2024-03-15"},{"lineNumber":87,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":88,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":89,"author":{"gitId":"yespiggy"},"content":" @Test","lastModifiedDate":"2024-03-15"},{"lineNumber":90,"author":{"gitId":"yespiggy"},"content":" public void parseCommand_findByFundingStage() throws Exception {","lastModifiedDate":"2024-03-15"},{"lineNumber":91,"author":{"gitId":"yespiggy"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"A\", \"C\");","lastModifiedDate":"2024-03-15"},{"lineNumber":92,"author":{"gitId":"yespiggy"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2024-03-15"},{"lineNumber":93,"author":{"gitId":"yespiggy"},"content":" FindCommand.COMMAND_WORD + \" f/\" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2024-03-15"},{"lineNumber":94,"author":{"gitId":"yespiggy"},"content":" assertEquals(new FindCommand(new FundingStageContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2024-03-15"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD) instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" 3\") instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":110,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":116,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":119,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"menatahari":18,"yespiggy":18,"-":83}},{"path":"src/test/java/seedu/address/logic/parser/DeleteCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-09"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":6,"author":{"gitId":"menatahari"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_STARTUP;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-06-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * As we are only doing white-box testing, our test cases do not cover path variations","lastModifiedDate":"2017-06-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * outside of the DeleteCommand code. For example, inputs \"1\" and \"1 abc\" take the","lastModifiedDate":"2017-06-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * same path through the DeleteCommand, and therefore we test only one of them.","lastModifiedDate":"2017-06-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * The path variation for those two cases occur inside the ParserUtil, and","lastModifiedDate":"2017-06-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * therefore should be covered by the ParserUtilTest.","lastModifiedDate":"2017-06-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class DeleteCommandParserTest {","lastModifiedDate":"2017-06-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private DeleteCommandParser parser \u003d new DeleteCommandParser();","lastModifiedDate":"2017-06-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void parse_validArgs_returnsDeleteCommand() {","lastModifiedDate":"2017-08-15"},{"lineNumber":25,"author":{"gitId":"menatahari"},"content":" assertParseSuccess(parser, \"1\", new DeleteCommand(INDEX_FIRST_STARTUP));","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"a\", String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-07-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-09"}],"authorContributionMap":{"menatahari":2,"-":30}},{"path":"src/test/java/seedu/address/logic/parser/EditCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-04"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-04"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":10,"author":{"gitId":"menatahari"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_STARTUP;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"menatahari"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_STARTUP;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"menatahari"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_STARTUP;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":18,"author":{"gitId":"yeoshuheng"},"content":"import seedu.address.logic.commands.CommandTestUtil;","lastModifiedDate":"2024-03-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-05-04"},{"lineNumber":20,"author":{"gitId":"menatahari"},"content":"import seedu.address.logic.commands.EditCommand.EditStartupDescriptor;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Address;","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Email;","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Name;","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Phone;","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-04"},{"lineNumber":26,"author":{"gitId":"menatahari"},"content":"import seedu.address.testutil.EditStartupDescriptorBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class EditCommandParserTest {","lastModifiedDate":"2017-05-04"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String TAG_EMPTY \u003d \" \" + PREFIX_TAG;","lastModifiedDate":"2017-05-04"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2017-05-04"},{"lineNumber":33,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-05-04"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private EditCommandParser parser \u003d new EditCommandParser();","lastModifiedDate":"2017-05-04"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":39,"author":{"gitId":"-"},"content":" // no index specified","lastModifiedDate":"2017-05-04"},{"lineNumber":40,"author":{"gitId":"yeoshuheng"},"content":" assertParseFailure(parser, CommandTestUtil.VALID_NAME_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":42,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\", EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-07-06"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // no index and no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2017-06-06"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // negative index","lastModifiedDate":"2017-05-04"},{"lineNumber":52,"author":{"gitId":"yeoshuheng"},"content":" assertParseFailure(parser, \"-5\" + CommandTestUtil.NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // zero index","lastModifiedDate":"2017-06-06"},{"lineNumber":55,"author":{"gitId":"yeoshuheng"},"content":" assertParseFailure(parser, \"0\" + CommandTestUtil.NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2017-06-06"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06"},{"lineNumber":60,"author":{"gitId":"-"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2017-06-06"},{"lineNumber":61,"author":{"gitId":"yeoshuheng"},"content":" assertParseFailure(parser, \"1 x/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-02-25"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":66,"author":{"gitId":"yeoshuheng"},"content":" assertParseFailure(parser, \"1\"","lastModifiedDate":"2024-03-05"},{"lineNumber":67,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2024-03-05"},{"lineNumber":68,"author":{"gitId":"yeoshuheng"},"content":" assertParseFailure(parser, \"1\"","lastModifiedDate":"2024-03-05"},{"lineNumber":69,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.INVALID_PHONE_DESC, Phone.MESSAGE_CONSTRAINTS); // invalid phone","lastModifiedDate":"2024-03-05"},{"lineNumber":70,"author":{"gitId":"yeoshuheng"},"content":" assertParseFailure(parser, \"1\"","lastModifiedDate":"2024-03-05"},{"lineNumber":71,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.INVALID_EMAIL_DESC, Email.MESSAGE_CONSTRAINTS); // invalid email","lastModifiedDate":"2024-03-05"},{"lineNumber":72,"author":{"gitId":"yeoshuheng"},"content":" assertParseFailure(parser, \"1\"","lastModifiedDate":"2024-03-05"},{"lineNumber":73,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.INVALID_ADDRESS_DESC, Address.MESSAGE_CONSTRAINTS); // invalid address","lastModifiedDate":"2024-03-05"},{"lineNumber":74,"author":{"gitId":"yeoshuheng"},"content":" assertParseFailure(parser, \"1\"","lastModifiedDate":"2024-03-05"},{"lineNumber":75,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.INVALID_TAG_DESC, Tag.MESSAGE_CONSTRAINTS); // invalid tag","lastModifiedDate":"2024-03-05"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":77,"author":{"gitId":"-"},"content":" // invalid phone followed by valid email","lastModifiedDate":"2017-05-04"},{"lineNumber":78,"author":{"gitId":"yeoshuheng"},"content":" assertParseFailure(parser, \"1\"","lastModifiedDate":"2024-03-05"},{"lineNumber":79,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.INVALID_PHONE_DESC","lastModifiedDate":"2024-03-05"},{"lineNumber":80,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.EMAIL_DESC_AMY, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-05"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":82,"author":{"gitId":"menatahari"},"content":" // while parsing {@code PREFIX_TAG} alone will reset the tags of the {@code Startup} being edited,","lastModifiedDate":"2024-03-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":" // parsing it together with a valid tag results in error","lastModifiedDate":"2017-05-04"},{"lineNumber":84,"author":{"gitId":"yeoshuheng"},"content":" assertParseFailure(parser, \"1\"","lastModifiedDate":"2024-03-05"},{"lineNumber":85,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.TAG_DESC_FRIEND + CommandTestUtil.TAG_DESC_HUSBAND","lastModifiedDate":"2024-03-05"},{"lineNumber":86,"author":{"gitId":"yeoshuheng"},"content":" + TAG_EMPTY, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-05"},{"lineNumber":87,"author":{"gitId":"yeoshuheng"},"content":" assertParseFailure(parser, \"1\" + CommandTestUtil.TAG_DESC_FRIEND","lastModifiedDate":"2024-03-05"},{"lineNumber":88,"author":{"gitId":"yeoshuheng"},"content":" + TAG_EMPTY + CommandTestUtil.TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-05"},{"lineNumber":89,"author":{"gitId":"yeoshuheng"},"content":" assertParseFailure(parser, \"1\" + TAG_EMPTY","lastModifiedDate":"2024-03-05"},{"lineNumber":90,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.TAG_DESC_FRIEND","lastModifiedDate":"2024-03-05"},{"lineNumber":91,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-05"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":93,"author":{"gitId":"-"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2017-05-04"},{"lineNumber":94,"author":{"gitId":"yeoshuheng"},"content":" assertParseFailure(parser, \"1\"","lastModifiedDate":"2024-03-05"},{"lineNumber":95,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.INVALID_NAME_DESC + CommandTestUtil.INVALID_EMAIL_DESC","lastModifiedDate":"2024-03-05"},{"lineNumber":96,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.VALID_ADDRESS_AMY + CommandTestUtil.VALID_PHONE_AMY,","lastModifiedDate":"2024-03-05"},{"lineNumber":97,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":100,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":101,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":102,"author":{"gitId":"menatahari"},"content":" Index targetIndex \u003d INDEX_SECOND_STARTUP;","lastModifiedDate":"2024-03-19"},{"lineNumber":103,"author":{"gitId":"yeoshuheng"},"content":" String userInput \u003d targetIndex.getOneBased() + CommandTestUtil.PHONE_DESC_BOB","lastModifiedDate":"2024-03-05"},{"lineNumber":104,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.TAG_DESC_HUSBAND","lastModifiedDate":"2024-03-05"},{"lineNumber":105,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.EMAIL_DESC_AMY + CommandTestUtil.ADDRESS_DESC_AMY","lastModifiedDate":"2024-03-05"},{"lineNumber":106,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.NAME_DESC_AMY + CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2024-03-05"},{"lineNumber":107,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":108,"author":{"gitId":"menatahari"},"content":" EditStartupDescriptor descriptor \u003d new EditStartupDescriptorBuilder().withName(CommandTestUtil.VALID_NAME_AMY)","lastModifiedDate":"2024-03-19"},{"lineNumber":109,"author":{"gitId":"yeoshuheng"},"content":" .withPhone(CommandTestUtil.VALID_PHONE_BOB).withEmail(","lastModifiedDate":"2024-03-05"},{"lineNumber":110,"author":{"gitId":"yeoshuheng"},"content":" CommandTestUtil.VALID_EMAIL_AMY).withAddress(CommandTestUtil.VALID_ADDRESS_AMY)","lastModifiedDate":"2024-03-05"},{"lineNumber":111,"author":{"gitId":"yeoshuheng"},"content":" .withTags(CommandTestUtil.VALID_TAG_HUSBAND, CommandTestUtil.VALID_TAG_FRIEND).build();","lastModifiedDate":"2024-03-05"},{"lineNumber":112,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":118,"author":{"gitId":"-"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":119,"author":{"gitId":"menatahari"},"content":" Index targetIndex \u003d INDEX_FIRST_STARTUP;","lastModifiedDate":"2024-03-19"},{"lineNumber":120,"author":{"gitId":"yeoshuheng"},"content":" String userInput \u003d targetIndex.getOneBased() + CommandTestUtil.PHONE_DESC_BOB + CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2024-03-05"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":122,"author":{"gitId":"menatahari"},"content":" EditStartupDescriptor descriptor \u003d new EditStartupDescriptorBuilder().withPhone(CommandTestUtil.VALID_PHONE_BOB)","lastModifiedDate":"2024-03-19"},{"lineNumber":123,"author":{"gitId":"yeoshuheng"},"content":" .withEmail(CommandTestUtil.VALID_EMAIL_AMY).build();","lastModifiedDate":"2024-03-05"},{"lineNumber":124,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":129,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":130,"author":{"gitId":"-"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":131,"author":{"gitId":"-"},"content":" // name","lastModifiedDate":"2017-05-04"},{"lineNumber":132,"author":{"gitId":"menatahari"},"content":" Index targetIndex \u003d INDEX_THIRD_STARTUP;","lastModifiedDate":"2024-03-19"},{"lineNumber":133,"author":{"gitId":"yeoshuheng"},"content":" String userInput \u003d targetIndex.getOneBased() + CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-03-05"},{"lineNumber":134,"author":{"gitId":"menatahari"},"content":" EditStartupDescriptor descriptor \u003d new EditStartupDescriptorBuilder().withName(","lastModifiedDate":"2024-03-19"},{"lineNumber":135,"author":{"gitId":"yeoshuheng"},"content":" CommandTestUtil.VALID_NAME_AMY).build();","lastModifiedDate":"2024-03-05"},{"lineNumber":136,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":137,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":139,"author":{"gitId":"-"},"content":" // phone","lastModifiedDate":"2017-05-04"},{"lineNumber":140,"author":{"gitId":"yeoshuheng"},"content":" userInput \u003d targetIndex.getOneBased() + CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2024-03-05"},{"lineNumber":141,"author":{"gitId":"menatahari"},"content":" descriptor \u003d new EditStartupDescriptorBuilder().withPhone(","lastModifiedDate":"2024-03-19"},{"lineNumber":142,"author":{"gitId":"yeoshuheng"},"content":" CommandTestUtil.VALID_PHONE_AMY).build();","lastModifiedDate":"2024-03-05"},{"lineNumber":143,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":144,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":146,"author":{"gitId":"-"},"content":" // email","lastModifiedDate":"2017-05-04"},{"lineNumber":147,"author":{"gitId":"yeoshuheng"},"content":" userInput \u003d targetIndex.getOneBased() + CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2024-03-05"},{"lineNumber":148,"author":{"gitId":"menatahari"},"content":" descriptor \u003d new EditStartupDescriptorBuilder().withEmail(","lastModifiedDate":"2024-03-19"},{"lineNumber":149,"author":{"gitId":"yeoshuheng"},"content":" CommandTestUtil.VALID_EMAIL_AMY).build();","lastModifiedDate":"2024-03-05"},{"lineNumber":150,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":151,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":153,"author":{"gitId":"-"},"content":" // address","lastModifiedDate":"2017-05-04"},{"lineNumber":154,"author":{"gitId":"yeoshuheng"},"content":" userInput \u003d targetIndex.getOneBased() + CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2024-03-05"},{"lineNumber":155,"author":{"gitId":"menatahari"},"content":" descriptor \u003d new EditStartupDescriptorBuilder().withAddress(","lastModifiedDate":"2024-03-19"},{"lineNumber":156,"author":{"gitId":"yeoshuheng"},"content":" CommandTestUtil.VALID_ADDRESS_AMY).build();","lastModifiedDate":"2024-03-05"},{"lineNumber":157,"author":{"gitId":"yeoshuheng"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-05"},{"lineNumber":158,"author":{"gitId":"yeoshuheng"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-05"},{"lineNumber":159,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":160,"author":{"gitId":"yeoshuheng"},"content":" // industry","lastModifiedDate":"2024-03-05"},{"lineNumber":161,"author":{"gitId":"yeoshuheng"},"content":" userInput \u003d targetIndex.getOneBased() + CommandTestUtil.INDUSTRY_DESC_AMY;","lastModifiedDate":"2024-03-05"},{"lineNumber":162,"author":{"gitId":"menatahari"},"content":" descriptor \u003d new EditStartupDescriptorBuilder().withIndustry(","lastModifiedDate":"2024-03-19"},{"lineNumber":163,"author":{"gitId":"yeoshuheng"},"content":" CommandTestUtil.VALID_INDUSTRY_AMY).build();","lastModifiedDate":"2024-03-05"},{"lineNumber":164,"author":{"gitId":"yeoshuheng"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-05"},{"lineNumber":165,"author":{"gitId":"yeoshuheng"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-05"},{"lineNumber":166,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":167,"author":{"gitId":"yeoshuheng"},"content":" // funding stage","lastModifiedDate":"2024-03-05"},{"lineNumber":168,"author":{"gitId":"yeoshuheng"},"content":" userInput \u003d targetIndex.getOneBased() + CommandTestUtil.FUNDING_DESC_AMY;","lastModifiedDate":"2024-03-05"},{"lineNumber":169,"author":{"gitId":"menatahari"},"content":" descriptor \u003d new EditStartupDescriptorBuilder().withFundingStage(","lastModifiedDate":"2024-03-19"},{"lineNumber":170,"author":{"gitId":"yeoshuheng"},"content":" CommandTestUtil.VALID_FUNDING_AMY).build();","lastModifiedDate":"2024-03-05"},{"lineNumber":171,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":172,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":174,"author":{"gitId":"-"},"content":" // tags","lastModifiedDate":"2017-05-04"},{"lineNumber":175,"author":{"gitId":"yeoshuheng"},"content":" userInput \u003d targetIndex.getOneBased() + CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2024-03-05"},{"lineNumber":176,"author":{"gitId":"menatahari"},"content":" descriptor \u003d new EditStartupDescriptorBuilder().withTags(","lastModifiedDate":"2024-03-19"},{"lineNumber":177,"author":{"gitId":"yeoshuheng"},"content":" CommandTestUtil.VALID_TAG_FRIEND).build();","lastModifiedDate":"2024-03-05"},{"lineNumber":178,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":179,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":180,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":182,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":183,"author":{"gitId":"-"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":184,"author":{"gitId":"-"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2023-07-14"},{"lineNumber":185,"author":{"gitId":"-"},"content":" // AddCommandParserTest#parse_repeatedNonTagValue_failure()","lastModifiedDate":"2023-07-14"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":187,"author":{"gitId":"-"},"content":" // valid followed by invalid","lastModifiedDate":"2023-07-14"},{"lineNumber":188,"author":{"gitId":"menatahari"},"content":" Index targetIndex \u003d INDEX_FIRST_STARTUP;","lastModifiedDate":"2024-03-19"},{"lineNumber":189,"author":{"gitId":"yeoshuheng"},"content":" String userInput \u003d targetIndex.getOneBased()","lastModifiedDate":"2024-03-05"},{"lineNumber":190,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.INVALID_PHONE_DESC","lastModifiedDate":"2024-03-05"},{"lineNumber":191,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2024-03-05"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":193,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":195,"author":{"gitId":"-"},"content":" // invalid followed by valid","lastModifiedDate":"2023-07-14"},{"lineNumber":196,"author":{"gitId":"yeoshuheng"},"content":" userInput \u003d targetIndex.getOneBased() + CommandTestUtil.PHONE_DESC_BOB","lastModifiedDate":"2024-03-05"},{"lineNumber":197,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2024-03-05"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":199,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":201,"author":{"gitId":"-"},"content":" // mulltiple valid fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":202,"author":{"gitId":"yeoshuheng"},"content":" userInput \u003d targetIndex.getOneBased() + CommandTestUtil.PHONE_DESC_AMY","lastModifiedDate":"2024-03-05"},{"lineNumber":203,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.ADDRESS_DESC_AMY + CommandTestUtil.EMAIL_DESC_AMY","lastModifiedDate":"2024-03-05"},{"lineNumber":204,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.TAG_DESC_FRIEND + CommandTestUtil.PHONE_DESC_AMY","lastModifiedDate":"2024-03-05"},{"lineNumber":205,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.ADDRESS_DESC_AMY + CommandTestUtil.EMAIL_DESC_AMY","lastModifiedDate":"2024-03-05"},{"lineNumber":206,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.TAG_DESC_FRIEND","lastModifiedDate":"2024-03-05"},{"lineNumber":207,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.PHONE_DESC_BOB + CommandTestUtil.ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-05"},{"lineNumber":208,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.EMAIL_DESC_BOB + CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2024-03-05"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":210,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":211,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":213,"author":{"gitId":"-"},"content":" // multiple invalid values","lastModifiedDate":"2023-07-14"},{"lineNumber":214,"author":{"gitId":"yeoshuheng"},"content":" userInput \u003d targetIndex.getOneBased() + CommandTestUtil.INVALID_PHONE_DESC","lastModifiedDate":"2024-03-05"},{"lineNumber":215,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.INVALID_ADDRESS_DESC + CommandTestUtil.INVALID_EMAIL_DESC","lastModifiedDate":"2024-03-05"},{"lineNumber":216,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.INVALID_PHONE_DESC + CommandTestUtil.INVALID_ADDRESS_DESC","lastModifiedDate":"2024-03-05"},{"lineNumber":217,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2024-03-05"},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":219,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":220,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":221,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":223,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":224,"author":{"gitId":"-"},"content":" public void parse_resetTags_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":225,"author":{"gitId":"menatahari"},"content":" Index targetIndex \u003d INDEX_THIRD_STARTUP;","lastModifiedDate":"2024-03-19"},{"lineNumber":226,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + TAG_EMPTY;","lastModifiedDate":"2017-05-25"},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":228,"author":{"gitId":"menatahari"},"content":" EditStartupDescriptor descriptor \u003d new EditStartupDescriptorBuilder().withTags().build();","lastModifiedDate":"2024-03-19"},{"lineNumber":229,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":231,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":232,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":233,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-04"}],"authorContributionMap":{"menatahari":25,"-":131,"yeoshuheng":77}},{"path":"src/test/java/seedu/address/logic/parser/FindCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-27"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":12,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class FindCommandParserTest {","lastModifiedDate":"2017-06-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":" private FindCommandParser parser \u003d new FindCommandParser();","lastModifiedDate":"2017-06-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public void parse_emptyArg_throwsParseException() {","lastModifiedDate":"2017-06-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \" \", String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-07-06"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void parse_validArgs_returnsFindCommand() {","lastModifiedDate":"2017-08-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2017-06-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" FindCommand expectedFindCommand \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" new FindCommand(new NameContainsKeywordsPredicate(Arrays.asList(\"Alice\", \"Bob\")));","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"yespiggy"},"content":" assertParseSuccess(parser, \"find n/Alice Bob\", expectedFindCommand);","lastModifiedDate":"2024-03-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" // multiple whitespaces between keywords","lastModifiedDate":"2017-06-27"},{"lineNumber":31,"author":{"gitId":"yespiggy"},"content":" assertParseSuccess(parser, \"find n/ \\n Alice \\n \\t Bob \\t\", expectedFindCommand);","lastModifiedDate":"2024-03-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-27"}],"authorContributionMap":{"menatahari":1,"yespiggy":2,"-":31}},{"path":"src/test/java/seedu/address/logic/parser/NoteCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"dwangwk"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"dwangwk"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"dwangwk"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"dwangwk"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"dwangwk"},"content":"import seedu.address.logic.commands.NoteCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"dwangwk"},"content":"import seedu.address.model.startup.Note;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"dwangwk"},"content":"public class NoteCommandParserTest {","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"dwangwk"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"dwangwk"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, NoteCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"dwangwk"},"content":" private NoteCommandParser parser \u003d new NoteCommandParser();","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"dwangwk"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"dwangwk"},"content":" public void parse_validArgs_returnsNoteCommand() {","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"dwangwk"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"dwangwk"},"content":" String userInput \u003d targetIndex.getOneBased() + \" Some note\";","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"dwangwk"},"content":" Note note \u003d new Note(\"Some note\");","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"dwangwk"},"content":" NoteCommand.NoteStartupDescriptor descriptor \u003d new NoteCommand.NoteStartupDescriptor();","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"dwangwk"},"content":" descriptor.setNote(note);","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"dwangwk"},"content":" NoteCommand expectedCommand \u003d new NoteCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"dwangwk"},"content":" CommandParserTestUtil.assertParseSuccess(new NoteCommandParser(), userInput, expectedCommand);","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"dwangwk"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"dwangwk"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"dwangwk"},"content":" public void parse_invalidIndex_throwsParseException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"dwangwk"},"content":" String userInput \u003d \"a Some note\";","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"dwangwk"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, NoteCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"dwangwk"},"content":" CommandParserTestUtil.assertParseFailure(new NoteCommandParser(), userInput, expectedMessage);","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"dwangwk"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"dwangwk"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"dwangwk"},"content":" public void parse_missingNoteDescription_throwsParseException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"dwangwk"},"content":" String userInput \u003d \"1 \";","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"dwangwk"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, NoteCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"dwangwk"},"content":" CommandParserTestUtil.assertParseFailure(new NoteCommandParser(), userInput, expectedMessage);","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"dwangwk"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"dwangwk"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"dwangwk"},"content":" public void parse_extraSpaces_returnsNoteCommand() {","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"dwangwk"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"dwangwk"},"content":" String userInput \u003d \" 1 Some note \";","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"dwangwk"},"content":" Note note \u003d new Note(\"Some note\");","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"dwangwk"},"content":" NoteCommand.NoteStartupDescriptor descriptor \u003d new NoteCommand.NoteStartupDescriptor();","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"dwangwk"},"content":" descriptor.setNote(note);","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"dwangwk"},"content":" NoteCommand expectedCommand \u003d new NoteCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"dwangwk"},"content":" CommandParserTestUtil.assertParseSuccess(new NoteCommandParser(), userInput, expectedCommand);","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"dwangwk"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"dwangwk"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"dwangwk":58}},{"path":"src/test/java/seedu/address/logic/parser/ParserUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.ParserUtil.MESSAGE_INVALID_INDEX;","lastModifiedDate":"2017-06-02"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":7,"author":{"gitId":"menatahari"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_STARTUP;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-05-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-05-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-05-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10"},{"lineNumber":17,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Address;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Email;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Name;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Phone;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-22"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class ParserUtilTest {","lastModifiedDate":"2017-05-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2017-05-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2017-05-22"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2017-05-22"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2017-05-22"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2017-05-22"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d \"Rachel Walker\";","lastModifiedDate":"2017-05-22"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d \"123456\";","lastModifiedDate":"2017-05-22"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d \"123 Main Street #0505\";","lastModifiedDate":"2017-05-22"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d \"rachel@example.com\";","lastModifiedDate":"2017-05-22"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_1 \u003d \"friend\";","lastModifiedDate":"2017-05-22"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_2 \u003d \"neighbour\";","lastModifiedDate":"2017-05-22"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final String WHITESPACE \u003d \" \\t\\r\\n\";","lastModifiedDate":"2017-05-29"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void parseIndex_invalidInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseIndex(\"10 a\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void parseIndex_outOfRangeInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_INVALID_INDEX, ()","lastModifiedDate":"2019-03-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" -\u003e ParserUtil.parseIndex(Long.toString(Integer.MAX_VALUE + 1)));","lastModifiedDate":"2019-03-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void parseIndex_validInput_success() throws Exception {","lastModifiedDate":"2017-05-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // No whitespaces","lastModifiedDate":"2017-05-26"},{"lineNumber":53,"author":{"gitId":"menatahari"},"content":" assertEquals(INDEX_FIRST_STARTUP, ParserUtil.parseIndex(\"1\"));","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // Leading and trailing whitespaces","lastModifiedDate":"2017-05-26"},{"lineNumber":56,"author":{"gitId":"menatahari"},"content":" assertEquals(INDEX_FIRST_STARTUP, ParserUtil.parseIndex(\" 1 \"));","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void parseName_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseName((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void parseName_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseName(INVALID_NAME));","lastModifiedDate":"2019-03-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void parseName_validValueWithoutWhitespace_returnsName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":71,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-22"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(VALID_NAME));","lastModifiedDate":"2017-05-29"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-29"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void parseName_validValueWithWhitespace_returnsTrimmedName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":77,"author":{"gitId":"-"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_NAME + WHITESPACE;","lastModifiedDate":"2017-05-29"},{"lineNumber":78,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-29"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(nameWithWhitespace));","lastModifiedDate":"2017-05-29"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void parsePhone_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parsePhone((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void parsePhone_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parsePhone(INVALID_PHONE));","lastModifiedDate":"2019-03-14"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithoutWhitespace_returnsPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":94,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-22"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(VALID_PHONE));","lastModifiedDate":"2017-05-30"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":99,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithWhitespace_returnsTrimmedPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":100,"author":{"gitId":"-"},"content":" String phoneWithWhitespace \u003d WHITESPACE + VALID_PHONE + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":101,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-30"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(phoneWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":106,"author":{"gitId":"-"},"content":" public void parseAddress_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseAddress((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":111,"author":{"gitId":"-"},"content":" public void parseAddress_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseAddress(INVALID_ADDRESS));","lastModifiedDate":"2019-03-14"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":116,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithoutWhitespace_returnsAddress() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":117,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-22"},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(VALID_ADDRESS));","lastModifiedDate":"2017-05-30"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":122,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithWhitespace_returnsTrimmedAddress() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":123,"author":{"gitId":"-"},"content":" String addressWithWhitespace \u003d WHITESPACE + VALID_ADDRESS + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":124,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-30"},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(addressWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":129,"author":{"gitId":"-"},"content":" public void parseEmail_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseEmail((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":133,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":134,"author":{"gitId":"-"},"content":" public void parseEmail_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":135,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseEmail(INVALID_EMAIL));","lastModifiedDate":"2019-03-14"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":138,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":139,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithoutWhitespace_returnsEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":140,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-22"},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(VALID_EMAIL));","lastModifiedDate":"2017-05-30"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":144,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":145,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithWhitespace_returnsTrimmedEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":146,"author":{"gitId":"-"},"content":" String emailWithWhitespace \u003d WHITESPACE + VALID_EMAIL + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":147,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-30"},{"lineNumber":148,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(emailWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":151,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":152,"author":{"gitId":"-"},"content":" public void parseTag_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTag(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":156,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":157,"author":{"gitId":"-"},"content":" public void parseTag_invalidValue_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTag(INVALID_TAG));","lastModifiedDate":"2019-03-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":161,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":162,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithoutWhitespace_returnsTag() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":163,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30"},{"lineNumber":164,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(VALID_TAG_1));","lastModifiedDate":"2017-05-30"},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":167,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":168,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithWhitespace_returnsTrimmedTag() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":169,"author":{"gitId":"-"},"content":" String tagWithWhitespace \u003d WHITESPACE + VALID_TAG_1 + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":170,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30"},{"lineNumber":171,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(tagWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":174,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":175,"author":{"gitId":"-"},"content":" public void parseTags_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTags(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":179,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":180,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithInvalidTags_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, INVALID_TAG)));","lastModifiedDate":"2019-03-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":184,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":185,"author":{"gitId":"-"},"content":" public void parseTags_emptyCollection_returnsEmptySet() throws Exception {","lastModifiedDate":"2017-05-22"},{"lineNumber":186,"author":{"gitId":"-"},"content":" assertTrue(ParserUtil.parseTags(Collections.emptyList()).isEmpty());","lastModifiedDate":"2017-05-22"},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":189,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":190,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithValidTags_returnsTagSet() throws Exception {","lastModifiedDate":"2017-05-22"},{"lineNumber":191,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e actualTagSet \u003d ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, VALID_TAG_2));","lastModifiedDate":"2017-05-22"},{"lineNumber":192,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e expectedTagSet \u003d new HashSet\u003cTag\u003e(Arrays.asList(new Tag(VALID_TAG_1), new Tag(VALID_TAG_2)));","lastModifiedDate":"2017-05-22"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":194,"author":{"gitId":"-"},"content":" assertEquals(expectedTagSet, actualTagSet);","lastModifiedDate":"2017-05-22"},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":196,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-22"}],"authorContributionMap":{"menatahari":7,"-":189}},{"path":"src/test/java/seedu/address/model/AddressBookTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-12-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-04-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":9,"author":{"gitId":"menatahari"},"content":"import static seedu.address.testutil.TypicalStartups.ALICE;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"menatahari"},"content":"import static seedu.address.testutil.TypicalStartups.getTypicalAddressBook;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2016-12-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2016-12-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2016-12-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2016-12-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-12-24"},{"lineNumber":21,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.exceptions.DuplicateStartupException;","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"menatahari"},"content":"import seedu.address.testutil.StartupBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class AddressBookTest {","lastModifiedDate":"2016-12-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2016-12-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2016-12-24"},{"lineNumber":31,"author":{"gitId":"menatahari"},"content":" assertEquals(Collections.emptyList(), addressBook.getStartupList());","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public void resetData_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.resetData(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void resetData_withValidReadOnlyAddressBook_replacesData() {","lastModifiedDate":"2016-12-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" AddressBook newData \u003d getTypicalAddressBook();","lastModifiedDate":"2017-07-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":" addressBook.resetData(newData);","lastModifiedDate":"2016-12-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertEquals(newData, addressBook);","lastModifiedDate":"2016-12-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":47,"author":{"gitId":"menatahari"},"content":" public void resetData_withDuplicateStartups_throwsDuplicateStartupException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"menatahari"},"content":" // Two startups with the same identity fields","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"menatahari"},"content":" Startup editedAlice \u003d new StartupBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-04-19"},{"lineNumber":51,"author":{"gitId":"menatahari"},"content":" List\u003cStartup\u003e newStartups \u003d Arrays.asList(ALICE, editedAlice);","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"menatahari"},"content":" AddressBookStub newData \u003d new AddressBookStub(newStartups);","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":54,"author":{"gitId":"menatahari"},"content":" assertThrows(DuplicateStartupException.class, () -\u003e addressBook.resetData(newData));","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":58,"author":{"gitId":"menatahari"},"content":" public void hasStartup_nullStartup_throwsNullPointerException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"menatahari"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.hasStartup(null));","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":63,"author":{"gitId":"menatahari"},"content":" public void hasStartup_startupNotInAddressBook_returnsFalse() {","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"menatahari"},"content":" assertFalse(addressBook.hasStartup(ALICE));","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":68,"author":{"gitId":"menatahari"},"content":" public void hasStartup_startupInAddressBook_returnsTrue() {","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"menatahari"},"content":" addressBook.addStartup(ALICE);","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"menatahari"},"content":" assertTrue(addressBook.hasStartup(ALICE));","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":74,"author":{"gitId":"menatahari"},"content":" public void hasStartup_startupWithSameIdentityFieldsInAddressBook_returnsTrue() {","lastModifiedDate":"2024-03-19"},{"lineNumber":75,"author":{"gitId":"menatahari"},"content":" addressBook.addStartup(ALICE);","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"menatahari"},"content":" Startup editedAlice \u003d new StartupBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-06"},{"lineNumber":78,"author":{"gitId":"menatahari"},"content":" assertTrue(addressBook.hasStartup(editedAlice));","lastModifiedDate":"2024-03-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":82,"author":{"gitId":"menatahari"},"content":" public void getStartupList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":83,"author":{"gitId":"menatahari"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e addressBook.getStartupList().remove(0));","lastModifiedDate":"2024-03-19"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"menatahari"},"content":" String expected \u003d AddressBook.class.getCanonicalName() + \"{startups\u003d\" + addressBook.getStartupList() + \"}\";","lastModifiedDate":"2024-03-19"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertEquals(expected, addressBook.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-24"},{"lineNumber":93,"author":{"gitId":"menatahari"},"content":" * A stub ReadOnlyAddressBook whose startups list can violate interface constraints.","lastModifiedDate":"2024-03-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-24"},{"lineNumber":95,"author":{"gitId":"-"},"content":" private static class AddressBookStub implements ReadOnlyAddressBook {","lastModifiedDate":"2016-12-24"},{"lineNumber":96,"author":{"gitId":"menatahari"},"content":" private final ObservableList\u003cStartup\u003e startups \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-03-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":98,"author":{"gitId":"menatahari"},"content":" AddressBookStub(Collection\u003cStartup\u003e startups) {","lastModifiedDate":"2024-03-19"},{"lineNumber":99,"author":{"gitId":"menatahari"},"content":" this.startups.setAll(startups);","lastModifiedDate":"2024-03-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-24"},{"lineNumber":103,"author":{"gitId":"menatahari"},"content":" public ObservableList\u003cStartup\u003e getStartupList() {","lastModifiedDate":"2024-03-19"},{"lineNumber":104,"author":{"gitId":"menatahari"},"content":" return startups;","lastModifiedDate":"2024-03-19"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-24"}],"authorContributionMap":{"menatahari":32,"-":76}},{"path":"src/test/java/seedu/address/model/ModelManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2017-05-31"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"menatahari"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_STARTUPS;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"menatahari"},"content":"import static seedu.address.testutil.TypicalStartups.ALICE;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"menatahari"},"content":"import static seedu.address.testutil.TypicalStartups.BENSON;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-31"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":18,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.testutil.AddressBookBuilder;","lastModifiedDate":"2017-05-31"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class ModelManagerTest {","lastModifiedDate":"2017-05-31"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private ModelManager modelManager \u003d new ModelManager();","lastModifiedDate":"2018-08-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2018-11-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertEquals(new UserPrefs(), modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertEquals(new GuiSettings(), modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertEquals(new AddressBook(), new AddressBook(modelManager.getAddressBook()));","lastModifiedDate":"2018-11-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public void setUserPrefs_nullUserPrefs_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setUserPrefs(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void setUserPrefs_validUserPrefs_copiesUserPrefs() {","lastModifiedDate":"2018-12-06"},{"lineNumber":39,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"address/book/file/path\"));","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(new GuiSettings(1, 2, 3, 4));","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" modelManager.setUserPrefs(userPrefs);","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertEquals(userPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // Modifying userPrefs should not modify modelManager\u0027s userPrefs","lastModifiedDate":"2018-12-06"},{"lineNumber":46,"author":{"gitId":"-"},"content":" UserPrefs oldUserPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":47,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"new/address/book/file/path\"));","lastModifiedDate":"2018-12-06"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertEquals(oldUserPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-12-06"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void setGuiSettings_nullGuiSettings_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setGuiSettings(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void setGuiSettings_validGuiSettings_setsGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(1, 2, 3, 4);","lastModifiedDate":"2018-11-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" modelManager.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertEquals(guiSettings, modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setAddressBookFilePath(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_validPath_setsAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" Path path \u003d Paths.get(\"address/book/file/path\");","lastModifiedDate":"2018-11-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" modelManager.setAddressBookFilePath(path);","lastModifiedDate":"2018-11-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertEquals(path, modelManager.getAddressBookFilePath());","lastModifiedDate":"2018-11-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":76,"author":{"gitId":"menatahari"},"content":" public void hasStartup_nullStartup_throwsNullPointerException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"menatahari"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasStartup(null));","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":81,"author":{"gitId":"menatahari"},"content":" public void hasStartup_startupNotInAddressBook_returnsFalse() {","lastModifiedDate":"2024-03-19"},{"lineNumber":82,"author":{"gitId":"menatahari"},"content":" assertFalse(modelManager.hasStartup(ALICE));","lastModifiedDate":"2024-03-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":86,"author":{"gitId":"menatahari"},"content":" public void hasStartup_startupInAddressBook_returnsTrue() {","lastModifiedDate":"2024-03-19"},{"lineNumber":87,"author":{"gitId":"menatahari"},"content":" modelManager.addStartup(ALICE);","lastModifiedDate":"2024-03-19"},{"lineNumber":88,"author":{"gitId":"menatahari"},"content":" assertTrue(modelManager.hasStartup(ALICE));","lastModifiedDate":"2024-03-19"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":92,"author":{"gitId":"menatahari"},"content":" public void getFilteredStartupList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":93,"author":{"gitId":"menatahari"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e modelManager.getFilteredStartupList().remove(0));","lastModifiedDate":"2024-03-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-31"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":98,"author":{"gitId":"menatahari"},"content":" AddressBook addressBook \u003d new AddressBookBuilder().withStartup(ALICE).withStartup(BENSON).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" AddressBook differentAddressBook \u003d new AddressBook();","lastModifiedDate":"2017-05-31"},{"lineNumber":100,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":102,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":103,"author":{"gitId":"-"},"content":" modelManager \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2018-08-06"},{"lineNumber":104,"author":{"gitId":"-"},"content":" ModelManager modelManagerCopy \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2017-05-31"},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManagerCopy));","lastModifiedDate":"2017-05-31"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":107,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManager));","lastModifiedDate":"2017-05-31"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":110,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(null));","lastModifiedDate":"2017-05-31"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":113,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(5));","lastModifiedDate":"2017-05-31"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":116,"author":{"gitId":"-"},"content":" // different addressBook -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(differentAddressBook, userPrefs)));","lastModifiedDate":"2017-05-31"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":119,"author":{"gitId":"-"},"content":" // different filteredList -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":120,"author":{"gitId":"-"},"content":" String[] keywords \u003d ALICE.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-19"},{"lineNumber":121,"author":{"gitId":"menatahari"},"content":" modelManager.updateFilteredStartupList(new NameContainsKeywordsPredicate(Arrays.asList(keywords)));","lastModifiedDate":"2024-03-19"},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, userPrefs)));","lastModifiedDate":"2017-05-31"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":124,"author":{"gitId":"-"},"content":" // resets modelManager to initial state for upcoming tests","lastModifiedDate":"2017-08-05"},{"lineNumber":125,"author":{"gitId":"menatahari"},"content":" modelManager.updateFilteredStartupList(PREDICATE_SHOW_ALL_STARTUPS);","lastModifiedDate":"2024-03-19"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":127,"author":{"gitId":"-"},"content":" // different userPrefs -\u003e returns false","lastModifiedDate":"2018-11-27"},{"lineNumber":128,"author":{"gitId":"-"},"content":" UserPrefs differentUserPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":129,"author":{"gitId":"-"},"content":" differentUserPrefs.setAddressBookFilePath(Paths.get(\"differentFilePath\"));","lastModifiedDate":"2018-08-09"},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, differentUserPrefs)));","lastModifiedDate":"2018-11-27"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":132,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-31"}],"authorContributionMap":{"menatahari":16,"-":116}},{"path":"src/test/java/seedu/address/model/startup/AddressTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"menatahari"},"content":"package seedu.address.model.startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class AddressTest {","lastModifiedDate":"2017-01-16"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04"},{"lineNumber":13,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new Address(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":14,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void constructor_invalidAddress_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":" String invalidAddress \u003d \"\";","lastModifiedDate":"2017-05-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Address(invalidAddress));","lastModifiedDate":"2019-03-14"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void isValidAddress() {","lastModifiedDate":"2017-01-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // null address","lastModifiedDate":"2017-12-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Address.isValidAddress(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // invalid addresses","lastModifiedDate":"2017-01-16"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertFalse(Address.isValidAddress(\"\")); // empty string","lastModifiedDate":"2017-01-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(Address.isValidAddress(\" \")); // spaces only","lastModifiedDate":"2017-01-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // valid addresses","lastModifiedDate":"2017-01-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertTrue(Address.isValidAddress(\"Blk 456, Den Road, #01-355\"));","lastModifiedDate":"2017-01-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertTrue(Address.isValidAddress(\"-\")); // one character","lastModifiedDate":"2017-01-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertTrue(Address.isValidAddress(\"Leng Inc; 1234 Market St; San Francisco CA 2349879; USA\")); // long address","lastModifiedDate":"2017-01-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" Address address \u003d new Address(\"Valid Address\");","lastModifiedDate":"2019-02-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertTrue(address.equals(new Address(\"Valid Address\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertTrue(address.equals(address));","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertFalse(address.equals(null));","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(address.equals(5.0f));","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertFalse(address.equals(new Address(\"Other Valid Address\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16"}],"authorContributionMap":{"menatahari":1,"-":55}},{"path":"src/test/java/seedu/address/model/startup/EmailTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"menatahari"},"content":"package seedu.address.model.startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class EmailTest {","lastModifiedDate":"2017-01-16"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04"},{"lineNumber":13,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new Email(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":14,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void constructor_invalidEmail_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":" String invalidEmail \u003d \"\";","lastModifiedDate":"2017-05-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Email(invalidEmail));","lastModifiedDate":"2019-03-14"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void isValidEmail() {","lastModifiedDate":"2017-01-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // null email","lastModifiedDate":"2017-12-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Email.isValidEmail(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // blank email","lastModifiedDate":"2017-01-16"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"\")); // empty string","lastModifiedDate":"2017-01-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\" \")); // spaces only","lastModifiedDate":"2017-01-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // missing parts","lastModifiedDate":"2017-01-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"@example.com\")); // missing local part","lastModifiedDate":"2017-04-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjackexample.com\")); // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-04-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@\")); // missing domain name","lastModifiedDate":"2017-01-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" // invalid parts","lastModifiedDate":"2017-01-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@-\")); // invalid domain name","lastModifiedDate":"2017-01-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@exam_ple.com\")); // underscore in domain name","lastModifiedDate":"2018-02-09"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peter jack@example.com\")); // spaces in local part","lastModifiedDate":"2017-04-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@exam ple.com\")); // spaces in domain name","lastModifiedDate":"2017-04-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\" peterjack@example.com\")); // leading space","lastModifiedDate":"2018-02-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.com \")); // trailing space","lastModifiedDate":"2018-02-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@@example.com\")); // double \u0027@\u0027 symbol","lastModifiedDate":"2017-04-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peter@jack@example.com\")); // \u0027@\u0027 symbol in local part","lastModifiedDate":"2017-04-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"-peterjack@example.com\")); // local part starts with a hyphen","lastModifiedDate":"2021-07-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack-@example.com\")); // local part ends with a hyphen","lastModifiedDate":"2021-07-20"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peter..jack@example.com\")); // local part has two consecutive periods","lastModifiedDate":"2021-07-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example@com\")); // \u0027@\u0027 symbol in domain name","lastModifiedDate":"2017-04-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@.example.com\")); // domain name starts with a period","lastModifiedDate":"2018-02-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.com.\")); // domain name ends with a period","lastModifiedDate":"2018-02-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@-example.com\")); // domain name starts with a hyphen","lastModifiedDate":"2018-02-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.com-\")); // domain name ends with a hyphen","lastModifiedDate":"2018-02-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.c\")); // top level domain has less than two chars","lastModifiedDate":"2021-07-20"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // valid email","lastModifiedDate":"2017-01-16"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack_1190@example.com\")); // underscore in local part","lastModifiedDate":"2021-07-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack.1190@example.com\")); // period in local part","lastModifiedDate":"2021-07-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack+1190@example.com\")); // \u0027+\u0027 symbol in local part","lastModifiedDate":"2021-07-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack-1190@example.com\")); // hyphen in local part","lastModifiedDate":"2021-07-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"a@bc\")); // minimal","lastModifiedDate":"2018-02-09"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"test@localhost\")); // alphabets only","lastModifiedDate":"2017-01-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"123@145\")); // numeric local part and domain name","lastModifiedDate":"2017-01-16"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"a1+be.d@example1.com\")); // mixture of alphanumeric and special characters","lastModifiedDate":"2021-07-20"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"peter_jack@very-very-very-long-example.com\")); // long domain name","lastModifiedDate":"2018-02-09"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"if.you.dream.it_you.can.do.it@example.com\")); // long local part","lastModifiedDate":"2017-04-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"e1234567@u.nus.edu\")); // more than one period in domain","lastModifiedDate":"2021-07-20"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" Email email \u003d new Email(\"valid@email\");","lastModifiedDate":"2019-02-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertTrue(email.equals(new Email(\"valid@email\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertTrue(email.equals(email));","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertFalse(email.equals(null));","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertFalse(email.equals(5.0f));","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertFalse(email.equals(new Email(\"other.valid@email\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16"}],"authorContributionMap":{"menatahari":1,"-":87}},{"path":"src/test/java/seedu/address/model/startup/FundingStageTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"menatahari"},"content":"package seedu.address.model.startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":3,"author":{"gitId":"yeoshuheng"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-05"},{"lineNumber":4,"author":{"gitId":"yeoshuheng"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-05"},{"lineNumber":5,"author":{"gitId":"yeoshuheng"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-05"},{"lineNumber":6,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":7,"author":{"gitId":"yeoshuheng"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-05"},{"lineNumber":8,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":9,"author":{"gitId":"yeoshuheng"},"content":"public class FundingStageTest {","lastModifiedDate":"2024-03-05"},{"lineNumber":10,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":11,"author":{"gitId":"yeoshuheng"},"content":" @Test","lastModifiedDate":"2024-03-05"},{"lineNumber":12,"author":{"gitId":"yeoshuheng"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-05"},{"lineNumber":13,"author":{"gitId":"yeoshuheng"},"content":" assertThrows(NullPointerException.class, () -\u003e new FundingStage(null));","lastModifiedDate":"2024-03-05"},{"lineNumber":14,"author":{"gitId":"yeoshuheng"},"content":" }","lastModifiedDate":"2024-03-05"},{"lineNumber":15,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":16,"author":{"gitId":"yeoshuheng"},"content":" @Test","lastModifiedDate":"2024-03-05"},{"lineNumber":17,"author":{"gitId":"yeoshuheng"},"content":" public void constructor_invalidFundingStage_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-05"},{"lineNumber":18,"author":{"gitId":"yeoshuheng"},"content":" String invalidPhone \u003d \"\";","lastModifiedDate":"2024-03-05"},{"lineNumber":19,"author":{"gitId":"yeoshuheng"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new FundingStage(invalidPhone));","lastModifiedDate":"2024-03-05"},{"lineNumber":20,"author":{"gitId":"yeoshuheng"},"content":" }","lastModifiedDate":"2024-03-05"},{"lineNumber":21,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":22,"author":{"gitId":"yeoshuheng"},"content":" @Test","lastModifiedDate":"2024-03-05"},{"lineNumber":23,"author":{"gitId":"yeoshuheng"},"content":" public void isValidFundingStage() {","lastModifiedDate":"2024-03-05"},{"lineNumber":24,"author":{"gitId":"yeoshuheng"},"content":" // null funding","lastModifiedDate":"2024-03-05"},{"lineNumber":25,"author":{"gitId":"yeoshuheng"},"content":" assertThrows(NullPointerException.class, () -\u003e FundingStage.isValidFundingLevel(null));","lastModifiedDate":"2024-03-05"},{"lineNumber":26,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":27,"author":{"gitId":"yeoshuheng"},"content":" // invalid funding levels","lastModifiedDate":"2024-03-05"},{"lineNumber":28,"author":{"gitId":"yeoshuheng"},"content":" assertFalse(FundingStage.isValidFundingLevel(\"\")); // empty string","lastModifiedDate":"2024-03-05"},{"lineNumber":29,"author":{"gitId":"yeoshuheng"},"content":" assertFalse(FundingStage.isValidFundingLevel(\" \")); // spaces only","lastModifiedDate":"2024-03-05"},{"lineNumber":30,"author":{"gitId":"yeoshuheng"},"content":" assertFalse(FundingStage.isValidFundingLevel(\"AB\")); // invalid funding level","lastModifiedDate":"2024-03-05"},{"lineNumber":31,"author":{"gitId":"yeoshuheng"},"content":" assertFalse(FundingStage.isValidFundingLevel(\"1\")); // numbers","lastModifiedDate":"2024-03-05"},{"lineNumber":32,"author":{"gitId":"yeoshuheng"},"content":" assertFalse(FundingStage.isValidFundingLevel(\"D\")); // invalid funding level","lastModifiedDate":"2024-03-05"},{"lineNumber":33,"author":{"gitId":"yeoshuheng"},"content":" assertFalse(FundingStage.isValidFundingLevel(\"pss\")); // invalid funding level","lastModifiedDate":"2024-03-15"},{"lineNumber":34,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":35,"author":{"gitId":"yeoshuheng"},"content":" // valid funding levels","lastModifiedDate":"2024-03-05"},{"lineNumber":36,"author":{"gitId":"yeoshuheng"},"content":" assertTrue(FundingStage.isValidFundingLevel(\"A\"));","lastModifiedDate":"2024-03-05"},{"lineNumber":37,"author":{"gitId":"yeoshuheng"},"content":" assertTrue(FundingStage.isValidFundingLevel(\"B\"));","lastModifiedDate":"2024-03-05"},{"lineNumber":38,"author":{"gitId":"yeoshuheng"},"content":" assertTrue(FundingStage.isValidFundingLevel(\"b\"));","lastModifiedDate":"2024-03-15"},{"lineNumber":39,"author":{"gitId":"yeoshuheng"},"content":" assertTrue(FundingStage.isValidFundingLevel(\"C\"));","lastModifiedDate":"2024-03-05"},{"lineNumber":40,"author":{"gitId":"yeoshuheng"},"content":" assertTrue(FundingStage.isValidFundingLevel(\"s\"));","lastModifiedDate":"2024-03-15"},{"lineNumber":41,"author":{"gitId":"yeoshuheng"},"content":" assertTrue(FundingStage.isValidFundingLevel(\"S\"));","lastModifiedDate":"2024-03-15"},{"lineNumber":42,"author":{"gitId":"yeoshuheng"},"content":" assertTrue(FundingStage.isValidFundingLevel(\"PS\"));","lastModifiedDate":"2024-03-15"},{"lineNumber":43,"author":{"gitId":"yeoshuheng"},"content":" assertTrue(FundingStage.isValidFundingLevel(\"pS\"));","lastModifiedDate":"2024-03-15"},{"lineNumber":44,"author":{"gitId":"yeoshuheng"},"content":" assertTrue(FundingStage.isValidFundingLevel(\"Ps\"));","lastModifiedDate":"2024-03-15"},{"lineNumber":45,"author":{"gitId":"yeoshuheng"},"content":" assertTrue(FundingStage.isValidFundingLevel(\"ps\"));","lastModifiedDate":"2024-03-15"},{"lineNumber":46,"author":{"gitId":"yeoshuheng"},"content":" }","lastModifiedDate":"2024-03-05"},{"lineNumber":47,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":48,"author":{"gitId":"yeoshuheng"},"content":" @Test","lastModifiedDate":"2024-03-05"},{"lineNumber":49,"author":{"gitId":"yeoshuheng"},"content":" public void equals() {","lastModifiedDate":"2024-03-05"},{"lineNumber":50,"author":{"gitId":"yeoshuheng"},"content":" FundingStage fundingStage \u003d new FundingStage(\"A\");","lastModifiedDate":"2024-03-05"},{"lineNumber":51,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":52,"author":{"gitId":"yeoshuheng"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-05"},{"lineNumber":53,"author":{"gitId":"yeoshuheng"},"content":" assertTrue(fundingStage.equals(new FundingStage(\"A\")));","lastModifiedDate":"2024-03-05"},{"lineNumber":54,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":55,"author":{"gitId":"yeoshuheng"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-05"},{"lineNumber":56,"author":{"gitId":"yeoshuheng"},"content":" assertTrue(fundingStage.equals(fundingStage));","lastModifiedDate":"2024-03-05"},{"lineNumber":57,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":58,"author":{"gitId":"yeoshuheng"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-05"},{"lineNumber":59,"author":{"gitId":"yeoshuheng"},"content":" assertFalse(fundingStage.equals(null));","lastModifiedDate":"2024-03-05"},{"lineNumber":60,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":61,"author":{"gitId":"yeoshuheng"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-05"},{"lineNumber":62,"author":{"gitId":"yeoshuheng"},"content":" assertFalse(fundingStage.equals(5.0f));","lastModifiedDate":"2024-03-05"},{"lineNumber":63,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":64,"author":{"gitId":"yeoshuheng"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-05"},{"lineNumber":65,"author":{"gitId":"yeoshuheng"},"content":" assertFalse(fundingStage.equals(new FundingStage(\"B\")));","lastModifiedDate":"2024-03-05"},{"lineNumber":66,"author":{"gitId":"yeoshuheng"},"content":" }","lastModifiedDate":"2024-03-05"},{"lineNumber":67,"author":{"gitId":"yeoshuheng"},"content":"}","lastModifiedDate":"2024-03-05"}],"authorContributionMap":{"menatahari":1,"yeoshuheng":66}},{"path":"src/test/java/seedu/address/model/startup/IndustryTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"menatahari"},"content":"package seedu.address.model.startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":3,"author":{"gitId":"yeoshuheng"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-05"},{"lineNumber":4,"author":{"gitId":"yeoshuheng"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-05"},{"lineNumber":5,"author":{"gitId":"yeoshuheng"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-05"},{"lineNumber":6,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":7,"author":{"gitId":"yeoshuheng"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-05"},{"lineNumber":8,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":9,"author":{"gitId":"yeoshuheng"},"content":"public class IndustryTest {","lastModifiedDate":"2024-03-05"},{"lineNumber":10,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":11,"author":{"gitId":"yeoshuheng"},"content":" @Test","lastModifiedDate":"2024-03-05"},{"lineNumber":12,"author":{"gitId":"yeoshuheng"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-05"},{"lineNumber":13,"author":{"gitId":"yeoshuheng"},"content":" assertThrows(NullPointerException.class, () -\u003e new Industry(null));","lastModifiedDate":"2024-03-05"},{"lineNumber":14,"author":{"gitId":"yeoshuheng"},"content":" }","lastModifiedDate":"2024-03-05"},{"lineNumber":15,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":16,"author":{"gitId":"yeoshuheng"},"content":" @Test","lastModifiedDate":"2024-03-05"},{"lineNumber":17,"author":{"gitId":"yeoshuheng"},"content":" public void constructor_invalidIndustry_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-05"},{"lineNumber":18,"author":{"gitId":"yeoshuheng"},"content":" String invalidName \u003d \"\";","lastModifiedDate":"2024-03-05"},{"lineNumber":19,"author":{"gitId":"yeoshuheng"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Industry(invalidName));","lastModifiedDate":"2024-03-05"},{"lineNumber":20,"author":{"gitId":"yeoshuheng"},"content":" }","lastModifiedDate":"2024-03-05"},{"lineNumber":21,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":22,"author":{"gitId":"yeoshuheng"},"content":" @Test","lastModifiedDate":"2024-03-05"},{"lineNumber":23,"author":{"gitId":"yeoshuheng"},"content":" public void isValidIndustry() {","lastModifiedDate":"2024-03-05"},{"lineNumber":24,"author":{"gitId":"yeoshuheng"},"content":" assertThrows(NullPointerException.class, () -\u003e Industry.isValidIndustry(null));","lastModifiedDate":"2024-03-05"},{"lineNumber":25,"author":{"gitId":"yeoshuheng"},"content":" assertFalse(Industry.isValidIndustry(\"\")); // empty string","lastModifiedDate":"2024-03-05"},{"lineNumber":26,"author":{"gitId":"yeoshuheng"},"content":" assertFalse(Industry.isValidIndustry(\" \")); // spaces only","lastModifiedDate":"2024-03-05"},{"lineNumber":27,"author":{"gitId":"yeoshuheng"},"content":" assertFalse(Industry.isValidIndustry(\"^\")); // only non-alphanumeric characters","lastModifiedDate":"2024-03-05"},{"lineNumber":28,"author":{"gitId":"yeoshuheng"},"content":" assertFalse(Industry.isValidIndustry(\"finance*\")); // contains non-alphanumeric characters","lastModifiedDate":"2024-03-05"},{"lineNumber":29,"author":{"gitId":"yeoshuheng"},"content":" assertTrue(Industry.isValidIndustry(\"Finance\")); // alphabets only","lastModifiedDate":"2024-03-05"},{"lineNumber":30,"author":{"gitId":"yeoshuheng"},"content":" assertTrue(Industry.isValidIndustry(\"MANUFACTURING\")); // all capital","lastModifiedDate":"2024-03-05"},{"lineNumber":31,"author":{"gitId":"yeoshuheng"},"content":" assertTrue(Industry.isValidIndustry(\"web 3\")); // with numbers","lastModifiedDate":"2024-03-05"},{"lineNumber":32,"author":{"gitId":"yeoshuheng"},"content":" }","lastModifiedDate":"2024-03-05"},{"lineNumber":33,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":34,"author":{"gitId":"yeoshuheng"},"content":" @Test","lastModifiedDate":"2024-03-05"},{"lineNumber":35,"author":{"gitId":"yeoshuheng"},"content":" public void equals() {","lastModifiedDate":"2024-03-05"},{"lineNumber":36,"author":{"gitId":"yeoshuheng"},"content":" Industry industry \u003d new Industry(\"Valid Industry\");","lastModifiedDate":"2024-03-05"},{"lineNumber":37,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":38,"author":{"gitId":"yeoshuheng"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-05"},{"lineNumber":39,"author":{"gitId":"yeoshuheng"},"content":" assertTrue(industry.equals(new Industry(\"Valid Industry\")));","lastModifiedDate":"2024-03-05"},{"lineNumber":40,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":41,"author":{"gitId":"yeoshuheng"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-05"},{"lineNumber":42,"author":{"gitId":"yeoshuheng"},"content":" assertTrue(industry.equals(industry));","lastModifiedDate":"2024-03-05"},{"lineNumber":43,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":44,"author":{"gitId":"yeoshuheng"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-05"},{"lineNumber":45,"author":{"gitId":"yeoshuheng"},"content":" assertFalse(industry.equals(null));","lastModifiedDate":"2024-03-05"},{"lineNumber":46,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":47,"author":{"gitId":"yeoshuheng"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-05"},{"lineNumber":48,"author":{"gitId":"yeoshuheng"},"content":" assertFalse(industry.equals(5.0f));","lastModifiedDate":"2024-03-05"},{"lineNumber":49,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":50,"author":{"gitId":"yeoshuheng"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-05"},{"lineNumber":51,"author":{"gitId":"yeoshuheng"},"content":" assertFalse(industry.equals(new Industry(\"Other Valid Industry\")));","lastModifiedDate":"2024-03-05"},{"lineNumber":52,"author":{"gitId":"yeoshuheng"},"content":" }","lastModifiedDate":"2024-03-05"},{"lineNumber":53,"author":{"gitId":"yeoshuheng"},"content":"}","lastModifiedDate":"2024-03-05"}],"authorContributionMap":{"menatahari":1,"yeoshuheng":52}},{"path":"src/test/java/seedu/address/model/startup/NameContainsKeywordsPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"menatahari"},"content":"package seedu.address.model.startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"menatahari"},"content":"import seedu.address.testutil.StartupBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class NameContainsKeywordsPredicateTest {","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" List\u003cString\u003e firstPredicateKeywordList \u003d Collections.singletonList(\"first\");","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":" List\u003cString\u003e secondPredicateKeywordList \u003d Arrays.asList(\"first\", \"second\");","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicate \u003d new NameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate secondPredicate \u003d new NameContainsKeywordsPredicate(secondPredicateKeywordList);","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" assertTrue(firstPredicate.equals(firstPredicate));","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicateCopy \u003d new NameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertTrue(firstPredicate.equals(firstPredicateCopy));","lastModifiedDate":"2017-06-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(1));","lastModifiedDate":"2017-06-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(null));","lastModifiedDate":"2017-06-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":38,"author":{"gitId":"menatahari"},"content":" // different startup -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(secondPredicate));","lastModifiedDate":"2017-06-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void test_nameContainsKeywords_returnsTrue() {","lastModifiedDate":"2017-08-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // One keyword","lastModifiedDate":"2017-06-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Collections.singletonList(\"Alice\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":46,"author":{"gitId":"menatahari"},"content":" assertTrue(predicate.test(new StartupBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // Multiple keywords","lastModifiedDate":"2017-06-12"},{"lineNumber":49,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Alice\", \"Bob\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":50,"author":{"gitId":"menatahari"},"content":" assertTrue(predicate.test(new StartupBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // Only one matching keyword","lastModifiedDate":"2017-06-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Bob\", \"Carol\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":54,"author":{"gitId":"menatahari"},"content":" assertTrue(predicate.test(new StartupBuilder().withName(\"Alice Carol\").build()));","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // Mixed-case keywords","lastModifiedDate":"2017-06-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"aLIce\", \"bOB\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":58,"author":{"gitId":"menatahari"},"content":" assertTrue(predicate.test(new StartupBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void test_nameDoesNotContainKeywords_returnsFalse() {","lastModifiedDate":"2017-08-15"},{"lineNumber":63,"author":{"gitId":"-"},"content":" // Zero keywords","lastModifiedDate":"2017-06-12"},{"lineNumber":64,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Collections.emptyList());","lastModifiedDate":"2017-06-12"},{"lineNumber":65,"author":{"gitId":"menatahari"},"content":" assertFalse(predicate.test(new StartupBuilder().withName(\"Alice\").build()));","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":" // Non-matching keyword","lastModifiedDate":"2017-06-12"},{"lineNumber":68,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Carol\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":69,"author":{"gitId":"menatahari"},"content":" assertFalse(predicate.test(new StartupBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // Keywords match phone, email and address, but does not match name","lastModifiedDate":"2017-06-12"},{"lineNumber":72,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"12345\", \"alice@email.com\", \"Main\", \"Street\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":73,"author":{"gitId":"menatahari"},"content":" assertFalse(predicate.test(new StartupBuilder().withName(\"Alice\").withPhone(\"12345\")","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" .withEmail(\"alice@email.com\").withAddress(\"Main Street\").build()));","lastModifiedDate":"2017-06-12"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d List.of(\"keyword1\", \"keyword2\");","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(keywords);","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" String expected \u003d NameContainsKeywordsPredicate.class.getCanonicalName() + \"{keywords\u003d\" + keywords + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"menatahari":10,"-":75}},{"path":"src/test/java/seedu/address/model/startup/NameTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"menatahari"},"content":"package seedu.address.model.startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class NameTest {","lastModifiedDate":"2017-01-16"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04"},{"lineNumber":13,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new Name(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":14,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void constructor_invalidName_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":" String invalidName \u003d \"\";","lastModifiedDate":"2017-05-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Name(invalidName));","lastModifiedDate":"2019-03-14"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void isValidName() {","lastModifiedDate":"2017-01-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // null name","lastModifiedDate":"2017-12-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Name.isValidName(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-01-16"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"\")); // empty string","lastModifiedDate":"2017-01-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\" \")); // spaces only","lastModifiedDate":"2017-01-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"^\")); // only non-alphanumeric characters","lastModifiedDate":"2017-01-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"peter*\")); // contains non-alphanumeric characters","lastModifiedDate":"2017-01-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // valid name","lastModifiedDate":"2017-01-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"peter jack\")); // alphabets only","lastModifiedDate":"2017-01-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"12345\")); // numbers only","lastModifiedDate":"2017-01-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"peter the 2nd\")); // alphanumeric characters","lastModifiedDate":"2017-01-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"Capital Tan\")); // with capital letters","lastModifiedDate":"2017-01-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"David Roger Jackson Ray Jr 2nd\")); // long names","lastModifiedDate":"2017-01-16"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" Name name \u003d new Name(\"Valid Name\");","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(name.equals(new Name(\"Valid Name\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertTrue(name.equals(name));","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(name.equals(null));","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertFalse(name.equals(5.0f));","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertFalse(name.equals(new Name(\"Other Valid Name\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16"}],"authorContributionMap":{"menatahari":1,"-":59}},{"path":"src/test/java/seedu/address/model/startup/PhoneTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"menatahari"},"content":"package seedu.address.model.startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class PhoneTest {","lastModifiedDate":"2017-01-16"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04"},{"lineNumber":13,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new Phone(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":14,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void constructor_invalidPhone_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":" String invalidPhone \u003d \"\";","lastModifiedDate":"2017-05-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Phone(invalidPhone));","lastModifiedDate":"2019-03-14"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void isValidPhone() {","lastModifiedDate":"2017-01-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // null phone number","lastModifiedDate":"2017-12-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Phone.isValidPhone(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // invalid phone numbers","lastModifiedDate":"2017-01-16"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"\")); // empty string","lastModifiedDate":"2017-01-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\" \")); // spaces only","lastModifiedDate":"2017-01-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"91\")); // less than 3 numbers","lastModifiedDate":"2017-05-04"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"phone\")); // non-numeric","lastModifiedDate":"2017-01-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"9011p041\")); // alphabets within digits","lastModifiedDate":"2017-01-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"9312 1534\")); // spaces within digits","lastModifiedDate":"2017-01-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // valid phone numbers","lastModifiedDate":"2017-01-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertTrue(Phone.isValidPhone(\"911\")); // exactly 3 numbers","lastModifiedDate":"2017-05-04"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertTrue(Phone.isValidPhone(\"93121534\"));","lastModifiedDate":"2017-01-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertTrue(Phone.isValidPhone(\"124293842033123\")); // long phone numbers","lastModifiedDate":"2017-01-16"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" Phone phone \u003d new Phone(\"999\");","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(phone.equals(new Phone(\"999\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertTrue(phone.equals(phone));","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(phone.equals(null));","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertFalse(phone.equals(5.0f));","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertFalse(phone.equals(new Phone(\"995\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16"}],"authorContributionMap":{"menatahari":1,"-":59}},{"path":"src/test/java/seedu/address/model/startup/StartupTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"menatahari"},"content":"package seedu.address.model.startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-04-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":12,"author":{"gitId":"menatahari"},"content":"import static seedu.address.testutil.TypicalStartups.ALICE;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"menatahari"},"content":"import static seedu.address.testutil.TypicalStartups.BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":17,"author":{"gitId":"menatahari"},"content":"import seedu.address.testutil.StartupBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":19,"author":{"gitId":"menatahari"},"content":"public class StartupTest {","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public void asObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":23,"author":{"gitId":"menatahari"},"content":" Startup startup \u003d new StartupBuilder().build();","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"menatahari"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e startup.getTags().remove(0));","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19"},{"lineNumber":28,"author":{"gitId":"menatahari"},"content":" public void isSameStartup() {","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":30,"author":{"gitId":"menatahari"},"content":" assertTrue(ALICE.isSameStartup(ALICE));","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":33,"author":{"gitId":"menatahari"},"content":" assertFalse(ALICE.isSameStartup(null));","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // same name, all other attributes different -\u003e returns true","lastModifiedDate":"2020-12-18"},{"lineNumber":36,"author":{"gitId":"menatahari"},"content":" Startup editedAlice \u003d new StartupBuilder(ALICE).withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":" .withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2020-12-18"},{"lineNumber":38,"author":{"gitId":"menatahari"},"content":" assertTrue(ALICE.isSameStartup(editedAlice));","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":" // different name, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":41,"author":{"gitId":"menatahari"},"content":" editedAlice \u003d new StartupBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"menatahari"},"content":" assertFalse(ALICE.isSameStartup(editedAlice));","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // name differs in case, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":45,"author":{"gitId":"menatahari"},"content":" Startup editedBob \u003d new StartupBuilder(BOB).withName(VALID_NAME_BOB.toLowerCase()).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"menatahari"},"content":" assertFalse(BOB.isSameStartup(editedBob));","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // name has trailing spaces, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":49,"author":{"gitId":"-"},"content":" String nameWithTrailingSpaces \u003d VALID_NAME_BOB + \" \";","lastModifiedDate":"2020-12-18"},{"lineNumber":50,"author":{"gitId":"menatahari"},"content":" editedBob \u003d new StartupBuilder(BOB).withName(nameWithTrailingSpaces).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"menatahari"},"content":" assertFalse(BOB.isSameStartup(editedBob));","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":57,"author":{"gitId":"menatahari"},"content":" Startup aliceCopy \u003d new StartupBuilder(ALICE).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2018-04-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2018-04-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(null));","lastModifiedDate":"2018-04-19"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2018-04-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":69,"author":{"gitId":"menatahari"},"content":" // different startup -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2018-04-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":73,"author":{"gitId":"menatahari"},"content":" Startup editedAlice \u003d new StartupBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":77,"author":{"gitId":"menatahari"},"content":" editedAlice \u003d new StartupBuilder(ALICE).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":81,"author":{"gitId":"menatahari"},"content":" editedAlice \u003d new StartupBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":84,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":85,"author":{"gitId":"menatahari"},"content":" editedAlice \u003d new StartupBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-18"},{"lineNumber":88,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2018-04-18"},{"lineNumber":89,"author":{"gitId":"menatahari"},"content":" editedAlice \u003d new StartupBuilder(ALICE).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-18"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":95,"author":{"gitId":"menatahari"},"content":" String expected \u003d Startup.class.getCanonicalName()","lastModifiedDate":"2024-03-19"},{"lineNumber":96,"author":{"gitId":"dwangwk"},"content":" + \"{name\u003d\" + ALICE.getName()","lastModifiedDate":"2024-03-14"},{"lineNumber":97,"author":{"gitId":"dwangwk"},"content":" + \", industry\u003d\" + ALICE.getIndustry()","lastModifiedDate":"2024-03-14"},{"lineNumber":98,"author":{"gitId":"dwangwk"},"content":" + \", funding stage\u003d\" + ALICE.getFundingStage()","lastModifiedDate":"2024-03-14"},{"lineNumber":99,"author":{"gitId":"yeoshuheng"},"content":" + \", phone\u003d\" + ALICE.getPhone()","lastModifiedDate":"2024-02-25"},{"lineNumber":100,"author":{"gitId":"dwangwk"},"content":" + \", email\u003d\" + ALICE.getEmail()","lastModifiedDate":"2024-03-14"},{"lineNumber":101,"author":{"gitId":"dwangwk"},"content":" + \", address\u003d\" + ALICE.getAddress()","lastModifiedDate":"2024-03-14"},{"lineNumber":102,"author":{"gitId":"dwangwk"},"content":" + \", note\u003d\" + ALICE.getNote()","lastModifiedDate":"2024-03-14"},{"lineNumber":103,"author":{"gitId":"dwangwk"},"content":" + \", tags\u003d\" + ALICE.getTags() + \"}\";","lastModifiedDate":"2024-03-14"},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"dwangwk":7,"menatahari":26,"-":72,"yeoshuheng":1}},{"path":"src/test/java/seedu/address/model/startup/UniqueStartupListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"menatahari"},"content":"package seedu.address.model.startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"menatahari"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"menatahari"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"menatahari"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"menatahari"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"menatahari"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"menatahari"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"menatahari"},"content":"import static seedu.address.testutil.TypicalStartups.ALICE;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"menatahari"},"content":"import static seedu.address.testutil.TypicalStartups.BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"menatahari"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"menatahari"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"menatahari"},"content":"import java.util.List;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"menatahari"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.exceptions.DuplicateStartupException;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.exceptions.StartupNotFoundException;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"menatahari"},"content":"import seedu.address.testutil.StartupBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"menatahari"},"content":"public class UniqueStartupListTest {","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"menatahari"},"content":" private final UniqueStartupList uniqueStartupList \u003d new UniqueStartupList();","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"menatahari"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"menatahari"},"content":" public void contains_nullStartup_throwsNullPointerException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"menatahari"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueStartupList.contains(null));","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"menatahari"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"menatahari"},"content":" public void contains_startupNotInList_returnsFalse() {","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"menatahari"},"content":" assertFalse(uniqueStartupList.contains(ALICE));","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"menatahari"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"menatahari"},"content":" public void contains_startupInList_returnsTrue() {","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"menatahari"},"content":" uniqueStartupList.add(ALICE);","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"menatahari"},"content":" assertTrue(uniqueStartupList.contains(ALICE));","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"menatahari"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"menatahari"},"content":" public void contains_startupWithSameIdentityFieldsInList_returnsTrue() {","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"menatahari"},"content":" uniqueStartupList.add(ALICE);","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"menatahari"},"content":" Startup editedAlice \u003d new StartupBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"menatahari"},"content":" .build();","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"menatahari"},"content":" assertTrue(uniqueStartupList.contains(editedAlice));","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"menatahari"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"menatahari"},"content":" public void add_nullStartup_throwsNullPointerException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"menatahari"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueStartupList.add(null));","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"menatahari"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"menatahari"},"content":" public void add_duplicateStartup_throwsDuplicateStartupException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"menatahari"},"content":" uniqueStartupList.add(ALICE);","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"menatahari"},"content":" assertThrows(DuplicateStartupException.class, () -\u003e uniqueStartupList.add(ALICE));","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"menatahari"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"menatahari"},"content":" public void setStartup_nullTargetStartup_throwsNullPointerException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"menatahari"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueStartupList.setStartup(null, ALICE));","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"menatahari"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"menatahari"},"content":" public void setStartup_nullEditedStartup_throwsNullPointerException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"menatahari"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueStartupList.setStartup(ALICE, null));","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"menatahari"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"menatahari"},"content":" public void setStartup_targetStartupNotInList_throwsStartupNotFoundException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"menatahari"},"content":" assertThrows(StartupNotFoundException.class, () -\u003e uniqueStartupList.setStartup(ALICE, ALICE));","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":75,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"menatahari"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"menatahari"},"content":" public void setStartup_editedStartupIsSameStartup_success() {","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"menatahari"},"content":" uniqueStartupList.add(ALICE);","lastModifiedDate":"2024-03-19"},{"lineNumber":79,"author":{"gitId":"menatahari"},"content":" uniqueStartupList.setStartup(ALICE, ALICE);","lastModifiedDate":"2024-03-19"},{"lineNumber":80,"author":{"gitId":"menatahari"},"content":" UniqueStartupList expectedUniqueStartupList \u003d new UniqueStartupList();","lastModifiedDate":"2024-03-19"},{"lineNumber":81,"author":{"gitId":"menatahari"},"content":" expectedUniqueStartupList.add(ALICE);","lastModifiedDate":"2024-03-19"},{"lineNumber":82,"author":{"gitId":"menatahari"},"content":" assertEquals(expectedUniqueStartupList, uniqueStartupList);","lastModifiedDate":"2024-03-19"},{"lineNumber":83,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":84,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":85,"author":{"gitId":"menatahari"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":86,"author":{"gitId":"menatahari"},"content":" public void setStartup_editedStartupHasSameIdentity_success() {","lastModifiedDate":"2024-03-19"},{"lineNumber":87,"author":{"gitId":"menatahari"},"content":" uniqueStartupList.add(ALICE);","lastModifiedDate":"2024-03-19"},{"lineNumber":88,"author":{"gitId":"menatahari"},"content":" Startup editedAlice \u003d new StartupBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-03-19"},{"lineNumber":89,"author":{"gitId":"menatahari"},"content":" .build();","lastModifiedDate":"2024-03-19"},{"lineNumber":90,"author":{"gitId":"menatahari"},"content":" uniqueStartupList.setStartup(ALICE, editedAlice);","lastModifiedDate":"2024-03-19"},{"lineNumber":91,"author":{"gitId":"menatahari"},"content":" UniqueStartupList expectedUniqueStartupList \u003d new UniqueStartupList();","lastModifiedDate":"2024-03-19"},{"lineNumber":92,"author":{"gitId":"menatahari"},"content":" expectedUniqueStartupList.add(editedAlice);","lastModifiedDate":"2024-03-19"},{"lineNumber":93,"author":{"gitId":"menatahari"},"content":" assertEquals(expectedUniqueStartupList, uniqueStartupList);","lastModifiedDate":"2024-03-19"},{"lineNumber":94,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":95,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":96,"author":{"gitId":"menatahari"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":97,"author":{"gitId":"menatahari"},"content":" public void setStartup_editedStartupHasDifferentIdentity_success() {","lastModifiedDate":"2024-03-19"},{"lineNumber":98,"author":{"gitId":"menatahari"},"content":" uniqueStartupList.add(ALICE);","lastModifiedDate":"2024-03-19"},{"lineNumber":99,"author":{"gitId":"menatahari"},"content":" uniqueStartupList.setStartup(ALICE, BOB);","lastModifiedDate":"2024-03-19"},{"lineNumber":100,"author":{"gitId":"menatahari"},"content":" UniqueStartupList expectedUniqueStartupList \u003d new UniqueStartupList();","lastModifiedDate":"2024-03-19"},{"lineNumber":101,"author":{"gitId":"menatahari"},"content":" expectedUniqueStartupList.add(BOB);","lastModifiedDate":"2024-03-19"},{"lineNumber":102,"author":{"gitId":"menatahari"},"content":" assertEquals(expectedUniqueStartupList, uniqueStartupList);","lastModifiedDate":"2024-03-19"},{"lineNumber":103,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":104,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":105,"author":{"gitId":"menatahari"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":106,"author":{"gitId":"menatahari"},"content":" public void setStartup_editedStartupHasNonUniqueIdentity_throwsDuplicateStartupException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":107,"author":{"gitId":"menatahari"},"content":" uniqueStartupList.add(ALICE);","lastModifiedDate":"2024-03-19"},{"lineNumber":108,"author":{"gitId":"menatahari"},"content":" uniqueStartupList.add(BOB);","lastModifiedDate":"2024-03-19"},{"lineNumber":109,"author":{"gitId":"menatahari"},"content":" assertThrows(DuplicateStartupException.class, () -\u003e uniqueStartupList.setStartup(ALICE, BOB));","lastModifiedDate":"2024-03-19"},{"lineNumber":110,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":111,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":112,"author":{"gitId":"menatahari"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":113,"author":{"gitId":"menatahari"},"content":" public void remove_nullStartup_throwsNullPointerException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":114,"author":{"gitId":"menatahari"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueStartupList.remove(null));","lastModifiedDate":"2024-03-19"},{"lineNumber":115,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":116,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":117,"author":{"gitId":"menatahari"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":118,"author":{"gitId":"menatahari"},"content":" public void remove_startupDoesNotExist_throwsStartupNotFoundException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":119,"author":{"gitId":"menatahari"},"content":" assertThrows(StartupNotFoundException.class, () -\u003e uniqueStartupList.remove(ALICE));","lastModifiedDate":"2024-03-19"},{"lineNumber":120,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":121,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":122,"author":{"gitId":"menatahari"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":123,"author":{"gitId":"menatahari"},"content":" public void remove_existingStartup_removesStartup() {","lastModifiedDate":"2024-03-19"},{"lineNumber":124,"author":{"gitId":"menatahari"},"content":" uniqueStartupList.add(ALICE);","lastModifiedDate":"2024-03-19"},{"lineNumber":125,"author":{"gitId":"menatahari"},"content":" uniqueStartupList.remove(ALICE);","lastModifiedDate":"2024-03-19"},{"lineNumber":126,"author":{"gitId":"menatahari"},"content":" UniqueStartupList expectedUniqueStartupList \u003d new UniqueStartupList();","lastModifiedDate":"2024-03-19"},{"lineNumber":127,"author":{"gitId":"menatahari"},"content":" assertEquals(expectedUniqueStartupList, uniqueStartupList);","lastModifiedDate":"2024-03-19"},{"lineNumber":128,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":129,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":130,"author":{"gitId":"menatahari"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":131,"author":{"gitId":"menatahari"},"content":" public void setStartups_nullUniqueStartupList_throwsNullPointerException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":132,"author":{"gitId":"menatahari"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueStartupList.setStartups((UniqueStartupList) null));","lastModifiedDate":"2024-03-19"},{"lineNumber":133,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":134,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":135,"author":{"gitId":"menatahari"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":136,"author":{"gitId":"menatahari"},"content":" public void setStartups_uniqueStartupList_replacesOwnListWithProvidedUniqueStartupList() {","lastModifiedDate":"2024-03-19"},{"lineNumber":137,"author":{"gitId":"menatahari"},"content":" uniqueStartupList.add(ALICE);","lastModifiedDate":"2024-03-19"},{"lineNumber":138,"author":{"gitId":"menatahari"},"content":" UniqueStartupList expectedUniqueStartupList \u003d new UniqueStartupList();","lastModifiedDate":"2024-03-19"},{"lineNumber":139,"author":{"gitId":"menatahari"},"content":" expectedUniqueStartupList.add(BOB);","lastModifiedDate":"2024-03-19"},{"lineNumber":140,"author":{"gitId":"menatahari"},"content":" uniqueStartupList.setStartups(expectedUniqueStartupList);","lastModifiedDate":"2024-03-19"},{"lineNumber":141,"author":{"gitId":"menatahari"},"content":" assertEquals(expectedUniqueStartupList, uniqueStartupList);","lastModifiedDate":"2024-03-19"},{"lineNumber":142,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":143,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":144,"author":{"gitId":"menatahari"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":145,"author":{"gitId":"menatahari"},"content":" public void setStartups_nullList_throwsNullPointerException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":146,"author":{"gitId":"menatahari"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueStartupList.setStartups((List\u003cStartup\u003e) null));","lastModifiedDate":"2024-03-19"},{"lineNumber":147,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":148,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":149,"author":{"gitId":"menatahari"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":150,"author":{"gitId":"menatahari"},"content":" public void setStartups_list_replacesOwnListWithProvidedList() {","lastModifiedDate":"2024-03-19"},{"lineNumber":151,"author":{"gitId":"menatahari"},"content":" uniqueStartupList.add(ALICE);","lastModifiedDate":"2024-03-19"},{"lineNumber":152,"author":{"gitId":"menatahari"},"content":" List\u003cStartup\u003e startupList \u003d Collections.singletonList(BOB);","lastModifiedDate":"2024-03-19"},{"lineNumber":153,"author":{"gitId":"menatahari"},"content":" uniqueStartupList.setStartups(startupList);","lastModifiedDate":"2024-03-19"},{"lineNumber":154,"author":{"gitId":"menatahari"},"content":" UniqueStartupList expectedUniqueStartupList \u003d new UniqueStartupList();","lastModifiedDate":"2024-03-19"},{"lineNumber":155,"author":{"gitId":"menatahari"},"content":" expectedUniqueStartupList.add(BOB);","lastModifiedDate":"2024-03-19"},{"lineNumber":156,"author":{"gitId":"menatahari"},"content":" assertEquals(expectedUniqueStartupList, uniqueStartupList);","lastModifiedDate":"2024-03-19"},{"lineNumber":157,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":158,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":159,"author":{"gitId":"menatahari"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":160,"author":{"gitId":"menatahari"},"content":" public void setStartups_listWithDuplicateStartups_throwsDuplicateStartupException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":161,"author":{"gitId":"menatahari"},"content":" List\u003cStartup\u003e listWithDuplicateStartups \u003d Arrays.asList(ALICE, ALICE);","lastModifiedDate":"2024-03-19"},{"lineNumber":162,"author":{"gitId":"menatahari"},"content":" assertThrows(DuplicateStartupException.class, () -\u003e uniqueStartupList.setStartups(listWithDuplicateStartups));","lastModifiedDate":"2024-03-19"},{"lineNumber":163,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":164,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":165,"author":{"gitId":"menatahari"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":166,"author":{"gitId":"menatahari"},"content":" public void asUnmodifiableObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":167,"author":{"gitId":"menatahari"},"content":" assertThrows(UnsupportedOperationException.class, ()","lastModifiedDate":"2024-03-19"},{"lineNumber":168,"author":{"gitId":"menatahari"},"content":" -\u003e uniqueStartupList.asUnmodifiableObservableList().remove(0));","lastModifiedDate":"2024-03-19"},{"lineNumber":169,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":170,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":171,"author":{"gitId":"menatahari"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":172,"author":{"gitId":"menatahari"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-19"},{"lineNumber":173,"author":{"gitId":"menatahari"},"content":" assertEquals(uniqueStartupList.asUnmodifiableObservableList().toString(), uniqueStartupList.toString());","lastModifiedDate":"2024-03-19"},{"lineNumber":174,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":175,"author":{"gitId":"menatahari"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"menatahari":175}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedStartupTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"menatahari"},"content":"import static seedu.address.storage.JsonAdaptedStartup.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"menatahari"},"content":"import static seedu.address.testutil.TypicalStartups.BENSON;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":15,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Address;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Email;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Name;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Phone;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"menatahari"},"content":"public class JsonAdaptedStartupTest {","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"yeoshuheng"},"content":" private static final String INVALID_FUNDING \u003d \"D\";","lastModifiedDate":"2024-02-25"},{"lineNumber":28,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":29,"author":{"gitId":"yeoshuheng"},"content":" private static final String INVALID_INDUSTRY \u003d \" \";","lastModifiedDate":"2024-02-25"},{"lineNumber":30,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d BENSON.getPhone().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d BENSON.getAddress().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":36,"author":{"gitId":"yeoshuheng"},"content":" private static final String VALID_FUNDING \u003d BENSON.getFundingStage().toString();","lastModifiedDate":"2024-02-25"},{"lineNumber":37,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":38,"author":{"gitId":"yeoshuheng"},"content":" private static final String VALID_INDUSTRY \u003d BENSON.getIndustry().toString();","lastModifiedDate":"2024-02-25"},{"lineNumber":39,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"dwangwk"},"content":" private static final String VALID_NOTE \u003d BENSON.getNote().toString();","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" private static final List\u003cJsonAdaptedTag\u003e VALID_TAGS \u003d BENSON.getTags().stream()","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"menatahari"},"content":" public void toModelType_validStartupDetails_returnsStartup() throws Exception {","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"menatahari"},"content":" JsonAdaptedStartup startup \u003d new JsonAdaptedStartup(BENSON);","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"menatahari"},"content":" assertEquals(BENSON, startup.toModelType());","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"menatahari"},"content":" JsonAdaptedStartup startup \u003d","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"menatahari"},"content":" new JsonAdaptedStartup(INVALID_NAME, VALID_INDUSTRY, VALID_FUNDING,","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"dwangwk"},"content":" VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_NOTE, VALID_TAGS);","lastModifiedDate":"2024-03-14"},{"lineNumber":56,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"menatahari"},"content":" assertThrows(IllegalValueException.class, expectedMessage, startup::toModelType);","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"menatahari"},"content":" JsonAdaptedStartup startup \u003d new JsonAdaptedStartup(null, VALID_INDUSTRY, VALID_FUNDING,","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"dwangwk"},"content":" VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_NOTE, VALID_TAGS);","lastModifiedDate":"2024-03-14"},{"lineNumber":64,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"menatahari"},"content":" assertThrows(IllegalValueException.class, expectedMessage, startup::toModelType);","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void toModelType_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"menatahari"},"content":" JsonAdaptedStartup startup \u003d","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"menatahari"},"content":" new JsonAdaptedStartup(VALID_NAME, VALID_INDUSTRY, VALID_FUNDING,","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"dwangwk"},"content":" INVALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_NOTE, VALID_TAGS);","lastModifiedDate":"2024-03-14"},{"lineNumber":73,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Phone.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":74,"author":{"gitId":"menatahari"},"content":" assertThrows(IllegalValueException.class, expectedMessage, startup::toModelType);","lastModifiedDate":"2024-03-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void toModelType_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":79,"author":{"gitId":"menatahari"},"content":" JsonAdaptedStartup startup \u003d new JsonAdaptedStartup(VALID_NAME, VALID_INDUSTRY, VALID_FUNDING,","lastModifiedDate":"2024-03-19"},{"lineNumber":80,"author":{"gitId":"dwangwk"},"content":" null, VALID_EMAIL, VALID_ADDRESS, VALID_NOTE, VALID_TAGS);","lastModifiedDate":"2024-03-14"},{"lineNumber":81,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":82,"author":{"gitId":"menatahari"},"content":" assertThrows(IllegalValueException.class, expectedMessage, startup::toModelType);","lastModifiedDate":"2024-03-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"menatahari"},"content":" JsonAdaptedStartup startup \u003d","lastModifiedDate":"2024-03-19"},{"lineNumber":88,"author":{"gitId":"menatahari"},"content":" new JsonAdaptedStartup(VALID_NAME, VALID_INDUSTRY, VALID_FUNDING,","lastModifiedDate":"2024-03-19"},{"lineNumber":89,"author":{"gitId":"dwangwk"},"content":" VALID_PHONE, INVALID_EMAIL, VALID_ADDRESS, VALID_NOTE, VALID_TAGS);","lastModifiedDate":"2024-03-14"},{"lineNumber":90,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":91,"author":{"gitId":"menatahari"},"content":" assertThrows(IllegalValueException.class, expectedMessage, startup::toModelType);","lastModifiedDate":"2024-03-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"menatahari"},"content":" JsonAdaptedStartup startup \u003d new JsonAdaptedStartup(VALID_NAME, VALID_INDUSTRY, VALID_FUNDING,","lastModifiedDate":"2024-03-19"},{"lineNumber":97,"author":{"gitId":"dwangwk"},"content":" VALID_PHONE, null, VALID_ADDRESS, VALID_NOTE, VALID_TAGS);","lastModifiedDate":"2024-03-14"},{"lineNumber":98,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":99,"author":{"gitId":"menatahari"},"content":" assertThrows(IllegalValueException.class, expectedMessage, startup::toModelType);","lastModifiedDate":"2024-03-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":" public void toModelType_invalidAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":104,"author":{"gitId":"menatahari"},"content":" JsonAdaptedStartup startup \u003d","lastModifiedDate":"2024-03-19"},{"lineNumber":105,"author":{"gitId":"menatahari"},"content":" new JsonAdaptedStartup(VALID_NAME, VALID_INDUSTRY, VALID_FUNDING,","lastModifiedDate":"2024-03-19"},{"lineNumber":106,"author":{"gitId":"dwangwk"},"content":" VALID_PHONE, VALID_EMAIL, INVALID_ADDRESS, VALID_NOTE, VALID_TAGS);","lastModifiedDate":"2024-03-14"},{"lineNumber":107,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Address.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":108,"author":{"gitId":"menatahari"},"content":" assertThrows(IllegalValueException.class, expectedMessage, startup::toModelType);","lastModifiedDate":"2024-03-19"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" public void toModelType_nullAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":113,"author":{"gitId":"menatahari"},"content":" JsonAdaptedStartup startup \u003d new JsonAdaptedStartup(VALID_NAME, VALID_INDUSTRY, VALID_FUNDING,","lastModifiedDate":"2024-03-19"},{"lineNumber":114,"author":{"gitId":"dwangwk"},"content":" VALID_PHONE, VALID_EMAIL, null, VALID_NOTE, VALID_TAGS);","lastModifiedDate":"2024-03-14"},{"lineNumber":115,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":116,"author":{"gitId":"menatahari"},"content":" assertThrows(IllegalValueException.class, expectedMessage, startup::toModelType);","lastModifiedDate":"2024-03-19"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":119,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":" public void toModelType_invalidTags_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":121,"author":{"gitId":"-"},"content":" List\u003cJsonAdaptedTag\u003e invalidTags \u003d new ArrayList\u003c\u003e(VALID_TAGS);","lastModifiedDate":"2018-08-13"},{"lineNumber":122,"author":{"gitId":"-"},"content":" invalidTags.add(new JsonAdaptedTag(INVALID_TAG));","lastModifiedDate":"2018-08-13"},{"lineNumber":123,"author":{"gitId":"menatahari"},"content":" JsonAdaptedStartup startup \u003d","lastModifiedDate":"2024-03-19"},{"lineNumber":124,"author":{"gitId":"menatahari"},"content":" new JsonAdaptedStartup(VALID_NAME, VALID_INDUSTRY, VALID_FUNDING,","lastModifiedDate":"2024-03-19"},{"lineNumber":125,"author":{"gitId":"dwangwk"},"content":" VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_NOTE, invalidTags);","lastModifiedDate":"2024-03-14"},{"lineNumber":126,"author":{"gitId":"menatahari"},"content":" assertThrows(IllegalValueException.class, startup::toModelType);","lastModifiedDate":"2024-03-19"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":129,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"dwangwk":11,"menatahari":33,"-":77,"yeoshuheng":8}},{"path":"src/test/java/seedu/address/storage/JsonAddressBookStorageTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":6,"author":{"gitId":"menatahari"},"content":"import static seedu.address.testutil.TypicalStartups.ALICE;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"menatahari"},"content":"import static seedu.address.testutil.TypicalStartups.HOON;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"menatahari"},"content":"import static seedu.address.testutil.TypicalStartups.IDA;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"menatahari"},"content":"import static seedu.address.testutil.TypicalStartups.getTypicalAddressBook;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-08-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class JsonAddressBookStorageTest {","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonAddressBookStorageTest\");","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public Path testFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void readAddressBook_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e readAddressBook(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private java.util.Optional\u003cReadOnlyAddressBook\u003e readAddressBook(String filePath) throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" return new JsonAddressBookStorage(Paths.get(filePath)).readAddressBook(addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private Path addToTestDataPathIfNotNull(String prefsFileInTestDataFolder) {","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" return prefsFileInTestDataFolder !\u003d null","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" ? TEST_DATA_FOLDER.resolve(prefsFileInTestDataFolder)","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" : null;","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void read_missingFile_emptyResult() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(readAddressBook(\"NonExistentFile.json\").isPresent());","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void read_notJsonFormat_exceptionThrown() {","lastModifiedDate":"2019-03-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertThrows(DataLoadingException.class, () -\u003e readAddressBook(\"notJsonFormatAddressBook.json\"));","lastModifiedDate":"2023-06-14"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"menatahari"},"content":" public void readAddressBook_invalidStartupAddressBook_throwDataLoadingException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"menatahari"},"content":" assertThrows(DataLoadingException.class, () -\u003e readAddressBook(\"invalidStartupAddressBook.json\"));","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":59,"author":{"gitId":"menatahari"},"content":" public void readAddressBook_invalidAndValidStartupAddressBook_throwDataLoadingException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"menatahari"},"content":" assertThrows(DataLoadingException.class, () -\u003e readAddressBook(\"invalidAndValidStartupAddressBook.json\"));","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void readAndSaveAddressBook_allInOrder_success() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" Path filePath \u003d testFolder.resolve(\"TempAddressBook.json\");","lastModifiedDate":"2019-04-25"},{"lineNumber":66,"author":{"gitId":"-"},"content":" AddressBook original \u003d getTypicalAddressBook();","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" JsonAddressBookStorage jsonAddressBookStorage \u003d new JsonAddressBookStorage(filePath);","lastModifiedDate":"2018-08-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" // Save in new file and read back","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" jsonAddressBookStorage.saveAddressBook(original, filePath);","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook readBack \u003d jsonAddressBookStorage.readAddressBook(filePath).get();","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(readBack));","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" // Modify data, overwrite exiting file, and read back","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"menatahari"},"content":" original.addStartup(HOON);","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"menatahari"},"content":" original.removeStartup(ALICE);","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"-"},"content":" jsonAddressBookStorage.saveAddressBook(original, filePath);","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" readBack \u003d jsonAddressBookStorage.readAddressBook(filePath).get();","lastModifiedDate":"2018-08-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(readBack));","lastModifiedDate":"2018-08-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" // Save and read without specifying file path","lastModifiedDate":"2018-08-13"},{"lineNumber":82,"author":{"gitId":"menatahari"},"content":" original.addStartup(IDA);","lastModifiedDate":"2024-03-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":" jsonAddressBookStorage.saveAddressBook(original); // file path not specified","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" readBack \u003d jsonAddressBookStorage.readAddressBook().get(); // file path not specified","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(readBack));","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":" public void saveAddressBook_nullAddressBook_throwsNullPointerException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e saveAddressBook(null, \"SomeFile.json\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * Saves {@code addressBook} at the specified {@code filePath}.","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" private void saveAddressBook(ReadOnlyAddressBook addressBook, String filePath) {","lastModifiedDate":"2018-08-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-08-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(Paths.get(filePath))","lastModifiedDate":"2018-08-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" .saveAddressBook(addressBook, addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2018-08-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":" throw new AssertionError(\"There should not be an error writing to the file.\", ioe);","lastModifiedDate":"2018-08-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public void saveAddressBook_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e saveAddressBook(new AddressBook(), null));","lastModifiedDate":"2019-03-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"menatahari":11,"-":99}},{"path":"src/test/java/seedu/address/storage/JsonSerializableAddressBookTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.JsonUtil;","lastModifiedDate":"2018-08-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"menatahari"},"content":"import seedu.address.testutil.TypicalStartups;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class JsonSerializableAddressBookTest {","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonSerializableAddressBookTest\");","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"menatahari"},"content":" private static final Path TYPICAL_STARTUPS_FILE \u003d TEST_DATA_FOLDER.resolve(\"typicalStartupAddressBook.json\");","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"menatahari"},"content":" private static final Path INVALID_STARTUP_FILE \u003d TEST_DATA_FOLDER.resolve(\"invalidStartupAddressBook.json\");","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"menatahari"},"content":" private static final Path DUPLICATE_STARTUP_FILE \u003d TEST_DATA_FOLDER.resolve(\"duplicateStartupAddressBook.json\");","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"menatahari"},"content":" public void toModelType_typicalStartupsFile_success() throws Exception {","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"menatahari"},"content":" JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(TYPICAL_STARTUPS_FILE,","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook.class).get();","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" AddressBook addressBookFromFile \u003d dataFromFile.toModelType();","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"menatahari"},"content":" AddressBook typicalStartupsAddressBook \u003d TypicalStartups.getTypicalAddressBook();","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"menatahari"},"content":" assertEquals(addressBookFromFile, typicalStartupsAddressBook);","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"menatahari"},"content":" public void toModelType_invalidStartupFile_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"menatahari"},"content":" JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(INVALID_STARTUP_FILE,","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook.class).get();","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, dataFromFile::toModelType);","lastModifiedDate":"2019-03-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"menatahari"},"content":" public void toModelType_duplicateStartups_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"menatahari"},"content":" JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(DUPLICATE_STARTUP_FILE,","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook.class).get();","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"menatahari"},"content":" assertThrows(IllegalValueException.class, JsonSerializableAddressBook.MESSAGE_DUPLICATE_STARTUP,","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"-"},"content":" dataFromFile::toModelType);","lastModifiedDate":"2019-03-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"menatahari":13,"-":34}},{"path":"src/test/java/seedu/address/storage/StorageManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertNotNull;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"menatahari"},"content":"import static seedu.address.testutil.TypicalStartups.getTypicalAddressBook;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-09-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2016-09-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class StorageManagerTest {","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public Path testFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private StorageManager storageManager;","lastModifiedDate":"2017-04-01"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2016-10-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(getTempFilePath(\"ab\"));","lastModifiedDate":"2018-11-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(getTempFilePath(\"prefs\"));","lastModifiedDate":"2017-02-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" storageManager \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2017-02-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Path getTempFilePath(String fileName) {","lastModifiedDate":"2018-04-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return testFolder.resolve(fileName);","lastModifiedDate":"2019-04-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void prefsReadSave() throws Exception {","lastModifiedDate":"2016-10-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-09-28"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Note: This is an integration test that verifies the StorageManager is properly wired to the","lastModifiedDate":"2016-09-28"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * {@link JsonUserPrefsStorage} class.","lastModifiedDate":"2016-10-01"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * More extensive testing of UserPref saving/reading is done in {@link JsonUserPrefsStorageTest} class.","lastModifiedDate":"2016-10-01"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-28"},{"lineNumber":43,"author":{"gitId":"-"},"content":" UserPrefs original \u003d new UserPrefs();","lastModifiedDate":"2016-09-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" original.setGuiSettings(new GuiSettings(300, 600, 4, 6));","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" storageManager.saveUserPrefs(original);","lastModifiedDate":"2016-09-28"},{"lineNumber":46,"author":{"gitId":"-"},"content":" UserPrefs retrieved \u003d storageManager.readUserPrefs().get();","lastModifiedDate":"2016-09-28"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertEquals(original, retrieved);","lastModifiedDate":"2016-09-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void addressBookReadSave() throws Exception {","lastModifiedDate":"2016-09-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-16"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Note: This is an integration test that verifies the StorageManager is properly wired to the","lastModifiedDate":"2016-10-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * {@link JsonAddressBookStorage} class.","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * More extensive testing of UserPref saving/reading is done in {@link JsonAddressBookStorageTest} class.","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":57,"author":{"gitId":"-"},"content":" AddressBook original \u003d getTypicalAddressBook();","lastModifiedDate":"2017-07-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" storageManager.saveAddressBook(original);","lastModifiedDate":"2016-09-28"},{"lineNumber":59,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook retrieved \u003d storageManager.readAddressBook().get();","lastModifiedDate":"2016-09-28"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(retrieved));","lastModifiedDate":"2016-09-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-01"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void getAddressBookFilePath() {","lastModifiedDate":"2016-10-01"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertNotNull(storageManager.getAddressBookFilePath());","lastModifiedDate":"2016-10-01"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01"},{"lineNumber":68,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"menatahari":1,"-":67}},{"path":"src/test/java/seedu/address/testutil/AddressBookBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21"},{"lineNumber":4,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * A utility class to help with building Addressbook objects.","lastModifiedDate":"2016-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Example usage: \u003cbr\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":9,"author":{"gitId":"menatahari"},"content":" * {@code AddressBook ab \u003d new AddressBookBuilder().withStartup(\"John\", \"Doe\").build();}","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class AddressBookBuilder {","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" private AddressBook addressBook;","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public AddressBookBuilder() {","lastModifiedDate":"2017-05-31"},{"lineNumber":16,"author":{"gitId":"-"},"content":" addressBook \u003d new AddressBook();","lastModifiedDate":"2017-05-31"},{"lineNumber":17,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public AddressBookBuilder(AddressBook addressBook) {","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" this.addressBook \u003d addressBook;","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":24,"author":{"gitId":"menatahari"},"content":" * Adds a new {@code Startup} to the {@code AddressBook} that we are building.","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":26,"author":{"gitId":"menatahari"},"content":" public AddressBookBuilder withStartup(Startup startup) {","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"menatahari"},"content":" addressBook.addStartup(startup);","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public AddressBook build() {","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"menatahari":5,"-":29}},{"path":"src/test/java/seedu/address/testutil/EditStartupDescriptorBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"menatahari"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"menatahari"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"menatahari"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"menatahari"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"menatahari"},"content":"import seedu.address.logic.commands.EditCommand.EditStartupDescriptor;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Address;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Email;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.FundingStage;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Industry;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Name;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Phone;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"menatahari"},"content":"/**","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"menatahari"},"content":" * A utility class to help with building EditStartupDescriptor objects.","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"menatahari"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"menatahari"},"content":"public class EditStartupDescriptorBuilder {","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"menatahari"},"content":" private EditStartupDescriptor descriptor;","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"menatahari"},"content":" public EditStartupDescriptorBuilder() {","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"menatahari"},"content":" descriptor \u003d new EditStartupDescriptor();","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"menatahari"},"content":" public EditStartupDescriptorBuilder(EditStartupDescriptor descriptor) {","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"menatahari"},"content":" this.descriptor \u003d new EditStartupDescriptor(descriptor);","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"menatahari"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"menatahari"},"content":" * Returns an {@code EditStartupDescriptor} with fields containing {@code startup}\u0027s details","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"menatahari"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"menatahari"},"content":" public EditStartupDescriptorBuilder(Startup startup) {","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"menatahari"},"content":" descriptor \u003d new EditStartupDescriptor();","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"menatahari"},"content":" descriptor.setName(startup.getName());","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"menatahari"},"content":" descriptor.setIndustry(startup.getIndustry());","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"menatahari"},"content":" descriptor.setFundingStage(startup.getFundingStage());","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"menatahari"},"content":" descriptor.setPhone(startup.getPhone());","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"menatahari"},"content":" descriptor.setEmail(startup.getEmail());","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"menatahari"},"content":" descriptor.setAddress(startup.getAddress());","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"menatahari"},"content":" descriptor.setTags(startup.getTags());","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"menatahari"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"menatahari"},"content":" * Sets the {@code Name} of the {@code EditStartupDescriptor} that we are building.","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"menatahari"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"menatahari"},"content":" public EditStartupDescriptorBuilder withName(String name) {","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"menatahari"},"content":" descriptor.setName(new Name(name));","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"menatahari"},"content":" return this;","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"menatahari"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"menatahari"},"content":" * Sets the {@code FundingStage} of the {@code EditStartupDescriptor} that we are building.","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"menatahari"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"menatahari"},"content":" public EditStartupDescriptorBuilder withFundingStage(String fundingLevel) {","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"menatahari"},"content":" descriptor.setFundingStage(new FundingStage(fundingLevel));","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"menatahari"},"content":" return this;","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"menatahari"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"menatahari"},"content":" * Sets the {@code Industry} of the {@code EditStartupDescriptor} that we are building.","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"menatahari"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"menatahari"},"content":" public EditStartupDescriptorBuilder withIndustry(String industry) {","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"menatahari"},"content":" descriptor.setIndustry(new Industry(industry));","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"menatahari"},"content":" return this;","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"menatahari"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"menatahari"},"content":" * Sets the {@code Phone} of the {@code EditStartupDescriptor} that we are building.","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"menatahari"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"menatahari"},"content":" public EditStartupDescriptorBuilder withPhone(String phone) {","lastModifiedDate":"2024-03-19"},{"lineNumber":75,"author":{"gitId":"menatahari"},"content":" descriptor.setPhone(new Phone(phone));","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"menatahari"},"content":" return this;","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":79,"author":{"gitId":"menatahari"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":80,"author":{"gitId":"menatahari"},"content":" * Sets the {@code Email} of the {@code EditStartupDescriptor} that we are building.","lastModifiedDate":"2024-03-19"},{"lineNumber":81,"author":{"gitId":"menatahari"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":82,"author":{"gitId":"menatahari"},"content":" public EditStartupDescriptorBuilder withEmail(String email) {","lastModifiedDate":"2024-03-19"},{"lineNumber":83,"author":{"gitId":"menatahari"},"content":" descriptor.setEmail(new Email(email));","lastModifiedDate":"2024-03-19"},{"lineNumber":84,"author":{"gitId":"menatahari"},"content":" return this;","lastModifiedDate":"2024-03-19"},{"lineNumber":85,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":86,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":87,"author":{"gitId":"menatahari"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":88,"author":{"gitId":"menatahari"},"content":" * Sets the {@code Address} of the {@code EditStartupDescriptor} that we are building.","lastModifiedDate":"2024-03-19"},{"lineNumber":89,"author":{"gitId":"menatahari"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":90,"author":{"gitId":"menatahari"},"content":" public EditStartupDescriptorBuilder withAddress(String address) {","lastModifiedDate":"2024-03-19"},{"lineNumber":91,"author":{"gitId":"menatahari"},"content":" descriptor.setAddress(new Address(address));","lastModifiedDate":"2024-03-19"},{"lineNumber":92,"author":{"gitId":"menatahari"},"content":" return this;","lastModifiedDate":"2024-03-19"},{"lineNumber":93,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":94,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":95,"author":{"gitId":"menatahari"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":96,"author":{"gitId":"menatahari"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code EditStartupDescriptor}","lastModifiedDate":"2024-03-19"},{"lineNumber":97,"author":{"gitId":"menatahari"},"content":" * that we are building.","lastModifiedDate":"2024-03-19"},{"lineNumber":98,"author":{"gitId":"menatahari"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":99,"author":{"gitId":"menatahari"},"content":" public EditStartupDescriptorBuilder withTags(String... tags) {","lastModifiedDate":"2024-03-19"},{"lineNumber":100,"author":{"gitId":"menatahari"},"content":" Set\u003cTag\u003e tagSet \u003d Stream.of(tags).map(Tag::new).collect(Collectors.toSet());","lastModifiedDate":"2024-03-19"},{"lineNumber":101,"author":{"gitId":"menatahari"},"content":" descriptor.setTags(tagSet);","lastModifiedDate":"2024-03-19"},{"lineNumber":102,"author":{"gitId":"menatahari"},"content":" return this;","lastModifiedDate":"2024-03-19"},{"lineNumber":103,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":104,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":105,"author":{"gitId":"menatahari"},"content":" public EditStartupDescriptor build() {","lastModifiedDate":"2024-03-19"},{"lineNumber":106,"author":{"gitId":"menatahari"},"content":" return descriptor;","lastModifiedDate":"2024-03-19"},{"lineNumber":107,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":108,"author":{"gitId":"menatahari"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"dwangwk":1,"menatahari":107}},{"path":"src/test/java/seedu/address/testutil/NoteStartupDescriptorBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"dwangwk"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"dwangwk"},"content":"import seedu.address.logic.commands.NoteCommand.NoteStartupDescriptor;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"dwangwk"},"content":"import seedu.address.model.startup.Note;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"dwangwk"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"dwangwk"},"content":" * A utility class to help with building NoteStartupDescriptor objects, focusing exclusively on the note attribute.","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"dwangwk"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"dwangwk"},"content":"public class NoteStartupDescriptorBuilder {","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"dwangwk"},"content":" private final NoteStartupDescriptor descriptor;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"dwangwk"},"content":" public NoteStartupDescriptorBuilder() {","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"dwangwk"},"content":" descriptor \u003d new NoteStartupDescriptor();","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"dwangwk"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"dwangwk"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"dwangwk"},"content":" * Initializes the builder with the note of a given startup. This is particularly useful for tests that require","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"dwangwk"},"content":" * a startup\u0027s existing note to be modified.","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"dwangwk"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"dwangwk"},"content":" * @param startupNote The note of the startup to be used as a starting point.","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"dwangwk"},"content":" * @return A NoteStartupDescriptorBuilder instance for chaining method calls.","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"dwangwk"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"dwangwk"},"content":" public NoteStartupDescriptorBuilder withNote(String startupNote) {","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"dwangwk"},"content":" descriptor.setNote(new Note(startupNote));","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"dwangwk"},"content":" return this;","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"dwangwk"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"dwangwk"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"dwangwk"},"content":" * Builds and returns a NoteStartupDescriptor object.","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"dwangwk"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"dwangwk"},"content":" * @return The constructed NoteStartupDescriptor with set note attribute.","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"dwangwk"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"dwangwk"},"content":" public NoteStartupDescriptor build() {","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"dwangwk"},"content":" return descriptor;","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"dwangwk"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"dwangwk"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"dwangwk":37}},{"path":"src/test/java/seedu/address/testutil/StartupBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"menatahari"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"menatahari"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"menatahari"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Address;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Email;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.FundingStage;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Industry;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Name;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Note;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Phone;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"menatahari"},"content":"/**","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"menatahari"},"content":" * A utility class to help with building Startup objects.","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"menatahari"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"menatahari"},"content":"public class StartupBuilder {","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"menatahari"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"menatahari"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"menatahari"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"menatahari"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"menatahari"},"content":" public static final String DEFAULT_INDUSTRY \u003d \"finance\";","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"menatahari"},"content":" public static final String DEFAULT_FUNDING \u003d \"A\";","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"menatahari"},"content":" public static final String DEFAULT_NOTE \u003d \"Add a note!\";","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"menatahari"},"content":" private Name name;","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"menatahari"},"content":" private Phone phone;","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"menatahari"},"content":" private Industry industry;","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"menatahari"},"content":" private FundingStage fundingStage;","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"menatahari"},"content":" private Email email;","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"menatahari"},"content":" private Address address;","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"menatahari"},"content":" private Note note;","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"menatahari"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"menatahari"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"menatahari"},"content":" * Creates a {@code StartupBuilder} with the default details.","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"menatahari"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"menatahari"},"content":" public StartupBuilder() {","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"menatahari"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"menatahari"},"content":" industry \u003d new Industry(DEFAULT_INDUSTRY);","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"menatahari"},"content":" fundingStage \u003d new FundingStage(DEFAULT_FUNDING);","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"menatahari"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"menatahari"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"menatahari"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"menatahari"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"menatahari"},"content":" note \u003d new Note(DEFAULT_NOTE);","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"menatahari"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"menatahari"},"content":" * Initializes the StartupBuilder with the data of {@code startupToCopy}.","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"menatahari"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"menatahari"},"content":" public StartupBuilder(Startup startupToCopy) {","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"menatahari"},"content":" name \u003d startupToCopy.getName();","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"menatahari"},"content":" industry \u003d startupToCopy.getIndustry();","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"menatahari"},"content":" fundingStage \u003d startupToCopy.getFundingStage();","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"menatahari"},"content":" phone \u003d startupToCopy.getPhone();","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"menatahari"},"content":" email \u003d startupToCopy.getEmail();","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"menatahari"},"content":" address \u003d startupToCopy.getAddress();","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"menatahari"},"content":" note \u003d startupToCopy.getNote();","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"menatahari"},"content":" tags \u003d new HashSet\u003c\u003e(startupToCopy.getTags());","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"menatahari"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":75,"author":{"gitId":"menatahari"},"content":" * Sets the {@code Name} of the {@code Startup} that we are building.","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"menatahari"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"menatahari"},"content":" public StartupBuilder withName(String name) {","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"menatahari"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2024-03-19"},{"lineNumber":79,"author":{"gitId":"menatahari"},"content":" return this;","lastModifiedDate":"2024-03-19"},{"lineNumber":80,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":81,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":82,"author":{"gitId":"menatahari"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":83,"author":{"gitId":"menatahari"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code Startup} that we are building.","lastModifiedDate":"2024-03-19"},{"lineNumber":84,"author":{"gitId":"menatahari"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":85,"author":{"gitId":"menatahari"},"content":" public StartupBuilder withTags(String ... tags) {","lastModifiedDate":"2024-03-19"},{"lineNumber":86,"author":{"gitId":"menatahari"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2024-03-19"},{"lineNumber":87,"author":{"gitId":"menatahari"},"content":" return this;","lastModifiedDate":"2024-03-19"},{"lineNumber":88,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":89,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":90,"author":{"gitId":"menatahari"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":91,"author":{"gitId":"menatahari"},"content":" * Sets the {@code Address} of the {@code Startup} that we are building.","lastModifiedDate":"2024-03-19"},{"lineNumber":92,"author":{"gitId":"menatahari"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":93,"author":{"gitId":"menatahari"},"content":" public StartupBuilder withAddress(String address) {","lastModifiedDate":"2024-03-19"},{"lineNumber":94,"author":{"gitId":"menatahari"},"content":" this.address \u003d new Address(address);","lastModifiedDate":"2024-03-19"},{"lineNumber":95,"author":{"gitId":"menatahari"},"content":" return this;","lastModifiedDate":"2024-03-19"},{"lineNumber":96,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":97,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":98,"author":{"gitId":"menatahari"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":99,"author":{"gitId":"menatahari"},"content":" * Sets the {@code Phone} of the {@code Startup} that we are building.","lastModifiedDate":"2024-03-19"},{"lineNumber":100,"author":{"gitId":"menatahari"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":101,"author":{"gitId":"menatahari"},"content":" public StartupBuilder withPhone(String phone) {","lastModifiedDate":"2024-03-19"},{"lineNumber":102,"author":{"gitId":"menatahari"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2024-03-19"},{"lineNumber":103,"author":{"gitId":"menatahari"},"content":" return this;","lastModifiedDate":"2024-03-19"},{"lineNumber":104,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":105,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":106,"author":{"gitId":"menatahari"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":107,"author":{"gitId":"menatahari"},"content":" * Sets the {@code Email} of the {@code Startup} that we are building.","lastModifiedDate":"2024-03-19"},{"lineNumber":108,"author":{"gitId":"menatahari"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":109,"author":{"gitId":"menatahari"},"content":" public StartupBuilder withEmail(String email) {","lastModifiedDate":"2024-03-19"},{"lineNumber":110,"author":{"gitId":"menatahari"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2024-03-19"},{"lineNumber":111,"author":{"gitId":"menatahari"},"content":" return this;","lastModifiedDate":"2024-03-19"},{"lineNumber":112,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":113,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":114,"author":{"gitId":"menatahari"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":115,"author":{"gitId":"menatahari"},"content":" * Sets the {@code Note} of the {@code Startup} that we are building.","lastModifiedDate":"2024-03-19"},{"lineNumber":116,"author":{"gitId":"menatahari"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":117,"author":{"gitId":"menatahari"},"content":" public StartupBuilder withNote(String note) {","lastModifiedDate":"2024-03-19"},{"lineNumber":118,"author":{"gitId":"menatahari"},"content":" this.note \u003d new Note(note);","lastModifiedDate":"2024-03-19"},{"lineNumber":119,"author":{"gitId":"menatahari"},"content":" return this;","lastModifiedDate":"2024-03-19"},{"lineNumber":120,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":121,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":122,"author":{"gitId":"menatahari"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":123,"author":{"gitId":"menatahari"},"content":" * Sets the {@code fundingStage} of the {@code Startup} that we are building.","lastModifiedDate":"2024-03-19"},{"lineNumber":124,"author":{"gitId":"menatahari"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":125,"author":{"gitId":"menatahari"},"content":" public StartupBuilder withFundingStage(String fundingLevel) {","lastModifiedDate":"2024-03-19"},{"lineNumber":126,"author":{"gitId":"menatahari"},"content":" this.fundingStage \u003d new FundingStage(fundingLevel);","lastModifiedDate":"2024-03-19"},{"lineNumber":127,"author":{"gitId":"menatahari"},"content":" return this;","lastModifiedDate":"2024-03-19"},{"lineNumber":128,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":129,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":130,"author":{"gitId":"menatahari"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":131,"author":{"gitId":"menatahari"},"content":" * Sets the {@code industry} of the {@code Startup} that we are building.","lastModifiedDate":"2024-03-19"},{"lineNumber":132,"author":{"gitId":"menatahari"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":133,"author":{"gitId":"menatahari"},"content":" public StartupBuilder withIndustry(String industry) {","lastModifiedDate":"2024-03-19"},{"lineNumber":134,"author":{"gitId":"menatahari"},"content":" this.industry \u003d new Industry(industry);","lastModifiedDate":"2024-03-19"},{"lineNumber":135,"author":{"gitId":"menatahari"},"content":" return this;","lastModifiedDate":"2024-03-19"},{"lineNumber":136,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":137,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":138,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":139,"author":{"gitId":"menatahari"},"content":" public Startup build() {","lastModifiedDate":"2024-03-19"},{"lineNumber":140,"author":{"gitId":"dwangwk"},"content":" return new Startup(name, fundingStage, industry, phone, email, address, tags, note);","lastModifiedDate":"2024-03-20"},{"lineNumber":141,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":142,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":143,"author":{"gitId":"menatahari"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"dwangwk":1,"menatahari":142}},{"path":"src/test/java/seedu/address/testutil/StartupUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-02-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-02-25"},{"lineNumber":5,"author":{"gitId":"yeoshuheng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FUNDING_STAGE;","lastModifiedDate":"2024-02-25"},{"lineNumber":6,"author":{"gitId":"yeoshuheng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_INDUSTRY;","lastModifiedDate":"2024-02-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-02-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-02-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-02-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-03-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-03-29"},{"lineNumber":14,"author":{"gitId":"menatahari"},"content":"import seedu.address.logic.commands.EditCommand.EditStartupDescriptor;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-03-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05"},{"lineNumber":19,"author":{"gitId":"menatahari"},"content":" * A utility class for Startup.","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":21,"author":{"gitId":"menatahari"},"content":"public class StartupUtil {","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05"},{"lineNumber":24,"author":{"gitId":"menatahari"},"content":" * Returns an add command string for adding the {@code startup}.","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":26,"author":{"gitId":"menatahari"},"content":" public static String getAddCommand(Startup startup) {","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"menatahari"},"content":" return AddCommand.COMMAND_WORD + \" \" + getStartupDetails(startup);","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-06"},{"lineNumber":31,"author":{"gitId":"menatahari"},"content":" * Returns the part of command string for the given {@code startup}\u0027s details.","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06"},{"lineNumber":33,"author":{"gitId":"menatahari"},"content":" public static String getStartupDetails(Startup startup) {","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05"},{"lineNumber":35,"author":{"gitId":"menatahari"},"content":" sb.append(PREFIX_NAME + startup.getName().fullName + \" \");","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"menatahari"},"content":" sb.append(PREFIX_FUNDING_STAGE + startup.getFundingStage().value + \" \");","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"menatahari"},"content":" sb.append(PREFIX_INDUSTRY + startup.getIndustry().value + \" \");","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"menatahari"},"content":" sb.append(PREFIX_PHONE + startup.getPhone().value + \" \");","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"menatahari"},"content":" sb.append(PREFIX_EMAIL + startup.getEmail().value + \" \");","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"menatahari"},"content":" sb.append(PREFIX_ADDRESS + startup.getAddress().value + \" \");","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"menatahari"},"content":" startup.getTags().stream().forEach(","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":" s -\u003e sb.append(PREFIX_TAG + s.tagName + \" \")","lastModifiedDate":"2017-05-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":" );","lastModifiedDate":"2017-05-09"},{"lineNumber":44,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-04-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26"},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26"},{"lineNumber":48,"author":{"gitId":"menatahari"},"content":" * Returns the part of command string for the given {@code EditStartupDescriptor}\u0027s details.","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26"},{"lineNumber":50,"author":{"gitId":"menatahari"},"content":" public static String getEditStartupDescriptorDetails(EditStartupDescriptor descriptor) {","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(PREFIX_NAME).append(name.fullName).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":53,"author":{"gitId":"yeoshuheng"},"content":" descriptor.getIndustry().ifPresent(industry -\u003e sb.append(PREFIX_INDUSTRY).append(industry.value).append(\" \"));","lastModifiedDate":"2024-02-25"},{"lineNumber":54,"author":{"gitId":"yeoshuheng"},"content":" descriptor.getFundingStage().ifPresent(fundingStage -\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":55,"author":{"gitId":"yeoshuheng"},"content":" sb.append(PREFIX_FUNDING_STAGE).append(fundingStage.value).append(\" \"));","lastModifiedDate":"2024-02-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":" descriptor.getPhone().ifPresent(phone -\u003e sb.append(PREFIX_PHONE).append(phone.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":57,"author":{"gitId":"-"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(PREFIX_EMAIL).append(email.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":" descriptor.getAddress().ifPresent(address -\u003e sb.append(PREFIX_ADDRESS).append(address.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":" if (descriptor.getTags().isPresent()) {","lastModifiedDate":"2018-03-26"},{"lineNumber":60,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tags \u003d descriptor.getTags().get();","lastModifiedDate":"2018-03-26"},{"lineNumber":61,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2018-03-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":" sb.append(PREFIX_TAG);","lastModifiedDate":"2018-03-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":" tags.forEach(s -\u003e sb.append(PREFIX_TAG).append(s.tagName).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":69,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05"}],"authorContributionMap":{"menatahari":18,"-":46,"yeoshuheng":5}},{"path":"src/test/java/seedu/address/testutil/TestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Files;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-07-30"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-07-30"},{"lineNumber":10,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * A utility class for test cases.","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class TestUtil {","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Folder used for temp files created during testing. Ignored by Git.","lastModifiedDate":"2016-10-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final Path SANDBOX_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"sandbox\");","lastModifiedDate":"2018-04-21"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Appends {@code fileName} to the sandbox folder path and returns the resulting path.","lastModifiedDate":"2018-04-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Creates the sandbox folder if it doesn\u0027t exist.","lastModifiedDate":"2016-09-28"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static Path getFilePathInSandboxFolder(String fileName) {","lastModifiedDate":"2018-04-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-28"},{"lineNumber":28,"author":{"gitId":"-"},"content":" Files.createDirectories(SANDBOX_FOLDER);","lastModifiedDate":"2018-04-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-28"},{"lineNumber":30,"author":{"gitId":"-"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2016-09-28"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-28"},{"lineNumber":32,"author":{"gitId":"-"},"content":" return SANDBOX_FOLDER.resolve(fileName);","lastModifiedDate":"2018-04-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-30"},{"lineNumber":36,"author":{"gitId":"menatahari"},"content":" * Returns the middle index of the startup in the {@code model}\u0027s startup list.","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-30"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static Index getMidIndex(Model model) {","lastModifiedDate":"2017-07-30"},{"lineNumber":39,"author":{"gitId":"menatahari"},"content":" return Index.fromOneBased(model.getFilteredStartupList().size() / 2);","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-30"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-30"},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-30"},{"lineNumber":43,"author":{"gitId":"menatahari"},"content":" * Returns the last index of the startup in the {@code model}\u0027s startup list.","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-30"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static Index getLastIndex(Model model) {","lastModifiedDate":"2017-07-30"},{"lineNumber":46,"author":{"gitId":"menatahari"},"content":" return Index.fromOneBased(model.getFilteredStartupList().size());","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-30"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-30"},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-30"},{"lineNumber":50,"author":{"gitId":"menatahari"},"content":" * Returns the startup in the {@code model}\u0027s startup list at {@code index}.","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-30"},{"lineNumber":52,"author":{"gitId":"menatahari"},"content":" public static Startup getStartup(Model model, Index index) {","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"menatahari"},"content":" return model.getFilteredStartupList().get(index.getZeroBased());","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-30"},{"lineNumber":55,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"menatahari":8,"-":47}},{"path":"src/test/java/seedu/address/testutil/TypicalIndexes.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-08-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-08-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Index} objects to be used in tests.","lastModifiedDate":"2017-08-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class TypicalIndexes {","lastModifiedDate":"2017-08-05"},{"lineNumber":9,"author":{"gitId":"menatahari"},"content":" public static final Index INDEX_FIRST_STARTUP \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"menatahari"},"content":" public static final Index INDEX_SECOND_STARTUP \u003d Index.fromOneBased(2);","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"menatahari"},"content":" public static final Index INDEX_THIRD_STARTUP \u003d Index.fromOneBased(3);","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-08-05"}],"authorContributionMap":{"menatahari":3,"-":9}},{"path":"src/test/java/seedu/address/testutil/TypicalStartups.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-08-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-08-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-07"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21"},{"lineNumber":19,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13"},{"lineNumber":22,"author":{"gitId":"menatahari"},"content":" * A utility class containing a list of {@code Startup} objects to be used in tests.","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13"},{"lineNumber":24,"author":{"gitId":"menatahari"},"content":"public class TypicalStartups {","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":26,"author":{"gitId":"menatahari"},"content":" public static final Startup ALICE \u003d new StartupBuilder().withName(\"Alice Pauline\")","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" .withAddress(\"123, Jurong West Ave 6, #08-111\").withEmail(\"alice@example.com\")","lastModifiedDate":"2017-04-05"},{"lineNumber":28,"author":{"gitId":"yeoshuheng"},"content":" .withPhone(\"94351253\").withIndustry(\"finance\").withFundingStage(\"A\")","lastModifiedDate":"2024-02-25"},{"lineNumber":29,"author":{"gitId":"dwangwk"},"content":" .withNote(\"Add a note!\").withTags(\"friends\").build();","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"menatahari"},"content":" public static final Startup BENSON \u003d new StartupBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"yeoshuheng"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\").withIndustry(\"finance\").withFundingStage(\"A\")","lastModifiedDate":"2024-02-25"},{"lineNumber":32,"author":{"gitId":"dwangwk"},"content":" .withEmail(\"johnd@example.com\").withPhone(\"98765432\").withNote(\"Smelly guy\")","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" .withTags(\"owesMoney\", \"friends\").build();","lastModifiedDate":"2016-09-13"},{"lineNumber":34,"author":{"gitId":"menatahari"},"content":" public static final Startup CARL \u003d new StartupBuilder().withName(\"Carl Kurz\").withPhone(\"95352563\")","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"yespiggy"},"content":" .withEmail(\"heinz@example.com\").withIndustry(\"web3\").withFundingStage(\"C\")","lastModifiedDate":"2024-03-15"},{"lineNumber":36,"author":{"gitId":"yeoshuheng"},"content":" .withAddress(\"wall street\").build();","lastModifiedDate":"2024-02-25"},{"lineNumber":37,"author":{"gitId":"menatahari"},"content":" public static final Startup DANIEL \u003d new StartupBuilder().withName(\"Daniel Meier\").withPhone(\"87652533\")","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"yeoshuheng"},"content":" .withEmail(\"cornelia@example.com\").withIndustry(\"finance\").withFundingStage(\"A\")","lastModifiedDate":"2024-02-25"},{"lineNumber":39,"author":{"gitId":"yeoshuheng"},"content":" .withAddress(\"10th street\").withTags(\"friends\").build();","lastModifiedDate":"2024-02-25"},{"lineNumber":40,"author":{"gitId":"menatahari"},"content":" public static final Startup ELLE \u003d new StartupBuilder().withName(\"Elle Meyer\").withPhone(\"9482224\")","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"yespiggy"},"content":" .withEmail(\"werner@example.com\").withIndustry(\"web3\").withFundingStage(\"C\")","lastModifiedDate":"2024-03-15"},{"lineNumber":42,"author":{"gitId":"yeoshuheng"},"content":" .withAddress(\"michegan ave\").build();","lastModifiedDate":"2024-02-25"},{"lineNumber":43,"author":{"gitId":"menatahari"},"content":" public static final Startup FIONA \u003d new StartupBuilder().withName(\"Fiona Kunz\").withPhone(\"9482427\")","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"yespiggy"},"content":" .withEmail(\"lydia@example.com\").withIndustry(\"web3\").withFundingStage(\"C\")","lastModifiedDate":"2024-03-15"},{"lineNumber":45,"author":{"gitId":"yeoshuheng"},"content":" .withAddress(\"little tokyo\").build();","lastModifiedDate":"2024-02-25"},{"lineNumber":46,"author":{"gitId":"menatahari"},"content":" public static final Startup GEORGE \u003d new StartupBuilder().withName(\"George Best\").withPhone(\"9482442\")","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"yeoshuheng"},"content":" .withEmail(\"anna@example.com\").withIndustry(\"finance\").withFundingStage(\"A\")","lastModifiedDate":"2024-02-25"},{"lineNumber":48,"author":{"gitId":"yeoshuheng"},"content":" .withAddress(\"4th street\").build();","lastModifiedDate":"2024-02-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13"},{"lineNumber":51,"author":{"gitId":"menatahari"},"content":" public static final Startup HOON \u003d new StartupBuilder().withName(\"Hoon Meier\").withPhone(\"8482424\")","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"yeoshuheng"},"content":" .withEmail(\"stefan@example.com\").withIndustry(\"finance\").withFundingStage(\"A\")","lastModifiedDate":"2024-02-25"},{"lineNumber":53,"author":{"gitId":"yeoshuheng"},"content":" .withAddress(\"little india\").build();","lastModifiedDate":"2024-02-25"},{"lineNumber":54,"author":{"gitId":"menatahari"},"content":" public static final Startup IDA \u003d new StartupBuilder().withName(\"Ida Mueller\").withPhone(\"8482131\")","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"yeoshuheng"},"content":" .withEmail(\"hans@example.com\").withIndustry(\"finance\").withFundingStage(\"A\")","lastModifiedDate":"2024-02-25"},{"lineNumber":56,"author":{"gitId":"yeoshuheng"},"content":" .withAddress(\"chicago ave\").build();","lastModifiedDate":"2024-02-25"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":58,"author":{"gitId":"menatahari"},"content":" // Manually added - Startup\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"menatahari"},"content":" public static final Startup AMY \u003d new StartupBuilder().withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-09-21"},{"lineNumber":61,"author":{"gitId":"menatahari"},"content":" public static final Startup BOB \u003d new StartupBuilder().withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND)","lastModifiedDate":"2017-09-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2017-09-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":67,"author":{"gitId":"menatahari"},"content":" private TypicalStartups() {} // prevents instantiation","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":69,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":70,"author":{"gitId":"menatahari"},"content":" * Returns an {@code AddressBook} with all the typical startups.","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2017-08-05"},{"lineNumber":73,"author":{"gitId":"-"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2017-08-05"},{"lineNumber":74,"author":{"gitId":"menatahari"},"content":" for (Startup startup : getTypicalStartups()) {","lastModifiedDate":"2024-03-19"},{"lineNumber":75,"author":{"gitId":"menatahari"},"content":" ab.addStartup(startup);","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04"},{"lineNumber":80,"author":{"gitId":"menatahari"},"content":" public static List\u003cStartup\u003e getTypicalStartups() {","lastModifiedDate":"2024-03-19"},{"lineNumber":81,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2017-08-07"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04"},{"lineNumber":83,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13"}],"authorContributionMap":{"dwangwk":2,"menatahari":20,"yespiggy":3,"-":45,"yeoshuheng":13}}] +[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"menatahari"},"content":"[![CI Status](https://github.com/AY2324S2-CS2103T-W09-2/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2324S2-CS2103T-W09-2/tp/actions)","lastModifiedDate":"2024-03-07"},{"lineNumber":2,"author":{"gitId":"menatahari"},"content":"# Capital Connect #","lastModifiedDate":"2024-03-07"},{"lineNumber":3,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"menatahari"},"content":"## Description ##","lastModifiedDate":"2024-03-07"},{"lineNumber":7,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":8,"author":{"gitId":"menatahari"},"content":"---","lastModifiedDate":"2024-03-07"},{"lineNumber":9,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":10,"author":{"gitId":"menatahari"},"content":"Capital Connect is an app that is designed to streamline the management of startup investments, enabling VC firms to easily add, categorize, and track a diverse portfolio of investments in various industries and funding stages.","lastModifiedDate":"2024-03-07"},{"lineNumber":11,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":12,"author":{"gitId":"menatahari"},"content":"## Documentation ##","lastModifiedDate":"2024-03-07"},{"lineNumber":13,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":14,"author":{"gitId":"menatahari"},"content":"---","lastModifiedDate":"2024-03-07"},{"lineNumber":15,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":16,"author":{"gitId":"menatahari"},"content":"For the detailed documentation of this project, see the **[Capital Connect Product Website](https://ay2324s2-cs2103t-w09-2.github.io/tp/)**.","lastModifiedDate":"2024-03-07"},{"lineNumber":17,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":18,"author":{"gitId":"menatahari"},"content":"## Credits and Acknowledgements ##","lastModifiedDate":"2024-03-07"},{"lineNumber":19,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":20,"author":{"gitId":"menatahari"},"content":"---","lastModifiedDate":"2024-03-07"},{"lineNumber":21,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":22,"author":{"gitId":"menatahari"},"content":"* This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-03-07"}],"authorContributionMap":{"menatahari":19,"-":3}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"About Us\"","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"# About Us","lastModifiedDate":"2023-09-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"We are a team based in the [School of Computing, National University of Singapore](http://www.comp.nus.edu.sg).","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"You can reach us at the email `seer[at]comp.nus.edu.sg`","lastModifiedDate":"2020-06-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"yeoshuheng"},"content":"### Yeo Shu Heng","lastModifiedDate":"2024-02-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"yeoshuheng"},"content":"\u003cimg src\u003d\"images/yeoshuheng.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"yeoshuheng"},"content":"[[homepage](https://www.linkedin.com/in/yeoshuheng/)]","lastModifiedDate":"2024-02-25"},{"lineNumber":19,"author":{"gitId":"yeoshuheng"},"content":"[[github](https://github.com/yeoshuheng)]","lastModifiedDate":"2024-02-25"},{"lineNumber":20,"author":{"gitId":"yeoshuheng"},"content":"[[portfolio](team/shuheng.md)]","lastModifiedDate":"2024-02-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"yeoshuheng"},"content":"* Role: Developer","lastModifiedDate":"2024-02-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"dwangwk"},"content":"### Daniel Wang","lastModifiedDate":"2024-03-07"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"dwangwk"},"content":"\u003cimg src\u003d\"images/dwangwk.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-07"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"dwangwk"},"content":"[[github](http://github.com/dwangwk)]","lastModifiedDate":"2024-03-07"},{"lineNumber":29,"author":{"gitId":"dwangwk"},"content":"[[portfolio](team/danielwang.md)]","lastModifiedDate":"2024-03-07"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2024-03-07"},{"lineNumber":32,"author":{"gitId":"-"},"content":"* Responsibilities: Data","lastModifiedDate":"2024-03-07"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"dwangwk"},"content":"### Ye Si Fan","lastModifiedDate":"2024-03-07"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"dwangwk"},"content":"\u003cimg src\u003d\"images/yespiggy.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-07"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"dwangwk"},"content":"[[github](http://github.com/yespiggy)] [[portfolio](team/sifan.md)]","lastModifiedDate":"2024-03-07"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"dwangwk"},"content":"* Responsibilities: UI","lastModifiedDate":"2024-03-07"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"dwangwk"},"content":"### Natasya Hadiatullah Buhari","lastModifiedDate":"2024-03-07"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"dwangwk"},"content":"\u003cimg src\u003d\"images/menatahari.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-07"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"dwangwk"},"content":"[[github](http://github.com/menatahari)]","lastModifiedDate":"2024-03-07"},{"lineNumber":48,"author":{"gitId":"dwangwk"},"content":"[[portfolio](team/natasya.md)]","lastModifiedDate":"2024-03-07"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"dwangwk"},"content":"* Responsibilities: Dev Ops","lastModifiedDate":"2024-03-07"}],"authorContributionMap":{"dwangwk":13,"-":32,"yeoshuheng":6}},{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"Developer Guide\"","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":7,"author":{"gitId":"yespiggy"},"content":"# CapitalConnect Developer Guide","lastModifiedDate":"2024-03-07"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":14,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":16,"author":{"gitId":"-"},"content":"_{ list here sources of all reused/adapted ideas, code, documentation, and third-party libraries -- include links to the original source as well }_","lastModifiedDate":"2023-09-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureDiagram.puml\" width\u003d\"280\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":"The ***Architecture Diagram*** given above explains the high-level design of the App.","lastModifiedDate":"2021-07-31"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":"Given below is a quick overview of main components and how they interact with each other.","lastModifiedDate":"2021-07-31"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"**`Main`** (consisting of classes [`Main`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/Main.java) and [`MainApp`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/MainApp.java)) is in charge of the app launch and shut down.","lastModifiedDate":"2023-09-03"},{"lineNumber":39,"author":{"gitId":"-"},"content":"* At app launch, it initializes the other components in the correct sequence, and connects them up with each other.","lastModifiedDate":"2023-09-03"},{"lineNumber":40,"author":{"gitId":"-"},"content":"* At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2023-09-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"* [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"* [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"* [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"The *Sequence Diagram* below shows how the components interact with each other for the scenario where the user issues the command `delete 1`.","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureSequenceDiagram.puml\" width\u003d\"574\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":59,"author":{"gitId":"-"},"content":"* defines its *API* in an `interface` with the same name as the Component.","lastModifiedDate":"2021-07-31"},{"lineNumber":60,"author":{"gitId":"-"},"content":"* implements its functionality using a concrete `{Component Name}Manager` class (which follows the corresponding API `interface` mentioned in the previous point.","lastModifiedDate":"2021-07-31"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":62,"author":{"gitId":"-"},"content":"For example, the `Logic` component defines its API in the `Logic.java` interface and implements its functionality using the `LogicManager.java` class which follows the `Logic` interface. Other components interact with a given component through its interface rather than the concrete class (reason: to prevent outside component\u0027s being coupled to the implementation of a component), as illustrated in the (partial) class diagram below.","lastModifiedDate":"2021-07-31"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":64,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ComponentManagers.puml\" width\u003d\"300\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":66,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"The **API** of this component is specified in [`Ui.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/Ui.java)","lastModifiedDate":"2021-07-31"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UiClassDiagram.puml\" alt\u003d\"Structure of the UI Component\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"The UI consists of a `MainWindow` that is made up of parts e.g.`CommandBox`, `ResultDisplay`, `PersonListPanel`, `StatusBarFooter` etc. All these, including the `MainWindow`, inherit from the abstract `UiPart` class which captures the commonalities between classes that represent parts of the visible GUI.","lastModifiedDate":"2021-07-31"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"The `UI` component uses the JavaFx UI framework. The layout of these UI parts are defined in matching `.fxml` files that are in the `src/main/resources/view` folder. For example, the layout of the [`MainWindow`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/MainWindow.java) is specified in [`MainWindow.fxml`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/resources/view/MainWindow.fxml)","lastModifiedDate":"2021-07-31"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"* executes user commands using the `Logic` component.","lastModifiedDate":"2021-07-31"},{"lineNumber":81,"author":{"gitId":"-"},"content":"* listens for changes to `Model` data so that the UI can be updated with the modified data.","lastModifiedDate":"2021-07-31"},{"lineNumber":82,"author":{"gitId":"-"},"content":"* keeps a reference to the `Logic` component, because the `UI` relies on the `Logic` to execute commands.","lastModifiedDate":"2021-07-31"},{"lineNumber":83,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component, as it displays `Person` object residing in the `Model`.","lastModifiedDate":"2021-07-31"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"**API** : [`Logic.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/logic/Logic.java)","lastModifiedDate":"2021-07-31"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/LogicClassDiagram.puml\" width\u003d\"550\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"The sequence diagram below illustrates the interactions within the `Logic` component, taking `execute(\"delete 1\")` API call as an example.","lastModifiedDate":"2023-09-03"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/DeleteSequenceDiagram.puml\" alt\u003d\"Interactions Inside the Logic Component for the `delete 1` Command\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":97,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"**Note:** The lifeline for `DeleteCommandParser` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline continues till the end of diagram.","lastModifiedDate":"2023-09-12"},{"lineNumber":100,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":104,"author":{"gitId":"-"},"content":"1. When `Logic` is called upon to execute a command, it is passed to an `AddressBookParser` object which in turn creates a parser that matches the command (e.g., `DeleteCommandParser`) and uses it to parse the command.","lastModifiedDate":"2023-09-03"},{"lineNumber":105,"author":{"gitId":"-"},"content":"1. This results in a `Command` object (more precisely, an object of one of its subclasses e.g., `DeleteCommand`) which is executed by the `LogicManager`.","lastModifiedDate":"2023-09-03"},{"lineNumber":106,"author":{"gitId":"-"},"content":"1. The command can communicate with the `Model` when it is executed (e.g. to delete a person).\u003cbr\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":107,"author":{"gitId":"-"},"content":" Note that although this is shown as a single step in the diagram above (for simplicity), in the code it can take several interactions (between the command object and the `Model`) to achieve.","lastModifiedDate":"2024-02-09"},{"lineNumber":108,"author":{"gitId":"-"},"content":"1. The result of the command execution is encapsulated as a `CommandResult` object which is returned back from `Logic`.","lastModifiedDate":"2023-09-03"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":110,"author":{"gitId":"-"},"content":"Here are the other classes in `Logic` (omitted from the class diagram above) that are used for parsing a user command:","lastModifiedDate":"2021-07-31"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":112,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ParserClasses.puml\" width\u003d\"600\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31"},{"lineNumber":115,"author":{"gitId":"-"},"content":"* When called upon to parse a user command, the `AddressBookParser` class creates an `XYZCommandParser` (`XYZ` is a placeholder for the specific command name e.g., `AddCommandParser`) which uses the other classes shown above to parse the user command and create a `XYZCommand` object (e.g., `AddCommand`) which the `AddressBookParser` returns back as a `Command` object.","lastModifiedDate":"2021-07-31"},{"lineNumber":116,"author":{"gitId":"-"},"content":"* All `XYZCommandParser` classes (e.g., `AddCommandParser`, `DeleteCommandParser`, ...) inherit from the `Parser` interface so that they can be treated similarly where possible e.g, during testing.","lastModifiedDate":"2021-07-31"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31"},{"lineNumber":119,"author":{"gitId":"-"},"content":"**API** : [`Model.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/model/Model.java)","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":"* stores the address book data i.e., all `Person` objects (which are contained in a `UniquePersonList` object).","lastModifiedDate":"2021-07-31"},{"lineNumber":127,"author":{"gitId":"-"},"content":"* stores the currently \u0027selected\u0027 `Person` objects (e.g., results of a search query) as a separate _filtered_ list which is exposed to outsiders as an unmodifiable `ObservableList\u003cPerson\u003e` that can be \u0027observed\u0027 e.g. the UI can be bound to this list so that the UI automatically updates when the data in the list change.","lastModifiedDate":"2021-07-31"},{"lineNumber":128,"author":{"gitId":"-"},"content":"* stores a `UserPref` object that represents the user’s preferences. This is exposed to the outside as a `ReadOnlyUserPref` objects.","lastModifiedDate":"2021-07-31"},{"lineNumber":129,"author":{"gitId":"-"},"content":"* does not depend on any of the other three components (as the `Model` represents data entities of the domain, they should make sense on their own without depending on other components)","lastModifiedDate":"2021-07-31"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":131,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":133,"author":{"gitId":"-"},"content":"**Note:** An alternative (arguably, a more OOP) model is given below. It has a `Tag` list in the `AddressBook`, which `Person` references. This allows `AddressBook` to only require one `Tag` object per unique tag, instead of each `Person` needing their own `Tag` objects.\u003cbr\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":135,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/BetterModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":"**API** : [`Storage.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/storage/Storage.java)","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/StorageClassDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":146,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":"* can save both address book data and user preference data in JSON format, and read them back into corresponding objects.","lastModifiedDate":"2023-09-03"},{"lineNumber":148,"author":{"gitId":"-"},"content":"* inherits from both `AddressBookStorage` and `UserPrefStorage`, which means it can be treated as either one (if only the functionality of only one is needed).","lastModifiedDate":"2021-07-31"},{"lineNumber":149,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component (because the `Storage` component\u0027s job is to save/retrieve objects that belong to the `Model`)","lastModifiedDate":"2021-07-21"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.addressbook.commons` package.","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":"The proposed undo/redo mechanism is facilitated by `VersionedAddressBook`. It extends `AddressBook` with an undo/redo history, stored internally as an `addressBookStateList` and `currentStatePointer`. Additionally, it implements the following operations:","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":"These operations are exposed in the `Model` interface as `Model#commitAddressBook()`, `Model#undoAddressBook()` and `Model#redoAddressBook()` respectively.","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":"Given below is an example usage scenario and how the undo/redo mechanism behaves at each step.","lastModifiedDate":"2020-05-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":"Step 1. The user launches the application for the first time. The `VersionedAddressBook` will be initialized with the initial address book state, and the `currentStatePointer` pointing to that single address book state.","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState0.puml\" alt\u003d\"UndoRedoState0\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":"Step 2. The user executes `delete 5` command to delete the 5th person in the address book. The `delete` command calls `Model#commitAddressBook()`, causing the modified state of the address book after the `delete 5` command executes to be saved in the `addressBookStateList`, and the `currentStatePointer` is shifted to the newly inserted address book state.","lastModifiedDate":"2020-05-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState1.puml\" alt\u003d\"UndoRedoState1\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"Step 3. The user executes `add n/David …​` to add a new person. The `add` command also calls `Model#commitAddressBook()`, causing another modified address book state to be saved into the `addressBookStateList`.","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState2.puml\" alt\u003d\"UndoRedoState2\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":"**Note:** If a command fails its execution, it will not call `Model#commitAddressBook()`, so the address book state will not be saved into the `addressBookStateList`.","lastModifiedDate":"2023-09-12"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":191,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":"Step 4. The user now decides that adding the person was a mistake, and decides to undo that action by executing the `undo` command. The `undo` command will call `Model#undoAddressBook()`, which will shift the `currentStatePointer` once to the left, pointing it to the previous address book state, and restores the address book to that state.","lastModifiedDate":"2020-05-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState3.puml\" alt\u003d\"UndoRedoState3\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":198,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"author":{"gitId":"-"},"content":"**Note:** If the `currentStatePointer` is at index 0, pointing to the initial AddressBook state, then there are no previous AddressBook states to restore. The `undo` command uses `Model#canUndoAddressBook()` to check if this is the case. If so, it will return an error to the user rather","lastModifiedDate":"2023-09-12"},{"lineNumber":201,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Logic.puml\" alt\u003d\"UndoSequenceDiagram-Logic\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":209,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":"**Note:** The lifeline for `UndoCommand` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.","lastModifiedDate":"2023-09-12"},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":213,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":217,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Model.puml\" alt\u003d\"UndoSequenceDiagram-Model\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":219,"author":{"gitId":"-"},"content":"The `redo` command does the opposite — it calls `Model#redoAddressBook()`, which shifts the `currentStatePointer` once to the right, pointing to the previously undone state, and restores the address book to that state.","lastModifiedDate":"2020-05-23"},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":221,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":223,"author":{"gitId":"-"},"content":"**Note:** If the `currentStatePointer` is at index `addressBookStateList.size() - 1`, pointing to the latest address book state, then there are no undone AddressBook states to restore. The `redo` command uses `Model#canRedoAddressBook()` to check if this is the case. If so, it will return an error to the user rather than attempting to perform the redo.","lastModifiedDate":"2023-09-12"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"author":{"gitId":"-"},"content":"Step 5. The user then decides to execute the command `list`. Commands that do not modify the address book, such as `list`, will usually not call `Model#commitAddressBook()`, `Model#undoAddressBook()` or `Model#redoAddressBook()`. Thus, the `addressBookStateList` remains unchanged.","lastModifiedDate":"2020-05-23"},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState4.puml\" alt\u003d\"UndoRedoState4\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"author":{"gitId":"-"},"content":"Step 6. The user executes `clear`, which calls `Model#commitAddressBook()`. Since the `currentStatePointer` is not pointing at the end of the `addressBookStateList`, all address book states after the `currentStatePointer` will be purged. Reason: It no longer makes sense to redo the `add n/David …​` command. This is the behavior that most modern desktop applications follow.","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState5.puml\" alt\u003d\"UndoRedoState5\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/CommitActivityDiagram.puml\" width\u003d\"250\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31"},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31"},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":247,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23"},{"lineNumber":248,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23"},{"lineNumber":249,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23"},{"lineNumber":250,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":254,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23"},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":259,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07"},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":264,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":265,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":266,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":267,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":268,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":269,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":271,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":273,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23"},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":275,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":276,"author":{"gitId":"yespiggy"},"content":"**Target user profile**: A venture capital portfolio manager who","lastModifiedDate":"2024-03-07"},{"lineNumber":277,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":278,"author":{"gitId":"yespiggy"},"content":"* has a need to keep a significant amount of startup investments","lastModifiedDate":"2024-03-07"},{"lineNumber":279,"author":{"gitId":"-"},"content":"* prefer desktop apps over other types","lastModifiedDate":"2020-05-23"},{"lineNumber":280,"author":{"gitId":"-"},"content":"* can type fast","lastModifiedDate":"2020-05-23"},{"lineNumber":281,"author":{"gitId":"-"},"content":"* prefers typing to mouse interactions","lastModifiedDate":"2020-05-26"},{"lineNumber":282,"author":{"gitId":"-"},"content":"* is reasonably comfortable using CLI apps","lastModifiedDate":"2020-05-23"},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":284,"author":{"gitId":"yespiggy"},"content":"**Value proposition**: Venture capital firms manage diverse portfolios of startup ","lastModifiedDate":"2024-03-07"},{"lineNumber":285,"author":{"gitId":"yespiggy"},"content":"investments across various industries. The app streamlines the management of startup","lastModifiedDate":"2024-03-07"},{"lineNumber":286,"author":{"gitId":"yespiggy"},"content":"investments, enabling VC firms to easily add, categorize, and track a diverse ","lastModifiedDate":"2024-03-07"},{"lineNumber":287,"author":{"gitId":"yespiggy"},"content":"portfolio of investments in various industries and funding stages.","lastModifiedDate":"2024-03-07"},{"lineNumber":288,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":290,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07"},{"lineNumber":291,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":292,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23"},{"lineNumber":293,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":294,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23"},{"lineNumber":295,"author":{"gitId":"yespiggy"},"content":"|-----------|-------------------|-------------------------------------------------------|--------------------------------------------------------------------------|","lastModifiedDate":"2024-03-07"},{"lineNumber":296,"author":{"gitId":"-"},"content":"| `* * *` | new user | see usage instructions | refer to instructions when I forget how to use the App |","lastModifiedDate":"2020-05-23"},{"lineNumber":297,"author":{"gitId":"yespiggy"},"content":"| `* * *` | user | view the startup investments in my portfolio | see the list of startup investments that I\u0027m interested in |","lastModifiedDate":"2024-03-07"},{"lineNumber":298,"author":{"gitId":"yespiggy"},"content":"| `* * *` | user | add a new startup investment to my portfolio | save the details of the new startup investment |","lastModifiedDate":"2024-03-07"},{"lineNumber":299,"author":{"gitId":"yespiggy"},"content":"| `* * *` | user | delete a startup investment to my portfolio | remove the startup investment that I am no longer interested in |","lastModifiedDate":"2024-03-07"},{"lineNumber":300,"author":{"gitId":"yespiggy"},"content":"| `* *` | user | find a startup investment by name | locate a startup investment without having to go through the entire list |","lastModifiedDate":"2024-03-07"},{"lineNumber":301,"author":{"gitId":"yespiggy"},"content":"| `* *` | intermediate user | assign funding stages to startup investments | know more about the startup investment when checking it through the app |","lastModifiedDate":"2024-03-07"},{"lineNumber":302,"author":{"gitId":"yespiggy"},"content":"| `* *` | intermediate user | find a startup investment by industry \u0026 funding stage | locate a startup investment without having to go through the entire list |","lastModifiedDate":"2024-03-07"},{"lineNumber":303,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":304,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":306,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07"},{"lineNumber":307,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":308,"author":{"gitId":"-"},"content":"(For all use cases below, the **System** is the `AddressBook` and the **Actor** is the `user`, unless specified otherwise)","lastModifiedDate":"2020-05-23"},{"lineNumber":309,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":310,"author":{"gitId":"dwangwk"},"content":"**Use case: Add a startup investment**","lastModifiedDate":"2024-03-07"},{"lineNumber":311,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":312,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23"},{"lineNumber":313,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":314,"author":{"gitId":"dwangwk"},"content":"1. User requests to add a new startup investment to their portfolio.","lastModifiedDate":"2024-03-07"},{"lineNumber":315,"author":{"gitId":"dwangwk"},"content":"2. CapitalConnect dashboard prompts the user to provide details including:","lastModifiedDate":"2024-03-07"},{"lineNumber":316,"author":{"gitId":"dwangwk"},"content":" * Startup name","lastModifiedDate":"2024-03-07"},{"lineNumber":317,"author":{"gitId":"dwangwk"},"content":" * Industry","lastModifiedDate":"2024-03-07"},{"lineNumber":318,"author":{"gitId":"dwangwk"},"content":" * Funding stage","lastModifiedDate":"2024-03-07"},{"lineNumber":319,"author":{"gitId":"dwangwk"},"content":" * Address","lastModifiedDate":"2024-03-07"},{"lineNumber":320,"author":{"gitId":"dwangwk"},"content":" * Contact information","lastModifiedDate":"2024-03-07"},{"lineNumber":321,"author":{"gitId":"dwangwk"},"content":"3. User provides the necessary details.","lastModifiedDate":"2024-03-07"},{"lineNumber":322,"author":{"gitId":"dwangwk"},"content":"4. CapitalConnect verifies the input for validity.","lastModifiedDate":"2024-03-07"},{"lineNumber":323,"author":{"gitId":"dwangwk"},"content":"5. CapitalConnect adds the new startup investment to the user\u0027s portfolio in the dashboard.","lastModifiedDate":"2024-03-07"},{"lineNumber":324,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":325,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":326,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":327,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23"},{"lineNumber":328,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":329,"author":{"gitId":"dwangwk"},"content":"* 4a. Invalid input or missing parameters.","lastModifiedDate":"2024-03-07"},{"lineNumber":330,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":331,"author":{"gitId":"dwangwk"},"content":" * 4a1. CapitalConnect shows an error message.","lastModifiedDate":"2024-03-07"},{"lineNumber":332,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":333,"author":{"gitId":"dwangwk"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-07"},{"lineNumber":334,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":335,"author":{"gitId":"dwangwk"},"content":"* 4b. Startup name already exists in the portfolio.","lastModifiedDate":"2024-03-07"},{"lineNumber":336,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":337,"author":{"gitId":"dwangwk"},"content":" * 4b1. CapitalConnect notifies the user about the duplicate entry.","lastModifiedDate":"2024-03-07"},{"lineNumber":338,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":339,"author":{"gitId":"dwangwk"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-07"},{"lineNumber":340,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":341,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":342,"author":{"gitId":"dwangwk"},"content":"**Use case: Search for startup investments by industry \u0026 funding stage**","lastModifiedDate":"2024-03-07"},{"lineNumber":343,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":344,"author":{"gitId":"dwangwk"},"content":"**MSS**","lastModifiedDate":"2024-03-07"},{"lineNumber":345,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":346,"author":{"gitId":"dwangwk"},"content":"1. User requests to search for startup investments by industry and funding stage.","lastModifiedDate":"2024-03-07"},{"lineNumber":347,"author":{"gitId":"dwangwk"},"content":"2. CapitalConnect dashboard prompts the user to input the industry and funding stage.","lastModifiedDate":"2024-03-07"},{"lineNumber":348,"author":{"gitId":"dwangwk"},"content":"3. User provides the industry and funding stage.","lastModifiedDate":"2024-03-07"},{"lineNumber":349,"author":{"gitId":"dwangwk"},"content":"4. CapitalConnect verifies the input for validity.","lastModifiedDate":"2024-03-07"},{"lineNumber":350,"author":{"gitId":"dwangwk"},"content":"5. CapitalConnect searches for startup investments matching the specified industry and funding stage in the user\u0027s portfolio.","lastModifiedDate":"2024-03-07"},{"lineNumber":351,"author":{"gitId":"dwangwk"},"content":"6. CapitalConnect displays the startup investments matching the search criteria.","lastModifiedDate":"2024-03-07"},{"lineNumber":352,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":353,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":354,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":355,"author":{"gitId":"dwangwk"},"content":"**Extensions**","lastModifiedDate":"2024-03-07"},{"lineNumber":356,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":357,"author":{"gitId":"dwangwk"},"content":"* 4a. Invalid input or missing parameters.","lastModifiedDate":"2024-03-07"},{"lineNumber":358,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":359,"author":{"gitId":"dwangwk"},"content":" * 4a1. CapitalConnect shows an error message.","lastModifiedDate":"2024-03-07"},{"lineNumber":360,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":361,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2020-05-23"},{"lineNumber":362,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":363,"author":{"gitId":"dwangwk"},"content":"* 6a. No startup investments match the search criteria.","lastModifiedDate":"2024-03-07"},{"lineNumber":364,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":365,"author":{"gitId":"dwangwk"},"content":" * 6a1. CapitalConnect shows an error message indicating no matches found.","lastModifiedDate":"2024-03-07"},{"lineNumber":366,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":367,"author":{"gitId":"dwangwk"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":368,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":369,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":370,"author":{"gitId":"dwangwk"},"content":"**Use case: Search for startup investments by name**","lastModifiedDate":"2024-03-07"},{"lineNumber":371,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":372,"author":{"gitId":"dwangwk"},"content":"**MSS**","lastModifiedDate":"2024-03-07"},{"lineNumber":373,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":374,"author":{"gitId":"dwangwk"},"content":"1. User requests to search for startup investments by name.","lastModifiedDate":"2024-03-07"},{"lineNumber":375,"author":{"gitId":"dwangwk"},"content":"2. CapitalConnect dashboard prompts the user to input the name of the startup.","lastModifiedDate":"2024-03-07"},{"lineNumber":376,"author":{"gitId":"dwangwk"},"content":"3. User provides the name of the startup.","lastModifiedDate":"2024-03-07"},{"lineNumber":377,"author":{"gitId":"dwangwk"},"content":"4. CapitalConnect verifies the input for validity.","lastModifiedDate":"2024-03-07"},{"lineNumber":378,"author":{"gitId":"dwangwk"},"content":"5. CapitalConnect searches for startup investments matching the specified name in the user\u0027s portfolio.","lastModifiedDate":"2024-03-07"},{"lineNumber":379,"author":{"gitId":"dwangwk"},"content":"6. CapitalConnect displays the startup investments matching the search criteria.","lastModifiedDate":"2024-03-07"},{"lineNumber":380,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":381,"author":{"gitId":"dwangwk"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":382,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":383,"author":{"gitId":"dwangwk"},"content":"**Extensions**","lastModifiedDate":"2024-03-07"},{"lineNumber":384,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":385,"author":{"gitId":"dwangwk"},"content":"* 4a. Invalid input or missing parameters.","lastModifiedDate":"2024-03-07"},{"lineNumber":386,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":387,"author":{"gitId":"dwangwk"},"content":" * 4a1. CapitalConnect shows an error message.","lastModifiedDate":"2024-03-07"},{"lineNumber":388,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":389,"author":{"gitId":"dwangwk"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-07"},{"lineNumber":390,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":391,"author":{"gitId":"dwangwk"},"content":"* 6a. No startup investments match the provided name.","lastModifiedDate":"2024-03-07"},{"lineNumber":392,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":393,"author":{"gitId":"dwangwk"},"content":" * 6a1. CapitalConnect shows an error message indicating no matches found.","lastModifiedDate":"2024-03-07"},{"lineNumber":394,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":395,"author":{"gitId":"dwangwk"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":396,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":397,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":398,"author":{"gitId":"dwangwk"},"content":"**Use case: Save the current state of CapitalConnect dashboard**","lastModifiedDate":"2024-03-07"},{"lineNumber":399,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":400,"author":{"gitId":"dwangwk"},"content":"**MSS**","lastModifiedDate":"2024-03-07"},{"lineNumber":401,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":402,"author":{"gitId":"dwangwk"},"content":"1. CapitalConnect automatically saves the state of the dashboard after every add and delete operation.","lastModifiedDate":"2024-03-07"},{"lineNumber":403,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":404,"author":{"gitId":"dwangwk"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":405,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":406,"author":{"gitId":"dwangwk"},"content":"**Extensions**","lastModifiedDate":"2024-03-07"},{"lineNumber":407,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":408,"author":{"gitId":"dwangwk"},"content":"* 1a. Issue with saving the dashboard state.","lastModifiedDate":"2024-03-07"},{"lineNumber":409,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":410,"author":{"gitId":"dwangwk"},"content":" * 1a1. CapitalConnect shows an error message indicating the issue with saving the dashboard state.","lastModifiedDate":"2024-03-07"},{"lineNumber":411,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":412,"author":{"gitId":"dwangwk"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":413,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":414,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":415,"author":{"gitId":"dwangwk"},"content":"**Use case: Delete a startup investment from the portfolio**","lastModifiedDate":"2024-03-07"},{"lineNumber":416,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":417,"author":{"gitId":"dwangwk"},"content":"**MSS**","lastModifiedDate":"2024-03-07"},{"lineNumber":418,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":419,"author":{"gitId":"dwangwk"},"content":"1. User requests to delete a specific startup investment from their portfolio.","lastModifiedDate":"2024-03-07"},{"lineNumber":420,"author":{"gitId":"dwangwk"},"content":"2. CapitalConnect dashboard prompts the user to input the index of the startup investment to be deleted.","lastModifiedDate":"2024-03-07"},{"lineNumber":421,"author":{"gitId":"dwangwk"},"content":"3. User provides the index of the startup investment.","lastModifiedDate":"2024-03-07"},{"lineNumber":422,"author":{"gitId":"dwangwk"},"content":"4. CapitalConnect verifies the input for validity.","lastModifiedDate":"2024-03-07"},{"lineNumber":423,"author":{"gitId":"dwangwk"},"content":"5. CapitalConnect deletes the startup investment at the specified index from the user\u0027s portfolio.","lastModifiedDate":"2024-03-07"},{"lineNumber":424,"author":{"gitId":"dwangwk"},"content":"6. CapitalConnect displays a confirmation message indicating successful deletion of the startup investment.","lastModifiedDate":"2024-03-07"},{"lineNumber":425,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":426,"author":{"gitId":"dwangwk"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":427,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":428,"author":{"gitId":"dwangwk"},"content":"**Extensions**","lastModifiedDate":"2024-03-07"},{"lineNumber":429,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":430,"author":{"gitId":"dwangwk"},"content":"* 4a. Invalid input or missing parameters.","lastModifiedDate":"2024-03-07"},{"lineNumber":431,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":432,"author":{"gitId":"dwangwk"},"content":" * 4a1. CapitalConnect shows an error message.","lastModifiedDate":"2024-03-07"},{"lineNumber":433,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":434,"author":{"gitId":"dwangwk"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-07"},{"lineNumber":435,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":436,"author":{"gitId":"dwangwk"},"content":"* 5a. Specified index is out of range or no startup investments at the specified index.","lastModifiedDate":"2024-03-07"},{"lineNumber":437,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":438,"author":{"gitId":"dwangwk"},"content":" * 5a1. CapitalConnect shows an error message indicating the issue.","lastModifiedDate":"2024-03-07"},{"lineNumber":439,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":440,"author":{"gitId":"dwangwk"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":441,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":442,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23"},{"lineNumber":443,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":444,"author":{"gitId":"-"},"content":"1. Should work on any _mainstream OS_ as long as it has Java `11` or above installed.","lastModifiedDate":"2020-05-23"},{"lineNumber":445,"author":{"gitId":"dwangwk"},"content":"2. Should be able to hold up to 1000 startups without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2024-03-07"},{"lineNumber":446,"author":{"gitId":"-"},"content":"3. A user with above average typing speed for regular English text (i.e. not code, not system admin commands) should be able to accomplish most of the tasks faster using commands than using the mouse.","lastModifiedDate":"2020-05-23"},{"lineNumber":447,"author":{"gitId":"dwangwk"},"content":"4. The system should have a response time of less than 1 second for common operations, such as adding or deleting a startup investment, to provide a smooth user experience.","lastModifiedDate":"2024-03-07"},{"lineNumber":448,"author":{"gitId":"dwangwk"},"content":"5. The application should provide clear and user-friendly error messages in case of invalid input or system errors to assist users in troubleshooting issues efficiently.","lastModifiedDate":"2024-03-07"},{"lineNumber":449,"author":{"gitId":"dwangwk"},"content":"6. The dashboard interface should be responsive and adapt to different screen sizes, ensuring a seamless user experience across devices such as desktops, laptops, tablets, and smartphones.","lastModifiedDate":"2024-03-07"},{"lineNumber":450,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":451,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":452,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23"},{"lineNumber":453,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":454,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09"},{"lineNumber":455,"author":{"gitId":"-"},"content":"* **Private contact detail**: A contact detail that is not meant to be shared with others","lastModifiedDate":"2020-05-23"},{"lineNumber":456,"author":{"gitId":"dwangwk"},"content":"* **CapitalConnect dashboard**: The user interface of the CapitalConnect application where users can manage their startup investments, perform searches, and view their portfolio.","lastModifiedDate":"2024-03-07"},{"lineNumber":457,"author":{"gitId":"dwangwk"},"content":"* **Startup investment**: An investment made by a user in a startup company, typically including details such as the startup name, industry, funding stage, address, and contact information.","lastModifiedDate":"2024-03-07"},{"lineNumber":458,"author":{"gitId":"dwangwk"},"content":"* **Industry**: The sector or field in which a startup operates, such as Tech, Biotech, or Finance.","lastModifiedDate":"2024-03-07"},{"lineNumber":459,"author":{"gitId":"dwangwk"},"content":"* **Funding stage**: The development stage of a startup at which it has received a certain level of investment, such as Seed, Series A, or Series B.","lastModifiedDate":"2024-03-07"},{"lineNumber":460,"author":{"gitId":"dwangwk"},"content":"* **Dashboard state**: The current configuration and data displayed in the CapitalConnect dashboard, including startup investments and any applied filters or search results.","lastModifiedDate":"2024-03-07"},{"lineNumber":461,"author":{"gitId":"dwangwk"},"content":"* **Index**: A numeric value representing the position of an item within a list, used in commands to reference specific startup investments in the portfolio.","lastModifiedDate":"2024-03-07"},{"lineNumber":462,"author":{"gitId":"dwangwk"},"content":"* **Confirmation message**: A notification displayed to the user indicating the successful completion of an action, such as adding or deleting a startup investment.","lastModifiedDate":"2024-03-07"},{"lineNumber":463,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":464,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":465,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":466,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23"},{"lineNumber":467,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":468,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":469,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":470,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":471,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":472,"author":{"gitId":"-"},"content":"**Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2023-09-12"},{"lineNumber":473,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":474,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":475,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":476,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":477,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":478,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":479,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":480,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":481,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23"},{"lineNumber":482,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":483,"author":{"gitId":"-"},"content":" 1. Double-click the jar file Expected: Shows the GUI with a set of sample contacts. The window size may not be optimum.","lastModifiedDate":"2020-05-23"},{"lineNumber":484,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":485,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23"},{"lineNumber":486,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":487,"author":{"gitId":"-"},"content":" 1. Resize the window to an optimum size. Move the window to a different location. Close the window.","lastModifiedDate":"2020-05-23"},{"lineNumber":488,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":489,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":490,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23"},{"lineNumber":491,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":492,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":493,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":494,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23"},{"lineNumber":495,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":496,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23"},{"lineNumber":497,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":498,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23"},{"lineNumber":499,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":500,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":501,"author":{"gitId":"-"},"content":" Expected: First contact is deleted from the list. Details of the deleted contact shown in the status message. Timestamp in the status bar is updated.","lastModifiedDate":"2020-05-23"},{"lineNumber":502,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":503,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":504,"author":{"gitId":"-"},"content":" Expected: No person is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2020-05-23"},{"lineNumber":505,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":506,"author":{"gitId":"-"},"content":" 1. Other incorrect delete commands to try: `delete`, `delete x`, `...` (where x is larger than the list size)\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":507,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":508,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":509,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":510,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":511,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":512,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":513,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":514,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":515,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23"},{"lineNumber":516,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":517,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"dwangwk":126,"yespiggy":15,"-":376}},{"path":"docs/UserGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"User Guide\"","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"yeoshuheng"},"content":"# CapitalConnect User Guide","lastModifiedDate":"2024-03-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"yeoshuheng"},"content":"**Welcome to CapitalConnect: Your Portfolio Powerhouse!**","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"yespiggy"},"content":"Do you ever feel like your startup portfolio is a tangled mess of spreadsheets and endless documents? You\u0027re not alone. ","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"yespiggy"},"content":"As a Venture Capital Portfolio Manager, juggling diverse investments across industries can be a complex challenge.","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"yeoshuheng"},"content":"**Who are you?**","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"yeoshuheng"},"content":"Our application is build for the aspiring venture capitalist! You are a professional on the lookout for the next Google. ","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"yeoshuheng"},"content":"You are passionate about innovative and new technologies. Most importantly, you want to **make your network your net-worth.**","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"yespiggy"},"content":"**CapitalConnect is here to revolutionize your experience**.","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"yespiggy"},"content":"As a desktop app for managing startup investments and contacts, CapitalConnect is optimized","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"yespiggy"},"content":"for use via **a Line Interface (CLI)** while still having the benefits of a Graphical User Interface (GUI). If you can","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"yespiggy"},"content":"type fast, CapitalConnect can get your investment management done faster than traditional GUI apps.","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"yeoshuheng"},"content":"We streamline and wrap **everything** in a sleek, easy to use platform. And by everything, we mean everything from","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"yeoshuheng"},"content":"- Adding new startups to your watch list!","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"yeoshuheng"},"content":"- Tracking the profile of various startups!","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"yeoshuheng"},"content":"- Categorising and searching for startups based on your requirements!","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"yeoshuheng"},"content":"and much, much, more!","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"yespiggy"},"content":"This user guide is your key to unlocking the full potential of the app. We\u0027ll walk you through every step, from","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"yespiggy"},"content":"effortlessly adding new investments to categorizing them by industry and funding stage. Forget the days of chasing","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"yespiggy"},"content":"down data – CapitalConnect empowers you to track your startup investments with ease.","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"yespiggy"},"content":"Throughout this guide, we\u0027ll use clear, step-by-step instructions and helpful screenshots to ensure you master ","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"yespiggy"},"content":"CapitalConnect in no time. So, buckle up and get ready to experience a smoother, more efficient way to manage your ","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"yespiggy"},"content":"startup investments!","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":42,"author":{"gitId":"yeoshuheng"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"yeoshuheng"},"content":"## Table Of Contents","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"## Quick start","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"1. Ensure you have Java `11` or above installed in your Computer.","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"yespiggy"},"content":"1. Download the latest `capitalconnect.jar` from [here](https://github.com/AY2324S2-CS2103T-W09-2/tp).","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"yespiggy"},"content":"1. Copy the file to the folder you want to use as the _home folder_ for CapitalConnect.","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"author":{"gitId":"yespiggy"},"content":"1. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar capitalconnect.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":" A GUI similar to the below should appear in a few seconds. Note how the app contains some sample data.\u003cbr\u003e","lastModifiedDate":"2023-01-01"},{"lineNumber":62,"author":{"gitId":"-"},"content":" ![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":"1. Type the command in the command box and press Enter to execute it. e.g. typing **`help`** and pressing Enter will open the help window.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" Some example commands you can try:","lastModifiedDate":"2020-05-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" * `list` : Lists all contacts.","lastModifiedDate":"2023-01-01"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"yeoshuheng"},"content":" * `add n/Pichu p/98765432 i/finance f/B e/pichuhr@example.com a/pichu street, block 123, #01-01` : Adds a start up called `Pichu` to CapitalConnect.","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"yespiggy"},"content":" * `delete 3` : Deletes the 3rd startup shown in the current list.","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"yespiggy"},"content":" * `clear` : Deletes all startups.","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":" * `exit` : Exits the app.","lastModifiedDate":"2023-01-01"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":"1. Refer to the [Features](#features) below for details of each command.","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"**Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"* Words in `UPPER_CASE` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"yeoshuheng"},"content":" e.g. in `add n/NAME`, `NAME` is a parameter which can be used as `add n/capital connect`.","lastModifiedDate":"2024-03-11"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":"* Items in square brackets are optional.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"yeoshuheng"},"content":" e.g `n/NAME [t/TAG]` can be used as `n/capital connect t/stealth startup` or as `n/capital connect`.","lastModifiedDate":"2024-03-11"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"* Items with `…`​ after them can be used multiple times including zero times.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"yeoshuheng"},"content":" e.g. `[t/TAG]…​` can be used as ` ` (i.e. 0 times), `t/stealth startup`, `t/steath startup t/mvp` etc.","lastModifiedDate":"2024-03-11"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"* Parameters can be in any order.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":" e.g. if the command specifies `n/NAME p/PHONE_NUMBER`, `p/PHONE_NUMBER n/NAME` is also acceptable.","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"* Extraneous parameters for commands that do not take in parameters (such as `help`, `list`, `exit` and `clear`) will be ignored.\u003cbr\u003e","lastModifiedDate":"2021-02-03"},{"lineNumber":100,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2021-02-03"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03"},{"lineNumber":102,"author":{"gitId":"-"},"content":"* If you are using a PDF version of this document, be careful when copying and pasting commands that span multiple lines as space characters surrounding line-breaks may be omitted when copied over to the application.","lastModifiedDate":"2023-06-26"},{"lineNumber":103,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":"### Viewing help : `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":107,"author":{"gitId":"yeoshuheng"},"content":"Shows a message explaining how to access the help page.","lastModifiedDate":"2024-03-20"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":"Format: `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"yeoshuheng"},"content":"### Adding a startup: `add`","lastModifiedDate":"2024-03-20"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"yeoshuheng"},"content":"Adds a startup to the address book.","lastModifiedDate":"2024-03-11"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"yeoshuheng"},"content":"Format: `add n/NAME p/PHONE_NUMBER i/INDUSTRY f/FUNDING_STAGE e/EMAIL a/ADDRESS [t/TAG]…​`","lastModifiedDate":"2024-03-11"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":122,"author":{"gitId":"yeoshuheng"},"content":"**Tip:** A startup can have any number of tags (including 0)","lastModifiedDate":"2024-03-20"},{"lineNumber":123,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"yeoshuheng"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":126,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":127,"author":{"gitId":"yeoshuheng"},"content":"**Tip:** We only support traditional funding stages, hence inputs for `FUNDING_STAGE` must be either `S`, `PS`, `A`, `B` or `C`!","lastModifiedDate":"2024-03-20"},{"lineNumber":128,"author":{"gitId":"yeoshuheng"},"content":"`A`, `B`, `C` represents the respective funding series whilst `PS` refers to pre-seed and `S` refers to the seed stage.","lastModifiedDate":"2024-03-20"},{"lineNumber":129,"author":{"gitId":"yeoshuheng"},"content":"\u003c/box\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":130,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":131,"author":{"gitId":"yeoshuheng"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":132,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":133,"author":{"gitId":"yeoshuheng"},"content":"**Tip:** You can\u0027t give us blank inputs! We need you to give us a valid input for mandatory fields! Check that phone number again,","lastModifiedDate":"2024-03-20"},{"lineNumber":134,"author":{"gitId":"yeoshuheng"},"content":"did you accidentally add a digit?","lastModifiedDate":"2024-03-20"},{"lineNumber":135,"author":{"gitId":"yeoshuheng"},"content":"\u003c/box\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":136,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":137,"author":{"gitId":"yeoshuheng"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":138,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":139,"author":{"gitId":"yeoshuheng"},"content":"**Tip:** We understand that profitable investments requires prospecting a large range of industries. Hence, we have no restrictions on `INDUSTRY`!","lastModifiedDate":"2024-03-20"},{"lineNumber":140,"author":{"gitId":"yeoshuheng"},"content":"We let **you** decide how specific you want to define your startup categories by! If `Tech` is too general, you can now use more specific industry categories, such as","lastModifiedDate":"2024-03-20"},{"lineNumber":141,"author":{"gitId":"yeoshuheng"},"content":"`web 3`, `AI`, `IAAS`!","lastModifiedDate":"2024-03-20"},{"lineNumber":142,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":144,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"yeoshuheng"},"content":"* `add n/Google p/98765432 e/sundarpichal@example.com a/Menlo Park, block 123, #01-01 f/A i/tech`","lastModifiedDate":"2024-03-20"},{"lineNumber":146,"author":{"gitId":"yeoshuheng"},"content":"* `add n/FTX t/bankrupted e/sbf@example.com a/Newgate Prison p/1234567 t/criminal f/A i/web 3`","lastModifiedDate":"2024-03-11"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"yeoshuheng"},"content":"### Listing all startups : `list`","lastModifiedDate":"2024-03-20"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"yeoshuheng"},"content":"Shows a list of all startups in the address book.","lastModifiedDate":"2024-03-11"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":"Format: `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"dwangwk"},"content":"### Adding or Editing a Startup Note: `note`","lastModifiedDate":"2024-03-20"},{"lineNumber":155,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":156,"author":{"gitId":"dwangwk"},"content":"Adds or edits a note for an existing startup in the address book.","lastModifiedDate":"2024-03-20"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":158,"author":{"gitId":"dwangwk"},"content":"Format: `note INDEX NOTE`","lastModifiedDate":"2024-03-20"},{"lineNumber":159,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":160,"author":{"gitId":"dwangwk"},"content":"- Adds or edits the note of the startup at the specified `INDEX`. The index refers to the index number shown in the displayed startup list. The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2024-03-20"},{"lineNumber":161,"author":{"gitId":"dwangwk"},"content":"- The `NOTE` field must be provided and cannot be empty.","lastModifiedDate":"2024-03-20"},{"lineNumber":162,"author":{"gitId":"dwangwk"},"content":"- Existing note will be updated to the input value.","lastModifiedDate":"2024-03-20"},{"lineNumber":163,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":164,"author":{"gitId":"dwangwk"},"content":"Examples:","lastModifiedDate":"2024-03-20"},{"lineNumber":165,"author":{"gitId":"dwangwk"},"content":"- `note 1 Innovative e-commerce platform` Adds or edits the note of the 1st startup to be \"Innovative e-commerce platform\".","lastModifiedDate":"2024-03-20"},{"lineNumber":166,"author":{"gitId":"dwangwk"},"content":"- `note 2 Expanding to new markets in Q3` Adds or edits the note of the 2nd startup with the information about its expansion plans. \u003cbr\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":169,"author":{"gitId":"dwangwk"},"content":" ![result for \u0027note 1 Innovative e-commerce platform\u0027](images/tracing/NoteCommand.png)","lastModifiedDate":"2024-03-20"},{"lineNumber":170,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":171,"author":{"gitId":"yeoshuheng"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":172,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":173,"author":{"gitId":"yeoshuheng"},"content":"**Tip:** Indexes are taken with respect to the list! Warnings might show up if you give us a invalid index.","lastModifiedDate":"2024-03-20"},{"lineNumber":174,"author":{"gitId":"yeoshuheng"},"content":"\u003c/box\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":175,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":176,"author":{"gitId":"yeoshuheng"},"content":"### Editing a startup : `edit`","lastModifiedDate":"2024-03-20"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":178,"author":{"gitId":"yeoshuheng"},"content":"Edits an existing startup in the address book.","lastModifiedDate":"2024-03-11"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":180,"author":{"gitId":"yeoshuheng"},"content":"Format: `edit INDEX [n/NAME] [p/PHONE] [f/FUNDING_STAGE] [i/INDUSTRY] [e/EMAIL] [a/ADDRESS] [t/TAG]…​`","lastModifiedDate":"2024-03-11"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":182,"author":{"gitId":"yeoshuheng"},"content":"* Edits the startup at the specified `INDEX`. The index refers to the index number shown in the displayed startup list. The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2024-03-20"},{"lineNumber":183,"author":{"gitId":"-"},"content":"* At least one of the optional fields must be provided.","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"* Existing values will be updated to the input values.","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"yeoshuheng"},"content":"* When editing tags, the existing tags of the startup will be removed i.e adding of tags is not cumulative.","lastModifiedDate":"2024-03-20"},{"lineNumber":186,"author":{"gitId":"yeoshuheng"},"content":"* You can remove all the startup’s tags by typing `t/` without","lastModifiedDate":"2024-03-11"},{"lineNumber":187,"author":{"gitId":"-"},"content":" specifying any tags after it.","lastModifiedDate":"2020-05-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":190,"author":{"gitId":"yeoshuheng"},"content":"* `edit 1 p/91234567 e/stripe@example.com` Edits the phone number and email address of the 1st startup to be `91234567` and `johndoe@example.com` respectively.","lastModifiedDate":"2024-03-20"},{"lineNumber":191,"author":{"gitId":"yeoshuheng"},"content":"* `edit 2 n/Stripe t/` Edits the name of the 2nd startup to be `Stripe` and clears all existing tags.","lastModifiedDate":"2024-03-20"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":194,"author":{"gitId":"yeoshuheng"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":195,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":196,"author":{"gitId":"yeoshuheng"},"content":"**Tip:** The same input rules for `add` applies here! An invalid input will throw an error.","lastModifiedDate":"2024-03-20"},{"lineNumber":197,"author":{"gitId":"yeoshuheng"},"content":"\u003c/box\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":198,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":199,"author":{"gitId":"yespiggy"},"content":"### Locating startups by name: `find`","lastModifiedDate":"2024-03-20"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":201,"author":{"gitId":"yespiggy"},"content":"Finds startups with names that contain any of the given keywords.","lastModifiedDate":"2024-03-20"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"yespiggy"},"content":"Format: `find n/NAME [MORE_NAME]`","lastModifiedDate":"2024-03-20"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"yeoshuheng"},"content":"* The search is case-insensitive. e.g `apple` will match `Apple`","lastModifiedDate":"2024-03-11"},{"lineNumber":206,"author":{"gitId":"yeoshuheng"},"content":"* The order of the keywords does not matter. e.g. `Jane Street` will match `Street Jane`","lastModifiedDate":"2024-03-11"},{"lineNumber":207,"author":{"gitId":"-"},"content":"* Only the name is searched.","lastModifiedDate":"2020-05-23"},{"lineNumber":208,"author":{"gitId":"yeoshuheng"},"content":"* Only full words will be matched e.g. `Microsoft` will not match `Microsofts`","lastModifiedDate":"2024-03-11"},{"lineNumber":209,"author":{"gitId":"yespiggy"},"content":"* Startups matching at least one keyword will be returned (i.e. `OR` search).","lastModifiedDate":"2024-03-20"},{"lineNumber":210,"author":{"gitId":"yeoshuheng"},"content":" e.g. `Jane Street` will return `Jane Technologies`, `State Street`","lastModifiedDate":"2024-03-11"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":212,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":213,"author":{"gitId":"yespiggy"},"content":"* `find n/Google` returns `google` and `Google Deepmind`","lastModifiedDate":"2024-03-20"},{"lineNumber":214,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":215,"author":{"gitId":"yespiggy"},"content":" ![result for \u0027find by name google\u0027](images/findByNameGoogle.png)","lastModifiedDate":"2024-03-20"},{"lineNumber":216,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":217,"author":{"gitId":"yespiggy"},"content":"* `find n/apple` returns `apple pay`, `eat apple`\u003cbr\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":218,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":219,"author":{"gitId":"yespiggy"},"content":" ![result for \u0027find by name apple\u0027](images/findByNameApple.png)","lastModifiedDate":"2024-03-20"},{"lineNumber":220,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":221,"author":{"gitId":"yespiggy"},"content":"### Locating startups by funding stage: `find`","lastModifiedDate":"2024-03-20"},{"lineNumber":222,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":223,"author":{"gitId":"yespiggy"},"content":"Finds startups that match the funding stages you are looking for.","lastModifiedDate":"2024-03-20"},{"lineNumber":224,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":225,"author":{"gitId":"yespiggy"},"content":"Format: `find f/FUNDING_STAGE [MORE_FUNDING_STAGES]`","lastModifiedDate":"2024-03-20"},{"lineNumber":226,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":227,"author":{"gitId":"yespiggy"},"content":"* The search is case-insensitive. e.g `a` will match `A`","lastModifiedDate":"2024-03-20"},{"lineNumber":228,"author":{"gitId":"yeoshuheng"},"content":"* Multiple funding stages can be looked up in a single search.","lastModifiedDate":"2024-03-20"},{"lineNumber":229,"author":{"gitId":"yespiggy"},"content":"* The order of the keywords does not matter. e.g. `A B` will match `B A`","lastModifiedDate":"2024-03-20"},{"lineNumber":230,"author":{"gitId":"yespiggy"},"content":"* Only the funding stage is searched.","lastModifiedDate":"2024-03-20"},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":232,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2024-03-20"},{"lineNumber":233,"author":{"gitId":"yespiggy"},"content":"* `find f/C` returns startups that are currently in Series C funding","lastModifiedDate":"2024-03-20"},{"lineNumber":234,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":235,"author":{"gitId":"yespiggy"},"content":" ![result for \u0027find by fundingStage C\u0027](images/findByFundingStage.png)","lastModifiedDate":"2024-03-20"},{"lineNumber":236,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":237,"author":{"gitId":"yespiggy"},"content":"### Locating startups by industry: `find`","lastModifiedDate":"2024-03-20"},{"lineNumber":238,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":239,"author":{"gitId":"yespiggy"},"content":"Finds startups with industries that match any of the given keywords.","lastModifiedDate":"2024-03-20"},{"lineNumber":240,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":241,"author":{"gitId":"yespiggy"},"content":"Format: `find f/INDUSTRY [MORE_INDUSTRIES]`","lastModifiedDate":"2024-03-20"},{"lineNumber":242,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":243,"author":{"gitId":"yespiggy"},"content":"* The search is case-insensitive. e.g `ai` will match `AI`","lastModifiedDate":"2024-03-20"},{"lineNumber":244,"author":{"gitId":"yeoshuheng"},"content":"* Startups from multiple industries can be looked up in a single search.","lastModifiedDate":"2024-03-20"},{"lineNumber":245,"author":{"gitId":"yespiggy"},"content":"* The order of the keywords does not matter. e.g. `AI WEB3` will match `WEB3 AI`","lastModifiedDate":"2024-03-20"},{"lineNumber":246,"author":{"gitId":"yespiggy"},"content":"* Only the industry is searched.","lastModifiedDate":"2024-03-20"},{"lineNumber":247,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":248,"author":{"gitId":"yespiggy"},"content":"Examples:","lastModifiedDate":"2024-03-20"},{"lineNumber":249,"author":{"gitId":"yeoshuheng"},"content":"* `find i/AI` returns startups that have AI tagged within their industry.","lastModifiedDate":"2024-03-20"},{"lineNumber":250,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":251,"author":{"gitId":"yespiggy"},"content":" ![result for \u0027find by fundingStage C\u0027](images/findByIndustry.png)","lastModifiedDate":"2024-03-20"},{"lineNumber":252,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"author":{"gitId":"yespiggy"},"content":"### Deleting a startup : `delete`","lastModifiedDate":"2024-03-20"},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":255,"author":{"gitId":"yespiggy"},"content":"Deletes the specified startup from CapitalConnect.","lastModifiedDate":"2024-03-20"},{"lineNumber":256,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":257,"author":{"gitId":"-"},"content":"Format: `delete INDEX`","lastModifiedDate":"2020-05-23"},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":259,"author":{"gitId":"yespiggy"},"content":"* Deletes the startup at the specified `INDEX`.","lastModifiedDate":"2024-03-20"},{"lineNumber":260,"author":{"gitId":"yeoshuheng"},"content":"* The index refers to the index number shown in the displayed startup list.","lastModifiedDate":"2024-03-11"},{"lineNumber":261,"author":{"gitId":"-"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2020-05-23"},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":264,"author":{"gitId":"yeoshuheng"},"content":"* `list` followed by `delete 2` deletes the 2nd startup in the address book.","lastModifiedDate":"2024-03-11"},{"lineNumber":265,"author":{"gitId":"yeoshuheng"},"content":"* `find Betsy` followed by `delete 1` deletes the 1st startup in the results of the `find` command.","lastModifiedDate":"2024-03-11"},{"lineNumber":266,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":267,"author":{"gitId":"-"},"content":"### Clearing all entries : `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":268,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":269,"author":{"gitId":"yespiggy"},"content":"Clears all entries from CapitalConnect.","lastModifiedDate":"2024-03-20"},{"lineNumber":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":271,"author":{"gitId":"-"},"content":"Format: `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":273,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":275,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23"},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":277,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":278,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":279,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23"},{"lineNumber":280,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":281,"author":{"gitId":"yespiggy"},"content":"CapitalConnect data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.","lastModifiedDate":"2024-03-20"},{"lineNumber":282,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":283,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04"},{"lineNumber":284,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":285,"author":{"gitId":"yeoshuheng"},"content":"CapitalConnect data are saved automatically as a JSON file `[JAR file location]/data/addressbook.json`. Advanced users are welcome to update data directly by editing that data file.","lastModifiedDate":"2024-03-20"},{"lineNumber":286,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":287,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"warning\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":288,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":289,"author":{"gitId":"-"},"content":"**Caution:**","lastModifiedDate":"2023-09-12"},{"lineNumber":290,"author":{"gitId":"yeoshuheng"},"content":"If your changes to the data file makes its format invalid, CapitalConnect will discard all data and start with an empty data file at the next run. Hence, it is recommended to take a backup of the file before editing it.\u003cbr\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":291,"author":{"gitId":"yeoshuheng"},"content":"Furthermore, certain edits can cause CapitalConnect to behave in unexpected ways (e.g., if a value entered is outside the acceptable range). Therefore, edit the data file only if you are confident that you can update it correctly.","lastModifiedDate":"2024-03-20"},{"lineNumber":292,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":293,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":294,"author":{"gitId":"-"},"content":"### Archiving data files `[coming in v2.0]`","lastModifiedDate":"2020-05-23"},{"lineNumber":295,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":296,"author":{"gitId":"-"},"content":"_Details coming soon ..._","lastModifiedDate":"2021-02-04"},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":298,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":299,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":300,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23"},{"lineNumber":301,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":302,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":303,"author":{"gitId":"-"},"content":"**A**: Install the app in the other computer and overwrite the empty data file it creates with the file that contains the data of your previous AddressBook home folder.","lastModifiedDate":"2020-05-23"},{"lineNumber":304,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":305,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":306,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":307,"author":{"gitId":"-"},"content":"## Known issues","lastModifiedDate":"2023-09-08"},{"lineNumber":308,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":309,"author":{"gitId":"-"},"content":"1. **When using multiple screens**, if you move the application to a secondary screen, and later switch to using only the primary screen, the GUI will open off-screen. The remedy is to delete the `preferences.json` file created by the application before running the application again.","lastModifiedDate":"2023-09-08"},{"lineNumber":310,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":311,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08"},{"lineNumber":312,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":313,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23"},{"lineNumber":314,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":315,"author":{"gitId":"yespiggy"},"content":"| Action | Format, Examples |","lastModifiedDate":"2024-03-20"},{"lineNumber":316,"author":{"gitId":"yeoshuheng"},"content":"|---------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|","lastModifiedDate":"2024-03-20"},{"lineNumber":317,"author":{"gitId":"yeoshuheng"},"content":"| **Add** | `add n/NAME p/PHONE_NUMBER f/FUNDING_STAGE i/INDUSTRY e/EMAIL a/ADDRESS [t/TAG]…​` \u003cbr\u003e e.g., `add n/Google p/22224444 e/larrypage@example.com a/123, menlo park, 1234665 t/SV-based i/Tech f/A` |","lastModifiedDate":"2024-03-20"},{"lineNumber":318,"author":{"gitId":"yespiggy"},"content":"| **Clear** | `clear` |","lastModifiedDate":"2024-03-20"},{"lineNumber":319,"author":{"gitId":"yespiggy"},"content":"| **Delete** | `delete INDEX`\u003cbr\u003e e.g., `delete 3` |","lastModifiedDate":"2024-03-20"},{"lineNumber":320,"author":{"gitId":"yeoshuheng"},"content":"| **Edit** | `edit INDEX [n/NAME] [p/PHONE_NUMBER] [i/INDUSTRY] [f/FUNDING_STAGE] [e/EMAIL] [a/ADDRESS] [t/TAG]…​`\u003cbr\u003e e.g.,`edit 2 n/James Lee e/jameslee@example.com` |","lastModifiedDate":"2024-03-20"},{"lineNumber":321,"author":{"gitId":"yespiggy"},"content":"| **Find by Name** | `find n/NAME [MORE_NAMES]`\u003cbr\u003e e.g., `find n/apple` |","lastModifiedDate":"2024-03-20"},{"lineNumber":322,"author":{"gitId":"yeoshuheng"},"content":"| **Find by Funding Stage** | `find f/FUNDING_STAGE [MORE_FUNDING_STAGES]`\u003cbr\u003e e.g., `find f/A`, `find f/A B` |","lastModifiedDate":"2024-03-20"},{"lineNumber":323,"author":{"gitId":"yeoshuheng"},"content":"| **Find by Industry** | `find i/INDUSTRY [MORE_INDUSTRIES]`\u003cbr\u003e e.g., `find i/AI`, `find i/AI Robotics` |","lastModifiedDate":"2024-03-20"},{"lineNumber":324,"author":{"gitId":"yespiggy"},"content":"| **List** | `list` |","lastModifiedDate":"2024-03-20"},{"lineNumber":325,"author":{"gitId":"yespiggy"},"content":"| **Help** | `help` |","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"dwangwk":14,"yespiggy":66,"-":155,"yeoshuheng":90}},{"path":"docs/_markbind/layouts/default.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003chead-bottom\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":" \u003clink rel\u003d\"stylesheet\" href\u003d\"{{baseUrl}}/stylesheets/main.css\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c/head-bottom\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003cheader sticky\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":" \u003cnavbar type\u003d\"dark\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":7,"author":{"gitId":"yespiggy"},"content":" \u003ca slot\u003d\"brand\" href\u003d\"{{baseUrl}}/index.html\" title\u003d\"Home\" class\u003d\"navbar-brand\"\u003eCapitalConnect\u003c/a\u003e","lastModifiedDate":"2024-03-10"},{"lineNumber":8,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/index.html\" class\u003d\"nav-link\"\u003eHome\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/UserGuide.html\" class\u003d\"nav-link\"\u003eUser Guide\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/DeveloperGuide.html\" class\u003d\"nav-link\"\u003eDeveloper Guide\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/AboutUs.html\" class\u003d\"nav-link\"\u003eAbout Us\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":12,"author":{"gitId":"yespiggy"},"content":" \u003cli\u003e\u003ca href\u003d\"https://github.com/AY2324S2-CS2103T-W09-2/tp\" target\u003d\"_blank\" class\u003d\"nav-link\"\u003e\u003cmd\u003e:fab-github:\u003c/md\u003e\u003c/a\u003e","lastModifiedDate":"2024-03-10"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003cli slot\u003d\"right\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cform class\u003d\"navbar-form\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003csearchbar :data\u003d\"searchData\" placeholder\u003d\"Search\" :on-hit\u003d\"searchCallback\" menu-align-right\u003e\u003c/searchbar\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003c/form\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003c/navbar\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"\u003c/header\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"\u003cdiv id\u003d\"flex-body\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"site-nav\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"site-nav-top\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"fw-bold mb-2\" style\u003d\"font-size: 1.25rem;\"\u003eSite Map\u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003csite-nav\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"* [Home]({{ baseUrl }}/index.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":"* [User Guide]({{ baseUrl }}/UserGuide.html) :expanded:","lastModifiedDate":"2023-09-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * [Quick Start]({{ baseUrl }}/UserGuide.html#quick-start)","lastModifiedDate":"2023-09-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * [Features]({{ baseUrl }}/UserGuide.html#features)","lastModifiedDate":"2023-09-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * [FAQ]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * [Command Summary]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":"* [Developer Guide]({{ baseUrl }}/DeveloperGuide.html) :expanded:","lastModifiedDate":"2023-09-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * [Acknowledgements]({{ baseUrl }}/DeveloperGuide.html#acknowledgements)","lastModifiedDate":"2023-09-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * [Setting Up]({{ baseUrl }}/DeveloperGuide.html#setting-up-getting-started)","lastModifiedDate":"2023-09-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * [Design]({{ baseUrl }}/DeveloperGuide.html#design)","lastModifiedDate":"2023-09-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * [Implementation]({{ baseUrl }}/DeveloperGuide.html#implementation)","lastModifiedDate":"2023-09-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * [Documentation, logging, testing, configuration, dev-ops]({{ baseUrl }}/DeveloperGuide.html#documentation-logging-testing-configuration-dev-ops)","lastModifiedDate":"2023-09-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * [Appendix: Requirements]({{ baseUrl }}/DeveloperGuide.html#appendix-requirements)","lastModifiedDate":"2023-09-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * [Appendix: Instructions for manual testing]({{ baseUrl }}/DeveloperGuide.html#appendix-instructions-for-manual-testing)","lastModifiedDate":"2023-09-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":"* Tutorials","lastModifiedDate":"2023-09-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * [Tracing code]({{ baseUrl }}/tutorials/TracingCode.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * [Adding a command]({{ baseUrl }}/tutorials/AddRemark.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * [Removing Fields]({{ baseUrl }}/tutorials/RemovingFields.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [About Us]({{ baseUrl }}/AboutUs.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u003c/site-nav\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003cdiv id\u003d\"content-wrapper\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":" {{ content }}","lastModifiedDate":"2023-09-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"page-nav\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cpage-nav /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003cscroll-top-button\u003e\u003c/scroll-top-button\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":62,"author":{"gitId":"-"},"content":"\u003cfooter\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":63,"author":{"gitId":"-"},"content":" \u003c!-- Support MarkBind by including a link to us on your landing page! --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":64,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"text-center\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":" \u003csmall\u003e[\u003cmd\u003e**Powered by**\u003c/md\u003e \u003cimg src\u003d\"https://markbind.org/favicon.ico\" width\u003d\"30\"\u003e {{MarkBind}}, generated on {{timestamp}}]\u003c/small\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":66,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":"\u003c/footer\u003e","lastModifiedDate":"2023-09-12"}],"authorContributionMap":{"yespiggy":2,"-":65}},{"path":"docs/diagrams/BetterModelClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam arrowColor MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam classBackgroundColor MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"yeoshuheng"},"content":"AddressBook *-right-\u003e \"1\" UniqueStartupList","lastModifiedDate":"2024-03-22"},{"lineNumber":8,"author":{"gitId":"-"},"content":"AddressBook *-right-\u003e \"1\" UniqueTagList","lastModifiedDate":"2019-07-30"},{"lineNumber":9,"author":{"gitId":"yeoshuheng"},"content":"UniqueTagList -[hidden]down- UniqueStartupList","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"yeoshuheng"},"content":"UniqueTagList -[hidden]down- UniqueStartupList","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"UniqueTagList -right-\u003e \"*\" Tag","lastModifiedDate":"2023-01-01"},{"lineNumber":13,"author":{"gitId":"yeoshuheng"},"content":"UniqueStartupList -right-\u003e Startup","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"yeoshuheng"},"content":"Startup -up-\u003e \"*\" Tag","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"yeoshuheng"},"content":"Startup *--\u003e Name","lastModifiedDate":"2024-03-22"},{"lineNumber":18,"author":{"gitId":"yeoshuheng"},"content":"Startup *--\u003e Phone","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"author":{"gitId":"yeoshuheng"},"content":"Startup *--\u003e Email","lastModifiedDate":"2024-03-22"},{"lineNumber":20,"author":{"gitId":"yeoshuheng"},"content":"Startup *--\u003e Address","lastModifiedDate":"2024-03-22"},{"lineNumber":21,"author":{"gitId":"yeoshuheng"},"content":"Startup *--\u003e Industry","lastModifiedDate":"2024-03-22"},{"lineNumber":22,"author":{"gitId":"yeoshuheng"},"content":"Startup *--\u003e FundingStage","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"-":12,"yeoshuheng":11}},{"path":"docs/diagrams/ModelClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam arrowColor MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam classBackgroundColor MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Package Model as ModelPackage \u003c\u003cRectangle\u003e\u003e{","lastModifiedDate":"2023-07-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nReadOnlyAddressBook\" as ReadOnlyAddressBook","lastModifiedDate":"2022-01-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nReadOnlyUserPrefs\" as ReadOnlyUserPrefs","lastModifiedDate":"2022-01-03"},{"lineNumber":10,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nModel\" as Model","lastModifiedDate":"2022-01-03"},{"lineNumber":11,"author":{"gitId":"-"},"content":"Class AddressBook","lastModifiedDate":"2019-07-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"Class ModelManager","lastModifiedDate":"2019-07-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"Class UserPrefs","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":15,"author":{"gitId":"-"},"content":"Class UniquePersonList","lastModifiedDate":"2021-07-31"},{"lineNumber":16,"author":{"gitId":"-"},"content":"Class Person","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"Class Address","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"Class Email","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"Class Name","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Class Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"Class Tag","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"yeoshuheng"},"content":"Class Industry","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"yeoshuheng"},"content":"Class FundingStage","lastModifiedDate":"2024-03-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":25,"author":{"gitId":"-"},"content":"Class I #FFFFFF","lastModifiedDate":"2023-07-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"AddressBook .up.|\u003e ReadOnlyAddressBook","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":"ModelManager .up.|\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":"Model .right.\u003e ReadOnlyUserPrefs","lastModifiedDate":"2021-07-31"},{"lineNumber":35,"author":{"gitId":"-"},"content":"Model .left.\u003e ReadOnlyAddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"ModelManager -left-\u003e \"1\" AddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"ModelManager -right-\u003e \"1\" UserPrefs","lastModifiedDate":"2021-07-31"},{"lineNumber":38,"author":{"gitId":"-"},"content":"UserPrefs .up.|\u003e ReadOnlyUserPrefs","lastModifiedDate":"2019-07-03"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":40,"author":{"gitId":"yeoshuheng"},"content":"AddressBook *--\u003e \"1\" UniqueStartupList","lastModifiedDate":"2024-03-22"},{"lineNumber":41,"author":{"gitId":"yeoshuheng"},"content":"UniqueStartupList --\u003e \"~* all\" Startup","lastModifiedDate":"2024-03-22"},{"lineNumber":42,"author":{"gitId":"yeoshuheng"},"content":"Startup *--\u003e Name","lastModifiedDate":"2024-03-22"},{"lineNumber":43,"author":{"gitId":"yeoshuheng"},"content":"Startup *--\u003e Phone","lastModifiedDate":"2024-03-22"},{"lineNumber":44,"author":{"gitId":"yeoshuheng"},"content":"Startup *--\u003e Email","lastModifiedDate":"2024-03-22"},{"lineNumber":45,"author":{"gitId":"yeoshuheng"},"content":"Startup *--\u003e Address","lastModifiedDate":"2024-03-22"},{"lineNumber":46,"author":{"gitId":"yeoshuheng"},"content":"Startup *--\u003e Industry","lastModifiedDate":"2024-03-22"},{"lineNumber":47,"author":{"gitId":"yeoshuheng"},"content":"Startup *--\u003e FundingStage","lastModifiedDate":"2024-03-22"},{"lineNumber":48,"author":{"gitId":"yeoshuheng"},"content":"Startup *--\u003e \"*\" Tag","lastModifiedDate":"2024-03-22"},{"lineNumber":49,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":50,"author":{"gitId":"yeoshuheng"},"content":"Startup -[hidden]up--\u003e I","lastModifiedDate":"2024-03-22"},{"lineNumber":51,"author":{"gitId":"yeoshuheng"},"content":"UniqueStartupList -[hidden]right-\u003e I","lastModifiedDate":"2024-03-22"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":"Name -[hidden]right-\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":54,"author":{"gitId":"-"},"content":"Phone -[hidden]right-\u003e Address","lastModifiedDate":"2019-07-03"},{"lineNumber":55,"author":{"gitId":"-"},"content":"Address -[hidden]right-\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":57,"author":{"gitId":"-"},"content":"ModelManager --\u003e \"~* filtered\" Person","lastModifiedDate":"2021-07-31"},{"lineNumber":58,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"-":44,"yeoshuheng":14}},{"path":"docs/index.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"\"","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"yespiggy"},"content":"# CapitalConnect","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"[![CI Status](https://github.com/se-edu/addressbook-level3/workflows/Java%20CI/badge.svg)](https://github.com/se-edu/addressbook-level3/actions)","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"[![codecov](https://codecov.io/gh/se-edu/addressbook-level3/branch/master/graph/badge.svg)](https://codecov.io/gh/se-edu/addressbook-level3)","lastModifiedDate":"2020-08-07"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"yespiggy"},"content":"**CapitalConnect is a desktop application for managing your contact details.** While it has a GUI, most of the user interactions happen using a CLI (Command Line Interface).","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"yespiggy"},"content":"* If you are interested in using CapitalConnect, head over to the [_Quick Start_ section of the **User Guide**](UserGuide.html#quick-start).","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"yespiggy"},"content":"* If you are interested about developing CapitalConnect, the [**Developer Guide**](DeveloperGuide.html) is a good place to start.","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"**Acknowledgements**","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"* Libraries used: [JavaFX](https://openjfx.io/), [Jackson](https://github.com/FasterXML/jackson), [JUnit5](https://github.com/junit-team/junit5)","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"yespiggy":4,"-":17}},{"path":"docs/team/danielwang.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"dwangwk"},"content":"---","lastModifiedDate":"2024-03-07"},{"lineNumber":2,"author":{"gitId":"dwangwk"},"content":" layout: default.md","lastModifiedDate":"2024-03-07"},{"lineNumber":3,"author":{"gitId":"dwangwk"},"content":" title: \"Daniel Wang\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-03-07"},{"lineNumber":4,"author":{"gitId":"dwangwk"},"content":"---","lastModifiedDate":"2024-03-07"},{"lineNumber":5,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":6,"author":{"gitId":"dwangwk"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-03-07"},{"lineNumber":7,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":8,"author":{"gitId":"dwangwk"},"content":"AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2024-03-07"},{"lineNumber":9,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":10,"author":{"gitId":"dwangwk"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-03-07"},{"lineNumber":11,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":12,"author":{"gitId":"dwangwk"},"content":"* **New Feature**: Added the ability to delete startups from the project.","lastModifiedDate":"2024-03-07"},{"lineNumber":13,"author":{"gitId":"dwangwk"},"content":" * What it does: This allows users to delete startups from the Capital Connect data.","lastModifiedDate":"2024-03-07"},{"lineNumber":14,"author":{"gitId":"dwangwk"},"content":" * Justification: This is imperative for our users to upkeep the data with the latest information.","lastModifiedDate":"2024-03-07"},{"lineNumber":15,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":16,"author":{"gitId":"dwangwk"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-03-07"},{"lineNumber":17,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":18,"author":{"gitId":"dwangwk"},"content":"* **Project management**:","lastModifiedDate":"2024-03-07"},{"lineNumber":19,"author":{"gitId":"dwangwk"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-03-07"},{"lineNumber":20,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":21,"author":{"gitId":"dwangwk"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-03-07"},{"lineNumber":22,"author":{"gitId":"dwangwk"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-03-07"},{"lineNumber":23,"author":{"gitId":"dwangwk"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-03-07"},{"lineNumber":24,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":25,"author":{"gitId":"dwangwk"},"content":"* **Documentation**:","lastModifiedDate":"2024-03-07"},{"lineNumber":26,"author":{"gitId":"dwangwk"},"content":" * User Guide:","lastModifiedDate":"2024-03-07"},{"lineNumber":27,"author":{"gitId":"dwangwk"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-03-07"},{"lineNumber":28,"author":{"gitId":"dwangwk"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-03-07"},{"lineNumber":29,"author":{"gitId":"dwangwk"},"content":" * Developer Guide:","lastModifiedDate":"2024-03-07"},{"lineNumber":30,"author":{"gitId":"dwangwk"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-03-07"},{"lineNumber":31,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":32,"author":{"gitId":"dwangwk"},"content":"* **Community**:","lastModifiedDate":"2024-03-07"},{"lineNumber":33,"author":{"gitId":"dwangwk"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-03-07"},{"lineNumber":34,"author":{"gitId":"dwangwk"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-03-07"},{"lineNumber":35,"author":{"gitId":"dwangwk"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-03-07"},{"lineNumber":36,"author":{"gitId":"dwangwk"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-03-07"},{"lineNumber":37,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":38,"author":{"gitId":"dwangwk"},"content":"* **Tools**:","lastModifiedDate":"2024-03-07"},{"lineNumber":39,"author":{"gitId":"dwangwk"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-03-07"},{"lineNumber":40,"author":{"gitId":"dwangwk"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-03-07"},{"lineNumber":41,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":42,"author":{"gitId":"dwangwk"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-03-07"}],"authorContributionMap":{"dwangwk":42}},{"path":"docs/team/natasya.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"dwangwk"},"content":"---","lastModifiedDate":"2024-03-07"},{"lineNumber":2,"author":{"gitId":"dwangwk"},"content":" layout: default.md","lastModifiedDate":"2024-03-07"},{"lineNumber":3,"author":{"gitId":"dwangwk"},"content":" title: \"Natasya\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-03-07"},{"lineNumber":4,"author":{"gitId":"dwangwk"},"content":"---","lastModifiedDate":"2024-03-07"},{"lineNumber":5,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":6,"author":{"gitId":"dwangwk"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-03-07"},{"lineNumber":7,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":8,"author":{"gitId":"dwangwk"},"content":"AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2024-03-07"},{"lineNumber":9,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":10,"author":{"gitId":"dwangwk"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-03-07"},{"lineNumber":11,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":12,"author":{"gitId":"dwangwk"},"content":"* **New Feature**: Added the ability to delete startups from the project.","lastModifiedDate":"2024-03-07"},{"lineNumber":13,"author":{"gitId":"dwangwk"},"content":" * What it does: This allows users to delete startups from the Capital Connect data.","lastModifiedDate":"2024-03-07"},{"lineNumber":14,"author":{"gitId":"dwangwk"},"content":" * Justification: This is imperative for our users to upkeep the data with the latest information.","lastModifiedDate":"2024-03-07"},{"lineNumber":15,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":16,"author":{"gitId":"dwangwk"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-03-07"},{"lineNumber":17,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":18,"author":{"gitId":"dwangwk"},"content":"* **Project management**:","lastModifiedDate":"2024-03-07"},{"lineNumber":19,"author":{"gitId":"dwangwk"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-03-07"},{"lineNumber":20,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":21,"author":{"gitId":"dwangwk"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-03-07"},{"lineNumber":22,"author":{"gitId":"dwangwk"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-03-07"},{"lineNumber":23,"author":{"gitId":"dwangwk"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-03-07"},{"lineNumber":24,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":25,"author":{"gitId":"dwangwk"},"content":"* **Documentation**:","lastModifiedDate":"2024-03-07"},{"lineNumber":26,"author":{"gitId":"dwangwk"},"content":" * User Guide:","lastModifiedDate":"2024-03-07"},{"lineNumber":27,"author":{"gitId":"dwangwk"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-03-07"},{"lineNumber":28,"author":{"gitId":"dwangwk"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-03-07"},{"lineNumber":29,"author":{"gitId":"dwangwk"},"content":" * Developer Guide:","lastModifiedDate":"2024-03-07"},{"lineNumber":30,"author":{"gitId":"dwangwk"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-03-07"},{"lineNumber":31,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":32,"author":{"gitId":"dwangwk"},"content":"* **Community**:","lastModifiedDate":"2024-03-07"},{"lineNumber":33,"author":{"gitId":"dwangwk"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-03-07"},{"lineNumber":34,"author":{"gitId":"dwangwk"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-03-07"},{"lineNumber":35,"author":{"gitId":"dwangwk"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-03-07"},{"lineNumber":36,"author":{"gitId":"dwangwk"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-03-07"},{"lineNumber":37,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":38,"author":{"gitId":"dwangwk"},"content":"* **Tools**:","lastModifiedDate":"2024-03-07"},{"lineNumber":39,"author":{"gitId":"dwangwk"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-03-07"},{"lineNumber":40,"author":{"gitId":"dwangwk"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-03-07"},{"lineNumber":41,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":42,"author":{"gitId":"dwangwk"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-03-07"}],"authorContributionMap":{"dwangwk":42}},{"path":"docs/team/shuheng.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"John Doe\u0027s Project Portfolio Page\"","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2021-07-30"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"yeoshuheng"},"content":"* **New Feature**: Added the ability to add startups to the project.","lastModifiedDate":"2024-02-25"},{"lineNumber":13,"author":{"gitId":"yeoshuheng"},"content":" * What it does: This allows users to add startups to Capital Connect alongside information such as funding stage.","lastModifiedDate":"2024-02-25"},{"lineNumber":14,"author":{"gitId":"yeoshuheng"},"content":" * Justification: This is imperative for our users as they consist of key information they have to track.","lastModifiedDate":"2024-02-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"* **Project management**:","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":"* **Documentation**:","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * User Guide:","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Developer Guide:","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":"* **Community**:","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"* **Tools**:","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"-":41,"yeoshuheng":3}},{"path":"docs/team/sifan.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"dwangwk"},"content":"---","lastModifiedDate":"2024-03-07"},{"lineNumber":2,"author":{"gitId":"dwangwk"},"content":" layout: default.md","lastModifiedDate":"2024-03-07"},{"lineNumber":3,"author":{"gitId":"dwangwk"},"content":" title: \"Si Fan\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-03-07"},{"lineNumber":4,"author":{"gitId":"dwangwk"},"content":"---","lastModifiedDate":"2024-03-07"},{"lineNumber":5,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":6,"author":{"gitId":"dwangwk"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-03-07"},{"lineNumber":7,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":8,"author":{"gitId":"dwangwk"},"content":"AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2024-03-07"},{"lineNumber":9,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":10,"author":{"gitId":"dwangwk"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-03-07"},{"lineNumber":11,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":12,"author":{"gitId":"dwangwk"},"content":"* **New Feature**: Added the ability to delete startups from the project.","lastModifiedDate":"2024-03-07"},{"lineNumber":13,"author":{"gitId":"dwangwk"},"content":" * What it does: This allows users to delete startups from the Capital Connect data.","lastModifiedDate":"2024-03-07"},{"lineNumber":14,"author":{"gitId":"dwangwk"},"content":" * Justification: This is imperative for our users to upkeep the data with the latest information.","lastModifiedDate":"2024-03-07"},{"lineNumber":15,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":16,"author":{"gitId":"dwangwk"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-03-07"},{"lineNumber":17,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":18,"author":{"gitId":"dwangwk"},"content":"* **Project management**:","lastModifiedDate":"2024-03-07"},{"lineNumber":19,"author":{"gitId":"dwangwk"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-03-07"},{"lineNumber":20,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":21,"author":{"gitId":"dwangwk"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-03-07"},{"lineNumber":22,"author":{"gitId":"dwangwk"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-03-07"},{"lineNumber":23,"author":{"gitId":"dwangwk"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-03-07"},{"lineNumber":24,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":25,"author":{"gitId":"dwangwk"},"content":"* **Documentation**:","lastModifiedDate":"2024-03-07"},{"lineNumber":26,"author":{"gitId":"dwangwk"},"content":" * User Guide:","lastModifiedDate":"2024-03-07"},{"lineNumber":27,"author":{"gitId":"dwangwk"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-03-07"},{"lineNumber":28,"author":{"gitId":"dwangwk"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-03-07"},{"lineNumber":29,"author":{"gitId":"dwangwk"},"content":" * Developer Guide:","lastModifiedDate":"2024-03-07"},{"lineNumber":30,"author":{"gitId":"dwangwk"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-03-07"},{"lineNumber":31,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":32,"author":{"gitId":"dwangwk"},"content":"* **Community**:","lastModifiedDate":"2024-03-07"},{"lineNumber":33,"author":{"gitId":"dwangwk"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-03-07"},{"lineNumber":34,"author":{"gitId":"dwangwk"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-03-07"},{"lineNumber":35,"author":{"gitId":"dwangwk"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-03-07"},{"lineNumber":36,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":37,"author":{"gitId":"dwangwk"},"content":"* **Tools**:","lastModifiedDate":"2024-03-07"},{"lineNumber":38,"author":{"gitId":"dwangwk"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-03-07"},{"lineNumber":39,"author":{"gitId":"dwangwk"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-03-07"},{"lineNumber":40,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":41,"author":{"gitId":"dwangwk"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-03-07"}],"authorContributionMap":{"dwangwk":41}},{"path":"src/main/java/seedu/address/logic/Logic.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-03"},{"lineNumber":11,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * API of the Logic component","lastModifiedDate":"2016-09-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public interface Logic {","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2016-09-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * @param commandText The command as entered by the user.","lastModifiedDate":"2016-09-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * @return the result of the command execution.","lastModifiedDate":"2016-09-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2017-02-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * @throws ParseException If an error occurs during parsing.","lastModifiedDate":"2017-03-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" CommandResult execute(String commandText) throws CommandException, ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Returns the AddressBook.","lastModifiedDate":"2018-12-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * @see seedu.address.model.Model#getAddressBook()","lastModifiedDate":"2018-12-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2018-12-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03"},{"lineNumber":33,"author":{"gitId":"menatahari"},"content":" /** Returns an unmodifiable view of the filtered list of startups */","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"menatahari"},"content":" ObservableList\u003cStartup\u003e getFilteredStartupList();","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-26"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Set the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"menatahari":3,"-":47}},{"path":"src/main/java/seedu/address/logic/LogicManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2016-09-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.AddressBookParser;","lastModifiedDate":"2017-07-07"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-03"},{"lineNumber":18,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.storage.Storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * The main LogicManager of the app.","lastModifiedDate":"2016-09-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class LogicManager implements Logic {","lastModifiedDate":"2018-12-09"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_ERROR_FORMAT \u003d \"Could not save data due to the following error: %s\";","lastModifiedDate":"2023-06-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_PERMISSION_ERROR_FORMAT \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \"Could not save data to file %s due to insufficient permissions to write to the file or the folder.\";","lastModifiedDate":"2023-06-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(LogicManager.class);","lastModifiedDate":"2016-09-29"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final Model model;","lastModifiedDate":"2016-09-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final Storage storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final AddressBookParser addressBookParser;","lastModifiedDate":"2017-07-07"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Constructs a {@code LogicManager} with the given {@code Model} and {@code Storage}.","lastModifiedDate":"2020-05-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public LogicManager(Model model, Storage storage) {","lastModifiedDate":"2018-12-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.model \u003d model;","lastModifiedDate":"2016-09-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.storage \u003d storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":" addressBookParser \u003d new AddressBookParser();","lastModifiedDate":"2018-01-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public CommandResult execute(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":47,"author":{"gitId":"-"},"content":" logger.info(\"----------------[USER COMMAND][\" + commandText + \"]\");","lastModifiedDate":"2016-09-29"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":" CommandResult commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":" Command command \u003d addressBookParser.parseCommand(commandText);","lastModifiedDate":"2017-07-07"},{"lineNumber":51,"author":{"gitId":"-"},"content":" commandResult \u003d command.execute(model);","lastModifiedDate":"2019-01-25"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":" storage.saveAddressBook(model.getAddressBook());","lastModifiedDate":"2018-12-09"},{"lineNumber":55,"author":{"gitId":"-"},"content":" } catch (AccessDeniedException e) {","lastModifiedDate":"2023-06-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_PERMISSION_ERROR_FORMAT, e.getMessage()), e);","lastModifiedDate":"2023-06-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2018-12-09"},{"lineNumber":58,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_ERROR_FORMAT, ioe.getMessage()), ioe);","lastModifiedDate":"2023-06-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-03"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2018-12-03"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return model.getAddressBook();","lastModifiedDate":"2018-12-03"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-03"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":70,"author":{"gitId":"menatahari"},"content":" public ObservableList\u003cStartup\u003e getFilteredStartupList() {","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"menatahari"},"content":" return model.getFilteredStartupList();","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-29"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return model.getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":" return model.getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":" model.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"menatahari":3,"-":85}},{"path":"src/main/java/seedu/address/logic/Messages.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2023-07-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-07-14"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-07-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2023-07-14"},{"lineNumber":8,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Container for user visible messages.","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class Messages {","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2016-09-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"menatahari"},"content":" public static final String MESSAGE_INVALID_STARTUP_DISPLAYED_INDEX \u003d \"The startup index provided is invalid\";","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"menatahari"},"content":" public static final String MESSAGE_STARTUPS_LISTED_OVERVIEW \u003d \"%1$d startups listed!\";","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2023-07-14"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-07-14"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2023-07-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2023-07-14"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":28,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":29,"author":{"gitId":"-"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-07-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":31,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23"},{"lineNumber":35,"author":{"gitId":"menatahari"},"content":" * Formats the {@code startup} for display to the user.","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23"},{"lineNumber":37,"author":{"gitId":"menatahari"},"content":" public static String format(Startup startup) {","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23"},{"lineNumber":39,"author":{"gitId":"menatahari"},"content":" builder.append(startup.getName())","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"yeoshuheng"},"content":" .append(\"; Industry: \")","lastModifiedDate":"2024-02-25"},{"lineNumber":41,"author":{"gitId":"menatahari"},"content":" .append(startup.getIndustry())","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"yeoshuheng"},"content":" .append(\"; Funding Stage: \")","lastModifiedDate":"2024-02-25"},{"lineNumber":43,"author":{"gitId":"menatahari"},"content":" .append(startup.getFundingStage())","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"-"},"content":" .append(\"; Phone: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"menatahari"},"content":" .append(startup.getPhone())","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"-"},"content":" .append(\"; Email: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"menatahari"},"content":" .append(startup.getEmail())","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"-"},"content":" .append(\"; Address: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"menatahari"},"content":" .append(startup.getAddress())","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"dwangwk"},"content":" .append(\"; Note: \")","lastModifiedDate":"2024-03-13"},{"lineNumber":51,"author":{"gitId":"menatahari"},"content":" .append(startup.getNote())","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" .append(\"; Tags: \");","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"menatahari"},"content":" startup.getTags().forEach(builder::append);","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"dwangwk":1,"menatahari":13,"-":41,"yeoshuheng":2}},{"path":"src/main/java/seedu/address/logic/commands/AddCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-02-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-02-25"},{"lineNumber":6,"author":{"gitId":"yeoshuheng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FUNDING_STAGE;","lastModifiedDate":"2024-02-25"},{"lineNumber":7,"author":{"gitId":"yeoshuheng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_INDUSTRY;","lastModifiedDate":"2024-02-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-02-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-02-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-02-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":16,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"menatahari"},"content":" * Adds a startup to the address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"add\";","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"menatahari"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a startup to the address book. \"","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2017-06-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2017-06-06"},{"lineNumber":28,"author":{"gitId":"yeoshuheng"},"content":" + PREFIX_INDUSTRY + \"INDUSTRY \"","lastModifiedDate":"2024-02-25"},{"lineNumber":29,"author":{"gitId":"yeoshuheng"},"content":" + PREFIX_FUNDING_STAGE + \"FUNDING STAGE \"","lastModifiedDate":"2024-02-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2017-05-09"},{"lineNumber":31,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2017-05-09"},{"lineNumber":32,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"ADDRESS \"","lastModifiedDate":"2017-05-09"},{"lineNumber":33,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06"},{"lineNumber":35,"author":{"gitId":"dwangwk"},"content":" + PREFIX_NAME + \"Allium \"","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"dwangwk"},"content":" + PREFIX_INDUSTRY + \"WEB3 \"","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"yespiggy"},"content":" + PREFIX_FUNDING_STAGE + \"S \"","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":39,"author":{"gitId":"dwangwk"},"content":" + PREFIX_EMAIL + \"allium@gmail.com \"","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"dwangwk"},"content":" + PREFIX_ADDRESS + \"420, 23rd Street, #02-25 \"","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"dwangwk"},"content":" + PREFIX_TAG + \"competitive \"","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"owesMoney\";","lastModifiedDate":"2017-05-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"menatahari"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New startup added: %1$s\";","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"menatahari"},"content":" public static final String MESSAGE_DUPLICATE_STARTUP \u003d \"This startup already exists in the address book\";","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"menatahari"},"content":" private final Startup toAdd;","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":50,"author":{"gitId":"menatahari"},"content":" * Creates an AddCommand to add the specified {@code Startup}","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":52,"author":{"gitId":"menatahari"},"content":" public AddCommand(Startup startup) {","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"menatahari"},"content":" requireNonNull(startup);","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"menatahari"},"content":" toAdd \u003d startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":59,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":61,"author":{"gitId":"menatahari"},"content":" if (model.hasStartup(toAdd)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"menatahari"},"content":" throw new CommandException(MESSAGE_DUPLICATE_STARTUP);","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":65,"author":{"gitId":"menatahari"},"content":" model.addStartup(toAdd);","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22"},{"lineNumber":71,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" if (!(other instanceof AddCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" AddCommand otherAddCommand \u003d (AddCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2023-07-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"dwangwk":5,"menatahari":13,"yespiggy":1,"-":67,"yeoshuheng":4}},{"path":"src/main/java/seedu/address/logic/commands/DeleteCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-09-01"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":12,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"menatahari"},"content":" * Deletes a startup identified using it\u0027s displayed index from the address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"delete\";","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"menatahari"},"content":" + \": Deletes the startup identified by the index number used in the displayed startup list.\\n\"","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer)\\n\"","lastModifiedDate":"2016-09-29"},{"lineNumber":24,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"menatahari"},"content":" public static final String MESSAGE_DELETE_STARTUP_SUCCESS \u003d \"Deleted Startup: %1$s\";","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final Index targetIndex;","lastModifiedDate":"2017-06-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public DeleteCommand(Index targetIndex) {","lastModifiedDate":"2017-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2016-09-22"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":37,"author":{"gitId":"menatahari"},"content":" List\u003cStartup\u003e lastShownList \u003d model.getFilteredStartupList();","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":39,"author":{"gitId":"-"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19"},{"lineNumber":40,"author":{"gitId":"menatahari"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_STARTUP_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":43,"author":{"gitId":"menatahari"},"content":" Startup startupToDelete \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"menatahari"},"content":" model.deleteStartup(startupToDelete);","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"menatahari"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_STARTUP_SUCCESS, Messages.format(startupToDelete)));","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" if (!(other instanceof DeleteCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" DeleteCommand otherDeleteCommand \u003d (DeleteCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return targetIndex.equals(otherDeleteCommand.targetIndex);","lastModifiedDate":"2023-07-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"menatahari":9,"-":60}},{"path":"src/main/java/seedu/address/logic/commands/EditCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-12-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-02-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-02-25"},{"lineNumber":6,"author":{"gitId":"yeoshuheng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FUNDING_STAGE;","lastModifiedDate":"2024-02-25"},{"lineNumber":7,"author":{"gitId":"yeoshuheng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_INDUSTRY;","lastModifiedDate":"2024-02-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-02-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-02-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-02-25"},{"lineNumber":11,"author":{"gitId":"menatahari"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_STARTUPS;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-01-11"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-01-11"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2016-12-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":26,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Address;","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Email;","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.FundingStage;","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Industry;","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Name;","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Phone;","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":35,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26"},{"lineNumber":36,"author":{"gitId":"menatahari"},"content":" * Edits the details of an existing startup in the address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":38,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2016-12-26"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":42,"author":{"gitId":"menatahari"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the startup identified \"","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"menatahari"},"content":" + \"by the index number used in the displayed startup list. \"","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26"},{"lineNumber":45,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2017-06-06"},{"lineNumber":46,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06"},{"lineNumber":47,"author":{"gitId":"yeoshuheng"},"content":" + \"[\" + PREFIX_INDUSTRY + \"INDUSTRY\" + \"] \"","lastModifiedDate":"2024-02-25"},{"lineNumber":48,"author":{"gitId":"yeoshuheng"},"content":" + \"[\" + PREFIX_FUNDING_STAGE + \"FUNDING STAGE] \"","lastModifiedDate":"2024-02-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"91234567 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":55,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2017-05-09"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":57,"author":{"gitId":"menatahari"},"content":" public static final String MESSAGE_EDIT_STARTUP_SUCCESS \u003d \"Edited Startup: %1$s\";","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2016-12-26"},{"lineNumber":59,"author":{"gitId":"menatahari"},"content":" public static final String MESSAGE_DUPLICATE_STARTUP \u003d \"This startup already exists in the address book.\";","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":61,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2017-05-25"},{"lineNumber":62,"author":{"gitId":"menatahari"},"content":" private final EditStartupDescriptor editStartupDescriptor;","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":65,"author":{"gitId":"menatahari"},"content":" * @param index of the startup in the filtered startup list to edit","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"menatahari"},"content":" * @param editStartupDescriptor details to edit the startup with","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":68,"author":{"gitId":"menatahari"},"content":" public EditCommand(Index index, EditStartupDescriptor editStartupDescriptor) {","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25"},{"lineNumber":70,"author":{"gitId":"menatahari"},"content":" requireNonNull(editStartupDescriptor);","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25"},{"lineNumber":73,"author":{"gitId":"menatahari"},"content":" this.editStartupDescriptor \u003d new EditStartupDescriptor(editStartupDescriptor);","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":78,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":79,"author":{"gitId":"menatahari"},"content":" List\u003cStartup\u003e lastShownList \u003d model.getFilteredStartupList();","lastModifiedDate":"2024-03-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":81,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19"},{"lineNumber":82,"author":{"gitId":"menatahari"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_STARTUP_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":85,"author":{"gitId":"menatahari"},"content":" Startup startupToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-03-19"},{"lineNumber":86,"author":{"gitId":"menatahari"},"content":" Startup editedStartup \u003d createEditedStartup(startupToEdit, editStartupDescriptor);","lastModifiedDate":"2024-03-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":88,"author":{"gitId":"menatahari"},"content":" if (!startupToEdit.isSameStartup(editedStartup) \u0026\u0026 model.hasStartup(editedStartup)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":89,"author":{"gitId":"menatahari"},"content":" throw new CommandException(MESSAGE_DUPLICATE_STARTUP);","lastModifiedDate":"2024-03-19"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":92,"author":{"gitId":"menatahari"},"content":" model.setStartup(startupToEdit, editedStartup);","lastModifiedDate":"2024-03-19"},{"lineNumber":93,"author":{"gitId":"menatahari"},"content":" model.updateFilteredStartupList(PREDICATE_SHOW_ALL_STARTUPS);","lastModifiedDate":"2024-03-19"},{"lineNumber":94,"author":{"gitId":"menatahari"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_STARTUP_SUCCESS, Messages.format(editedStartup)));","lastModifiedDate":"2024-03-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":97,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":98,"author":{"gitId":"menatahari"},"content":" * Creates and returns a {@code Startup} with the details of {@code startupToEdit}","lastModifiedDate":"2024-03-19"},{"lineNumber":99,"author":{"gitId":"menatahari"},"content":" * edited with {@code editStartupDescriptor}.","lastModifiedDate":"2024-03-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":101,"author":{"gitId":"menatahari"},"content":" private static Startup createEditedStartup(Startup startupToEdit, EditStartupDescriptor editStartupDescriptor) {","lastModifiedDate":"2024-03-19"},{"lineNumber":102,"author":{"gitId":"menatahari"},"content":" assert startupToEdit !\u003d null;","lastModifiedDate":"2024-03-19"},{"lineNumber":103,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":104,"author":{"gitId":"menatahari"},"content":" Name updatedName \u003d editStartupDescriptor.getName().orElse(startupToEdit.getName());","lastModifiedDate":"2024-03-19"},{"lineNumber":105,"author":{"gitId":"menatahari"},"content":" Phone updatedPhone \u003d editStartupDescriptor.getPhone().orElse(startupToEdit.getPhone());","lastModifiedDate":"2024-03-19"},{"lineNumber":106,"author":{"gitId":"menatahari"},"content":" FundingStage updatedFundingStage \u003d editStartupDescriptor.getFundingStage().orElse(","lastModifiedDate":"2024-03-19"},{"lineNumber":107,"author":{"gitId":"menatahari"},"content":" startupToEdit.getFundingStage());","lastModifiedDate":"2024-03-19"},{"lineNumber":108,"author":{"gitId":"menatahari"},"content":" Industry updatedIndustry \u003d editStartupDescriptor.getIndustry().orElse(startupToEdit.getIndustry());","lastModifiedDate":"2024-03-19"},{"lineNumber":109,"author":{"gitId":"menatahari"},"content":" Email updatedEmail \u003d editStartupDescriptor.getEmail().orElse(startupToEdit.getEmail());","lastModifiedDate":"2024-03-19"},{"lineNumber":110,"author":{"gitId":"menatahari"},"content":" Address updatedAddress \u003d editStartupDescriptor.getAddress().orElse(startupToEdit.getAddress());","lastModifiedDate":"2024-03-19"},{"lineNumber":111,"author":{"gitId":"menatahari"},"content":" Set\u003cTag\u003e updatedTags \u003d editStartupDescriptor.getTags().orElse(startupToEdit.getTags());","lastModifiedDate":"2024-03-19"},{"lineNumber":112,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":113,"author":{"gitId":"menatahari"},"content":" return new Startup(updatedName, updatedFundingStage, updatedIndustry,","lastModifiedDate":"2024-03-19"},{"lineNumber":114,"author":{"gitId":"yeoshuheng"},"content":" updatedPhone, updatedEmail, updatedAddress, updatedTags);","lastModifiedDate":"2024-02-25"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08"},{"lineNumber":125,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":129,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13"},{"lineNumber":130,"author":{"gitId":"menatahari"},"content":" \u0026\u0026 editStartupDescriptor.equals(otherEditCommand.editStartupDescriptor);","lastModifiedDate":"2024-03-19"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23"},{"lineNumber":137,"author":{"gitId":"menatahari"},"content":" .add(\"editStartupDescriptor\", editStartupDescriptor)","lastModifiedDate":"2024-03-19"},{"lineNumber":138,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":142,"author":{"gitId":"menatahari"},"content":" * Stores the details to edit the startup with. Each non-empty field value will replace the","lastModifiedDate":"2024-03-19"},{"lineNumber":143,"author":{"gitId":"menatahari"},"content":" * corresponding field value of the startup.","lastModifiedDate":"2024-03-19"},{"lineNumber":144,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":145,"author":{"gitId":"menatahari"},"content":" public static class EditStartupDescriptor {","lastModifiedDate":"2024-03-19"},{"lineNumber":146,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21"},{"lineNumber":147,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":148,"author":{"gitId":"yeoshuheng"},"content":" private Industry industry;","lastModifiedDate":"2024-02-25"},{"lineNumber":149,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":150,"author":{"gitId":"yeoshuheng"},"content":" private FundingStage fundingStage;","lastModifiedDate":"2024-02-25"},{"lineNumber":151,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":152,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":153,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21"},{"lineNumber":154,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-06-21"},{"lineNumber":155,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":157,"author":{"gitId":"menatahari"},"content":" public EditStartupDescriptor() {}","lastModifiedDate":"2024-03-19"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":159,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":160,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11"},{"lineNumber":161,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":162,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":163,"author":{"gitId":"menatahari"},"content":" public EditStartupDescriptor(EditStartupDescriptor toCopy) {","lastModifiedDate":"2024-03-19"},{"lineNumber":164,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15"},{"lineNumber":165,"author":{"gitId":"yeoshuheng"},"content":" setFundingStage(toCopy.fundingStage);","lastModifiedDate":"2024-02-25"},{"lineNumber":166,"author":{"gitId":"yeoshuheng"},"content":" setIndustry(toCopy.industry);","lastModifiedDate":"2024-02-25"},{"lineNumber":167,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15"},{"lineNumber":168,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15"},{"lineNumber":169,"author":{"gitId":"-"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2018-01-15"},{"lineNumber":170,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11"},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":173,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":174,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26"},{"lineNumber":175,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":176,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26"},{"lineNumber":177,"author":{"gitId":"yeoshuheng"},"content":" return CollectionUtil.isAnyNonNull(name, industry, fundingStage, phone, email, address, tags);","lastModifiedDate":"2024-02-25"},{"lineNumber":178,"author":{"gitId":"yeoshuheng"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":179,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":180,"author":{"gitId":"yeoshuheng"},"content":" public void setIndustry(Industry industry) {","lastModifiedDate":"2024-02-25"},{"lineNumber":181,"author":{"gitId":"yeoshuheng"},"content":" this.industry \u003d industry;","lastModifiedDate":"2024-02-25"},{"lineNumber":182,"author":{"gitId":"yeoshuheng"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":183,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":184,"author":{"gitId":"yeoshuheng"},"content":" public void setFundingStage(FundingStage fundingStage) {","lastModifiedDate":"2024-02-25"},{"lineNumber":185,"author":{"gitId":"yeoshuheng"},"content":" this.fundingStage \u003d fundingStage;","lastModifiedDate":"2024-02-25"},{"lineNumber":186,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":188,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21"},{"lineNumber":189,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21"},{"lineNumber":190,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":192,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26"},{"lineNumber":193,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21"},{"lineNumber":194,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":196,"author":{"gitId":"yeoshuheng"},"content":" public Optional\u003cIndustry\u003e getIndustry() {","lastModifiedDate":"2024-02-25"},{"lineNumber":197,"author":{"gitId":"yeoshuheng"},"content":" return Optional.ofNullable(industry);","lastModifiedDate":"2024-02-25"},{"lineNumber":198,"author":{"gitId":"yeoshuheng"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":199,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":200,"author":{"gitId":"yeoshuheng"},"content":" public Optional\u003cFundingStage\u003e getFundingStage() {","lastModifiedDate":"2024-02-25"},{"lineNumber":201,"author":{"gitId":"yeoshuheng"},"content":" return Optional.ofNullable(fundingStage);","lastModifiedDate":"2024-02-25"},{"lineNumber":202,"author":{"gitId":"yeoshuheng"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":203,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":204,"author":{"gitId":"-"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2017-06-21"},{"lineNumber":205,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":206,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":208,"author":{"gitId":"-"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26"},{"lineNumber":209,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2017-06-21"},{"lineNumber":210,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":212,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2017-06-21"},{"lineNumber":213,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-06-21"},{"lineNumber":214,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":216,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26"},{"lineNumber":217,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21"},{"lineNumber":218,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":220,"author":{"gitId":"-"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2017-06-21"},{"lineNumber":221,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-06-21"},{"lineNumber":222,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":224,"author":{"gitId":"-"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2016-12-26"},{"lineNumber":225,"author":{"gitId":"-"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2017-06-21"},{"lineNumber":226,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":228,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":229,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2018-01-11"},{"lineNumber":230,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":231,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":232,"author":{"gitId":"-"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-06-21"},{"lineNumber":233,"author":{"gitId":"-"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2018-01-11"},{"lineNumber":234,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":236,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":237,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11"},{"lineNumber":238,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11"},{"lineNumber":239,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11"},{"lineNumber":240,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":241,"author":{"gitId":"-"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":242,"author":{"gitId":"-"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2018-01-11"},{"lineNumber":243,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":244,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":245,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05"},{"lineNumber":246,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05"},{"lineNumber":247,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05"},{"lineNumber":248,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05"},{"lineNumber":249,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":250,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":251,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05"},{"lineNumber":252,"author":{"gitId":"menatahari"},"content":" if (!(other instanceof EditStartupDescriptor)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":253,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05"},{"lineNumber":254,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":256,"author":{"gitId":"menatahari"},"content":" EditStartupDescriptor otherEditStartupDescriptor \u003d (EditStartupDescriptor) other;","lastModifiedDate":"2024-03-19"},{"lineNumber":257,"author":{"gitId":"menatahari"},"content":" return Objects.equals(name, otherEditStartupDescriptor.name)","lastModifiedDate":"2024-03-19"},{"lineNumber":258,"author":{"gitId":"menatahari"},"content":" \u0026\u0026 Objects.equals(phone, otherEditStartupDescriptor.phone)","lastModifiedDate":"2024-03-19"},{"lineNumber":259,"author":{"gitId":"menatahari"},"content":" \u0026\u0026 Objects.equals(fundingStage, otherEditStartupDescriptor.fundingStage)","lastModifiedDate":"2024-03-19"},{"lineNumber":260,"author":{"gitId":"menatahari"},"content":" \u0026\u0026 Objects.equals(industry, otherEditStartupDescriptor.industry)","lastModifiedDate":"2024-03-19"},{"lineNumber":261,"author":{"gitId":"menatahari"},"content":" \u0026\u0026 Objects.equals(email, otherEditStartupDescriptor.email)","lastModifiedDate":"2024-03-19"},{"lineNumber":262,"author":{"gitId":"menatahari"},"content":" \u0026\u0026 Objects.equals(address, otherEditStartupDescriptor.address)","lastModifiedDate":"2024-03-19"},{"lineNumber":263,"author":{"gitId":"menatahari"},"content":" \u0026\u0026 Objects.equals(tags, otherEditStartupDescriptor.tags);","lastModifiedDate":"2024-03-19"},{"lineNumber":264,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":266,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":267,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":268,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":269,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":270,"author":{"gitId":"yeoshuheng"},"content":" .add(\"industry\", industry)","lastModifiedDate":"2024-02-25"},{"lineNumber":271,"author":{"gitId":"yeoshuheng"},"content":" .add(\"funding stage\", fundingStage)","lastModifiedDate":"2024-02-25"},{"lineNumber":272,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":273,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":274,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":275,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":276,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":277,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":278,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":279,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26"}],"authorContributionMap":{"menatahari":59,"-":189,"yeoshuheng":31}},{"path":"src/main/java/seedu/address/logic/commands/FindCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":5,"author":{"gitId":"yespiggy"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-15"},{"lineNumber":6,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":10,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.FundingStageContainsKeywordsPredicate;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.IndustryContainsKeywordsPredicate;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-22"},{"lineNumber":17,"author":{"gitId":"menatahari"},"content":" * Finds and lists all startups in address book whose name contains any of the argument keywords.","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Keyword matching is case insensitive.","lastModifiedDate":"2018-04-01"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class FindCommand extends Command {","lastModifiedDate":"2016-09-22"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"find\";","lastModifiedDate":"2016-09-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":24,"author":{"gitId":"yespiggy"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Finds all startups that contain any of \"","lastModifiedDate":"2024-03-15"},{"lineNumber":25,"author":{"gitId":"yespiggy"},"content":" + \"the specified keywords (case-insensitive) of either name / industry / funding stage\"","lastModifiedDate":"2024-03-15"},{"lineNumber":26,"author":{"gitId":"yespiggy"},"content":" + \" and displays them as a list with index numbers.\\n\"","lastModifiedDate":"2024-03-15"},{"lineNumber":27,"author":{"gitId":"yespiggy"},"content":" + \"Example: \" + COMMAND_WORD + \" n/ Names \\n\"","lastModifiedDate":"2024-03-15"},{"lineNumber":28,"author":{"gitId":"yespiggy"},"content":" + \"Example: \" + COMMAND_WORD + \" i/ Industries \\n\"","lastModifiedDate":"2024-03-15"},{"lineNumber":29,"author":{"gitId":"yespiggy"},"content":" + \"Example: \" + COMMAND_WORD + \" f/ Funding Stages \\n\"","lastModifiedDate":"2024-03-15"},{"lineNumber":30,"author":{"gitId":"yespiggy"},"content":" + \"Example: \" + COMMAND_WORD + \" f/ B C\";;","lastModifiedDate":"2024-03-15"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":32,"author":{"gitId":"menatahari"},"content":" private final Predicate\u003cStartup\u003e predicate;","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public FindCommand(NameContainsKeywordsPredicate predicate) {","lastModifiedDate":"2017-06-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":37,"author":{"gitId":"yespiggy"},"content":" public FindCommand(IndustryContainsKeywordsPredicate predicate) {","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"yespiggy"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"yespiggy"},"content":" public FindCommand(FundingStageContainsKeywordsPredicate predicate) {","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"yespiggy"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-22"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":48,"author":{"gitId":"menatahari"},"content":" model.updateFilteredStartupList(predicate);","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" return new CommandResult(","lastModifiedDate":"2018-04-01"},{"lineNumber":50,"author":{"gitId":"menatahari"},"content":" String.format(Messages.MESSAGE_STARTUPS_LISTED_OVERVIEW, model.getFilteredStartupList().size()));","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" if (!(other instanceof FindCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" FindCommand otherFindCommand \u003d (FindCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" return predicate.equals(otherFindCommand.predicate);","lastModifiedDate":"2023-07-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" .add(\"predicate\", predicate)","lastModifiedDate":"2019-02-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22"}],"authorContributionMap":{"menatahari":8,"yespiggy":17,"-":49}},{"path":"src/main/java/seedu/address/logic/commands/ListCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"menatahari"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_STARTUPS;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"yespiggy"},"content":" * Lists all startup investments in CapitalConnect to the user.","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2016-09-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"list\";","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"yespiggy"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Listed all startup investments\";","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":21,"author":{"gitId":"menatahari"},"content":" model.updateFilteredStartupList(PREDICATE_SHOW_ALL_STARTUPS);","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"-"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2016-09-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"menatahari":2,"yespiggy":2,"-":20}},{"path":"src/main/java/seedu/address/logic/commands/NoteCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"dwangwk"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"dwangwk"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"menatahari"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_STARTUPS;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"dwangwk"},"content":"import java.util.List;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"dwangwk"},"content":"import java.util.Objects;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"dwangwk"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"dwangwk"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"dwangwk"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"dwangwk"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"dwangwk"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"dwangwk"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Note;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"dwangwk"},"content":"/**","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"yeoshuheng"},"content":" * Edits a Note of a startup in the address book!","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"dwangwk"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"dwangwk"},"content":"public class NoteCommand extends Command {","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"dwangwk"},"content":" public static final String COMMAND_WORD \u003d \"note\";","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"menatahari"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the notes of the startup identified \"","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"menatahari"},"content":" + \"by the index number used in the displayed startup list. \"","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"dwangwk"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"dwangwk"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"dwangwk"},"content":" + \"[NOTE]...\\n\"","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"dwangwk"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"dwangwk"},"content":" + \"Lovely Smell \";","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"menatahari"},"content":" public static final String MESSAGE_EDIT_STARTUP_SUCCESS \u003d \"Edited Note of Startup: %1$s\";","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"dwangwk"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"menatahari"},"content":" public static final String MESSAGE_DUPLICATE_STARTUP \u003d \"This startup already exists in the address book.\";","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"dwangwk"},"content":" private final Index index;","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"dwangwk"},"content":" private final NoteStartupDescriptor noteStartupDescriptor;","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"dwangwk"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"menatahari"},"content":" * @param index of the startup in the filtered startup list to edit","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"dwangwk"},"content":" * @param noteStartupDescriptor details to edit the startup with","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"dwangwk"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":44,"author":{"gitId":"dwangwk"},"content":" public NoteCommand(Index index, NoteStartupDescriptor noteStartupDescriptor) {","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"dwangwk"},"content":" requireNonNull(index);","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"dwangwk"},"content":" requireNonNull(noteStartupDescriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":48,"author":{"gitId":"dwangwk"},"content":" this.index \u003d index;","lastModifiedDate":"2024-03-13"},{"lineNumber":49,"author":{"gitId":"dwangwk"},"content":" this.noteStartupDescriptor \u003d new NoteStartupDescriptor(noteStartupDescriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"dwangwk"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":51,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":52,"author":{"gitId":"dwangwk"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":53,"author":{"gitId":"dwangwk"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-13"},{"lineNumber":54,"author":{"gitId":"dwangwk"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-13"},{"lineNumber":55,"author":{"gitId":"menatahari"},"content":" List\u003cStartup\u003e lastShownList \u003d model.getFilteredStartupList();","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":57,"author":{"gitId":"dwangwk"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-03-13"},{"lineNumber":58,"author":{"gitId":"menatahari"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_STARTUP_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"dwangwk"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":60,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":61,"author":{"gitId":"menatahari"},"content":" Startup startupToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"dwangwk"},"content":" Startup editedStartup \u003d createEditedStartup(startupToEdit, noteStartupDescriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":64,"author":{"gitId":"menatahari"},"content":" model.setStartup(startupToEdit, editedStartup);","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"menatahari"},"content":" model.updateFilteredStartupList(PREDICATE_SHOW_ALL_STARTUPS);","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"menatahari"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_STARTUP_SUCCESS, Messages.format(editedStartup)));","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"dwangwk"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":68,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":69,"author":{"gitId":"dwangwk"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":70,"author":{"gitId":"menatahari"},"content":" * Creates and returns a {@code Startup} with the details of {@code startupToEdit}","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"menatahari"},"content":" * edited with {@code editStartupDescriptor}.","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"dwangwk"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":73,"author":{"gitId":"dwangwk"},"content":" private static Startup createEditedStartup(Startup startupToEdit, NoteStartupDescriptor noteStartupDescriptor) {","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"menatahari"},"content":" assert startupToEdit !\u003d null;","lastModifiedDate":"2024-03-19"},{"lineNumber":75,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"dwangwk"},"content":" Note updatedNote \u003d noteStartupDescriptor.getNote().orElse(startupToEdit.getNote());","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"dwangwk"},"content":" return new Startup(startupToEdit.getName(), startupToEdit.getFundingStage(), startupToEdit.getIndustry(),","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"dwangwk"},"content":" startupToEdit.getPhone(), startupToEdit.getEmail(), startupToEdit.getAddress(),","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"dwangwk"},"content":" startupToEdit.getTags(), updatedNote);","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"dwangwk"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":82,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":83,"author":{"gitId":"dwangwk"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":84,"author":{"gitId":"dwangwk"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-13"},{"lineNumber":85,"author":{"gitId":"dwangwk"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-13"},{"lineNumber":86,"author":{"gitId":"dwangwk"},"content":" return true;","lastModifiedDate":"2024-03-13"},{"lineNumber":87,"author":{"gitId":"dwangwk"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":88,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":89,"author":{"gitId":"dwangwk"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-13"},{"lineNumber":90,"author":{"gitId":"dwangwk"},"content":" if (!(other instanceof NoteCommand)) {","lastModifiedDate":"2024-03-13"},{"lineNumber":91,"author":{"gitId":"dwangwk"},"content":" return false;","lastModifiedDate":"2024-03-13"},{"lineNumber":92,"author":{"gitId":"dwangwk"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":93,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":94,"author":{"gitId":"dwangwk"},"content":" NoteCommand otherNoteCommand \u003d (NoteCommand) other;","lastModifiedDate":"2024-03-13"},{"lineNumber":95,"author":{"gitId":"dwangwk"},"content":" return index.equals(otherNoteCommand.index)","lastModifiedDate":"2024-03-13"},{"lineNumber":96,"author":{"gitId":"dwangwk"},"content":" \u0026\u0026 noteStartupDescriptor.equals(otherNoteCommand.noteStartupDescriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":97,"author":{"gitId":"dwangwk"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":98,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":99,"author":{"gitId":"dwangwk"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":100,"author":{"gitId":"dwangwk"},"content":" public String toString() {","lastModifiedDate":"2024-03-13"},{"lineNumber":101,"author":{"gitId":"dwangwk"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-13"},{"lineNumber":102,"author":{"gitId":"dwangwk"},"content":" .add(\"index\", index)","lastModifiedDate":"2024-03-13"},{"lineNumber":103,"author":{"gitId":"dwangwk"},"content":" .add(\"noteStartupDescriptor\", noteStartupDescriptor)","lastModifiedDate":"2024-03-20"},{"lineNumber":104,"author":{"gitId":"dwangwk"},"content":" .toString();","lastModifiedDate":"2024-03-13"},{"lineNumber":105,"author":{"gitId":"dwangwk"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":106,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":107,"author":{"gitId":"dwangwk"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":108,"author":{"gitId":"menatahari"},"content":" * Stores the details to edit the startup with. Each non-empty field value will replace the","lastModifiedDate":"2024-03-19"},{"lineNumber":109,"author":{"gitId":"menatahari"},"content":" * corresponding field value of the startup.","lastModifiedDate":"2024-03-19"},{"lineNumber":110,"author":{"gitId":"dwangwk"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":111,"author":{"gitId":"dwangwk"},"content":" public static class NoteStartupDescriptor {","lastModifiedDate":"2024-03-20"},{"lineNumber":112,"author":{"gitId":"dwangwk"},"content":" private Note note;","lastModifiedDate":"2024-03-13"},{"lineNumber":113,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":114,"author":{"gitId":"dwangwk"},"content":" public NoteStartupDescriptor() {}","lastModifiedDate":"2024-03-20"},{"lineNumber":115,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":116,"author":{"gitId":"dwangwk"},"content":" // Copy constructor","lastModifiedDate":"2024-03-20"},{"lineNumber":117,"author":{"gitId":"dwangwk"},"content":" public NoteStartupDescriptor(NoteStartupDescriptor toCopy) {","lastModifiedDate":"2024-03-20"},{"lineNumber":118,"author":{"gitId":"dwangwk"},"content":" setNote(toCopy.note);","lastModifiedDate":"2024-03-13"},{"lineNumber":119,"author":{"gitId":"dwangwk"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":120,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":121,"author":{"gitId":"dwangwk"},"content":" public void setNote(Note note) {","lastModifiedDate":"2024-03-13"},{"lineNumber":122,"author":{"gitId":"dwangwk"},"content":" this.note \u003d note;","lastModifiedDate":"2024-03-13"},{"lineNumber":123,"author":{"gitId":"dwangwk"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":124,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":125,"author":{"gitId":"dwangwk"},"content":" public Optional\u003cNote\u003e getNote() {","lastModifiedDate":"2024-03-13"},{"lineNumber":126,"author":{"gitId":"dwangwk"},"content":" return Optional.ofNullable(note);","lastModifiedDate":"2024-03-13"},{"lineNumber":127,"author":{"gitId":"dwangwk"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":128,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":129,"author":{"gitId":"dwangwk"},"content":" // Returns true if the note field is edited.","lastModifiedDate":"2024-03-20"},{"lineNumber":130,"author":{"gitId":"dwangwk"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2024-03-20"},{"lineNumber":131,"author":{"gitId":"dwangwk"},"content":" return note !\u003d null;","lastModifiedDate":"2024-03-20"},{"lineNumber":132,"author":{"gitId":"dwangwk"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":133,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":134,"author":{"gitId":"dwangwk"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":135,"author":{"gitId":"dwangwk"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-13"},{"lineNumber":136,"author":{"gitId":"dwangwk"},"content":" if (this \u003d\u003d other) {","lastModifiedDate":"2024-03-20"},{"lineNumber":137,"author":{"gitId":"dwangwk"},"content":" return true;","lastModifiedDate":"2024-03-13"},{"lineNumber":138,"author":{"gitId":"dwangwk"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":139,"author":{"gitId":"dwangwk"},"content":" if (!(other instanceof NoteStartupDescriptor)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":140,"author":{"gitId":"dwangwk"},"content":" return false;","lastModifiedDate":"2024-03-13"},{"lineNumber":141,"author":{"gitId":"dwangwk"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":142,"author":{"gitId":"dwangwk"},"content":" NoteStartupDescriptor that \u003d (NoteStartupDescriptor) other;","lastModifiedDate":"2024-03-20"},{"lineNumber":143,"author":{"gitId":"dwangwk"},"content":" return Objects.equals(note, that.note);","lastModifiedDate":"2024-03-20"},{"lineNumber":144,"author":{"gitId":"dwangwk"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":145,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":146,"author":{"gitId":"dwangwk"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":147,"author":{"gitId":"dwangwk"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-20"},{"lineNumber":148,"author":{"gitId":"dwangwk"},"content":" return Objects.hash(note);","lastModifiedDate":"2024-03-20"},{"lineNumber":149,"author":{"gitId":"dwangwk"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":150,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":151,"author":{"gitId":"dwangwk"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":152,"author":{"gitId":"dwangwk"},"content":" public String toString() {","lastModifiedDate":"2024-03-13"},{"lineNumber":153,"author":{"gitId":"dwangwk"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-13"},{"lineNumber":154,"author":{"gitId":"dwangwk"},"content":" .add(\"note\", note)","lastModifiedDate":"2024-03-13"},{"lineNumber":155,"author":{"gitId":"dwangwk"},"content":" .toString();","lastModifiedDate":"2024-03-13"},{"lineNumber":156,"author":{"gitId":"dwangwk"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":157,"author":{"gitId":"dwangwk"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":158,"author":{"gitId":"dwangwk"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"dwangwk":136,"menatahari":21,"yeoshuheng":1}},{"path":"src/main/java/seedu/address/logic/parser/AddCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-02-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-02-25"},{"lineNumber":6,"author":{"gitId":"yeoshuheng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FUNDING_STAGE;","lastModifiedDate":"2024-02-25"},{"lineNumber":7,"author":{"gitId":"yeoshuheng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_INDUSTRY;","lastModifiedDate":"2024-02-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-02-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-02-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-02-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-02-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":17,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Address;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Email;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.FundingStage;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Industry;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Name;","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Phone;","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-17"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":37,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":38,"author":{"gitId":"yeoshuheng"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME,","lastModifiedDate":"2024-02-25"},{"lineNumber":39,"author":{"gitId":"yeoshuheng"},"content":" PREFIX_INDUSTRY, PREFIX_FUNDING_STAGE, PREFIX_PHONE,","lastModifiedDate":"2024-02-25"},{"lineNumber":40,"author":{"gitId":"yeoshuheng"},"content":" PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_TAG);","lastModifiedDate":"2024-02-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":42,"author":{"gitId":"yeoshuheng"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_INDUSTRY,","lastModifiedDate":"2024-02-25"},{"lineNumber":43,"author":{"gitId":"yeoshuheng"},"content":" PREFIX_FUNDING_STAGE, PREFIX_ADDRESS,","lastModifiedDate":"2024-02-25"},{"lineNumber":44,"author":{"gitId":"yeoshuheng"},"content":" PREFIX_PHONE, PREFIX_EMAIL)","lastModifiedDate":"2024-02-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":49,"author":{"gitId":"yeoshuheng"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-03-05"},{"lineNumber":50,"author":{"gitId":"yeoshuheng"},"content":" PREFIX_FUNDING_STAGE, PREFIX_INDUSTRY);","lastModifiedDate":"2024-03-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":52,"author":{"gitId":"yeoshuheng"},"content":" FundingStage fundingStage \u003d ParserUtil.parseFundingStage(argMultimap.getValue(PREFIX_FUNDING_STAGE).get());","lastModifiedDate":"2024-02-25"},{"lineNumber":53,"author":{"gitId":"yeoshuheng"},"content":" Industry industry \u003d ParserUtil.parseIndustry(argMultimap.getValue(PREFIX_INDUSTRY).get());","lastModifiedDate":"2024-02-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":55,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":56,"author":{"gitId":"-"},"content":" Address address \u003d ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":57,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2017-03-17"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":59,"author":{"gitId":"menatahari"},"content":" Startup startup \u003d new Startup(name, fundingStage, industry, phone, email, address, tagList);","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":61,"author":{"gitId":"menatahari"},"content":" return new AddCommand(startup);","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":64,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17"},{"lineNumber":65,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17"},{"lineNumber":66,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17"},{"lineNumber":67,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17"},{"lineNumber":68,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":72,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05"}],"authorContributionMap":{"menatahari":9,"-":51,"yeoshuheng":12}},{"path":"src/main/java/seedu/address/logic/parser/AddressBookParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-07-29"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-07-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2017-01-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":20,"author":{"gitId":"dwangwk"},"content":"import seedu.address.logic.commands.NoteCommand;","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":42,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":50,"author":{"gitId":"-"},"content":" // Note to developers: Change the log level in config.json to enable lower level (i.e., FINE, FINER and lower)","lastModifiedDate":"2023-07-29"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":55,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":72,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return new ListCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":78,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26"},{"lineNumber":79,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":81,"author":{"gitId":"dwangwk"},"content":" case NoteCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-13"},{"lineNumber":82,"author":{"gitId":"dwangwk"},"content":" return new NoteCommandParser().parse(arguments);","lastModifiedDate":"2024-03-13"},{"lineNumber":83,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26"},{"lineNumber":85,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29"},{"lineNumber":86,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":90,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"dwangwk":4,"-":86}},{"path":"src/main/java/seedu/address/logic/parser/CliSyntax.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11"},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":" /* Prefix definitions */","lastModifiedDate":"2017-02-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"n/\");","lastModifiedDate":"2017-06-06"},{"lineNumber":10,"author":{"gitId":"yeoshuheng"},"content":" public static final Prefix PREFIX_INDUSTRY \u003d new Prefix(\"i/\");","lastModifiedDate":"2024-02-25"},{"lineNumber":11,"author":{"gitId":"yeoshuheng"},"content":" public static final Prefix PREFIX_FUNDING_STAGE \u003d new Prefix(\"f/\");","lastModifiedDate":"2024-02-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"p/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"e/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":14,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_ADDRESS \u003d new Prefix(\"a/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"t/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"-":15,"yeoshuheng":2}},{"path":"src/main/java/seedu/address/logic/parser/EditCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-01-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-01-26"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-26"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-26"},{"lineNumber":13,"author":{"gitId":"menatahari"},"content":"import seedu.address.logic.commands.EditCommand.EditStartupDescriptor;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new EditCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class EditCommandParser implements Parser\u003cEditCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the EditCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * and returns an EditCommand object for execution.","lastModifiedDate":"2017-01-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public EditCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":28,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2017-05-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":30,"author":{"gitId":"yeoshuheng"},"content":" ArgumentTokenizer.tokenize(args, CliSyntax.PREFIX_NAME,","lastModifiedDate":"2024-02-25"},{"lineNumber":31,"author":{"gitId":"yeoshuheng"},"content":" CliSyntax.PREFIX_INDUSTRY, CliSyntax.PREFIX_FUNDING_STAGE, CliSyntax.PREFIX_PHONE,","lastModifiedDate":"2024-02-25"},{"lineNumber":32,"author":{"gitId":"yeoshuheng"},"content":" CliSyntax.PREFIX_EMAIL, CliSyntax.PREFIX_ADDRESS, CliSyntax.PREFIX_TAG);","lastModifiedDate":"2024-02-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":34,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2017-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2017-06-06"},{"lineNumber":38,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10"},{"lineNumber":39,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2018-08-06"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":42,"author":{"gitId":"yeoshuheng"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(CliSyntax.PREFIX_NAME, CliSyntax.PREFIX_PHONE,","lastModifiedDate":"2024-02-25"},{"lineNumber":43,"author":{"gitId":"yeoshuheng"},"content":" CliSyntax.PREFIX_EMAIL, CliSyntax.PREFIX_ADDRESS);","lastModifiedDate":"2024-02-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":45,"author":{"gitId":"menatahari"},"content":" EditStartupDescriptor editStartupDescriptor \u003d new EditStartupDescriptor();","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":47,"author":{"gitId":"yeoshuheng"},"content":" if (argMultimap.getValue(CliSyntax.PREFIX_NAME).isPresent()) {","lastModifiedDate":"2024-02-25"},{"lineNumber":48,"author":{"gitId":"menatahari"},"content":" editStartupDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(CliSyntax.PREFIX_NAME).get()));","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":50,"author":{"gitId":"yeoshuheng"},"content":" if (argMultimap.getValue(CliSyntax.PREFIX_FUNDING_STAGE).isPresent()) {","lastModifiedDate":"2024-02-25"},{"lineNumber":51,"author":{"gitId":"menatahari"},"content":" editStartupDescriptor.setFundingStage(","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"yeoshuheng"},"content":" ParserUtil.parseFundingStage(argMultimap.getValue(CliSyntax.PREFIX_FUNDING_STAGE).get()));","lastModifiedDate":"2024-02-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":54,"author":{"gitId":"yeoshuheng"},"content":" if (argMultimap.getValue(CliSyntax.PREFIX_INDUSTRY).isPresent()) {","lastModifiedDate":"2024-02-25"},{"lineNumber":55,"author":{"gitId":"menatahari"},"content":" editStartupDescriptor.setIndustry(","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"yeoshuheng"},"content":" ParserUtil.parseIndustry(argMultimap.getValue(CliSyntax.PREFIX_INDUSTRY).get()));","lastModifiedDate":"2024-02-25"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":58,"author":{"gitId":"yeoshuheng"},"content":" if (argMultimap.getValue(CliSyntax.PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2024-02-25"},{"lineNumber":59,"author":{"gitId":"menatahari"},"content":" editStartupDescriptor.setPhone(","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"yeoshuheng"},"content":" ParserUtil.parsePhone(argMultimap.getValue(CliSyntax.PREFIX_PHONE).get()));","lastModifiedDate":"2024-02-25"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":62,"author":{"gitId":"yeoshuheng"},"content":" if (argMultimap.getValue(CliSyntax.PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2024-02-25"},{"lineNumber":63,"author":{"gitId":"menatahari"},"content":" editStartupDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(CliSyntax.PREFIX_EMAIL).get()));","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"yeoshuheng"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":65,"author":{"gitId":"yeoshuheng"},"content":" if (argMultimap.getValue(CliSyntax.PREFIX_ADDRESS).isPresent()) {","lastModifiedDate":"2024-02-25"},{"lineNumber":66,"author":{"gitId":"menatahari"},"content":" editStartupDescriptor.setAddress(ParserUtil.parseAddress(","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"yeoshuheng"},"content":" argMultimap.getValue(CliSyntax.PREFIX_ADDRESS).get()));","lastModifiedDate":"2024-02-25"},{"lineNumber":68,"author":{"gitId":"yeoshuheng"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":69,"author":{"gitId":"menatahari"},"content":" parseTagsForEdit(argMultimap.getAllValues(CliSyntax.PREFIX_TAG)).ifPresent(editStartupDescriptor::setTags);","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":71,"author":{"gitId":"menatahari"},"content":" if (!editStartupDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-03-11"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":75,"author":{"gitId":"menatahari"},"content":" return new EditCommand(index, editStartupDescriptor);","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"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"},{"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"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * {@code Set\u003cTag\u003e} containing zero tags.","lastModifiedDate":"2017-03-07"},{"lineNumber":82,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":83,"author":{"gitId":"-"},"content":" private Optional\u003cSet\u003cTag\u003e\u003e parseTagsForEdit(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assert tags !\u003d null;","lastModifiedDate":"2017-01-26"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":86,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2017-01-26"},{"lineNumber":87,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2017-01-26"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"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"},{"lineNumber":90,"author":{"gitId":"-"},"content":" return Optional.of(ParserUtil.parseTags(tagSet));","lastModifiedDate":"2017-01-26"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":93,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"menatahari":11,"-":65,"yeoshuheng":17}},{"path":"src/main/java/seedu/address/logic/parser/FindCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-01-26"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":7,"author":{"gitId":"yespiggy"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2024-03-15"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-26"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":10,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.FundingStageContainsKeywordsPredicate;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.IndustryContainsKeywordsPredicate;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new FindCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class FindCommandParser implements Parser\u003cFindCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the FindCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * and returns a FindCommand object for execution.","lastModifiedDate":"2019-05-11"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public FindCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":25,"author":{"gitId":"yespiggy"},"content":" FindCommand findCommand \u003d null;","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2017-02-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2017-02-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" throw new ParseException(","lastModifiedDate":"2017-03-11"},{"lineNumber":29,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-01-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":32,"author":{"gitId":"yespiggy"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"yespiggy"},"content":" ArgumentTokenizer.tokenize(args, CliSyntax.PREFIX_NAME,","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"yespiggy"},"content":" CliSyntax.PREFIX_INDUSTRY,","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"yespiggy"},"content":" CliSyntax.PREFIX_FUNDING_STAGE","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"yespiggy"},"content":" );","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"yespiggy"},"content":" String[] nameKeywords \u003d new String[0];","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"yespiggy"},"content":" String[] industryKeywords \u003d new String[0];","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"yespiggy"},"content":" String[] fundingStageKeywords \u003d new String[0];","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"yespiggy"},"content":" if (argMultimap.getValue(CliSyntax.PREFIX_NAME).isPresent()) {","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"yespiggy"},"content":" nameKeywords \u003d argMultimap.getValue(CliSyntax.PREFIX_NAME).get().split(\"\\\\s+\");","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"yespiggy"},"content":" findCommand \u003d new FindCommand(new NameContainsKeywordsPredicate((Arrays.asList(nameKeywords))));","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"yespiggy"},"content":" } else if (argMultimap.getValue(CliSyntax.PREFIX_INDUSTRY).isPresent()) {","lastModifiedDate":"2024-03-15"},{"lineNumber":45,"author":{"gitId":"yespiggy"},"content":" industryKeywords \u003d argMultimap.getValue(CliSyntax.PREFIX_INDUSTRY).get().split(\"\\\\s+\");","lastModifiedDate":"2024-03-14"},{"lineNumber":46,"author":{"gitId":"yespiggy"},"content":" findCommand \u003d new FindCommand(new IndustryContainsKeywordsPredicate((Arrays.asList(industryKeywords))));","lastModifiedDate":"2024-03-14"},{"lineNumber":47,"author":{"gitId":"yespiggy"},"content":" } else if (argMultimap.getValue(CliSyntax.PREFIX_FUNDING_STAGE).isPresent()) {","lastModifiedDate":"2024-03-15"},{"lineNumber":48,"author":{"gitId":"yespiggy"},"content":" fundingStageKeywords \u003d argMultimap.getValue(CliSyntax.PREFIX_FUNDING_STAGE).get().split(\"\\\\s+\");","lastModifiedDate":"2024-03-14"},{"lineNumber":49,"author":{"gitId":"yespiggy"},"content":" findCommand \u003d new FindCommand(","lastModifiedDate":"2024-03-15"},{"lineNumber":50,"author":{"gitId":"yespiggy"},"content":" new FundingStageContainsKeywordsPredicate((Arrays.asList(fundingStageKeywords))));","lastModifiedDate":"2024-03-15"},{"lineNumber":51,"author":{"gitId":"yespiggy"},"content":" } else {","lastModifiedDate":"2024-03-15"},{"lineNumber":52,"author":{"gitId":"yespiggy"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-15"},{"lineNumber":53,"author":{"gitId":"yespiggy"},"content":" EditCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-15"},{"lineNumber":54,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":56,"author":{"gitId":"yespiggy"},"content":" return findCommand;","lastModifiedDate":"2024-03-14"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"menatahari":3,"yespiggy":26,"-":30}},{"path":"src/main/java/seedu/address/logic/parser/NoteCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"dwangwk"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"dwangwk"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"dwangwk"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"dwangwk"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"dwangwk"},"content":"import seedu.address.logic.commands.NoteCommand;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"dwangwk"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Note;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"dwangwk"},"content":"/**","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"dwangwk"},"content":" * Parses input arguments and creates a new NoteCommand object","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"dwangwk"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"dwangwk"},"content":"public class NoteCommandParser implements Parser\u003cNoteCommand\u003e {","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"dwangwk"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"dwangwk"},"content":" * Parses the given {@code String} of arguments in the context of the NoteCommand","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"dwangwk"},"content":" * and returns a NoteCommand object for execution.","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"dwangwk"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"dwangwk"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"dwangwk"},"content":" public NoteCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"dwangwk"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"dwangwk"},"content":" NoteCommand.NoteStartupDescriptor noteStartupDescriptor \u003d new NoteCommand.NoteStartupDescriptor();","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"dwangwk"},"content":" String[] argParts \u003d args.trim().split(\"\\\\s+\", 2); // Split into index and note description","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"dwangwk"},"content":" if (argParts.length !\u003d 2 || !argParts[0].matches(\"\\\\d+\")) {","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"dwangwk"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, NoteCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"dwangwk"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"dwangwk"},"content":" Index index;","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"dwangwk"},"content":" try {","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"dwangwk"},"content":" index \u003d ParserUtil.parseIndex(argParts[0]);","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"dwangwk"},"content":" Note newNote \u003d new Note(argParts[1]);","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"dwangwk"},"content":" noteStartupDescriptor.setNote(newNote);","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"dwangwk"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"dwangwk"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, NoteCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"dwangwk"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"dwangwk"},"content":" return new NoteCommand(index, new NoteCommand.NoteStartupDescriptor(noteStartupDescriptor));","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"dwangwk"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"dwangwk"},"content":"}","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"dwangwk":40,"menatahari":1}},{"path":"src/main/java/seedu/address/logic/parser/ParserUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-02-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-02-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-02-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-02-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10"},{"lineNumber":12,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Address;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Email;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.FundingStage;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Industry;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Name;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Phone;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-02-11"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02"},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2017-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":33,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02"},{"lineNumber":35,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":37,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29"},{"lineNumber":43,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":47,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29"},{"lineNumber":48,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29"},{"lineNumber":49,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":50,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":52,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":55,"author":{"gitId":"yeoshuheng"},"content":" /**","lastModifiedDate":"2024-02-25"},{"lineNumber":56,"author":{"gitId":"yeoshuheng"},"content":" * Parses a {@code String industry} into a {@code Industry}.","lastModifiedDate":"2024-02-25"},{"lineNumber":57,"author":{"gitId":"yeoshuheng"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-02-25"},{"lineNumber":58,"author":{"gitId":"yeoshuheng"},"content":" *","lastModifiedDate":"2024-02-25"},{"lineNumber":59,"author":{"gitId":"yeoshuheng"},"content":" * @throws ParseException if the given {@code industry} is invalid.","lastModifiedDate":"2024-02-25"},{"lineNumber":60,"author":{"gitId":"yeoshuheng"},"content":" */","lastModifiedDate":"2024-02-25"},{"lineNumber":61,"author":{"gitId":"yeoshuheng"},"content":" public static Industry parseIndustry(String industry) throws ParseException {","lastModifiedDate":"2024-02-25"},{"lineNumber":62,"author":{"gitId":"yeoshuheng"},"content":" requireNonNull(industry);","lastModifiedDate":"2024-02-25"},{"lineNumber":63,"author":{"gitId":"yeoshuheng"},"content":" String trimmedIndustry \u003d industry.trim();","lastModifiedDate":"2024-02-25"},{"lineNumber":64,"author":{"gitId":"yeoshuheng"},"content":" if (!Industry.isValidIndustry(trimmedIndustry)) {","lastModifiedDate":"2024-02-25"},{"lineNumber":65,"author":{"gitId":"yeoshuheng"},"content":" throw new ParseException(Industry.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-25"},{"lineNumber":66,"author":{"gitId":"yeoshuheng"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":67,"author":{"gitId":"yeoshuheng"},"content":" return new Industry(trimmedIndustry);","lastModifiedDate":"2024-02-25"},{"lineNumber":68,"author":{"gitId":"yeoshuheng"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":69,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":70,"author":{"gitId":"yeoshuheng"},"content":" /**","lastModifiedDate":"2024-02-25"},{"lineNumber":71,"author":{"gitId":"yeoshuheng"},"content":" * Parses a {@code String fundingLevel} into a {@code FundingStage}.","lastModifiedDate":"2024-02-25"},{"lineNumber":72,"author":{"gitId":"yeoshuheng"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-02-25"},{"lineNumber":73,"author":{"gitId":"yeoshuheng"},"content":" *","lastModifiedDate":"2024-02-25"},{"lineNumber":74,"author":{"gitId":"yeoshuheng"},"content":" * @throws ParseException if the given {@code fundingStage} is invalid.","lastModifiedDate":"2024-02-25"},{"lineNumber":75,"author":{"gitId":"yeoshuheng"},"content":" */","lastModifiedDate":"2024-02-25"},{"lineNumber":76,"author":{"gitId":"yeoshuheng"},"content":" public static FundingStage parseFundingStage(String fundingLevel) throws ParseException {","lastModifiedDate":"2024-02-25"},{"lineNumber":77,"author":{"gitId":"yeoshuheng"},"content":" requireNonNull(fundingLevel);","lastModifiedDate":"2024-02-25"},{"lineNumber":78,"author":{"gitId":"yeoshuheng"},"content":" String trimmedFundingLevel \u003d fundingLevel.trim();","lastModifiedDate":"2024-02-25"},{"lineNumber":79,"author":{"gitId":"yeoshuheng"},"content":" if (!FundingStage.isValidFundingLevel(fundingLevel)) {","lastModifiedDate":"2024-02-25"},{"lineNumber":80,"author":{"gitId":"yeoshuheng"},"content":" throw new ParseException(FundingStage.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-25"},{"lineNumber":81,"author":{"gitId":"yeoshuheng"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":82,"author":{"gitId":"yeoshuheng"},"content":" return new FundingStage(trimmedFundingLevel);","lastModifiedDate":"2024-02-25"},{"lineNumber":83,"author":{"gitId":"yeoshuheng"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":84,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":85,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":86,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":89,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":93,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30"},{"lineNumber":94,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":95,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":96,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":98,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","lastModifiedDate":"2017-05-30"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":101,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":104,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":106,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":108,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-30"},{"lineNumber":109,"author":{"gitId":"-"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":110,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(trimmedAddress)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":111,"author":{"gitId":"-"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":113,"author":{"gitId":"-"},"content":" return new Address(trimmedAddress);","lastModifiedDate":"2017-05-30"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":116,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":117,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30"},{"lineNumber":118,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":119,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":120,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":121,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":122,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":123,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30"},{"lineNumber":124,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":125,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":126,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":128,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","lastModifiedDate":"2017-05-30"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":131,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":132,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30"},{"lineNumber":133,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":134,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":135,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":136,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":137,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":138,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30"},{"lineNumber":139,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":140,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":141,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":143,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","lastModifiedDate":"2017-05-30"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":146,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":147,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2017-03-07"},{"lineNumber":148,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":149,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":150,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15"},{"lineNumber":151,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11"},{"lineNumber":152,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11"},{"lineNumber":153,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":155,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07"},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":157,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"menatahari":6,"-":120,"yeoshuheng":31}},{"path":"src/main/java/seedu/address/model/AddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.UniqueStartupList;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * Wraps all data at the address-book level","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"menatahari"},"content":" * Duplicates are not allowed (by .isSameStartup comparison)","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class AddressBook implements ReadOnlyAddressBook {","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"menatahari"},"content":" private final UniqueStartupList startups;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * The \u0027unusual\u0027 code block below is a non-static initialization block, sometimes used to avoid duplication","lastModifiedDate":"2019-05-11"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * between constructors. See https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html","lastModifiedDate":"2016-10-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Note that non-static init blocks are not recommended to use. There are other ways to avoid duplication","lastModifiedDate":"2016-10-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * among constructors.","lastModifiedDate":"2016-10-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" {","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"menatahari"},"content":" startups \u003d new UniqueStartupList();","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public AddressBook() {}","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"menatahari"},"content":" * Creates an AddressBook using the Startups in the {@code toBeCopied}","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public AddressBook(ReadOnlyAddressBook toBeCopied) {","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" this();","lastModifiedDate":"2016-12-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" resetData(toBeCopied);","lastModifiedDate":"2016-12-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":41,"author":{"gitId":"-"},"content":" //// list overwrite operations","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":44,"author":{"gitId":"menatahari"},"content":" * Replaces the contents of the startup list with {@code startups}.","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"menatahari"},"content":" * {@code startups} must not contain duplicate startups.","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":47,"author":{"gitId":"menatahari"},"content":" public void setStartups(List\u003cStartup\u003e startups) {","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"menatahari"},"content":" this.startups.setStartups(startups);","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Resets the existing data of this {@code AddressBook} with {@code newData}.","lastModifiedDate":"2017-08-16"},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void resetData(ReadOnlyAddressBook newData) {","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":" requireNonNull(newData);","lastModifiedDate":"2017-05-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-20"},{"lineNumber":57,"author":{"gitId":"menatahari"},"content":" setStartups(newData.getStartupList());","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"menatahari"},"content":" //// startup-level operations","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":63,"author":{"gitId":"menatahari"},"content":" * Returns true if a startup with the same identity as {@code startup} exists in the address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":65,"author":{"gitId":"menatahari"},"content":" public boolean hasStartup(Startup startup) {","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"menatahari"},"content":" requireNonNull(startup);","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"menatahari"},"content":" return startups.contains(startup);","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":71,"author":{"gitId":"menatahari"},"content":" * Adds a startup to the address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"menatahari"},"content":" * The startup must not already exist in the address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":74,"author":{"gitId":"menatahari"},"content":" public void addStartup(Startup p) {","lastModifiedDate":"2024-03-19"},{"lineNumber":75,"author":{"gitId":"menatahari"},"content":" startups.add(p);","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":79,"author":{"gitId":"menatahari"},"content":" * Replaces the given startup {@code target} in the list with {@code editedStartup}.","lastModifiedDate":"2024-03-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":81,"author":{"gitId":"menatahari"},"content":" * The startup identity of {@code editedStartup} must not be the same as another existing startup","lastModifiedDate":"2024-03-19"},{"lineNumber":82,"author":{"gitId":"menatahari"},"content":" * in the address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":84,"author":{"gitId":"menatahari"},"content":" public void setStartup(Startup target, Startup editedStartup) {","lastModifiedDate":"2024-03-19"},{"lineNumber":85,"author":{"gitId":"menatahari"},"content":" requireNonNull(editedStartup);","lastModifiedDate":"2024-03-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":87,"author":{"gitId":"menatahari"},"content":" startups.setStartup(target, editedStartup);","lastModifiedDate":"2024-03-19"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":90,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * Removes {@code key} from this {@code AddressBook}.","lastModifiedDate":"2017-08-16"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * {@code key} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":93,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":94,"author":{"gitId":"menatahari"},"content":" public void removeStartup(Startup key) {","lastModifiedDate":"2024-03-19"},{"lineNumber":95,"author":{"gitId":"menatahari"},"content":" startups.remove(key);","lastModifiedDate":"2024-03-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":" //// util methods","lastModifiedDate":"2016-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":103,"author":{"gitId":"menatahari"},"content":" .add(\"startups\", startups)","lastModifiedDate":"2024-03-19"},{"lineNumber":104,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":108,"author":{"gitId":"menatahari"},"content":" public ObservableList\u003cStartup\u003e getStartupList() {","lastModifiedDate":"2024-03-19"},{"lineNumber":109,"author":{"gitId":"menatahari"},"content":" return startups.asUnmodifiableObservableList();","lastModifiedDate":"2024-03-19"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-01"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-01"},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":113,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-21"},{"lineNumber":114,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":119,"author":{"gitId":"-"},"content":" if (!(other instanceof AddressBook)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":123,"author":{"gitId":"-"},"content":" AddressBook otherAddressBook \u003d (AddressBook) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":124,"author":{"gitId":"menatahari"},"content":" return startups.equals(otherAddressBook.startups);","lastModifiedDate":"2024-03-19"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":128,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-21"},{"lineNumber":129,"author":{"gitId":"menatahari"},"content":" return startups.hashCode();","lastModifiedDate":"2024-03-19"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":131,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"menatahari":33,"-":98}},{"path":"src/main/java/seedu/address/model/Model.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":8,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * The API of the Model component.","lastModifiedDate":"2016-09-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public interface Model {","lastModifiedDate":"2016-09-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":" /** {@code Predicate} that always evaluate to true */","lastModifiedDate":"2017-08-05"},{"lineNumber":15,"author":{"gitId":"menatahari"},"content":" Predicate\u003cStartup\u003e PREDICATE_SHOW_ALL_STARTUPS \u003d unused -\u003e true;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Replaces user prefs data with the data in {@code userPrefs}.","lastModifiedDate":"2018-12-06"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":" void setUserPrefs(ReadOnlyUserPrefs userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Returns the user prefs.","lastModifiedDate":"2018-11-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" ReadOnlyUserPrefs getUserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" void setAddressBookFilePath(Path addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Replaces address book data with the data in {@code addressBook}.","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" void setAddressBook(ReadOnlyAddressBook addressBook);","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":52,"author":{"gitId":"-"},"content":" /** Returns the AddressBook */","lastModifiedDate":"2016-09-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2016-09-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":56,"author":{"gitId":"menatahari"},"content":" * Returns true if a startup with the same identity as {@code startup} exists in the address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":58,"author":{"gitId":"menatahari"},"content":" boolean hasStartup(Startup startup);","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":61,"author":{"gitId":"menatahari"},"content":" * Deletes the given startup.","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"menatahari"},"content":" * The startup must exist in the address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":64,"author":{"gitId":"menatahari"},"content":" void deleteStartup(Startup target);","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":66,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":67,"author":{"gitId":"menatahari"},"content":" * Adds the given startup.","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"menatahari"},"content":" * {@code startup} must not already exist in the address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":70,"author":{"gitId":"menatahari"},"content":" void addStartup(Startup startup);","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":73,"author":{"gitId":"menatahari"},"content":" * Replaces the given startup {@code target} with {@code editedStartup}.","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":75,"author":{"gitId":"menatahari"},"content":" * The startup identity of {@code editedStartup} must not be the same as another existing startup","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"menatahari"},"content":" * in the address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":78,"author":{"gitId":"menatahari"},"content":" void setStartup(Startup target, Startup editedStartup);","lastModifiedDate":"2024-03-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":80,"author":{"gitId":"menatahari"},"content":" /** Returns an unmodifiable view of the filtered startup list */","lastModifiedDate":"2024-03-19"},{"lineNumber":81,"author":{"gitId":"menatahari"},"content":" ObservableList\u003cStartup\u003e getFilteredStartupList();","lastModifiedDate":"2024-03-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":83,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-05"},{"lineNumber":84,"author":{"gitId":"menatahari"},"content":" * Updates the filter of the filtered startup list to filter by the given {@code predicate}.","lastModifiedDate":"2024-03-19"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2017-08-05"},{"lineNumber":86,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05"},{"lineNumber":87,"author":{"gitId":"menatahari"},"content":" void updateFilteredStartupList(Predicate\u003cStartup\u003e predicate);","lastModifiedDate":"2024-03-19"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"menatahari":18,"-":70}},{"path":"src/main/java/seedu/address/model/ModelManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-08-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2016-08-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23"},{"lineNumber":14,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Represents the in-memory model of the address book data.","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class ModelManager implements Model {","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ModelManager.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final AddressBook addressBook;","lastModifiedDate":"2019-01-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final UserPrefs userPrefs;","lastModifiedDate":"2018-12-06"},{"lineNumber":24,"author":{"gitId":"menatahari"},"content":" private final FilteredList\u003cStartup\u003e filteredStartups;","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Initializes a ModelManager with the given addressBook and userPrefs.","lastModifiedDate":"2016-12-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public ModelManager(ReadOnlyAddressBook addressBook, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":" requireAllNonNull(addressBook, userPrefs);","lastModifiedDate":"2017-05-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" logger.fine(\"Initializing with address book: \" + addressBook + \" and user prefs \" + userPrefs);","lastModifiedDate":"2016-12-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" this.addressBook \u003d new AddressBook(addressBook);","lastModifiedDate":"2019-01-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":36,"author":{"gitId":"menatahari"},"content":" filteredStartups \u003d new FilteredList\u003c\u003e(this.addressBook.getStartupList());","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public ModelManager() {","lastModifiedDate":"2016-09-22"},{"lineNumber":40,"author":{"gitId":"-"},"content":" this(new AddressBook(), new UserPrefs());","lastModifiedDate":"2016-09-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d UserPrefs \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":47,"author":{"gitId":"-"},"content":" requireNonNull(userPrefs);","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" this.userPrefs.resetData(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return userPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return userPrefs.getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return userPrefs.getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d AddressBook \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook addressBook) {","lastModifiedDate":"2018-11-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" this.addressBook.resetData(addressBook);","lastModifiedDate":"2019-01-25"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2016-09-21"},{"lineNumber":87,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2019-01-25"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":91,"author":{"gitId":"menatahari"},"content":" public boolean hasStartup(Startup startup) {","lastModifiedDate":"2024-03-19"},{"lineNumber":92,"author":{"gitId":"menatahari"},"content":" requireNonNull(startup);","lastModifiedDate":"2024-03-19"},{"lineNumber":93,"author":{"gitId":"menatahari"},"content":" return addressBook.hasStartup(startup);","lastModifiedDate":"2024-03-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":97,"author":{"gitId":"menatahari"},"content":" public void deleteStartup(Startup target) {","lastModifiedDate":"2024-03-19"},{"lineNumber":98,"author":{"gitId":"menatahari"},"content":" addressBook.removeStartup(target);","lastModifiedDate":"2024-03-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":102,"author":{"gitId":"menatahari"},"content":" public void addStartup(Startup startup) {","lastModifiedDate":"2024-03-19"},{"lineNumber":103,"author":{"gitId":"menatahari"},"content":" addressBook.addStartup(startup);","lastModifiedDate":"2024-03-19"},{"lineNumber":104,"author":{"gitId":"menatahari"},"content":" updateFilteredStartupList(PREDICATE_SHOW_ALL_STARTUPS);","lastModifiedDate":"2024-03-19"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-13"},{"lineNumber":108,"author":{"gitId":"menatahari"},"content":" public void setStartup(Startup target, Startup editedStartup) {","lastModifiedDate":"2024-03-19"},{"lineNumber":109,"author":{"gitId":"menatahari"},"content":" requireAllNonNull(target, editedStartup);","lastModifiedDate":"2024-03-19"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":111,"author":{"gitId":"menatahari"},"content":" addressBook.setStartup(target, editedStartup);","lastModifiedDate":"2024-03-19"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":114,"author":{"gitId":"menatahari"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Filtered Startup List Accessors \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-03-19"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19"},{"lineNumber":117,"author":{"gitId":"menatahari"},"content":" * Returns an unmodifiable view of the list of {@code Startup} backed by the internal list of","lastModifiedDate":"2024-03-19"},{"lineNumber":118,"author":{"gitId":"-"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2018-06-11"},{"lineNumber":119,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19"},{"lineNumber":120,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":121,"author":{"gitId":"menatahari"},"content":" public ObservableList\u003cStartup\u003e getFilteredStartupList() {","lastModifiedDate":"2024-03-19"},{"lineNumber":122,"author":{"gitId":"menatahari"},"content":" return filteredStartups;","lastModifiedDate":"2024-03-19"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":125,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":126,"author":{"gitId":"menatahari"},"content":" public void updateFilteredStartupList(Predicate\u003cStartup\u003e predicate) {","lastModifiedDate":"2024-03-19"},{"lineNumber":127,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05"},{"lineNumber":128,"author":{"gitId":"menatahari"},"content":" filteredStartups.setPredicate(predicate);","lastModifiedDate":"2024-03-19"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":131,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-31"},{"lineNumber":132,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13"},{"lineNumber":133,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":134,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":137,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31"},{"lineNumber":138,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":139,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-31"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":142,"author":{"gitId":"-"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":143,"author":{"gitId":"-"},"content":" return addressBook.equals(otherModelManager.addressBook)","lastModifiedDate":"2023-07-13"},{"lineNumber":144,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13"},{"lineNumber":145,"author":{"gitId":"menatahari"},"content":" \u0026\u0026 filteredStartups.equals(otherModelManager.filteredStartups);","lastModifiedDate":"2024-03-19"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":148,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"menatahari":21,"-":127}},{"path":"src/main/java/seedu/address/model/ReadOnlyAddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * Unmodifiable view of an address book","lastModifiedDate":"2016-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public interface ReadOnlyAddressBook {","lastModifiedDate":"2019-01-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"menatahari"},"content":" * Returns an unmodifiable view of the startups list.","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"menatahari"},"content":" * This list will not contain any duplicate startups.","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"menatahari"},"content":" ObservableList\u003cStartup\u003e getStartupList();","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"menatahari":4,"-":13}},{"path":"src/main/java/seedu/address/model/startup/Address.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"menatahari"},"content":"package seedu.address.model.startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"menatahari"},"content":" * Represents a Startup\u0027s address in the address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidAddress(String)}","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Address {","lastModifiedDate":"2016-09-21"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Addresses can take any values, and it should not be blank\";","lastModifiedDate":"2018-09-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":14,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2017-01-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2017-01-16"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2017-01-16"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d \"[^\\\\s].*\";","lastModifiedDate":"2018-09-22"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public final String value;","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Constructs an {@code Address}.","lastModifiedDate":"2017-05-30"},{"lineNumber":24,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * @param address A valid address.","lastModifiedDate":"2017-05-30"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public Address(String address) {","lastModifiedDate":"2017-05-30"},{"lineNumber":28,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":" checkArgument(isValidAddress(address), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":30,"author":{"gitId":"-"},"content":" value \u003d address;","lastModifiedDate":"2018-08-14"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid email.","lastModifiedDate":"2018-04-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static boolean isValidAddress(String test) {","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return value;","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" if (!(other instanceof Address)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" Address otherAddress \u003d (Address) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return value.equals(otherAddress.value);","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return value.hashCode();","lastModifiedDate":"2016-08-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"menatahari":2,"-":63}},{"path":"src/main/java/seedu/address/model/startup/Email.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"menatahari"},"content":"package seedu.address.model.startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"menatahari"},"content":" * Represents a Startup\u0027s email in the address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidEmail(String)}","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Email {","lastModifiedDate":"2016-09-21"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" private static final String SPECIAL_CHARACTERS \u003d \"+_.-\";","lastModifiedDate":"2021-07-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Emails should be of the format local-part@domain \"","lastModifiedDate":"2018-09-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":" + \"and adhere to the following constraints:\\n\"","lastModifiedDate":"2018-02-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":" + \"1. The local-part should only contain alphanumeric characters and these special characters, excluding \"","lastModifiedDate":"2018-02-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":" + \"the parentheses, (\" + SPECIAL_CHARACTERS + \"). The local-part may not start or end with any special \"","lastModifiedDate":"2021-07-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":" + \"characters.\\n\"","lastModifiedDate":"2021-07-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":" + \"2. This is followed by a \u0027@\u0027 and then a domain name. The domain name is made up of domain labels \"","lastModifiedDate":"2021-07-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":" + \"separated by periods.\\n\"","lastModifiedDate":"2021-07-20"},{"lineNumber":20,"author":{"gitId":"-"},"content":" + \"The domain name must:\\n\"","lastModifiedDate":"2018-02-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":" + \" - end with a domain label at least 2 characters long\\n\"","lastModifiedDate":"2021-07-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":" + \" - have each domain label start and end with alphanumeric characters\\n\"","lastModifiedDate":"2021-07-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":" + \" - have each domain label consist of alphanumeric characters, separated only by hyphens, if any.\";","lastModifiedDate":"2021-07-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // alphanumeric and special characters","lastModifiedDate":"2018-02-09"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String ALPHANUMERIC_NO_UNDERSCORE \u003d \"[^\\\\W_]+\"; // alphanumeric characters except underscore","lastModifiedDate":"2021-07-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String LOCAL_PART_REGEX \u003d \"^\" + ALPHANUMERIC_NO_UNDERSCORE + \"([\" + SPECIAL_CHARACTERS + \"]\"","lastModifiedDate":"2021-07-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" + ALPHANUMERIC_NO_UNDERSCORE + \")*\";","lastModifiedDate":"2021-07-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String DOMAIN_PART_REGEX \u003d ALPHANUMERIC_NO_UNDERSCORE","lastModifiedDate":"2021-07-20"},{"lineNumber":29,"author":{"gitId":"-"},"content":" + \"(-\" + ALPHANUMERIC_NO_UNDERSCORE + \")*\";","lastModifiedDate":"2021-07-20"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String DOMAIN_LAST_PART_REGEX \u003d \"(\" + DOMAIN_PART_REGEX + \"){2,}$\"; // At least two chars","lastModifiedDate":"2021-07-20"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String DOMAIN_REGEX \u003d \"(\" + DOMAIN_PART_REGEX + \"\\\\.)*\" + DOMAIN_LAST_PART_REGEX;","lastModifiedDate":"2021-07-20"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d LOCAL_PART_REGEX + \"@\" + DOMAIN_REGEX;","lastModifiedDate":"2021-07-20"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public final String value;","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Constructs an {@code Email}.","lastModifiedDate":"2017-05-30"},{"lineNumber":38,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * @param email A valid email address.","lastModifiedDate":"2017-05-30"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public Email(String email) {","lastModifiedDate":"2017-05-30"},{"lineNumber":42,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":" checkArgument(isValidEmail(email), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":44,"author":{"gitId":"-"},"content":" value \u003d email;","lastModifiedDate":"2018-08-14"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Returns if a given string is a valid email.","lastModifiedDate":"2018-04-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static boolean isValidEmail(String test) {","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" return value;","lastModifiedDate":"2016-08-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" if (!(other instanceof Email)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" Email otherEmail \u003d (Email) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return value.equals(otherEmail.value);","lastModifiedDate":"2023-07-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return value.hashCode();","lastModifiedDate":"2016-08-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"menatahari":2,"-":77}},{"path":"src/main/java/seedu/address/model/startup/FundingStage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"menatahari"},"content":"package seedu.address.model.startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":3,"author":{"gitId":"yeoshuheng"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-02-25"},{"lineNumber":4,"author":{"gitId":"yeoshuheng"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-02-25"},{"lineNumber":5,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":6,"author":{"gitId":"yeoshuheng"},"content":"/**","lastModifiedDate":"2024-02-25"},{"lineNumber":7,"author":{"gitId":"yeoshuheng"},"content":" * Represents funding stage of current project.","lastModifiedDate":"2024-02-25"},{"lineNumber":8,"author":{"gitId":"yeoshuheng"},"content":" */","lastModifiedDate":"2024-02-25"},{"lineNumber":9,"author":{"gitId":"yeoshuheng"},"content":"public class FundingStage {","lastModifiedDate":"2024-02-25"},{"lineNumber":10,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":11,"author":{"gitId":"yeoshuheng"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-02-25"},{"lineNumber":12,"author":{"gitId":"yeoshuheng"},"content":" \"Funding stages should be either \u0027A\u0027, \u0027B\u0027, \u0027S\u0027, \u0027PS\u0027 or \u0027C\u0027.\";","lastModifiedDate":"2024-03-15"},{"lineNumber":13,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":14,"author":{"gitId":"yeoshuheng"},"content":" public final String value;","lastModifiedDate":"2024-02-25"},{"lineNumber":15,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":16,"author":{"gitId":"yeoshuheng"},"content":" /**","lastModifiedDate":"2024-02-25"},{"lineNumber":17,"author":{"gitId":"yeoshuheng"},"content":" * Constructor for a funding stage.","lastModifiedDate":"2024-02-25"},{"lineNumber":18,"author":{"gitId":"yeoshuheng"},"content":" * @param fundingLevel The funding level (A, B, C) of the current stage.","lastModifiedDate":"2024-02-25"},{"lineNumber":19,"author":{"gitId":"yeoshuheng"},"content":" */","lastModifiedDate":"2024-02-25"},{"lineNumber":20,"author":{"gitId":"yeoshuheng"},"content":" public FundingStage(String fundingLevel) {","lastModifiedDate":"2024-02-25"},{"lineNumber":21,"author":{"gitId":"yeoshuheng"},"content":" requireNonNull(fundingLevel);","lastModifiedDate":"2024-02-25"},{"lineNumber":22,"author":{"gitId":"yeoshuheng"},"content":" fundingLevel \u003d fundingLevel.toUpperCase();","lastModifiedDate":"2024-02-25"},{"lineNumber":23,"author":{"gitId":"yeoshuheng"},"content":" checkArgument(isValidFundingLevel(fundingLevel), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-25"},{"lineNumber":24,"author":{"gitId":"yeoshuheng"},"content":" value \u003d fundingLevel;","lastModifiedDate":"2024-02-25"},{"lineNumber":25,"author":{"gitId":"yeoshuheng"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":26,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":27,"author":{"gitId":"yeoshuheng"},"content":" /**","lastModifiedDate":"2024-02-25"},{"lineNumber":28,"author":{"gitId":"yeoshuheng"},"content":" * Returns true if a given industry is a valid industry.","lastModifiedDate":"2024-02-25"},{"lineNumber":29,"author":{"gitId":"yeoshuheng"},"content":" */","lastModifiedDate":"2024-02-25"},{"lineNumber":30,"author":{"gitId":"yeoshuheng"},"content":" public static boolean isValidFundingLevel(String fundingLevel) {","lastModifiedDate":"2024-02-25"},{"lineNumber":31,"author":{"gitId":"yeoshuheng"},"content":" fundingLevel \u003d fundingLevel.toUpperCase();","lastModifiedDate":"2024-03-15"},{"lineNumber":32,"author":{"gitId":"yeoshuheng"},"content":" return fundingLevel.equals(\"A\") || fundingLevel.equals(\"B\") || fundingLevel.equals(\"C\")","lastModifiedDate":"2024-03-15"},{"lineNumber":33,"author":{"gitId":"yeoshuheng"},"content":" || fundingLevel.equals(\"S\") || fundingLevel.equals(\"PS\");","lastModifiedDate":"2024-03-15"},{"lineNumber":34,"author":{"gitId":"yeoshuheng"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":35,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":36,"author":{"gitId":"yeoshuheng"},"content":" @Override","lastModifiedDate":"2024-02-25"},{"lineNumber":37,"author":{"gitId":"yeoshuheng"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-02-25"},{"lineNumber":38,"author":{"gitId":"yeoshuheng"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-02-25"},{"lineNumber":39,"author":{"gitId":"yeoshuheng"},"content":" return true;","lastModifiedDate":"2024-02-25"},{"lineNumber":40,"author":{"gitId":"yeoshuheng"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":41,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":42,"author":{"gitId":"yeoshuheng"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-02-25"},{"lineNumber":43,"author":{"gitId":"yeoshuheng"},"content":" if (!(other instanceof FundingStage)) {","lastModifiedDate":"2024-02-25"},{"lineNumber":44,"author":{"gitId":"yeoshuheng"},"content":" return false;","lastModifiedDate":"2024-02-25"},{"lineNumber":45,"author":{"gitId":"yeoshuheng"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":46,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":47,"author":{"gitId":"yeoshuheng"},"content":" FundingStage otherFundingStage \u003d (FundingStage) other;","lastModifiedDate":"2024-02-25"},{"lineNumber":48,"author":{"gitId":"yeoshuheng"},"content":" return value.equals(otherFundingStage.value);","lastModifiedDate":"2024-02-25"},{"lineNumber":49,"author":{"gitId":"yeoshuheng"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":50,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":51,"author":{"gitId":"yeoshuheng"},"content":" @Override","lastModifiedDate":"2024-02-25"},{"lineNumber":52,"author":{"gitId":"yeoshuheng"},"content":" public String toString() {","lastModifiedDate":"2024-02-25"},{"lineNumber":53,"author":{"gitId":"yeoshuheng"},"content":" return this.value;","lastModifiedDate":"2024-02-25"},{"lineNumber":54,"author":{"gitId":"yeoshuheng"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":55,"author":{"gitId":"yeoshuheng"},"content":"}","lastModifiedDate":"2024-02-25"}],"authorContributionMap":{"menatahari":1,"yeoshuheng":54}},{"path":"src/main/java/seedu/address/model/startup/FundingStageContainsKeywordsPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"menatahari"},"content":"package seedu.address.model.startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"yespiggy"},"content":"import java.util.List;","lastModifiedDate":"2024-03-15"},{"lineNumber":4,"author":{"gitId":"yespiggy"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-15"},{"lineNumber":5,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":6,"author":{"gitId":"yespiggy"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"yespiggy"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"yespiggy"},"content":"/**","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"menatahari"},"content":" * Tests that a {@code Startup}\u0027s {@code FundingStage} matches any of the keywords given.","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"yespiggy"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"menatahari"},"content":"public class FundingStageContainsKeywordsPredicate implements Predicate\u003cStartup\u003e {","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"yespiggy"},"content":" private final List\u003cString\u003e keywords;","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"yespiggy"},"content":" public FundingStageContainsKeywordsPredicate(List\u003cString\u003e keywords) {","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"yespiggy"},"content":" this.keywords \u003d keywords;","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"yespiggy"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"menatahari"},"content":" public boolean test(Startup startup) {","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"yespiggy"},"content":" return keywords.stream()","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"menatahari"},"content":" .anyMatch(keyword -\u003e StringUtil.containsWordIgnoreCase(startup.getFundingStage().value, keyword));","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"yespiggy"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"yespiggy"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"yespiggy"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"yespiggy"},"content":" return true;","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"yespiggy"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"yespiggy"},"content":" if (!(other instanceof FundingStageContainsKeywordsPredicate)) {","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"yespiggy"},"content":" return false;","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"yespiggy"},"content":" FundingStageContainsKeywordsPredicate otherFundingStageContainsKeywordsPredicate \u003d","lastModifiedDate":"2024-03-15"},{"lineNumber":38,"author":{"gitId":"yespiggy"},"content":" (FundingStageContainsKeywordsPredicate) other;","lastModifiedDate":"2024-03-15"},{"lineNumber":39,"author":{"gitId":"yespiggy"},"content":" return keywords.equals(otherFundingStageContainsKeywordsPredicate.keywords);","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"yespiggy"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"yespiggy"},"content":" public String toString() {","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"yespiggy"},"content":" return new ToStringBuilder(this).add(\"keywords\", keywords).toString();","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":46,"author":{"gitId":"yespiggy"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"menatahari":5,"yespiggy":41}},{"path":"src/main/java/seedu/address/model/startup/Industry.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"menatahari"},"content":"package seedu.address.model.startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":3,"author":{"gitId":"yeoshuheng"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-02-25"},{"lineNumber":4,"author":{"gitId":"yeoshuheng"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-02-25"},{"lineNumber":5,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":6,"author":{"gitId":"yeoshuheng"},"content":"/**","lastModifiedDate":"2024-02-25"},{"lineNumber":7,"author":{"gitId":"menatahari"},"content":" * Represents industry startup is from.","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"yeoshuheng"},"content":" */","lastModifiedDate":"2024-02-25"},{"lineNumber":9,"author":{"gitId":"yeoshuheng"},"content":"public class Industry {","lastModifiedDate":"2024-02-25"},{"lineNumber":10,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":11,"author":{"gitId":"yeoshuheng"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-02-25"},{"lineNumber":12,"author":{"gitId":"yeoshuheng"},"content":" \"Industry names should only contain alphanumeric characters and spaces, and it should not be blank\";","lastModifiedDate":"2024-02-25"},{"lineNumber":13,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":14,"author":{"gitId":"yeoshuheng"},"content":" /*","lastModifiedDate":"2024-02-25"},{"lineNumber":15,"author":{"gitId":"yeoshuheng"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2024-02-25"},{"lineNumber":16,"author":{"gitId":"yeoshuheng"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2024-02-25"},{"lineNumber":17,"author":{"gitId":"yeoshuheng"},"content":" */","lastModifiedDate":"2024-02-25"},{"lineNumber":18,"author":{"gitId":"yeoshuheng"},"content":" public static final String VALIDATION_REGEX \u003d \"[\\\\p{Alnum}][\\\\p{Alnum} ]*\";","lastModifiedDate":"2024-02-25"},{"lineNumber":19,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":20,"author":{"gitId":"yeoshuheng"},"content":" public final String value;","lastModifiedDate":"2024-02-25"},{"lineNumber":21,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":22,"author":{"gitId":"yeoshuheng"},"content":" /**","lastModifiedDate":"2024-02-25"},{"lineNumber":23,"author":{"gitId":"yeoshuheng"},"content":" * Constructor for an industry.","lastModifiedDate":"2024-02-25"},{"lineNumber":24,"author":{"gitId":"yeoshuheng"},"content":" * @param industry Name of the industry.","lastModifiedDate":"2024-02-25"},{"lineNumber":25,"author":{"gitId":"yeoshuheng"},"content":" */","lastModifiedDate":"2024-02-25"},{"lineNumber":26,"author":{"gitId":"yeoshuheng"},"content":" public Industry(String industry) {","lastModifiedDate":"2024-02-25"},{"lineNumber":27,"author":{"gitId":"yeoshuheng"},"content":" requireNonNull(industry);","lastModifiedDate":"2024-02-25"},{"lineNumber":28,"author":{"gitId":"yeoshuheng"},"content":" checkArgument(isValidIndustry(industry), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-25"},{"lineNumber":29,"author":{"gitId":"yeoshuheng"},"content":" value \u003d industry.toUpperCase();","lastModifiedDate":"2024-02-25"},{"lineNumber":30,"author":{"gitId":"yeoshuheng"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":31,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":32,"author":{"gitId":"yeoshuheng"},"content":" /**","lastModifiedDate":"2024-02-25"},{"lineNumber":33,"author":{"gitId":"yeoshuheng"},"content":" * Returns true if a given industry is a valid industry.","lastModifiedDate":"2024-02-25"},{"lineNumber":34,"author":{"gitId":"yeoshuheng"},"content":" */","lastModifiedDate":"2024-02-25"},{"lineNumber":35,"author":{"gitId":"yeoshuheng"},"content":" public static boolean isValidIndustry(String test) {","lastModifiedDate":"2024-02-25"},{"lineNumber":36,"author":{"gitId":"yeoshuheng"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-02-25"},{"lineNumber":37,"author":{"gitId":"yeoshuheng"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":38,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":39,"author":{"gitId":"yeoshuheng"},"content":" @Override","lastModifiedDate":"2024-02-25"},{"lineNumber":40,"author":{"gitId":"yeoshuheng"},"content":" public String toString() {","lastModifiedDate":"2024-02-25"},{"lineNumber":41,"author":{"gitId":"yeoshuheng"},"content":" return this.value;","lastModifiedDate":"2024-02-25"},{"lineNumber":42,"author":{"gitId":"yeoshuheng"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":43,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":44,"author":{"gitId":"yeoshuheng"},"content":" @Override","lastModifiedDate":"2024-02-25"},{"lineNumber":45,"author":{"gitId":"yeoshuheng"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-02-25"},{"lineNumber":46,"author":{"gitId":"yeoshuheng"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-02-25"},{"lineNumber":47,"author":{"gitId":"yeoshuheng"},"content":" return true;","lastModifiedDate":"2024-02-25"},{"lineNumber":48,"author":{"gitId":"yeoshuheng"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":49,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":50,"author":{"gitId":"yeoshuheng"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-02-25"},{"lineNumber":51,"author":{"gitId":"yeoshuheng"},"content":" if (!(other instanceof Industry)) {","lastModifiedDate":"2024-02-25"},{"lineNumber":52,"author":{"gitId":"yeoshuheng"},"content":" return false;","lastModifiedDate":"2024-02-25"},{"lineNumber":53,"author":{"gitId":"yeoshuheng"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":54,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":55,"author":{"gitId":"yeoshuheng"},"content":" Industry otherIndustry \u003d (Industry) other;","lastModifiedDate":"2024-02-25"},{"lineNumber":56,"author":{"gitId":"yeoshuheng"},"content":" return value.equals(otherIndustry.value);","lastModifiedDate":"2024-02-25"},{"lineNumber":57,"author":{"gitId":"yeoshuheng"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":58,"author":{"gitId":"yeoshuheng"},"content":"}","lastModifiedDate":"2024-02-25"}],"authorContributionMap":{"menatahari":2,"yeoshuheng":56}},{"path":"src/main/java/seedu/address/model/startup/IndustryContainsKeywordsPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"menatahari"},"content":"package seedu.address.model.startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"yespiggy"},"content":"import java.util.List;","lastModifiedDate":"2024-03-15"},{"lineNumber":4,"author":{"gitId":"yespiggy"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-15"},{"lineNumber":5,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":6,"author":{"gitId":"yespiggy"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"yespiggy"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":10,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"yespiggy"},"content":"/**","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"yespiggy"},"content":" * Tests that a {@code Startup}\u0027s {@code Industry} matches any of the keywords given.","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"yespiggy"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"menatahari"},"content":"public class IndustryContainsKeywordsPredicate implements Predicate\u003cStartup\u003e {","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"yespiggy"},"content":" private final List\u003cString\u003e keywords;","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"yespiggy"},"content":" public IndustryContainsKeywordsPredicate(List\u003cString\u003e keywords) {","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"yespiggy"},"content":" this.keywords \u003d keywords;","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"yespiggy"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"menatahari"},"content":" public boolean test(Startup startup) {","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"yespiggy"},"content":" return keywords.stream()","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"menatahari"},"content":" .anyMatch(keyword -\u003e StringUtil.containsWordIgnoreCase(startup.getIndustry().value, keyword));","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"yespiggy"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"yespiggy"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"yespiggy"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"yespiggy"},"content":" return true;","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"yespiggy"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"yespiggy"},"content":" if (!(other instanceof IndustryContainsKeywordsPredicate)) {","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"yespiggy"},"content":" return false;","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"yespiggy"},"content":" IndustryContainsKeywordsPredicate otherIndustryContainsKeywordsPredicate \u003d","lastModifiedDate":"2024-03-15"},{"lineNumber":39,"author":{"gitId":"yespiggy"},"content":" (IndustryContainsKeywordsPredicate) other;","lastModifiedDate":"2024-03-15"},{"lineNumber":40,"author":{"gitId":"yespiggy"},"content":" return keywords.equals(otherIndustryContainsKeywordsPredicate.keywords);","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"yespiggy"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"yespiggy"},"content":" public String toString() {","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"yespiggy"},"content":" return new ToStringBuilder(this).add(\"keywords\", keywords).toString();","lastModifiedDate":"2024-03-14"},{"lineNumber":46,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":47,"author":{"gitId":"yespiggy"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"menatahari":4,"yespiggy":43}},{"path":"src/main/java/seedu/address/model/startup/Name.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"menatahari"},"content":"package seedu.address.model.startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"menatahari"},"content":" * Represents a Startup\u0027s name in the address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidName(String)}","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Name {","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2018-09-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \"Names should only contain alphanumeric characters and spaces, and it should not be blank\";","lastModifiedDate":"2018-04-04"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2017-01-16"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2017-01-16"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2017-01-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d \"[\\\\p{Alnum}][\\\\p{Alnum} ]*\";","lastModifiedDate":"2018-09-22"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public final String fullName;","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Constructs a {@code Name}.","lastModifiedDate":"2017-05-30"},{"lineNumber":25,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * @param name A valid name.","lastModifiedDate":"2017-05-30"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public Name(String name) {","lastModifiedDate":"2017-05-30"},{"lineNumber":29,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":" checkArgument(isValidName(name), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":31,"author":{"gitId":"-"},"content":" fullName \u003d name;","lastModifiedDate":"2018-08-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid name.","lastModifiedDate":"2018-04-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static boolean isValidName(String test) {","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" return fullName;","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (!(other instanceof Name)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" Name otherName \u003d (Name) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return fullName.equals(otherName.fullName);","lastModifiedDate":"2023-07-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return fullName.hashCode();","lastModifiedDate":"2016-08-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"menatahari":2,"-":65}},{"path":"src/main/java/seedu/address/model/startup/NameContainsKeywordsPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"menatahari"},"content":"package seedu.address.model.startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-06-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":10,"author":{"gitId":"menatahari"},"content":" * Tests that a {@code Startup}\u0027s {@code Name} matches any of the keywords given.","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":12,"author":{"gitId":"menatahari"},"content":"public class NameContainsKeywordsPredicate implements Predicate\u003cStartup\u003e {","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":" private final List\u003cString\u003e keywords;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public NameContainsKeywordsPredicate(List\u003cString\u003e keywords) {","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":" this.keywords \u003d keywords;","lastModifiedDate":"2017-06-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"menatahari"},"content":" public boolean test(Startup startup) {","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":" return keywords.stream()","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"menatahari"},"content":" .anyMatch(keyword -\u003e StringUtil.containsWordIgnoreCase(startup.getName().fullName, keyword));","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" if (!(other instanceof NameContainsKeywordsPredicate)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate otherNameContainsKeywordsPredicate \u003d (NameContainsKeywordsPredicate) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" return keywords.equals(otherNameContainsKeywordsPredicate.keywords);","lastModifiedDate":"2023-07-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this).add(\"keywords\", keywords).toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"menatahari":5,"-":39}},{"path":"src/main/java/seedu/address/model/startup/Note.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"menatahari"},"content":"package seedu.address.model.startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"dwangwk"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"dwangwk"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"dwangwk"},"content":"/**","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"dwangwk"},"content":" * Represents a Note of a Startup in the address book.","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"dwangwk"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidNote(String)}","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"dwangwk"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"dwangwk"},"content":"public class Note {","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"dwangwk"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Notes can take any values, and it should not be blank\";","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"dwangwk"},"content":" /*","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"dwangwk"},"content":" * The first character of the note must not be a whitespace,","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"dwangwk"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"dwangwk"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"dwangwk"},"content":" public static final String VALIDATION_REGEX \u003d \"[^\\\\s].*\";","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"dwangwk"},"content":" public final String value;","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"dwangwk"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"dwangwk"},"content":" * Constructs an {@code Note}.","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"dwangwk"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"dwangwk"},"content":" * @param note A valid note.","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"dwangwk"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"dwangwk"},"content":" public Note(String note) {","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"dwangwk"},"content":" requireNonNull(note);","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"dwangwk"},"content":" checkArgument(isValidNote(note), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"dwangwk"},"content":" value \u003d note;","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"dwangwk"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"dwangwk"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"dwangwk"},"content":" * Returns true if a given string is a valid email.","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"dwangwk"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"dwangwk"},"content":" public static boolean isValidNote(String test) {","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"dwangwk"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"dwangwk"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"dwangwk"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"dwangwk"},"content":" public String toString() {","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"dwangwk"},"content":" return value;","lastModifiedDate":"2024-03-13"},{"lineNumber":43,"author":{"gitId":"dwangwk"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":44,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"dwangwk"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"dwangwk"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"dwangwk"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-13"},{"lineNumber":48,"author":{"gitId":"dwangwk"},"content":" return true;","lastModifiedDate":"2024-03-13"},{"lineNumber":49,"author":{"gitId":"dwangwk"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":50,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":51,"author":{"gitId":"dwangwk"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-13"},{"lineNumber":52,"author":{"gitId":"dwangwk"},"content":" if (!(other instanceof Note)) {","lastModifiedDate":"2024-03-13"},{"lineNumber":53,"author":{"gitId":"dwangwk"},"content":" return false;","lastModifiedDate":"2024-03-13"},{"lineNumber":54,"author":{"gitId":"dwangwk"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":55,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":56,"author":{"gitId":"dwangwk"},"content":" Note otherNote \u003d (Note) other;","lastModifiedDate":"2024-03-13"},{"lineNumber":57,"author":{"gitId":"dwangwk"},"content":" return value.equals(otherNote.value);","lastModifiedDate":"2024-03-13"},{"lineNumber":58,"author":{"gitId":"dwangwk"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":59,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":60,"author":{"gitId":"dwangwk"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":61,"author":{"gitId":"dwangwk"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-13"},{"lineNumber":62,"author":{"gitId":"dwangwk"},"content":" return value.hashCode();","lastModifiedDate":"2024-03-13"},{"lineNumber":63,"author":{"gitId":"dwangwk"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":64,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":65,"author":{"gitId":"dwangwk"},"content":"}","lastModifiedDate":"2024-03-13"},{"lineNumber":66,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"dwangwk":65,"menatahari":1}},{"path":"src/main/java/seedu/address/model/startup/Phone.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"menatahari"},"content":"package seedu.address.model.startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"menatahari"},"content":" * Represents a Startup\u0027s phone number in the address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidPhone(String)}","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Phone {","lastModifiedDate":"2016-09-21"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2018-09-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \"Phone numbers should only contain numbers, and it should be at least 3 digits long\";","lastModifiedDate":"2018-04-04"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d \"\\\\d{3,}\";","lastModifiedDate":"2018-09-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public final String value;","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Constructs a {@code Phone}.","lastModifiedDate":"2017-05-30"},{"lineNumber":20,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * @param phone A valid phone number.","lastModifiedDate":"2017-05-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public Phone(String phone) {","lastModifiedDate":"2017-05-30"},{"lineNumber":24,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" checkArgument(isValidPhone(phone), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":26,"author":{"gitId":"-"},"content":" value \u003d phone;","lastModifiedDate":"2018-08-14"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid phone number.","lastModifiedDate":"2018-04-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static boolean isValidPhone(String test) {","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" return value;","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" if (!(other instanceof Phone)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" Phone otherPhone \u003d (Phone) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return value.equals(otherPhone.value);","lastModifiedDate":"2023-07-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return value.hashCode();","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"menatahari":2,"-":59}},{"path":"src/main/java/seedu/address/model/startup/Startup.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"menatahari"},"content":"package seedu.address.model.startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-03-07"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-03-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"menatahari"},"content":" * Represents a Startup in the address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2017-12-20"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"menatahari"},"content":"public class Startup {","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private final Phone phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final Email email;","lastModifiedDate":"2017-12-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19"},{"lineNumber":25,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":26,"author":{"gitId":"yeoshuheng"},"content":" private final FundingStage fundingStage;","lastModifiedDate":"2024-02-25"},{"lineNumber":27,"author":{"gitId":"yeoshuheng"},"content":" private final Industry industry;","lastModifiedDate":"2024-02-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final Address address;","lastModifiedDate":"2018-04-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private final Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26"},{"lineNumber":30,"author":{"gitId":"dwangwk"},"content":" private final Note note;","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"menatahari"},"content":" public Startup(Name name, FundingStage fundingStage, Industry industry,","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"yeoshuheng"},"content":" Phone phone, Email email, Address address, Set\u003cTag\u003e tags) {","lastModifiedDate":"2024-02-25"},{"lineNumber":37,"author":{"gitId":"yeoshuheng"},"content":" requireAllNonNull(name, fundingStage, industry, phone, email, address, tags);","lastModifiedDate":"2024-02-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20"},{"lineNumber":39,"author":{"gitId":"yeoshuheng"},"content":" this.fundingStage \u003d fundingStage;","lastModifiedDate":"2024-02-25"},{"lineNumber":40,"author":{"gitId":"yeoshuheng"},"content":" this.industry \u003d industry;","lastModifiedDate":"2024-02-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20"},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-12-20"},{"lineNumber":44,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":45,"author":{"gitId":"dwangwk"},"content":" this.note \u003d new Note(\"Add a note!\");","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"dwangwk"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":48,"author":{"gitId":"dwangwk"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":49,"author":{"gitId":"dwangwk"},"content":" * Every field must be present and not null.","lastModifiedDate":"2024-03-13"},{"lineNumber":50,"author":{"gitId":"dwangwk"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":51,"author":{"gitId":"menatahari"},"content":" public Startup(Name name, FundingStage fundingStage, Industry industry,","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"dwangwk"},"content":" Phone phone, Email email, Address address, Set\u003cTag\u003e tags, Note note) {","lastModifiedDate":"2024-03-13"},{"lineNumber":53,"author":{"gitId":"dwangwk"},"content":" requireAllNonNull(name, fundingStage, industry, phone, email, address, tags);","lastModifiedDate":"2024-03-13"},{"lineNumber":54,"author":{"gitId":"dwangwk"},"content":" this.name \u003d name;","lastModifiedDate":"2024-03-13"},{"lineNumber":55,"author":{"gitId":"dwangwk"},"content":" this.fundingStage \u003d fundingStage;","lastModifiedDate":"2024-03-13"},{"lineNumber":56,"author":{"gitId":"dwangwk"},"content":" this.industry \u003d industry;","lastModifiedDate":"2024-03-13"},{"lineNumber":57,"author":{"gitId":"dwangwk"},"content":" this.phone \u003d phone;","lastModifiedDate":"2024-03-13"},{"lineNumber":58,"author":{"gitId":"dwangwk"},"content":" this.email \u003d email;","lastModifiedDate":"2024-03-13"},{"lineNumber":59,"author":{"gitId":"dwangwk"},"content":" this.address \u003d address;","lastModifiedDate":"2024-03-13"},{"lineNumber":60,"author":{"gitId":"dwangwk"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2024-03-13"},{"lineNumber":61,"author":{"gitId":"dwangwk"},"content":" this.note \u003d note;","lastModifiedDate":"2024-03-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":64,"author":{"gitId":"yeoshuheng"},"content":" public FundingStage getFundingStage() {","lastModifiedDate":"2024-02-25"},{"lineNumber":65,"author":{"gitId":"yeoshuheng"},"content":" return this.fundingStage;","lastModifiedDate":"2024-02-25"},{"lineNumber":66,"author":{"gitId":"yeoshuheng"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":67,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":68,"author":{"gitId":"yeoshuheng"},"content":" public Industry getIndustry() {","lastModifiedDate":"2024-02-25"},{"lineNumber":69,"author":{"gitId":"yeoshuheng"},"content":" return this.industry;","lastModifiedDate":"2024-02-25"},{"lineNumber":70,"author":{"gitId":"yeoshuheng"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":71,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2017-07-12"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12"},{"lineNumber":81,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2017-12-20"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public Address getAddress() {","lastModifiedDate":"2017-07-12"},{"lineNumber":85,"author":{"gitId":"-"},"content":" return address;","lastModifiedDate":"2017-12-20"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":88,"author":{"gitId":"dwangwk"},"content":" public Note getNote() {","lastModifiedDate":"2024-03-13"},{"lineNumber":89,"author":{"gitId":"dwangwk"},"content":" return note;","lastModifiedDate":"2024-03-13"},{"lineNumber":90,"author":{"gitId":"dwangwk"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":91,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07"},{"lineNumber":95,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07"},{"lineNumber":96,"author":{"gitId":"-"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":97,"author":{"gitId":"-"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":100,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":101,"author":{"gitId":"menatahari"},"content":" * Returns true if both startups have the same name.","lastModifiedDate":"2024-03-19"},{"lineNumber":102,"author":{"gitId":"menatahari"},"content":" * This defines a weaker notion of equality between two startups.","lastModifiedDate":"2024-03-19"},{"lineNumber":103,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":104,"author":{"gitId":"menatahari"},"content":" public boolean isSameStartup(Startup otherStartup) {","lastModifiedDate":"2024-03-19"},{"lineNumber":105,"author":{"gitId":"menatahari"},"content":" if (otherStartup \u003d\u003d this) {","lastModifiedDate":"2024-03-19"},{"lineNumber":106,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":109,"author":{"gitId":"menatahari"},"content":" return otherStartup !\u003d null","lastModifiedDate":"2024-03-19"},{"lineNumber":110,"author":{"gitId":"menatahari"},"content":" \u0026\u0026 otherStartup.getName().equals(getName());","lastModifiedDate":"2024-03-19"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":113,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":114,"author":{"gitId":"menatahari"},"content":" * Returns true if both startups have the same identity and data fields.","lastModifiedDate":"2024-03-19"},{"lineNumber":115,"author":{"gitId":"menatahari"},"content":" * This defines a stronger notion of equality between two startups.","lastModifiedDate":"2024-03-19"},{"lineNumber":116,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":118,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":119,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10"},{"lineNumber":120,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":123,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":124,"author":{"gitId":"menatahari"},"content":" if (!(other instanceof Startup)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":125,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":128,"author":{"gitId":"menatahari"},"content":" Startup otherStartup \u003d (Startup) other;","lastModifiedDate":"2024-03-19"},{"lineNumber":129,"author":{"gitId":"menatahari"},"content":" return name.equals(otherStartup.name)","lastModifiedDate":"2024-03-19"},{"lineNumber":130,"author":{"gitId":"menatahari"},"content":" \u0026\u0026 industry.equals(otherStartup.industry)","lastModifiedDate":"2024-03-19"},{"lineNumber":131,"author":{"gitId":"menatahari"},"content":" \u0026\u0026 fundingStage.equals(otherStartup.fundingStage)","lastModifiedDate":"2024-03-19"},{"lineNumber":132,"author":{"gitId":"menatahari"},"content":" \u0026\u0026 phone.equals(otherStartup.phone)","lastModifiedDate":"2024-03-19"},{"lineNumber":133,"author":{"gitId":"menatahari"},"content":" \u0026\u0026 email.equals(otherStartup.email)","lastModifiedDate":"2024-03-19"},{"lineNumber":134,"author":{"gitId":"menatahari"},"content":" \u0026\u0026 address.equals(otherStartup.address)","lastModifiedDate":"2024-03-19"},{"lineNumber":135,"author":{"gitId":"menatahari"},"content":" \u0026\u0026 tags.equals(otherStartup.tags);","lastModifiedDate":"2024-03-19"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":138,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":139,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":140,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24"},{"lineNumber":141,"author":{"gitId":"-"},"content":" return Objects.hash(name, phone, email, address, tags);","lastModifiedDate":"2016-08-24"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":144,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":145,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":146,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":148,"author":{"gitId":"yeoshuheng"},"content":" .add(\"industry\", industry)","lastModifiedDate":"2024-02-25"},{"lineNumber":149,"author":{"gitId":"yeoshuheng"},"content":" .add(\"funding stage\", fundingStage)","lastModifiedDate":"2024-02-25"},{"lineNumber":150,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":153,"author":{"gitId":"dwangwk"},"content":" .add(\"note\", note)","lastModifiedDate":"2024-03-13"},{"lineNumber":154,"author":{"gitId":"dwangwk"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2024-03-14"},{"lineNumber":155,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":158,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"dwangwk":23,"menatahari":22,"-":96,"yeoshuheng":17}},{"path":"src/main/java/seedu/address/model/startup/UniqueStartupList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"menatahari"},"content":"package seedu.address.model.startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"menatahari"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"menatahari"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"menatahari"},"content":"import java.util.Iterator;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"menatahari"},"content":"import java.util.List;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"menatahari"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"menatahari"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.exceptions.DuplicateStartupException;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.exceptions.StartupNotFoundException;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"menatahari"},"content":"/**","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"menatahari"},"content":" * A list of startups that enforces uniqueness between its elements and does not allow nulls.","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"menatahari"},"content":" * A startup is considered unique by comparing using {@code Startup#isSameStartup(Startup)}. As such, adding and","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"menatahari"},"content":" * updating of startups uses Startup#isSameStartup(Startup) for equality so as to ensure that the startup being added","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"menatahari"},"content":" * or updated is unique in terms of identity in the UniqueStartupList. However, the removal of a startup uses","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"menatahari"},"content":" * Startup#equals(Object) so as to ensure that the startup with exactly the same fields will be removed.","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"menatahari"},"content":" *","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"menatahari"},"content":" * Supports a minimal set of list operations.","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"menatahari"},"content":" *","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"menatahari"},"content":" * @see Startup#isSameStartup(Startup)","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"menatahari"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"menatahari"},"content":"public class UniqueStartupList implements Iterable\u003cStartup\u003e {","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"menatahari"},"content":" private final ObservableList\u003cStartup\u003e internalList \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"menatahari"},"content":" private final ObservableList\u003cStartup\u003e internalUnmodifiableList \u003d","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"menatahari"},"content":" FXCollections.unmodifiableObservableList(internalList);","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"menatahari"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"menatahari"},"content":" * Returns true if the list contains an equivalent startup as the given argument.","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"menatahari"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"menatahari"},"content":" public boolean contains(Startup toCheck) {","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"menatahari"},"content":" requireNonNull(toCheck);","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"menatahari"},"content":" return internalList.stream().anyMatch(toCheck::isSameStartup);","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"menatahari"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"menatahari"},"content":" * Adds a startup to the list.","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"menatahari"},"content":" * The startup must not already exist in the list.","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"menatahari"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"menatahari"},"content":" public void add(Startup toAdd) {","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"menatahari"},"content":" requireNonNull(toAdd);","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"menatahari"},"content":" if (contains(toAdd)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"menatahari"},"content":" throw new DuplicateStartupException();","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"menatahari"},"content":" internalList.add(toAdd);","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"menatahari"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"menatahari"},"content":" * Replaces the startup {@code target} in the list with {@code editedStartup}.","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"menatahari"},"content":" * {@code target} must exist in the list.","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"menatahari"},"content":" * The startup identity of {@code editedStartup} must not be the same as another existing startup in the list.","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"menatahari"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"menatahari"},"content":" public void setStartup(Startup target, Startup editedStartup) {","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"menatahari"},"content":" requireAllNonNull(target, editedStartup);","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"menatahari"},"content":" int index \u003d internalList.indexOf(target);","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"menatahari"},"content":" if (index \u003d\u003d -1) {","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"menatahari"},"content":" throw new StartupNotFoundException();","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"menatahari"},"content":" if (!target.isSameStartup(editedStartup) \u0026\u0026 contains(editedStartup)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"menatahari"},"content":" throw new DuplicateStartupException();","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"menatahari"},"content":" internalList.set(index, editedStartup);","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"menatahari"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"menatahari"},"content":" * Removes the equivalent startup from the list.","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"menatahari"},"content":" * The startup must exist in the list.","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"menatahari"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":75,"author":{"gitId":"menatahari"},"content":" public void remove(Startup toRemove) {","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"menatahari"},"content":" requireNonNull(toRemove);","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"menatahari"},"content":" if (!internalList.remove(toRemove)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"menatahari"},"content":" throw new StartupNotFoundException();","lastModifiedDate":"2024-03-19"},{"lineNumber":79,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":80,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":81,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":82,"author":{"gitId":"menatahari"},"content":" public void setStartups(UniqueStartupList replacement) {","lastModifiedDate":"2024-03-19"},{"lineNumber":83,"author":{"gitId":"menatahari"},"content":" requireNonNull(replacement);","lastModifiedDate":"2024-03-19"},{"lineNumber":84,"author":{"gitId":"menatahari"},"content":" internalList.setAll(replacement.internalList);","lastModifiedDate":"2024-03-19"},{"lineNumber":85,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":86,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":87,"author":{"gitId":"menatahari"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":88,"author":{"gitId":"menatahari"},"content":" * Replaces the contents of this list with {@code startups}.","lastModifiedDate":"2024-03-19"},{"lineNumber":89,"author":{"gitId":"menatahari"},"content":" * {@code startups} must not contain duplicate startups.","lastModifiedDate":"2024-03-19"},{"lineNumber":90,"author":{"gitId":"menatahari"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":91,"author":{"gitId":"menatahari"},"content":" public void setStartups(List\u003cStartup\u003e startups) {","lastModifiedDate":"2024-03-19"},{"lineNumber":92,"author":{"gitId":"menatahari"},"content":" requireAllNonNull(startups);","lastModifiedDate":"2024-03-19"},{"lineNumber":93,"author":{"gitId":"menatahari"},"content":" if (!startupsAreUnique(startups)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":94,"author":{"gitId":"menatahari"},"content":" throw new DuplicateStartupException();","lastModifiedDate":"2024-03-19"},{"lineNumber":95,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":96,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":97,"author":{"gitId":"menatahari"},"content":" internalList.setAll(startups);","lastModifiedDate":"2024-03-19"},{"lineNumber":98,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":99,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":100,"author":{"gitId":"menatahari"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":101,"author":{"gitId":"menatahari"},"content":" * Returns the backing list as an unmodifiable {@code ObservableList}.","lastModifiedDate":"2024-03-19"},{"lineNumber":102,"author":{"gitId":"menatahari"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":103,"author":{"gitId":"menatahari"},"content":" public ObservableList\u003cStartup\u003e asUnmodifiableObservableList() {","lastModifiedDate":"2024-03-19"},{"lineNumber":104,"author":{"gitId":"menatahari"},"content":" return internalUnmodifiableList;","lastModifiedDate":"2024-03-19"},{"lineNumber":105,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":106,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":107,"author":{"gitId":"menatahari"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":108,"author":{"gitId":"menatahari"},"content":" public Iterator\u003cStartup\u003e iterator() {","lastModifiedDate":"2024-03-19"},{"lineNumber":109,"author":{"gitId":"menatahari"},"content":" return internalList.iterator();","lastModifiedDate":"2024-03-19"},{"lineNumber":110,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":111,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":112,"author":{"gitId":"menatahari"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":113,"author":{"gitId":"menatahari"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-19"},{"lineNumber":114,"author":{"gitId":"menatahari"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-19"},{"lineNumber":115,"author":{"gitId":"menatahari"},"content":" return true;","lastModifiedDate":"2024-03-19"},{"lineNumber":116,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":117,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":118,"author":{"gitId":"menatahari"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-19"},{"lineNumber":119,"author":{"gitId":"menatahari"},"content":" if (!(other instanceof UniqueStartupList)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":120,"author":{"gitId":"menatahari"},"content":" return false;","lastModifiedDate":"2024-03-19"},{"lineNumber":121,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":122,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":123,"author":{"gitId":"menatahari"},"content":" UniqueStartupList otherUniqueStartupList \u003d (UniqueStartupList) other;","lastModifiedDate":"2024-03-19"},{"lineNumber":124,"author":{"gitId":"menatahari"},"content":" return internalList.equals(otherUniqueStartupList.internalList);","lastModifiedDate":"2024-03-19"},{"lineNumber":125,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":126,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":127,"author":{"gitId":"menatahari"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":128,"author":{"gitId":"menatahari"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-19"},{"lineNumber":129,"author":{"gitId":"menatahari"},"content":" return internalList.hashCode();","lastModifiedDate":"2024-03-19"},{"lineNumber":130,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":131,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":132,"author":{"gitId":"menatahari"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":133,"author":{"gitId":"menatahari"},"content":" public String toString() {","lastModifiedDate":"2024-03-19"},{"lineNumber":134,"author":{"gitId":"menatahari"},"content":" return internalList.toString();","lastModifiedDate":"2024-03-19"},{"lineNumber":135,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":136,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":137,"author":{"gitId":"menatahari"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":138,"author":{"gitId":"menatahari"},"content":" * Returns true if {@code startups} contains only unique startups.","lastModifiedDate":"2024-03-19"},{"lineNumber":139,"author":{"gitId":"menatahari"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":140,"author":{"gitId":"menatahari"},"content":" private boolean startupsAreUnique(List\u003cStartup\u003e startups) {","lastModifiedDate":"2024-03-19"},{"lineNumber":141,"author":{"gitId":"menatahari"},"content":" for (int i \u003d 0; i \u003c startups.size() - 1; i++) {","lastModifiedDate":"2024-03-19"},{"lineNumber":142,"author":{"gitId":"menatahari"},"content":" for (int j \u003d i + 1; j \u003c startups.size(); j++) {","lastModifiedDate":"2024-03-19"},{"lineNumber":143,"author":{"gitId":"menatahari"},"content":" if (startups.get(i).isSameStartup(startups.get(j))) {","lastModifiedDate":"2024-03-19"},{"lineNumber":144,"author":{"gitId":"menatahari"},"content":" return false;","lastModifiedDate":"2024-03-19"},{"lineNumber":145,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":146,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":147,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":148,"author":{"gitId":"menatahari"},"content":" return true;","lastModifiedDate":"2024-03-19"},{"lineNumber":149,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":150,"author":{"gitId":"menatahari"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"menatahari":150}},{"path":"src/main/java/seedu/address/model/startup/exceptions/DuplicateStartupException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"menatahari"},"content":"package seedu.address.model.startup.exceptions;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"menatahari"},"content":"/**","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"menatahari"},"content":" * Signals that the operation will result in duplicate Startups (Startups are considered duplicates if they have the","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"menatahari"},"content":" * same identity).","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"menatahari"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"menatahari"},"content":"public class DuplicateStartupException extends RuntimeException {","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"menatahari"},"content":" public DuplicateStartupException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"menatahari"},"content":" super(\"Operation would result in duplicate startups\");","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"menatahari"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"menatahari":11}},{"path":"src/main/java/seedu/address/model/startup/exceptions/StartupNotFoundException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"menatahari"},"content":"package seedu.address.model.startup.exceptions;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"menatahari"},"content":"/**","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"menatahari"},"content":" * Signals that the operation is unable to find the specified startup.","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"menatahari"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"menatahari"},"content":"public class StartupNotFoundException extends RuntimeException {}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"menatahari":6}},{"path":"src/main/java/seedu/address/model/util/SampleDataUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.util;","lastModifiedDate":"2016-12-20"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-12-20"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-12-20"},{"lineNumber":9,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Address;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Email;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.FundingStage;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Industry;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Name;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Phone;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-14"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20"},{"lineNumber":22,"author":{"gitId":"menatahari"},"content":" public static Startup[] getSampleStartups() {","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"menatahari"},"content":" return new Startup[] {","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"menatahari"},"content":" new Startup(new Name(\"Alex Yeoh\"), new FundingStage(\"A\"), new Industry(\"Finance\"),","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"yeoshuheng"},"content":" new Phone(\"87438807\"), new Email(\"alexyeoh@example.com\"),","lastModifiedDate":"2024-02-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" new Address(\"Blk 30 Geylang Street 29, #06-40\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" getTagSet(\"friends\")),","lastModifiedDate":"2017-03-14"},{"lineNumber":28,"author":{"gitId":"menatahari"},"content":" new Startup(new Name(\"Bernice Yu\"), new FundingStage(\"B\"), new Industry(\"GreenTech\"),","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"yeoshuheng"},"content":" new Phone(\"99272758\"), new Email(\"berniceyu@example.com\"),","lastModifiedDate":"2024-02-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" new Address(\"Blk 30 Lorong 3 Serangoon Gardens, #07-18\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":31,"author":{"gitId":"-"},"content":" getTagSet(\"colleagues\", \"friends\")),","lastModifiedDate":"2017-03-14"},{"lineNumber":32,"author":{"gitId":"menatahari"},"content":" new Startup(new Name(\"Charlotte Oliveiro\"), new FundingStage(\"C\"), new Industry(\"Health\"),","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"yeoshuheng"},"content":" new Phone(\"93210283\"), new Email(\"charlotte@example.com\"),","lastModifiedDate":"2024-02-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" new Address(\"Blk 11 Ang Mo Kio Street 74, #11-04\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":35,"author":{"gitId":"-"},"content":" getTagSet(\"neighbours\")),","lastModifiedDate":"2017-03-14"},{"lineNumber":36,"author":{"gitId":"menatahari"},"content":" new Startup(new Name(\"David Li\"), new FundingStage(\"A\"), new Industry(\"Manufacturing\"),","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"yeoshuheng"},"content":" new Phone(\"91031282\"), new Email(\"lidavid@example.com\"),","lastModifiedDate":"2024-02-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" new Address(\"Blk 436 Serangoon Gardens Street 26, #16-43\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":39,"author":{"gitId":"-"},"content":" getTagSet(\"family\")),","lastModifiedDate":"2017-03-14"},{"lineNumber":40,"author":{"gitId":"menatahari"},"content":" new Startup(new Name(\"Irfan Ibrahim\"), new FundingStage(\"C\"), new Industry(\"Tech\"),","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"yeoshuheng"},"content":" new Phone(\"92492021\"), new Email(\"irfan@example.com\"),","lastModifiedDate":"2024-02-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" new Address(\"Blk 47 Tampines Street 20, #17-35\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":43,"author":{"gitId":"-"},"content":" getTagSet(\"classmates\")),","lastModifiedDate":"2017-03-14"},{"lineNumber":44,"author":{"gitId":"menatahari"},"content":" new Startup(new Name(\"Roy Balakrishnan\"), new FundingStage(\"A\"), new Industry(\"Food\"),","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"yeoshuheng"},"content":" new Phone(\"92624417\"), new Email(\"royb@example.com\"),","lastModifiedDate":"2024-02-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":" new Address(\"Blk 45 Aljunied Street 85, #11-31\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":47,"author":{"gitId":"-"},"content":" getTagSet(\"colleagues\"))","lastModifiedDate":"2017-03-14"},{"lineNumber":48,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20"},{"lineNumber":52,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07"},{"lineNumber":53,"author":{"gitId":"menatahari"},"content":" for (Startup sampleStartup : getSampleStartups()) {","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"menatahari"},"content":" sampleAb.addStartup(sampleStartup);","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":56,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14"},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2017-05-30"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2018-01-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":68,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20"}],"authorContributionMap":{"menatahari":17,"-":45,"yeoshuheng":6}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedStartup.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":13,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Address;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Email;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.FundingStage;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Industry;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Name;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Note;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Phone;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"menatahari"},"content":" * Jackson-friendly version of {@link Startup}.","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"menatahari"},"content":"class JsonAdaptedStartup {","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"menatahari"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Startup\u0027s %s field is missing!\";","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final String name;","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":32,"author":{"gitId":"yeoshuheng"},"content":" private final String industry;","lastModifiedDate":"2024-02-25"},{"lineNumber":33,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":34,"author":{"gitId":"yeoshuheng"},"content":" private final String fundingStage;","lastModifiedDate":"2024-02-25"},{"lineNumber":35,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private final String phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private final String address;","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"dwangwk"},"content":" private final String note;","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedTag\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-01-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"menatahari"},"content":" * Constructs a {@code JsonAdaptedStartup} with the given startup details.","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"menatahari"},"content":" public JsonAdaptedStartup(@JsonProperty(\"name\") String name, @JsonProperty(\"industry\") String industry,","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"yeoshuheng"},"content":" @JsonProperty(\"fundingStage\") String fundingStage, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2024-02-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @JsonProperty(\"email\") String email, @JsonProperty(\"address\") String address,","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"dwangwk"},"content":" @JsonProperty(\"note\") String note,","lastModifiedDate":"2024-03-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags) {","lastModifiedDate":"2023-05-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"yeoshuheng"},"content":" this.fundingStage \u003d fundingStage;","lastModifiedDate":"2024-02-25"},{"lineNumber":54,"author":{"gitId":"yeoshuheng"},"content":" this.industry \u003d industry;","lastModifiedDate":"2024-02-25"},{"lineNumber":55,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"dwangwk"},"content":" this.note \u003d note;","lastModifiedDate":"2024-03-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" if (tags !\u003d null) {","lastModifiedDate":"2023-01-09"},{"lineNumber":60,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2023-01-09"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"menatahari"},"content":" * Converts a given {@code Startup} into this class for Jackson use.","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"menatahari"},"content":" public JsonAdaptedStartup(Startup source) {","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" phone \u003d source.getPhone().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" address \u003d source.getAddress().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"dwangwk"},"content":" note \u003d source.getNote().value;","lastModifiedDate":"2024-03-13"},{"lineNumber":73,"author":{"gitId":"yeoshuheng"},"content":" industry \u003d source.getIndustry().value;","lastModifiedDate":"2024-02-25"},{"lineNumber":74,"author":{"gitId":"yeoshuheng"},"content":" fundingStage \u003d source.getFundingStage().value;","lastModifiedDate":"2024-02-25"},{"lineNumber":75,"author":{"gitId":"-"},"content":" tags.addAll(source.getTags().stream()","lastModifiedDate":"2023-01-09"},{"lineNumber":76,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":81,"author":{"gitId":"menatahari"},"content":" * Converts this Jackson-friendly adapted startup object into the model\u0027s {@code Startup} object.","lastModifiedDate":"2024-03-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":83,"author":{"gitId":"menatahari"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted startup.","lastModifiedDate":"2024-03-19"},{"lineNumber":84,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"menatahari"},"content":" public Startup toModelType() throws IllegalValueException {","lastModifiedDate":"2024-03-19"},{"lineNumber":86,"author":{"gitId":"menatahari"},"content":" final List\u003cTag\u003e startupTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":" for (JsonAdaptedTag tag : tags) {","lastModifiedDate":"2023-01-09"},{"lineNumber":88,"author":{"gitId":"menatahari"},"content":" startupTags.add(tag.toModelType());","lastModifiedDate":"2024-03-19"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":99,"author":{"gitId":"yeoshuheng"},"content":" if (industry \u003d\u003d null) {","lastModifiedDate":"2024-02-25"},{"lineNumber":100,"author":{"gitId":"yeoshuheng"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-02-25"},{"lineNumber":101,"author":{"gitId":"yeoshuheng"},"content":" Industry.class.getSimpleName()));","lastModifiedDate":"2024-02-25"},{"lineNumber":102,"author":{"gitId":"yeoshuheng"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":103,"author":{"gitId":"yeoshuheng"},"content":" if (!Industry.isValidIndustry(industry)) {","lastModifiedDate":"2024-02-25"},{"lineNumber":104,"author":{"gitId":"yeoshuheng"},"content":" throw new IllegalValueException(Industry.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-25"},{"lineNumber":105,"author":{"gitId":"yeoshuheng"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":106,"author":{"gitId":"yeoshuheng"},"content":" final Industry modelIndustry \u003d new Industry(industry);","lastModifiedDate":"2024-02-25"},{"lineNumber":107,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":108,"author":{"gitId":"yeoshuheng"},"content":" if (fundingStage \u003d\u003d null) {","lastModifiedDate":"2024-02-25"},{"lineNumber":109,"author":{"gitId":"yeoshuheng"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-02-25"},{"lineNumber":110,"author":{"gitId":"yeoshuheng"},"content":" FundingStage.class.getSimpleName()));","lastModifiedDate":"2024-02-25"},{"lineNumber":111,"author":{"gitId":"yeoshuheng"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":112,"author":{"gitId":"yeoshuheng"},"content":" if (!FundingStage.isValidFundingLevel(fundingStage)) {","lastModifiedDate":"2024-02-25"},{"lineNumber":113,"author":{"gitId":"yeoshuheng"},"content":" throw new IllegalValueException(FundingStage.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-25"},{"lineNumber":114,"author":{"gitId":"yeoshuheng"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":115,"author":{"gitId":"yeoshuheng"},"content":" final FundingStage modelFundingStage \u003d new FundingStage(fundingStage);","lastModifiedDate":"2024-02-25"},{"lineNumber":116,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":117,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":121,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":123,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":126,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":128,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":129,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":131,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":133,"author":{"gitId":"-"},"content":" if (address \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":134,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":136,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(address)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":137,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":139,"author":{"gitId":"-"},"content":" final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2018-08-13"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":141,"author":{"gitId":"dwangwk"},"content":" if (note \u003d\u003d null) {","lastModifiedDate":"2024-03-13"},{"lineNumber":142,"author":{"gitId":"dwangwk"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Note.class.getSimpleName()));","lastModifiedDate":"2024-03-13"},{"lineNumber":143,"author":{"gitId":"dwangwk"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":144,"author":{"gitId":"dwangwk"},"content":" if (!Note.isValidNote(note)) {","lastModifiedDate":"2024-03-13"},{"lineNumber":145,"author":{"gitId":"dwangwk"},"content":" throw new IllegalValueException(Note.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-20"},{"lineNumber":146,"author":{"gitId":"dwangwk"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":147,"author":{"gitId":"dwangwk"},"content":" final Note modelNote \u003d new Note(note);","lastModifiedDate":"2024-03-13"},{"lineNumber":148,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":149,"author":{"gitId":"menatahari"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(startupTags);","lastModifiedDate":"2024-03-19"},{"lineNumber":150,"author":{"gitId":"menatahari"},"content":" return new Startup(modelName, modelFundingStage, modelIndustry,","lastModifiedDate":"2024-03-19"},{"lineNumber":151,"author":{"gitId":"dwangwk"},"content":" modelPhone, modelEmail, modelAddress, modelTags, modelNote);","lastModifiedDate":"2024-03-13"},{"lineNumber":152,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":154,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"dwangwk":14,"menatahari":22,"-":90,"yeoshuheng":28}},{"path":"src/main/java/seedu/address/storage/JsonSerializableAddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonRootName;","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2018-08-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * An Immutable AddressBook that is serializable to JSON format.","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":"@JsonRootName(value \u003d \"addressbook\")","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"class JsonSerializableAddressBook {","lastModifiedDate":"2018-12-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"menatahari"},"content":" public static final String MESSAGE_DUPLICATE_STARTUP \u003d \"Startups list contains duplicate startup(s).\";","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"menatahari"},"content":" private final List\u003cJsonAdaptedStartup\u003e startups \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"menatahari"},"content":" * Constructs a {@code JsonSerializableAddressBook} with the given startups.","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"menatahari"},"content":" public JsonSerializableAddressBook(@JsonProperty(\"startups\") List\u003cJsonAdaptedStartup\u003e startups) {","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"menatahari"},"content":" this.startups.addAll(startups);","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Converts a given {@code ReadOnlyAddressBook} into this class for Jackson use.","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * @param source future changes to this will not affect the created {@code JsonSerializableAddressBook}.","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public JsonSerializableAddressBook(ReadOnlyAddressBook source) {","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"menatahari"},"content":" startups.addAll(source.getStartupList().stream().map(JsonAdaptedStartup::new).collect(Collectors.toList()));","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Converts this address book into the model\u0027s {@code AddressBook} object.","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated.","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public AddressBook toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"menatahari"},"content":" for (JsonAdaptedStartup jsonAdaptedStartup : startups) {","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"menatahari"},"content":" Startup startup \u003d jsonAdaptedStartup.toModelType();","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"menatahari"},"content":" if (addressBook.hasStartup(startup)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"menatahari"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_STARTUP);","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"menatahari"},"content":" addressBook.addStartup(startup);","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"menatahari":12,"-":48}},{"path":"src/main/java/seedu/address/ui/HelpWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-12-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2019-08-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2019-08-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.input.Clipboard;","lastModifiedDate":"2019-08-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.input.ClipboardContent;","lastModifiedDate":"2019-08-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Controller for a help page","lastModifiedDate":"2016-08-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class HelpWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-12-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":18,"author":{"gitId":"yespiggy"},"content":" public static final String USERGUIDE_URL \u003d \"https://ay2324s2-cs2103t-w09-2.github.io/tp/UserGuide.html\";","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String HELP_MESSAGE \u003d \"Refer to the user guide: \" + USERGUIDE_URL;","lastModifiedDate":"2019-08-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(HelpWindow.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"HelpWindow.fxml\";","lastModifiedDate":"2016-09-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-12-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private Button copyButton;","lastModifiedDate":"2019-08-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-08-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2019-08-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Label helpMessage;","lastModifiedDate":"2019-08-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-12-01"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-12-01"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * @param root Stage to use as the root of the HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-12-01"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public HelpWindow(Stage root) {","lastModifiedDate":"2017-12-01"},{"lineNumber":36,"author":{"gitId":"-"},"content":" super(FXML, root);","lastModifiedDate":"2017-12-01"},{"lineNumber":37,"author":{"gitId":"-"},"content":" helpMessage.setText(HELP_MESSAGE);","lastModifiedDate":"2019-08-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-12-01"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-12-01"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public HelpWindow() {","lastModifiedDate":"2017-12-01"},{"lineNumber":44,"author":{"gitId":"-"},"content":" this(new Stage());","lastModifiedDate":"2017-12-01"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-01"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-01"},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Shows the help window.","lastModifiedDate":"2017-08-16"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * @throws IllegalStateException","lastModifiedDate":"2017-08-16"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * \u003cul\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * if this method is called on a thread other than the JavaFX Application Thread.","lastModifiedDate":"2017-08-16"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * if this method is called during animation or layout processing.","lastModifiedDate":"2017-08-16"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * if this method is called on the primary stage.","lastModifiedDate":"2017-08-16"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * if {@code dialogStage} is already showing.","lastModifiedDate":"2017-08-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * \u003c/ul\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void show() {","lastModifiedDate":"2016-08-18"},{"lineNumber":66,"author":{"gitId":"-"},"content":" logger.fine(\"Showing help page about the application.\");","lastModifiedDate":"2016-12-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":" getRoot().show();","lastModifiedDate":"2018-02-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" getRoot().centerOnScreen();","lastModifiedDate":"2019-08-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-15"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * Returns true if the help window is currently being shown.","lastModifiedDate":"2018-03-15"},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-15"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public boolean isShowing() {","lastModifiedDate":"2018-03-15"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return getRoot().isShowing();","lastModifiedDate":"2018-03-15"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Hides the help window.","lastModifiedDate":"2018-12-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void hide() {","lastModifiedDate":"2018-12-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":" getRoot().hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-15"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Focuses on the help window.","lastModifiedDate":"2018-03-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void focus() {","lastModifiedDate":"2018-03-15"},{"lineNumber":89,"author":{"gitId":"-"},"content":" getRoot().requestFocus();","lastModifiedDate":"2018-03-15"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-08-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-08-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Copies the URL to the user guide to the clipboard.","lastModifiedDate":"2019-08-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-08-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2019-08-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":" private void copyUrl() {","lastModifiedDate":"2019-08-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":" final Clipboard clipboard \u003d Clipboard.getSystemClipboard();","lastModifiedDate":"2019-08-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" final ClipboardContent url \u003d new ClipboardContent();","lastModifiedDate":"2019-08-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" url.putString(USERGUIDE_URL);","lastModifiedDate":"2019-08-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":" clipboard.setContent(url);","lastModifiedDate":"2019-08-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-08-19"},{"lineNumber":102,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"yespiggy":1,"-":101}},{"path":"src/main/java/seedu/address/ui/MainWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-06-16"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.event.ActionEvent;","lastModifiedDate":"2016-12-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-08-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.MenuItem;","lastModifiedDate":"2016-08-26"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.control.TextInputControl;","lastModifiedDate":"2016-12-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyCombination;","lastModifiedDate":"2016-08-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyEvent;","lastModifiedDate":"2016-12-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.scene.layout.StackPane;","lastModifiedDate":"2017-05-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2016-09-28"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2017-06-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.Logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * The Main Window. Provides the basic application layout containing","lastModifiedDate":"2016-08-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * a menu bar and space where other JavaFX elements can be placed.","lastModifiedDate":"2016-08-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class MainWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-11-29"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"MainWindow.fxml\";","lastModifiedDate":"2016-08-18"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(getClass());","lastModifiedDate":"2018-08-14"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Stage primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // Independent Ui parts residing in this Ui container","lastModifiedDate":"2016-08-18"},{"lineNumber":34,"author":{"gitId":"menatahari"},"content":" private StartupListPanel startupListPanel;","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private ResultDisplay resultDisplay;","lastModifiedDate":"2018-12-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private HelpWindow helpWindow;","lastModifiedDate":"2018-03-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private StackPane commandBoxPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":42,"author":{"gitId":"-"},"content":" private MenuItem helpMenuItem;","lastModifiedDate":"2016-08-18"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":45,"author":{"gitId":"menatahari"},"content":" private StackPane startupListPanelPlaceholder;","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":48,"author":{"gitId":"-"},"content":" private StackPane resultDisplayPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":" private StackPane statusbarPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Creates a {@code MainWindow} with the given {@code Stage} and {@code Logic}.","lastModifiedDate":"2020-05-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public MainWindow(Stage primaryStage, Logic logic) {","lastModifiedDate":"2018-12-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" super(FXML, primaryStage);","lastModifiedDate":"2017-11-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // Set dependencies","lastModifiedDate":"2016-09-21"},{"lineNumber":60,"author":{"gitId":"-"},"content":" this.primaryStage \u003d primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":61,"author":{"gitId":"-"},"content":" this.logic \u003d logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":" // Configure the UI","lastModifiedDate":"2016-09-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":" setWindowDefaultSize(logic.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":66,"author":{"gitId":"-"},"content":" setAccelerators();","lastModifiedDate":"2016-09-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":68,"author":{"gitId":"-"},"content":" helpWindow \u003d new HelpWindow();","lastModifiedDate":"2018-03-15"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public Stage getPrimaryStage() {","lastModifiedDate":"2016-12-24"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return primaryStage;","lastModifiedDate":"2016-12-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":" private void setAccelerators() {","lastModifiedDate":"2016-09-21"},{"lineNumber":76,"author":{"gitId":"-"},"content":" setAccelerator(helpMenuItem, KeyCombination.valueOf(\"F1\"));","lastModifiedDate":"2016-12-18"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":79,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-18"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * Sets the accelerator of a MenuItem.","lastModifiedDate":"2016-12-18"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * @param keyCombination the KeyCombination value of the accelerator","lastModifiedDate":"2016-12-18"},{"lineNumber":82,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":83,"author":{"gitId":"-"},"content":" private void setAccelerator(MenuItem menuItem, KeyCombination keyCombination) {","lastModifiedDate":"2016-12-18"},{"lineNumber":84,"author":{"gitId":"-"},"content":" menuItem.setAccelerator(keyCombination);","lastModifiedDate":"2016-12-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-12-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * TODO: the code below can be removed once the bug reported here","lastModifiedDate":"2016-12-18"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * https://bugs.openjdk.java.net/browse/JDK-8131666","lastModifiedDate":"2016-12-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * is fixed in later version of SDK.","lastModifiedDate":"2016-12-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * According to the bug report, TextInputControl (TextField, TextArea) will","lastModifiedDate":"2016-12-18"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * consume function-key events. Because CommandBox contains a TextField, and","lastModifiedDate":"2016-12-18"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * ResultDisplay contains a TextArea, thus some accelerators (e.g F1) will","lastModifiedDate":"2016-12-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * not work when the focus is in them because the key event is consumed by","lastModifiedDate":"2016-12-18"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * the TextInputControl(s).","lastModifiedDate":"2016-12-18"},{"lineNumber":96,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * For now, we add following event filter to capture such key events and open","lastModifiedDate":"2016-12-18"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * help window purposely so to support accelerators even when focus is","lastModifiedDate":"2016-12-18"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * in CommandBox or ResultDisplay.","lastModifiedDate":"2016-12-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":101,"author":{"gitId":"-"},"content":" getRoot().addEventFilter(KeyEvent.KEY_PRESSED, event -\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":102,"author":{"gitId":"-"},"content":" if (event.getTarget() instanceof TextInputControl \u0026\u0026 keyCombination.match(event)) {","lastModifiedDate":"2016-12-18"},{"lineNumber":103,"author":{"gitId":"-"},"content":" menuItem.getOnAction().handle(new ActionEvent());","lastModifiedDate":"2016-12-18"},{"lineNumber":104,"author":{"gitId":"-"},"content":" event.consume();","lastModifiedDate":"2016-12-18"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":106,"author":{"gitId":"-"},"content":" });","lastModifiedDate":"2016-12-18"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":109,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":110,"author":{"gitId":"-"},"content":" * Fills up all the placeholders of this window.","lastModifiedDate":"2017-08-16"},{"lineNumber":111,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":112,"author":{"gitId":"-"},"content":" void fillInnerParts() {","lastModifiedDate":"2016-09-21"},{"lineNumber":113,"author":{"gitId":"menatahari"},"content":" startupListPanel \u003d new StartupListPanel(logic.getFilteredStartupList());","lastModifiedDate":"2024-03-19"},{"lineNumber":114,"author":{"gitId":"menatahari"},"content":" startupListPanelPlaceholder.getChildren().add(startupListPanel.getRoot());","lastModifiedDate":"2024-03-19"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":116,"author":{"gitId":"-"},"content":" resultDisplay \u003d new ResultDisplay();","lastModifiedDate":"2018-12-09"},{"lineNumber":117,"author":{"gitId":"-"},"content":" resultDisplayPlaceholder.getChildren().add(resultDisplay.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":" StatusBarFooter statusBarFooter \u003d new StatusBarFooter(logic.getAddressBookFilePath());","lastModifiedDate":"2019-01-25"},{"lineNumber":120,"author":{"gitId":"-"},"content":" statusbarPlaceholder.getChildren().add(statusBarFooter.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":" CommandBox commandBox \u003d new CommandBox(this::executeCommand);","lastModifiedDate":"2019-01-25"},{"lineNumber":123,"author":{"gitId":"-"},"content":" commandBoxPlaceholder.getChildren().add(commandBox.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":126,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":127,"author":{"gitId":"-"},"content":" * Sets the default size based on {@code guiSettings}.","lastModifiedDate":"2018-11-27"},{"lineNumber":128,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":129,"author":{"gitId":"-"},"content":" private void setWindowDefaultSize(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":130,"author":{"gitId":"-"},"content":" primaryStage.setHeight(guiSettings.getWindowHeight());","lastModifiedDate":"2018-11-27"},{"lineNumber":131,"author":{"gitId":"-"},"content":" primaryStage.setWidth(guiSettings.getWindowWidth());","lastModifiedDate":"2018-11-27"},{"lineNumber":132,"author":{"gitId":"-"},"content":" if (guiSettings.getWindowCoordinates() !\u003d null) {","lastModifiedDate":"2018-11-27"},{"lineNumber":133,"author":{"gitId":"-"},"content":" primaryStage.setX(guiSettings.getWindowCoordinates().getX());","lastModifiedDate":"2018-11-27"},{"lineNumber":134,"author":{"gitId":"-"},"content":" primaryStage.setY(guiSettings.getWindowCoordinates().getY());","lastModifiedDate":"2018-11-27"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":138,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":139,"author":{"gitId":"-"},"content":" * Opens the help window or focuses on it if it\u0027s already opened.","lastModifiedDate":"2018-03-15"},{"lineNumber":140,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":141,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":142,"author":{"gitId":"-"},"content":" public void handleHelp() {","lastModifiedDate":"2016-08-31"},{"lineNumber":143,"author":{"gitId":"-"},"content":" if (!helpWindow.isShowing()) {","lastModifiedDate":"2018-03-15"},{"lineNumber":144,"author":{"gitId":"-"},"content":" helpWindow.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":145,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-15"},{"lineNumber":146,"author":{"gitId":"-"},"content":" helpWindow.focus();","lastModifiedDate":"2018-03-15"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":150,"author":{"gitId":"-"},"content":" void show() {","lastModifiedDate":"2016-10-15"},{"lineNumber":151,"author":{"gitId":"-"},"content":" primaryStage.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":152,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":154,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":155,"author":{"gitId":"-"},"content":" * Closes the application.","lastModifiedDate":"2016-08-18"},{"lineNumber":156,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":157,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":158,"author":{"gitId":"-"},"content":" private void handleExit() {","lastModifiedDate":"2016-08-18"},{"lineNumber":159,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(primaryStage.getWidth(), primaryStage.getHeight(),","lastModifiedDate":"2018-12-08"},{"lineNumber":160,"author":{"gitId":"-"},"content":" (int) primaryStage.getX(), (int) primaryStage.getY());","lastModifiedDate":"2018-12-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":" logic.setGuiSettings(guiSettings);","lastModifiedDate":"2018-12-08"},{"lineNumber":162,"author":{"gitId":"-"},"content":" helpWindow.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":163,"author":{"gitId":"-"},"content":" primaryStage.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-25"},{"lineNumber":166,"author":{"gitId":"menatahari"},"content":" public StartupListPanel getStartupListPanel() {","lastModifiedDate":"2024-03-19"},{"lineNumber":167,"author":{"gitId":"menatahari"},"content":" return startupListPanel;","lastModifiedDate":"2024-03-19"},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-25"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":170,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":171,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2018-12-09"},{"lineNumber":172,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09"},{"lineNumber":173,"author":{"gitId":"-"},"content":" * @see seedu.address.logic.Logic#execute(String)","lastModifiedDate":"2018-12-09"},{"lineNumber":174,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":175,"author":{"gitId":"-"},"content":" private CommandResult executeCommand(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2018-12-09"},{"lineNumber":176,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":177,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d logic.execute(commandText);","lastModifiedDate":"2018-12-09"},{"lineNumber":178,"author":{"gitId":"-"},"content":" logger.info(\"Result: \" + commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":179,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":181,"author":{"gitId":"-"},"content":" if (commandResult.isShowHelp()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":182,"author":{"gitId":"-"},"content":" handleHelp();","lastModifiedDate":"2018-12-09"},{"lineNumber":183,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":185,"author":{"gitId":"-"},"content":" if (commandResult.isExit()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":186,"author":{"gitId":"-"},"content":" handleExit();","lastModifiedDate":"2018-12-09"},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":189,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":190,"author":{"gitId":"-"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2018-12-09"},{"lineNumber":191,"author":{"gitId":"-"},"content":" logger.info(\"An error occurred while executing command: \" + commandText);","lastModifiedDate":"2023-06-13"},{"lineNumber":192,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(e.getMessage());","lastModifiedDate":"2018-12-09"},{"lineNumber":193,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2018-12-09"},{"lineNumber":194,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":196,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"menatahari":6,"-":190}},{"path":"src/main/java/seedu/address/ui/StartupCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Comparator;","lastModifiedDate":"2019-01-02"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-01-02"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-09-21"},{"lineNumber":6,"author":{"gitId":"dwangwk"},"content":"import javafx.geometry.Insets;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"dwangwk"},"content":"import javafx.geometry.Pos;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2016-09-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2016-12-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2016-09-21"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24"},{"lineNumber":12,"author":{"gitId":"dwangwk"},"content":"import javafx.scene.layout.VBox;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":16,"author":{"gitId":"menatahari"},"content":" * An UI component that displays information of a {@code Startup}.","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":18,"author":{"gitId":"menatahari"},"content":"public class StartupCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":20,"author":{"gitId":"menatahari"},"content":" private static final String FXML \u003d \"StartupListCard.fxml\";","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2017-03-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2017-03-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2017-03-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * @see \u003ca href\u003d\"https://github.com/se-edu/addressbook-level4/issues/336\"\u003eThe issue on AddressBook level 4\u003c/a\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":30,"author":{"gitId":"menatahari"},"content":" public final Startup startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private HBox cardPane;","lastModifiedDate":"2016-09-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private Label name;","lastModifiedDate":"2016-09-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private Label id;","lastModifiedDate":"2016-09-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private Label phone;","lastModifiedDate":"2016-09-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" private Label address;","lastModifiedDate":"2016-09-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":43,"author":{"gitId":"-"},"content":" private Label email;","lastModifiedDate":"2016-09-21"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":45,"author":{"gitId":"yespiggy"},"content":" private FlowPane industryAndFundingStage;","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"dwangwk"},"content":" @FXML","lastModifiedDate":"2024-03-13"},{"lineNumber":48,"author":{"gitId":"dwangwk"},"content":" private Label note; // Add this field for note","lastModifiedDate":"2024-03-13"},{"lineNumber":49,"author":{"gitId":"yespiggy"},"content":" @FXML","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"-"},"content":" private FlowPane tags;","lastModifiedDate":"2016-12-18"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":52,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":53,"author":{"gitId":"menatahari"},"content":" * Creates a {@code StartupCode} with the given {@code Startup} and index to display.","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":55,"author":{"gitId":"menatahari"},"content":" public StartupCard(Startup startup, int displayedIndex) {","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":57,"author":{"gitId":"menatahari"},"content":" this.startup \u003d startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21"},{"lineNumber":59,"author":{"gitId":"menatahari"},"content":" name.setText(startup.getName().fullName);","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"menatahari"},"content":" phone.setText(startup.getPhone().value);","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"menatahari"},"content":" address.setText(startup.getAddress().value);","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"menatahari"},"content":" email.setText(startup.getEmail().value);","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":64,"author":{"gitId":"menatahari"},"content":" String fundingLevel \u003d startup.getFundingStage().value;","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"yeoshuheng"},"content":" if (fundingLevel.equals(\"PS\")) {","lastModifiedDate":"2024-03-15"},{"lineNumber":66,"author":{"gitId":"yeoshuheng"},"content":" fundingLevel \u003d \"PRE-SEED\";","lastModifiedDate":"2024-03-15"},{"lineNumber":67,"author":{"gitId":"yeoshuheng"},"content":" } else if (fundingLevel.equals(\"S\")) {","lastModifiedDate":"2024-03-15"},{"lineNumber":68,"author":{"gitId":"yeoshuheng"},"content":" fundingLevel \u003d \"SEED\";","lastModifiedDate":"2024-03-15"},{"lineNumber":69,"author":{"gitId":"yeoshuheng"},"content":" } else {","lastModifiedDate":"2024-03-15"},{"lineNumber":70,"author":{"gitId":"yeoshuheng"},"content":" fundingLevel \u003d \"SERIES \" + fundingLevel;","lastModifiedDate":"2024-03-15"},{"lineNumber":71,"author":{"gitId":"yeoshuheng"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":72,"author":{"gitId":"yespiggy"},"content":" industryAndFundingStage.getChildren().addAll(","lastModifiedDate":"2024-03-11"},{"lineNumber":73,"author":{"gitId":"menatahari"},"content":" new Label(startup.getIndustry().value),","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"yeoshuheng"},"content":" new Label(fundingLevel));","lastModifiedDate":"2024-03-15"},{"lineNumber":75,"author":{"gitId":"dwangwk"},"content":" createNoteSection();","lastModifiedDate":"2024-03-13"},{"lineNumber":76,"author":{"gitId":"menatahari"},"content":" startup.getTags().stream()","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"-"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.tagName))","lastModifiedDate":"2019-01-02"},{"lineNumber":78,"author":{"gitId":"-"},"content":" .forEach(tag -\u003e tags.getChildren().add(new Label(tag.tagName)));","lastModifiedDate":"2019-01-02"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":80,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":81,"author":{"gitId":"dwangwk"},"content":" private void createNoteSection() {","lastModifiedDate":"2024-03-13"},{"lineNumber":82,"author":{"gitId":"dwangwk"},"content":" // Create note label","lastModifiedDate":"2024-03-13"},{"lineNumber":83,"author":{"gitId":"menatahari"},"content":" note \u003d new Label(startup.getNote().value);","lastModifiedDate":"2024-03-19"},{"lineNumber":84,"author":{"gitId":"dwangwk"},"content":" note.setVisible(true); // Note is always visible","lastModifiedDate":"2024-03-13"},{"lineNumber":85,"author":{"gitId":"dwangwk"},"content":" note.setWrapText(true); // Allow text wrapping if too long","lastModifiedDate":"2024-03-13"},{"lineNumber":86,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":87,"author":{"gitId":"dwangwk"},"content":" // Layout note section","lastModifiedDate":"2024-03-13"},{"lineNumber":88,"author":{"gitId":"dwangwk"},"content":" VBox noteSection \u003d new VBox();","lastModifiedDate":"2024-03-13"},{"lineNumber":89,"author":{"gitId":"dwangwk"},"content":" noteSection.setAlignment(Pos.TOP_LEFT); // Align content to the top left","lastModifiedDate":"2024-03-13"},{"lineNumber":90,"author":{"gitId":"dwangwk"},"content":" noteSection.setPadding(new Insets(10)); // Add padding around the note section","lastModifiedDate":"2024-03-13"},{"lineNumber":91,"author":{"gitId":"dwangwk"},"content":" noteSection.setPrefWidth(200); // Set preferred width for the note section","lastModifiedDate":"2024-03-13"},{"lineNumber":92,"author":{"gitId":"dwangwk"},"content":" noteSection.setStyle(\"-fx-border-color: Transparent;\"","lastModifiedDate":"2024-03-13"},{"lineNumber":93,"author":{"gitId":"dwangwk"},"content":" + \"-fx-border-width: 1px;\"); // Add border around the note section","lastModifiedDate":"2024-03-13"},{"lineNumber":94,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":95,"author":{"gitId":"dwangwk"},"content":" // Add note label to the note section","lastModifiedDate":"2024-03-13"},{"lineNumber":96,"author":{"gitId":"dwangwk"},"content":" noteSection.getChildren().addAll(new Label(\"\"), note);","lastModifiedDate":"2024-03-13"},{"lineNumber":97,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":98,"author":{"gitId":"menatahari"},"content":" // Add some padding between note section and startup card box","lastModifiedDate":"2024-03-19"},{"lineNumber":99,"author":{"gitId":"dwangwk"},"content":" VBox.setMargin(noteSection, new Insets(10));","lastModifiedDate":"2024-03-13"},{"lineNumber":100,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":101,"author":{"gitId":"dwangwk"},"content":" // Add note section to cardPane","lastModifiedDate":"2024-03-13"},{"lineNumber":102,"author":{"gitId":"dwangwk"},"content":" cardPane.getChildren().add(noteSection);","lastModifiedDate":"2024-03-13"},{"lineNumber":103,"author":{"gitId":"dwangwk"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":104,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"dwangwk":30,"menatahari":17,"yespiggy":3,"-":46,"yeoshuheng":9}},{"path":"src/main/java/seedu/address/ui/StartupListPanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"menatahari"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"menatahari"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"menatahari"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"menatahari"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"menatahari"},"content":"import javafx.scene.control.ListCell;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"menatahari"},"content":"import javafx.scene.control.ListView;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"menatahari"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"menatahari"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"menatahari"},"content":"/**","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"menatahari"},"content":" * Panel containing the list of startups.","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"menatahari"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"menatahari"},"content":"public class StartupListPanel extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"menatahari"},"content":" private static final String FXML \u003d \"StartupListPanel.fxml\";","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"menatahari"},"content":" private final Logger logger \u003d LogsCenter.getLogger(StartupListPanel.class);","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"menatahari"},"content":" @FXML","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"menatahari"},"content":" private ListView\u003cStartup\u003e startupListView;","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"menatahari"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"menatahari"},"content":" * Creates a {@code StartupListPanel} with the given {@code ObservableList}.","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"menatahari"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"menatahari"},"content":" public StartupListPanel(ObservableList\u003cStartup\u003e startupList) {","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"menatahari"},"content":" super(FXML);","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"menatahari"},"content":" startupListView.setItems(startupList);","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"menatahari"},"content":" startupListView.setCellFactory(listView -\u003e new StartupListViewCell());","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"menatahari"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"menatahari"},"content":" * Custom {@code ListCell} that displays the graphics of a {@code Startup} using a {@code StartupCard}.","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"menatahari"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"menatahari"},"content":" class StartupListViewCell extends ListCell\u003cStartup\u003e {","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"menatahari"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"menatahari"},"content":" protected void updateItem(Startup startup, boolean empty) {","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"menatahari"},"content":" super.updateItem(startup, empty);","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"menatahari"},"content":" if (empty || startup \u003d\u003d null) {","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"menatahari"},"content":" setGraphic(null);","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"menatahari"},"content":" setText(null);","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"menatahari"},"content":" } else {","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"menatahari"},"content":" setGraphic(new StartupCard(startup, getIndex() + 1).getRoot());","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"menatahari"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"menatahari":49}},{"path":"src/main/java/seedu/address/ui/UiManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.application.Platform;","lastModifiedDate":"2016-08-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Alert;","lastModifiedDate":"2016-08-18"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.Alert.AlertType;","lastModifiedDate":"2016-08-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2016-08-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.MainApp;","lastModifiedDate":"2016-08-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2016-09-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.Logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * The manager of the UI component.","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class UiManager implements Ui {","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String ALERT_DIALOG_PANE_FIELD_ID \u003d \"alertDialogPane\";","lastModifiedDate":"2017-04-01"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(UiManager.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":23,"author":{"gitId":"menatahari"},"content":" private static final String ICON_APPLICATION \u003d \"/images/capital_connect.png\";","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private MainWindow mainWindow;","lastModifiedDate":"2016-08-18"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Creates a {@code UiManager} with the given {@code Logic}.","lastModifiedDate":"2020-05-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public UiManager(Logic logic) {","lastModifiedDate":"2018-12-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" this.logic \u003d logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public void start(Stage primaryStage) {","lastModifiedDate":"2016-09-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" logger.info(\"Starting UI...\");","lastModifiedDate":"2016-09-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":" //Set the application icon.","lastModifiedDate":"2016-08-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":" primaryStage.getIcons().add(getImage(ICON_APPLICATION));","lastModifiedDate":"2016-08-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":42,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-08-18"},{"lineNumber":43,"author":{"gitId":"-"},"content":" mainWindow \u003d new MainWindow(primaryStage, logic);","lastModifiedDate":"2018-12-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" mainWindow.show(); //This should be called before creating other UI parts","lastModifiedDate":"2016-08-18"},{"lineNumber":45,"author":{"gitId":"-"},"content":" mainWindow.fillInnerParts();","lastModifiedDate":"2016-08-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" } catch (Throwable e) {","lastModifiedDate":"2016-08-18"},{"lineNumber":48,"author":{"gitId":"-"},"content":" logger.severe(StringUtil.getDetails(e));","lastModifiedDate":"2016-09-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":" showFatalErrorDialogAndShutdown(\"Fatal error during initializing\", e);","lastModifiedDate":"2016-08-18"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":53,"author":{"gitId":"-"},"content":" private Image getImage(String imagePath) {","lastModifiedDate":"2016-08-18"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return new Image(MainApp.class.getResourceAsStream(imagePath));","lastModifiedDate":"2016-08-18"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":57,"author":{"gitId":"-"},"content":" void showAlertDialogAndWait(Alert.AlertType type, String title, String headerText, String contentText) {","lastModifiedDate":"2016-09-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" showAlertDialogAndWait(mainWindow.getPrimaryStage(), type, title, headerText, contentText);","lastModifiedDate":"2016-08-18"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Shows an alert dialog on {@code owner} with the given parameters.","lastModifiedDate":"2017-08-16"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * This method only returns after the user has closed the alert dialog.","lastModifiedDate":"2017-08-16"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":" private static void showAlertDialogAndWait(Stage owner, AlertType type, String title, String headerText,","lastModifiedDate":"2016-09-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":" String contentText) {","lastModifiedDate":"2016-08-18"},{"lineNumber":67,"author":{"gitId":"-"},"content":" final Alert alert \u003d new Alert(type);","lastModifiedDate":"2016-08-18"},{"lineNumber":68,"author":{"gitId":"-"},"content":" alert.getDialogPane().getStylesheets().add(\"view/DarkTheme.css\");","lastModifiedDate":"2016-08-20"},{"lineNumber":69,"author":{"gitId":"-"},"content":" alert.initOwner(owner);","lastModifiedDate":"2016-08-18"},{"lineNumber":70,"author":{"gitId":"-"},"content":" alert.setTitle(title);","lastModifiedDate":"2016-08-18"},{"lineNumber":71,"author":{"gitId":"-"},"content":" alert.setHeaderText(headerText);","lastModifiedDate":"2016-08-18"},{"lineNumber":72,"author":{"gitId":"-"},"content":" alert.setContentText(contentText);","lastModifiedDate":"2016-08-18"},{"lineNumber":73,"author":{"gitId":"-"},"content":" alert.getDialogPane().setId(ALERT_DIALOG_PANE_FIELD_ID);","lastModifiedDate":"2016-10-12"},{"lineNumber":74,"author":{"gitId":"-"},"content":" alert.showAndWait();","lastModifiedDate":"2016-08-18"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * Shows an error alert dialog with {@code title} and error message, {@code e},","lastModifiedDate":"2017-08-16"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * and exits the application after the user has closed the alert dialog.","lastModifiedDate":"2017-08-16"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":81,"author":{"gitId":"-"},"content":" private void showFatalErrorDialogAndShutdown(String title, Throwable e) {","lastModifiedDate":"2016-09-21"},{"lineNumber":82,"author":{"gitId":"-"},"content":" logger.severe(title + \" \" + e.getMessage() + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-21"},{"lineNumber":83,"author":{"gitId":"-"},"content":" showAlertDialogAndWait(Alert.AlertType.ERROR, title, e.getMessage(), e.toString());","lastModifiedDate":"2016-08-18"},{"lineNumber":84,"author":{"gitId":"-"},"content":" Platform.exit();","lastModifiedDate":"2016-08-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":" System.exit(1);","lastModifiedDate":"2016-08-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-25"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"menatahari":1,"-":87}},{"path":"src/main/resources/view/DarkTheme.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":".background {","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":" background-color: #383838; /* Used in the default.html file */","lastModifiedDate":"2017-03-02"},{"lineNumber":4,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":".label {","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":" -fx-text-fill: #555555;","lastModifiedDate":"2016-08-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":".label-bright {","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":".label-header {","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" -fx-font-size: 32pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":".text-field {","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" -fx-font-size: 12pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":".tab-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":".tab-pane .tab-header-area {","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" -fx-min-height: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" -fx-max-height: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":".table-view {","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" -fx-base: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" -fx-control-inner-background: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" -fx-table-cell-border-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" -fx-table-header-border-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" -fx-padding: 5;","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":".table-view .column-header-background {","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":".table-view .column-header, .table-view .filler {","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" -fx-size: 35;","lastModifiedDate":"2016-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" -fx-border-width: 0 0 1 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" -fx-border-color:","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" derive(-fx-base, 80%)","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" -fx-border-insets: 0 10 1 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":".table-view .column-header .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" -fx-font-size: 20pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" -fx-alignment: center-left;","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":".table-view:focused .table-row-cell:filled:focused:selected {","lastModifiedDate":"2016-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":".split-pane:horizontal .split-pane-divider {","lastModifiedDate":"2016-08-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02"},{"lineNumber":81,"author":{"gitId":"-"},"content":" -fx-border-color: transparent transparent transparent #4d4d4d;","lastModifiedDate":"2017-03-02"},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":84,"author":{"gitId":"-"},"content":".split-pane {","lastModifiedDate":"2016-08-15"},{"lineNumber":85,"author":{"gitId":"-"},"content":" -fx-border-radius: 1;","lastModifiedDate":"2016-08-15"},{"lineNumber":86,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2016-08-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":".list-view {","lastModifiedDate":"2017-03-02"},{"lineNumber":91,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":92,"author":{"gitId":"-"},"content":" -fx-padding: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":93,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2018-01-10"},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":96,"author":{"gitId":"-"},"content":".list-cell {","lastModifiedDate":"2016-08-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":" -fx-label-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":" -fx-graphic-text-gap : 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":".list-cell:filled:even {","lastModifiedDate":"2017-03-02"},{"lineNumber":103,"author":{"gitId":"-"},"content":" -fx-background-color: #3c3e3f;","lastModifiedDate":"2017-03-02"},{"lineNumber":104,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":106,"author":{"gitId":"-"},"content":".list-cell:filled:odd {","lastModifiedDate":"2017-03-02"},{"lineNumber":107,"author":{"gitId":"-"},"content":" -fx-background-color: #515658;","lastModifiedDate":"2017-03-02"},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":110,"author":{"gitId":"-"},"content":".list-cell:filled:selected {","lastModifiedDate":"2017-03-02"},{"lineNumber":111,"author":{"gitId":"-"},"content":" -fx-background-color: #424d5f;","lastModifiedDate":"2017-03-02"},{"lineNumber":112,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":114,"author":{"gitId":"-"},"content":".list-cell:filled:selected #cardPane {","lastModifiedDate":"2017-03-02"},{"lineNumber":115,"author":{"gitId":"-"},"content":" -fx-border-color: #3e7b91;","lastModifiedDate":"2017-03-02"},{"lineNumber":116,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02"},{"lineNumber":117,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":119,"author":{"gitId":"-"},"content":".list-cell .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":121,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":".cell_big_label {","lastModifiedDate":"2016-08-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":" -fx-font-size: 16px;","lastModifiedDate":"2016-08-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":".cell_small_label {","lastModifiedDate":"2016-08-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\";","lastModifiedDate":"2022-01-13"},{"lineNumber":131,"author":{"gitId":"-"},"content":" -fx-font-size: 13px;","lastModifiedDate":"2017-03-02"},{"lineNumber":132,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":".stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":136,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":137,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":".pane-with-border {","lastModifiedDate":"2017-05-15"},{"lineNumber":140,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-05-09"},{"lineNumber":141,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 10%);","lastModifiedDate":"2017-05-09"},{"lineNumber":142,"author":{"gitId":"-"},"content":" -fx-border-top-width: 1px;","lastModifiedDate":"2017-05-09"},{"lineNumber":143,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-09"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":145,"author":{"gitId":"-"},"content":".status-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":146,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2018-12-08"},{"lineNumber":147,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":149,"author":{"gitId":"-"},"content":".result-display {","lastModifiedDate":"2016-09-14"},{"lineNumber":150,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2017-03-02"},{"lineNumber":151,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":152,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02"},{"lineNumber":153,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":154,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":156,"author":{"gitId":"-"},"content":".result-display .label {","lastModifiedDate":"2016-09-14"},{"lineNumber":157,"author":{"gitId":"-"},"content":" -fx-text-fill: black !important;","lastModifiedDate":"2016-09-14"},{"lineNumber":158,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":160,"author":{"gitId":"-"},"content":".status-bar .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":162,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":163,"author":{"gitId":"-"},"content":" -fx-padding: 4px;","lastModifiedDate":"2018-12-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":" -fx-pref-height: 30px;","lastModifiedDate":"2018-12-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":".status-bar-with-border {","lastModifiedDate":"2016-08-08"},{"lineNumber":168,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":169,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15"},{"lineNumber":170,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08"},{"lineNumber":171,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":173,"author":{"gitId":"-"},"content":".status-bar-with-border .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":174,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":175,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":177,"author":{"gitId":"-"},"content":".grid-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":178,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":179,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":180,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08"},{"lineNumber":181,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":183,"author":{"gitId":"-"},"content":".grid-pane .stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":184,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":185,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":187,"author":{"gitId":"-"},"content":".context-menu {","lastModifiedDate":"2016-08-08"},{"lineNumber":188,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15"},{"lineNumber":189,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":191,"author":{"gitId":"-"},"content":".context-menu .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":192,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":193,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":195,"author":{"gitId":"-"},"content":".menu-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":196,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":197,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":199,"author":{"gitId":"-"},"content":".menu-bar .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":200,"author":{"gitId":"-"},"content":" -fx-font-size: 14pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":201,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":202,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":203,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08"},{"lineNumber":204,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":206,"author":{"gitId":"-"},"content":".menu .left-container {","lastModifiedDate":"2016-08-08"},{"lineNumber":207,"author":{"gitId":"-"},"content":" -fx-background-color: black;","lastModifiedDate":"2016-08-08"},{"lineNumber":208,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":210,"author":{"gitId":"-"},"content":"/*","lastModifiedDate":"2016-08-08"},{"lineNumber":211,"author":{"gitId":"-"},"content":" * Metro style Push Button","lastModifiedDate":"2016-08-08"},{"lineNumber":212,"author":{"gitId":"-"},"content":" * Author: Pedro Duque Vieira","lastModifiedDate":"2016-08-08"},{"lineNumber":213,"author":{"gitId":"-"},"content":" * http://pixelduke.wordpress.com/2012/10/23/jmetro-windows-8-controls-on-java/","lastModifiedDate":"2016-08-08"},{"lineNumber":214,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":215,"author":{"gitId":"-"},"content":".button {","lastModifiedDate":"2016-08-08"},{"lineNumber":216,"author":{"gitId":"-"},"content":" -fx-padding: 5 22 5 22;","lastModifiedDate":"2016-08-08"},{"lineNumber":217,"author":{"gitId":"-"},"content":" -fx-border-color: #e2e2e2;","lastModifiedDate":"2016-08-08"},{"lineNumber":218,"author":{"gitId":"-"},"content":" -fx-border-width: 2;","lastModifiedDate":"2016-08-08"},{"lineNumber":219,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":220,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":221,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\", Helvetica, Arial, sans-serif;","lastModifiedDate":"2022-01-13"},{"lineNumber":222,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":223,"author":{"gitId":"-"},"content":" -fx-text-fill: #d8d8d8;","lastModifiedDate":"2016-08-08"},{"lineNumber":224,"author":{"gitId":"-"},"content":" -fx-background-insets: 0 0 0 0, 0, 1, 2;","lastModifiedDate":"2016-08-08"},{"lineNumber":225,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":227,"author":{"gitId":"-"},"content":".button:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":228,"author":{"gitId":"-"},"content":" -fx-background-color: #3a3a3a;","lastModifiedDate":"2016-08-08"},{"lineNumber":229,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":231,"author":{"gitId":"-"},"content":".button:pressed, .button:default:hover:pressed {","lastModifiedDate":"2016-08-08"},{"lineNumber":232,"author":{"gitId":"-"},"content":" -fx-background-color: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":233,"author":{"gitId":"-"},"content":" -fx-text-fill: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":234,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":236,"author":{"gitId":"-"},"content":".button:focused {","lastModifiedDate":"2016-08-08"},{"lineNumber":237,"author":{"gitId":"-"},"content":" -fx-border-color: white, white;","lastModifiedDate":"2016-08-08"},{"lineNumber":238,"author":{"gitId":"-"},"content":" -fx-border-width: 1, 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":239,"author":{"gitId":"-"},"content":" -fx-border-style: solid, segments(1, 1);","lastModifiedDate":"2016-08-08"},{"lineNumber":240,"author":{"gitId":"-"},"content":" -fx-border-radius: 0, 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":241,"author":{"gitId":"-"},"content":" -fx-border-insets: 1 1 1 1, 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":242,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":244,"author":{"gitId":"-"},"content":".button:disabled, .button:default:disabled {","lastModifiedDate":"2016-08-08"},{"lineNumber":245,"author":{"gitId":"-"},"content":" -fx-opacity: 0.4;","lastModifiedDate":"2016-08-08"},{"lineNumber":246,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":247,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":248,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":250,"author":{"gitId":"-"},"content":".button:default {","lastModifiedDate":"2016-08-08"},{"lineNumber":251,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08"},{"lineNumber":252,"author":{"gitId":"-"},"content":" -fx-text-fill: #ffffff;","lastModifiedDate":"2016-08-08"},{"lineNumber":253,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":255,"author":{"gitId":"-"},"content":".button:default:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":256,"author":{"gitId":"-"},"content":" -fx-background-color: derive(-fx-focus-color, 30%);","lastModifiedDate":"2016-08-08"},{"lineNumber":257,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":259,"author":{"gitId":"-"},"content":".dialog-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":260,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":261,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":263,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.button-bar \u003e *.container {","lastModifiedDate":"2016-08-08"},{"lineNumber":264,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":265,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":266,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":267,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.label.content {","lastModifiedDate":"2016-08-08"},{"lineNumber":268,"author":{"gitId":"-"},"content":" -fx-font-size: 14px;","lastModifiedDate":"2016-08-08"},{"lineNumber":269,"author":{"gitId":"-"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2016-08-08"},{"lineNumber":270,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":271,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":273,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel {","lastModifiedDate":"2016-08-08"},{"lineNumber":274,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15"},{"lineNumber":275,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":277,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel *.label {","lastModifiedDate":"2016-08-08"},{"lineNumber":278,"author":{"gitId":"-"},"content":" -fx-font-size: 18px;","lastModifiedDate":"2016-08-08"},{"lineNumber":279,"author":{"gitId":"-"},"content":" -fx-font-style: italic;","lastModifiedDate":"2016-08-08"},{"lineNumber":280,"author":{"gitId":"-"},"content":" -fx-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":281,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":282,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":284,"author":{"gitId":"-"},"content":".scroll-bar {","lastModifiedDate":"2017-03-02"},{"lineNumber":285,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02"},{"lineNumber":286,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":288,"author":{"gitId":"-"},"content":".scroll-bar .thumb {","lastModifiedDate":"2016-08-15"},{"lineNumber":289,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15"},{"lineNumber":290,"author":{"gitId":"-"},"content":" -fx-background-insets: 3;","lastModifiedDate":"2016-08-15"},{"lineNumber":291,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":293,"author":{"gitId":"-"},"content":".scroll-bar .increment-button, .scroll-bar .decrement-button {","lastModifiedDate":"2016-08-15"},{"lineNumber":294,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-15"},{"lineNumber":295,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-15"},{"lineNumber":296,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":298,"author":{"gitId":"-"},"content":".scroll-bar .increment-arrow, .scroll-bar .decrement-arrow {","lastModifiedDate":"2016-08-15"},{"lineNumber":299,"author":{"gitId":"-"},"content":" -fx-shape: \" \";","lastModifiedDate":"2016-08-15"},{"lineNumber":300,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":301,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":302,"author":{"gitId":"-"},"content":".scroll-bar:vertical .increment-arrow, .scroll-bar:vertical .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":303,"author":{"gitId":"-"},"content":" -fx-padding: 1 8 1 8;","lastModifiedDate":"2016-08-15"},{"lineNumber":304,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":306,"author":{"gitId":"-"},"content":".scroll-bar:horizontal .increment-arrow, .scroll-bar:horizontal .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":307,"author":{"gitId":"-"},"content":" -fx-padding: 8 1 8 1;","lastModifiedDate":"2016-08-18"},{"lineNumber":308,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":309,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":310,"author":{"gitId":"-"},"content":"#cardPane {","lastModifiedDate":"2016-08-08"},{"lineNumber":311,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":312,"author":{"gitId":"-"},"content":" -fx-border-width: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":313,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":314,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":315,"author":{"gitId":"-"},"content":"#commandTypeLabel {","lastModifiedDate":"2016-08-08"},{"lineNumber":316,"author":{"gitId":"-"},"content":" -fx-font-size: 11px;","lastModifiedDate":"2016-08-08"},{"lineNumber":317,"author":{"gitId":"-"},"content":" -fx-text-fill: #F70D1A;","lastModifiedDate":"2016-08-08"},{"lineNumber":318,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":319,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":320,"author":{"gitId":"-"},"content":"#commandTextField {","lastModifiedDate":"2017-03-02"},{"lineNumber":321,"author":{"gitId":"-"},"content":" -fx-background-color: transparent #383838 transparent #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":322,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":323,"author":{"gitId":"-"},"content":" -fx-border-color: #383838 #383838 #ffffff #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":324,"author":{"gitId":"-"},"content":" -fx-border-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":325,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02"},{"lineNumber":326,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":327,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02"},{"lineNumber":328,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":329,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":330,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":331,"author":{"gitId":"menatahari"},"content":"#filterField, #startupListPanel, #startupWebpage {","lastModifiedDate":"2024-03-19"},{"lineNumber":332,"author":{"gitId":"-"},"content":" -fx-effect: innershadow(gaussian, black, 10, 0, 0, 0);","lastModifiedDate":"2016-08-15"},{"lineNumber":333,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":334,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":335,"author":{"gitId":"-"},"content":"#resultDisplay .content {","lastModifiedDate":"2017-03-02"},{"lineNumber":336,"author":{"gitId":"-"},"content":" -fx-background-color: transparent, #383838, transparent, #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":337,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":338,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":339,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":340,"author":{"gitId":"-"},"content":"#tags {","lastModifiedDate":"2016-12-18"},{"lineNumber":341,"author":{"gitId":"-"},"content":" -fx-hgap: 7;","lastModifiedDate":"2016-12-18"},{"lineNumber":342,"author":{"gitId":"-"},"content":" -fx-vgap: 3;","lastModifiedDate":"2016-12-18"},{"lineNumber":343,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"},{"lineNumber":344,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":345,"author":{"gitId":"-"},"content":"#tags .label {","lastModifiedDate":"2016-12-18"},{"lineNumber":346,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-12-18"},{"lineNumber":347,"author":{"gitId":"-"},"content":" -fx-background-color: #3e7b91;","lastModifiedDate":"2017-03-02"},{"lineNumber":348,"author":{"gitId":"-"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2016-12-18"},{"lineNumber":349,"author":{"gitId":"-"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2016-12-18"},{"lineNumber":350,"author":{"gitId":"-"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2016-12-18"},{"lineNumber":351,"author":{"gitId":"-"},"content":" -fx-font-size: 11;","lastModifiedDate":"2016-12-18"},{"lineNumber":352,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"},{"lineNumber":353,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":354,"author":{"gitId":"yespiggy"},"content":"#industryAndFundingStage {","lastModifiedDate":"2024-03-11"},{"lineNumber":355,"author":{"gitId":"yespiggy"},"content":" -fx-hgap: 7;","lastModifiedDate":"2024-03-11"},{"lineNumber":356,"author":{"gitId":"yespiggy"},"content":" -fx-vgap: 3;","lastModifiedDate":"2024-03-11"},{"lineNumber":357,"author":{"gitId":"yespiggy"},"content":"}","lastModifiedDate":"2024-03-11"},{"lineNumber":358,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":359,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":360,"author":{"gitId":"yespiggy"},"content":"#industryAndFundingStage .label {","lastModifiedDate":"2024-03-11"},{"lineNumber":361,"author":{"gitId":"yespiggy"},"content":" -fx-background-color: #7e8464;","lastModifiedDate":"2024-03-11"},{"lineNumber":362,"author":{"gitId":"yespiggy"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-11"},{"lineNumber":363,"author":{"gitId":"yespiggy"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2024-03-11"},{"lineNumber":364,"author":{"gitId":"yespiggy"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2024-03-11"},{"lineNumber":365,"author":{"gitId":"yespiggy"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2024-03-11"},{"lineNumber":366,"author":{"gitId":"yespiggy"},"content":" -fx-font-size: 11;","lastModifiedDate":"2024-03-11"},{"lineNumber":367,"author":{"gitId":"yespiggy"},"content":"}","lastModifiedDate":"2024-03-11"},{"lineNumber":368,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":369,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"menatahari":1,"yespiggy":17,"-":351}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2016-08-26"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Menu?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuBar?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuItem?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.SplitPane?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"\u003cfx:root type\u003d\"javafx.stage.Stage\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"","lastModifiedDate":"2023-07-27"},{"lineNumber":15,"author":{"gitId":"menatahari"},"content":" title\u003d\"Capital Connect\" minWidth\u003d\"450\" minHeight\u003d\"600\" onCloseRequest\u003d\"#handleExit\"\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cicons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":17,"author":{"gitId":"menatahari"},"content":" \u003cImage url\u003d\"@/images/capital_connect.png\" /\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/icons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cscene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cScene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@DarkTheme.css\" /\u003e","lastModifiedDate":"2016-08-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@Extensions.css\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003cVBox\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cMenuBar fx:id\u003d\"menuBar\" VBox.vgrow\u003d\"NEVER\"\u003e","lastModifiedDate":"2017-06-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"File\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003cMenuItem mnemonicParsing\u003d\"false\" onAction\u003d\"#handleExit\" text\u003d\"Exit\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"Help\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cMenuItem fx:id\u003d\"helpMenuItem\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleHelp\" text\u003d\"Help\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003c/MenuBar\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"commandBoxPlaceholder\" styleClass\u003d\"pane-with-border\"\u003e","lastModifiedDate":"2017-05-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"resultDisplayPlaceholder\" styleClass\u003d\"pane-with-border\"","lastModifiedDate":"2017-05-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":" minHeight\u003d\"100\" prefHeight\u003d\"100\" maxHeight\u003d\"100\"\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":45,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":47,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":49,"author":{"gitId":"menatahari"},"content":" \u003cVBox fx:id\u003d\"startupList\" styleClass\u003d\"pane-with-border\" minWidth\u003d\"340\" prefWidth\u003d\"340\" VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"10\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":53,"author":{"gitId":"menatahari"},"content":" \u003cStackPane fx:id\u003d\"startupListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\"/\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"statusbarPlaceholder\" VBox.vgrow\u003d\"NEVER\" /\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003c/scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":60,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-11-29"}],"authorContributionMap":{"menatahari":4,"-":56}},{"path":"src/main/resources/view/StartupListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003cHBox id\u003d\"cardPane\" fx:id\u003d\"cardPane\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-07-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2017-03-28"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2017-03-28"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003c/Label\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"name\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2016-09-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003cFlowPane fx:id\u003d\"tags\" /\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":31,"author":{"gitId":"yespiggy"},"content":" \u003cFlowPane fx:id\u003d\"industryAndFundingStage\" /\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"yespiggy":1,"-":36}},{"path":"src/main/resources/view/StartupListPanel.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.ListView?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003cVBox xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-07-27"},{"lineNumber":7,"author":{"gitId":"menatahari"},"content":" \u003cListView fx:id\u003d\"startupListView\" VBox.vgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c/VBox\u003e","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"menatahari":1,"-":7}},{"path":"src/test/java/seedu/address/commons/core/index/IndexTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.commons.core.index;","lastModifiedDate":"2017-05-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class IndexTest {","lastModifiedDate":"2017-05-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public void createOneBasedIndex() {","lastModifiedDate":"2017-05-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" // invalid index","lastModifiedDate":"2017-05-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" assertThrows(IndexOutOfBoundsException.class, () -\u003e Index.fromOneBased(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" // check equality using the same base","lastModifiedDate":"2017-05-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" assertEquals(1, Index.fromOneBased(1).getOneBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertEquals(5, Index.fromOneBased(5).getOneBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" // convert from one-based index to zero-based index","lastModifiedDate":"2017-05-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" assertEquals(0, Index.fromOneBased(1).getZeroBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" assertEquals(4, Index.fromOneBased(5).getZeroBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void createZeroBasedIndex() {","lastModifiedDate":"2017-05-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" // invalid index","lastModifiedDate":"2017-05-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertThrows(IndexOutOfBoundsException.class, () -\u003e Index.fromZeroBased(-1));","lastModifiedDate":"2019-03-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // check equality using the same base","lastModifiedDate":"2017-05-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertEquals(0, Index.fromZeroBased(0).getZeroBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertEquals(5, Index.fromZeroBased(5).getZeroBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // convert from zero-based index to one-based index","lastModifiedDate":"2017-05-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertEquals(1, Index.fromZeroBased(0).getOneBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertEquals(6, Index.fromZeroBased(5).getOneBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-05-24"},{"lineNumber":42,"author":{"gitId":"menatahari"},"content":" final Index fifthStartupIndex \u003d Index.fromOneBased(5);","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-24"},{"lineNumber":45,"author":{"gitId":"menatahari"},"content":" assertTrue(fifthStartupIndex.equals(Index.fromOneBased(5)));","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"menatahari"},"content":" assertTrue(fifthStartupIndex.equals(Index.fromZeroBased(4)));","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-24"},{"lineNumber":49,"author":{"gitId":"menatahari"},"content":" assertTrue(fifthStartupIndex.equals(fifthStartupIndex));","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-24"},{"lineNumber":52,"author":{"gitId":"menatahari"},"content":" assertFalse(fifthStartupIndex.equals(null));","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-24"},{"lineNumber":55,"author":{"gitId":"menatahari"},"content":" assertFalse(fifthStartupIndex.equals(5.0f));","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-24"},{"lineNumber":58,"author":{"gitId":"menatahari"},"content":" assertFalse(fifthStartupIndex.equals(Index.fromOneBased(1)));","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromZeroBased(0);","lastModifiedDate":"2019-02-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" String expected \u003d Index.class.getCanonicalName() + \"{zeroBasedIndex\u003d\" + index.getZeroBased() + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertEquals(expected, index.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"menatahari":7,"-":60}},{"path":"src/test/java/seedu/address/commons/util/AppUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.commons.util;","lastModifiedDate":"2016-09-30"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertNotNull;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class AppUtilTest {","lastModifiedDate":"2016-09-30"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":10,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-30"},{"lineNumber":11,"author":{"gitId":"-"},"content":" public void getImage_exitingImage() {","lastModifiedDate":"2016-09-30"},{"lineNumber":12,"author":{"gitId":"menatahari"},"content":" assertNotNull(AppUtil.getImage(\"/images/capital_connect.png\"));","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-30"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":15,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-30"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public void getImage_nullGiven_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":17,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e AppUtil.getImage(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-15"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public void checkArgument_true_nothingHappens() {","lastModifiedDate":"2017-05-15"},{"lineNumber":22,"author":{"gitId":"-"},"content":" AppUtil.checkArgument(true);","lastModifiedDate":"2017-05-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":" AppUtil.checkArgument(true, \"\");","lastModifiedDate":"2017-05-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-15"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void checkArgument_falseWithoutErrorMessage_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e AppUtil.checkArgument(false));","lastModifiedDate":"2019-03-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void checkArgument_falseWithErrorMessage_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":" String errorMessage \u003d \"error message\";","lastModifiedDate":"2017-05-15"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, errorMessage, () -\u003e AppUtil.checkArgument(false, errorMessage));","lastModifiedDate":"2019-03-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-30"}],"authorContributionMap":{"menatahari":1,"-":35}},{"path":"src/test/java/seedu/address/logic/LogicManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"menatahari"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_STARTUP_DISPLAYED_INDEX;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":7,"author":{"gitId":"menatahari"},"content":"import static seedu.address.testutil.TypicalStartups.AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2017-01-18"},{"lineNumber":19,"author":{"gitId":"yeoshuheng"},"content":"import seedu.address.logic.commands.CommandTestUtil;","lastModifiedDate":"2024-02-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2016-09-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-09"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-31"},{"lineNumber":27,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-12-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2018-12-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2018-12-09"},{"lineNumber":31,"author":{"gitId":"menatahari"},"content":"import seedu.address.testutil.StartupBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":"public class LogicManagerTest {","lastModifiedDate":"2016-09-22"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_IO_EXCEPTION \u003d new IOException(\"dummy IO exception\");","lastModifiedDate":"2023-06-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_AD_EXCEPTION \u003d new AccessDeniedException(\"dummy access denied exception\");","lastModifiedDate":"2023-06-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public Path temporaryFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-20"},{"lineNumber":41,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2018-12-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2019-04-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d","lastModifiedDate":"2019-04-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(temporaryFolder.resolve(\"addressBook.json\"));","lastModifiedDate":"2019-04-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2019-04-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2018-12-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-20"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void execute_invalidCommandFormat_throwsParseException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":54,"author":{"gitId":"-"},"content":" String invalidCommand \u003d \"uicfhmowqewca\";","lastModifiedDate":"2017-06-20"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertParseException(invalidCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-06-20"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-14"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void execute_commandExecutionError_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":60,"author":{"gitId":"-"},"content":" String deleteCommand \u003d \"delete 9\";","lastModifiedDate":"2017-06-14"},{"lineNumber":61,"author":{"gitId":"menatahari"},"content":" assertCommandException(deleteCommand, MESSAGE_INVALID_STARTUP_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-19"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void execute_validCommand_success() throws Exception {","lastModifiedDate":"2019-03-14"},{"lineNumber":66,"author":{"gitId":"-"},"content":" String listCommand \u003d ListCommand.COMMAND_WORD;","lastModifiedDate":"2017-06-19"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertCommandSuccess(listCommand, ListCommand.MESSAGE_SUCCESS, model);","lastModifiedDate":"2017-06-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20"},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2019-04-25"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-06-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-06-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2023-06-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":83,"author":{"gitId":"menatahari"},"content":" public void getFilteredStartupList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":84,"author":{"gitId":"menatahari"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredStartupList().remove(0));","lastModifiedDate":"2024-03-19"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":87,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":93,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":94,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14"},{"lineNumber":95,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14"},{"lineNumber":96,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14"},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":101,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a ParseException is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":105,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11"},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":109,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14"},{"lineNumber":110,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a CommandException is thrown and that the result message is correct.","lastModifiedDate":"2017-06-14"},{"lineNumber":111,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":112,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14"},{"lineNumber":113,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":117,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":118,"author":{"gitId":"-"},"content":" * Executes the command, confirms that the exception is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":119,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":121,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-05-31"},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":127,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":128,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":129,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":130,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":131,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":132,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":133,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":134,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":135,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31"},{"lineNumber":136,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14"},{"lineNumber":137,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31"},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19"},{"lineNumber":140,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":141,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13"},{"lineNumber":142,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13"},{"lineNumber":143,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13"},{"lineNumber":144,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13"},{"lineNumber":145,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":146,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13"},{"lineNumber":147,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":149,"author":{"gitId":"-"},"content":" // Inject LogicManager with an AddressBookStorage that throws the IOException e when saving","lastModifiedDate":"2023-06-13"},{"lineNumber":150,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(prefPath) {","lastModifiedDate":"2023-06-13"},{"lineNumber":151,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":152,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath)","lastModifiedDate":"2023-06-13"},{"lineNumber":153,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13"},{"lineNumber":154,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13"},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":156,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":158,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":159,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13"},{"lineNumber":160,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2023-06-13"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":162,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":164,"author":{"gitId":"-"},"content":" // Triggers the saveAddressBook method by executing an add command","lastModifiedDate":"2023-06-13"},{"lineNumber":165,"author":{"gitId":"yeoshuheng"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + CommandTestUtil.FUNDING_DESC_AMY","lastModifiedDate":"2024-02-25"},{"lineNumber":166,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.INDUSTRY_DESC_AMY + CommandTestUtil.NAME_DESC_AMY + CommandTestUtil.PHONE_DESC_AMY","lastModifiedDate":"2024-02-25"},{"lineNumber":167,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.EMAIL_DESC_AMY + CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2024-02-25"},{"lineNumber":168,"author":{"gitId":"menatahari"},"content":" Startup expectedStartup \u003d new StartupBuilder(AMY).withTags().build();","lastModifiedDate":"2024-03-19"},{"lineNumber":169,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13"},{"lineNumber":170,"author":{"gitId":"menatahari"},"content":" expectedModel.addStartup(expectedStartup);","lastModifiedDate":"2024-03-19"},{"lineNumber":171,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13"},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":173,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"menatahari":9,"-":160,"yeoshuheng":4}},{"path":"src/test/java/seedu/address/logic/commands/AddCommandIntegrationTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-15"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":5,"author":{"gitId":"menatahari"},"content":"import static seedu.address.testutil.TypicalStartups.getTypicalAddressBook;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-15"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-15"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-15"},{"lineNumber":14,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"menatahari"},"content":"import seedu.address.testutil.StartupBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-15"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code AddCommand}.","lastModifiedDate":"2017-06-15"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-15"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class AddCommandIntegrationTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":30,"author":{"gitId":"menatahari"},"content":" public void execute_newStartup_success() {","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"menatahari"},"content":" Startup validStartup \u003d new StartupBuilder().build();","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-15"},{"lineNumber":34,"author":{"gitId":"menatahari"},"content":" expectedModel.addStartup(validStartup);","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":36,"author":{"gitId":"menatahari"},"content":" assertCommandSuccess(new AddCommand(validStartup), model,","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"menatahari"},"content":" String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validStartup)),","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":" expectedModel);","lastModifiedDate":"2019-02-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":42,"author":{"gitId":"menatahari"},"content":" public void execute_duplicateStartup_throwsCommandException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"menatahari"},"content":" Startup startupInList \u003d model.getAddressBook().getStartupList().get(0);","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"menatahari"},"content":" assertCommandFailure(new AddCommand(startupInList), model,","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"menatahari"},"content":" AddCommand.MESSAGE_DUPLICATE_STARTUP);","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"menatahari":12,"-":36}},{"path":"src/test/java/seedu/address/logic/commands/AddCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-01-10"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"menatahari"},"content":"import static seedu.address.testutil.TypicalStartups.ALICE;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-05-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-05-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2017-05-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":25,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"menatahari"},"content":"import seedu.address.testutil.StartupBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class AddCommandTest {","lastModifiedDate":"2017-05-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":31,"author":{"gitId":"menatahari"},"content":" public void constructor_nullStartup_throwsNullPointerException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddCommand(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":36,"author":{"gitId":"menatahari"},"content":" public void execute_startupAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"menatahari"},"content":" ModelStubAcceptingStartupAdded modelStub \u003d new ModelStubAcceptingStartupAdded();","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"menatahari"},"content":" Startup validStartup \u003d new StartupBuilder().build();","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":40,"author":{"gitId":"menatahari"},"content":" CommandResult commandResult \u003d new AddCommand(validStartup).execute(modelStub);","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":42,"author":{"gitId":"menatahari"},"content":" assertEquals(String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validStartup)),","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"menatahari"},"content":" assertEquals(Arrays.asList(validStartup), modelStub.startupsAdded);","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":48,"author":{"gitId":"menatahari"},"content":" public void execute_duplicateStartup_throwsCommandException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"menatahari"},"content":" Startup validStartup \u003d new StartupBuilder().build();","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"menatahari"},"content":" AddCommand addCommand \u003d new AddCommand(validStartup);","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"menatahari"},"content":" ModelStub modelStub \u003d new ModelStubWithStartup(validStartup);","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":53,"author":{"gitId":"menatahari"},"content":" assertThrows(CommandException.class, AddCommand.MESSAGE_DUPLICATE_STARTUP, () -\u003e addCommand.execute(modelStub));","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-22"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":58,"author":{"gitId":"menatahari"},"content":" Startup alice \u003d new StartupBuilder().withName(\"Alice\").build();","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"menatahari"},"content":" Startup bob \u003d new StartupBuilder().withName(\"Bob\").build();","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":" AddCommand addAliceCommand \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22"},{"lineNumber":61,"author":{"gitId":"-"},"content":" AddCommand addBobCommand \u003d new AddCommand(bob);","lastModifiedDate":"2017-06-22"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":63,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommand));","lastModifiedDate":"2017-06-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":66,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":67,"author":{"gitId":"-"},"content":" AddCommand addAliceCommandCopy \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommandCopy));","lastModifiedDate":"2017-06-22"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(1));","lastModifiedDate":"2017-06-22"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":73,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(null));","lastModifiedDate":"2017-06-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":76,"author":{"gitId":"menatahari"},"content":" // different startup -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(addBobCommand));","lastModifiedDate":"2017-06-22"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(ALICE);","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" String expected \u003d AddCommand.class.getCanonicalName() + \"{toAdd\u003d\" + ALICE + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertEquals(expected, addCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2017-05-12"},{"lineNumber":89,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":90,"author":{"gitId":"-"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2017-05-12"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":93,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":101,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":102,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":108,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":112,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":113,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":117,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27"},{"lineNumber":118,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":122,"author":{"gitId":"menatahari"},"content":" public void addStartup(Startup startup) {","lastModifiedDate":"2024-03-19"},{"lineNumber":123,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":127,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2018-11-27"},{"lineNumber":128,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":131,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":132,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-12"},{"lineNumber":133,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":136,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":137,"author":{"gitId":"menatahari"},"content":" public boolean hasStartup(Startup startup) {","lastModifiedDate":"2024-03-19"},{"lineNumber":138,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":141,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":142,"author":{"gitId":"menatahari"},"content":" public void deleteStartup(Startup target) {","lastModifiedDate":"2024-03-19"},{"lineNumber":143,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":146,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":147,"author":{"gitId":"menatahari"},"content":" public void setStartup(Startup target, Startup editedStartup) {","lastModifiedDate":"2024-03-19"},{"lineNumber":148,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":151,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":152,"author":{"gitId":"menatahari"},"content":" public ObservableList\u003cStartup\u003e getFilteredStartupList() {","lastModifiedDate":"2024-03-19"},{"lineNumber":153,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":156,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":157,"author":{"gitId":"menatahari"},"content":" public void updateFilteredStartupList(Predicate\u003cStartup\u003e predicate) {","lastModifiedDate":"2024-03-19"},{"lineNumber":158,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":162,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":163,"author":{"gitId":"menatahari"},"content":" * A Model stub that contains a single startup.","lastModifiedDate":"2024-03-19"},{"lineNumber":164,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":165,"author":{"gitId":"menatahari"},"content":" private class ModelStubWithStartup extends ModelStub {","lastModifiedDate":"2024-03-19"},{"lineNumber":166,"author":{"gitId":"menatahari"},"content":" private final Startup startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":168,"author":{"gitId":"menatahari"},"content":" ModelStubWithStartup(Startup startup) {","lastModifiedDate":"2024-03-19"},{"lineNumber":169,"author":{"gitId":"menatahari"},"content":" requireNonNull(startup);","lastModifiedDate":"2024-03-19"},{"lineNumber":170,"author":{"gitId":"menatahari"},"content":" this.startup \u003d startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":173,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":174,"author":{"gitId":"menatahari"},"content":" public boolean hasStartup(Startup startup) {","lastModifiedDate":"2024-03-19"},{"lineNumber":175,"author":{"gitId":"menatahari"},"content":" requireNonNull(startup);","lastModifiedDate":"2024-03-19"},{"lineNumber":176,"author":{"gitId":"menatahari"},"content":" return this.startup.isSameStartup(startup);","lastModifiedDate":"2024-03-19"},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":180,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":181,"author":{"gitId":"menatahari"},"content":" * A Model stub that always accept the startup being added.","lastModifiedDate":"2024-03-19"},{"lineNumber":182,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":183,"author":{"gitId":"menatahari"},"content":" private class ModelStubAcceptingStartupAdded extends ModelStub {","lastModifiedDate":"2024-03-19"},{"lineNumber":184,"author":{"gitId":"menatahari"},"content":" final ArrayList\u003cStartup\u003e startupsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-19"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":186,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07"},{"lineNumber":187,"author":{"gitId":"menatahari"},"content":" public boolean hasStartup(Startup startup) {","lastModifiedDate":"2024-03-19"},{"lineNumber":188,"author":{"gitId":"menatahari"},"content":" requireNonNull(startup);","lastModifiedDate":"2024-03-19"},{"lineNumber":189,"author":{"gitId":"menatahari"},"content":" return startupsAdded.stream().anyMatch(startup::isSameStartup);","lastModifiedDate":"2024-03-19"},{"lineNumber":190,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":192,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":193,"author":{"gitId":"menatahari"},"content":" public void addStartup(Startup startup) {","lastModifiedDate":"2024-03-19"},{"lineNumber":194,"author":{"gitId":"menatahari"},"content":" requireNonNull(startup);","lastModifiedDate":"2024-03-19"},{"lineNumber":195,"author":{"gitId":"menatahari"},"content":" startupsAdded.add(startup);","lastModifiedDate":"2024-03-19"},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":198,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":199,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04"},{"lineNumber":200,"author":{"gitId":"-"},"content":" return new AddressBook();","lastModifiedDate":"2017-05-04"},{"lineNumber":201,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":202,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":204,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12"}],"authorContributionMap":{"menatahari":42,"-":162}},{"path":"src/test/java/seedu/address/logic/commands/ClearCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":4,"author":{"gitId":"menatahari"},"content":"import static seedu.address.testutil.TypicalStartups.getTypicalAddressBook;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2018-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class ClearCommandTest {","lastModifiedDate":"2017-06-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public void execute_emptyAddressBook_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":17,"author":{"gitId":"-"},"content":" Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2018-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ClearCommand(), model, ClearCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void execute_nonEmptyAddressBook_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2018-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" expectedModel.setAddressBook(new AddressBook());","lastModifiedDate":"2018-11-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ClearCommand(), model, ClearCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-08"}],"authorContributionMap":{"menatahari":1,"-":31}},{"path":"src/test/java/seedu/address/logic/commands/CommandTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05"},{"lineNumber":13,"author":{"gitId":"yeoshuheng"},"content":"import seedu.address.logic.parser.CliSyntax;","lastModifiedDate":"2024-02-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-06-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05"},{"lineNumber":16,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"menatahari"},"content":"import seedu.address.testutil.EditStartupDescriptorBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"dwangwk"},"content":"import seedu.address.testutil.NoteStartupDescriptorBuilder;","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_AMY \u003d \"11111111\";","lastModifiedDate":"2017-07-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_BOB \u003d \"22222222\";","lastModifiedDate":"2017-07-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_AMY \u003d \"Block 312, Amy Street 1\";","lastModifiedDate":"2017-07-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_BOB \u003d \"Block 123, Bobby Street 3\";","lastModifiedDate":"2017-07-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_HUSBAND \u003d \"husband\";","lastModifiedDate":"2017-07-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_FRIEND \u003d \"friend\";","lastModifiedDate":"2017-07-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":37,"author":{"gitId":"yeoshuheng"},"content":" public static final String VALID_INDUSTRY_BOB \u003d \"Finance\";","lastModifiedDate":"2024-02-25"},{"lineNumber":38,"author":{"gitId":"yeoshuheng"},"content":" public static final String VALID_INDUSTRY_AMY \u003d \"Finance\";","lastModifiedDate":"2024-02-25"},{"lineNumber":39,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":40,"author":{"gitId":"yeoshuheng"},"content":" public static final String VALID_FUNDING_BOB \u003d \"A\";","lastModifiedDate":"2024-02-25"},{"lineNumber":41,"author":{"gitId":"yeoshuheng"},"content":" public static final String VALID_FUNDING_AMY \u003d \"A\";","lastModifiedDate":"2024-02-25"},{"lineNumber":42,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":43,"author":{"gitId":"yeoshuheng"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + CliSyntax.PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2024-02-25"},{"lineNumber":44,"author":{"gitId":"yeoshuheng"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + CliSyntax.PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2024-02-25"},{"lineNumber":45,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":46,"author":{"gitId":"yeoshuheng"},"content":" public static final String INDUSTRY_DESC_AMY \u003d \" \" + CliSyntax.PREFIX_INDUSTRY + VALID_INDUSTRY_AMY;","lastModifiedDate":"2024-02-25"},{"lineNumber":47,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":48,"author":{"gitId":"yeoshuheng"},"content":" public static final String INDUSTRY_DESC_BOB \u003d \" \" + CliSyntax.PREFIX_INDUSTRY + VALID_INDUSTRY_BOB;","lastModifiedDate":"2024-02-25"},{"lineNumber":49,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":50,"author":{"gitId":"yeoshuheng"},"content":" public static final String FUNDING_DESC_AMY \u003d \" \" + CliSyntax.PREFIX_FUNDING_STAGE + VALID_FUNDING_AMY;","lastModifiedDate":"2024-02-25"},{"lineNumber":51,"author":{"gitId":"yeoshuheng"},"content":" public static final String FUNDING_DESC_BOB \u003d \" \" + CliSyntax.PREFIX_FUNDING_STAGE + VALID_FUNDING_BOB;","lastModifiedDate":"2024-02-25"},{"lineNumber":52,"author":{"gitId":"yeoshuheng"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + CliSyntax.PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2024-02-25"},{"lineNumber":53,"author":{"gitId":"yeoshuheng"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + CliSyntax.PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2024-02-25"},{"lineNumber":54,"author":{"gitId":"yeoshuheng"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + CliSyntax.PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2024-02-25"},{"lineNumber":55,"author":{"gitId":"yeoshuheng"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + CliSyntax.PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2024-02-25"},{"lineNumber":56,"author":{"gitId":"yeoshuheng"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + CliSyntax.PREFIX_ADDRESS + VALID_ADDRESS_AMY;","lastModifiedDate":"2024-02-25"},{"lineNumber":57,"author":{"gitId":"yeoshuheng"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + CliSyntax.PREFIX_ADDRESS + VALID_ADDRESS_BOB;","lastModifiedDate":"2024-02-25"},{"lineNumber":58,"author":{"gitId":"yeoshuheng"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + CliSyntax.PREFIX_TAG + VALID_TAG_FRIEND;","lastModifiedDate":"2024-02-25"},{"lineNumber":59,"author":{"gitId":"yeoshuheng"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + CliSyntax.PREFIX_TAG + VALID_TAG_HUSBAND;","lastModifiedDate":"2024-02-25"},{"lineNumber":60,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":61,"author":{"gitId":"yeoshuheng"},"content":" public static final String INVALID_NAME_DESC \u003d \" \"","lastModifiedDate":"2024-02-25"},{"lineNumber":62,"author":{"gitId":"yeoshuheng"},"content":" + CliSyntax.PREFIX_NAME + \"James\u0026\"; // \u0027\u0026\u0027 not allowed in names","lastModifiedDate":"2024-02-25"},{"lineNumber":63,"author":{"gitId":"yeoshuheng"},"content":" public static final String INVALID_PHONE_DESC \u003d \" \"","lastModifiedDate":"2024-02-25"},{"lineNumber":64,"author":{"gitId":"yeoshuheng"},"content":" + CliSyntax.PREFIX_PHONE + \"911a\"; // \u0027a\u0027 not allowed in phones","lastModifiedDate":"2024-02-25"},{"lineNumber":65,"author":{"gitId":"yeoshuheng"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \"","lastModifiedDate":"2024-02-25"},{"lineNumber":66,"author":{"gitId":"yeoshuheng"},"content":" + CliSyntax.PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2024-02-25"},{"lineNumber":67,"author":{"gitId":"yeoshuheng"},"content":" public static final String INVALID_ADDRESS_DESC \u003d \" \"","lastModifiedDate":"2024-02-25"},{"lineNumber":68,"author":{"gitId":"yeoshuheng"},"content":" + CliSyntax.PREFIX_ADDRESS; // empty string not allowed for addresses","lastModifiedDate":"2024-02-25"},{"lineNumber":69,"author":{"gitId":"yeoshuheng"},"content":" public static final String INVALID_TAG_DESC \u003d \" \"","lastModifiedDate":"2024-02-25"},{"lineNumber":70,"author":{"gitId":"yeoshuheng"},"content":" + CliSyntax.PREFIX_TAG + \"hubby*\"; // \u0027*\u0027 not allowed in tags","lastModifiedDate":"2024-02-25"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":72,"author":{"gitId":"yeoshuheng"},"content":" public static final String INVALID_INDUSTRY_DESC \u003d \" \" + CliSyntax.PREFIX_INDUSTRY + \"\";","lastModifiedDate":"2024-03-05"},{"lineNumber":73,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":74,"author":{"gitId":"yeoshuheng"},"content":" public static final String INVALID_FUNDING_DESC \u003d \" \" + CliSyntax.PREFIX_FUNDING_STAGE + \"D\";","lastModifiedDate":"2024-03-05"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":79,"author":{"gitId":"menatahari"},"content":" public static final EditCommand.EditStartupDescriptor DESC_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":80,"author":{"gitId":"menatahari"},"content":" public static final EditCommand.EditStartupDescriptor DESC_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":82,"author":{"gitId":"dwangwk"},"content":" public static final NoteCommand.NoteStartupDescriptor DESC_AMY_N;","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"dwangwk"},"content":" public static final NoteCommand.NoteStartupDescriptor DESC_BOB_N;","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05"},{"lineNumber":86,"author":{"gitId":"menatahari"},"content":" DESC_AMY \u003d new EditStartupDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2024-03-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-07-05"},{"lineNumber":88,"author":{"gitId":"yeoshuheng"},"content":" .withTags(VALID_TAG_FRIEND).withIndustry(VALID_INDUSTRY_AMY)","lastModifiedDate":"2024-02-25"},{"lineNumber":89,"author":{"gitId":"yeoshuheng"},"content":" .withFundingStage(VALID_FUNDING_AMY).build();","lastModifiedDate":"2024-02-25"},{"lineNumber":90,"author":{"gitId":"menatahari"},"content":" DESC_BOB \u003d new EditStartupDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2024-03-19"},{"lineNumber":91,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2017-07-05"},{"lineNumber":92,"author":{"gitId":"yeoshuheng"},"content":" .withFundingStage(VALID_FUNDING_BOB).withIndustry(VALID_INDUSTRY_BOB)","lastModifiedDate":"2024-02-25"},{"lineNumber":93,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05"},{"lineNumber":94,"author":{"gitId":"dwangwk"},"content":" DESC_AMY_N \u003d new NoteStartupDescriptorBuilder().withNote(\"Add a note for Amy!\").build();","lastModifiedDate":"2024-03-20"},{"lineNumber":95,"author":{"gitId":"dwangwk"},"content":" DESC_BOB_N \u003d new NoteStartupDescriptorBuilder().withNote(\"Add a note for Bob!\").build();","lastModifiedDate":"2024-03-20"},{"lineNumber":96,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":99,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25"},{"lineNumber":103,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25"},{"lineNumber":105,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":106,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":107,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09"},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":110,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15"},{"lineNumber":111,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":115,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":116,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25"},{"lineNumber":117,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09"},{"lineNumber":118,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":119,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25"},{"lineNumber":120,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":121,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09"},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":125,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":126,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":127,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":128,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":129,"author":{"gitId":"menatahari"},"content":" * - the address book, filtered startup list and selected startup in {@code actualModel} remain unchanged","lastModifiedDate":"2024-03-19"},{"lineNumber":130,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":131,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25"},{"lineNumber":132,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05"},{"lineNumber":133,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05"},{"lineNumber":134,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":135,"author":{"gitId":"menatahari"},"content":" List\u003cStartup\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredStartupList());","lastModifiedDate":"2024-03-19"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":137,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03"},{"lineNumber":138,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":139,"author":{"gitId":"menatahari"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredStartupList());","lastModifiedDate":"2024-03-19"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":141,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20"},{"lineNumber":142,"author":{"gitId":"menatahari"},"content":" * Updates {@code model}\u0027s filtered list to show only the startup at the given {@code targetIndex} in the","lastModifiedDate":"2024-03-19"},{"lineNumber":143,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31"},{"lineNumber":144,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20"},{"lineNumber":145,"author":{"gitId":"menatahari"},"content":" public static void showStartupAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2024-03-19"},{"lineNumber":146,"author":{"gitId":"menatahari"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredStartupList().size());","lastModifiedDate":"2024-03-19"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31"},{"lineNumber":148,"author":{"gitId":"menatahari"},"content":" Startup startup \u003d model.getFilteredStartupList().get(targetIndex.getZeroBased());","lastModifiedDate":"2024-03-19"},{"lineNumber":149,"author":{"gitId":"menatahari"},"content":" final String[] splitName \u003d startup.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2024-03-19"},{"lineNumber":150,"author":{"gitId":"menatahari"},"content":" model.updateFilteredStartupList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2024-03-19"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":152,"author":{"gitId":"menatahari"},"content":" assertEquals(1, model.getFilteredStartupList().size());","lastModifiedDate":"2024-03-19"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":155,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"dwangwk":6,"menatahari":17,"-":91,"yeoshuheng":41}},{"path":"src/test/java/seedu/address/logic/commands/DeleteCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"menatahari"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showStartupAtIndex;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"menatahari"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_STARTUP;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"menatahari"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_STARTUP;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"menatahari"},"content":"import static seedu.address.testutil.TypicalStartups.getTypicalAddressBook;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-06-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-05"},{"lineNumber":20,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2020-12-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * {@code DeleteCommand}.","lastModifiedDate":"2018-01-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class DeleteCommandTest {","lastModifiedDate":"2017-06-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void execute_validIndexUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":32,"author":{"gitId":"menatahari"},"content":" Startup startupToDelete \u003d model.getFilteredStartupList().get(INDEX_FIRST_STARTUP.getZeroBased());","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"menatahari"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(INDEX_FIRST_STARTUP);","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":35,"author":{"gitId":"menatahari"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_STARTUP_SUCCESS,","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"menatahari"},"content":" Messages.format(startupToDelete));","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":39,"author":{"gitId":"menatahari"},"content":" expectedModel.deleteStartup(startupToDelete);","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":46,"author":{"gitId":"menatahari"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredStartupList().size() + 1);","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(outOfBoundIndex);","lastModifiedDate":"2018-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":49,"author":{"gitId":"menatahari"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_STARTUP_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void execute_validIndexFilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":54,"author":{"gitId":"menatahari"},"content":" showStartupAtIndex(model, INDEX_FIRST_STARTUP);","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":56,"author":{"gitId":"menatahari"},"content":" Startup startupToDelete \u003d model.getFilteredStartupList().get(INDEX_FIRST_STARTUP.getZeroBased());","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"menatahari"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(INDEX_FIRST_STARTUP);","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":59,"author":{"gitId":"menatahari"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_STARTUP_SUCCESS,","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"menatahari"},"content":" Messages.format(startupToDelete));","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":63,"author":{"gitId":"menatahari"},"content":" expectedModel.deleteStartup(startupToDelete);","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"menatahari"},"content":" showNoStartup(expectedModel);","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void execute_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":71,"author":{"gitId":"menatahari"},"content":" showStartupAtIndex(model, INDEX_FIRST_STARTUP);","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":73,"author":{"gitId":"menatahari"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_STARTUP;","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-06-05"},{"lineNumber":75,"author":{"gitId":"menatahari"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getStartupList().size());","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":77,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(outOfBoundIndex);","lastModifiedDate":"2018-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":79,"author":{"gitId":"menatahari"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_STARTUP_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":84,"author":{"gitId":"menatahari"},"content":" DeleteCommand deleteFirstCommand \u003d new DeleteCommand(INDEX_FIRST_STARTUP);","lastModifiedDate":"2024-03-19"},{"lineNumber":85,"author":{"gitId":"menatahari"},"content":" DeleteCommand deleteSecondCommand \u003d new DeleteCommand(INDEX_SECOND_STARTUP);","lastModifiedDate":"2024-03-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":91,"author":{"gitId":"menatahari"},"content":" DeleteCommand deleteFirstCommandCopy \u003d new DeleteCommand(INDEX_FIRST_STARTUP);","lastModifiedDate":"2024-03-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2017-06-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2017-06-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2017-06-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":100,"author":{"gitId":"menatahari"},"content":" // different startup -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(targetIndex);","lastModifiedDate":"2019-02-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":" String expected \u003d DeleteCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertEquals(expected, deleteCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":113,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show no one.","lastModifiedDate":"2017-06-05"},{"lineNumber":114,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":115,"author":{"gitId":"menatahari"},"content":" private void showNoStartup(Model model) {","lastModifiedDate":"2024-03-19"},{"lineNumber":116,"author":{"gitId":"menatahari"},"content":" model.updateFilteredStartupList(p -\u003e false);","lastModifiedDate":"2024-03-19"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":118,"author":{"gitId":"menatahari"},"content":" assertTrue(model.getFilteredStartupList().isEmpty());","lastModifiedDate":"2024-03-19"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":120,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"menatahari":30,"-":90}},{"path":"src/test/java/seedu/address/logic/commands/EditCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"menatahari"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showStartupAtIndex;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"menatahari"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_STARTUP;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"menatahari"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_STARTUP;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"menatahari"},"content":"import static seedu.address.testutil.TypicalStartups.getTypicalAddressBook;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":22,"author":{"gitId":"menatahari"},"content":"import seedu.address.logic.commands.EditCommand.EditStartupDescriptor;","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-05-04"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-04"},{"lineNumber":27,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"menatahari"},"content":"import seedu.address.testutil.EditStartupDescriptorBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"menatahari"},"content":"import seedu.address.testutil.StartupBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-04"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for EditCommand.","lastModifiedDate":"2020-12-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-04"},{"lineNumber":34,"author":{"gitId":"-"},"content":"public class EditCommandTest {","lastModifiedDate":"2017-05-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":40,"author":{"gitId":"menatahari"},"content":" Startup editedStartup \u003d new StartupBuilder().build();","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"menatahari"},"content":" EditStartupDescriptor descriptor \u003d new EditStartupDescriptorBuilder(editedStartup).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"menatahari"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_STARTUP, descriptor);","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":44,"author":{"gitId":"menatahari"},"content":" String expectedMessage \u003d String.format(","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"menatahari"},"content":" EditCommand.MESSAGE_EDIT_STARTUP_SUCCESS, Messages.format(editedStartup));","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":47,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":48,"author":{"gitId":"menatahari"},"content":" expectedModel.setStartup(model.getFilteredStartupList().get(0), editedStartup);","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":55,"author":{"gitId":"menatahari"},"content":" Index indexLastStartup \u003d Index.fromOneBased(model.getFilteredStartupList().size());","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"menatahari"},"content":" Startup lastStartup \u003d model.getFilteredStartupList().get(indexLastStartup.getZeroBased());","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":58,"author":{"gitId":"menatahari"},"content":" StartupBuilder startupInList \u003d new StartupBuilder(lastStartup);","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"menatahari"},"content":" Startup editedStartup \u003d startupInList.withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":62,"author":{"gitId":"menatahari"},"content":" EditStartupDescriptor descriptor \u003d new EditStartupDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18"},{"lineNumber":64,"author":{"gitId":"menatahari"},"content":" EditCommand editCommand \u003d new EditCommand(indexLastStartup, descriptor);","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":66,"author":{"gitId":"menatahari"},"content":" String expectedMessage \u003d String.format(","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"menatahari"},"content":" EditCommand.MESSAGE_EDIT_STARTUP_SUCCESS, Messages.format(editedStartup));","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":69,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":70,"author":{"gitId":"menatahari"},"content":" expectedModel.setStartup(lastStartup, editedStartup);","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":77,"author":{"gitId":"menatahari"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_STARTUP, new EditStartupDescriptor());","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"menatahari"},"content":" Startup editedStartup \u003d model.getFilteredStartupList().get(INDEX_FIRST_STARTUP.getZeroBased());","lastModifiedDate":"2024-03-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":80,"author":{"gitId":"menatahari"},"content":" String expectedMessage \u003d String.format(","lastModifiedDate":"2024-03-19"},{"lineNumber":81,"author":{"gitId":"menatahari"},"content":" EditCommand.MESSAGE_EDIT_STARTUP_SUCCESS, Messages.format(editedStartup));","lastModifiedDate":"2024-03-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":83,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":90,"author":{"gitId":"menatahari"},"content":" showStartupAtIndex(model, INDEX_FIRST_STARTUP);","lastModifiedDate":"2024-03-19"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":92,"author":{"gitId":"menatahari"},"content":" Startup startupInFilteredList \u003d model.getFilteredStartupList().get(INDEX_FIRST_STARTUP.getZeroBased());","lastModifiedDate":"2024-03-19"},{"lineNumber":93,"author":{"gitId":"menatahari"},"content":" Startup editedStartup \u003d new StartupBuilder(startupInFilteredList).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":94,"author":{"gitId":"menatahari"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_STARTUP,","lastModifiedDate":"2024-03-19"},{"lineNumber":95,"author":{"gitId":"menatahari"},"content":" new EditStartupDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2024-03-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":97,"author":{"gitId":"menatahari"},"content":" String expectedMessage \u003d String.format(","lastModifiedDate":"2024-03-19"},{"lineNumber":98,"author":{"gitId":"menatahari"},"content":" EditCommand.MESSAGE_EDIT_STARTUP_SUCCESS, Messages.format(editedStartup));","lastModifiedDate":"2024-03-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":101,"author":{"gitId":"menatahari"},"content":" expectedModel.setStartup(model.getFilteredStartupList().get(0), editedStartup);","lastModifiedDate":"2024-03-19"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":107,"author":{"gitId":"menatahari"},"content":" public void execute_duplicateStartupUnfilteredList_failure() {","lastModifiedDate":"2024-03-19"},{"lineNumber":108,"author":{"gitId":"menatahari"},"content":" Startup firstStartup \u003d model.getFilteredStartupList().get(INDEX_FIRST_STARTUP.getZeroBased());","lastModifiedDate":"2024-03-19"},{"lineNumber":109,"author":{"gitId":"menatahari"},"content":" EditStartupDescriptor descriptor \u003d new EditStartupDescriptorBuilder(firstStartup).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":110,"author":{"gitId":"menatahari"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_SECOND_STARTUP, descriptor);","lastModifiedDate":"2024-03-19"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":112,"author":{"gitId":"menatahari"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_STARTUP);","lastModifiedDate":"2024-03-19"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":116,"author":{"gitId":"menatahari"},"content":" public void execute_duplicateStartupFilteredList_failure() {","lastModifiedDate":"2024-03-19"},{"lineNumber":117,"author":{"gitId":"menatahari"},"content":" showStartupAtIndex(model, INDEX_FIRST_STARTUP);","lastModifiedDate":"2024-03-19"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":119,"author":{"gitId":"menatahari"},"content":" // edit startup in filtered list into a duplicate in address book","lastModifiedDate":"2024-03-19"},{"lineNumber":120,"author":{"gitId":"menatahari"},"content":" Startup startupInList \u003d model.getAddressBook().getStartupList().get(INDEX_SECOND_STARTUP.getZeroBased());","lastModifiedDate":"2024-03-19"},{"lineNumber":121,"author":{"gitId":"menatahari"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_STARTUP,","lastModifiedDate":"2024-03-19"},{"lineNumber":122,"author":{"gitId":"menatahari"},"content":" new EditStartupDescriptorBuilder(startupInList).build());","lastModifiedDate":"2024-03-19"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":124,"author":{"gitId":"menatahari"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_STARTUP);","lastModifiedDate":"2024-03-19"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":128,"author":{"gitId":"menatahari"},"content":" public void execute_invalidStartupIndexUnfilteredList_failure() {","lastModifiedDate":"2024-03-19"},{"lineNumber":129,"author":{"gitId":"menatahari"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredStartupList().size() + 1);","lastModifiedDate":"2024-03-19"},{"lineNumber":130,"author":{"gitId":"menatahari"},"content":" EditStartupDescriptor descriptor \u003d new EditStartupDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":131,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":133,"author":{"gitId":"menatahari"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_STARTUP_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-19"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":136,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-18"},{"lineNumber":137,"author":{"gitId":"-"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2017-05-18"},{"lineNumber":138,"author":{"gitId":"-"},"content":" * but smaller than size of address book","lastModifiedDate":"2017-05-18"},{"lineNumber":139,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-18"},{"lineNumber":140,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":141,"author":{"gitId":"menatahari"},"content":" public void execute_invalidStartupIndexFilteredList_failure() {","lastModifiedDate":"2024-03-19"},{"lineNumber":142,"author":{"gitId":"menatahari"},"content":" showStartupAtIndex(model, INDEX_FIRST_STARTUP);","lastModifiedDate":"2024-03-19"},{"lineNumber":143,"author":{"gitId":"menatahari"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_STARTUP;","lastModifiedDate":"2024-03-19"},{"lineNumber":144,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-05-18"},{"lineNumber":145,"author":{"gitId":"menatahari"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getStartupList().size());","lastModifiedDate":"2024-03-19"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":147,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex,","lastModifiedDate":"2018-08-08"},{"lineNumber":148,"author":{"gitId":"menatahari"},"content":" new EditStartupDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2024-03-19"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":150,"author":{"gitId":"menatahari"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_STARTUP_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-19"},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":153,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":155,"author":{"gitId":"menatahari"},"content":" final EditCommand standardCommand \u003d new EditCommand(INDEX_FIRST_STARTUP, DESC_AMY);","lastModifiedDate":"2024-03-19"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":157,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":158,"author":{"gitId":"menatahari"},"content":" EditStartupDescriptor copyDescriptor \u003d new EditStartupDescriptor(DESC_AMY);","lastModifiedDate":"2024-03-19"},{"lineNumber":159,"author":{"gitId":"menatahari"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(INDEX_FIRST_STARTUP, copyDescriptor);","lastModifiedDate":"2024-03-19"},{"lineNumber":160,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":162,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":163,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":166,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":168,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":169,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2017-05-08"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":171,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":172,"author":{"gitId":"menatahari"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_SECOND_STARTUP, DESC_AMY)));","lastModifiedDate":"2024-03-19"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":174,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":175,"author":{"gitId":"menatahari"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_FIRST_STARTUP, DESC_BOB)));","lastModifiedDate":"2024-03-19"},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":178,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23"},{"lineNumber":181,"author":{"gitId":"menatahari"},"content":" EditStartupDescriptor editStartupDescriptor \u003d new EditStartupDescriptor();","lastModifiedDate":"2024-03-19"},{"lineNumber":182,"author":{"gitId":"menatahari"},"content":" EditCommand editCommand \u003d new EditCommand(index, editStartupDescriptor);","lastModifiedDate":"2024-03-19"},{"lineNumber":183,"author":{"gitId":"menatahari"},"content":" String expected \u003d EditCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", editStartupDescriptor\u003d\"","lastModifiedDate":"2024-03-19"},{"lineNumber":184,"author":{"gitId":"menatahari"},"content":" + editStartupDescriptor + \"}\";","lastModifiedDate":"2024-03-19"},{"lineNumber":185,"author":{"gitId":"-"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08"}],"authorContributionMap":{"menatahari":66,"-":122}},{"path":"src/test/java/seedu/address/logic/commands/EditStartupDescriptorTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":16,"author":{"gitId":"menatahari"},"content":"import seedu.address.logic.commands.EditCommand.EditStartupDescriptor;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"menatahari"},"content":"import seedu.address.testutil.EditStartupDescriptorBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":19,"author":{"gitId":"menatahari"},"content":"public class EditStartupDescriptorTest {","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-05"},{"lineNumber":24,"author":{"gitId":"menatahari"},"content":" EditStartupDescriptor descriptorWithSameValues \u003d new EditStartupDescriptor(DESC_AMY);","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(descriptorWithSameValues));","lastModifiedDate":"2017-05-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(DESC_AMY));","lastModifiedDate":"2017-05-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(null));","lastModifiedDate":"2017-05-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(5));","lastModifiedDate":"2017-05-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(DESC_BOB));","lastModifiedDate":"2017-05-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":40,"author":{"gitId":"menatahari"},"content":" EditStartupDescriptor editedAmy \u003d new EditStartupDescriptorBuilder(DESC_AMY).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":44,"author":{"gitId":"menatahari"},"content":" editedAmy \u003d new EditStartupDescriptorBuilder(DESC_AMY).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":48,"author":{"gitId":"menatahari"},"content":" editedAmy \u003d new EditStartupDescriptorBuilder(DESC_AMY).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":52,"author":{"gitId":"menatahari"},"content":" editedAmy \u003d new EditStartupDescriptorBuilder(DESC_AMY).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":56,"author":{"gitId":"menatahari"},"content":" editedAmy \u003d new EditStartupDescriptorBuilder(DESC_AMY).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"menatahari"},"content":" EditStartupDescriptor editStartupDescriptor \u003d new EditStartupDescriptor();","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"menatahari"},"content":" String expected \u003d EditStartupDescriptor.class.getCanonicalName() + \"{name\u003d\"","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"menatahari"},"content":" + editStartupDescriptor.getName().orElse(null) + \", industry\u003d\"","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"menatahari"},"content":" + editStartupDescriptor.getIndustry().orElse(null) + \", funding stage\u003d\"","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"menatahari"},"content":" + editStartupDescriptor.getFundingStage().orElse(null) + \", phone\u003d\"","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"menatahari"},"content":" + editStartupDescriptor.getPhone().orElse(null) + \", email\u003d\"","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"menatahari"},"content":" + editStartupDescriptor.getEmail().orElse(null) + \", address\u003d\"","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"menatahari"},"content":" + editStartupDescriptor.getAddress().orElse(null) + \", tags\u003d\"","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"menatahari"},"content":" + editStartupDescriptor.getTags().orElse(null) + \"}\";","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"menatahari"},"content":" assertEquals(expected, editStartupDescriptor.toString());","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"menatahari":19,"-":54}},{"path":"src/test/java/seedu/address/logic/commands/FindByFundingStageCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"menatahari"},"content":"import static seedu.address.logic.Messages.MESSAGE_STARTUPS_LISTED_OVERVIEW;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2018-08-08"},{"lineNumber":8,"author":{"gitId":"menatahari"},"content":"import static seedu.address.testutil.TypicalStartups.CARL;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"menatahari"},"content":"import static seedu.address.testutil.TypicalStartups.ELLE;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"menatahari"},"content":"import static seedu.address.testutil.TypicalStartups.FIONA;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"menatahari"},"content":"import static seedu.address.testutil.TypicalStartups.getTypicalAddressBook;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.FundingStageContainsKeywordsPredicate;","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"yespiggy"},"content":" * Contains integration tests (interaction with the Model) for {@code FindByFundingStage}.","lastModifiedDate":"2024-03-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"yespiggy"},"content":"public class FindByFundingStageCommandTest {","lastModifiedDate":"2024-03-15"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2018-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-27"},{"lineNumber":32,"author":{"gitId":"yespiggy"},"content":" // Tests for find by names","lastModifiedDate":"2024-03-15"},{"lineNumber":33,"author":{"gitId":"yespiggy"},"content":" FundingStageContainsKeywordsPredicate firstFundingStagePredicate \u003d","lastModifiedDate":"2024-03-15"},{"lineNumber":34,"author":{"gitId":"yespiggy"},"content":" new FundingStageContainsKeywordsPredicate(Collections.singletonList(\"A\"));","lastModifiedDate":"2024-03-15"},{"lineNumber":35,"author":{"gitId":"yespiggy"},"content":" FundingStageContainsKeywordsPredicate secondFundingStagePredicate \u003d","lastModifiedDate":"2024-03-15"},{"lineNumber":36,"author":{"gitId":"yespiggy"},"content":" new FundingStageContainsKeywordsPredicate(Collections.singletonList(\"Seed\"));","lastModifiedDate":"2024-03-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":38,"author":{"gitId":"yespiggy"},"content":" FindCommand findFirstFundingStageCommand \u003d new FindCommand(firstFundingStagePredicate);","lastModifiedDate":"2024-03-15"},{"lineNumber":39,"author":{"gitId":"yespiggy"},"content":" FindCommand findSecondFundingStageCommand \u003d new FindCommand(secondFundingStagePredicate);","lastModifiedDate":"2024-03-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":42,"author":{"gitId":"yespiggy"},"content":" assertTrue(findFirstFundingStageCommand.equals(findFirstFundingStageCommand));","lastModifiedDate":"2024-03-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":45,"author":{"gitId":"yespiggy"},"content":" FindCommand findFirstFundingStageCommandCopy \u003d new FindCommand(firstFundingStagePredicate);","lastModifiedDate":"2024-03-15"},{"lineNumber":46,"author":{"gitId":"yespiggy"},"content":" assertTrue(findFirstFundingStageCommand.equals(findFirstFundingStageCommandCopy));","lastModifiedDate":"2024-03-15"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"yespiggy"},"content":" assertFalse(findFirstFundingStageCommand.equals(1));","lastModifiedDate":"2024-03-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"yespiggy"},"content":" assertFalse(findFirstFundingStageCommand.equals(null));","lastModifiedDate":"2024-03-15"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":54,"author":{"gitId":"menatahari"},"content":" // different startup -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"yespiggy"},"content":" assertFalse(findFirstFundingStageCommand.equals(findSecondFundingStageCommand));","lastModifiedDate":"2024-03-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":59,"author":{"gitId":"menatahari"},"content":" public void execute_zeroKeywords_noStartupFound() {","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"menatahari"},"content":" String expectedMessage \u003d String.format(MESSAGE_STARTUPS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"yespiggy"},"content":" FundingStageContainsKeywordsPredicate predicate \u003d preparePredicate(\" \");","lastModifiedDate":"2024-03-15"},{"lineNumber":62,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":63,"author":{"gitId":"menatahari"},"content":" expectedModel.updateFilteredStartupList(predicate);","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":65,"author":{"gitId":"menatahari"},"content":" assertEquals(Collections.emptyList(), model.getFilteredStartupList());","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":69,"author":{"gitId":"menatahari"},"content":" public void execute_multipleKeywords_multipleStartupsFound() {","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"menatahari"},"content":" String expectedMessage \u003d String.format(MESSAGE_STARTUPS_LISTED_OVERVIEW, 3);","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"yespiggy"},"content":" FundingStageContainsKeywordsPredicate predicate \u003d preparePredicate(\"C\");","lastModifiedDate":"2024-03-15"},{"lineNumber":72,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":73,"author":{"gitId":"menatahari"},"content":" expectedModel.updateFilteredStartupList(predicate);","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":75,"author":{"gitId":"menatahari"},"content":" assertEquals(Arrays.asList(CARL, ELLE, FIONA), model.getFilteredStartupList());","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":78,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"yespiggy"},"content":" FundingStageContainsKeywordsPredicate predicate \u003d","lastModifiedDate":"2024-03-15"},{"lineNumber":81,"author":{"gitId":"yespiggy"},"content":" new FundingStageContainsKeywordsPredicate(Arrays.asList(\"keyword\"));","lastModifiedDate":"2024-03-15"},{"lineNumber":82,"author":{"gitId":"-"},"content":" FindCommand findCommand \u003d new FindCommand(predicate);","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" String expected \u003d FindCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertEquals(expected, findCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-12"},{"lineNumber":88,"author":{"gitId":"yespiggy"},"content":" * Parses {@code userInput} into a {@code FundingStageContainsKeywordsPredicate}.","lastModifiedDate":"2024-03-15"},{"lineNumber":89,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":90,"author":{"gitId":"yespiggy"},"content":" private FundingStageContainsKeywordsPredicate preparePredicate(String userInput) {","lastModifiedDate":"2024-03-15"},{"lineNumber":91,"author":{"gitId":"yespiggy"},"content":" return new FundingStageContainsKeywordsPredicate(Arrays.asList(userInput.split(\"\\\\s+\")));","lastModifiedDate":"2024-03-15"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":93,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"menatahari":15,"yespiggy":22,"-":56}},{"path":"src/test/java/seedu/address/logic/commands/FindByIndustryCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"menatahari"},"content":"import static seedu.address.logic.Messages.MESSAGE_STARTUPS_LISTED_OVERVIEW;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2018-08-08"},{"lineNumber":8,"author":{"gitId":"menatahari"},"content":"import static seedu.address.testutil.TypicalStartups.CARL;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"menatahari"},"content":"import static seedu.address.testutil.TypicalStartups.ELLE;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"menatahari"},"content":"import static seedu.address.testutil.TypicalStartups.FIONA;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"menatahari"},"content":"import static seedu.address.testutil.TypicalStartups.getTypicalAddressBook;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.IndustryContainsKeywordsPredicate;","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"yespiggy"},"content":" * Contains integration tests (interaction with the Model) for {@code FindByIndustryCommand}.","lastModifiedDate":"2024-03-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"yespiggy"},"content":"public class FindByIndustryCommandTest {","lastModifiedDate":"2024-03-15"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2018-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-27"},{"lineNumber":32,"author":{"gitId":"yespiggy"},"content":" // Tests for find by names","lastModifiedDate":"2024-03-15"},{"lineNumber":33,"author":{"gitId":"yespiggy"},"content":" IndustryContainsKeywordsPredicate firstIndustryPredicate \u003d","lastModifiedDate":"2024-03-15"},{"lineNumber":34,"author":{"gitId":"yespiggy"},"content":" new IndustryContainsKeywordsPredicate(Collections.singletonList(\"first\"));","lastModifiedDate":"2024-03-15"},{"lineNumber":35,"author":{"gitId":"yespiggy"},"content":" IndustryContainsKeywordsPredicate secondIndustryPredicate \u003d","lastModifiedDate":"2024-03-15"},{"lineNumber":36,"author":{"gitId":"yespiggy"},"content":" new IndustryContainsKeywordsPredicate(Collections.singletonList(\"second\"));","lastModifiedDate":"2024-03-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":38,"author":{"gitId":"yespiggy"},"content":" FindCommand findFirstIndustryCommand \u003d new FindCommand(firstIndustryPredicate);","lastModifiedDate":"2024-03-15"},{"lineNumber":39,"author":{"gitId":"yespiggy"},"content":" FindCommand findSecondIndustryCommand \u003d new FindCommand(secondIndustryPredicate);","lastModifiedDate":"2024-03-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":42,"author":{"gitId":"yespiggy"},"content":" assertTrue(findFirstIndustryCommand.equals(findFirstIndustryCommand));","lastModifiedDate":"2024-03-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":45,"author":{"gitId":"yespiggy"},"content":" FindCommand findFirstIndustryCommandCopy \u003d new FindCommand(firstIndustryPredicate);","lastModifiedDate":"2024-03-15"},{"lineNumber":46,"author":{"gitId":"yespiggy"},"content":" assertTrue(findFirstIndustryCommand.equals(findFirstIndustryCommandCopy));","lastModifiedDate":"2024-03-15"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"yespiggy"},"content":" assertFalse(findFirstIndustryCommand.equals(1));","lastModifiedDate":"2024-03-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"yespiggy"},"content":" assertFalse(findFirstIndustryCommand.equals(null));","lastModifiedDate":"2024-03-15"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":54,"author":{"gitId":"menatahari"},"content":" // different startup -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"yespiggy"},"content":" assertFalse(findFirstIndustryCommand.equals(findSecondIndustryCommand));","lastModifiedDate":"2024-03-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":59,"author":{"gitId":"menatahari"},"content":" public void execute_zeroKeywords_noStartupFound() {","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"menatahari"},"content":" String expectedMessage \u003d String.format(MESSAGE_STARTUPS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"yespiggy"},"content":" IndustryContainsKeywordsPredicate predicate \u003d preparePredicate(\" \");","lastModifiedDate":"2024-03-15"},{"lineNumber":62,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":63,"author":{"gitId":"menatahari"},"content":" expectedModel.updateFilteredStartupList(predicate);","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":65,"author":{"gitId":"menatahari"},"content":" assertEquals(Collections.emptyList(), model.getFilteredStartupList());","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":69,"author":{"gitId":"menatahari"},"content":" public void execute_multipleKeywords_multipleStartupsFound() {","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"menatahari"},"content":" String expectedMessage \u003d String.format(MESSAGE_STARTUPS_LISTED_OVERVIEW, 3);","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"yespiggy"},"content":" IndustryContainsKeywordsPredicate predicate \u003d preparePredicate(\"web3\");","lastModifiedDate":"2024-03-15"},{"lineNumber":72,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":73,"author":{"gitId":"menatahari"},"content":" expectedModel.updateFilteredStartupList(predicate);","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":75,"author":{"gitId":"menatahari"},"content":" assertEquals(Arrays.asList(CARL, ELLE, FIONA), model.getFilteredStartupList());","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":78,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"yespiggy"},"content":" IndustryContainsKeywordsPredicate predicate \u003d new IndustryContainsKeywordsPredicate(Arrays.asList(\"keyword\"));","lastModifiedDate":"2024-03-15"},{"lineNumber":81,"author":{"gitId":"-"},"content":" FindCommand findCommand \u003d new FindCommand(predicate);","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" String expected \u003d FindCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertEquals(expected, findCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-12"},{"lineNumber":87,"author":{"gitId":"yespiggy"},"content":" * Parses {@code userInput} into a {@code IndustryContainsKeywordsPredicate}.","lastModifiedDate":"2024-03-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":89,"author":{"gitId":"yespiggy"},"content":" private IndustryContainsKeywordsPredicate preparePredicate(String userInput) {","lastModifiedDate":"2024-03-15"},{"lineNumber":90,"author":{"gitId":"yespiggy"},"content":" return new IndustryContainsKeywordsPredicate(Arrays.asList(userInput.split(\"\\\\s+\")));","lastModifiedDate":"2024-03-15"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":92,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"menatahari":15,"yespiggy":21,"-":56}},{"path":"src/test/java/seedu/address/logic/commands/FindByNameCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"menatahari"},"content":"import static seedu.address.logic.Messages.MESSAGE_STARTUPS_LISTED_OVERVIEW;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2018-08-08"},{"lineNumber":8,"author":{"gitId":"menatahari"},"content":"import static seedu.address.testutil.TypicalStartups.CARL;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"menatahari"},"content":"import static seedu.address.testutil.TypicalStartups.ELLE;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"menatahari"},"content":"import static seedu.address.testutil.TypicalStartups.FIONA;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"menatahari"},"content":"import static seedu.address.testutil.TypicalStartups.getTypicalAddressBook;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"yespiggy"},"content":" * Contains integration tests (interaction with the Model) for {@code FindByNameCommand}.","lastModifiedDate":"2024-03-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"yespiggy"},"content":"public class FindByNameCommandTest {","lastModifiedDate":"2024-03-15"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2018-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-27"},{"lineNumber":32,"author":{"gitId":"yespiggy"},"content":" // Tests for find by names","lastModifiedDate":"2024-03-15"},{"lineNumber":33,"author":{"gitId":"yespiggy"},"content":" NameContainsKeywordsPredicate firstNamePredicate \u003d","lastModifiedDate":"2024-03-15"},{"lineNumber":34,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"first\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":35,"author":{"gitId":"yespiggy"},"content":" NameContainsKeywordsPredicate secondNamePredicate \u003d","lastModifiedDate":"2024-03-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"second\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":38,"author":{"gitId":"yespiggy"},"content":" FindCommand findFirstNameCommand \u003d new FindCommand(firstNamePredicate);","lastModifiedDate":"2024-03-15"},{"lineNumber":39,"author":{"gitId":"yespiggy"},"content":" FindCommand findSecondNameCommand \u003d new FindCommand(secondNamePredicate);","lastModifiedDate":"2024-03-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":42,"author":{"gitId":"yespiggy"},"content":" assertTrue(findFirstNameCommand.equals(findFirstNameCommand));","lastModifiedDate":"2024-03-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":45,"author":{"gitId":"yespiggy"},"content":" FindCommand findFirstNameCommandCopy \u003d new FindCommand(firstNamePredicate);","lastModifiedDate":"2024-03-15"},{"lineNumber":46,"author":{"gitId":"yespiggy"},"content":" assertTrue(findFirstNameCommand.equals(findFirstNameCommandCopy));","lastModifiedDate":"2024-03-15"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"yespiggy"},"content":" assertFalse(findFirstNameCommand.equals(1));","lastModifiedDate":"2024-03-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"yespiggy"},"content":" assertFalse(findFirstNameCommand.equals(null));","lastModifiedDate":"2024-03-15"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":54,"author":{"gitId":"menatahari"},"content":" // different startup -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"yespiggy"},"content":" assertFalse(findFirstNameCommand.equals(findSecondNameCommand));","lastModifiedDate":"2024-03-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":59,"author":{"gitId":"menatahari"},"content":" public void execute_zeroKeywords_noStartupFound() {","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"menatahari"},"content":" String expectedMessage \u003d String.format(MESSAGE_STARTUPS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\" \");","lastModifiedDate":"2018-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":63,"author":{"gitId":"menatahari"},"content":" expectedModel.updateFilteredStartupList(predicate);","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":65,"author":{"gitId":"menatahari"},"content":" assertEquals(Collections.emptyList(), model.getFilteredStartupList());","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":69,"author":{"gitId":"menatahari"},"content":" public void execute_multipleKeywords_multipleStartupsFound() {","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"menatahari"},"content":" String expectedMessage \u003d String.format(MESSAGE_STARTUPS_LISTED_OVERVIEW, 3);","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\"Kurz Elle Kunz\");","lastModifiedDate":"2018-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":73,"author":{"gitId":"menatahari"},"content":" expectedModel.updateFilteredStartupList(predicate);","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":75,"author":{"gitId":"menatahari"},"content":" assertEquals(Arrays.asList(CARL, ELLE, FIONA), model.getFilteredStartupList());","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":78,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"keyword\"));","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" FindCommand findCommand \u003d new FindCommand(predicate);","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" String expected \u003d FindCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertEquals(expected, findCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-12"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Parses {@code userInput} into a {@code NameContainsKeywordsPredicate}.","lastModifiedDate":"2018-08-08"},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":89,"author":{"gitId":"-"},"content":" private NameContainsKeywordsPredicate preparePredicate(String userInput) {","lastModifiedDate":"2018-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":" return new NameContainsKeywordsPredicate(Arrays.asList(userInput.split(\"\\\\s+\")));","lastModifiedDate":"2018-08-08"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":92,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"menatahari":15,"yespiggy":13,"-":64}},{"path":"src/test/java/seedu/address/logic/commands/ListCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":4,"author":{"gitId":"menatahari"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showStartupAtIndex;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"menatahari"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_STARTUP;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"menatahari"},"content":"import static seedu.address.testutil.TypicalStartups.getTypicalAddressBook;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for ListCommand.","lastModifiedDate":"2017-06-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class ListCommandTest {","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private Model expectedModel;","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void execute_listIsNotFiltered_showsSameList() {","lastModifiedDate":"2017-08-15"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ListCommand(), model, ListCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public void execute_listIsFiltered_showsEverything() {","lastModifiedDate":"2017-08-15"},{"lineNumber":36,"author":{"gitId":"menatahari"},"content":" showStartupAtIndex(model, INDEX_FIRST_STARTUP);","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ListCommand(), model, ListCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"menatahari":4,"-":35}},{"path":"src/test/java/seedu/address/logic/commands/NoteCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"dwangwk"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"dwangwk"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"dwangwk"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"dwangwk"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"dwangwk"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY_N;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"dwangwk"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB_N;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"dwangwk"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"dwangwk"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"dwangwk"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_STARTUP;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"dwangwk"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_STARTUP;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"dwangwk"},"content":"import static seedu.address.testutil.TypicalStartups.getTypicalAddressBook;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"dwangwk"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"dwangwk"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"dwangwk"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"dwangwk"},"content":"import seedu.address.logic.commands.NoteCommand.NoteStartupDescriptor;","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"dwangwk"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"dwangwk"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"dwangwk"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"dwangwk"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"dwangwk"},"content":"import seedu.address.model.startup.Note;","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"dwangwk"},"content":"import seedu.address.model.startup.Startup;","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"dwangwk"},"content":"import seedu.address.testutil.NoteStartupDescriptorBuilder;","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"dwangwk"},"content":"import seedu.address.testutil.StartupBuilder;","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"dwangwk"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"dwangwk"},"content":" * Contains integration tests (interaction with the Model) and unit tests for NoteCommand.","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"dwangwk"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"dwangwk"},"content":"public class NoteCommandTest {","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"dwangwk"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"dwangwk"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"dwangwk"},"content":" public void execute_noteFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"dwangwk"},"content":" // Setup","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"dwangwk"},"content":" Startup startupToEdit \u003d model.getFilteredStartupList().get(INDEX_FIRST_STARTUP.getZeroBased());","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"dwangwk"},"content":" Note updatedNote \u003d new Note(\"Updated note content\");","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"dwangwk"},"content":" NoteStartupDescriptor descriptor \u003d new NoteStartupDescriptorBuilder().withNote(updatedNote.toString()).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"dwangwk"},"content":" NoteCommand noteCommand \u003d new NoteCommand(INDEX_FIRST_STARTUP, descriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"dwangwk"},"content":" // Expected outcome","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"dwangwk"},"content":" Startup expectedStartup \u003d new StartupBuilder(startupToEdit).withNote(updatedNote.toString()).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"dwangwk"},"content":" String expectedMessage \u003d String.format(NoteCommand.MESSAGE_EDIT_STARTUP_SUCCESS,","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"dwangwk"},"content":" Messages.format(expectedStartup));","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"dwangwk"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"dwangwk"},"content":" expectedModel.setStartup(startupToEdit, expectedStartup);","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"dwangwk"},"content":" // Assert command success","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"dwangwk"},"content":" assertCommandSuccess(noteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"dwangwk"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"dwangwk"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"dwangwk"},"content":" public void execute_invalidStartupIndexUnfilteredList_failure() {","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"dwangwk"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredStartupList().size() + 1);","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"dwangwk"},"content":" NoteStartupDescriptor descriptor \u003d new NoteStartupDescriptorBuilder().withNote(\"Some note\").build();","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"dwangwk"},"content":" NoteCommand noteCommand \u003d new NoteCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"dwangwk"},"content":" assertCommandFailure(noteCommand, model, Messages.MESSAGE_INVALID_STARTUP_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"dwangwk"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"dwangwk"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"dwangwk"},"content":" public void equals() {","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"dwangwk"},"content":" final NoteCommand standardCommand \u003d new NoteCommand(INDEX_FIRST_STARTUP, DESC_AMY_N);","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"dwangwk"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"dwangwk"},"content":" NoteStartupDescriptor copyDescriptor \u003d new NoteStartupDescriptor(DESC_AMY_N);","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"dwangwk"},"content":" NoteCommand commandWithSameValues \u003d new NoteCommand(INDEX_FIRST_STARTUP, copyDescriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"dwangwk"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"dwangwk"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"dwangwk"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"dwangwk"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"dwangwk"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"dwangwk"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"dwangwk"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"dwangwk"},"content":" // different index -\u003e returns false","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"dwangwk"},"content":" assertFalse(standardCommand.equals(new NoteCommand(INDEX_SECOND_STARTUP, DESC_AMY_N)));","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"dwangwk"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"dwangwk"},"content":" assertFalse(standardCommand.equals(new NoteCommand(INDEX_FIRST_STARTUP, DESC_BOB_N)));","lastModifiedDate":"2024-03-20"},{"lineNumber":88,"author":{"gitId":"dwangwk"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":89,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":90,"author":{"gitId":"dwangwk"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":91,"author":{"gitId":"dwangwk"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-20"},{"lineNumber":92,"author":{"gitId":"dwangwk"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-03-20"},{"lineNumber":93,"author":{"gitId":"dwangwk"},"content":" NoteStartupDescriptor noteStartupDescriptor \u003d new NoteStartupDescriptor();","lastModifiedDate":"2024-03-20"},{"lineNumber":94,"author":{"gitId":"dwangwk"},"content":" NoteCommand noteCommand \u003d new NoteCommand(index, noteStartupDescriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":95,"author":{"gitId":"dwangwk"},"content":" String expected \u003d NoteCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", noteStartupDescriptor\u003d\"","lastModifiedDate":"2024-03-20"},{"lineNumber":96,"author":{"gitId":"dwangwk"},"content":" + noteStartupDescriptor + \"}\";","lastModifiedDate":"2024-03-20"},{"lineNumber":97,"author":{"gitId":"dwangwk"},"content":" assertEquals(expected, noteCommand.toString());","lastModifiedDate":"2024-03-20"},{"lineNumber":98,"author":{"gitId":"dwangwk"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":99,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":100,"author":{"gitId":"dwangwk"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"dwangwk":100}},{"path":"src/test/java/seedu/address/logic/parser/AddCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-15"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":6,"author":{"gitId":"menatahari"},"content":"import static seedu.address.testutil.TypicalStartups.AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"menatahari"},"content":"import static seedu.address.testutil.TypicalStartups.BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-15"},{"lineNumber":13,"author":{"gitId":"yeoshuheng"},"content":"import seedu.address.logic.commands.CommandTestUtil;","lastModifiedDate":"2024-02-25"},{"lineNumber":14,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Address;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Email;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.FundingStage;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Industry;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Name;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Phone;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-06-15"},{"lineNumber":22,"author":{"gitId":"menatahari"},"content":"import seedu.address.testutil.StartupBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2017-06-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":29,"author":{"gitId":"menatahari"},"content":" Startup expectedStartup \u003d new StartupBuilder(BOB).withTags(CommandTestUtil.VALID_TAG_FRIEND).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":32,"author":{"gitId":"yeoshuheng"},"content":" assertParseSuccess(parser, CommandTestUtil.PREAMBLE_WHITESPACE","lastModifiedDate":"2024-02-25"},{"lineNumber":33,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.NAME_DESC_BOB + CommandTestUtil.PHONE_DESC_BOB","lastModifiedDate":"2024-02-25"},{"lineNumber":34,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.EMAIL_DESC_BOB","lastModifiedDate":"2024-02-25"},{"lineNumber":35,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.INDUSTRY_DESC_BOB + CommandTestUtil.FUNDING_DESC_BOB","lastModifiedDate":"2024-02-25"},{"lineNumber":36,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.ADDRESS_DESC_BOB","lastModifiedDate":"2024-02-25"},{"lineNumber":37,"author":{"gitId":"menatahari"},"content":" + CommandTestUtil.TAG_DESC_FRIEND, new AddCommand(expectedStartup));","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":" // multiple tags - all accepted","lastModifiedDate":"2017-06-15"},{"lineNumber":41,"author":{"gitId":"menatahari"},"content":" Startup expectedStartupMultipleTags \u003d new StartupBuilder(BOB).withTags(","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"yeoshuheng"},"content":" CommandTestUtil.VALID_TAG_FRIEND, CommandTestUtil.VALID_TAG_HUSBAND)","lastModifiedDate":"2024-02-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-07-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":45,"author":{"gitId":"yeoshuheng"},"content":" CommandTestUtil.NAME_DESC_BOB + CommandTestUtil.PHONE_DESC_BOB","lastModifiedDate":"2024-02-25"},{"lineNumber":46,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.EMAIL_DESC_BOB + CommandTestUtil.ADDRESS_DESC_BOB","lastModifiedDate":"2024-02-25"},{"lineNumber":47,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.INDUSTRY_DESC_BOB + CommandTestUtil.FUNDING_DESC_BOB","lastModifiedDate":"2024-02-25"},{"lineNumber":48,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.TAG_DESC_HUSBAND + CommandTestUtil.TAG_DESC_FRIEND,","lastModifiedDate":"2024-02-25"},{"lineNumber":49,"author":{"gitId":"menatahari"},"content":" new AddCommand(expectedStartupMultipleTags));","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":54,"author":{"gitId":"menatahari"},"content":" String validExpectedStartupString \u003d CommandTestUtil.NAME_DESC_BOB","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.INDUSTRY_DESC_BOB + CommandTestUtil.FUNDING_DESC_BOB","lastModifiedDate":"2024-02-25"},{"lineNumber":56,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.PHONE_DESC_BOB + CommandTestUtil.EMAIL_DESC_BOB","lastModifiedDate":"2024-02-25"},{"lineNumber":57,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.ADDRESS_DESC_BOB + CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2024-02-25"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14"},{"lineNumber":60,"author":{"gitId":"menatahari"},"content":" assertParseFailure(parser, CommandTestUtil.NAME_DESC_AMY + validExpectedStartupString,","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"yeoshuheng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(CliSyntax.PREFIX_NAME));","lastModifiedDate":"2024-03-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":63,"author":{"gitId":"-"},"content":" // multiple phones","lastModifiedDate":"2023-07-14"},{"lineNumber":64,"author":{"gitId":"menatahari"},"content":" assertParseFailure(parser, CommandTestUtil.PHONE_DESC_AMY + validExpectedStartupString,","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"yeoshuheng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(CliSyntax.PREFIX_PHONE));","lastModifiedDate":"2024-03-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14"},{"lineNumber":68,"author":{"gitId":"menatahari"},"content":" assertParseFailure(parser, CommandTestUtil.EMAIL_DESC_AMY + validExpectedStartupString,","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"yeoshuheng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(CliSyntax.PREFIX_EMAIL));","lastModifiedDate":"2024-03-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // multiple addresses","lastModifiedDate":"2023-07-14"},{"lineNumber":72,"author":{"gitId":"menatahari"},"content":" assertParseFailure(parser, CommandTestUtil.ADDRESS_DESC_AMY + validExpectedStartupString,","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"yeoshuheng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(CliSyntax.PREFIX_ADDRESS));","lastModifiedDate":"2024-03-05"},{"lineNumber":74,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":75,"author":{"gitId":"yeoshuheng"},"content":" // multiple funding stage","lastModifiedDate":"2024-03-05"},{"lineNumber":76,"author":{"gitId":"menatahari"},"content":" assertParseFailure(parser, CommandTestUtil.FUNDING_DESC_AMY + validExpectedStartupString,","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"yeoshuheng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(CliSyntax.PREFIX_FUNDING_STAGE));","lastModifiedDate":"2024-03-05"},{"lineNumber":78,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":79,"author":{"gitId":"yeoshuheng"},"content":" // multiple industry","lastModifiedDate":"2024-03-05"},{"lineNumber":80,"author":{"gitId":"menatahari"},"content":" assertParseFailure(parser, CommandTestUtil.INDUSTRY_DESC_AMY + validExpectedStartupString,","lastModifiedDate":"2024-03-19"},{"lineNumber":81,"author":{"gitId":"yeoshuheng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(CliSyntax.PREFIX_INDUSTRY));","lastModifiedDate":"2024-03-05"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":83,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":85,"author":{"gitId":"menatahari"},"content":" validExpectedStartupString + CommandTestUtil.PHONE_DESC_AMY","lastModifiedDate":"2024-03-19"},{"lineNumber":86,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.EMAIL_DESC_AMY + CommandTestUtil.NAME_DESC_AMY","lastModifiedDate":"2024-02-25"},{"lineNumber":87,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.ADDRESS_DESC_AMY,","lastModifiedDate":"2024-03-05"},{"lineNumber":88,"author":{"gitId":"yeoshuheng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(CliSyntax.PREFIX_NAME,","lastModifiedDate":"2024-03-05"},{"lineNumber":89,"author":{"gitId":"yeoshuheng"},"content":" CliSyntax.PREFIX_ADDRESS, CliSyntax.PREFIX_EMAIL, CliSyntax.PREFIX_PHONE));","lastModifiedDate":"2024-03-05"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":91,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":93,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":94,"author":{"gitId":"menatahari"},"content":" assertParseFailure(parser, CommandTestUtil.INVALID_NAME_DESC + validExpectedStartupString,","lastModifiedDate":"2024-03-19"},{"lineNumber":95,"author":{"gitId":"yeoshuheng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(CliSyntax.PREFIX_NAME));","lastModifiedDate":"2024-03-05"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":97,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":98,"author":{"gitId":"menatahari"},"content":" assertParseFailure(parser, CommandTestUtil.INVALID_EMAIL_DESC + validExpectedStartupString,","lastModifiedDate":"2024-03-19"},{"lineNumber":99,"author":{"gitId":"yeoshuheng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(CliSyntax.PREFIX_EMAIL));","lastModifiedDate":"2024-03-05"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":101,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":102,"author":{"gitId":"menatahari"},"content":" assertParseFailure(parser, CommandTestUtil.INVALID_PHONE_DESC + validExpectedStartupString,","lastModifiedDate":"2024-03-19"},{"lineNumber":103,"author":{"gitId":"yeoshuheng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(CliSyntax.PREFIX_PHONE));","lastModifiedDate":"2024-03-05"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":105,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":106,"author":{"gitId":"menatahari"},"content":" assertParseFailure(parser, CommandTestUtil.INVALID_ADDRESS_DESC + validExpectedStartupString,","lastModifiedDate":"2024-03-19"},{"lineNumber":107,"author":{"gitId":"yeoshuheng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(CliSyntax.PREFIX_ADDRESS));","lastModifiedDate":"2024-03-05"},{"lineNumber":108,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":109,"author":{"gitId":"yeoshuheng"},"content":" // invalid industry","lastModifiedDate":"2024-03-05"},{"lineNumber":110,"author":{"gitId":"menatahari"},"content":" assertParseFailure(parser, CommandTestUtil.INVALID_INDUSTRY_DESC + validExpectedStartupString,","lastModifiedDate":"2024-03-19"},{"lineNumber":111,"author":{"gitId":"yeoshuheng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(CliSyntax.PREFIX_INDUSTRY));","lastModifiedDate":"2024-03-05"},{"lineNumber":112,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":113,"author":{"gitId":"yeoshuheng"},"content":" // invalid funding stage","lastModifiedDate":"2024-03-05"},{"lineNumber":114,"author":{"gitId":"menatahari"},"content":" assertParseFailure(parser, CommandTestUtil.INVALID_FUNDING_DESC + validExpectedStartupString,","lastModifiedDate":"2024-03-19"},{"lineNumber":115,"author":{"gitId":"yeoshuheng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(CliSyntax.PREFIX_FUNDING_STAGE));","lastModifiedDate":"2024-03-05"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":117,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":120,"author":{"gitId":"menatahari"},"content":" assertParseFailure(parser, validExpectedStartupString + CommandTestUtil.INVALID_NAME_DESC,","lastModifiedDate":"2024-03-19"},{"lineNumber":121,"author":{"gitId":"yeoshuheng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(CliSyntax.PREFIX_NAME));","lastModifiedDate":"2024-03-05"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":124,"author":{"gitId":"menatahari"},"content":" assertParseFailure(parser, validExpectedStartupString + CommandTestUtil.INVALID_EMAIL_DESC,","lastModifiedDate":"2024-03-19"},{"lineNumber":125,"author":{"gitId":"yeoshuheng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(CliSyntax.PREFIX_EMAIL));","lastModifiedDate":"2024-03-05"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":127,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":128,"author":{"gitId":"menatahari"},"content":" assertParseFailure(parser, validExpectedStartupString + CommandTestUtil.INVALID_PHONE_DESC,","lastModifiedDate":"2024-03-19"},{"lineNumber":129,"author":{"gitId":"yeoshuheng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(CliSyntax.PREFIX_PHONE));","lastModifiedDate":"2024-03-05"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":131,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":132,"author":{"gitId":"menatahari"},"content":" assertParseFailure(parser, validExpectedStartupString + CommandTestUtil.INVALID_ADDRESS_DESC,","lastModifiedDate":"2024-03-19"},{"lineNumber":133,"author":{"gitId":"yeoshuheng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(CliSyntax.PREFIX_ADDRESS));","lastModifiedDate":"2024-03-05"},{"lineNumber":134,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":135,"author":{"gitId":"yeoshuheng"},"content":" // invalid industry","lastModifiedDate":"2024-03-05"},{"lineNumber":136,"author":{"gitId":"menatahari"},"content":" assertParseFailure(parser, validExpectedStartupString + CommandTestUtil.INVALID_INDUSTRY_DESC,","lastModifiedDate":"2024-03-19"},{"lineNumber":137,"author":{"gitId":"yeoshuheng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(CliSyntax.PREFIX_INDUSTRY));","lastModifiedDate":"2024-03-05"},{"lineNumber":138,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":139,"author":{"gitId":"yeoshuheng"},"content":" // invalid funding stage","lastModifiedDate":"2024-03-05"},{"lineNumber":140,"author":{"gitId":"menatahari"},"content":" assertParseFailure(parser, validExpectedStartupString + CommandTestUtil.INVALID_FUNDING_DESC,","lastModifiedDate":"2024-03-19"},{"lineNumber":141,"author":{"gitId":"yeoshuheng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(CliSyntax.PREFIX_FUNDING_STAGE));","lastModifiedDate":"2024-03-05"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":144,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":145,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":146,"author":{"gitId":"-"},"content":" // zero tags","lastModifiedDate":"2017-06-15"},{"lineNumber":147,"author":{"gitId":"menatahari"},"content":" Startup expectedStartup \u003d new StartupBuilder(AMY).withTags().build();","lastModifiedDate":"2024-03-19"},{"lineNumber":148,"author":{"gitId":"yeoshuheng"},"content":" assertParseSuccess(parser, CommandTestUtil.NAME_DESC_AMY","lastModifiedDate":"2024-02-25"},{"lineNumber":149,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.INDUSTRY_DESC_AMY","lastModifiedDate":"2024-02-25"},{"lineNumber":150,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.FUNDING_DESC_AMY + CommandTestUtil.PHONE_DESC_AMY","lastModifiedDate":"2024-02-25"},{"lineNumber":151,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.EMAIL_DESC_AMY + CommandTestUtil.ADDRESS_DESC_AMY,","lastModifiedDate":"2024-02-25"},{"lineNumber":152,"author":{"gitId":"menatahari"},"content":" new AddCommand(expectedStartup));","lastModifiedDate":"2024-03-19"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":155,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":156,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":157,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":159,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":160,"author":{"gitId":"yeoshuheng"},"content":" assertParseFailure(parser, CommandTestUtil.VALID_NAME_BOB","lastModifiedDate":"2024-02-25"},{"lineNumber":161,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.FUNDING_DESC_BOB + CommandTestUtil.INDUSTRY_DESC_BOB","lastModifiedDate":"2024-02-25"},{"lineNumber":162,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.PHONE_DESC_BOB + CommandTestUtil.EMAIL_DESC_BOB","lastModifiedDate":"2024-02-25"},{"lineNumber":163,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.ADDRESS_DESC_BOB,","lastModifiedDate":"2024-02-25"},{"lineNumber":164,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":166,"author":{"gitId":"-"},"content":" // missing phone prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":167,"author":{"gitId":"yeoshuheng"},"content":" assertParseFailure(parser, CommandTestUtil.NAME_DESC_BOB","lastModifiedDate":"2024-02-25"},{"lineNumber":168,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.FUNDING_DESC_BOB + CommandTestUtil.INDUSTRY_DESC_BOB","lastModifiedDate":"2024-02-25"},{"lineNumber":169,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.VALID_PHONE_BOB","lastModifiedDate":"2024-02-25"},{"lineNumber":170,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.EMAIL_DESC_BOB + CommandTestUtil.ADDRESS_DESC_BOB,","lastModifiedDate":"2024-02-25"},{"lineNumber":171,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":173,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":174,"author":{"gitId":"yeoshuheng"},"content":" assertParseFailure(parser, CommandTestUtil.NAME_DESC_BOB","lastModifiedDate":"2024-02-25"},{"lineNumber":175,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.FUNDING_DESC_BOB + CommandTestUtil.INDUSTRY_DESC_BOB","lastModifiedDate":"2024-02-25"},{"lineNumber":176,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.PHONE_DESC_BOB + CommandTestUtil.VALID_EMAIL_BOB","lastModifiedDate":"2024-02-25"},{"lineNumber":177,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.ADDRESS_DESC_BOB,","lastModifiedDate":"2024-02-25"},{"lineNumber":178,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":180,"author":{"gitId":"-"},"content":" // missing address prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":181,"author":{"gitId":"yeoshuheng"},"content":" assertParseFailure(parser, CommandTestUtil.NAME_DESC_BOB","lastModifiedDate":"2024-02-25"},{"lineNumber":182,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.FUNDING_DESC_BOB + CommandTestUtil.INDUSTRY_DESC_BOB","lastModifiedDate":"2024-02-25"},{"lineNumber":183,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.PHONE_DESC_BOB + CommandTestUtil.EMAIL_DESC_BOB","lastModifiedDate":"2024-02-25"},{"lineNumber":184,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.VALID_ADDRESS_BOB,","lastModifiedDate":"2024-02-25"},{"lineNumber":185,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":187,"author":{"gitId":"yeoshuheng"},"content":" // missing industry prefix","lastModifiedDate":"2024-03-05"},{"lineNumber":188,"author":{"gitId":"yeoshuheng"},"content":" assertParseFailure(parser, CommandTestUtil.NAME_DESC_BOB","lastModifiedDate":"2024-03-05"},{"lineNumber":189,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.FUNDING_DESC_BOB + CommandTestUtil.ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-05"},{"lineNumber":190,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.PHONE_DESC_BOB + CommandTestUtil.EMAIL_DESC_BOB","lastModifiedDate":"2024-03-05"},{"lineNumber":191,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.VALID_ADDRESS_BOB,","lastModifiedDate":"2024-03-05"},{"lineNumber":192,"author":{"gitId":"yeoshuheng"},"content":" expectedMessage);","lastModifiedDate":"2024-03-05"},{"lineNumber":193,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":194,"author":{"gitId":"yeoshuheng"},"content":" // missing funding stage prefix","lastModifiedDate":"2024-03-05"},{"lineNumber":195,"author":{"gitId":"yeoshuheng"},"content":" assertParseFailure(parser, CommandTestUtil.NAME_DESC_BOB","lastModifiedDate":"2024-03-05"},{"lineNumber":196,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.ADDRESS_DESC_BOB + CommandTestUtil.INDUSTRY_DESC_BOB","lastModifiedDate":"2024-03-05"},{"lineNumber":197,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.PHONE_DESC_BOB + CommandTestUtil.EMAIL_DESC_BOB","lastModifiedDate":"2024-03-05"},{"lineNumber":198,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.VALID_ADDRESS_BOB,","lastModifiedDate":"2024-03-05"},{"lineNumber":199,"author":{"gitId":"yeoshuheng"},"content":" expectedMessage);","lastModifiedDate":"2024-03-05"},{"lineNumber":200,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":201,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15"},{"lineNumber":202,"author":{"gitId":"yeoshuheng"},"content":" assertParseFailure(parser, CommandTestUtil.VALID_NAME_BOB","lastModifiedDate":"2024-02-25"},{"lineNumber":203,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.FUNDING_DESC_BOB + CommandTestUtil.INDUSTRY_DESC_BOB","lastModifiedDate":"2024-02-25"},{"lineNumber":204,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.VALID_PHONE_BOB + CommandTestUtil.VALID_EMAIL_BOB","lastModifiedDate":"2024-02-25"},{"lineNumber":205,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.VALID_ADDRESS_BOB,","lastModifiedDate":"2024-02-25"},{"lineNumber":206,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":209,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":210,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":211,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15"},{"lineNumber":212,"author":{"gitId":"yeoshuheng"},"content":" assertParseFailure(parser, CommandTestUtil.INVALID_NAME_DESC","lastModifiedDate":"2024-02-25"},{"lineNumber":213,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.PHONE_DESC_BOB + CommandTestUtil.EMAIL_DESC_BOB","lastModifiedDate":"2024-02-25"},{"lineNumber":214,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.ADDRESS_DESC_BOB","lastModifiedDate":"2024-02-25"},{"lineNumber":215,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.FUNDING_DESC_BOB + CommandTestUtil.INDUSTRY_DESC_BOB","lastModifiedDate":"2024-02-25"},{"lineNumber":216,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.TAG_DESC_HUSBAND","lastModifiedDate":"2024-02-25"},{"lineNumber":217,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.TAG_DESC_FRIEND, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-25"},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":219,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15"},{"lineNumber":220,"author":{"gitId":"yeoshuheng"},"content":" assertParseFailure(parser, CommandTestUtil.NAME_DESC_BOB","lastModifiedDate":"2024-02-25"},{"lineNumber":221,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.INVALID_PHONE_DESC + CommandTestUtil.EMAIL_DESC_BOB","lastModifiedDate":"2024-02-25"},{"lineNumber":222,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.ADDRESS_DESC_BOB","lastModifiedDate":"2024-02-25"},{"lineNumber":223,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.FUNDING_DESC_BOB + CommandTestUtil.INDUSTRY_DESC_BOB","lastModifiedDate":"2024-02-25"},{"lineNumber":224,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.TAG_DESC_HUSBAND","lastModifiedDate":"2024-02-25"},{"lineNumber":225,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.TAG_DESC_FRIEND, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-25"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":227,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15"},{"lineNumber":228,"author":{"gitId":"yeoshuheng"},"content":" assertParseFailure(parser, CommandTestUtil.NAME_DESC_BOB","lastModifiedDate":"2024-02-25"},{"lineNumber":229,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.PHONE_DESC_BOB + CommandTestUtil.INVALID_EMAIL_DESC","lastModifiedDate":"2024-02-25"},{"lineNumber":230,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.ADDRESS_DESC_BOB","lastModifiedDate":"2024-02-25"},{"lineNumber":231,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.FUNDING_DESC_BOB + CommandTestUtil.INDUSTRY_DESC_BOB","lastModifiedDate":"2024-02-25"},{"lineNumber":232,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.TAG_DESC_HUSBAND","lastModifiedDate":"2024-02-25"},{"lineNumber":233,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.TAG_DESC_FRIEND, Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-25"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":235,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2017-06-15"},{"lineNumber":236,"author":{"gitId":"yeoshuheng"},"content":" assertParseFailure(parser, CommandTestUtil.NAME_DESC_BOB","lastModifiedDate":"2024-02-25"},{"lineNumber":237,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.PHONE_DESC_BOB + CommandTestUtil.EMAIL_DESC_BOB","lastModifiedDate":"2024-02-25"},{"lineNumber":238,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.INVALID_ADDRESS_DESC","lastModifiedDate":"2024-02-25"},{"lineNumber":239,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.FUNDING_DESC_BOB + CommandTestUtil.INDUSTRY_DESC_BOB","lastModifiedDate":"2024-02-25"},{"lineNumber":240,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.TAG_DESC_HUSBAND","lastModifiedDate":"2024-02-25"},{"lineNumber":241,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.TAG_DESC_FRIEND, Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-25"},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":243,"author":{"gitId":"yeoshuheng"},"content":" // invalid funding stage","lastModifiedDate":"2024-03-05"},{"lineNumber":244,"author":{"gitId":"yeoshuheng"},"content":" assertParseFailure(parser, CommandTestUtil.NAME_DESC_BOB","lastModifiedDate":"2024-03-05"},{"lineNumber":245,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.PHONE_DESC_BOB + CommandTestUtil.EMAIL_DESC_BOB","lastModifiedDate":"2024-03-05"},{"lineNumber":246,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.ADDRESS_DESC_BOB + CommandTestUtil.INVALID_FUNDING_DESC","lastModifiedDate":"2024-03-05"},{"lineNumber":247,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.INDUSTRY_DESC_BOB","lastModifiedDate":"2024-03-05"},{"lineNumber":248,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.TAG_DESC_HUSBAND","lastModifiedDate":"2024-03-05"},{"lineNumber":249,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.TAG_DESC_FRIEND, FundingStage.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-05"},{"lineNumber":250,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":251,"author":{"gitId":"yeoshuheng"},"content":" // invalid industry","lastModifiedDate":"2024-03-05"},{"lineNumber":252,"author":{"gitId":"yeoshuheng"},"content":" assertParseFailure(parser, CommandTestUtil.NAME_DESC_BOB","lastModifiedDate":"2024-03-05"},{"lineNumber":253,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.PHONE_DESC_BOB + CommandTestUtil.EMAIL_DESC_BOB","lastModifiedDate":"2024-03-05"},{"lineNumber":254,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-05"},{"lineNumber":255,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.FUNDING_DESC_BOB + CommandTestUtil.INVALID_INDUSTRY_DESC","lastModifiedDate":"2024-03-05"},{"lineNumber":256,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.TAG_DESC_HUSBAND","lastModifiedDate":"2024-03-05"},{"lineNumber":257,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.TAG_DESC_FRIEND, Industry.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-05"},{"lineNumber":258,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":259,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":260,"author":{"gitId":"-"},"content":" // invalid tag","lastModifiedDate":"2017-06-15"},{"lineNumber":261,"author":{"gitId":"yeoshuheng"},"content":" assertParseFailure(parser, CommandTestUtil.NAME_DESC_BOB","lastModifiedDate":"2024-02-25"},{"lineNumber":262,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.PHONE_DESC_BOB + CommandTestUtil.EMAIL_DESC_BOB","lastModifiedDate":"2024-02-25"},{"lineNumber":263,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.ADDRESS_DESC_BOB","lastModifiedDate":"2024-02-25"},{"lineNumber":264,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.FUNDING_DESC_BOB + CommandTestUtil.INDUSTRY_DESC_BOB","lastModifiedDate":"2024-02-25"},{"lineNumber":265,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.INVALID_TAG_DESC","lastModifiedDate":"2024-02-25"},{"lineNumber":266,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.VALID_TAG_FRIEND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-25"},{"lineNumber":267,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":268,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15"},{"lineNumber":269,"author":{"gitId":"yeoshuheng"},"content":" assertParseFailure(parser, CommandTestUtil.INVALID_NAME_DESC","lastModifiedDate":"2024-02-25"},{"lineNumber":270,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.PHONE_DESC_BOB","lastModifiedDate":"2024-02-25"},{"lineNumber":271,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.FUNDING_DESC_BOB + CommandTestUtil.INDUSTRY_DESC_BOB","lastModifiedDate":"2024-02-25"},{"lineNumber":272,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.EMAIL_DESC_BOB + CommandTestUtil.INVALID_ADDRESS_DESC,","lastModifiedDate":"2024-02-25"},{"lineNumber":273,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":275,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":276,"author":{"gitId":"yeoshuheng"},"content":" assertParseFailure(parser, CommandTestUtil.PREAMBLE_NON_EMPTY","lastModifiedDate":"2024-02-25"},{"lineNumber":277,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.NAME_DESC_BOB + CommandTestUtil.PHONE_DESC_BOB","lastModifiedDate":"2024-02-25"},{"lineNumber":278,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.EMAIL_DESC_BOB","lastModifiedDate":"2024-02-25"},{"lineNumber":279,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.FUNDING_DESC_BOB + CommandTestUtil.INDUSTRY_DESC_BOB","lastModifiedDate":"2024-02-25"},{"lineNumber":280,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.ADDRESS_DESC_BOB + CommandTestUtil.TAG_DESC_HUSBAND + CommandTestUtil.TAG_DESC_FRIEND,","lastModifiedDate":"2024-02-25"},{"lineNumber":281,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-12-23"},{"lineNumber":282,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":283,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"menatahari":36,"-":106,"yeoshuheng":141}},{"path":"src/test/java/seedu/address/logic/parser/AddressBookParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"menatahari"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_STARTUP;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-06-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":20,"author":{"gitId":"menatahari"},"content":"import seedu.address.logic.commands.EditCommand.EditStartupDescriptor;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24"},{"lineNumber":26,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.FundingStageContainsKeywordsPredicate;","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.IndustryContainsKeywordsPredicate;","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"menatahari"},"content":"import seedu.address.testutil.EditStartupDescriptorBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"menatahari"},"content":"import seedu.address.testutil.StartupBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"menatahari"},"content":"import seedu.address.testutil.StartupUtil;","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":40,"author":{"gitId":"menatahari"},"content":" Startup startup \u003d new StartupBuilder().build();","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"menatahari"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(StartupUtil.getAddCommand(startup));","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"menatahari"},"content":" assertEquals(new AddCommand(startup), command);","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":54,"author":{"gitId":"menatahari"},"content":" DeleteCommand.COMMAND_WORD + \" \" + INDEX_FIRST_STARTUP.getOneBased());","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"menatahari"},"content":" assertEquals(new DeleteCommand(INDEX_FIRST_STARTUP), command);","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":60,"author":{"gitId":"menatahari"},"content":" Startup startup \u003d new StartupBuilder().build();","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"menatahari"},"content":" EditStartupDescriptor descriptor \u003d new EditStartupDescriptorBuilder(startup).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-27"},{"lineNumber":63,"author":{"gitId":"menatahari"},"content":" + INDEX_FIRST_STARTUP.getOneBased() + \" \" + StartupUtil.getEditStartupDescriptorDetails(descriptor));","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"menatahari"},"content":" assertEquals(new EditCommand(INDEX_FIRST_STARTUP, descriptor), command);","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":74,"author":{"gitId":"yespiggy"},"content":" public void parseCommand_findByName() throws Exception {","lastModifiedDate":"2024-03-15"},{"lineNumber":75,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2017-06-12"},{"lineNumber":76,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":77,"author":{"gitId":"yespiggy"},"content":" FindCommand.COMMAND_WORD + \" n/\" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2024-03-15"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertEquals(new FindCommand(new NameContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2017-06-12"},{"lineNumber":79,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":80,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":81,"author":{"gitId":"yespiggy"},"content":" @Test","lastModifiedDate":"2024-03-15"},{"lineNumber":82,"author":{"gitId":"yespiggy"},"content":" public void parseCommand_findByIndustry() throws Exception {","lastModifiedDate":"2024-03-15"},{"lineNumber":83,"author":{"gitId":"yespiggy"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"web3\", \"crypto\", \"greentech\");","lastModifiedDate":"2024-03-15"},{"lineNumber":84,"author":{"gitId":"yespiggy"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2024-03-15"},{"lineNumber":85,"author":{"gitId":"yespiggy"},"content":" FindCommand.COMMAND_WORD + \" i/\" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2024-03-15"},{"lineNumber":86,"author":{"gitId":"yespiggy"},"content":" assertEquals(new FindCommand(new IndustryContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2024-03-15"},{"lineNumber":87,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":88,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":89,"author":{"gitId":"yespiggy"},"content":" @Test","lastModifiedDate":"2024-03-15"},{"lineNumber":90,"author":{"gitId":"yespiggy"},"content":" public void parseCommand_findByFundingStage() throws Exception {","lastModifiedDate":"2024-03-15"},{"lineNumber":91,"author":{"gitId":"yespiggy"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"A\", \"C\");","lastModifiedDate":"2024-03-15"},{"lineNumber":92,"author":{"gitId":"yespiggy"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2024-03-15"},{"lineNumber":93,"author":{"gitId":"yespiggy"},"content":" FindCommand.COMMAND_WORD + \" f/\" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2024-03-15"},{"lineNumber":94,"author":{"gitId":"yespiggy"},"content":" assertEquals(new FindCommand(new FundingStageContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2024-03-15"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD) instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" 3\") instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":110,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":116,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":119,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"menatahari":18,"yespiggy":18,"-":83}},{"path":"src/test/java/seedu/address/logic/parser/DeleteCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-09"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":6,"author":{"gitId":"menatahari"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_STARTUP;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-06-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * As we are only doing white-box testing, our test cases do not cover path variations","lastModifiedDate":"2017-06-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * outside of the DeleteCommand code. For example, inputs \"1\" and \"1 abc\" take the","lastModifiedDate":"2017-06-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * same path through the DeleteCommand, and therefore we test only one of them.","lastModifiedDate":"2017-06-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * The path variation for those two cases occur inside the ParserUtil, and","lastModifiedDate":"2017-06-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * therefore should be covered by the ParserUtilTest.","lastModifiedDate":"2017-06-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class DeleteCommandParserTest {","lastModifiedDate":"2017-06-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private DeleteCommandParser parser \u003d new DeleteCommandParser();","lastModifiedDate":"2017-06-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void parse_validArgs_returnsDeleteCommand() {","lastModifiedDate":"2017-08-15"},{"lineNumber":25,"author":{"gitId":"menatahari"},"content":" assertParseSuccess(parser, \"1\", new DeleteCommand(INDEX_FIRST_STARTUP));","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"a\", String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-07-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-09"}],"authorContributionMap":{"menatahari":2,"-":30}},{"path":"src/test/java/seedu/address/logic/parser/EditCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-04"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-04"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":10,"author":{"gitId":"menatahari"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_STARTUP;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"menatahari"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_STARTUP;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"menatahari"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_STARTUP;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":18,"author":{"gitId":"yeoshuheng"},"content":"import seedu.address.logic.commands.CommandTestUtil;","lastModifiedDate":"2024-03-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-05-04"},{"lineNumber":20,"author":{"gitId":"menatahari"},"content":"import seedu.address.logic.commands.EditCommand.EditStartupDescriptor;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Address;","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Email;","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Name;","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Phone;","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-04"},{"lineNumber":26,"author":{"gitId":"menatahari"},"content":"import seedu.address.testutil.EditStartupDescriptorBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class EditCommandParserTest {","lastModifiedDate":"2017-05-04"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String TAG_EMPTY \u003d \" \" + PREFIX_TAG;","lastModifiedDate":"2017-05-04"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2017-05-04"},{"lineNumber":33,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-05-04"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private EditCommandParser parser \u003d new EditCommandParser();","lastModifiedDate":"2017-05-04"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":39,"author":{"gitId":"-"},"content":" // no index specified","lastModifiedDate":"2017-05-04"},{"lineNumber":40,"author":{"gitId":"yeoshuheng"},"content":" assertParseFailure(parser, CommandTestUtil.VALID_NAME_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":42,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\", EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-07-06"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // no index and no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2017-06-06"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // negative index","lastModifiedDate":"2017-05-04"},{"lineNumber":52,"author":{"gitId":"yeoshuheng"},"content":" assertParseFailure(parser, \"-5\" + CommandTestUtil.NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // zero index","lastModifiedDate":"2017-06-06"},{"lineNumber":55,"author":{"gitId":"yeoshuheng"},"content":" assertParseFailure(parser, \"0\" + CommandTestUtil.NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2017-06-06"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06"},{"lineNumber":60,"author":{"gitId":"-"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2017-06-06"},{"lineNumber":61,"author":{"gitId":"yeoshuheng"},"content":" assertParseFailure(parser, \"1 x/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-02-25"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":66,"author":{"gitId":"yeoshuheng"},"content":" assertParseFailure(parser, \"1\"","lastModifiedDate":"2024-03-05"},{"lineNumber":67,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2024-03-05"},{"lineNumber":68,"author":{"gitId":"yeoshuheng"},"content":" assertParseFailure(parser, \"1\"","lastModifiedDate":"2024-03-05"},{"lineNumber":69,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.INVALID_PHONE_DESC, Phone.MESSAGE_CONSTRAINTS); // invalid phone","lastModifiedDate":"2024-03-05"},{"lineNumber":70,"author":{"gitId":"yeoshuheng"},"content":" assertParseFailure(parser, \"1\"","lastModifiedDate":"2024-03-05"},{"lineNumber":71,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.INVALID_EMAIL_DESC, Email.MESSAGE_CONSTRAINTS); // invalid email","lastModifiedDate":"2024-03-05"},{"lineNumber":72,"author":{"gitId":"yeoshuheng"},"content":" assertParseFailure(parser, \"1\"","lastModifiedDate":"2024-03-05"},{"lineNumber":73,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.INVALID_ADDRESS_DESC, Address.MESSAGE_CONSTRAINTS); // invalid address","lastModifiedDate":"2024-03-05"},{"lineNumber":74,"author":{"gitId":"yeoshuheng"},"content":" assertParseFailure(parser, \"1\"","lastModifiedDate":"2024-03-05"},{"lineNumber":75,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.INVALID_TAG_DESC, Tag.MESSAGE_CONSTRAINTS); // invalid tag","lastModifiedDate":"2024-03-05"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":77,"author":{"gitId":"-"},"content":" // invalid phone followed by valid email","lastModifiedDate":"2017-05-04"},{"lineNumber":78,"author":{"gitId":"yeoshuheng"},"content":" assertParseFailure(parser, \"1\"","lastModifiedDate":"2024-03-05"},{"lineNumber":79,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.INVALID_PHONE_DESC","lastModifiedDate":"2024-03-05"},{"lineNumber":80,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.EMAIL_DESC_AMY, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-05"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":82,"author":{"gitId":"menatahari"},"content":" // while parsing {@code PREFIX_TAG} alone will reset the tags of the {@code Startup} being edited,","lastModifiedDate":"2024-03-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":" // parsing it together with a valid tag results in error","lastModifiedDate":"2017-05-04"},{"lineNumber":84,"author":{"gitId":"yeoshuheng"},"content":" assertParseFailure(parser, \"1\"","lastModifiedDate":"2024-03-05"},{"lineNumber":85,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.TAG_DESC_FRIEND + CommandTestUtil.TAG_DESC_HUSBAND","lastModifiedDate":"2024-03-05"},{"lineNumber":86,"author":{"gitId":"yeoshuheng"},"content":" + TAG_EMPTY, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-05"},{"lineNumber":87,"author":{"gitId":"yeoshuheng"},"content":" assertParseFailure(parser, \"1\" + CommandTestUtil.TAG_DESC_FRIEND","lastModifiedDate":"2024-03-05"},{"lineNumber":88,"author":{"gitId":"yeoshuheng"},"content":" + TAG_EMPTY + CommandTestUtil.TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-05"},{"lineNumber":89,"author":{"gitId":"yeoshuheng"},"content":" assertParseFailure(parser, \"1\" + TAG_EMPTY","lastModifiedDate":"2024-03-05"},{"lineNumber":90,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.TAG_DESC_FRIEND","lastModifiedDate":"2024-03-05"},{"lineNumber":91,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-05"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":93,"author":{"gitId":"-"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2017-05-04"},{"lineNumber":94,"author":{"gitId":"yeoshuheng"},"content":" assertParseFailure(parser, \"1\"","lastModifiedDate":"2024-03-05"},{"lineNumber":95,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.INVALID_NAME_DESC + CommandTestUtil.INVALID_EMAIL_DESC","lastModifiedDate":"2024-03-05"},{"lineNumber":96,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.VALID_ADDRESS_AMY + CommandTestUtil.VALID_PHONE_AMY,","lastModifiedDate":"2024-03-05"},{"lineNumber":97,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":100,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":101,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":102,"author":{"gitId":"menatahari"},"content":" Index targetIndex \u003d INDEX_SECOND_STARTUP;","lastModifiedDate":"2024-03-19"},{"lineNumber":103,"author":{"gitId":"yeoshuheng"},"content":" String userInput \u003d targetIndex.getOneBased() + CommandTestUtil.PHONE_DESC_BOB","lastModifiedDate":"2024-03-05"},{"lineNumber":104,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.TAG_DESC_HUSBAND","lastModifiedDate":"2024-03-05"},{"lineNumber":105,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.EMAIL_DESC_AMY + CommandTestUtil.ADDRESS_DESC_AMY","lastModifiedDate":"2024-03-05"},{"lineNumber":106,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.NAME_DESC_AMY + CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2024-03-05"},{"lineNumber":107,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":108,"author":{"gitId":"menatahari"},"content":" EditStartupDescriptor descriptor \u003d new EditStartupDescriptorBuilder().withName(CommandTestUtil.VALID_NAME_AMY)","lastModifiedDate":"2024-03-19"},{"lineNumber":109,"author":{"gitId":"yeoshuheng"},"content":" .withPhone(CommandTestUtil.VALID_PHONE_BOB).withEmail(","lastModifiedDate":"2024-03-05"},{"lineNumber":110,"author":{"gitId":"yeoshuheng"},"content":" CommandTestUtil.VALID_EMAIL_AMY).withAddress(CommandTestUtil.VALID_ADDRESS_AMY)","lastModifiedDate":"2024-03-05"},{"lineNumber":111,"author":{"gitId":"yeoshuheng"},"content":" .withTags(CommandTestUtil.VALID_TAG_HUSBAND, CommandTestUtil.VALID_TAG_FRIEND).build();","lastModifiedDate":"2024-03-05"},{"lineNumber":112,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":118,"author":{"gitId":"-"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":119,"author":{"gitId":"menatahari"},"content":" Index targetIndex \u003d INDEX_FIRST_STARTUP;","lastModifiedDate":"2024-03-19"},{"lineNumber":120,"author":{"gitId":"yeoshuheng"},"content":" String userInput \u003d targetIndex.getOneBased() + CommandTestUtil.PHONE_DESC_BOB + CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2024-03-05"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":122,"author":{"gitId":"menatahari"},"content":" EditStartupDescriptor descriptor \u003d new EditStartupDescriptorBuilder().withPhone(CommandTestUtil.VALID_PHONE_BOB)","lastModifiedDate":"2024-03-19"},{"lineNumber":123,"author":{"gitId":"yeoshuheng"},"content":" .withEmail(CommandTestUtil.VALID_EMAIL_AMY).build();","lastModifiedDate":"2024-03-05"},{"lineNumber":124,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":129,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":130,"author":{"gitId":"-"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":131,"author":{"gitId":"-"},"content":" // name","lastModifiedDate":"2017-05-04"},{"lineNumber":132,"author":{"gitId":"menatahari"},"content":" Index targetIndex \u003d INDEX_THIRD_STARTUP;","lastModifiedDate":"2024-03-19"},{"lineNumber":133,"author":{"gitId":"yeoshuheng"},"content":" String userInput \u003d targetIndex.getOneBased() + CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-03-05"},{"lineNumber":134,"author":{"gitId":"menatahari"},"content":" EditStartupDescriptor descriptor \u003d new EditStartupDescriptorBuilder().withName(","lastModifiedDate":"2024-03-19"},{"lineNumber":135,"author":{"gitId":"yeoshuheng"},"content":" CommandTestUtil.VALID_NAME_AMY).build();","lastModifiedDate":"2024-03-05"},{"lineNumber":136,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":137,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":139,"author":{"gitId":"-"},"content":" // phone","lastModifiedDate":"2017-05-04"},{"lineNumber":140,"author":{"gitId":"yeoshuheng"},"content":" userInput \u003d targetIndex.getOneBased() + CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2024-03-05"},{"lineNumber":141,"author":{"gitId":"menatahari"},"content":" descriptor \u003d new EditStartupDescriptorBuilder().withPhone(","lastModifiedDate":"2024-03-19"},{"lineNumber":142,"author":{"gitId":"yeoshuheng"},"content":" CommandTestUtil.VALID_PHONE_AMY).build();","lastModifiedDate":"2024-03-05"},{"lineNumber":143,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":144,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":146,"author":{"gitId":"-"},"content":" // email","lastModifiedDate":"2017-05-04"},{"lineNumber":147,"author":{"gitId":"yeoshuheng"},"content":" userInput \u003d targetIndex.getOneBased() + CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2024-03-05"},{"lineNumber":148,"author":{"gitId":"menatahari"},"content":" descriptor \u003d new EditStartupDescriptorBuilder().withEmail(","lastModifiedDate":"2024-03-19"},{"lineNumber":149,"author":{"gitId":"yeoshuheng"},"content":" CommandTestUtil.VALID_EMAIL_AMY).build();","lastModifiedDate":"2024-03-05"},{"lineNumber":150,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":151,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":153,"author":{"gitId":"-"},"content":" // address","lastModifiedDate":"2017-05-04"},{"lineNumber":154,"author":{"gitId":"yeoshuheng"},"content":" userInput \u003d targetIndex.getOneBased() + CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2024-03-05"},{"lineNumber":155,"author":{"gitId":"menatahari"},"content":" descriptor \u003d new EditStartupDescriptorBuilder().withAddress(","lastModifiedDate":"2024-03-19"},{"lineNumber":156,"author":{"gitId":"yeoshuheng"},"content":" CommandTestUtil.VALID_ADDRESS_AMY).build();","lastModifiedDate":"2024-03-05"},{"lineNumber":157,"author":{"gitId":"yeoshuheng"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-05"},{"lineNumber":158,"author":{"gitId":"yeoshuheng"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-05"},{"lineNumber":159,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":160,"author":{"gitId":"yeoshuheng"},"content":" // industry","lastModifiedDate":"2024-03-05"},{"lineNumber":161,"author":{"gitId":"yeoshuheng"},"content":" userInput \u003d targetIndex.getOneBased() + CommandTestUtil.INDUSTRY_DESC_AMY;","lastModifiedDate":"2024-03-05"},{"lineNumber":162,"author":{"gitId":"menatahari"},"content":" descriptor \u003d new EditStartupDescriptorBuilder().withIndustry(","lastModifiedDate":"2024-03-19"},{"lineNumber":163,"author":{"gitId":"yeoshuheng"},"content":" CommandTestUtil.VALID_INDUSTRY_AMY).build();","lastModifiedDate":"2024-03-05"},{"lineNumber":164,"author":{"gitId":"yeoshuheng"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-05"},{"lineNumber":165,"author":{"gitId":"yeoshuheng"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-05"},{"lineNumber":166,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":167,"author":{"gitId":"yeoshuheng"},"content":" // funding stage","lastModifiedDate":"2024-03-05"},{"lineNumber":168,"author":{"gitId":"yeoshuheng"},"content":" userInput \u003d targetIndex.getOneBased() + CommandTestUtil.FUNDING_DESC_AMY;","lastModifiedDate":"2024-03-05"},{"lineNumber":169,"author":{"gitId":"menatahari"},"content":" descriptor \u003d new EditStartupDescriptorBuilder().withFundingStage(","lastModifiedDate":"2024-03-19"},{"lineNumber":170,"author":{"gitId":"yeoshuheng"},"content":" CommandTestUtil.VALID_FUNDING_AMY).build();","lastModifiedDate":"2024-03-05"},{"lineNumber":171,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":172,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":174,"author":{"gitId":"-"},"content":" // tags","lastModifiedDate":"2017-05-04"},{"lineNumber":175,"author":{"gitId":"yeoshuheng"},"content":" userInput \u003d targetIndex.getOneBased() + CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2024-03-05"},{"lineNumber":176,"author":{"gitId":"menatahari"},"content":" descriptor \u003d new EditStartupDescriptorBuilder().withTags(","lastModifiedDate":"2024-03-19"},{"lineNumber":177,"author":{"gitId":"yeoshuheng"},"content":" CommandTestUtil.VALID_TAG_FRIEND).build();","lastModifiedDate":"2024-03-05"},{"lineNumber":178,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":179,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":180,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":182,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":183,"author":{"gitId":"-"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":184,"author":{"gitId":"-"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2023-07-14"},{"lineNumber":185,"author":{"gitId":"-"},"content":" // AddCommandParserTest#parse_repeatedNonTagValue_failure()","lastModifiedDate":"2023-07-14"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":187,"author":{"gitId":"-"},"content":" // valid followed by invalid","lastModifiedDate":"2023-07-14"},{"lineNumber":188,"author":{"gitId":"menatahari"},"content":" Index targetIndex \u003d INDEX_FIRST_STARTUP;","lastModifiedDate":"2024-03-19"},{"lineNumber":189,"author":{"gitId":"yeoshuheng"},"content":" String userInput \u003d targetIndex.getOneBased()","lastModifiedDate":"2024-03-05"},{"lineNumber":190,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.INVALID_PHONE_DESC","lastModifiedDate":"2024-03-05"},{"lineNumber":191,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2024-03-05"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":193,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":195,"author":{"gitId":"-"},"content":" // invalid followed by valid","lastModifiedDate":"2023-07-14"},{"lineNumber":196,"author":{"gitId":"yeoshuheng"},"content":" userInput \u003d targetIndex.getOneBased() + CommandTestUtil.PHONE_DESC_BOB","lastModifiedDate":"2024-03-05"},{"lineNumber":197,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2024-03-05"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":199,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":201,"author":{"gitId":"-"},"content":" // mulltiple valid fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":202,"author":{"gitId":"yeoshuheng"},"content":" userInput \u003d targetIndex.getOneBased() + CommandTestUtil.PHONE_DESC_AMY","lastModifiedDate":"2024-03-05"},{"lineNumber":203,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.ADDRESS_DESC_AMY + CommandTestUtil.EMAIL_DESC_AMY","lastModifiedDate":"2024-03-05"},{"lineNumber":204,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.TAG_DESC_FRIEND + CommandTestUtil.PHONE_DESC_AMY","lastModifiedDate":"2024-03-05"},{"lineNumber":205,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.ADDRESS_DESC_AMY + CommandTestUtil.EMAIL_DESC_AMY","lastModifiedDate":"2024-03-05"},{"lineNumber":206,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.TAG_DESC_FRIEND","lastModifiedDate":"2024-03-05"},{"lineNumber":207,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.PHONE_DESC_BOB + CommandTestUtil.ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-05"},{"lineNumber":208,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.EMAIL_DESC_BOB + CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2024-03-05"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":210,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":211,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":213,"author":{"gitId":"-"},"content":" // multiple invalid values","lastModifiedDate":"2023-07-14"},{"lineNumber":214,"author":{"gitId":"yeoshuheng"},"content":" userInput \u003d targetIndex.getOneBased() + CommandTestUtil.INVALID_PHONE_DESC","lastModifiedDate":"2024-03-05"},{"lineNumber":215,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.INVALID_ADDRESS_DESC + CommandTestUtil.INVALID_EMAIL_DESC","lastModifiedDate":"2024-03-05"},{"lineNumber":216,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.INVALID_PHONE_DESC + CommandTestUtil.INVALID_ADDRESS_DESC","lastModifiedDate":"2024-03-05"},{"lineNumber":217,"author":{"gitId":"yeoshuheng"},"content":" + CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2024-03-05"},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":219,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":220,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":221,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":223,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":224,"author":{"gitId":"-"},"content":" public void parse_resetTags_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":225,"author":{"gitId":"menatahari"},"content":" Index targetIndex \u003d INDEX_THIRD_STARTUP;","lastModifiedDate":"2024-03-19"},{"lineNumber":226,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + TAG_EMPTY;","lastModifiedDate":"2017-05-25"},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":228,"author":{"gitId":"menatahari"},"content":" EditStartupDescriptor descriptor \u003d new EditStartupDescriptorBuilder().withTags().build();","lastModifiedDate":"2024-03-19"},{"lineNumber":229,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":231,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":232,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":233,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-04"}],"authorContributionMap":{"menatahari":25,"-":131,"yeoshuheng":77}},{"path":"src/test/java/seedu/address/logic/parser/FindCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-27"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":12,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class FindCommandParserTest {","lastModifiedDate":"2017-06-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":" private FindCommandParser parser \u003d new FindCommandParser();","lastModifiedDate":"2017-06-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public void parse_emptyArg_throwsParseException() {","lastModifiedDate":"2017-06-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \" \", String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-07-06"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void parse_validArgs_returnsFindCommand() {","lastModifiedDate":"2017-08-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2017-06-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" FindCommand expectedFindCommand \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" new FindCommand(new NameContainsKeywordsPredicate(Arrays.asList(\"Alice\", \"Bob\")));","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"yespiggy"},"content":" assertParseSuccess(parser, \"find n/Alice Bob\", expectedFindCommand);","lastModifiedDate":"2024-03-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" // multiple whitespaces between keywords","lastModifiedDate":"2017-06-27"},{"lineNumber":31,"author":{"gitId":"yespiggy"},"content":" assertParseSuccess(parser, \"find n/ \\n Alice \\n \\t Bob \\t\", expectedFindCommand);","lastModifiedDate":"2024-03-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-27"}],"authorContributionMap":{"menatahari":1,"yespiggy":2,"-":31}},{"path":"src/test/java/seedu/address/logic/parser/NoteCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"dwangwk"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"dwangwk"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"dwangwk"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"dwangwk"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"dwangwk"},"content":"import seedu.address.logic.commands.NoteCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"dwangwk"},"content":"import seedu.address.model.startup.Note;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"dwangwk"},"content":"public class NoteCommandParserTest {","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"dwangwk"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"dwangwk"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, NoteCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"dwangwk"},"content":" private NoteCommandParser parser \u003d new NoteCommandParser();","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"dwangwk"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"dwangwk"},"content":" public void parse_validArgs_returnsNoteCommand() {","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"dwangwk"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"dwangwk"},"content":" String userInput \u003d targetIndex.getOneBased() + \" Some note\";","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"dwangwk"},"content":" Note note \u003d new Note(\"Some note\");","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"dwangwk"},"content":" NoteCommand.NoteStartupDescriptor descriptor \u003d new NoteCommand.NoteStartupDescriptor();","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"dwangwk"},"content":" descriptor.setNote(note);","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"dwangwk"},"content":" NoteCommand expectedCommand \u003d new NoteCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"dwangwk"},"content":" CommandParserTestUtil.assertParseSuccess(new NoteCommandParser(), userInput, expectedCommand);","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"dwangwk"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"dwangwk"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"dwangwk"},"content":" public void parse_invalidIndex_throwsParseException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"dwangwk"},"content":" String userInput \u003d \"a Some note\";","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"dwangwk"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, NoteCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"dwangwk"},"content":" CommandParserTestUtil.assertParseFailure(new NoteCommandParser(), userInput, expectedMessage);","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"dwangwk"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"dwangwk"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"dwangwk"},"content":" public void parse_missingNoteDescription_throwsParseException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"dwangwk"},"content":" String userInput \u003d \"1 \";","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"dwangwk"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, NoteCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"dwangwk"},"content":" CommandParserTestUtil.assertParseFailure(new NoteCommandParser(), userInput, expectedMessage);","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"dwangwk"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"dwangwk"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"dwangwk"},"content":" public void parse_extraSpaces_returnsNoteCommand() {","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"dwangwk"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"dwangwk"},"content":" String userInput \u003d \" 1 Some note \";","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"dwangwk"},"content":" Note note \u003d new Note(\"Some note\");","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"dwangwk"},"content":" NoteCommand.NoteStartupDescriptor descriptor \u003d new NoteCommand.NoteStartupDescriptor();","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"dwangwk"},"content":" descriptor.setNote(note);","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"dwangwk"},"content":" NoteCommand expectedCommand \u003d new NoteCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"dwangwk"},"content":" CommandParserTestUtil.assertParseSuccess(new NoteCommandParser(), userInput, expectedCommand);","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"dwangwk"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"dwangwk"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"dwangwk":58}},{"path":"src/test/java/seedu/address/logic/parser/ParserUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.ParserUtil.MESSAGE_INVALID_INDEX;","lastModifiedDate":"2017-06-02"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":7,"author":{"gitId":"menatahari"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_STARTUP;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-05-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-05-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-05-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10"},{"lineNumber":17,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Address;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Email;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Name;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Phone;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-22"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class ParserUtilTest {","lastModifiedDate":"2017-05-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2017-05-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2017-05-22"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2017-05-22"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2017-05-22"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2017-05-22"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d \"Rachel Walker\";","lastModifiedDate":"2017-05-22"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d \"123456\";","lastModifiedDate":"2017-05-22"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d \"123 Main Street #0505\";","lastModifiedDate":"2017-05-22"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d \"rachel@example.com\";","lastModifiedDate":"2017-05-22"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_1 \u003d \"friend\";","lastModifiedDate":"2017-05-22"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_2 \u003d \"neighbour\";","lastModifiedDate":"2017-05-22"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final String WHITESPACE \u003d \" \\t\\r\\n\";","lastModifiedDate":"2017-05-29"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void parseIndex_invalidInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseIndex(\"10 a\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void parseIndex_outOfRangeInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_INVALID_INDEX, ()","lastModifiedDate":"2019-03-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" -\u003e ParserUtil.parseIndex(Long.toString(Integer.MAX_VALUE + 1)));","lastModifiedDate":"2019-03-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void parseIndex_validInput_success() throws Exception {","lastModifiedDate":"2017-05-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // No whitespaces","lastModifiedDate":"2017-05-26"},{"lineNumber":53,"author":{"gitId":"menatahari"},"content":" assertEquals(INDEX_FIRST_STARTUP, ParserUtil.parseIndex(\"1\"));","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // Leading and trailing whitespaces","lastModifiedDate":"2017-05-26"},{"lineNumber":56,"author":{"gitId":"menatahari"},"content":" assertEquals(INDEX_FIRST_STARTUP, ParserUtil.parseIndex(\" 1 \"));","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void parseName_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseName((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void parseName_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseName(INVALID_NAME));","lastModifiedDate":"2019-03-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void parseName_validValueWithoutWhitespace_returnsName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":71,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-22"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(VALID_NAME));","lastModifiedDate":"2017-05-29"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-29"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void parseName_validValueWithWhitespace_returnsTrimmedName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":77,"author":{"gitId":"-"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_NAME + WHITESPACE;","lastModifiedDate":"2017-05-29"},{"lineNumber":78,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-29"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(nameWithWhitespace));","lastModifiedDate":"2017-05-29"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void parsePhone_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parsePhone((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void parsePhone_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parsePhone(INVALID_PHONE));","lastModifiedDate":"2019-03-14"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithoutWhitespace_returnsPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":94,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-22"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(VALID_PHONE));","lastModifiedDate":"2017-05-30"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":99,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithWhitespace_returnsTrimmedPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":100,"author":{"gitId":"-"},"content":" String phoneWithWhitespace \u003d WHITESPACE + VALID_PHONE + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":101,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-30"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(phoneWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":106,"author":{"gitId":"-"},"content":" public void parseAddress_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseAddress((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":111,"author":{"gitId":"-"},"content":" public void parseAddress_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseAddress(INVALID_ADDRESS));","lastModifiedDate":"2019-03-14"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":116,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithoutWhitespace_returnsAddress() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":117,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-22"},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(VALID_ADDRESS));","lastModifiedDate":"2017-05-30"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":122,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithWhitespace_returnsTrimmedAddress() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":123,"author":{"gitId":"-"},"content":" String addressWithWhitespace \u003d WHITESPACE + VALID_ADDRESS + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":124,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-30"},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(addressWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":129,"author":{"gitId":"-"},"content":" public void parseEmail_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseEmail((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":133,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":134,"author":{"gitId":"-"},"content":" public void parseEmail_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":135,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseEmail(INVALID_EMAIL));","lastModifiedDate":"2019-03-14"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":138,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":139,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithoutWhitespace_returnsEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":140,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-22"},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(VALID_EMAIL));","lastModifiedDate":"2017-05-30"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":144,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":145,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithWhitespace_returnsTrimmedEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":146,"author":{"gitId":"-"},"content":" String emailWithWhitespace \u003d WHITESPACE + VALID_EMAIL + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":147,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-30"},{"lineNumber":148,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(emailWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":151,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":152,"author":{"gitId":"-"},"content":" public void parseTag_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTag(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":156,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":157,"author":{"gitId":"-"},"content":" public void parseTag_invalidValue_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTag(INVALID_TAG));","lastModifiedDate":"2019-03-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":161,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":162,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithoutWhitespace_returnsTag() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":163,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30"},{"lineNumber":164,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(VALID_TAG_1));","lastModifiedDate":"2017-05-30"},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":167,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":168,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithWhitespace_returnsTrimmedTag() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":169,"author":{"gitId":"-"},"content":" String tagWithWhitespace \u003d WHITESPACE + VALID_TAG_1 + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":170,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30"},{"lineNumber":171,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(tagWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":174,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":175,"author":{"gitId":"-"},"content":" public void parseTags_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTags(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":179,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":180,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithInvalidTags_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, INVALID_TAG)));","lastModifiedDate":"2019-03-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":184,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":185,"author":{"gitId":"-"},"content":" public void parseTags_emptyCollection_returnsEmptySet() throws Exception {","lastModifiedDate":"2017-05-22"},{"lineNumber":186,"author":{"gitId":"-"},"content":" assertTrue(ParserUtil.parseTags(Collections.emptyList()).isEmpty());","lastModifiedDate":"2017-05-22"},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":189,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":190,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithValidTags_returnsTagSet() throws Exception {","lastModifiedDate":"2017-05-22"},{"lineNumber":191,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e actualTagSet \u003d ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, VALID_TAG_2));","lastModifiedDate":"2017-05-22"},{"lineNumber":192,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e expectedTagSet \u003d new HashSet\u003cTag\u003e(Arrays.asList(new Tag(VALID_TAG_1), new Tag(VALID_TAG_2)));","lastModifiedDate":"2017-05-22"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":194,"author":{"gitId":"-"},"content":" assertEquals(expectedTagSet, actualTagSet);","lastModifiedDate":"2017-05-22"},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":196,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-22"}],"authorContributionMap":{"menatahari":7,"-":189}},{"path":"src/test/java/seedu/address/model/AddressBookTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-12-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-04-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":9,"author":{"gitId":"menatahari"},"content":"import static seedu.address.testutil.TypicalStartups.ALICE;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"menatahari"},"content":"import static seedu.address.testutil.TypicalStartups.getTypicalAddressBook;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2016-12-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2016-12-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2016-12-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2016-12-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-12-24"},{"lineNumber":21,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.exceptions.DuplicateStartupException;","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"menatahari"},"content":"import seedu.address.testutil.StartupBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class AddressBookTest {","lastModifiedDate":"2016-12-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2016-12-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2016-12-24"},{"lineNumber":31,"author":{"gitId":"menatahari"},"content":" assertEquals(Collections.emptyList(), addressBook.getStartupList());","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public void resetData_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.resetData(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void resetData_withValidReadOnlyAddressBook_replacesData() {","lastModifiedDate":"2016-12-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" AddressBook newData \u003d getTypicalAddressBook();","lastModifiedDate":"2017-07-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":" addressBook.resetData(newData);","lastModifiedDate":"2016-12-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertEquals(newData, addressBook);","lastModifiedDate":"2016-12-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":47,"author":{"gitId":"menatahari"},"content":" public void resetData_withDuplicateStartups_throwsDuplicateStartupException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"menatahari"},"content":" // Two startups with the same identity fields","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"menatahari"},"content":" Startup editedAlice \u003d new StartupBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-04-19"},{"lineNumber":51,"author":{"gitId":"menatahari"},"content":" List\u003cStartup\u003e newStartups \u003d Arrays.asList(ALICE, editedAlice);","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"menatahari"},"content":" AddressBookStub newData \u003d new AddressBookStub(newStartups);","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":54,"author":{"gitId":"menatahari"},"content":" assertThrows(DuplicateStartupException.class, () -\u003e addressBook.resetData(newData));","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":58,"author":{"gitId":"menatahari"},"content":" public void hasStartup_nullStartup_throwsNullPointerException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"menatahari"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.hasStartup(null));","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":63,"author":{"gitId":"menatahari"},"content":" public void hasStartup_startupNotInAddressBook_returnsFalse() {","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"menatahari"},"content":" assertFalse(addressBook.hasStartup(ALICE));","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":68,"author":{"gitId":"menatahari"},"content":" public void hasStartup_startupInAddressBook_returnsTrue() {","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"menatahari"},"content":" addressBook.addStartup(ALICE);","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"menatahari"},"content":" assertTrue(addressBook.hasStartup(ALICE));","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":74,"author":{"gitId":"menatahari"},"content":" public void hasStartup_startupWithSameIdentityFieldsInAddressBook_returnsTrue() {","lastModifiedDate":"2024-03-19"},{"lineNumber":75,"author":{"gitId":"menatahari"},"content":" addressBook.addStartup(ALICE);","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"menatahari"},"content":" Startup editedAlice \u003d new StartupBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-06"},{"lineNumber":78,"author":{"gitId":"menatahari"},"content":" assertTrue(addressBook.hasStartup(editedAlice));","lastModifiedDate":"2024-03-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":82,"author":{"gitId":"menatahari"},"content":" public void getStartupList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":83,"author":{"gitId":"menatahari"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e addressBook.getStartupList().remove(0));","lastModifiedDate":"2024-03-19"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"menatahari"},"content":" String expected \u003d AddressBook.class.getCanonicalName() + \"{startups\u003d\" + addressBook.getStartupList() + \"}\";","lastModifiedDate":"2024-03-19"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertEquals(expected, addressBook.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-24"},{"lineNumber":93,"author":{"gitId":"menatahari"},"content":" * A stub ReadOnlyAddressBook whose startups list can violate interface constraints.","lastModifiedDate":"2024-03-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-24"},{"lineNumber":95,"author":{"gitId":"-"},"content":" private static class AddressBookStub implements ReadOnlyAddressBook {","lastModifiedDate":"2016-12-24"},{"lineNumber":96,"author":{"gitId":"menatahari"},"content":" private final ObservableList\u003cStartup\u003e startups \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-03-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":98,"author":{"gitId":"menatahari"},"content":" AddressBookStub(Collection\u003cStartup\u003e startups) {","lastModifiedDate":"2024-03-19"},{"lineNumber":99,"author":{"gitId":"menatahari"},"content":" this.startups.setAll(startups);","lastModifiedDate":"2024-03-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-24"},{"lineNumber":103,"author":{"gitId":"menatahari"},"content":" public ObservableList\u003cStartup\u003e getStartupList() {","lastModifiedDate":"2024-03-19"},{"lineNumber":104,"author":{"gitId":"menatahari"},"content":" return startups;","lastModifiedDate":"2024-03-19"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-24"}],"authorContributionMap":{"menatahari":32,"-":76}},{"path":"src/test/java/seedu/address/model/ModelManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2017-05-31"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"menatahari"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_STARTUPS;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"menatahari"},"content":"import static seedu.address.testutil.TypicalStartups.ALICE;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"menatahari"},"content":"import static seedu.address.testutil.TypicalStartups.BENSON;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-31"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":18,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.testutil.AddressBookBuilder;","lastModifiedDate":"2017-05-31"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class ModelManagerTest {","lastModifiedDate":"2017-05-31"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private ModelManager modelManager \u003d new ModelManager();","lastModifiedDate":"2018-08-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2018-11-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertEquals(new UserPrefs(), modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertEquals(new GuiSettings(), modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertEquals(new AddressBook(), new AddressBook(modelManager.getAddressBook()));","lastModifiedDate":"2018-11-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public void setUserPrefs_nullUserPrefs_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setUserPrefs(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void setUserPrefs_validUserPrefs_copiesUserPrefs() {","lastModifiedDate":"2018-12-06"},{"lineNumber":39,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"address/book/file/path\"));","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(new GuiSettings(1, 2, 3, 4));","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" modelManager.setUserPrefs(userPrefs);","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertEquals(userPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // Modifying userPrefs should not modify modelManager\u0027s userPrefs","lastModifiedDate":"2018-12-06"},{"lineNumber":46,"author":{"gitId":"-"},"content":" UserPrefs oldUserPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":47,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"new/address/book/file/path\"));","lastModifiedDate":"2018-12-06"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertEquals(oldUserPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-12-06"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void setGuiSettings_nullGuiSettings_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setGuiSettings(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void setGuiSettings_validGuiSettings_setsGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(1, 2, 3, 4);","lastModifiedDate":"2018-11-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" modelManager.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertEquals(guiSettings, modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setAddressBookFilePath(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_validPath_setsAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" Path path \u003d Paths.get(\"address/book/file/path\");","lastModifiedDate":"2018-11-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" modelManager.setAddressBookFilePath(path);","lastModifiedDate":"2018-11-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertEquals(path, modelManager.getAddressBookFilePath());","lastModifiedDate":"2018-11-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":76,"author":{"gitId":"menatahari"},"content":" public void hasStartup_nullStartup_throwsNullPointerException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"menatahari"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasStartup(null));","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":81,"author":{"gitId":"menatahari"},"content":" public void hasStartup_startupNotInAddressBook_returnsFalse() {","lastModifiedDate":"2024-03-19"},{"lineNumber":82,"author":{"gitId":"menatahari"},"content":" assertFalse(modelManager.hasStartup(ALICE));","lastModifiedDate":"2024-03-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":86,"author":{"gitId":"menatahari"},"content":" public void hasStartup_startupInAddressBook_returnsTrue() {","lastModifiedDate":"2024-03-19"},{"lineNumber":87,"author":{"gitId":"menatahari"},"content":" modelManager.addStartup(ALICE);","lastModifiedDate":"2024-03-19"},{"lineNumber":88,"author":{"gitId":"menatahari"},"content":" assertTrue(modelManager.hasStartup(ALICE));","lastModifiedDate":"2024-03-19"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":92,"author":{"gitId":"menatahari"},"content":" public void getFilteredStartupList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":93,"author":{"gitId":"menatahari"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e modelManager.getFilteredStartupList().remove(0));","lastModifiedDate":"2024-03-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-31"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":98,"author":{"gitId":"menatahari"},"content":" AddressBook addressBook \u003d new AddressBookBuilder().withStartup(ALICE).withStartup(BENSON).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" AddressBook differentAddressBook \u003d new AddressBook();","lastModifiedDate":"2017-05-31"},{"lineNumber":100,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":102,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":103,"author":{"gitId":"-"},"content":" modelManager \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2018-08-06"},{"lineNumber":104,"author":{"gitId":"-"},"content":" ModelManager modelManagerCopy \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2017-05-31"},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManagerCopy));","lastModifiedDate":"2017-05-31"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":107,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManager));","lastModifiedDate":"2017-05-31"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":110,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(null));","lastModifiedDate":"2017-05-31"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":113,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(5));","lastModifiedDate":"2017-05-31"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":116,"author":{"gitId":"-"},"content":" // different addressBook -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(differentAddressBook, userPrefs)));","lastModifiedDate":"2017-05-31"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":119,"author":{"gitId":"-"},"content":" // different filteredList -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":120,"author":{"gitId":"-"},"content":" String[] keywords \u003d ALICE.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-19"},{"lineNumber":121,"author":{"gitId":"menatahari"},"content":" modelManager.updateFilteredStartupList(new NameContainsKeywordsPredicate(Arrays.asList(keywords)));","lastModifiedDate":"2024-03-19"},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, userPrefs)));","lastModifiedDate":"2017-05-31"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":124,"author":{"gitId":"-"},"content":" // resets modelManager to initial state for upcoming tests","lastModifiedDate":"2017-08-05"},{"lineNumber":125,"author":{"gitId":"menatahari"},"content":" modelManager.updateFilteredStartupList(PREDICATE_SHOW_ALL_STARTUPS);","lastModifiedDate":"2024-03-19"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":127,"author":{"gitId":"-"},"content":" // different userPrefs -\u003e returns false","lastModifiedDate":"2018-11-27"},{"lineNumber":128,"author":{"gitId":"-"},"content":" UserPrefs differentUserPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":129,"author":{"gitId":"-"},"content":" differentUserPrefs.setAddressBookFilePath(Paths.get(\"differentFilePath\"));","lastModifiedDate":"2018-08-09"},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, differentUserPrefs)));","lastModifiedDate":"2018-11-27"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":132,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-31"}],"authorContributionMap":{"menatahari":16,"-":116}},{"path":"src/test/java/seedu/address/model/startup/AddressTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"menatahari"},"content":"package seedu.address.model.startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class AddressTest {","lastModifiedDate":"2017-01-16"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04"},{"lineNumber":13,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new Address(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":14,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void constructor_invalidAddress_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":" String invalidAddress \u003d \"\";","lastModifiedDate":"2017-05-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Address(invalidAddress));","lastModifiedDate":"2019-03-14"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void isValidAddress() {","lastModifiedDate":"2017-01-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // null address","lastModifiedDate":"2017-12-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Address.isValidAddress(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // invalid addresses","lastModifiedDate":"2017-01-16"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertFalse(Address.isValidAddress(\"\")); // empty string","lastModifiedDate":"2017-01-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(Address.isValidAddress(\" \")); // spaces only","lastModifiedDate":"2017-01-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // valid addresses","lastModifiedDate":"2017-01-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertTrue(Address.isValidAddress(\"Blk 456, Den Road, #01-355\"));","lastModifiedDate":"2017-01-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertTrue(Address.isValidAddress(\"-\")); // one character","lastModifiedDate":"2017-01-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertTrue(Address.isValidAddress(\"Leng Inc; 1234 Market St; San Francisco CA 2349879; USA\")); // long address","lastModifiedDate":"2017-01-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" Address address \u003d new Address(\"Valid Address\");","lastModifiedDate":"2019-02-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertTrue(address.equals(new Address(\"Valid Address\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertTrue(address.equals(address));","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertFalse(address.equals(null));","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(address.equals(5.0f));","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertFalse(address.equals(new Address(\"Other Valid Address\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16"}],"authorContributionMap":{"menatahari":1,"-":55}},{"path":"src/test/java/seedu/address/model/startup/EmailTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"menatahari"},"content":"package seedu.address.model.startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class EmailTest {","lastModifiedDate":"2017-01-16"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04"},{"lineNumber":13,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new Email(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":14,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void constructor_invalidEmail_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":" String invalidEmail \u003d \"\";","lastModifiedDate":"2017-05-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Email(invalidEmail));","lastModifiedDate":"2019-03-14"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void isValidEmail() {","lastModifiedDate":"2017-01-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // null email","lastModifiedDate":"2017-12-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Email.isValidEmail(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // blank email","lastModifiedDate":"2017-01-16"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"\")); // empty string","lastModifiedDate":"2017-01-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\" \")); // spaces only","lastModifiedDate":"2017-01-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // missing parts","lastModifiedDate":"2017-01-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"@example.com\")); // missing local part","lastModifiedDate":"2017-04-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjackexample.com\")); // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-04-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@\")); // missing domain name","lastModifiedDate":"2017-01-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" // invalid parts","lastModifiedDate":"2017-01-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@-\")); // invalid domain name","lastModifiedDate":"2017-01-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@exam_ple.com\")); // underscore in domain name","lastModifiedDate":"2018-02-09"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peter jack@example.com\")); // spaces in local part","lastModifiedDate":"2017-04-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@exam ple.com\")); // spaces in domain name","lastModifiedDate":"2017-04-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\" peterjack@example.com\")); // leading space","lastModifiedDate":"2018-02-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.com \")); // trailing space","lastModifiedDate":"2018-02-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@@example.com\")); // double \u0027@\u0027 symbol","lastModifiedDate":"2017-04-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peter@jack@example.com\")); // \u0027@\u0027 symbol in local part","lastModifiedDate":"2017-04-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"-peterjack@example.com\")); // local part starts with a hyphen","lastModifiedDate":"2021-07-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack-@example.com\")); // local part ends with a hyphen","lastModifiedDate":"2021-07-20"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peter..jack@example.com\")); // local part has two consecutive periods","lastModifiedDate":"2021-07-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example@com\")); // \u0027@\u0027 symbol in domain name","lastModifiedDate":"2017-04-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@.example.com\")); // domain name starts with a period","lastModifiedDate":"2018-02-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.com.\")); // domain name ends with a period","lastModifiedDate":"2018-02-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@-example.com\")); // domain name starts with a hyphen","lastModifiedDate":"2018-02-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.com-\")); // domain name ends with a hyphen","lastModifiedDate":"2018-02-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.c\")); // top level domain has less than two chars","lastModifiedDate":"2021-07-20"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // valid email","lastModifiedDate":"2017-01-16"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack_1190@example.com\")); // underscore in local part","lastModifiedDate":"2021-07-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack.1190@example.com\")); // period in local part","lastModifiedDate":"2021-07-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack+1190@example.com\")); // \u0027+\u0027 symbol in local part","lastModifiedDate":"2021-07-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack-1190@example.com\")); // hyphen in local part","lastModifiedDate":"2021-07-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"a@bc\")); // minimal","lastModifiedDate":"2018-02-09"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"test@localhost\")); // alphabets only","lastModifiedDate":"2017-01-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"123@145\")); // numeric local part and domain name","lastModifiedDate":"2017-01-16"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"a1+be.d@example1.com\")); // mixture of alphanumeric and special characters","lastModifiedDate":"2021-07-20"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"peter_jack@very-very-very-long-example.com\")); // long domain name","lastModifiedDate":"2018-02-09"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"if.you.dream.it_you.can.do.it@example.com\")); // long local part","lastModifiedDate":"2017-04-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"e1234567@u.nus.edu\")); // more than one period in domain","lastModifiedDate":"2021-07-20"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" Email email \u003d new Email(\"valid@email\");","lastModifiedDate":"2019-02-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertTrue(email.equals(new Email(\"valid@email\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertTrue(email.equals(email));","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertFalse(email.equals(null));","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertFalse(email.equals(5.0f));","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertFalse(email.equals(new Email(\"other.valid@email\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16"}],"authorContributionMap":{"menatahari":1,"-":87}},{"path":"src/test/java/seedu/address/model/startup/FundingStageTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"menatahari"},"content":"package seedu.address.model.startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":3,"author":{"gitId":"yeoshuheng"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-05"},{"lineNumber":4,"author":{"gitId":"yeoshuheng"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-05"},{"lineNumber":5,"author":{"gitId":"yeoshuheng"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-05"},{"lineNumber":6,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":7,"author":{"gitId":"yeoshuheng"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-05"},{"lineNumber":8,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":9,"author":{"gitId":"yeoshuheng"},"content":"public class FundingStageTest {","lastModifiedDate":"2024-03-05"},{"lineNumber":10,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":11,"author":{"gitId":"yeoshuheng"},"content":" @Test","lastModifiedDate":"2024-03-05"},{"lineNumber":12,"author":{"gitId":"yeoshuheng"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-05"},{"lineNumber":13,"author":{"gitId":"yeoshuheng"},"content":" assertThrows(NullPointerException.class, () -\u003e new FundingStage(null));","lastModifiedDate":"2024-03-05"},{"lineNumber":14,"author":{"gitId":"yeoshuheng"},"content":" }","lastModifiedDate":"2024-03-05"},{"lineNumber":15,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":16,"author":{"gitId":"yeoshuheng"},"content":" @Test","lastModifiedDate":"2024-03-05"},{"lineNumber":17,"author":{"gitId":"yeoshuheng"},"content":" public void constructor_invalidFundingStage_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-05"},{"lineNumber":18,"author":{"gitId":"yeoshuheng"},"content":" String invalidPhone \u003d \"\";","lastModifiedDate":"2024-03-05"},{"lineNumber":19,"author":{"gitId":"yeoshuheng"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new FundingStage(invalidPhone));","lastModifiedDate":"2024-03-05"},{"lineNumber":20,"author":{"gitId":"yeoshuheng"},"content":" }","lastModifiedDate":"2024-03-05"},{"lineNumber":21,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":22,"author":{"gitId":"yeoshuheng"},"content":" @Test","lastModifiedDate":"2024-03-05"},{"lineNumber":23,"author":{"gitId":"yeoshuheng"},"content":" public void isValidFundingStage() {","lastModifiedDate":"2024-03-05"},{"lineNumber":24,"author":{"gitId":"yeoshuheng"},"content":" // null funding","lastModifiedDate":"2024-03-05"},{"lineNumber":25,"author":{"gitId":"yeoshuheng"},"content":" assertThrows(NullPointerException.class, () -\u003e FundingStage.isValidFundingLevel(null));","lastModifiedDate":"2024-03-05"},{"lineNumber":26,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":27,"author":{"gitId":"yeoshuheng"},"content":" // invalid funding levels","lastModifiedDate":"2024-03-05"},{"lineNumber":28,"author":{"gitId":"yeoshuheng"},"content":" assertFalse(FundingStage.isValidFundingLevel(\"\")); // empty string","lastModifiedDate":"2024-03-05"},{"lineNumber":29,"author":{"gitId":"yeoshuheng"},"content":" assertFalse(FundingStage.isValidFundingLevel(\" \")); // spaces only","lastModifiedDate":"2024-03-05"},{"lineNumber":30,"author":{"gitId":"yeoshuheng"},"content":" assertFalse(FundingStage.isValidFundingLevel(\"AB\")); // invalid funding level","lastModifiedDate":"2024-03-05"},{"lineNumber":31,"author":{"gitId":"yeoshuheng"},"content":" assertFalse(FundingStage.isValidFundingLevel(\"1\")); // numbers","lastModifiedDate":"2024-03-05"},{"lineNumber":32,"author":{"gitId":"yeoshuheng"},"content":" assertFalse(FundingStage.isValidFundingLevel(\"D\")); // invalid funding level","lastModifiedDate":"2024-03-05"},{"lineNumber":33,"author":{"gitId":"yeoshuheng"},"content":" assertFalse(FundingStage.isValidFundingLevel(\"pss\")); // invalid funding level","lastModifiedDate":"2024-03-15"},{"lineNumber":34,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":35,"author":{"gitId":"yeoshuheng"},"content":" // valid funding levels","lastModifiedDate":"2024-03-05"},{"lineNumber":36,"author":{"gitId":"yeoshuheng"},"content":" assertTrue(FundingStage.isValidFundingLevel(\"A\"));","lastModifiedDate":"2024-03-05"},{"lineNumber":37,"author":{"gitId":"yeoshuheng"},"content":" assertTrue(FundingStage.isValidFundingLevel(\"B\"));","lastModifiedDate":"2024-03-05"},{"lineNumber":38,"author":{"gitId":"yeoshuheng"},"content":" assertTrue(FundingStage.isValidFundingLevel(\"b\"));","lastModifiedDate":"2024-03-15"},{"lineNumber":39,"author":{"gitId":"yeoshuheng"},"content":" assertTrue(FundingStage.isValidFundingLevel(\"C\"));","lastModifiedDate":"2024-03-05"},{"lineNumber":40,"author":{"gitId":"yeoshuheng"},"content":" assertTrue(FundingStage.isValidFundingLevel(\"s\"));","lastModifiedDate":"2024-03-15"},{"lineNumber":41,"author":{"gitId":"yeoshuheng"},"content":" assertTrue(FundingStage.isValidFundingLevel(\"S\"));","lastModifiedDate":"2024-03-15"},{"lineNumber":42,"author":{"gitId":"yeoshuheng"},"content":" assertTrue(FundingStage.isValidFundingLevel(\"PS\"));","lastModifiedDate":"2024-03-15"},{"lineNumber":43,"author":{"gitId":"yeoshuheng"},"content":" assertTrue(FundingStage.isValidFundingLevel(\"pS\"));","lastModifiedDate":"2024-03-15"},{"lineNumber":44,"author":{"gitId":"yeoshuheng"},"content":" assertTrue(FundingStage.isValidFundingLevel(\"Ps\"));","lastModifiedDate":"2024-03-15"},{"lineNumber":45,"author":{"gitId":"yeoshuheng"},"content":" assertTrue(FundingStage.isValidFundingLevel(\"ps\"));","lastModifiedDate":"2024-03-15"},{"lineNumber":46,"author":{"gitId":"yeoshuheng"},"content":" }","lastModifiedDate":"2024-03-05"},{"lineNumber":47,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":48,"author":{"gitId":"yeoshuheng"},"content":" @Test","lastModifiedDate":"2024-03-05"},{"lineNumber":49,"author":{"gitId":"yeoshuheng"},"content":" public void equals() {","lastModifiedDate":"2024-03-05"},{"lineNumber":50,"author":{"gitId":"yeoshuheng"},"content":" FundingStage fundingStage \u003d new FundingStage(\"A\");","lastModifiedDate":"2024-03-05"},{"lineNumber":51,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":52,"author":{"gitId":"yeoshuheng"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-05"},{"lineNumber":53,"author":{"gitId":"yeoshuheng"},"content":" assertTrue(fundingStage.equals(new FundingStage(\"A\")));","lastModifiedDate":"2024-03-05"},{"lineNumber":54,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":55,"author":{"gitId":"yeoshuheng"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-05"},{"lineNumber":56,"author":{"gitId":"yeoshuheng"},"content":" assertTrue(fundingStage.equals(fundingStage));","lastModifiedDate":"2024-03-05"},{"lineNumber":57,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":58,"author":{"gitId":"yeoshuheng"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-05"},{"lineNumber":59,"author":{"gitId":"yeoshuheng"},"content":" assertFalse(fundingStage.equals(null));","lastModifiedDate":"2024-03-05"},{"lineNumber":60,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":61,"author":{"gitId":"yeoshuheng"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-05"},{"lineNumber":62,"author":{"gitId":"yeoshuheng"},"content":" assertFalse(fundingStage.equals(5.0f));","lastModifiedDate":"2024-03-05"},{"lineNumber":63,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":64,"author":{"gitId":"yeoshuheng"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-05"},{"lineNumber":65,"author":{"gitId":"yeoshuheng"},"content":" assertFalse(fundingStage.equals(new FundingStage(\"B\")));","lastModifiedDate":"2024-03-05"},{"lineNumber":66,"author":{"gitId":"yeoshuheng"},"content":" }","lastModifiedDate":"2024-03-05"},{"lineNumber":67,"author":{"gitId":"yeoshuheng"},"content":"}","lastModifiedDate":"2024-03-05"}],"authorContributionMap":{"menatahari":1,"yeoshuheng":66}},{"path":"src/test/java/seedu/address/model/startup/IndustryTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"menatahari"},"content":"package seedu.address.model.startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":3,"author":{"gitId":"yeoshuheng"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-05"},{"lineNumber":4,"author":{"gitId":"yeoshuheng"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-05"},{"lineNumber":5,"author":{"gitId":"yeoshuheng"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-05"},{"lineNumber":6,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":7,"author":{"gitId":"yeoshuheng"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-05"},{"lineNumber":8,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":9,"author":{"gitId":"yeoshuheng"},"content":"public class IndustryTest {","lastModifiedDate":"2024-03-05"},{"lineNumber":10,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":11,"author":{"gitId":"yeoshuheng"},"content":" @Test","lastModifiedDate":"2024-03-05"},{"lineNumber":12,"author":{"gitId":"yeoshuheng"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-05"},{"lineNumber":13,"author":{"gitId":"yeoshuheng"},"content":" assertThrows(NullPointerException.class, () -\u003e new Industry(null));","lastModifiedDate":"2024-03-05"},{"lineNumber":14,"author":{"gitId":"yeoshuheng"},"content":" }","lastModifiedDate":"2024-03-05"},{"lineNumber":15,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":16,"author":{"gitId":"yeoshuheng"},"content":" @Test","lastModifiedDate":"2024-03-05"},{"lineNumber":17,"author":{"gitId":"yeoshuheng"},"content":" public void constructor_invalidIndustry_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-05"},{"lineNumber":18,"author":{"gitId":"yeoshuheng"},"content":" String invalidName \u003d \"\";","lastModifiedDate":"2024-03-05"},{"lineNumber":19,"author":{"gitId":"yeoshuheng"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Industry(invalidName));","lastModifiedDate":"2024-03-05"},{"lineNumber":20,"author":{"gitId":"yeoshuheng"},"content":" }","lastModifiedDate":"2024-03-05"},{"lineNumber":21,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":22,"author":{"gitId":"yeoshuheng"},"content":" @Test","lastModifiedDate":"2024-03-05"},{"lineNumber":23,"author":{"gitId":"yeoshuheng"},"content":" public void isValidIndustry() {","lastModifiedDate":"2024-03-05"},{"lineNumber":24,"author":{"gitId":"yeoshuheng"},"content":" assertThrows(NullPointerException.class, () -\u003e Industry.isValidIndustry(null));","lastModifiedDate":"2024-03-05"},{"lineNumber":25,"author":{"gitId":"yeoshuheng"},"content":" assertFalse(Industry.isValidIndustry(\"\")); // empty string","lastModifiedDate":"2024-03-05"},{"lineNumber":26,"author":{"gitId":"yeoshuheng"},"content":" assertFalse(Industry.isValidIndustry(\" \")); // spaces only","lastModifiedDate":"2024-03-05"},{"lineNumber":27,"author":{"gitId":"yeoshuheng"},"content":" assertFalse(Industry.isValidIndustry(\"^\")); // only non-alphanumeric characters","lastModifiedDate":"2024-03-05"},{"lineNumber":28,"author":{"gitId":"yeoshuheng"},"content":" assertFalse(Industry.isValidIndustry(\"finance*\")); // contains non-alphanumeric characters","lastModifiedDate":"2024-03-05"},{"lineNumber":29,"author":{"gitId":"yeoshuheng"},"content":" assertTrue(Industry.isValidIndustry(\"Finance\")); // alphabets only","lastModifiedDate":"2024-03-05"},{"lineNumber":30,"author":{"gitId":"yeoshuheng"},"content":" assertTrue(Industry.isValidIndustry(\"MANUFACTURING\")); // all capital","lastModifiedDate":"2024-03-05"},{"lineNumber":31,"author":{"gitId":"yeoshuheng"},"content":" assertTrue(Industry.isValidIndustry(\"web 3\")); // with numbers","lastModifiedDate":"2024-03-05"},{"lineNumber":32,"author":{"gitId":"yeoshuheng"},"content":" }","lastModifiedDate":"2024-03-05"},{"lineNumber":33,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":34,"author":{"gitId":"yeoshuheng"},"content":" @Test","lastModifiedDate":"2024-03-05"},{"lineNumber":35,"author":{"gitId":"yeoshuheng"},"content":" public void equals() {","lastModifiedDate":"2024-03-05"},{"lineNumber":36,"author":{"gitId":"yeoshuheng"},"content":" Industry industry \u003d new Industry(\"Valid Industry\");","lastModifiedDate":"2024-03-05"},{"lineNumber":37,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":38,"author":{"gitId":"yeoshuheng"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-05"},{"lineNumber":39,"author":{"gitId":"yeoshuheng"},"content":" assertTrue(industry.equals(new Industry(\"Valid Industry\")));","lastModifiedDate":"2024-03-05"},{"lineNumber":40,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":41,"author":{"gitId":"yeoshuheng"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-05"},{"lineNumber":42,"author":{"gitId":"yeoshuheng"},"content":" assertTrue(industry.equals(industry));","lastModifiedDate":"2024-03-05"},{"lineNumber":43,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":44,"author":{"gitId":"yeoshuheng"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-05"},{"lineNumber":45,"author":{"gitId":"yeoshuheng"},"content":" assertFalse(industry.equals(null));","lastModifiedDate":"2024-03-05"},{"lineNumber":46,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":47,"author":{"gitId":"yeoshuheng"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-05"},{"lineNumber":48,"author":{"gitId":"yeoshuheng"},"content":" assertFalse(industry.equals(5.0f));","lastModifiedDate":"2024-03-05"},{"lineNumber":49,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":50,"author":{"gitId":"yeoshuheng"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-05"},{"lineNumber":51,"author":{"gitId":"yeoshuheng"},"content":" assertFalse(industry.equals(new Industry(\"Other Valid Industry\")));","lastModifiedDate":"2024-03-05"},{"lineNumber":52,"author":{"gitId":"yeoshuheng"},"content":" }","lastModifiedDate":"2024-03-05"},{"lineNumber":53,"author":{"gitId":"yeoshuheng"},"content":"}","lastModifiedDate":"2024-03-05"}],"authorContributionMap":{"menatahari":1,"yeoshuheng":52}},{"path":"src/test/java/seedu/address/model/startup/NameContainsKeywordsPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"menatahari"},"content":"package seedu.address.model.startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"menatahari"},"content":"import seedu.address.testutil.StartupBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class NameContainsKeywordsPredicateTest {","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" List\u003cString\u003e firstPredicateKeywordList \u003d Collections.singletonList(\"first\");","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":" List\u003cString\u003e secondPredicateKeywordList \u003d Arrays.asList(\"first\", \"second\");","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicate \u003d new NameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate secondPredicate \u003d new NameContainsKeywordsPredicate(secondPredicateKeywordList);","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" assertTrue(firstPredicate.equals(firstPredicate));","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicateCopy \u003d new NameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertTrue(firstPredicate.equals(firstPredicateCopy));","lastModifiedDate":"2017-06-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(1));","lastModifiedDate":"2017-06-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(null));","lastModifiedDate":"2017-06-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":38,"author":{"gitId":"menatahari"},"content":" // different startup -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(secondPredicate));","lastModifiedDate":"2017-06-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void test_nameContainsKeywords_returnsTrue() {","lastModifiedDate":"2017-08-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // One keyword","lastModifiedDate":"2017-06-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Collections.singletonList(\"Alice\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":46,"author":{"gitId":"menatahari"},"content":" assertTrue(predicate.test(new StartupBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // Multiple keywords","lastModifiedDate":"2017-06-12"},{"lineNumber":49,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Alice\", \"Bob\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":50,"author":{"gitId":"menatahari"},"content":" assertTrue(predicate.test(new StartupBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // Only one matching keyword","lastModifiedDate":"2017-06-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Bob\", \"Carol\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":54,"author":{"gitId":"menatahari"},"content":" assertTrue(predicate.test(new StartupBuilder().withName(\"Alice Carol\").build()));","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // Mixed-case keywords","lastModifiedDate":"2017-06-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"aLIce\", \"bOB\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":58,"author":{"gitId":"menatahari"},"content":" assertTrue(predicate.test(new StartupBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void test_nameDoesNotContainKeywords_returnsFalse() {","lastModifiedDate":"2017-08-15"},{"lineNumber":63,"author":{"gitId":"-"},"content":" // Zero keywords","lastModifiedDate":"2017-06-12"},{"lineNumber":64,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Collections.emptyList());","lastModifiedDate":"2017-06-12"},{"lineNumber":65,"author":{"gitId":"menatahari"},"content":" assertFalse(predicate.test(new StartupBuilder().withName(\"Alice\").build()));","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":" // Non-matching keyword","lastModifiedDate":"2017-06-12"},{"lineNumber":68,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Carol\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":69,"author":{"gitId":"menatahari"},"content":" assertFalse(predicate.test(new StartupBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // Keywords match phone, email and address, but does not match name","lastModifiedDate":"2017-06-12"},{"lineNumber":72,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"12345\", \"alice@email.com\", \"Main\", \"Street\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":73,"author":{"gitId":"menatahari"},"content":" assertFalse(predicate.test(new StartupBuilder().withName(\"Alice\").withPhone(\"12345\")","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" .withEmail(\"alice@email.com\").withAddress(\"Main Street\").build()));","lastModifiedDate":"2017-06-12"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d List.of(\"keyword1\", \"keyword2\");","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(keywords);","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" String expected \u003d NameContainsKeywordsPredicate.class.getCanonicalName() + \"{keywords\u003d\" + keywords + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"menatahari":10,"-":75}},{"path":"src/test/java/seedu/address/model/startup/NameTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"menatahari"},"content":"package seedu.address.model.startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class NameTest {","lastModifiedDate":"2017-01-16"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04"},{"lineNumber":13,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new Name(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":14,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void constructor_invalidName_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":" String invalidName \u003d \"\";","lastModifiedDate":"2017-05-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Name(invalidName));","lastModifiedDate":"2019-03-14"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void isValidName() {","lastModifiedDate":"2017-01-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // null name","lastModifiedDate":"2017-12-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Name.isValidName(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-01-16"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"\")); // empty string","lastModifiedDate":"2017-01-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\" \")); // spaces only","lastModifiedDate":"2017-01-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"^\")); // only non-alphanumeric characters","lastModifiedDate":"2017-01-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"peter*\")); // contains non-alphanumeric characters","lastModifiedDate":"2017-01-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // valid name","lastModifiedDate":"2017-01-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"peter jack\")); // alphabets only","lastModifiedDate":"2017-01-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"12345\")); // numbers only","lastModifiedDate":"2017-01-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"peter the 2nd\")); // alphanumeric characters","lastModifiedDate":"2017-01-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"Capital Tan\")); // with capital letters","lastModifiedDate":"2017-01-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"David Roger Jackson Ray Jr 2nd\")); // long names","lastModifiedDate":"2017-01-16"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" Name name \u003d new Name(\"Valid Name\");","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(name.equals(new Name(\"Valid Name\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertTrue(name.equals(name));","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(name.equals(null));","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertFalse(name.equals(5.0f));","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertFalse(name.equals(new Name(\"Other Valid Name\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16"}],"authorContributionMap":{"menatahari":1,"-":59}},{"path":"src/test/java/seedu/address/model/startup/PhoneTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"menatahari"},"content":"package seedu.address.model.startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class PhoneTest {","lastModifiedDate":"2017-01-16"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04"},{"lineNumber":13,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new Phone(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":14,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void constructor_invalidPhone_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":" String invalidPhone \u003d \"\";","lastModifiedDate":"2017-05-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Phone(invalidPhone));","lastModifiedDate":"2019-03-14"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void isValidPhone() {","lastModifiedDate":"2017-01-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // null phone number","lastModifiedDate":"2017-12-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Phone.isValidPhone(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // invalid phone numbers","lastModifiedDate":"2017-01-16"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"\")); // empty string","lastModifiedDate":"2017-01-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\" \")); // spaces only","lastModifiedDate":"2017-01-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"91\")); // less than 3 numbers","lastModifiedDate":"2017-05-04"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"phone\")); // non-numeric","lastModifiedDate":"2017-01-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"9011p041\")); // alphabets within digits","lastModifiedDate":"2017-01-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"9312 1534\")); // spaces within digits","lastModifiedDate":"2017-01-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // valid phone numbers","lastModifiedDate":"2017-01-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertTrue(Phone.isValidPhone(\"911\")); // exactly 3 numbers","lastModifiedDate":"2017-05-04"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertTrue(Phone.isValidPhone(\"93121534\"));","lastModifiedDate":"2017-01-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertTrue(Phone.isValidPhone(\"124293842033123\")); // long phone numbers","lastModifiedDate":"2017-01-16"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" Phone phone \u003d new Phone(\"999\");","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(phone.equals(new Phone(\"999\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertTrue(phone.equals(phone));","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(phone.equals(null));","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertFalse(phone.equals(5.0f));","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertFalse(phone.equals(new Phone(\"995\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16"}],"authorContributionMap":{"menatahari":1,"-":59}},{"path":"src/test/java/seedu/address/model/startup/StartupTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"menatahari"},"content":"package seedu.address.model.startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-04-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":12,"author":{"gitId":"menatahari"},"content":"import static seedu.address.testutil.TypicalStartups.ALICE;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"menatahari"},"content":"import static seedu.address.testutil.TypicalStartups.BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":17,"author":{"gitId":"menatahari"},"content":"import seedu.address.testutil.StartupBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":19,"author":{"gitId":"menatahari"},"content":"public class StartupTest {","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public void asObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":23,"author":{"gitId":"menatahari"},"content":" Startup startup \u003d new StartupBuilder().build();","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"menatahari"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e startup.getTags().remove(0));","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19"},{"lineNumber":28,"author":{"gitId":"menatahari"},"content":" public void isSameStartup() {","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":30,"author":{"gitId":"menatahari"},"content":" assertTrue(ALICE.isSameStartup(ALICE));","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":33,"author":{"gitId":"menatahari"},"content":" assertFalse(ALICE.isSameStartup(null));","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // same name, all other attributes different -\u003e returns true","lastModifiedDate":"2020-12-18"},{"lineNumber":36,"author":{"gitId":"menatahari"},"content":" Startup editedAlice \u003d new StartupBuilder(ALICE).withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":" .withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2020-12-18"},{"lineNumber":38,"author":{"gitId":"menatahari"},"content":" assertTrue(ALICE.isSameStartup(editedAlice));","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":" // different name, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":41,"author":{"gitId":"menatahari"},"content":" editedAlice \u003d new StartupBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"menatahari"},"content":" assertFalse(ALICE.isSameStartup(editedAlice));","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // name differs in case, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":45,"author":{"gitId":"menatahari"},"content":" Startup editedBob \u003d new StartupBuilder(BOB).withName(VALID_NAME_BOB.toLowerCase()).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"menatahari"},"content":" assertFalse(BOB.isSameStartup(editedBob));","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // name has trailing spaces, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":49,"author":{"gitId":"-"},"content":" String nameWithTrailingSpaces \u003d VALID_NAME_BOB + \" \";","lastModifiedDate":"2020-12-18"},{"lineNumber":50,"author":{"gitId":"menatahari"},"content":" editedBob \u003d new StartupBuilder(BOB).withName(nameWithTrailingSpaces).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"menatahari"},"content":" assertFalse(BOB.isSameStartup(editedBob));","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":57,"author":{"gitId":"menatahari"},"content":" Startup aliceCopy \u003d new StartupBuilder(ALICE).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2018-04-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2018-04-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(null));","lastModifiedDate":"2018-04-19"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2018-04-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":69,"author":{"gitId":"menatahari"},"content":" // different startup -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2018-04-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":73,"author":{"gitId":"menatahari"},"content":" Startup editedAlice \u003d new StartupBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":77,"author":{"gitId":"menatahari"},"content":" editedAlice \u003d new StartupBuilder(ALICE).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":81,"author":{"gitId":"menatahari"},"content":" editedAlice \u003d new StartupBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":84,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":85,"author":{"gitId":"menatahari"},"content":" editedAlice \u003d new StartupBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-18"},{"lineNumber":88,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2018-04-18"},{"lineNumber":89,"author":{"gitId":"menatahari"},"content":" editedAlice \u003d new StartupBuilder(ALICE).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-18"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":95,"author":{"gitId":"menatahari"},"content":" String expected \u003d Startup.class.getCanonicalName()","lastModifiedDate":"2024-03-19"},{"lineNumber":96,"author":{"gitId":"dwangwk"},"content":" + \"{name\u003d\" + ALICE.getName()","lastModifiedDate":"2024-03-14"},{"lineNumber":97,"author":{"gitId":"dwangwk"},"content":" + \", industry\u003d\" + ALICE.getIndustry()","lastModifiedDate":"2024-03-14"},{"lineNumber":98,"author":{"gitId":"dwangwk"},"content":" + \", funding stage\u003d\" + ALICE.getFundingStage()","lastModifiedDate":"2024-03-14"},{"lineNumber":99,"author":{"gitId":"yeoshuheng"},"content":" + \", phone\u003d\" + ALICE.getPhone()","lastModifiedDate":"2024-02-25"},{"lineNumber":100,"author":{"gitId":"dwangwk"},"content":" + \", email\u003d\" + ALICE.getEmail()","lastModifiedDate":"2024-03-14"},{"lineNumber":101,"author":{"gitId":"dwangwk"},"content":" + \", address\u003d\" + ALICE.getAddress()","lastModifiedDate":"2024-03-14"},{"lineNumber":102,"author":{"gitId":"dwangwk"},"content":" + \", note\u003d\" + ALICE.getNote()","lastModifiedDate":"2024-03-14"},{"lineNumber":103,"author":{"gitId":"dwangwk"},"content":" + \", tags\u003d\" + ALICE.getTags() + \"}\";","lastModifiedDate":"2024-03-14"},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"dwangwk":7,"menatahari":26,"-":72,"yeoshuheng":1}},{"path":"src/test/java/seedu/address/model/startup/UniqueStartupListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"menatahari"},"content":"package seedu.address.model.startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"menatahari"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"menatahari"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"menatahari"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"menatahari"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"menatahari"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"menatahari"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"menatahari"},"content":"import static seedu.address.testutil.TypicalStartups.ALICE;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"menatahari"},"content":"import static seedu.address.testutil.TypicalStartups.BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"menatahari"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"menatahari"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"menatahari"},"content":"import java.util.List;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"menatahari"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.exceptions.DuplicateStartupException;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.exceptions.StartupNotFoundException;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"menatahari"},"content":"import seedu.address.testutil.StartupBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"menatahari"},"content":"public class UniqueStartupListTest {","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"menatahari"},"content":" private final UniqueStartupList uniqueStartupList \u003d new UniqueStartupList();","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"menatahari"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"menatahari"},"content":" public void contains_nullStartup_throwsNullPointerException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"menatahari"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueStartupList.contains(null));","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"menatahari"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"menatahari"},"content":" public void contains_startupNotInList_returnsFalse() {","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"menatahari"},"content":" assertFalse(uniqueStartupList.contains(ALICE));","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"menatahari"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"menatahari"},"content":" public void contains_startupInList_returnsTrue() {","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"menatahari"},"content":" uniqueStartupList.add(ALICE);","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"menatahari"},"content":" assertTrue(uniqueStartupList.contains(ALICE));","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"menatahari"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"menatahari"},"content":" public void contains_startupWithSameIdentityFieldsInList_returnsTrue() {","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"menatahari"},"content":" uniqueStartupList.add(ALICE);","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"menatahari"},"content":" Startup editedAlice \u003d new StartupBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"menatahari"},"content":" .build();","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"menatahari"},"content":" assertTrue(uniqueStartupList.contains(editedAlice));","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"menatahari"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"menatahari"},"content":" public void add_nullStartup_throwsNullPointerException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"menatahari"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueStartupList.add(null));","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"menatahari"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"menatahari"},"content":" public void add_duplicateStartup_throwsDuplicateStartupException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"menatahari"},"content":" uniqueStartupList.add(ALICE);","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"menatahari"},"content":" assertThrows(DuplicateStartupException.class, () -\u003e uniqueStartupList.add(ALICE));","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"menatahari"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"menatahari"},"content":" public void setStartup_nullTargetStartup_throwsNullPointerException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"menatahari"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueStartupList.setStartup(null, ALICE));","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"menatahari"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"menatahari"},"content":" public void setStartup_nullEditedStartup_throwsNullPointerException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"menatahari"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueStartupList.setStartup(ALICE, null));","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"menatahari"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"menatahari"},"content":" public void setStartup_targetStartupNotInList_throwsStartupNotFoundException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"menatahari"},"content":" assertThrows(StartupNotFoundException.class, () -\u003e uniqueStartupList.setStartup(ALICE, ALICE));","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":75,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"menatahari"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"menatahari"},"content":" public void setStartup_editedStartupIsSameStartup_success() {","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"menatahari"},"content":" uniqueStartupList.add(ALICE);","lastModifiedDate":"2024-03-19"},{"lineNumber":79,"author":{"gitId":"menatahari"},"content":" uniqueStartupList.setStartup(ALICE, ALICE);","lastModifiedDate":"2024-03-19"},{"lineNumber":80,"author":{"gitId":"menatahari"},"content":" UniqueStartupList expectedUniqueStartupList \u003d new UniqueStartupList();","lastModifiedDate":"2024-03-19"},{"lineNumber":81,"author":{"gitId":"menatahari"},"content":" expectedUniqueStartupList.add(ALICE);","lastModifiedDate":"2024-03-19"},{"lineNumber":82,"author":{"gitId":"menatahari"},"content":" assertEquals(expectedUniqueStartupList, uniqueStartupList);","lastModifiedDate":"2024-03-19"},{"lineNumber":83,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":84,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":85,"author":{"gitId":"menatahari"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":86,"author":{"gitId":"menatahari"},"content":" public void setStartup_editedStartupHasSameIdentity_success() {","lastModifiedDate":"2024-03-19"},{"lineNumber":87,"author":{"gitId":"menatahari"},"content":" uniqueStartupList.add(ALICE);","lastModifiedDate":"2024-03-19"},{"lineNumber":88,"author":{"gitId":"menatahari"},"content":" Startup editedAlice \u003d new StartupBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-03-19"},{"lineNumber":89,"author":{"gitId":"menatahari"},"content":" .build();","lastModifiedDate":"2024-03-19"},{"lineNumber":90,"author":{"gitId":"menatahari"},"content":" uniqueStartupList.setStartup(ALICE, editedAlice);","lastModifiedDate":"2024-03-19"},{"lineNumber":91,"author":{"gitId":"menatahari"},"content":" UniqueStartupList expectedUniqueStartupList \u003d new UniqueStartupList();","lastModifiedDate":"2024-03-19"},{"lineNumber":92,"author":{"gitId":"menatahari"},"content":" expectedUniqueStartupList.add(editedAlice);","lastModifiedDate":"2024-03-19"},{"lineNumber":93,"author":{"gitId":"menatahari"},"content":" assertEquals(expectedUniqueStartupList, uniqueStartupList);","lastModifiedDate":"2024-03-19"},{"lineNumber":94,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":95,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":96,"author":{"gitId":"menatahari"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":97,"author":{"gitId":"menatahari"},"content":" public void setStartup_editedStartupHasDifferentIdentity_success() {","lastModifiedDate":"2024-03-19"},{"lineNumber":98,"author":{"gitId":"menatahari"},"content":" uniqueStartupList.add(ALICE);","lastModifiedDate":"2024-03-19"},{"lineNumber":99,"author":{"gitId":"menatahari"},"content":" uniqueStartupList.setStartup(ALICE, BOB);","lastModifiedDate":"2024-03-19"},{"lineNumber":100,"author":{"gitId":"menatahari"},"content":" UniqueStartupList expectedUniqueStartupList \u003d new UniqueStartupList();","lastModifiedDate":"2024-03-19"},{"lineNumber":101,"author":{"gitId":"menatahari"},"content":" expectedUniqueStartupList.add(BOB);","lastModifiedDate":"2024-03-19"},{"lineNumber":102,"author":{"gitId":"menatahari"},"content":" assertEquals(expectedUniqueStartupList, uniqueStartupList);","lastModifiedDate":"2024-03-19"},{"lineNumber":103,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":104,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":105,"author":{"gitId":"menatahari"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":106,"author":{"gitId":"menatahari"},"content":" public void setStartup_editedStartupHasNonUniqueIdentity_throwsDuplicateStartupException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":107,"author":{"gitId":"menatahari"},"content":" uniqueStartupList.add(ALICE);","lastModifiedDate":"2024-03-19"},{"lineNumber":108,"author":{"gitId":"menatahari"},"content":" uniqueStartupList.add(BOB);","lastModifiedDate":"2024-03-19"},{"lineNumber":109,"author":{"gitId":"menatahari"},"content":" assertThrows(DuplicateStartupException.class, () -\u003e uniqueStartupList.setStartup(ALICE, BOB));","lastModifiedDate":"2024-03-19"},{"lineNumber":110,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":111,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":112,"author":{"gitId":"menatahari"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":113,"author":{"gitId":"menatahari"},"content":" public void remove_nullStartup_throwsNullPointerException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":114,"author":{"gitId":"menatahari"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueStartupList.remove(null));","lastModifiedDate":"2024-03-19"},{"lineNumber":115,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":116,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":117,"author":{"gitId":"menatahari"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":118,"author":{"gitId":"menatahari"},"content":" public void remove_startupDoesNotExist_throwsStartupNotFoundException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":119,"author":{"gitId":"menatahari"},"content":" assertThrows(StartupNotFoundException.class, () -\u003e uniqueStartupList.remove(ALICE));","lastModifiedDate":"2024-03-19"},{"lineNumber":120,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":121,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":122,"author":{"gitId":"menatahari"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":123,"author":{"gitId":"menatahari"},"content":" public void remove_existingStartup_removesStartup() {","lastModifiedDate":"2024-03-19"},{"lineNumber":124,"author":{"gitId":"menatahari"},"content":" uniqueStartupList.add(ALICE);","lastModifiedDate":"2024-03-19"},{"lineNumber":125,"author":{"gitId":"menatahari"},"content":" uniqueStartupList.remove(ALICE);","lastModifiedDate":"2024-03-19"},{"lineNumber":126,"author":{"gitId":"menatahari"},"content":" UniqueStartupList expectedUniqueStartupList \u003d new UniqueStartupList();","lastModifiedDate":"2024-03-19"},{"lineNumber":127,"author":{"gitId":"menatahari"},"content":" assertEquals(expectedUniqueStartupList, uniqueStartupList);","lastModifiedDate":"2024-03-19"},{"lineNumber":128,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":129,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":130,"author":{"gitId":"menatahari"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":131,"author":{"gitId":"menatahari"},"content":" public void setStartups_nullUniqueStartupList_throwsNullPointerException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":132,"author":{"gitId":"menatahari"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueStartupList.setStartups((UniqueStartupList) null));","lastModifiedDate":"2024-03-19"},{"lineNumber":133,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":134,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":135,"author":{"gitId":"menatahari"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":136,"author":{"gitId":"menatahari"},"content":" public void setStartups_uniqueStartupList_replacesOwnListWithProvidedUniqueStartupList() {","lastModifiedDate":"2024-03-19"},{"lineNumber":137,"author":{"gitId":"menatahari"},"content":" uniqueStartupList.add(ALICE);","lastModifiedDate":"2024-03-19"},{"lineNumber":138,"author":{"gitId":"menatahari"},"content":" UniqueStartupList expectedUniqueStartupList \u003d new UniqueStartupList();","lastModifiedDate":"2024-03-19"},{"lineNumber":139,"author":{"gitId":"menatahari"},"content":" expectedUniqueStartupList.add(BOB);","lastModifiedDate":"2024-03-19"},{"lineNumber":140,"author":{"gitId":"menatahari"},"content":" uniqueStartupList.setStartups(expectedUniqueStartupList);","lastModifiedDate":"2024-03-19"},{"lineNumber":141,"author":{"gitId":"menatahari"},"content":" assertEquals(expectedUniqueStartupList, uniqueStartupList);","lastModifiedDate":"2024-03-19"},{"lineNumber":142,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":143,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":144,"author":{"gitId":"menatahari"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":145,"author":{"gitId":"menatahari"},"content":" public void setStartups_nullList_throwsNullPointerException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":146,"author":{"gitId":"menatahari"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueStartupList.setStartups((List\u003cStartup\u003e) null));","lastModifiedDate":"2024-03-19"},{"lineNumber":147,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":148,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":149,"author":{"gitId":"menatahari"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":150,"author":{"gitId":"menatahari"},"content":" public void setStartups_list_replacesOwnListWithProvidedList() {","lastModifiedDate":"2024-03-19"},{"lineNumber":151,"author":{"gitId":"menatahari"},"content":" uniqueStartupList.add(ALICE);","lastModifiedDate":"2024-03-19"},{"lineNumber":152,"author":{"gitId":"menatahari"},"content":" List\u003cStartup\u003e startupList \u003d Collections.singletonList(BOB);","lastModifiedDate":"2024-03-19"},{"lineNumber":153,"author":{"gitId":"menatahari"},"content":" uniqueStartupList.setStartups(startupList);","lastModifiedDate":"2024-03-19"},{"lineNumber":154,"author":{"gitId":"menatahari"},"content":" UniqueStartupList expectedUniqueStartupList \u003d new UniqueStartupList();","lastModifiedDate":"2024-03-19"},{"lineNumber":155,"author":{"gitId":"menatahari"},"content":" expectedUniqueStartupList.add(BOB);","lastModifiedDate":"2024-03-19"},{"lineNumber":156,"author":{"gitId":"menatahari"},"content":" assertEquals(expectedUniqueStartupList, uniqueStartupList);","lastModifiedDate":"2024-03-19"},{"lineNumber":157,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":158,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":159,"author":{"gitId":"menatahari"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":160,"author":{"gitId":"menatahari"},"content":" public void setStartups_listWithDuplicateStartups_throwsDuplicateStartupException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":161,"author":{"gitId":"menatahari"},"content":" List\u003cStartup\u003e listWithDuplicateStartups \u003d Arrays.asList(ALICE, ALICE);","lastModifiedDate":"2024-03-19"},{"lineNumber":162,"author":{"gitId":"menatahari"},"content":" assertThrows(DuplicateStartupException.class, () -\u003e uniqueStartupList.setStartups(listWithDuplicateStartups));","lastModifiedDate":"2024-03-19"},{"lineNumber":163,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":164,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":165,"author":{"gitId":"menatahari"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":166,"author":{"gitId":"menatahari"},"content":" public void asUnmodifiableObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":167,"author":{"gitId":"menatahari"},"content":" assertThrows(UnsupportedOperationException.class, ()","lastModifiedDate":"2024-03-19"},{"lineNumber":168,"author":{"gitId":"menatahari"},"content":" -\u003e uniqueStartupList.asUnmodifiableObservableList().remove(0));","lastModifiedDate":"2024-03-19"},{"lineNumber":169,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":170,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":171,"author":{"gitId":"menatahari"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":172,"author":{"gitId":"menatahari"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-19"},{"lineNumber":173,"author":{"gitId":"menatahari"},"content":" assertEquals(uniqueStartupList.asUnmodifiableObservableList().toString(), uniqueStartupList.toString());","lastModifiedDate":"2024-03-19"},{"lineNumber":174,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":175,"author":{"gitId":"menatahari"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"menatahari":175}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedStartupTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"menatahari"},"content":"import static seedu.address.storage.JsonAdaptedStartup.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"menatahari"},"content":"import static seedu.address.testutil.TypicalStartups.BENSON;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":15,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Address;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Email;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Name;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Phone;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"menatahari"},"content":"public class JsonAdaptedStartupTest {","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"yeoshuheng"},"content":" private static final String INVALID_FUNDING \u003d \"D\";","lastModifiedDate":"2024-02-25"},{"lineNumber":28,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":29,"author":{"gitId":"yeoshuheng"},"content":" private static final String INVALID_INDUSTRY \u003d \" \";","lastModifiedDate":"2024-02-25"},{"lineNumber":30,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d BENSON.getPhone().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d BENSON.getAddress().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":36,"author":{"gitId":"yeoshuheng"},"content":" private static final String VALID_FUNDING \u003d BENSON.getFundingStage().toString();","lastModifiedDate":"2024-02-25"},{"lineNumber":37,"author":{"gitId":"yeoshuheng"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":38,"author":{"gitId":"yeoshuheng"},"content":" private static final String VALID_INDUSTRY \u003d BENSON.getIndustry().toString();","lastModifiedDate":"2024-02-25"},{"lineNumber":39,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"dwangwk"},"content":" private static final String VALID_NOTE \u003d BENSON.getNote().toString();","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" private static final List\u003cJsonAdaptedTag\u003e VALID_TAGS \u003d BENSON.getTags().stream()","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"menatahari"},"content":" public void toModelType_validStartupDetails_returnsStartup() throws Exception {","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"menatahari"},"content":" JsonAdaptedStartup startup \u003d new JsonAdaptedStartup(BENSON);","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"menatahari"},"content":" assertEquals(BENSON, startup.toModelType());","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"menatahari"},"content":" JsonAdaptedStartup startup \u003d","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"menatahari"},"content":" new JsonAdaptedStartup(INVALID_NAME, VALID_INDUSTRY, VALID_FUNDING,","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"dwangwk"},"content":" VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_NOTE, VALID_TAGS);","lastModifiedDate":"2024-03-14"},{"lineNumber":56,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"menatahari"},"content":" assertThrows(IllegalValueException.class, expectedMessage, startup::toModelType);","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"menatahari"},"content":" JsonAdaptedStartup startup \u003d new JsonAdaptedStartup(null, VALID_INDUSTRY, VALID_FUNDING,","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"dwangwk"},"content":" VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_NOTE, VALID_TAGS);","lastModifiedDate":"2024-03-14"},{"lineNumber":64,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"menatahari"},"content":" assertThrows(IllegalValueException.class, expectedMessage, startup::toModelType);","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void toModelType_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"menatahari"},"content":" JsonAdaptedStartup startup \u003d","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"menatahari"},"content":" new JsonAdaptedStartup(VALID_NAME, VALID_INDUSTRY, VALID_FUNDING,","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"dwangwk"},"content":" INVALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_NOTE, VALID_TAGS);","lastModifiedDate":"2024-03-14"},{"lineNumber":73,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Phone.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":74,"author":{"gitId":"menatahari"},"content":" assertThrows(IllegalValueException.class, expectedMessage, startup::toModelType);","lastModifiedDate":"2024-03-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void toModelType_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":79,"author":{"gitId":"menatahari"},"content":" JsonAdaptedStartup startup \u003d new JsonAdaptedStartup(VALID_NAME, VALID_INDUSTRY, VALID_FUNDING,","lastModifiedDate":"2024-03-19"},{"lineNumber":80,"author":{"gitId":"dwangwk"},"content":" null, VALID_EMAIL, VALID_ADDRESS, VALID_NOTE, VALID_TAGS);","lastModifiedDate":"2024-03-14"},{"lineNumber":81,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":82,"author":{"gitId":"menatahari"},"content":" assertThrows(IllegalValueException.class, expectedMessage, startup::toModelType);","lastModifiedDate":"2024-03-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"menatahari"},"content":" JsonAdaptedStartup startup \u003d","lastModifiedDate":"2024-03-19"},{"lineNumber":88,"author":{"gitId":"menatahari"},"content":" new JsonAdaptedStartup(VALID_NAME, VALID_INDUSTRY, VALID_FUNDING,","lastModifiedDate":"2024-03-19"},{"lineNumber":89,"author":{"gitId":"dwangwk"},"content":" VALID_PHONE, INVALID_EMAIL, VALID_ADDRESS, VALID_NOTE, VALID_TAGS);","lastModifiedDate":"2024-03-14"},{"lineNumber":90,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":91,"author":{"gitId":"menatahari"},"content":" assertThrows(IllegalValueException.class, expectedMessage, startup::toModelType);","lastModifiedDate":"2024-03-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"menatahari"},"content":" JsonAdaptedStartup startup \u003d new JsonAdaptedStartup(VALID_NAME, VALID_INDUSTRY, VALID_FUNDING,","lastModifiedDate":"2024-03-19"},{"lineNumber":97,"author":{"gitId":"dwangwk"},"content":" VALID_PHONE, null, VALID_ADDRESS, VALID_NOTE, VALID_TAGS);","lastModifiedDate":"2024-03-14"},{"lineNumber":98,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":99,"author":{"gitId":"menatahari"},"content":" assertThrows(IllegalValueException.class, expectedMessage, startup::toModelType);","lastModifiedDate":"2024-03-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":" public void toModelType_invalidAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":104,"author":{"gitId":"menatahari"},"content":" JsonAdaptedStartup startup \u003d","lastModifiedDate":"2024-03-19"},{"lineNumber":105,"author":{"gitId":"menatahari"},"content":" new JsonAdaptedStartup(VALID_NAME, VALID_INDUSTRY, VALID_FUNDING,","lastModifiedDate":"2024-03-19"},{"lineNumber":106,"author":{"gitId":"dwangwk"},"content":" VALID_PHONE, VALID_EMAIL, INVALID_ADDRESS, VALID_NOTE, VALID_TAGS);","lastModifiedDate":"2024-03-14"},{"lineNumber":107,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Address.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":108,"author":{"gitId":"menatahari"},"content":" assertThrows(IllegalValueException.class, expectedMessage, startup::toModelType);","lastModifiedDate":"2024-03-19"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" public void toModelType_nullAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":113,"author":{"gitId":"menatahari"},"content":" JsonAdaptedStartup startup \u003d new JsonAdaptedStartup(VALID_NAME, VALID_INDUSTRY, VALID_FUNDING,","lastModifiedDate":"2024-03-19"},{"lineNumber":114,"author":{"gitId":"dwangwk"},"content":" VALID_PHONE, VALID_EMAIL, null, VALID_NOTE, VALID_TAGS);","lastModifiedDate":"2024-03-14"},{"lineNumber":115,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":116,"author":{"gitId":"menatahari"},"content":" assertThrows(IllegalValueException.class, expectedMessage, startup::toModelType);","lastModifiedDate":"2024-03-19"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":119,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":" public void toModelType_invalidTags_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":121,"author":{"gitId":"-"},"content":" List\u003cJsonAdaptedTag\u003e invalidTags \u003d new ArrayList\u003c\u003e(VALID_TAGS);","lastModifiedDate":"2018-08-13"},{"lineNumber":122,"author":{"gitId":"-"},"content":" invalidTags.add(new JsonAdaptedTag(INVALID_TAG));","lastModifiedDate":"2018-08-13"},{"lineNumber":123,"author":{"gitId":"menatahari"},"content":" JsonAdaptedStartup startup \u003d","lastModifiedDate":"2024-03-19"},{"lineNumber":124,"author":{"gitId":"menatahari"},"content":" new JsonAdaptedStartup(VALID_NAME, VALID_INDUSTRY, VALID_FUNDING,","lastModifiedDate":"2024-03-19"},{"lineNumber":125,"author":{"gitId":"dwangwk"},"content":" VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_NOTE, invalidTags);","lastModifiedDate":"2024-03-14"},{"lineNumber":126,"author":{"gitId":"menatahari"},"content":" assertThrows(IllegalValueException.class, startup::toModelType);","lastModifiedDate":"2024-03-19"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":129,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"dwangwk":11,"menatahari":33,"-":77,"yeoshuheng":8}},{"path":"src/test/java/seedu/address/storage/JsonAddressBookStorageTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":6,"author":{"gitId":"menatahari"},"content":"import static seedu.address.testutil.TypicalStartups.ALICE;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"menatahari"},"content":"import static seedu.address.testutil.TypicalStartups.HOON;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"menatahari"},"content":"import static seedu.address.testutil.TypicalStartups.IDA;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"menatahari"},"content":"import static seedu.address.testutil.TypicalStartups.getTypicalAddressBook;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-08-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class JsonAddressBookStorageTest {","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonAddressBookStorageTest\");","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public Path testFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void readAddressBook_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e readAddressBook(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private java.util.Optional\u003cReadOnlyAddressBook\u003e readAddressBook(String filePath) throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" return new JsonAddressBookStorage(Paths.get(filePath)).readAddressBook(addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private Path addToTestDataPathIfNotNull(String prefsFileInTestDataFolder) {","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" return prefsFileInTestDataFolder !\u003d null","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" ? TEST_DATA_FOLDER.resolve(prefsFileInTestDataFolder)","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" : null;","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void read_missingFile_emptyResult() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(readAddressBook(\"NonExistentFile.json\").isPresent());","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void read_notJsonFormat_exceptionThrown() {","lastModifiedDate":"2019-03-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertThrows(DataLoadingException.class, () -\u003e readAddressBook(\"notJsonFormatAddressBook.json\"));","lastModifiedDate":"2023-06-14"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"menatahari"},"content":" public void readAddressBook_invalidStartupAddressBook_throwDataLoadingException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"menatahari"},"content":" assertThrows(DataLoadingException.class, () -\u003e readAddressBook(\"invalidStartupAddressBook.json\"));","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":59,"author":{"gitId":"menatahari"},"content":" public void readAddressBook_invalidAndValidStartupAddressBook_throwDataLoadingException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"menatahari"},"content":" assertThrows(DataLoadingException.class, () -\u003e readAddressBook(\"invalidAndValidStartupAddressBook.json\"));","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void readAndSaveAddressBook_allInOrder_success() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" Path filePath \u003d testFolder.resolve(\"TempAddressBook.json\");","lastModifiedDate":"2019-04-25"},{"lineNumber":66,"author":{"gitId":"-"},"content":" AddressBook original \u003d getTypicalAddressBook();","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" JsonAddressBookStorage jsonAddressBookStorage \u003d new JsonAddressBookStorage(filePath);","lastModifiedDate":"2018-08-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" // Save in new file and read back","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" jsonAddressBookStorage.saveAddressBook(original, filePath);","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook readBack \u003d jsonAddressBookStorage.readAddressBook(filePath).get();","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(readBack));","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" // Modify data, overwrite exiting file, and read back","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"menatahari"},"content":" original.addStartup(HOON);","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"menatahari"},"content":" original.removeStartup(ALICE);","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"-"},"content":" jsonAddressBookStorage.saveAddressBook(original, filePath);","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" readBack \u003d jsonAddressBookStorage.readAddressBook(filePath).get();","lastModifiedDate":"2018-08-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(readBack));","lastModifiedDate":"2018-08-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" // Save and read without specifying file path","lastModifiedDate":"2018-08-13"},{"lineNumber":82,"author":{"gitId":"menatahari"},"content":" original.addStartup(IDA);","lastModifiedDate":"2024-03-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":" jsonAddressBookStorage.saveAddressBook(original); // file path not specified","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" readBack \u003d jsonAddressBookStorage.readAddressBook().get(); // file path not specified","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(readBack));","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":" public void saveAddressBook_nullAddressBook_throwsNullPointerException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e saveAddressBook(null, \"SomeFile.json\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * Saves {@code addressBook} at the specified {@code filePath}.","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" private void saveAddressBook(ReadOnlyAddressBook addressBook, String filePath) {","lastModifiedDate":"2018-08-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-08-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(Paths.get(filePath))","lastModifiedDate":"2018-08-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" .saveAddressBook(addressBook, addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2018-08-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":" throw new AssertionError(\"There should not be an error writing to the file.\", ioe);","lastModifiedDate":"2018-08-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public void saveAddressBook_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e saveAddressBook(new AddressBook(), null));","lastModifiedDate":"2019-03-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"menatahari":11,"-":99}},{"path":"src/test/java/seedu/address/storage/JsonSerializableAddressBookTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.JsonUtil;","lastModifiedDate":"2018-08-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"menatahari"},"content":"import seedu.address.testutil.TypicalStartups;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class JsonSerializableAddressBookTest {","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonSerializableAddressBookTest\");","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"menatahari"},"content":" private static final Path TYPICAL_STARTUPS_FILE \u003d TEST_DATA_FOLDER.resolve(\"typicalStartupAddressBook.json\");","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"menatahari"},"content":" private static final Path INVALID_STARTUP_FILE \u003d TEST_DATA_FOLDER.resolve(\"invalidStartupAddressBook.json\");","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"menatahari"},"content":" private static final Path DUPLICATE_STARTUP_FILE \u003d TEST_DATA_FOLDER.resolve(\"duplicateStartupAddressBook.json\");","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"menatahari"},"content":" public void toModelType_typicalStartupsFile_success() throws Exception {","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"menatahari"},"content":" JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(TYPICAL_STARTUPS_FILE,","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook.class).get();","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" AddressBook addressBookFromFile \u003d dataFromFile.toModelType();","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"menatahari"},"content":" AddressBook typicalStartupsAddressBook \u003d TypicalStartups.getTypicalAddressBook();","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"menatahari"},"content":" assertEquals(addressBookFromFile, typicalStartupsAddressBook);","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"menatahari"},"content":" public void toModelType_invalidStartupFile_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"menatahari"},"content":" JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(INVALID_STARTUP_FILE,","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook.class).get();","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, dataFromFile::toModelType);","lastModifiedDate":"2019-03-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"menatahari"},"content":" public void toModelType_duplicateStartups_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"menatahari"},"content":" JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(DUPLICATE_STARTUP_FILE,","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook.class).get();","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"menatahari"},"content":" assertThrows(IllegalValueException.class, JsonSerializableAddressBook.MESSAGE_DUPLICATE_STARTUP,","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"-"},"content":" dataFromFile::toModelType);","lastModifiedDate":"2019-03-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"menatahari":13,"-":34}},{"path":"src/test/java/seedu/address/storage/StorageManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertNotNull;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"menatahari"},"content":"import static seedu.address.testutil.TypicalStartups.getTypicalAddressBook;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-09-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2016-09-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class StorageManagerTest {","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public Path testFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private StorageManager storageManager;","lastModifiedDate":"2017-04-01"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2016-10-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(getTempFilePath(\"ab\"));","lastModifiedDate":"2018-11-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(getTempFilePath(\"prefs\"));","lastModifiedDate":"2017-02-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" storageManager \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2017-02-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Path getTempFilePath(String fileName) {","lastModifiedDate":"2018-04-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return testFolder.resolve(fileName);","lastModifiedDate":"2019-04-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void prefsReadSave() throws Exception {","lastModifiedDate":"2016-10-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-09-28"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Note: This is an integration test that verifies the StorageManager is properly wired to the","lastModifiedDate":"2016-09-28"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * {@link JsonUserPrefsStorage} class.","lastModifiedDate":"2016-10-01"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * More extensive testing of UserPref saving/reading is done in {@link JsonUserPrefsStorageTest} class.","lastModifiedDate":"2016-10-01"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-28"},{"lineNumber":43,"author":{"gitId":"-"},"content":" UserPrefs original \u003d new UserPrefs();","lastModifiedDate":"2016-09-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" original.setGuiSettings(new GuiSettings(300, 600, 4, 6));","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" storageManager.saveUserPrefs(original);","lastModifiedDate":"2016-09-28"},{"lineNumber":46,"author":{"gitId":"-"},"content":" UserPrefs retrieved \u003d storageManager.readUserPrefs().get();","lastModifiedDate":"2016-09-28"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertEquals(original, retrieved);","lastModifiedDate":"2016-09-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void addressBookReadSave() throws Exception {","lastModifiedDate":"2016-09-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-16"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Note: This is an integration test that verifies the StorageManager is properly wired to the","lastModifiedDate":"2016-10-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * {@link JsonAddressBookStorage} class.","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * More extensive testing of UserPref saving/reading is done in {@link JsonAddressBookStorageTest} class.","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":57,"author":{"gitId":"-"},"content":" AddressBook original \u003d getTypicalAddressBook();","lastModifiedDate":"2017-07-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" storageManager.saveAddressBook(original);","lastModifiedDate":"2016-09-28"},{"lineNumber":59,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook retrieved \u003d storageManager.readAddressBook().get();","lastModifiedDate":"2016-09-28"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(retrieved));","lastModifiedDate":"2016-09-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-01"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void getAddressBookFilePath() {","lastModifiedDate":"2016-10-01"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertNotNull(storageManager.getAddressBookFilePath());","lastModifiedDate":"2016-10-01"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01"},{"lineNumber":68,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"menatahari":1,"-":67}},{"path":"src/test/java/seedu/address/testutil/AddressBookBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21"},{"lineNumber":4,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * A utility class to help with building Addressbook objects.","lastModifiedDate":"2016-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Example usage: \u003cbr\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":9,"author":{"gitId":"menatahari"},"content":" * {@code AddressBook ab \u003d new AddressBookBuilder().withStartup(\"John\", \"Doe\").build();}","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class AddressBookBuilder {","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" private AddressBook addressBook;","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public AddressBookBuilder() {","lastModifiedDate":"2017-05-31"},{"lineNumber":16,"author":{"gitId":"-"},"content":" addressBook \u003d new AddressBook();","lastModifiedDate":"2017-05-31"},{"lineNumber":17,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public AddressBookBuilder(AddressBook addressBook) {","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" this.addressBook \u003d addressBook;","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":24,"author":{"gitId":"menatahari"},"content":" * Adds a new {@code Startup} to the {@code AddressBook} that we are building.","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":26,"author":{"gitId":"menatahari"},"content":" public AddressBookBuilder withStartup(Startup startup) {","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"menatahari"},"content":" addressBook.addStartup(startup);","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public AddressBook build() {","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"menatahari":5,"-":29}},{"path":"src/test/java/seedu/address/testutil/EditStartupDescriptorBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"menatahari"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"menatahari"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"menatahari"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"menatahari"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"menatahari"},"content":"import seedu.address.logic.commands.EditCommand.EditStartupDescriptor;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Address;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Email;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.FundingStage;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Industry;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Name;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Phone;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"menatahari"},"content":"/**","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"menatahari"},"content":" * A utility class to help with building EditStartupDescriptor objects.","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"menatahari"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"menatahari"},"content":"public class EditStartupDescriptorBuilder {","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"menatahari"},"content":" private EditStartupDescriptor descriptor;","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"menatahari"},"content":" public EditStartupDescriptorBuilder() {","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"menatahari"},"content":" descriptor \u003d new EditStartupDescriptor();","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"menatahari"},"content":" public EditStartupDescriptorBuilder(EditStartupDescriptor descriptor) {","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"menatahari"},"content":" this.descriptor \u003d new EditStartupDescriptor(descriptor);","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"menatahari"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"menatahari"},"content":" * Returns an {@code EditStartupDescriptor} with fields containing {@code startup}\u0027s details","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"menatahari"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"menatahari"},"content":" public EditStartupDescriptorBuilder(Startup startup) {","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"menatahari"},"content":" descriptor \u003d new EditStartupDescriptor();","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"menatahari"},"content":" descriptor.setName(startup.getName());","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"menatahari"},"content":" descriptor.setIndustry(startup.getIndustry());","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"menatahari"},"content":" descriptor.setFundingStage(startup.getFundingStage());","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"menatahari"},"content":" descriptor.setPhone(startup.getPhone());","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"menatahari"},"content":" descriptor.setEmail(startup.getEmail());","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"menatahari"},"content":" descriptor.setAddress(startup.getAddress());","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"menatahari"},"content":" descriptor.setTags(startup.getTags());","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"menatahari"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"menatahari"},"content":" * Sets the {@code Name} of the {@code EditStartupDescriptor} that we are building.","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"menatahari"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"menatahari"},"content":" public EditStartupDescriptorBuilder withName(String name) {","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"menatahari"},"content":" descriptor.setName(new Name(name));","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"menatahari"},"content":" return this;","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"menatahari"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"menatahari"},"content":" * Sets the {@code FundingStage} of the {@code EditStartupDescriptor} that we are building.","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"menatahari"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"menatahari"},"content":" public EditStartupDescriptorBuilder withFundingStage(String fundingLevel) {","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"menatahari"},"content":" descriptor.setFundingStage(new FundingStage(fundingLevel));","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"menatahari"},"content":" return this;","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"menatahari"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"menatahari"},"content":" * Sets the {@code Industry} of the {@code EditStartupDescriptor} that we are building.","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"menatahari"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"menatahari"},"content":" public EditStartupDescriptorBuilder withIndustry(String industry) {","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"menatahari"},"content":" descriptor.setIndustry(new Industry(industry));","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"menatahari"},"content":" return this;","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"menatahari"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"menatahari"},"content":" * Sets the {@code Phone} of the {@code EditStartupDescriptor} that we are building.","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"menatahari"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"menatahari"},"content":" public EditStartupDescriptorBuilder withPhone(String phone) {","lastModifiedDate":"2024-03-19"},{"lineNumber":75,"author":{"gitId":"menatahari"},"content":" descriptor.setPhone(new Phone(phone));","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"menatahari"},"content":" return this;","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":79,"author":{"gitId":"menatahari"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":80,"author":{"gitId":"menatahari"},"content":" * Sets the {@code Email} of the {@code EditStartupDescriptor} that we are building.","lastModifiedDate":"2024-03-19"},{"lineNumber":81,"author":{"gitId":"menatahari"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":82,"author":{"gitId":"menatahari"},"content":" public EditStartupDescriptorBuilder withEmail(String email) {","lastModifiedDate":"2024-03-19"},{"lineNumber":83,"author":{"gitId":"menatahari"},"content":" descriptor.setEmail(new Email(email));","lastModifiedDate":"2024-03-19"},{"lineNumber":84,"author":{"gitId":"menatahari"},"content":" return this;","lastModifiedDate":"2024-03-19"},{"lineNumber":85,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":86,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":87,"author":{"gitId":"menatahari"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":88,"author":{"gitId":"menatahari"},"content":" * Sets the {@code Address} of the {@code EditStartupDescriptor} that we are building.","lastModifiedDate":"2024-03-19"},{"lineNumber":89,"author":{"gitId":"menatahari"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":90,"author":{"gitId":"menatahari"},"content":" public EditStartupDescriptorBuilder withAddress(String address) {","lastModifiedDate":"2024-03-19"},{"lineNumber":91,"author":{"gitId":"menatahari"},"content":" descriptor.setAddress(new Address(address));","lastModifiedDate":"2024-03-19"},{"lineNumber":92,"author":{"gitId":"menatahari"},"content":" return this;","lastModifiedDate":"2024-03-19"},{"lineNumber":93,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":94,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":95,"author":{"gitId":"menatahari"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":96,"author":{"gitId":"menatahari"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code EditStartupDescriptor}","lastModifiedDate":"2024-03-19"},{"lineNumber":97,"author":{"gitId":"menatahari"},"content":" * that we are building.","lastModifiedDate":"2024-03-19"},{"lineNumber":98,"author":{"gitId":"menatahari"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":99,"author":{"gitId":"menatahari"},"content":" public EditStartupDescriptorBuilder withTags(String... tags) {","lastModifiedDate":"2024-03-19"},{"lineNumber":100,"author":{"gitId":"menatahari"},"content":" Set\u003cTag\u003e tagSet \u003d Stream.of(tags).map(Tag::new).collect(Collectors.toSet());","lastModifiedDate":"2024-03-19"},{"lineNumber":101,"author":{"gitId":"menatahari"},"content":" descriptor.setTags(tagSet);","lastModifiedDate":"2024-03-19"},{"lineNumber":102,"author":{"gitId":"menatahari"},"content":" return this;","lastModifiedDate":"2024-03-19"},{"lineNumber":103,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":104,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":105,"author":{"gitId":"menatahari"},"content":" public EditStartupDescriptor build() {","lastModifiedDate":"2024-03-19"},{"lineNumber":106,"author":{"gitId":"menatahari"},"content":" return descriptor;","lastModifiedDate":"2024-03-19"},{"lineNumber":107,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":108,"author":{"gitId":"menatahari"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"dwangwk":1,"menatahari":107}},{"path":"src/test/java/seedu/address/testutil/NoteStartupDescriptorBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"dwangwk"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"dwangwk"},"content":"import seedu.address.logic.commands.NoteCommand.NoteStartupDescriptor;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"dwangwk"},"content":"import seedu.address.model.startup.Note;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"dwangwk"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"dwangwk"},"content":" * A utility class to help with building NoteStartupDescriptor objects, focusing exclusively on the note attribute.","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"dwangwk"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"dwangwk"},"content":"public class NoteStartupDescriptorBuilder {","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"dwangwk"},"content":" private final NoteStartupDescriptor descriptor;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"dwangwk"},"content":" public NoteStartupDescriptorBuilder() {","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"dwangwk"},"content":" descriptor \u003d new NoteStartupDescriptor();","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"dwangwk"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"dwangwk"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"dwangwk"},"content":" * Initializes the builder with the note of a given startup. This is particularly useful for tests that require","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"dwangwk"},"content":" * a startup\u0027s existing note to be modified.","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"dwangwk"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"dwangwk"},"content":" * @param startupNote The note of the startup to be used as a starting point.","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"dwangwk"},"content":" * @return A NoteStartupDescriptorBuilder instance for chaining method calls.","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"dwangwk"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"dwangwk"},"content":" public NoteStartupDescriptorBuilder withNote(String startupNote) {","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"dwangwk"},"content":" descriptor.setNote(new Note(startupNote));","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"dwangwk"},"content":" return this;","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"dwangwk"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"dwangwk"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"dwangwk"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"dwangwk"},"content":" * Builds and returns a NoteStartupDescriptor object.","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"dwangwk"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"dwangwk"},"content":" * @return The constructed NoteStartupDescriptor with set note attribute.","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"dwangwk"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"dwangwk"},"content":" public NoteStartupDescriptor build() {","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"dwangwk"},"content":" return descriptor;","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"dwangwk"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"dwangwk"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"dwangwk":37}},{"path":"src/test/java/seedu/address/testutil/StartupBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"menatahari"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"menatahari"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"menatahari"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Address;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Email;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.FundingStage;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Industry;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Name;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Note;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Phone;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"menatahari"},"content":"/**","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"menatahari"},"content":" * A utility class to help with building Startup objects.","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"menatahari"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"menatahari"},"content":"public class StartupBuilder {","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"menatahari"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"menatahari"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"menatahari"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"menatahari"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"menatahari"},"content":" public static final String DEFAULT_INDUSTRY \u003d \"finance\";","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"menatahari"},"content":" public static final String DEFAULT_FUNDING \u003d \"A\";","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"menatahari"},"content":" public static final String DEFAULT_NOTE \u003d \"Add a note!\";","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"menatahari"},"content":" private Name name;","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"menatahari"},"content":" private Phone phone;","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"menatahari"},"content":" private Industry industry;","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"menatahari"},"content":" private FundingStage fundingStage;","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"menatahari"},"content":" private Email email;","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"menatahari"},"content":" private Address address;","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"menatahari"},"content":" private Note note;","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"menatahari"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"menatahari"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"menatahari"},"content":" * Creates a {@code StartupBuilder} with the default details.","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"menatahari"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"menatahari"},"content":" public StartupBuilder() {","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"menatahari"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"menatahari"},"content":" industry \u003d new Industry(DEFAULT_INDUSTRY);","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"menatahari"},"content":" fundingStage \u003d new FundingStage(DEFAULT_FUNDING);","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"menatahari"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"menatahari"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"menatahari"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"menatahari"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"menatahari"},"content":" note \u003d new Note(DEFAULT_NOTE);","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"menatahari"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"menatahari"},"content":" * Initializes the StartupBuilder with the data of {@code startupToCopy}.","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"menatahari"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"menatahari"},"content":" public StartupBuilder(Startup startupToCopy) {","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"menatahari"},"content":" name \u003d startupToCopy.getName();","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"menatahari"},"content":" industry \u003d startupToCopy.getIndustry();","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"menatahari"},"content":" fundingStage \u003d startupToCopy.getFundingStage();","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"menatahari"},"content":" phone \u003d startupToCopy.getPhone();","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"menatahari"},"content":" email \u003d startupToCopy.getEmail();","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"menatahari"},"content":" address \u003d startupToCopy.getAddress();","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"menatahari"},"content":" note \u003d startupToCopy.getNote();","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"menatahari"},"content":" tags \u003d new HashSet\u003c\u003e(startupToCopy.getTags());","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"menatahari"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":75,"author":{"gitId":"menatahari"},"content":" * Sets the {@code Name} of the {@code Startup} that we are building.","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"menatahari"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"menatahari"},"content":" public StartupBuilder withName(String name) {","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"menatahari"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2024-03-19"},{"lineNumber":79,"author":{"gitId":"menatahari"},"content":" return this;","lastModifiedDate":"2024-03-19"},{"lineNumber":80,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":81,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":82,"author":{"gitId":"menatahari"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":83,"author":{"gitId":"menatahari"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code Startup} that we are building.","lastModifiedDate":"2024-03-19"},{"lineNumber":84,"author":{"gitId":"menatahari"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":85,"author":{"gitId":"menatahari"},"content":" public StartupBuilder withTags(String ... tags) {","lastModifiedDate":"2024-03-19"},{"lineNumber":86,"author":{"gitId":"menatahari"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2024-03-19"},{"lineNumber":87,"author":{"gitId":"menatahari"},"content":" return this;","lastModifiedDate":"2024-03-19"},{"lineNumber":88,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":89,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":90,"author":{"gitId":"menatahari"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":91,"author":{"gitId":"menatahari"},"content":" * Sets the {@code Address} of the {@code Startup} that we are building.","lastModifiedDate":"2024-03-19"},{"lineNumber":92,"author":{"gitId":"menatahari"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":93,"author":{"gitId":"menatahari"},"content":" public StartupBuilder withAddress(String address) {","lastModifiedDate":"2024-03-19"},{"lineNumber":94,"author":{"gitId":"menatahari"},"content":" this.address \u003d new Address(address);","lastModifiedDate":"2024-03-19"},{"lineNumber":95,"author":{"gitId":"menatahari"},"content":" return this;","lastModifiedDate":"2024-03-19"},{"lineNumber":96,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":97,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":98,"author":{"gitId":"menatahari"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":99,"author":{"gitId":"menatahari"},"content":" * Sets the {@code Phone} of the {@code Startup} that we are building.","lastModifiedDate":"2024-03-19"},{"lineNumber":100,"author":{"gitId":"menatahari"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":101,"author":{"gitId":"menatahari"},"content":" public StartupBuilder withPhone(String phone) {","lastModifiedDate":"2024-03-19"},{"lineNumber":102,"author":{"gitId":"menatahari"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2024-03-19"},{"lineNumber":103,"author":{"gitId":"menatahari"},"content":" return this;","lastModifiedDate":"2024-03-19"},{"lineNumber":104,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":105,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":106,"author":{"gitId":"menatahari"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":107,"author":{"gitId":"menatahari"},"content":" * Sets the {@code Email} of the {@code Startup} that we are building.","lastModifiedDate":"2024-03-19"},{"lineNumber":108,"author":{"gitId":"menatahari"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":109,"author":{"gitId":"menatahari"},"content":" public StartupBuilder withEmail(String email) {","lastModifiedDate":"2024-03-19"},{"lineNumber":110,"author":{"gitId":"menatahari"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2024-03-19"},{"lineNumber":111,"author":{"gitId":"menatahari"},"content":" return this;","lastModifiedDate":"2024-03-19"},{"lineNumber":112,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":113,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":114,"author":{"gitId":"menatahari"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":115,"author":{"gitId":"menatahari"},"content":" * Sets the {@code Note} of the {@code Startup} that we are building.","lastModifiedDate":"2024-03-19"},{"lineNumber":116,"author":{"gitId":"menatahari"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":117,"author":{"gitId":"menatahari"},"content":" public StartupBuilder withNote(String note) {","lastModifiedDate":"2024-03-19"},{"lineNumber":118,"author":{"gitId":"menatahari"},"content":" this.note \u003d new Note(note);","lastModifiedDate":"2024-03-19"},{"lineNumber":119,"author":{"gitId":"menatahari"},"content":" return this;","lastModifiedDate":"2024-03-19"},{"lineNumber":120,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":121,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":122,"author":{"gitId":"menatahari"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":123,"author":{"gitId":"menatahari"},"content":" * Sets the {@code fundingStage} of the {@code Startup} that we are building.","lastModifiedDate":"2024-03-19"},{"lineNumber":124,"author":{"gitId":"menatahari"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":125,"author":{"gitId":"menatahari"},"content":" public StartupBuilder withFundingStage(String fundingLevel) {","lastModifiedDate":"2024-03-19"},{"lineNumber":126,"author":{"gitId":"menatahari"},"content":" this.fundingStage \u003d new FundingStage(fundingLevel);","lastModifiedDate":"2024-03-19"},{"lineNumber":127,"author":{"gitId":"menatahari"},"content":" return this;","lastModifiedDate":"2024-03-19"},{"lineNumber":128,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":129,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":130,"author":{"gitId":"menatahari"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":131,"author":{"gitId":"menatahari"},"content":" * Sets the {@code industry} of the {@code Startup} that we are building.","lastModifiedDate":"2024-03-19"},{"lineNumber":132,"author":{"gitId":"menatahari"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":133,"author":{"gitId":"menatahari"},"content":" public StartupBuilder withIndustry(String industry) {","lastModifiedDate":"2024-03-19"},{"lineNumber":134,"author":{"gitId":"menatahari"},"content":" this.industry \u003d new Industry(industry);","lastModifiedDate":"2024-03-19"},{"lineNumber":135,"author":{"gitId":"menatahari"},"content":" return this;","lastModifiedDate":"2024-03-19"},{"lineNumber":136,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":137,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":138,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":139,"author":{"gitId":"menatahari"},"content":" public Startup build() {","lastModifiedDate":"2024-03-19"},{"lineNumber":140,"author":{"gitId":"dwangwk"},"content":" return new Startup(name, fundingStage, industry, phone, email, address, tags, note);","lastModifiedDate":"2024-03-20"},{"lineNumber":141,"author":{"gitId":"menatahari"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":142,"author":{"gitId":"menatahari"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":143,"author":{"gitId":"menatahari"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"dwangwk":1,"menatahari":142}},{"path":"src/test/java/seedu/address/testutil/StartupUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-02-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-02-25"},{"lineNumber":5,"author":{"gitId":"yeoshuheng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FUNDING_STAGE;","lastModifiedDate":"2024-02-25"},{"lineNumber":6,"author":{"gitId":"yeoshuheng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_INDUSTRY;","lastModifiedDate":"2024-02-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-02-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-02-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-02-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-03-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-03-29"},{"lineNumber":14,"author":{"gitId":"menatahari"},"content":"import seedu.address.logic.commands.EditCommand.EditStartupDescriptor;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-03-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05"},{"lineNumber":19,"author":{"gitId":"menatahari"},"content":" * A utility class for Startup.","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":21,"author":{"gitId":"menatahari"},"content":"public class StartupUtil {","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05"},{"lineNumber":24,"author":{"gitId":"menatahari"},"content":" * Returns an add command string for adding the {@code startup}.","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":26,"author":{"gitId":"menatahari"},"content":" public static String getAddCommand(Startup startup) {","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"menatahari"},"content":" return AddCommand.COMMAND_WORD + \" \" + getStartupDetails(startup);","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-06"},{"lineNumber":31,"author":{"gitId":"menatahari"},"content":" * Returns the part of command string for the given {@code startup}\u0027s details.","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06"},{"lineNumber":33,"author":{"gitId":"menatahari"},"content":" public static String getStartupDetails(Startup startup) {","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05"},{"lineNumber":35,"author":{"gitId":"menatahari"},"content":" sb.append(PREFIX_NAME + startup.getName().fullName + \" \");","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"menatahari"},"content":" sb.append(PREFIX_FUNDING_STAGE + startup.getFundingStage().value + \" \");","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"menatahari"},"content":" sb.append(PREFIX_INDUSTRY + startup.getIndustry().value + \" \");","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"menatahari"},"content":" sb.append(PREFIX_PHONE + startup.getPhone().value + \" \");","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"menatahari"},"content":" sb.append(PREFIX_EMAIL + startup.getEmail().value + \" \");","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"menatahari"},"content":" sb.append(PREFIX_ADDRESS + startup.getAddress().value + \" \");","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"menatahari"},"content":" startup.getTags().stream().forEach(","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":" s -\u003e sb.append(PREFIX_TAG + s.tagName + \" \")","lastModifiedDate":"2017-05-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":" );","lastModifiedDate":"2017-05-09"},{"lineNumber":44,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-04-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26"},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26"},{"lineNumber":48,"author":{"gitId":"menatahari"},"content":" * Returns the part of command string for the given {@code EditStartupDescriptor}\u0027s details.","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26"},{"lineNumber":50,"author":{"gitId":"menatahari"},"content":" public static String getEditStartupDescriptorDetails(EditStartupDescriptor descriptor) {","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(PREFIX_NAME).append(name.fullName).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":53,"author":{"gitId":"yeoshuheng"},"content":" descriptor.getIndustry().ifPresent(industry -\u003e sb.append(PREFIX_INDUSTRY).append(industry.value).append(\" \"));","lastModifiedDate":"2024-02-25"},{"lineNumber":54,"author":{"gitId":"yeoshuheng"},"content":" descriptor.getFundingStage().ifPresent(fundingStage -\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":55,"author":{"gitId":"yeoshuheng"},"content":" sb.append(PREFIX_FUNDING_STAGE).append(fundingStage.value).append(\" \"));","lastModifiedDate":"2024-02-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":" descriptor.getPhone().ifPresent(phone -\u003e sb.append(PREFIX_PHONE).append(phone.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":57,"author":{"gitId":"-"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(PREFIX_EMAIL).append(email.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":" descriptor.getAddress().ifPresent(address -\u003e sb.append(PREFIX_ADDRESS).append(address.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":" if (descriptor.getTags().isPresent()) {","lastModifiedDate":"2018-03-26"},{"lineNumber":60,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tags \u003d descriptor.getTags().get();","lastModifiedDate":"2018-03-26"},{"lineNumber":61,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2018-03-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":" sb.append(PREFIX_TAG);","lastModifiedDate":"2018-03-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":" tags.forEach(s -\u003e sb.append(PREFIX_TAG).append(s.tagName).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":69,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05"}],"authorContributionMap":{"menatahari":18,"-":46,"yeoshuheng":5}},{"path":"src/test/java/seedu/address/testutil/TestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Files;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-07-30"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-07-30"},{"lineNumber":10,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * A utility class for test cases.","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class TestUtil {","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Folder used for temp files created during testing. Ignored by Git.","lastModifiedDate":"2016-10-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final Path SANDBOX_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"sandbox\");","lastModifiedDate":"2018-04-21"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Appends {@code fileName} to the sandbox folder path and returns the resulting path.","lastModifiedDate":"2018-04-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Creates the sandbox folder if it doesn\u0027t exist.","lastModifiedDate":"2016-09-28"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static Path getFilePathInSandboxFolder(String fileName) {","lastModifiedDate":"2018-04-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-28"},{"lineNumber":28,"author":{"gitId":"-"},"content":" Files.createDirectories(SANDBOX_FOLDER);","lastModifiedDate":"2018-04-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-28"},{"lineNumber":30,"author":{"gitId":"-"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2016-09-28"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-28"},{"lineNumber":32,"author":{"gitId":"-"},"content":" return SANDBOX_FOLDER.resolve(fileName);","lastModifiedDate":"2018-04-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-30"},{"lineNumber":36,"author":{"gitId":"menatahari"},"content":" * Returns the middle index of the startup in the {@code model}\u0027s startup list.","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-30"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static Index getMidIndex(Model model) {","lastModifiedDate":"2017-07-30"},{"lineNumber":39,"author":{"gitId":"menatahari"},"content":" return Index.fromOneBased(model.getFilteredStartupList().size() / 2);","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-30"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-30"},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-30"},{"lineNumber":43,"author":{"gitId":"menatahari"},"content":" * Returns the last index of the startup in the {@code model}\u0027s startup list.","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-30"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static Index getLastIndex(Model model) {","lastModifiedDate":"2017-07-30"},{"lineNumber":46,"author":{"gitId":"menatahari"},"content":" return Index.fromOneBased(model.getFilteredStartupList().size());","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-30"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-30"},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-30"},{"lineNumber":50,"author":{"gitId":"menatahari"},"content":" * Returns the startup in the {@code model}\u0027s startup list at {@code index}.","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-30"},{"lineNumber":52,"author":{"gitId":"menatahari"},"content":" public static Startup getStartup(Model model, Index index) {","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"menatahari"},"content":" return model.getFilteredStartupList().get(index.getZeroBased());","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-30"},{"lineNumber":55,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"menatahari":8,"-":47}},{"path":"src/test/java/seedu/address/testutil/TypicalIndexes.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-08-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-08-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Index} objects to be used in tests.","lastModifiedDate":"2017-08-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class TypicalIndexes {","lastModifiedDate":"2017-08-05"},{"lineNumber":9,"author":{"gitId":"menatahari"},"content":" public static final Index INDEX_FIRST_STARTUP \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"menatahari"},"content":" public static final Index INDEX_SECOND_STARTUP \u003d Index.fromOneBased(2);","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"menatahari"},"content":" public static final Index INDEX_THIRD_STARTUP \u003d Index.fromOneBased(3);","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-08-05"}],"authorContributionMap":{"menatahari":3,"-":9}},{"path":"src/test/java/seedu/address/testutil/TypicalStartups.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-08-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-08-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-07"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21"},{"lineNumber":19,"author":{"gitId":"menatahari"},"content":"import seedu.address.model.startup.Startup;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13"},{"lineNumber":22,"author":{"gitId":"menatahari"},"content":" * A utility class containing a list of {@code Startup} objects to be used in tests.","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13"},{"lineNumber":24,"author":{"gitId":"menatahari"},"content":"public class TypicalStartups {","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":26,"author":{"gitId":"menatahari"},"content":" public static final Startup ALICE \u003d new StartupBuilder().withName(\"Alice Pauline\")","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" .withAddress(\"123, Jurong West Ave 6, #08-111\").withEmail(\"alice@example.com\")","lastModifiedDate":"2017-04-05"},{"lineNumber":28,"author":{"gitId":"yeoshuheng"},"content":" .withPhone(\"94351253\").withIndustry(\"finance\").withFundingStage(\"A\")","lastModifiedDate":"2024-02-25"},{"lineNumber":29,"author":{"gitId":"dwangwk"},"content":" .withNote(\"Add a note!\").withTags(\"friends\").build();","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"menatahari"},"content":" public static final Startup BENSON \u003d new StartupBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"yeoshuheng"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\").withIndustry(\"finance\").withFundingStage(\"A\")","lastModifiedDate":"2024-02-25"},{"lineNumber":32,"author":{"gitId":"dwangwk"},"content":" .withEmail(\"johnd@example.com\").withPhone(\"98765432\").withNote(\"Smelly guy\")","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" .withTags(\"owesMoney\", \"friends\").build();","lastModifiedDate":"2016-09-13"},{"lineNumber":34,"author":{"gitId":"menatahari"},"content":" public static final Startup CARL \u003d new StartupBuilder().withName(\"Carl Kurz\").withPhone(\"95352563\")","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"yespiggy"},"content":" .withEmail(\"heinz@example.com\").withIndustry(\"web3\").withFundingStage(\"C\")","lastModifiedDate":"2024-03-15"},{"lineNumber":36,"author":{"gitId":"yeoshuheng"},"content":" .withAddress(\"wall street\").build();","lastModifiedDate":"2024-02-25"},{"lineNumber":37,"author":{"gitId":"menatahari"},"content":" public static final Startup DANIEL \u003d new StartupBuilder().withName(\"Daniel Meier\").withPhone(\"87652533\")","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"yeoshuheng"},"content":" .withEmail(\"cornelia@example.com\").withIndustry(\"finance\").withFundingStage(\"A\")","lastModifiedDate":"2024-02-25"},{"lineNumber":39,"author":{"gitId":"yeoshuheng"},"content":" .withAddress(\"10th street\").withTags(\"friends\").build();","lastModifiedDate":"2024-02-25"},{"lineNumber":40,"author":{"gitId":"menatahari"},"content":" public static final Startup ELLE \u003d new StartupBuilder().withName(\"Elle Meyer\").withPhone(\"9482224\")","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"yespiggy"},"content":" .withEmail(\"werner@example.com\").withIndustry(\"web3\").withFundingStage(\"C\")","lastModifiedDate":"2024-03-15"},{"lineNumber":42,"author":{"gitId":"yeoshuheng"},"content":" .withAddress(\"michegan ave\").build();","lastModifiedDate":"2024-02-25"},{"lineNumber":43,"author":{"gitId":"menatahari"},"content":" public static final Startup FIONA \u003d new StartupBuilder().withName(\"Fiona Kunz\").withPhone(\"9482427\")","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"yespiggy"},"content":" .withEmail(\"lydia@example.com\").withIndustry(\"web3\").withFundingStage(\"C\")","lastModifiedDate":"2024-03-15"},{"lineNumber":45,"author":{"gitId":"yeoshuheng"},"content":" .withAddress(\"little tokyo\").build();","lastModifiedDate":"2024-02-25"},{"lineNumber":46,"author":{"gitId":"menatahari"},"content":" public static final Startup GEORGE \u003d new StartupBuilder().withName(\"George Best\").withPhone(\"9482442\")","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"yeoshuheng"},"content":" .withEmail(\"anna@example.com\").withIndustry(\"finance\").withFundingStage(\"A\")","lastModifiedDate":"2024-02-25"},{"lineNumber":48,"author":{"gitId":"yeoshuheng"},"content":" .withAddress(\"4th street\").build();","lastModifiedDate":"2024-02-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13"},{"lineNumber":51,"author":{"gitId":"menatahari"},"content":" public static final Startup HOON \u003d new StartupBuilder().withName(\"Hoon Meier\").withPhone(\"8482424\")","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"yeoshuheng"},"content":" .withEmail(\"stefan@example.com\").withIndustry(\"finance\").withFundingStage(\"A\")","lastModifiedDate":"2024-02-25"},{"lineNumber":53,"author":{"gitId":"yeoshuheng"},"content":" .withAddress(\"little india\").build();","lastModifiedDate":"2024-02-25"},{"lineNumber":54,"author":{"gitId":"menatahari"},"content":" public static final Startup IDA \u003d new StartupBuilder().withName(\"Ida Mueller\").withPhone(\"8482131\")","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"yeoshuheng"},"content":" .withEmail(\"hans@example.com\").withIndustry(\"finance\").withFundingStage(\"A\")","lastModifiedDate":"2024-02-25"},{"lineNumber":56,"author":{"gitId":"yeoshuheng"},"content":" .withAddress(\"chicago ave\").build();","lastModifiedDate":"2024-02-25"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":58,"author":{"gitId":"menatahari"},"content":" // Manually added - Startup\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"menatahari"},"content":" public static final Startup AMY \u003d new StartupBuilder().withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-09-21"},{"lineNumber":61,"author":{"gitId":"menatahari"},"content":" public static final Startup BOB \u003d new StartupBuilder().withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND)","lastModifiedDate":"2017-09-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2017-09-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":67,"author":{"gitId":"menatahari"},"content":" private TypicalStartups() {} // prevents instantiation","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":69,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":70,"author":{"gitId":"menatahari"},"content":" * Returns an {@code AddressBook} with all the typical startups.","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2017-08-05"},{"lineNumber":73,"author":{"gitId":"-"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2017-08-05"},{"lineNumber":74,"author":{"gitId":"menatahari"},"content":" for (Startup startup : getTypicalStartups()) {","lastModifiedDate":"2024-03-19"},{"lineNumber":75,"author":{"gitId":"menatahari"},"content":" ab.addStartup(startup);","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04"},{"lineNumber":80,"author":{"gitId":"menatahari"},"content":" public static List\u003cStartup\u003e getTypicalStartups() {","lastModifiedDate":"2024-03-19"},{"lineNumber":81,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2017-08-07"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04"},{"lineNumber":83,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13"}],"authorContributionMap":{"dwangwk":2,"menatahari":20,"yespiggy":3,"-":45,"yeoshuheng":13}}] diff --git a/AY2324S2-CS2103T-W09-2_tp_master/commits.json b/AY2324S2-CS2103T-W09-2_tp_master/commits.json index d6f89a5a..dc6c6698 100644 --- a/AY2324S2-CS2103T-W09-2_tp_master/commits.json +++ b/AY2324S2-CS2103T-W09-2_tp_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"dwangwk":[{"date":"2024-03-07","commitResults":[{"hash":"1499dc1041a33dd81b79a49768feaa09e6621c28","isMergeCommit":false,"messageTitle":"Docs: Update Profile","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":48,"deletions":6}}},{"hash":"6f6620f8977c5667616382a2af02c2584d143ef0","isMergeCommit":false,"messageTitle":"Docs: Updated Readme, DeveloperGuide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":230,"deletions":39}}},{"hash":"56d9b344a27da1a1ec908a06899ced743f39dea4","isMergeCommit":false,"messageTitle":"Docs: About Us Sifan Image","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"b76da9e9d536129352e67dec71a3206d94080289","isMergeCommit":true,"messageTitle":"Merge pull request #17 from dwangwk/master","messageBody":"Update AboutUs, Readme, DeveloperGuide","fileTypesAndContributionMap":{}},{"hash":"0844d885ce4b55a007c5404578cab6ca1434f513","isMergeCommit":false,"messageTitle":"Docs: Updated Photo Name","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}}]},{"date":"2024-03-13","commitResults":[{"hash":"a39ddb915ce0508996ab1b38cc6af67422988457","isMergeCommit":false,"messageTitle":"feat: Add single note to Startup","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":470,"deletions":7},"test-code":{"insertions":19,"deletions":2}}},{"hash":"6c3ab6826d342e4e94b9f2e5842ac079d40187e7","isMergeCommit":false,"messageTitle":"Docs: Update JavaDoc","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-14","commitResults":[{"hash":"4708ab522ee5c672c376adec781e2f86c5bc5665","isMergeCommit":false,"messageTitle":"Fix: Gradle Build Errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":18,"deletions":14}}},{"hash":"ec83b426492bbe526c558802e4ae36f31465b3c3","isMergeCommit":true,"messageTitle":"Merge pull request #26 from dwangwk/tutorial-adding-command","messageBody":"feat: Add single note to Startup","fileTypesAndContributionMap":{}}]},{"date":"2024-03-17","commitResults":[{"hash":"35b3b258a59546e91e738c4e64c074b4cd097273","isMergeCommit":true,"messageTitle":"Merge pull request #29 from yeoshuheng/branch-seeed","messageBody":"feat: Add more funding levels","fileTypesAndContributionMap":{}},{"hash":"cb2f451f81873bcde9f4ed060214d8aba8ad48f1","isMergeCommit":true,"messageTitle":"Merge pull request #31 from yespiggy/update-find-command","messageBody":"feat: update find command","fileTypesAndContributionMap":{}}]},{"date":"2024-03-20","commitResults":[{"hash":"40532de75997fd0719da189f03a7e36eb0b1ba53","isMergeCommit":false,"messageTitle":"test: Test coverage for Note Command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":33,"deletions":155},"test-code":{"insertions":204,"deletions":1}}},{"hash":"18fce6f4368cc4b560aba933b5a1627f2f63d5e1","isMergeCommit":false,"messageTitle":"docs: User Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":15,"deletions":0}}},{"hash":"344fd13aea207b367d5f3c0640b2edefd9774ecb","isMergeCommit":true,"messageTitle":"Merge pull request #1 from dwangwk/branch-user-guide","messageBody":"docs: User Guide","fileTypesAndContributionMap":{}},{"hash":"8ed7d868d088fb1c56ae8e9749c2cd752cfde4f9","isMergeCommit":true,"messageTitle":"Merge pull request #44 from yeoshuheng/branch-seeed","messageBody":"docs: Update UG TOC","fileTypesAndContributionMap":{}}]}],"menatahari":[{"date":"2024-03-07","commitResults":[{"hash":"a8eb93c0cd4a775db4eede5a6f03de2aed2148ad","isMergeCommit":false,"messageTitle":"Update readme and uploaded photo","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":19,"deletions":11}}},{"hash":"2ab29ded407cf63b39c4cfea3ca859652647986d","isMergeCommit":true,"messageTitle":"Merge pull request #15 from menatahari/master","messageBody":"Update README.md","fileTypesAndContributionMap":{}}]},{"date":"2024-03-19","commitResults":[{"hash":"4cc46045680b642b39b9ff07863cec191f9eb037","isMergeCommit":false,"messageTitle":"refactor: Rename getFilteredPersonList method to getFilteredStartupList","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}},{"hash":"e6827495a62f7acb89dd8e4ee581aca2d4ed436e","isMergeCommit":false,"messageTitle":"refactor: Rename getFilteredPersonList method to getFilteredStartupList and update all references","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}},{"hash":"4db661de02441743f72b955d62def52df3a39ab0","isMergeCommit":false,"messageTitle":"refactor: Rename Person to Startup and update all reference and instances","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":520,"deletions":526},"other":{"insertions":209,"deletions":215},"test-code":{"insertions":812,"deletions":823}}},{"hash":"db6b9b2af1a848b8fffaa7d1293c0118c3662fe6","isMergeCommit":false,"messageTitle":"refactor: Update app title","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"ec97f63e2025b655481915c03d242c4956dab3c8","isMergeCommit":false,"messageTitle":"refactor: Update app icon","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"test-code":{"insertions":1,"deletions":1}}},{"hash":"39a83279478340a19ba192e2f2fe5b1201720b37","isMergeCommit":false,"messageTitle":"refactor: Rename person instances to startup","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":31,"deletions":31}}},{"hash":"923cda6f91618625e9c563cc859d020f1cff46dd","isMergeCommit":false,"messageTitle":"Fix import statements to comply with checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":17,"deletions":5}}},{"hash":"7b4cebcd6c92218f8f9ec926a8d778ed24d04253","isMergeCommit":false,"messageTitle":"Fix header comment causing checkstyle violations","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":8}}},{"hash":"6c5aa19a3ec6cec0342509a5e05216d2c67c05c1","isMergeCommit":false,"messageTitle":"Fix lines causing checkstyle violation","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":8,"deletions":4}}},{"hash":"8398f4fbcd0c303949898941fad09024bfac5a38","isMergeCommit":false,"messageTitle":"Fix import statements to comply with checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":14,"deletions":3}}},{"hash":"25743fc16054de9f901a3994ad4c9d2e2497959d","isMergeCommit":true,"messageTitle":"Merge pull request #39 from menatahari/branch-refactor-codebase","messageBody":"refactor: Rename Person to Startup and update app title and icon","fileTypesAndContributionMap":{}}]},{"date":"2024-03-20","commitResults":[{"hash":"1de464990b125671dedef8f19a7b8b9ca81abdad","isMergeCommit":true,"messageTitle":"Merge pull request #43 from yeoshuheng/branch-seeed","messageBody":"Updated UG","fileTypesAndContributionMap":{}},{"hash":"28013c88985901236994cfd5c64c49d49b7e1a2f","isMergeCommit":true,"messageTitle":"Merge pull request #45 from yeoshuheng/branch-seeed","messageBody":"docs: Fix person to startup","fileTypesAndContributionMap":{}}]}],"yespiggy":[{"date":"2024-03-07","commitResults":[{"hash":"84063188a916022bf2f1b80803f0b8d8b3b2dafc","isMergeCommit":false,"messageTitle":"docs: Update DG User stories","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":20,"deletions":13}}},{"hash":"fa249d62a450e496f8bf4fa2a07b6ef4cd6ffadd","isMergeCommit":true,"messageTitle":"Merge branch update DG user stories","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"676d51e0b69796e8a04234d2c15b914329cd0c96","isMergeCommit":true,"messageTitle":"Merge pull request #14 from yespiggy/master","messageBody":"Update user stories in DG","fileTypesAndContributionMap":{}}]},{"date":"2024-03-10","commitResults":[{"hash":"c1be4f4bc81ea765a06e1efdd5a84627334a8475","isMergeCommit":false,"messageTitle":"docs: update website config file","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}}]},{"date":"2024-03-11","commitResults":[{"hash":"67d98ff1733455b0b5159186ad5dd4a51b8cb4ce","isMergeCommit":false,"messageTitle":"feat: update list command to show industry, funding stage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":25,"deletions":2}}},{"hash":"92a22862f6a0acb03899f3be16bf00954a52e128","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-list-command Merge the upstream branch.","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-12","commitResults":[{"hash":"b52ddd157cd2a8e0ba0476be0f85576e0006f4cc","isMergeCommit":false,"messageTitle":"feat: update the display of funding stages","messageBody":"Co-authored-by: yeoshuheng \u003c100367948+yeoshuheng@users.noreply.github.com\u003e","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-14","commitResults":[{"hash":"07495769c659088c47f605a204aec3b980f588db","isMergeCommit":false,"messageTitle":"feat: enable find by industry / funding stage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":126,"deletions":3}}}]},{"date":"2024-03-15","commitResults":[{"hash":"4726a8a9d71241fc7434259c333e44cd1b9f396a","isMergeCommit":false,"messageTitle":"fix: fix checkstyle and exception handling","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":29,"deletions":17}}},{"hash":"435043aa72b5ab0d23d379b06eaba570527ae2be","isMergeCommit":false,"messageTitle":"test: add tests for find commands","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":13,"deletions":12},"test-code":{"insertions":188,"deletions":3}}},{"hash":"957d9120ad7c09e7e57db6f7e0e51d6972c10a21","isMergeCommit":false,"messageTitle":"fix: fix some tests for find command","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":22,"deletions":4}}}]},{"date":"2024-03-20","commitResults":[{"hash":"53915b48331a0dce6f4f23c5e40c12aa190aa7af","isMergeCommit":false,"messageTitle":"docs: update UG intro \u0026 find command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"docs":{"insertions":80,"deletions":32}}}]}],"yeoshuheng":[{"date":"2024-02-25","commitResults":[{"hash":"842594880efd9ef12b06dd5f5716ce9d1c46de79","isMergeCommit":false,"messageTitle":"docs: Update profile","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":13,"deletions":15}}},{"hash":"c0b6212b3fdc7805ddddcc7a791160c2730d1219","isMergeCommit":false,"messageTitle":"feat: Add Industry and FundingStage options","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":108,"deletions":5}}},{"hash":"9d4aa185e921f647f7079e1ec5eca32e36a298fa","isMergeCommit":false,"messageTitle":"feat: Add logic for industry, funding","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":43,"deletions":17}}},{"hash":"ccc8a41ac1e34edbcc7189e0198a3ba61210178e","isMergeCommit":false,"messageTitle":"feat: Add sample for person with industry, funding","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":35,"deletions":13}}},{"hash":"078b9e51de07a37bc01af8b33991d63b78c98578","isMergeCommit":false,"messageTitle":"feat: Update storage for industry, funding","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":29,"deletions":7}}},{"hash":"9ded1fc99b36c25649aa251c7c64d68005bc3d5a","isMergeCommit":false,"messageTitle":"test: Fix test for industry, funding","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":81,"deletions":26}}},{"hash":"38212e7a41db0be57ac52c5dc78795a5ffb6a434","isMergeCommit":false,"messageTitle":"feat: Add funding, industry for edit command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":36,"deletions":12}}},{"hash":"eb7c924496e743e877b752b944d33651d1978638","isMergeCommit":false,"messageTitle":"style: Fix checkstyle for test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":23,"deletions":5}}},{"hash":"1ede8657f049bee88e8b82f71417b1a8c8c2b6e4","isMergeCommit":false,"messageTitle":"style: Fix checkstyle for main","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":73,"deletions":15}}},{"hash":"d178843dbf22a382046ba7a4beb1cb3437ae9814","isMergeCommit":false,"messageTitle":"test: Update test for funding, industry","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":176,"deletions":113}}},{"hash":"b2b9eb02bac1c24cc39fb2b8efc575a549532253","isMergeCommit":false,"messageTitle":"style: Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":29,"deletions":17}}}]},{"date":"2024-03-05","commitResults":[{"hash":"fb1bdef18772248a883d4eb0421a4c45a370c70a","isMergeCommit":false,"messageTitle":"fix: Add duplicate prefix checks","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1},"test-code":{"insertions":120,"deletions":0}}},{"hash":"aec40a6d3b801a6ddd30ac670bf513461480bd2e","isMergeCommit":false,"messageTitle":"test: Add test for funding stage \u0026 industry","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":205,"deletions":131}}},{"hash":"b773e6b431bdc5d09ffce4a4356131af78ddb243","isMergeCommit":true,"messageTitle":"Merge pull request #1 from yeoshuheng/branch-AddStartup","messageBody":"Branch add startup","fileTypesAndContributionMap":{}}]},{"date":"2024-03-06","commitResults":[{"hash":"728b2c0b2837cc516dc425fbc49fee8fd092bcc8","isMergeCommit":true,"messageTitle":"Merge pull request #9 from yeoshuheng/master","messageBody":"v1.1: Add startup \u0026 Assign Funding Stage","fileTypesAndContributionMap":{}}]},{"date":"2024-03-07","commitResults":[{"hash":"3d2e99f939f367257f2c910af59461e14544db3b","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-08","commitResults":[{"hash":"6109993c1f7e29ed64a217e769a86d5cd1f9fecd","isMergeCommit":true,"messageTitle":"Merge pull request #18 from dwangwk/master","messageBody":"Docs: Updated Photo Name","fileTypesAndContributionMap":{}}]},{"date":"2024-03-10","commitResults":[{"hash":"8d568634d3b45cbfbacf3d19f762fcffee06538e","isMergeCommit":true,"messageTitle":"Merge pull request #22 from yespiggy/update-website-config","messageBody":"docs: update website config file","fileTypesAndContributionMap":{}}]},{"date":"2024-03-11","commitResults":[{"hash":"3e4bee115fd8f11ba18f3e894714e61445d99934","isMergeCommit":false,"messageTitle":"docs: Add i/ f/ info to UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":31,"deletions":26}}}]},{"date":"2024-03-12","commitResults":[{"hash":"1b929f3cf2b4c0eaffa353ab17459764ac1d6ecd","isMergeCommit":true,"messageTitle":"Merge pull request #24 from yeoshuheng/branch-update-ug","messageBody":"docs: Add i/ f/ info to UG","fileTypesAndContributionMap":{}},{"hash":"b012c4598e4409b206e27415a9307b70e19a248f","isMergeCommit":true,"messageTitle":"Merge pull request #25 from yespiggy/update-list-command","messageBody":"feat: update list command","fileTypesAndContributionMap":{}}]},{"date":"2024-03-14","commitResults":[{"hash":"ad18947deaa8cceade75d4bbcb149f2816f5a2fc","isMergeCommit":false,"messageTitle":"docs: Update javadocs in NoteCommand.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-15","commitResults":[{"hash":"a8fd9013fc7d40df03c3e492cd2bb3570228c024","isMergeCommit":false,"messageTitle":"feat: Add more funding levels","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":3},"test-code":{"insertions":8,"deletions":0}}}]},{"date":"2024-03-20","commitResults":[{"hash":"b34dfa31609309d7413b828ac4f75c39a7d85605","isMergeCommit":true,"messageTitle":"Merge pull request #40 from dwangwk/master","messageBody":"test: Test coverage for Note Command","fileTypesAndContributionMap":{}},{"hash":"9e1afa93b1648a07d9e7d5e0f5ef6cc53589a6e2","isMergeCommit":true,"messageTitle":"Merge pull request #41 from yespiggy/update-ug","messageBody":"docs: update UG intro \u0026 find command","fileTypesAndContributionMap":{}},{"hash":"afc7e314bfdfb379a9a76eb8ce415925f4ec16d4","isMergeCommit":false,"messageTitle":"docs: Update UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":14,"deletions":8}}},{"hash":"9c9ceee0c17963f97610c4cbf29ca8dbc862038f","isMergeCommit":false,"messageTitle":"docs: Add target aud, table \u0026 warning tips","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":34,"deletions":13}}},{"hash":"ac7a1fd2849c4566fa8e5c741ed9f3460422db3b","isMergeCommit":false,"messageTitle":"docs: Reformat images and tip box","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":24,"deletions":6}}},{"hash":"cd0bbdd1edd0b13a164e54e394077e408a791e26","isMergeCommit":false,"messageTitle":"docs: Update UG TOC","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":1}}},{"hash":"761f1de768ce71e625f83755f29db5aa09a85f04","isMergeCommit":false,"messageTitle":"docs: Fix person to startup","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":9,"deletions":9}}},{"hash":"8a3546d4400406fce944ed740a9f26b14198fa1a","isMergeCommit":false,"messageTitle":"docs: Fix consistency in naming","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"425616d5c3e963f9fb6ac36879b30a748ed635a9","isMergeCommit":false,"messageTitle":"Update UserGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"90995849a98bb1f44254e327b03550ffb7a8f8e5","isMergeCommit":true,"messageTitle":"Merge pull request #46 from yeoshuheng/branch-seeed","messageBody":"docs: Fix consistency in naming","fileTypesAndContributionMap":{}},{"hash":"546dc9f0155eefde4ac5a007b90bf0273d9141fd","isMergeCommit":false,"messageTitle":"docs: Fix tip box","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":0}}},{"hash":"9a68242dc110eea79553ca5602c3ea961d0bd916","isMergeCommit":true,"messageTitle":"Merge pull request #47 from yeoshuheng/branch-seeed","messageBody":"docs: Fix tip box","tags":["v1.2"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"dwangwk":{"docs":278,"functional-code":318,"test-code":223},"menatahari":{"docs":19,"functional-code":582,"test-code":968},"yespiggy":{"docs":87,"functional-code":152,"test-code":79},"yeoshuheng":{"docs":99,"functional-code":270,"test-code":408}},"authorContributionVariance":{"dwangwk":17302.273,"menatahari":377871.03,"yespiggy":3762.5952,"yeoshuheng":34636.49},"authorDisplayNameMap":{"dwangwk":"CS2103T-W09-2 WANG..NIEL","menatahari":"CS2103T-W09-2 NATA..HARI","yespiggy":"CS2103T-W09-2 YE S..IFAN","yeoshuheng":"CS2103T-W09-2 YEO ..HENG"}} +{"authorDailyContributionsMap":{"dwangwk":[{"date":"2024-03-07","commitResults":[{"hash":"1499dc1041a33dd81b79a49768feaa09e6621c28","isMergeCommit":false,"messageTitle":"Docs: Update Profile","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":48,"deletions":6}}},{"hash":"6f6620f8977c5667616382a2af02c2584d143ef0","isMergeCommit":false,"messageTitle":"Docs: Updated Readme, DeveloperGuide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":230,"deletions":39}}},{"hash":"56d9b344a27da1a1ec908a06899ced743f39dea4","isMergeCommit":false,"messageTitle":"Docs: About Us Sifan Image","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"b76da9e9d536129352e67dec71a3206d94080289","isMergeCommit":true,"messageTitle":"Merge pull request #17 from dwangwk/master","messageBody":"Update AboutUs, Readme, DeveloperGuide","fileTypesAndContributionMap":{}},{"hash":"0844d885ce4b55a007c5404578cab6ca1434f513","isMergeCommit":false,"messageTitle":"Docs: Updated Photo Name","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}}]},{"date":"2024-03-13","commitResults":[{"hash":"a39ddb915ce0508996ab1b38cc6af67422988457","isMergeCommit":false,"messageTitle":"feat: Add single note to Startup","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":470,"deletions":7},"test-code":{"insertions":19,"deletions":2}}},{"hash":"6c3ab6826d342e4e94b9f2e5842ac079d40187e7","isMergeCommit":false,"messageTitle":"Docs: Update JavaDoc","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-14","commitResults":[{"hash":"4708ab522ee5c672c376adec781e2f86c5bc5665","isMergeCommit":false,"messageTitle":"Fix: Gradle Build Errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":18,"deletions":14}}},{"hash":"ec83b426492bbe526c558802e4ae36f31465b3c3","isMergeCommit":true,"messageTitle":"Merge pull request #26 from dwangwk/tutorial-adding-command","messageBody":"feat: Add single note to Startup","fileTypesAndContributionMap":{}}]},{"date":"2024-03-17","commitResults":[{"hash":"35b3b258a59546e91e738c4e64c074b4cd097273","isMergeCommit":true,"messageTitle":"Merge pull request #29 from yeoshuheng/branch-seeed","messageBody":"feat: Add more funding levels","fileTypesAndContributionMap":{}},{"hash":"cb2f451f81873bcde9f4ed060214d8aba8ad48f1","isMergeCommit":true,"messageTitle":"Merge pull request #31 from yespiggy/update-find-command","messageBody":"feat: update find command","fileTypesAndContributionMap":{}}]},{"date":"2024-03-20","commitResults":[{"hash":"40532de75997fd0719da189f03a7e36eb0b1ba53","isMergeCommit":false,"messageTitle":"test: Test coverage for Note Command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":33,"deletions":155},"test-code":{"insertions":204,"deletions":1}}},{"hash":"18fce6f4368cc4b560aba933b5a1627f2f63d5e1","isMergeCommit":false,"messageTitle":"docs: User Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":15,"deletions":0}}},{"hash":"344fd13aea207b367d5f3c0640b2edefd9774ecb","isMergeCommit":true,"messageTitle":"Merge pull request #1 from dwangwk/branch-user-guide","messageBody":"docs: User Guide","fileTypesAndContributionMap":{}},{"hash":"8ed7d868d088fb1c56ae8e9749c2cd752cfde4f9","isMergeCommit":true,"messageTitle":"Merge pull request #44 from yeoshuheng/branch-seeed","messageBody":"docs: Update UG TOC","fileTypesAndContributionMap":{}}]}],"menatahari":[{"date":"2024-03-07","commitResults":[{"hash":"a8eb93c0cd4a775db4eede5a6f03de2aed2148ad","isMergeCommit":false,"messageTitle":"Update readme and uploaded photo","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":19,"deletions":11}}},{"hash":"2ab29ded407cf63b39c4cfea3ca859652647986d","isMergeCommit":true,"messageTitle":"Merge pull request #15 from menatahari/master","messageBody":"Update README.md","fileTypesAndContributionMap":{}}]},{"date":"2024-03-19","commitResults":[{"hash":"4cc46045680b642b39b9ff07863cec191f9eb037","isMergeCommit":false,"messageTitle":"refactor: Rename getFilteredPersonList method to getFilteredStartupList","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}},{"hash":"e6827495a62f7acb89dd8e4ee581aca2d4ed436e","isMergeCommit":false,"messageTitle":"refactor: Rename getFilteredPersonList method to getFilteredStartupList and update all references","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}},{"hash":"4db661de02441743f72b955d62def52df3a39ab0","isMergeCommit":false,"messageTitle":"refactor: Rename Person to Startup and update all reference and instances","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":520,"deletions":526},"other":{"insertions":209,"deletions":215},"test-code":{"insertions":812,"deletions":823}}},{"hash":"db6b9b2af1a848b8fffaa7d1293c0118c3662fe6","isMergeCommit":false,"messageTitle":"refactor: Update app title","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"ec97f63e2025b655481915c03d242c4956dab3c8","isMergeCommit":false,"messageTitle":"refactor: Update app icon","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"test-code":{"insertions":1,"deletions":1}}},{"hash":"39a83279478340a19ba192e2f2fe5b1201720b37","isMergeCommit":false,"messageTitle":"refactor: Rename person instances to startup","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":31,"deletions":31}}},{"hash":"923cda6f91618625e9c563cc859d020f1cff46dd","isMergeCommit":false,"messageTitle":"Fix import statements to comply with checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":17,"deletions":5}}},{"hash":"7b4cebcd6c92218f8f9ec926a8d778ed24d04253","isMergeCommit":false,"messageTitle":"Fix header comment causing checkstyle violations","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":8}}},{"hash":"6c5aa19a3ec6cec0342509a5e05216d2c67c05c1","isMergeCommit":false,"messageTitle":"Fix lines causing checkstyle violation","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":8,"deletions":4}}},{"hash":"8398f4fbcd0c303949898941fad09024bfac5a38","isMergeCommit":false,"messageTitle":"Fix import statements to comply with checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":14,"deletions":3}}},{"hash":"25743fc16054de9f901a3994ad4c9d2e2497959d","isMergeCommit":true,"messageTitle":"Merge pull request #39 from menatahari/branch-refactor-codebase","messageBody":"refactor: Rename Person to Startup and update app title and icon","fileTypesAndContributionMap":{}}]},{"date":"2024-03-20","commitResults":[{"hash":"1de464990b125671dedef8f19a7b8b9ca81abdad","isMergeCommit":true,"messageTitle":"Merge pull request #43 from yeoshuheng/branch-seeed","messageBody":"Updated UG","fileTypesAndContributionMap":{}},{"hash":"28013c88985901236994cfd5c64c49d49b7e1a2f","isMergeCommit":true,"messageTitle":"Merge pull request #45 from yeoshuheng/branch-seeed","messageBody":"docs: Fix person to startup","fileTypesAndContributionMap":{}}]}],"yespiggy":[{"date":"2024-03-07","commitResults":[{"hash":"84063188a916022bf2f1b80803f0b8d8b3b2dafc","isMergeCommit":false,"messageTitle":"docs: Update DG User stories","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":20,"deletions":13}}},{"hash":"fa249d62a450e496f8bf4fa2a07b6ef4cd6ffadd","isMergeCommit":true,"messageTitle":"Merge branch update DG user stories","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"676d51e0b69796e8a04234d2c15b914329cd0c96","isMergeCommit":true,"messageTitle":"Merge pull request #14 from yespiggy/master","messageBody":"Update user stories in DG","fileTypesAndContributionMap":{}}]},{"date":"2024-03-10","commitResults":[{"hash":"c1be4f4bc81ea765a06e1efdd5a84627334a8475","isMergeCommit":false,"messageTitle":"docs: update website config file","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}}]},{"date":"2024-03-11","commitResults":[{"hash":"67d98ff1733455b0b5159186ad5dd4a51b8cb4ce","isMergeCommit":false,"messageTitle":"feat: update list command to show industry, funding stage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":25,"deletions":2}}},{"hash":"92a22862f6a0acb03899f3be16bf00954a52e128","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-list-command Merge the upstream branch.","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-12","commitResults":[{"hash":"b52ddd157cd2a8e0ba0476be0f85576e0006f4cc","isMergeCommit":false,"messageTitle":"feat: update the display of funding stages","messageBody":"Co-authored-by: yeoshuheng \u003c100367948+yeoshuheng@users.noreply.github.com\u003e","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-14","commitResults":[{"hash":"07495769c659088c47f605a204aec3b980f588db","isMergeCommit":false,"messageTitle":"feat: enable find by industry / funding stage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":126,"deletions":3}}}]},{"date":"2024-03-15","commitResults":[{"hash":"4726a8a9d71241fc7434259c333e44cd1b9f396a","isMergeCommit":false,"messageTitle":"fix: fix checkstyle and exception handling","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":29,"deletions":17}}},{"hash":"435043aa72b5ab0d23d379b06eaba570527ae2be","isMergeCommit":false,"messageTitle":"test: add tests for find commands","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":13,"deletions":12},"test-code":{"insertions":188,"deletions":3}}},{"hash":"957d9120ad7c09e7e57db6f7e0e51d6972c10a21","isMergeCommit":false,"messageTitle":"fix: fix some tests for find command","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":22,"deletions":4}}}]},{"date":"2024-03-20","commitResults":[{"hash":"53915b48331a0dce6f4f23c5e40c12aa190aa7af","isMergeCommit":false,"messageTitle":"docs: update UG intro \u0026 find command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"docs":{"insertions":80,"deletions":32}}}]}],"yeoshuheng":[{"date":"2024-02-25","commitResults":[{"hash":"842594880efd9ef12b06dd5f5716ce9d1c46de79","isMergeCommit":false,"messageTitle":"docs: Update profile","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":13,"deletions":15}}},{"hash":"c0b6212b3fdc7805ddddcc7a791160c2730d1219","isMergeCommit":false,"messageTitle":"feat: Add Industry and FundingStage options","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":108,"deletions":5}}},{"hash":"9d4aa185e921f647f7079e1ec5eca32e36a298fa","isMergeCommit":false,"messageTitle":"feat: Add logic for industry, funding","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":43,"deletions":17}}},{"hash":"ccc8a41ac1e34edbcc7189e0198a3ba61210178e","isMergeCommit":false,"messageTitle":"feat: Add sample for person with industry, funding","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":35,"deletions":13}}},{"hash":"078b9e51de07a37bc01af8b33991d63b78c98578","isMergeCommit":false,"messageTitle":"feat: Update storage for industry, funding","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":29,"deletions":7}}},{"hash":"9ded1fc99b36c25649aa251c7c64d68005bc3d5a","isMergeCommit":false,"messageTitle":"test: Fix test for industry, funding","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":81,"deletions":26}}},{"hash":"38212e7a41db0be57ac52c5dc78795a5ffb6a434","isMergeCommit":false,"messageTitle":"feat: Add funding, industry for edit command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":36,"deletions":12}}},{"hash":"eb7c924496e743e877b752b944d33651d1978638","isMergeCommit":false,"messageTitle":"style: Fix checkstyle for test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":23,"deletions":5}}},{"hash":"1ede8657f049bee88e8b82f71417b1a8c8c2b6e4","isMergeCommit":false,"messageTitle":"style: Fix checkstyle for main","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":73,"deletions":15}}},{"hash":"d178843dbf22a382046ba7a4beb1cb3437ae9814","isMergeCommit":false,"messageTitle":"test: Update test for funding, industry","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":176,"deletions":113}}},{"hash":"b2b9eb02bac1c24cc39fb2b8efc575a549532253","isMergeCommit":false,"messageTitle":"style: Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":29,"deletions":17}}}]},{"date":"2024-03-05","commitResults":[{"hash":"fb1bdef18772248a883d4eb0421a4c45a370c70a","isMergeCommit":false,"messageTitle":"fix: Add duplicate prefix checks","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1},"test-code":{"insertions":120,"deletions":0}}},{"hash":"aec40a6d3b801a6ddd30ac670bf513461480bd2e","isMergeCommit":false,"messageTitle":"test: Add test for funding stage \u0026 industry","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":205,"deletions":131}}},{"hash":"b773e6b431bdc5d09ffce4a4356131af78ddb243","isMergeCommit":true,"messageTitle":"Merge pull request #1 from yeoshuheng/branch-AddStartup","messageBody":"Branch add startup","fileTypesAndContributionMap":{}}]},{"date":"2024-03-06","commitResults":[{"hash":"728b2c0b2837cc516dc425fbc49fee8fd092bcc8","isMergeCommit":true,"messageTitle":"Merge pull request #9 from yeoshuheng/master","messageBody":"v1.1: Add startup \u0026 Assign Funding Stage","fileTypesAndContributionMap":{}}]},{"date":"2024-03-07","commitResults":[{"hash":"3d2e99f939f367257f2c910af59461e14544db3b","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-08","commitResults":[{"hash":"6109993c1f7e29ed64a217e769a86d5cd1f9fecd","isMergeCommit":true,"messageTitle":"Merge pull request #18 from dwangwk/master","messageBody":"Docs: Updated Photo Name","fileTypesAndContributionMap":{}}]},{"date":"2024-03-10","commitResults":[{"hash":"8d568634d3b45cbfbacf3d19f762fcffee06538e","isMergeCommit":true,"messageTitle":"Merge pull request #22 from yespiggy/update-website-config","messageBody":"docs: update website config file","fileTypesAndContributionMap":{}}]},{"date":"2024-03-11","commitResults":[{"hash":"3e4bee115fd8f11ba18f3e894714e61445d99934","isMergeCommit":false,"messageTitle":"docs: Add i/ f/ info to UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":31,"deletions":26}}}]},{"date":"2024-03-12","commitResults":[{"hash":"1b929f3cf2b4c0eaffa353ab17459764ac1d6ecd","isMergeCommit":true,"messageTitle":"Merge pull request #24 from yeoshuheng/branch-update-ug","messageBody":"docs: Add i/ f/ info to UG","fileTypesAndContributionMap":{}},{"hash":"b012c4598e4409b206e27415a9307b70e19a248f","isMergeCommit":true,"messageTitle":"Merge pull request #25 from yespiggy/update-list-command","messageBody":"feat: update list command","fileTypesAndContributionMap":{}}]},{"date":"2024-03-14","commitResults":[{"hash":"ad18947deaa8cceade75d4bbcb149f2816f5a2fc","isMergeCommit":false,"messageTitle":"docs: Update javadocs in NoteCommand.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-15","commitResults":[{"hash":"a8fd9013fc7d40df03c3e492cd2bb3570228c024","isMergeCommit":false,"messageTitle":"feat: Add more funding levels","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":3},"test-code":{"insertions":8,"deletions":0}}}]},{"date":"2024-03-20","commitResults":[{"hash":"b34dfa31609309d7413b828ac4f75c39a7d85605","isMergeCommit":true,"messageTitle":"Merge pull request #40 from dwangwk/master","messageBody":"test: Test coverage for Note Command","fileTypesAndContributionMap":{}},{"hash":"9e1afa93b1648a07d9e7d5e0f5ef6cc53589a6e2","isMergeCommit":true,"messageTitle":"Merge pull request #41 from yespiggy/update-ug","messageBody":"docs: update UG intro \u0026 find command","fileTypesAndContributionMap":{}},{"hash":"afc7e314bfdfb379a9a76eb8ce415925f4ec16d4","isMergeCommit":false,"messageTitle":"docs: Update UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":14,"deletions":8}}},{"hash":"9c9ceee0c17963f97610c4cbf29ca8dbc862038f","isMergeCommit":false,"messageTitle":"docs: Add target aud, table \u0026 warning tips","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":34,"deletions":13}}},{"hash":"ac7a1fd2849c4566fa8e5c741ed9f3460422db3b","isMergeCommit":false,"messageTitle":"docs: Reformat images and tip box","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":24,"deletions":6}}},{"hash":"cd0bbdd1edd0b13a164e54e394077e408a791e26","isMergeCommit":false,"messageTitle":"docs: Update UG TOC","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":1}}},{"hash":"761f1de768ce71e625f83755f29db5aa09a85f04","isMergeCommit":false,"messageTitle":"docs: Fix person to startup","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":9,"deletions":9}}},{"hash":"8a3546d4400406fce944ed740a9f26b14198fa1a","isMergeCommit":false,"messageTitle":"docs: Fix consistency in naming","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"425616d5c3e963f9fb6ac36879b30a748ed635a9","isMergeCommit":false,"messageTitle":"Update UserGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"90995849a98bb1f44254e327b03550ffb7a8f8e5","isMergeCommit":true,"messageTitle":"Merge pull request #46 from yeoshuheng/branch-seeed","messageBody":"docs: Fix consistency in naming","fileTypesAndContributionMap":{}},{"hash":"546dc9f0155eefde4ac5a007b90bf0273d9141fd","isMergeCommit":false,"messageTitle":"docs: Fix tip box","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":0}}},{"hash":"9a68242dc110eea79553ca5602c3ea961d0bd916","isMergeCommit":true,"messageTitle":"Merge pull request #47 from yeoshuheng/branch-seeed","messageBody":"docs: Fix tip box","tags":["v1.2"],"fileTypesAndContributionMap":{}}]},{"date":"2024-03-22","commitResults":[{"hash":"e0ca01cf3e1964a6a7fa9a52548bdae00b04c455","isMergeCommit":false,"messageTitle":"docs: Update PUML for updated add","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":25,"deletions":19}}},{"hash":"fe6c39a4e3320d567f2f92a0f4a7321b1e76bae3","isMergeCommit":false,"messageTitle":"Update docs/diagrams/ModelClassDiagram.puml","messageBody":"Co-authored-by: Sifan \u003c108997339+yespiggy@users.noreply.github.com\u003e","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"85a94690943fbc8f58a39d32996ea275a88e93be","isMergeCommit":true,"messageTitle":"Merge pull request #49 from yeoshuheng/update-puml","messageBody":"docs: Update PUML for updated add","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"dwangwk":{"docs":278,"functional-code":318,"test-code":223},"menatahari":{"docs":19,"functional-code":582,"test-code":968},"yespiggy":{"docs":87,"functional-code":152,"test-code":79},"yeoshuheng":{"docs":124,"functional-code":270,"test-code":408}},"authorContributionVariance":{"dwangwk":16251.748,"menatahari":352762.0,"yespiggy":3534.7078,"yeoshuheng":32363.082},"authorDisplayNameMap":{"dwangwk":"CS2103T-W09-2 WANG..NIEL","menatahari":"CS2103T-W09-2 NATA..HARI","yespiggy":"CS2103T-W09-2 YE S..IFAN","yeoshuheng":"CS2103T-W09-2 YEO ..HENG"}} diff --git a/AY2324S2-CS2103T-W12-2_tp_master/commits.json b/AY2324S2-CS2103T-W12-2_tp_master/commits.json index 29340a62..38e0d6c1 100644 --- a/AY2324S2-CS2103T-W12-2_tp_master/commits.json +++ b/AY2324S2-CS2103T-W12-2_tp_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"AdityaB4":[{"date":"2024-03-09","commitResults":[{"hash":"d081925d1a0a906fc336e32a91a6b28abd43eef9","isMergeCommit":false,"messageTitle":"Add Portfolio page for Aditya","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":35,"deletions":0}}},{"hash":"1df54e5744cf95069395138857aa5f075ed1646d","isMergeCommit":false,"messageTitle":"Update Aditya\u0027s AboutUs information","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":6}}}]},{"date":"2024-03-14","commitResults":[{"hash":"838ddb10aff4be8c913602494ca9a36fdae6c501","isMergeCommit":false,"messageTitle":"Refactor \u0027Person\u0027 -\u003e \u0027Student\u0027 in application code","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":456,"deletions":456},"other":{"insertions":46,"deletions":46}}},{"hash":"e955d135548efc5e8288a5bd13962278fe3070f4","isMergeCommit":false,"messageTitle":"Refactor \u0027Person\u0027 -\u003e \u0027Student\u0027 in test code","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":103,"deletions":93},"test-code":{"insertions":699,"deletions":697}}},{"hash":"d785804f081dfe3902e399884b69d75c738c98a4","isMergeCommit":false,"messageTitle":"Refactor \u0027Person\u0027 -\u003e \u0027Student\u0027 in docs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":139,"deletions":139}}},{"hash":"deb0688036f644cd6d9c6a49d558e82dbef83f6a","isMergeCommit":false,"messageTitle":"Refactor \u0027JsonAdaptedPerson\u0027 -\u003e \u0027JsonAdaptedStudent\u0027","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":0,"deletions":0}}},{"hash":"978b6e9a26faadba9877c500ea23bd1afba6f66c","isMergeCommit":false,"messageTitle":"Fix lexicographical import order","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4}}},{"hash":"8d4bafc3b9a6f3ab0cf5d1f047702b648ea360da","isMergeCommit":false,"messageTitle":"Break lines longer than 120 chars","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":7}}},{"hash":"e58b4cb302a2ab4d608c2a4bf45b062d1e25e818","isMergeCommit":false,"messageTitle":"Fix JavaDoc whitespace typo","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"6eeaff3ad7af9ff641a9309f5f2d951582311598","isMergeCommit":false,"messageTitle":"Fix import ordering in src/test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":15}}},{"hash":"98fc6e64f6db165dd109d50e75faafd6c4ea321f","isMergeCommit":false,"messageTitle":"Refactor \u0027PERSON\u0027 -\u003e \u0027STUDENT\u0027","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":21,"deletions":21},"docs":{"insertions":5,"deletions":5},"test-code":{"insertions":82,"deletions":82}}},{"hash":"d9d4b9ba4571e8b4a43b2b1e148ddb1911b61b50","isMergeCommit":false,"messageTitle":"Break lines with long parameter names","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":10,"deletions":5}}},{"hash":"7c9081641bb11cfe0c0111d7a8ac991befcda803","isMergeCommit":true,"messageTitle":"Merge pull request #29 from AdityaB4/refactor-student","messageBody":"Refactor Person to Student","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"784d820c98902d34ae9ddffbfe988562a31c9da2","isMergeCommit":false,"messageTitle":"Fix import checkstyle violations","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":36,"deletions":11}}},{"hash":"0a1d8af4308d786b504ce41ca918f94f44f84772","isMergeCommit":false,"messageTitle":"Break lines longer than 120 chars","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":2}}},{"hash":"66413b793113834adabcba7b9de361466884e329","isMergeCommit":false,"messageTitle":"Add missing JavaDoc comment","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":0}}},{"hash":"974f57fa03330bfeff676c3b831642715ec16755","isMergeCommit":false,"messageTitle":"Fix indentation errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}},{"hash":"e2c70ef91351266f58e5a404e2d51b899e923cd0","isMergeCommit":false,"messageTitle":"Add missing method stubs","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":13,"deletions":0}}},{"hash":"9a7299e77f417cea6b563faa2a4e2b10c41f1b1a","isMergeCommit":false,"messageTitle":"Update tests with modules","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":15,"deletions":1}}},{"hash":"eb465d69a0b7d99bd794518a6078e2163a72b15a","isMergeCommit":false,"messageTitle":"Break lines longer than 120 chars in /test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":66,"deletions":9}}},{"hash":"9a22769d26b7c9a70f4f04d7e0c927b1d56816d8","isMergeCommit":true,"messageTitle":"Merge pull request #38 from taufiq/taufiq/add-stu-module-cmd","messageBody":"Introduce `add_module` command","fileTypesAndContributionMap":{}}]}],"yadunut":[{"date":"2024-03-05","commitResults":[{"hash":"adbba1f1a775b89577c96fac3ce8e25e4daa3be4","isMergeCommit":false,"messageTitle":"Update the about me page with yadunut\u0027s details","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":33,"deletions":4}}}]},{"date":"2024-03-06","commitResults":[{"hash":"f31cd2e3ef14e6a71bc00b9748a1352f7a7f2141","isMergeCommit":false,"messageTitle":"Fix wrong url","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"7f41e09df90fef17a2e3e72e3def7bd3150f08b1","isMergeCommit":true,"messageTitle":"Merge pull request #15 from yadunut/update-about","messageBody":"Update the about me page with yadunut\u0027s details","fileTypesAndContributionMap":{}}]},{"date":"2024-03-11","commitResults":[{"hash":"359ff44a0104ae43f28d349efd69dfa6738cc077","isMergeCommit":true,"messageTitle":"Merge pull request #14 from blaukc/update-DG","messageBody":"Update DG","fileTypesAndContributionMap":{}},{"hash":"31e95d02b6f046b4bd95f463769496035afe29cc","isMergeCommit":false,"messageTitle":"Add the glossary page and fix some spelling mistakes","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":19,"deletions":17}}}]},{"date":"2024-03-13","commitResults":[{"hash":"c34a4406a89d0d1c6efb2cc61bc66e7585cd7014","isMergeCommit":true,"messageTitle":"Merge pull request #28 from yadunut/website-adaptations","messageBody":"Update website to remove references to AB3","fileTypesAndContributionMap":{}}]},{"date":"2024-03-14","commitResults":[{"hash":"b26b3fc5918f533b1007eba68cd61b514636bd81","isMergeCommit":false,"messageTitle":"Add base module classes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":99,"deletions":0},"docs":{"insertions":2,"deletions":2}}},{"hash":"6a0a887517280a278e3ae21329537a080b2d8636","isMergeCommit":false,"messageTitle":"Fix Module constructor to ensure fields all non null","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":0}}},{"hash":"ce0e8b4e1a898788f79fa98b15e9830f49dcfcbf","isMergeCommit":true,"messageTitle":"Merge pull request #30 from yadunut/base-module","messageBody":"Add base module classes","fileTypesAndContributionMap":{}}]},{"date":"2024-03-18","commitResults":[{"hash":"017e77225497b6f99fb8deb71476724c406aad5f","isMergeCommit":false,"messageTitle":"Remove references to JSON in module","messageBody":"The JSON related files should be in storage/JsonAdapted*, to ensure seperation of\nconcerns between the storage layer and the model layer\n","fileTypesAndContributionMap":{"functional-code":{"insertions":83,"deletions":56}}},{"hash":"30123d7a56a98298b3d0b0e4754f9a7f16764877","isMergeCommit":false,"messageTitle":"Add base Module Map Storage interface and adapters","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":68,"deletions":6}}},{"hash":"e4fc1bf12a30cdb26a05e3be924d9e4300e3ee60","isMergeCommit":false,"messageTitle":"Update regex for Module Code","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":3}}},{"hash":"9dda757ccf37fb63a40a5288b4113a51bfb9a52a","isMergeCommit":false,"messageTitle":"Add validation for Description and Title","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":2}}},{"hash":"98c29e2135b380ed7dfd9794d2d3ee984d284c40","isMergeCommit":false,"messageTitle":"Remove storage deps from ModuleMap","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":21}}},{"hash":"f7a7713700af79d82abec9edccab13bb1688ed0e","isMergeCommit":false,"messageTitle":"Add moduleMap to addressbook","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":18}}},{"hash":"4bbe9a06e5220bfbfa17860b63dbc2356d85c9d4","isMergeCommit":false,"messageTitle":"Change modulemap from optional to required","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":87,"deletions":26}}},{"hash":"2bfd3ea976863b28f8c8177114e30b87c55b8961","isMergeCommit":false,"messageTitle":"Add ModuleMap to model","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":3},"test-code":{"insertions":7,"deletions":3}}},{"hash":"d7a98384a5408dfea2a393e50e865623a024fb9d","isMergeCommit":false,"messageTitle":"Add ModelManager updates to tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":63,"deletions":22}}},{"hash":"8f89cdde41f0a0a02c5f91184eef186dfc15ec83","isMergeCommit":false,"messageTitle":"Add docs and clean code","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":51,"deletions":18},"test-code":{"insertions":22,"deletions":7}}}]}],"taufiq":[{"date":"2024-02-27","commitResults":[{"hash":"3c0d2cd6b7cac2ea7ea5e92a34f3e1d1fefc7d58","isMergeCommit":false,"messageTitle":"docs: Update README.md","messageBody":"Updated the CI badge to reflect the build status of the tp project.\nUpdated the content to inform people what the app is about.\n","fileTypesAndContributionMap":{"docs":{"insertions":16,"deletions":11}}}]},{"date":"2024-03-11","commitResults":[{"hash":"442af50f272a1dcba0ac08ad833900dc782a0b69","isMergeCommit":false,"messageTitle":"docs: Add taufiq information","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":43,"deletions":5}}},{"hash":"2f2a163d5be501a2563883fcd1615bfda40ede36","isMergeCommit":true,"messageTitle":"Merge pull request #18 from taufiq/docs/add-taufiq","messageBody":"docs: Add taufiq information","fileTypesAndContributionMap":{}},{"hash":"9907c519d51c7cf19c501fa1bc89c2fa4275189d","isMergeCommit":true,"messageTitle":"Merge pull request #12 from taufiq/update-readme","messageBody":"docs: Update README \u0026 Add UI Mockup","fileTypesAndContributionMap":{}}]},{"date":"2024-03-16","commitResults":[{"hash":"6eda9adf45a42e2d4a6016478c79b47f495b24ab","isMergeCommit":false,"messageTitle":"docs: Remove traces of AB3 from README","messageBody":"This commit removes the traces of AB3 in README that was pointed out\nin the cs2103 tracker.\n","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":12}}},{"hash":"7a061e3b4b4ad99fa7492313df8e9bfefdc34d36","isMergeCommit":true,"messageTitle":"Merge pull request #33 from taufiq/taufiq/address-issue","messageBody":"docs: Remove traces of AB3 from README","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"fb6e29b37aadc36d0e556e861730c1c23efd5096","isMergeCommit":true,"messageTitle":"Merge pull request #35 from yadunut/add-module-storage","messageBody":"Add module storage","fileTypesAndContributionMap":{}},{"hash":"29bab74bbab105e9b8bce664d9891af3ec6cbaa7","isMergeCommit":false,"messageTitle":"feat: Introduce add_module command","messageBody":"This `add_module` command introduces new prefixes, new classes (i.e `AddStudentModuleCommand/Parser`, etc.).\n\nIn the parser layer, I\u0027ve added a `AddStudentModuleCommandParser` that craps out a `AddStudentModuleCommand`. It then executes and deals with the `Student` model.\n\nmodel: `Student` now supports a list of `modules` which are `ModuleCode`.\n\nFor now, we are storing a list of `ModuleCode` instead of `Module` in each Student model. This is because the ability to synchronize the state of Modules in `ModuleMap` and `Student` will be tough to keep track off, thus I\u0027ve resorted to using `ModuleCode` instead.\n\nFor the storage layer, I\u0027ve also added a `JsonAdaptedModuleCode`. I had to add this because there was some finicky issue with saving a List\u003cString\u003e within a `.json` file so I created the adapter and it fixed the issue. If anyone knows how to do it without creating that adapter feel free to correct this!\n","fileTypesAndContributionMap":{"functional-code":{"insertions":343,"deletions":38},"test-code":{"insertions":11,"deletions":9}}},{"hash":"5a419c24313d8cefccc25855159f5fdc1850d58d","isMergeCommit":false,"messageTitle":"fix: Change type of List\u003cE\u003e for VALID_MODULES","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"70f6a78e39b3da4b11586628c054457142601bc9","isMergeCommit":false,"messageTitle":"chore: Remove unused imports and sanitization things","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":19}}},{"hash":"1a8d1167fe1de6341b0a4821e3a3f5c3bcfd8928","isMergeCommit":false,"messageTitle":"test: Fix NullPtr Exceptions","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":3},"test-code":{"insertions":3,"deletions":1}}}]},{"date":"2024-03-22","commitResults":[{"hash":"a861eef0b5f83ac3093d54eeaade78bd0076e923","isMergeCommit":true,"messageTitle":"Merge pull request #43 from blaukc/update-model-class-diagram","messageBody":"Update model class diagram","fileTypesAndContributionMap":{}},{"hash":"9dd5351be5f04a1f14d0f932c53eae0b00c7476a","isMergeCommit":true,"messageTitle":"Merge pull request #40 from blaukc/delete-student-module-command","messageBody":"Delete student module command","fileTypesAndContributionMap":{}},{"hash":"88856d797b46da9278a4cd5e78d78c098548e739","isMergeCommit":true,"messageTitle":"Merge pull request #42 from blaukc/add-modules-gui","messageBody":"Change tags to modules in GUI","fileTypesAndContributionMap":{}}]}],"blaukc":[{"date":"2024-02-28","commitResults":[{"hash":"5b3d763bb59a9d4be3f3ff95b4aaf73acd425239","isMergeCommit":false,"messageTitle":"Update AboutUs page, and add individual page and photo","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":44,"deletions":16}}},{"hash":"71d6d95c18ee7071b3c55d17d59174286b711df9","isMergeCommit":false,"messageTitle":"Add newline to end of blaukc.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"ba433d397d2388f0feb387ad4c64b0f55ee87fbb","isMergeCommit":true,"messageTitle":"Merge pull request #13 from blaukc/update-about-us","messageBody":"Update AboutUs (Brandon)","fileTypesAndContributionMap":{}},{"hash":"4fc0422cd7ce7398299ff25f79ed5ae78d10b9b4","isMergeCommit":false,"messageTitle":"Update DG user stories and use cases","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":117,"deletions":19}}}]},{"date":"2024-03-09","commitResults":[{"hash":"6a2c87c212c26a75379afeec35345b1691369c80","isMergeCommit":true,"messageTitle":"Merge pull request #17 from AdityaB4/update-aditya-details","messageBody":"Update Aditya\u0027s Details","fileTypesAndContributionMap":{}}]},{"date":"2024-03-13","commitResults":[{"hash":"3660e8c6ec81da106df8da4f9842bdde2b62a0cd","isMergeCommit":true,"messageTitle":"Merge pull request #27 from yadunut/add-glossary","messageBody":"Add the glossary page and fix some spelling mistakes","fileTypesAndContributionMap":{}}]},{"date":"2024-03-15","commitResults":[{"hash":"d1e8d048f6ebaa42c76f52d60646bc1eadc08981","isMergeCommit":false,"messageTitle":"Add read from json data into Module objects","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":74,"deletions":1}}},{"hash":"67bcb87cfc56829114b799c0d8baaea12044bc96","isMergeCommit":false,"messageTitle":"Initialise ModuleMap inside AddressBook","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":22,"deletions":7}}},{"hash":"ebf19c20fd0d2fecd283ace2c16934665341bcce","isMergeCommit":false,"messageTitle":"Fix checkstyle mistakes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":17,"deletions":10}}}]},{"date":"2024-03-16","commitResults":[{"hash":"31eee468c59fde20033f234582b5202074c9acc9","isMergeCommit":true,"messageTitle":"Merge pull request #32 from blaukc/add-module-data","messageBody":"Add module data","fileTypesAndContributionMap":{}}]},{"date":"2024-03-22","commitResults":[{"hash":"509308abacb7555a5acf6da6a60966fdf6a7a865","isMergeCommit":false,"messageTitle":"Add DeleteStudentModuleCommand and its parser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":149,"deletions":10}}},{"hash":"71325411d87a4a283dbe5177e577ae96e9cc7d08","isMergeCommit":false,"messageTitle":"Add delete module functionality","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":53,"deletions":2}}},{"hash":"5848fdf27394714c9ce96056ca5dac32b15d52c3","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":23,"deletions":13}}},{"hash":"c5b1194d5bb59e51a3f6eac854b788c6abb5d9a5","isMergeCommit":false,"messageTitle":"Add deleteModuleFromStudent method stub in AddCommandTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":6,"deletions":0}}},{"hash":"edaf00f8f6bec7b44391b71702c6f61e89acaefd","isMergeCommit":false,"messageTitle":"Change tags to modules in GUI","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":7}}},{"hash":"d9f05eac91bdfc96ef10d52afda9f7e5b8a85774","isMergeCommit":false,"messageTitle":"Add ModuleMap and Module to the model diagram","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":18,"deletions":1}}}]}]},"authorFileTypeContributionMap":{"AdityaB4":{"docs":182,"functional-code":534,"test-code":939},"yadunut":{"docs":37,"functional-code":347,"test-code":81,"other":1},"taufiq":{"docs":50,"functional-code":317,"test-code":6},"blaukc":{"docs":174,"functional-code":254,"test-code":6}},"authorContributionVariance":{"AdityaB4":330379.62,"yadunut":12808.871,"taufiq":6396.418,"blaukc":4388.019},"authorDisplayNameMap":{"AdityaB4":"CS2103T-W12-2 BAJA..ITYA","yadunut":"CS2103T-W12-2 YADU..PREM","taufiq":"CS2103T-W12-2 TAUF..MMED","blaukc":"CS2103T-W12-2 BRAN..CHUN"}} +{"authorDailyContributionsMap":{"AdityaB4":[{"date":"2024-03-09","commitResults":[{"hash":"d081925d1a0a906fc336e32a91a6b28abd43eef9","isMergeCommit":false,"messageTitle":"Add Portfolio page for Aditya","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":35,"deletions":0}}},{"hash":"1df54e5744cf95069395138857aa5f075ed1646d","isMergeCommit":false,"messageTitle":"Update Aditya\u0027s AboutUs information","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":6}}}]},{"date":"2024-03-14","commitResults":[{"hash":"838ddb10aff4be8c913602494ca9a36fdae6c501","isMergeCommit":false,"messageTitle":"Refactor \u0027Person\u0027 -\u003e \u0027Student\u0027 in application code","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":456,"deletions":456},"other":{"insertions":46,"deletions":46}}},{"hash":"e955d135548efc5e8288a5bd13962278fe3070f4","isMergeCommit":false,"messageTitle":"Refactor \u0027Person\u0027 -\u003e \u0027Student\u0027 in test code","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":103,"deletions":93},"test-code":{"insertions":699,"deletions":697}}},{"hash":"d785804f081dfe3902e399884b69d75c738c98a4","isMergeCommit":false,"messageTitle":"Refactor \u0027Person\u0027 -\u003e \u0027Student\u0027 in docs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":139,"deletions":139}}},{"hash":"deb0688036f644cd6d9c6a49d558e82dbef83f6a","isMergeCommit":false,"messageTitle":"Refactor \u0027JsonAdaptedPerson\u0027 -\u003e \u0027JsonAdaptedStudent\u0027","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":0,"deletions":0}}},{"hash":"978b6e9a26faadba9877c500ea23bd1afba6f66c","isMergeCommit":false,"messageTitle":"Fix lexicographical import order","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4}}},{"hash":"8d4bafc3b9a6f3ab0cf5d1f047702b648ea360da","isMergeCommit":false,"messageTitle":"Break lines longer than 120 chars","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":7}}},{"hash":"e58b4cb302a2ab4d608c2a4bf45b062d1e25e818","isMergeCommit":false,"messageTitle":"Fix JavaDoc whitespace typo","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"6eeaff3ad7af9ff641a9309f5f2d951582311598","isMergeCommit":false,"messageTitle":"Fix import ordering in src/test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":15}}},{"hash":"98fc6e64f6db165dd109d50e75faafd6c4ea321f","isMergeCommit":false,"messageTitle":"Refactor \u0027PERSON\u0027 -\u003e \u0027STUDENT\u0027","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":21,"deletions":21},"docs":{"insertions":5,"deletions":5},"test-code":{"insertions":82,"deletions":82}}},{"hash":"d9d4b9ba4571e8b4a43b2b1e148ddb1911b61b50","isMergeCommit":false,"messageTitle":"Break lines with long parameter names","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":10,"deletions":5}}},{"hash":"7c9081641bb11cfe0c0111d7a8ac991befcda803","isMergeCommit":true,"messageTitle":"Merge pull request #29 from AdityaB4/refactor-student","messageBody":"Refactor Person to Student","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"784d820c98902d34ae9ddffbfe988562a31c9da2","isMergeCommit":false,"messageTitle":"Fix import checkstyle violations","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":36,"deletions":11}}},{"hash":"0a1d8af4308d786b504ce41ca918f94f44f84772","isMergeCommit":false,"messageTitle":"Break lines longer than 120 chars","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":2}}},{"hash":"66413b793113834adabcba7b9de361466884e329","isMergeCommit":false,"messageTitle":"Add missing JavaDoc comment","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":0}}},{"hash":"974f57fa03330bfeff676c3b831642715ec16755","isMergeCommit":false,"messageTitle":"Fix indentation errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}},{"hash":"e2c70ef91351266f58e5a404e2d51b899e923cd0","isMergeCommit":false,"messageTitle":"Add missing method stubs","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":13,"deletions":0}}},{"hash":"9a7299e77f417cea6b563faa2a4e2b10c41f1b1a","isMergeCommit":false,"messageTitle":"Update tests with modules","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":15,"deletions":1}}},{"hash":"eb465d69a0b7d99bd794518a6078e2163a72b15a","isMergeCommit":false,"messageTitle":"Break lines longer than 120 chars in /test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":66,"deletions":9}}},{"hash":"9a22769d26b7c9a70f4f04d7e0c927b1d56816d8","isMergeCommit":true,"messageTitle":"Merge pull request #38 from taufiq/taufiq/add-stu-module-cmd","messageBody":"Introduce `add_module` command","fileTypesAndContributionMap":{}}]}],"yadunut":[{"date":"2024-03-05","commitResults":[{"hash":"adbba1f1a775b89577c96fac3ce8e25e4daa3be4","isMergeCommit":false,"messageTitle":"Update the about me page with yadunut\u0027s details","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":33,"deletions":4}}}]},{"date":"2024-03-06","commitResults":[{"hash":"f31cd2e3ef14e6a71bc00b9748a1352f7a7f2141","isMergeCommit":false,"messageTitle":"Fix wrong url","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"7f41e09df90fef17a2e3e72e3def7bd3150f08b1","isMergeCommit":true,"messageTitle":"Merge pull request #15 from yadunut/update-about","messageBody":"Update the about me page with yadunut\u0027s details","fileTypesAndContributionMap":{}}]},{"date":"2024-03-11","commitResults":[{"hash":"359ff44a0104ae43f28d349efd69dfa6738cc077","isMergeCommit":true,"messageTitle":"Merge pull request #14 from blaukc/update-DG","messageBody":"Update DG","fileTypesAndContributionMap":{}},{"hash":"31e95d02b6f046b4bd95f463769496035afe29cc","isMergeCommit":false,"messageTitle":"Add the glossary page and fix some spelling mistakes","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":19,"deletions":17}}}]},{"date":"2024-03-13","commitResults":[{"hash":"c34a4406a89d0d1c6efb2cc61bc66e7585cd7014","isMergeCommit":true,"messageTitle":"Merge pull request #28 from yadunut/website-adaptations","messageBody":"Update website to remove references to AB3","fileTypesAndContributionMap":{}}]},{"date":"2024-03-14","commitResults":[{"hash":"b26b3fc5918f533b1007eba68cd61b514636bd81","isMergeCommit":false,"messageTitle":"Add base module classes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":99,"deletions":0},"docs":{"insertions":2,"deletions":2}}},{"hash":"6a0a887517280a278e3ae21329537a080b2d8636","isMergeCommit":false,"messageTitle":"Fix Module constructor to ensure fields all non null","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":0}}},{"hash":"ce0e8b4e1a898788f79fa98b15e9830f49dcfcbf","isMergeCommit":true,"messageTitle":"Merge pull request #30 from yadunut/base-module","messageBody":"Add base module classes","fileTypesAndContributionMap":{}}]},{"date":"2024-03-18","commitResults":[{"hash":"017e77225497b6f99fb8deb71476724c406aad5f","isMergeCommit":false,"messageTitle":"Remove references to JSON in module","messageBody":"The JSON related files should be in storage/JsonAdapted*, to ensure seperation of\nconcerns between the storage layer and the model layer\n","fileTypesAndContributionMap":{"functional-code":{"insertions":83,"deletions":56}}},{"hash":"30123d7a56a98298b3d0b0e4754f9a7f16764877","isMergeCommit":false,"messageTitle":"Add base Module Map Storage interface and adapters","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":68,"deletions":6}}},{"hash":"e4fc1bf12a30cdb26a05e3be924d9e4300e3ee60","isMergeCommit":false,"messageTitle":"Update regex for Module Code","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":3}}},{"hash":"9dda757ccf37fb63a40a5288b4113a51bfb9a52a","isMergeCommit":false,"messageTitle":"Add validation for Description and Title","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":2}}},{"hash":"98c29e2135b380ed7dfd9794d2d3ee984d284c40","isMergeCommit":false,"messageTitle":"Remove storage deps from ModuleMap","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":21}}},{"hash":"f7a7713700af79d82abec9edccab13bb1688ed0e","isMergeCommit":false,"messageTitle":"Add moduleMap to addressbook","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":18}}},{"hash":"4bbe9a06e5220bfbfa17860b63dbc2356d85c9d4","isMergeCommit":false,"messageTitle":"Change modulemap from optional to required","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":87,"deletions":26}}},{"hash":"2bfd3ea976863b28f8c8177114e30b87c55b8961","isMergeCommit":false,"messageTitle":"Add ModuleMap to model","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":3},"test-code":{"insertions":7,"deletions":3}}},{"hash":"d7a98384a5408dfea2a393e50e865623a024fb9d","isMergeCommit":false,"messageTitle":"Add ModelManager updates to tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":63,"deletions":22}}},{"hash":"8f89cdde41f0a0a02c5f91184eef186dfc15ec83","isMergeCommit":false,"messageTitle":"Add docs and clean code","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":51,"deletions":18},"test-code":{"insertions":22,"deletions":7}}}]}],"taufiq":[{"date":"2024-02-27","commitResults":[{"hash":"3c0d2cd6b7cac2ea7ea5e92a34f3e1d1fefc7d58","isMergeCommit":false,"messageTitle":"docs: Update README.md","messageBody":"Updated the CI badge to reflect the build status of the tp project.\nUpdated the content to inform people what the app is about.\n","fileTypesAndContributionMap":{"docs":{"insertions":16,"deletions":11}}}]},{"date":"2024-03-11","commitResults":[{"hash":"442af50f272a1dcba0ac08ad833900dc782a0b69","isMergeCommit":false,"messageTitle":"docs: Add taufiq information","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":43,"deletions":5}}},{"hash":"2f2a163d5be501a2563883fcd1615bfda40ede36","isMergeCommit":true,"messageTitle":"Merge pull request #18 from taufiq/docs/add-taufiq","messageBody":"docs: Add taufiq information","fileTypesAndContributionMap":{}},{"hash":"9907c519d51c7cf19c501fa1bc89c2fa4275189d","isMergeCommit":true,"messageTitle":"Merge pull request #12 from taufiq/update-readme","messageBody":"docs: Update README \u0026 Add UI Mockup","fileTypesAndContributionMap":{}}]},{"date":"2024-03-16","commitResults":[{"hash":"6eda9adf45a42e2d4a6016478c79b47f495b24ab","isMergeCommit":false,"messageTitle":"docs: Remove traces of AB3 from README","messageBody":"This commit removes the traces of AB3 in README that was pointed out\nin the cs2103 tracker.\n","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":12}}},{"hash":"7a061e3b4b4ad99fa7492313df8e9bfefdc34d36","isMergeCommit":true,"messageTitle":"Merge pull request #33 from taufiq/taufiq/address-issue","messageBody":"docs: Remove traces of AB3 from README","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"fb6e29b37aadc36d0e556e861730c1c23efd5096","isMergeCommit":true,"messageTitle":"Merge pull request #35 from yadunut/add-module-storage","messageBody":"Add module storage","fileTypesAndContributionMap":{}},{"hash":"29bab74bbab105e9b8bce664d9891af3ec6cbaa7","isMergeCommit":false,"messageTitle":"feat: Introduce add_module command","messageBody":"This `add_module` command introduces new prefixes, new classes (i.e `AddStudentModuleCommand/Parser`, etc.).\n\nIn the parser layer, I\u0027ve added a `AddStudentModuleCommandParser` that craps out a `AddStudentModuleCommand`. It then executes and deals with the `Student` model.\n\nmodel: `Student` now supports a list of `modules` which are `ModuleCode`.\n\nFor now, we are storing a list of `ModuleCode` instead of `Module` in each Student model. This is because the ability to synchronize the state of Modules in `ModuleMap` and `Student` will be tough to keep track off, thus I\u0027ve resorted to using `ModuleCode` instead.\n\nFor the storage layer, I\u0027ve also added a `JsonAdaptedModuleCode`. I had to add this because there was some finicky issue with saving a List\u003cString\u003e within a `.json` file so I created the adapter and it fixed the issue. If anyone knows how to do it without creating that adapter feel free to correct this!\n","fileTypesAndContributionMap":{"functional-code":{"insertions":343,"deletions":38},"test-code":{"insertions":11,"deletions":9}}},{"hash":"5a419c24313d8cefccc25855159f5fdc1850d58d","isMergeCommit":false,"messageTitle":"fix: Change type of List\u003cE\u003e for VALID_MODULES","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"70f6a78e39b3da4b11586628c054457142601bc9","isMergeCommit":false,"messageTitle":"chore: Remove unused imports and sanitization things","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":19}}},{"hash":"1a8d1167fe1de6341b0a4821e3a3f5c3bcfd8928","isMergeCommit":false,"messageTitle":"test: Fix NullPtr Exceptions","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":3},"test-code":{"insertions":3,"deletions":1}}}]},{"date":"2024-03-22","commitResults":[{"hash":"a861eef0b5f83ac3093d54eeaade78bd0076e923","isMergeCommit":true,"messageTitle":"Merge pull request #43 from blaukc/update-model-class-diagram","messageBody":"Update model class diagram","fileTypesAndContributionMap":{}},{"hash":"9dd5351be5f04a1f14d0f932c53eae0b00c7476a","isMergeCommit":true,"messageTitle":"Merge pull request #40 from blaukc/delete-student-module-command","messageBody":"Delete student module command","fileTypesAndContributionMap":{}},{"hash":"88856d797b46da9278a4cd5e78d78c098548e739","isMergeCommit":true,"messageTitle":"Merge pull request #42 from blaukc/add-modules-gui","messageBody":"Change tags to modules in GUI","tags":["v1.2.0","v1.2","v1.0.0"],"fileTypesAndContributionMap":{}}]}],"blaukc":[{"date":"2024-02-28","commitResults":[{"hash":"5b3d763bb59a9d4be3f3ff95b4aaf73acd425239","isMergeCommit":false,"messageTitle":"Update AboutUs page, and add individual page and photo","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":44,"deletions":16}}},{"hash":"71d6d95c18ee7071b3c55d17d59174286b711df9","isMergeCommit":false,"messageTitle":"Add newline to end of blaukc.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"ba433d397d2388f0feb387ad4c64b0f55ee87fbb","isMergeCommit":true,"messageTitle":"Merge pull request #13 from blaukc/update-about-us","messageBody":"Update AboutUs (Brandon)","fileTypesAndContributionMap":{}},{"hash":"4fc0422cd7ce7398299ff25f79ed5ae78d10b9b4","isMergeCommit":false,"messageTitle":"Update DG user stories and use cases","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":117,"deletions":19}}}]},{"date":"2024-03-09","commitResults":[{"hash":"6a2c87c212c26a75379afeec35345b1691369c80","isMergeCommit":true,"messageTitle":"Merge pull request #17 from AdityaB4/update-aditya-details","messageBody":"Update Aditya\u0027s Details","fileTypesAndContributionMap":{}}]},{"date":"2024-03-13","commitResults":[{"hash":"3660e8c6ec81da106df8da4f9842bdde2b62a0cd","isMergeCommit":true,"messageTitle":"Merge pull request #27 from yadunut/add-glossary","messageBody":"Add the glossary page and fix some spelling mistakes","fileTypesAndContributionMap":{}}]},{"date":"2024-03-15","commitResults":[{"hash":"d1e8d048f6ebaa42c76f52d60646bc1eadc08981","isMergeCommit":false,"messageTitle":"Add read from json data into Module objects","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":74,"deletions":1}}},{"hash":"67bcb87cfc56829114b799c0d8baaea12044bc96","isMergeCommit":false,"messageTitle":"Initialise ModuleMap inside AddressBook","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":22,"deletions":7}}},{"hash":"ebf19c20fd0d2fecd283ace2c16934665341bcce","isMergeCommit":false,"messageTitle":"Fix checkstyle mistakes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":17,"deletions":10}}}]},{"date":"2024-03-16","commitResults":[{"hash":"31eee468c59fde20033f234582b5202074c9acc9","isMergeCommit":true,"messageTitle":"Merge pull request #32 from blaukc/add-module-data","messageBody":"Add module data","fileTypesAndContributionMap":{}}]},{"date":"2024-03-22","commitResults":[{"hash":"509308abacb7555a5acf6da6a60966fdf6a7a865","isMergeCommit":false,"messageTitle":"Add DeleteStudentModuleCommand and its parser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":149,"deletions":10}}},{"hash":"71325411d87a4a283dbe5177e577ae96e9cc7d08","isMergeCommit":false,"messageTitle":"Add delete module functionality","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":53,"deletions":2}}},{"hash":"5848fdf27394714c9ce96056ca5dac32b15d52c3","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":23,"deletions":13}}},{"hash":"c5b1194d5bb59e51a3f6eac854b788c6abb5d9a5","isMergeCommit":false,"messageTitle":"Add deleteModuleFromStudent method stub in AddCommandTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":6,"deletions":0}}},{"hash":"edaf00f8f6bec7b44391b71702c6f61e89acaefd","isMergeCommit":false,"messageTitle":"Change tags to modules in GUI","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":7}}},{"hash":"d9f05eac91bdfc96ef10d52afda9f7e5b8a85774","isMergeCommit":false,"messageTitle":"Add ModuleMap and Module to the model diagram","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":18,"deletions":1}}}]}]},"authorFileTypeContributionMap":{"AdityaB4":{"docs":182,"functional-code":534,"test-code":939},"yadunut":{"docs":37,"functional-code":347,"test-code":81,"other":1},"taufiq":{"docs":50,"functional-code":317,"test-code":6},"blaukc":{"docs":174,"functional-code":254,"test-code":6}},"authorContributionVariance":{"AdityaB4":330379.62,"yadunut":12808.871,"taufiq":6396.418,"blaukc":4388.019},"authorDisplayNameMap":{"AdityaB4":"CS2103T-W12-2 BAJA..ITYA","yadunut":"CS2103T-W12-2 YADU..PREM","taufiq":"CS2103T-W12-2 TAUF..MMED","blaukc":"CS2103T-W12-2 BRAN..CHUN"}} diff --git a/AY2324S2-CS2103T-W13-2_tp_master/authorship.json b/AY2324S2-CS2103T-W13-2_tp_master/authorship.json index 75c3c411..db768a04 100644 --- a/AY2324S2-CS2103T-W13-2_tp_master/authorship.json +++ b/AY2324S2-CS2103T-W13-2_tp_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"The-Dudeski"},"content":"[![CI Status](https://github.com/AY2324S2-CS2103T-W13-2/tp/actions/workflows/gradle.yml/badge.svg)](https://github.com/AY2324S2-CS2103T-W13-2/tp/actions/workflows/gradle.yml)","lastModifiedDate":"2024-03-09"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"The-Dudeski"},"content":"* This is **a project created by CS2103T students. It is a contact book **.\u003cbr\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":6,"author":{"gitId":"-"},"content":" Example usages:","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"The-Dudeski"},"content":" * It is meant to be used by secretaries in companies with different departments to be managed","lastModifiedDate":"2024-03-06"},{"lineNumber":8,"author":{"gitId":"The-Dudeski"},"content":" * The project will be developed over the course of AY23/24 Semester 2","lastModifiedDate":"2024-03-06"},{"lineNumber":9,"author":{"gitId":"The-Dudeski"},"content":"* The project is written Java","lastModifiedDate":"2024-03-06"},{"lineNumber":10,"author":{"gitId":"The-Dudeski"},"content":" * It is **written in OOP fashion**. ","lastModifiedDate":"2024-03-06"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * It comes with a **reasonable level of user and developer documentation**.","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"The-Dudeski"},"content":"* The application will contain contacts for the secretary to manage","lastModifiedDate":"2024-03-06"},{"lineNumber":13,"author":{"gitId":"The-Dudeski"},"content":" * This will include the option to view, add, delete and filter contacts","lastModifiedDate":"2024-03-06"},{"lineNumber":14,"author":{"gitId":"The-Dudeski"},"content":"* For the detailed documentation of this project, see the **[Contact Book Product Website]()**.","lastModifiedDate":"2024-03-06"},{"lineNumber":15,"author":{"gitId":"The-Dudeski"},"content":"* This project is derived from AddressBook-Level3 created by [SE-EDU initiative](https://se-education.org)","lastModifiedDate":"2024-03-06"}],"authorContributionMap":{"The-Dudeski":10,"-":5}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: About Us","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"We are a team based in the [School of Computing, National University of Singapore](http://www.comp.nus.edu.sg).","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"The-Dudeski"},"content":"You can reach us at the email `mashfi.i@u.nus.edu`","lastModifiedDate":"2024-03-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"The-Dudeski"},"content":"### Mashfi Ishtiaque","lastModifiedDate":"2024-03-04"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"The-Dudeski"},"content":"\u003cimg src\u003d\"/images/miffi.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"The-Dudeski"},"content":"[[homepage](https://decadent.rest)]","lastModifiedDate":"2024-03-09"},{"lineNumber":17,"author":{"gitId":"The-Dudeski"},"content":"[[github](https://github.com/miffi)]","lastModifiedDate":"2024-03-04"},{"lineNumber":18,"author":{"gitId":"The-Dudeski"},"content":"[[portfolio](team/miffi.md)]","lastModifiedDate":"2024-03-04"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"miffi"},"content":"* Role: Team Lead","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"miffi"},"content":"* Responsibilities:","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"miffi"},"content":" - UI","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"miffi"},"content":" - Tools","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"The-Dudeski"},"content":"### Leong Jia Hao, Derek","lastModifiedDate":"2024-03-04"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"The-Dudeski"},"content":"\u003cimg src\u003d\"/images/derekljh.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-09"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"The-Dudeski"},"content":"[[github](http://github.com/derekljh)]","lastModifiedDate":"2024-03-04"},{"lineNumber":30,"author":{"gitId":"The-Dudeski"},"content":"[[portfolio](team/derekljh.md)]","lastModifiedDate":"2024-03-04"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"miffi"},"content":"- Role: Developer","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"miffi"},"content":"* Responsibilities:","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"miffi"},"content":" * Tasks and Deadlines","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"miffi"},"content":" - Scheduling and tracking","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"miffi"},"content":" - Logic","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"The-Dudeski"},"content":"### Mahindroo Aashim","lastModifiedDate":"2024-03-04"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"The-Dudeski"},"content":"\u003cimg src\u003d\"/images/radeon2525.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"The-Dudeski"},"content":"[[github](http://github.com/radeon2525)] ","lastModifiedDate":"2024-03-09"},{"lineNumber":43,"author":{"gitId":"The-Dudeski"},"content":"[[portfolio](team/radeon2525.md)]","lastModifiedDate":"2024-03-09"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"miffi"},"content":"* Responsibilities:","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"miffi"},"content":" - Testing","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"miffi"},"content":" - Model","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"The-Dudeski"},"content":"### Kyaw Swar Myint","lastModifiedDate":"2024-03-04"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"The-Dudeski"},"content":"\u003cimg src\u003d\"/images/jukeboxk.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"The-Dudeski"},"content":"[[github](http://github.com/jukeboxk)]","lastModifiedDate":"2024-03-04"},{"lineNumber":55,"author":{"gitId":"The-Dudeski"},"content":"[[portfolio](team/jukeboxk.md)]","lastModifiedDate":"2024-03-09"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"miffi"},"content":"* Responsibilities:","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"miffi"},"content":" - Documentation","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"miffi"},"content":" - Main","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"miffi"},"content":" - Commons","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"author":{"gitId":"The-Dudeski"},"content":"### Dude Lorenz Leonardo Crescenzio","lastModifiedDate":"2024-03-04"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"author":{"gitId":"The-Dudeski"},"content":"\u003cimg src\u003d\"/images/the-dudeski.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-09"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"The-Dudeski"},"content":"[[github](http://github.com/the-dudeski)]","lastModifiedDate":"2024-03-04"},{"lineNumber":68,"author":{"gitId":"The-Dudeski"},"content":"[[portfolio](team/the-dudeski.md)]","lastModifiedDate":"2024-03-04"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"miffi"},"content":"* Responsibilities:","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"miffi"},"content":" - Integration","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"miffi"},"content":" - Storage","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"The-Dudeski":22,"miffi":19,"-":32}},{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: Developer Guide","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":6,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":" {:toc}","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":11,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":13,"author":{"gitId":"radeon2525"},"content":"* {list here sources of all reused/adapted ideas, code, documentation, and third-party libraries -- include links to the","lastModifiedDate":"2024-03-07"},{"lineNumber":14,"author":{"gitId":"radeon2525"},"content":" original source as well}","lastModifiedDate":"2024-03-07"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":16,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"radeon2525"},"content":":bulb: **Tip:** The `.puml` files used to create diagrams in this document `docs/diagrams` folder. Refer to the [","lastModifiedDate":"2024-03-07"},{"lineNumber":29,"author":{"gitId":"radeon2525"},"content":"_PlantUML Tutorial_ at se-edu/guides](https://se-education.org/guides/tutorials/plantUml.html) to learn how to create","lastModifiedDate":"2024-03-07"},{"lineNumber":30,"author":{"gitId":"radeon2525"},"content":"and edit diagrams.","lastModifiedDate":"2024-03-07"},{"lineNumber":31,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureDiagram.png\" width\u003d\"280\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":"The ***Architecture Diagram*** given above explains the high-level design of the App.","lastModifiedDate":"2021-07-31"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"Given below is a quick overview of main components and how they interact with each other.","lastModifiedDate":"2021-07-31"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":41,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"radeon2525"},"content":"**`Main`** (consisting of","lastModifiedDate":"2024-03-07"},{"lineNumber":44,"author":{"gitId":"radeon2525"},"content":"classes [`Main`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/Main.java)","lastModifiedDate":"2024-03-07"},{"lineNumber":45,"author":{"gitId":"radeon2525"},"content":"and [`MainApp`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/MainApp.java)) is","lastModifiedDate":"2024-03-07"},{"lineNumber":46,"author":{"gitId":"radeon2525"},"content":"in charge of the app launch and shut down.","lastModifiedDate":"2024-03-07"},{"lineNumber":47,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":48,"author":{"gitId":"-"},"content":"* At app launch, it initializes the other components in the correct sequence, and connects them up with each other.","lastModifiedDate":"2023-09-03"},{"lineNumber":49,"author":{"gitId":"-"},"content":"* At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2023-09-03"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"* [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"* [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"* [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"author":{"gitId":"radeon2525"},"content":"The *Sequence Diagram* below shows how the components interact with each other for the scenario where the user issues","lastModifiedDate":"2024-03-07"},{"lineNumber":63,"author":{"gitId":"radeon2525"},"content":"the command `delete 1`.","lastModifiedDate":"2024-03-07"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureSequenceDiagram.png\" width\u003d\"574\" /\u003e","lastModifiedDate":"2020-06-07"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":69,"author":{"gitId":"-"},"content":"* defines its *API* in an `interface` with the same name as the Component.","lastModifiedDate":"2021-07-31"},{"lineNumber":70,"author":{"gitId":"radeon2525"},"content":"* implements its functionality using a concrete `{Component Name}Manager` class (which follows the corresponding","lastModifiedDate":"2024-03-07"},{"lineNumber":71,"author":{"gitId":"radeon2525"},"content":" API `interface` mentioned in the previous point.","lastModifiedDate":"2024-03-07"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":73,"author":{"gitId":"radeon2525"},"content":"For example, the `Logic` component defines its API in the `Logic.java` interface and implements its functionality using","lastModifiedDate":"2024-03-07"},{"lineNumber":74,"author":{"gitId":"radeon2525"},"content":"the `LogicManager.java` class which follows the `Logic` interface. Other components interact with a given component","lastModifiedDate":"2024-03-07"},{"lineNumber":75,"author":{"gitId":"radeon2525"},"content":"through its interface rather than the concrete class (reason: to prevent outside component\u0027s being coupled to the","lastModifiedDate":"2024-03-07"},{"lineNumber":76,"author":{"gitId":"radeon2525"},"content":"implementation of a component), as illustrated in the (partial) class diagram below.","lastModifiedDate":"2024-03-07"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":78,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ComponentManagers.png\" width\u003d\"300\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":80,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"radeon2525"},"content":"The **API** of this component is specified","lastModifiedDate":"2024-03-07"},{"lineNumber":85,"author":{"gitId":"radeon2525"},"content":"in [`Ui.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/Ui.java)","lastModifiedDate":"2024-03-07"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"![Structure of the UI Component](images/UiClassDiagram.png)","lastModifiedDate":"2021-07-31"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"radeon2525"},"content":"The UI consists of a `MainWindow` that is made up of parts","lastModifiedDate":"2024-03-07"},{"lineNumber":90,"author":{"gitId":"radeon2525"},"content":"e.g.`CommandBox`, `ResultDisplay`, `PersonListPanel`, `StatusBarFooter` etc. All these, including the `MainWindow`,","lastModifiedDate":"2024-03-07"},{"lineNumber":91,"author":{"gitId":"radeon2525"},"content":"inherit from the abstract `UiPart` class which captures the commonalities between classes that represent parts of the","lastModifiedDate":"2024-03-07"},{"lineNumber":92,"author":{"gitId":"radeon2525"},"content":"visible GUI.","lastModifiedDate":"2024-03-07"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"radeon2525"},"content":"The `UI` component uses the JavaFx UI framework. The layout of these UI parts are defined in matching `.fxml` files that","lastModifiedDate":"2024-03-07"},{"lineNumber":95,"author":{"gitId":"radeon2525"},"content":"are in the `src/main/resources/view` folder. For example, the layout of","lastModifiedDate":"2024-03-07"},{"lineNumber":96,"author":{"gitId":"radeon2525"},"content":"the [`MainWindow`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/MainWindow.java)","lastModifiedDate":"2024-03-07"},{"lineNumber":97,"author":{"gitId":"radeon2525"},"content":"is specified","lastModifiedDate":"2024-03-07"},{"lineNumber":98,"author":{"gitId":"radeon2525"},"content":"in [`MainWindow.fxml`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/resources/view/MainWindow.fxml)","lastModifiedDate":"2024-03-07"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"* executes user commands using the `Logic` component.","lastModifiedDate":"2021-07-31"},{"lineNumber":103,"author":{"gitId":"-"},"content":"* listens for changes to `Model` data so that the UI can be updated with the modified data.","lastModifiedDate":"2021-07-31"},{"lineNumber":104,"author":{"gitId":"-"},"content":"* keeps a reference to the `Logic` component, because the `UI` relies on the `Logic` to execute commands.","lastModifiedDate":"2021-07-31"},{"lineNumber":105,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component, as it displays `Person` object residing in the `Model`.","lastModifiedDate":"2021-07-31"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"author":{"gitId":"radeon2525"},"content":"**API","lastModifiedDate":"2024-03-07"},{"lineNumber":110,"author":{"gitId":"radeon2525"},"content":"** : [`Logic.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/logic/Logic.java)","lastModifiedDate":"2024-03-07"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/LogicClassDiagram.png\" width\u003d\"550\"/\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"radeon2525"},"content":"The sequence diagram below illustrates the interactions within the `Logic` component, taking `execute(\"delete 1\")` API","lastModifiedDate":"2024-03-07"},{"lineNumber":117,"author":{"gitId":"radeon2525"},"content":"call as an example.","lastModifiedDate":"2024-03-07"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":"![Interactions Inside the Logic Component for the `delete 1` Command](images/DeleteSequenceDiagram.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** The lifeline for `DeleteCommandParser` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline continues till the end of diagram.","lastModifiedDate":"2024-02-09"},{"lineNumber":122,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"Derekljh"},"content":"Another sequence diagram below illustrates the interactions within the `Logic` component, taking","lastModifiedDate":"2024-03-21"},{"lineNumber":125,"author":{"gitId":"Derekljh"},"content":"`execute(\"tag 1 tag: example\")` API call as an example.","lastModifiedDate":"2024-03-21"},{"lineNumber":126,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":127,"author":{"gitId":"Derekljh"},"content":"![](C:\\Repos\\TeamProject\\docs\\images\\TagCommand.png)","lastModifiedDate":"2024-03-21"},{"lineNumber":128,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":129,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":131,"author":{"gitId":"radeon2525"},"content":"1. When `Logic` is called upon to execute a command, it is passed to an `AddressBookParser` object which in turn creates","lastModifiedDate":"2024-03-07"},{"lineNumber":132,"author":{"gitId":"radeon2525"},"content":" a parser that matches the command (e.g., `DeleteCommandParser`) and uses it to parse the command.","lastModifiedDate":"2024-03-07"},{"lineNumber":133,"author":{"gitId":"radeon2525"},"content":"1. This results in a `Command` object (more precisely, an object of one of its subclasses e.g., `DeleteCommand`) which","lastModifiedDate":"2024-03-07"},{"lineNumber":134,"author":{"gitId":"radeon2525"},"content":" is executed by the `LogicManager`.","lastModifiedDate":"2024-03-07"},{"lineNumber":135,"author":{"gitId":"-"},"content":"1. The command can communicate with the `Model` when it is executed (e.g. to delete a person).\u003cbr\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":136,"author":{"gitId":"radeon2525"},"content":" Note that although this is shown as a single step in the diagram above (for simplicity), in the code it can take","lastModifiedDate":"2024-03-07"},{"lineNumber":137,"author":{"gitId":"radeon2525"},"content":" several interactions (between the command object and the `Model`) to achieve.","lastModifiedDate":"2024-03-07"},{"lineNumber":138,"author":{"gitId":"-"},"content":"1. The result of the command execution is encapsulated as a `CommandResult` object which is returned back from `Logic`.","lastModifiedDate":"2023-09-03"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":140,"author":{"gitId":"-"},"content":"Here are the other classes in `Logic` (omitted from the class diagram above) that are used for parsing a user command:","lastModifiedDate":"2021-07-31"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":142,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ParserClasses.png\" width\u003d\"600\"/\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31"},{"lineNumber":145,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":146,"author":{"gitId":"radeon2525"},"content":"* When called upon to parse a user command, the `AddressBookParser` class creates an `XYZCommandParser` (`XYZ` is a","lastModifiedDate":"2024-03-07"},{"lineNumber":147,"author":{"gitId":"radeon2525"},"content":" placeholder for the specific command name e.g., `AddCommandParser`) which uses the other classes shown above to parse","lastModifiedDate":"2024-03-07"},{"lineNumber":148,"author":{"gitId":"radeon2525"},"content":" the user command and create a `XYZCommand` object (e.g., `AddCommand`) which the `AddressBookParser` returns back as","lastModifiedDate":"2024-03-07"},{"lineNumber":149,"author":{"gitId":"radeon2525"},"content":" a `Command` object.","lastModifiedDate":"2024-03-07"},{"lineNumber":150,"author":{"gitId":"radeon2525"},"content":"* All `XYZCommandParser` classes (e.g., `AddCommandParser`, `DeleteCommandParser`, ...) inherit from the `Parser`","lastModifiedDate":"2024-03-07"},{"lineNumber":151,"author":{"gitId":"radeon2525"},"content":" interface so that they can be treated similarly where possible e.g, during testing.","lastModifiedDate":"2024-03-07"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31"},{"lineNumber":154,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":155,"author":{"gitId":"radeon2525"},"content":"**API","lastModifiedDate":"2024-03-07"},{"lineNumber":156,"author":{"gitId":"radeon2525"},"content":"** : [`Model.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/model/Model.java)","lastModifiedDate":"2024-03-07"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":"* stores the address book data i.e., all `Person` objects (which are contained in a `UniquePersonList` object).","lastModifiedDate":"2021-07-31"},{"lineNumber":164,"author":{"gitId":"radeon2525"},"content":"* stores the currently \u0027selected\u0027 `Person` objects (e.g., results of a search query) as a separate _filtered_ list which","lastModifiedDate":"2024-03-07"},{"lineNumber":165,"author":{"gitId":"radeon2525"},"content":" is exposed to outsiders as an unmodifiable `ObservableList\u003cPerson\u003e` that can be \u0027observed\u0027 e.g. the UI can be bound to","lastModifiedDate":"2024-03-07"},{"lineNumber":166,"author":{"gitId":"radeon2525"},"content":" this list so that the UI automatically updates when the data in the list change.","lastModifiedDate":"2024-03-07"},{"lineNumber":167,"author":{"gitId":"radeon2525"},"content":"* stores a `UserPref` object that represents the user’s preferences. This is exposed to the outside as","lastModifiedDate":"2024-03-07"},{"lineNumber":168,"author":{"gitId":"radeon2525"},"content":" a `ReadOnlyUserPref` objects.","lastModifiedDate":"2024-03-07"},{"lineNumber":169,"author":{"gitId":"radeon2525"},"content":"* does not depend on any of the other three components (as the `Model` represents data entities of the domain, they","lastModifiedDate":"2024-03-07"},{"lineNumber":170,"author":{"gitId":"radeon2525"},"content":" should make sense on their own without depending on other components)","lastModifiedDate":"2024-03-07"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":172,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** An alternative (arguably, a more OOP) model is given below. It has a `Tag` list in the `AddressBook`, which `Person` references. This allows `AddressBook` to only require one `Tag` object per unique tag, instead of each `Person` needing their own `Tag` objects.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":174,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/BetterModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":180,"author":{"gitId":"radeon2525"},"content":"**API","lastModifiedDate":"2024-03-07"},{"lineNumber":181,"author":{"gitId":"radeon2525"},"content":"** : [`Storage.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/storage/Storage.java)","lastModifiedDate":"2024-03-07"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/StorageClassDiagram.png\" width\u003d\"550\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":185,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":186,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":187,"author":{"gitId":"radeon2525"},"content":"* can save both address book data and user preference data in JSON format, and read them back into corresponding","lastModifiedDate":"2024-03-07"},{"lineNumber":188,"author":{"gitId":"radeon2525"},"content":" objects.","lastModifiedDate":"2024-03-07"},{"lineNumber":189,"author":{"gitId":"radeon2525"},"content":"* inherits from both `AddressBookStorage` and `UserPrefStorage`, which means it can be treated as either one (if only","lastModifiedDate":"2024-03-07"},{"lineNumber":190,"author":{"gitId":"radeon2525"},"content":" the functionality of only one is needed).","lastModifiedDate":"2024-03-07"},{"lineNumber":191,"author":{"gitId":"radeon2525"},"content":"* depends on some classes in the `Model` component (because the `Storage` component\u0027s job is to save/retrieve objects","lastModifiedDate":"2024-03-07"},{"lineNumber":192,"author":{"gitId":"radeon2525"},"content":" that belong to the `Model`)","lastModifiedDate":"2024-03-07"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.addressbook.commons` package.","lastModifiedDate":"2020-05-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":198,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23"},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":204,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":206,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":208,"author":{"gitId":"radeon2525"},"content":"The proposed undo/redo mechanism is facilitated by `VersionedAddressBook`. It extends `AddressBook` with an undo/redo","lastModifiedDate":"2024-03-07"},{"lineNumber":209,"author":{"gitId":"radeon2525"},"content":"history, stored internally as an `addressBookStateList` and `currentStatePointer`. Additionally, it implements the","lastModifiedDate":"2024-03-07"},{"lineNumber":210,"author":{"gitId":"radeon2525"},"content":"following operations:","lastModifiedDate":"2024-03-07"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":212,"author":{"gitId":"radeon2525"},"content":"* `VersionedAddressBook#commit()`— Saves the current address book state in its history.","lastModifiedDate":"2024-03-07"},{"lineNumber":213,"author":{"gitId":"radeon2525"},"content":"* `VersionedAddressBook#undo()`— Restores the previous address book state from its history.","lastModifiedDate":"2024-03-07"},{"lineNumber":214,"author":{"gitId":"radeon2525"},"content":"* `VersionedAddressBook#redo()`— Restores a previously undone address book state from its history.","lastModifiedDate":"2024-03-07"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":216,"author":{"gitId":"radeon2525"},"content":"These operations are exposed in the `Model` interface as `Model#commitAddressBook()`, `Model#undoAddressBook()`","lastModifiedDate":"2024-03-07"},{"lineNumber":217,"author":{"gitId":"radeon2525"},"content":"and `Model#redoAddressBook()` respectively.","lastModifiedDate":"2024-03-07"},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":219,"author":{"gitId":"-"},"content":"Given below is an example usage scenario and how the undo/redo mechanism behaves at each step.","lastModifiedDate":"2020-05-23"},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":221,"author":{"gitId":"radeon2525"},"content":"Step 1. The user launches the application for the first time. The `VersionedAddressBook` will be initialized with the","lastModifiedDate":"2024-03-07"},{"lineNumber":222,"author":{"gitId":"radeon2525"},"content":"initial address book state, and the `currentStatePointer` pointing to that single address book state.","lastModifiedDate":"2024-03-07"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":224,"author":{"gitId":"-"},"content":"![UndoRedoState0](images/UndoRedoState0.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":226,"author":{"gitId":"radeon2525"},"content":"Step 2. The user executes `delete 5` command to delete the 5th person in the address book. The `delete` command","lastModifiedDate":"2024-03-07"},{"lineNumber":227,"author":{"gitId":"radeon2525"},"content":"calls `Model#commitAddressBook()`, causing the modified state of the address book after the `delete 5` command executes","lastModifiedDate":"2024-03-07"},{"lineNumber":228,"author":{"gitId":"radeon2525"},"content":"to be saved in the `addressBookStateList`, and the `currentStatePointer` is shifted to the newly inserted address book","lastModifiedDate":"2024-03-07"},{"lineNumber":229,"author":{"gitId":"radeon2525"},"content":"state.","lastModifiedDate":"2024-03-07"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"author":{"gitId":"-"},"content":"![UndoRedoState1](images/UndoRedoState1.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"radeon2525"},"content":"Step 3. The user executes `add n/David …​` to add a new person. The `add` command also","lastModifiedDate":"2024-03-07"},{"lineNumber":234,"author":{"gitId":"radeon2525"},"content":"calls `Model#commitAddressBook()`, causing another modified address book state to be saved into","lastModifiedDate":"2024-03-07"},{"lineNumber":235,"author":{"gitId":"radeon2525"},"content":"the `addressBookStateList`.","lastModifiedDate":"2024-03-07"},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":"![UndoRedoState2](images/UndoRedoState2.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If a command fails its execution, it will not call `Model#commitAddressBook()`, so the address book state will not be saved into the `addressBookStateList`.","lastModifiedDate":"2020-05-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"radeon2525"},"content":"Step 4. The user now decides that adding the person was a mistake, and decides to undo that action by executing","lastModifiedDate":"2024-03-07"},{"lineNumber":244,"author":{"gitId":"radeon2525"},"content":"the `undo` command. The `undo` command will call `Model#undoAddressBook()`, which will shift the `currentStatePointer`","lastModifiedDate":"2024-03-07"},{"lineNumber":245,"author":{"gitId":"radeon2525"},"content":"once to the left, pointing it to the previous address book state, and restores the address book to that state.","lastModifiedDate":"2024-03-07"},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":247,"author":{"gitId":"-"},"content":"![UndoRedoState3](images/UndoRedoState3.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":248,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":249,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If the `currentStatePointer` is at index 0, pointing to the initial AddressBook state, then there are no previous AddressBook states to restore. The `undo` command uses `Model#canUndoAddressBook()` to check if this is the case. If so, it will return an error to the user rather","lastModifiedDate":"2020-05-23"},{"lineNumber":250,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":254,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09"},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-Logic.png)","lastModifiedDate":"2024-02-09"},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":258,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** The lifeline for `UndoCommand` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.","lastModifiedDate":"2020-05-23"},{"lineNumber":259,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":262,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09"},{"lineNumber":263,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":264,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-Model.png)","lastModifiedDate":"2024-02-09"},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":266,"author":{"gitId":"radeon2525"},"content":"The `redo` command does the opposite — it calls `Model#redoAddressBook()`, which shifts the `currentStatePointer` once","lastModifiedDate":"2024-03-07"},{"lineNumber":267,"author":{"gitId":"radeon2525"},"content":"to the right, pointing to the previously undone state, and restores the address book to that state.","lastModifiedDate":"2024-03-07"},{"lineNumber":268,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":269,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If the `currentStatePointer` is at index `addressBookStateList.size() - 1`, pointing to the latest address book state, then there are no undone AddressBook states to restore. The `redo` command uses `Model#canRedoAddressBook()` to check if this is the case. If so, it will return an error to the user rather than attempting to perform the redo.","lastModifiedDate":"2020-05-23"},{"lineNumber":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":271,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":273,"author":{"gitId":"radeon2525"},"content":"Step 5. The user then decides to execute the command `list`. Commands that do not modify the address book, such","lastModifiedDate":"2024-03-07"},{"lineNumber":274,"author":{"gitId":"radeon2525"},"content":"as `list`, will usually not call `Model#commitAddressBook()`, `Model#undoAddressBook()` or `Model#redoAddressBook()`.","lastModifiedDate":"2024-03-07"},{"lineNumber":275,"author":{"gitId":"radeon2525"},"content":"Thus, the `addressBookStateList` remains unchanged.","lastModifiedDate":"2024-03-07"},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":277,"author":{"gitId":"-"},"content":"![UndoRedoState4](images/UndoRedoState4.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":278,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":279,"author":{"gitId":"radeon2525"},"content":"Step 6. The user executes `clear`, which calls `Model#commitAddressBook()`. Since the `currentStatePointer` is not","lastModifiedDate":"2024-03-07"},{"lineNumber":280,"author":{"gitId":"radeon2525"},"content":"pointing at the end of the `addressBookStateList`, all address book states after the `currentStatePointer` will be","lastModifiedDate":"2024-03-07"},{"lineNumber":281,"author":{"gitId":"radeon2525"},"content":"purged. Reason: It no longer makes sense to redo the `add n/David …​` command. This is the behavior that most modern","lastModifiedDate":"2024-03-07"},{"lineNumber":282,"author":{"gitId":"radeon2525"},"content":"desktop applications follow.","lastModifiedDate":"2024-03-07"},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":284,"author":{"gitId":"-"},"content":"![UndoRedoState5](images/UndoRedoState5.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":286,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":288,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/CommitActivityDiagram.png\" width\u003d\"250\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":290,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31"},{"lineNumber":291,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":292,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31"},{"lineNumber":293,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":294,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":295,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23"},{"lineNumber":296,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":298,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23"},{"lineNumber":299,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23"},{"lineNumber":300,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23"},{"lineNumber":301,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23"},{"lineNumber":302,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":303,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23"},{"lineNumber":304,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":305,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23"},{"lineNumber":306,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":307,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23"},{"lineNumber":308,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":309,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":310,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":311,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":312,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07"},{"lineNumber":313,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":314,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":315,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":316,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":317,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":318,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":319,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":320,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":321,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":322,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23"},{"lineNumber":323,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":324,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23"},{"lineNumber":325,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":326,"author":{"gitId":"Derekljh"},"content":"**Target user profile**: Secretary of a tech company","lastModifiedDate":"2024-03-06"},{"lineNumber":327,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":328,"author":{"gitId":"-"},"content":"* has a need to manage a significant number of contacts","lastModifiedDate":"2020-05-23"},{"lineNumber":329,"author":{"gitId":"-"},"content":"* prefer desktop apps over other types","lastModifiedDate":"2020-05-23"},{"lineNumber":330,"author":{"gitId":"-"},"content":"* can type fast","lastModifiedDate":"2020-05-23"},{"lineNumber":331,"author":{"gitId":"-"},"content":"* prefers typing to mouse interactions","lastModifiedDate":"2020-05-26"},{"lineNumber":332,"author":{"gitId":"-"},"content":"* is reasonably comfortable using CLI apps","lastModifiedDate":"2020-05-23"},{"lineNumber":333,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":334,"author":{"gitId":"Derekljh"},"content":"**Value proposition**: Categorise people according to their department/origin, making it easier to assign tasks or get all the emails.","lastModifiedDate":"2024-03-06"},{"lineNumber":335,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":336,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07"},{"lineNumber":337,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":338,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23"},{"lineNumber":339,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":340,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23"},{"lineNumber":341,"author":{"gitId":"JukeBoxK"},"content":"|----------|-----------|---------------------------------------|--------------------------------------------------------|","lastModifiedDate":"2024-03-21"},{"lineNumber":342,"author":{"gitId":"JukeBoxK"},"content":"| `* * *` | secretary | view the added contact list | see the details of the added contact |","lastModifiedDate":"2024-03-21"},{"lineNumber":343,"author":{"gitId":"JukeBoxK"},"content":"| `* * *` | secretary | add contacts to a list | record contact details |","lastModifiedDate":"2024-03-21"},{"lineNumber":344,"author":{"gitId":"JukeBoxK"},"content":"| `* * *` | secretary | remove contacts from a list | clean up old/unused records |","lastModifiedDate":"2024-03-21"},{"lineNumber":345,"author":{"gitId":"JukeBoxK"},"content":"| `* *` | secretary | tag individual contacts | organize the contact based on tags |","lastModifiedDate":"2024-03-21"},{"lineNumber":346,"author":{"gitId":"JukeBoxK"},"content":"| `* *` | secretary | delete a tag of an individual contact | make sure that the tag only is for the necessary users |","lastModifiedDate":"2024-03-21"},{"lineNumber":347,"author":{"gitId":"JukeBoxK"},"content":"| `*` | user | undo my command | save time on undoing the effects of a wrong command |","lastModifiedDate":"2024-03-21"},{"lineNumber":348,"author":{"gitId":"JukeBoxK"},"content":"| `*` | user | redo my undo | save time on undoing the effects of a wrong undo |","lastModifiedDate":"2024-03-21"},{"lineNumber":349,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":350,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":351,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07"},{"lineNumber":352,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":353,"author":{"gitId":"miffi"},"content":"(For all use cases below, the **System** is `OfficeHarbor` (OH) and the **Actor** is the `user`, unless specified otherwise)","lastModifiedDate":"2024-03-08"},{"lineNumber":354,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":355,"author":{"gitId":"JukeBoxK"},"content":"**UC01: View contacts**","lastModifiedDate":"2024-03-20"},{"lineNumber":356,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":357,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23"},{"lineNumber":358,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":359,"author":{"gitId":"JukeBoxK"},"content":"1. User requests to list people.","lastModifiedDate":"2024-03-20"},{"lineNumber":360,"author":{"gitId":"JukeBoxK"},"content":"2. OH shows a list of people.","lastModifiedDate":"2024-03-20"},{"lineNumber":361,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":362,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":363,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":364,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23"},{"lineNumber":365,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":366,"author":{"gitId":"-"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-03-20"},{"lineNumber":367,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":368,"author":{"gitId":"JukeBoxK"},"content":" * 2a1. No list is shown.","lastModifiedDate":"2024-03-20"},{"lineNumber":369,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":370,"author":{"gitId":"JukeBoxK"},"content":" Use case ends.","lastModifiedDate":"2024-03-20"},{"lineNumber":371,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":372,"author":{"gitId":"JukeBoxK"},"content":"**UC02: Add a contact**","lastModifiedDate":"2024-03-20"},{"lineNumber":373,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":374,"author":{"gitId":"radeon2525"},"content":"**MSS**","lastModifiedDate":"2024-03-07"},{"lineNumber":375,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":376,"author":{"gitId":"JukeBoxK"},"content":"1. User requests to add a person along with details.","lastModifiedDate":"2024-03-20"},{"lineNumber":377,"author":{"gitId":"JukeBoxK"},"content":"2. OH adds the person.","lastModifiedDate":"2024-03-20"},{"lineNumber":378,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":379,"author":{"gitId":"radeon2525"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":380,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":381,"author":{"gitId":"radeon2525"},"content":"**Extensions**","lastModifiedDate":"2024-03-07"},{"lineNumber":382,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":383,"author":{"gitId":"radeon2525"},"content":"* 1a. The given format is invalid.","lastModifiedDate":"2024-03-07"},{"lineNumber":384,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":385,"author":{"gitId":"radeon2525"},"content":" * 1a1. AddressBook shows an error message.","lastModifiedDate":"2024-03-07"},{"lineNumber":386,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":387,"author":{"gitId":"radeon2525"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-07"},{"lineNumber":388,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":389,"author":{"gitId":"JukeBoxK"},"content":"**UC03: Remove a contact**","lastModifiedDate":"2024-03-20"},{"lineNumber":390,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":391,"author":{"gitId":"JukeBoxK"},"content":"**MSS**","lastModifiedDate":"2024-03-20"},{"lineNumber":392,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":393,"author":{"gitId":"JukeBoxK"},"content":"1. User requests to list contacts (UC01).","lastModifiedDate":"2024-03-20"},{"lineNumber":394,"author":{"gitId":"JukeBoxK"},"content":"2. User requests to remove a specific contact in the list.","lastModifiedDate":"2024-03-20"},{"lineNumber":395,"author":{"gitId":"JukeBoxK"},"content":"3. OH removes the contact.","lastModifiedDate":"2024-03-20"},{"lineNumber":396,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":397,"author":{"gitId":"JukeBoxK"},"content":" Use case ends.","lastModifiedDate":"2024-03-20"},{"lineNumber":398,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":399,"author":{"gitId":"JukeBoxK"},"content":"**Extensions**","lastModifiedDate":"2024-03-20"},{"lineNumber":400,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":401,"author":{"gitId":"-"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2024-03-20"},{"lineNumber":402,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":403,"author":{"gitId":"JukeBoxK"},"content":" * 3a1. OH shows an error message.","lastModifiedDate":"2024-03-20"},{"lineNumber":404,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":405,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-20"},{"lineNumber":406,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":407,"author":{"gitId":"JukeBoxK"},"content":"**UC04: Tagging contacts**","lastModifiedDate":"2024-03-20"},{"lineNumber":408,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":409,"author":{"gitId":"JukeBoxK"},"content":"**MSS**","lastModifiedDate":"2024-03-20"},{"lineNumber":410,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":411,"author":{"gitId":"JukeBoxK"},"content":"1. User requests to list contacts (UC01).","lastModifiedDate":"2024-03-20"},{"lineNumber":412,"author":{"gitId":"JukeBoxK"},"content":"2. User requests to add a tag to a specific contact in the list.","lastModifiedDate":"2024-03-20"},{"lineNumber":413,"author":{"gitId":"JukeBoxK"},"content":"3. OH adds the tag to the contact.","lastModifiedDate":"2024-03-20"},{"lineNumber":414,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":415,"author":{"gitId":"JukeBoxK"},"content":" Use case ends.","lastModifiedDate":"2024-03-20"},{"lineNumber":416,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":417,"author":{"gitId":"JukeBoxK"},"content":"**Extensions**","lastModifiedDate":"2024-03-20"},{"lineNumber":418,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":419,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":420,"author":{"gitId":"JukeBoxK"},"content":"* 2a. The given index is invalid.","lastModifiedDate":"2024-03-20"},{"lineNumber":421,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":422,"author":{"gitId":"JukeBoxK"},"content":" * 2a1. OH shows an error message.","lastModifiedDate":"2024-03-20"},{"lineNumber":423,"author":{"gitId":"miffi"},"content":" ","lastModifiedDate":"2024-03-08"},{"lineNumber":424,"author":{"gitId":"JukeBoxK"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-20"},{"lineNumber":425,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":426,"author":{"gitId":"JukeBoxK"},"content":"* 2b. The given tag is empty or invalid.","lastModifiedDate":"2024-03-20"},{"lineNumber":427,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":428,"author":{"gitId":"JukeBoxK"},"content":" * 2b. OH shows an error message.","lastModifiedDate":"2024-03-20"},{"lineNumber":429,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":430,"author":{"gitId":"JukeBoxK"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-20"},{"lineNumber":431,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":432,"author":{"gitId":"JukeBoxK"},"content":"**UC05: Deleting a tag**","lastModifiedDate":"2024-03-20"},{"lineNumber":433,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":434,"author":{"gitId":"JukeBoxK"},"content":"**MSS**","lastModifiedDate":"2024-03-09"},{"lineNumber":435,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":436,"author":{"gitId":"JukeBoxK"},"content":"1. User requests to list contacts (UC01).","lastModifiedDate":"2024-03-20"},{"lineNumber":437,"author":{"gitId":"JukeBoxK"},"content":"2. User requests to delete a specific tag of a person from the list.","lastModifiedDate":"2024-03-20"},{"lineNumber":438,"author":{"gitId":"JukeBoxK"},"content":"3. OH deletes the specified tag of that person.","lastModifiedDate":"2024-03-20"},{"lineNumber":439,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":440,"author":{"gitId":"JukeBoxK"},"content":" Use case ends.","lastModifiedDate":"2024-03-09"},{"lineNumber":441,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":442,"author":{"gitId":"JukeBoxK"},"content":"**Extensions**","lastModifiedDate":"2024-03-09"},{"lineNumber":443,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":444,"author":{"gitId":"JukeBoxK"},"content":"* 2a. The given index is invalid.","lastModifiedDate":"2024-03-20"},{"lineNumber":445,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":446,"author":{"gitId":"JukeBoxK"},"content":" * 2a1. OH shows an error message.","lastModifiedDate":"2024-03-20"},{"lineNumber":447,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":448,"author":{"gitId":"JukeBoxK"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-20"},{"lineNumber":449,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":450,"author":{"gitId":"JukeBoxK"},"content":"* 2b. The specified tag does not exist.","lastModifiedDate":"2024-03-20"},{"lineNumber":451,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":452,"author":{"gitId":"JukeBoxK"},"content":" * 2b1. OH shows an error message.","lastModifiedDate":"2024-03-20"},{"lineNumber":453,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":454,"author":{"gitId":"JukeBoxK"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-09"},{"lineNumber":455,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":456,"author":{"gitId":"JukeBoxK"},"content":"**UC06: Undoing a Command**","lastModifiedDate":"2024-03-20"},{"lineNumber":457,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":458,"author":{"gitId":"JukeBoxK"},"content":"**MSS**","lastModifiedDate":"2024-03-20"},{"lineNumber":459,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":460,"author":{"gitId":"JukeBoxK"},"content":"1. User requests to undo a command.","lastModifiedDate":"2024-03-20"},{"lineNumber":461,"author":{"gitId":"JukeBoxK"},"content":"2. OH resets to the state before the latest command.","lastModifiedDate":"2024-03-20"},{"lineNumber":462,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":463,"author":{"gitId":"JukeBoxK"},"content":" Use case ends.","lastModifiedDate":"2024-03-20"},{"lineNumber":464,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":465,"author":{"gitId":"JukeBoxK"},"content":"**Extensions**","lastModifiedDate":"2024-03-20"},{"lineNumber":466,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":467,"author":{"gitId":"JukeBoxK"},"content":"* 2a. No command has been run since opening the app.","lastModifiedDate":"2024-03-20"},{"lineNumber":468,"author":{"gitId":"JukeBoxK"},"content":" ","lastModifiedDate":"2024-03-20"},{"lineNumber":469,"author":{"gitId":"JukeBoxK"},"content":" * 2a1. OH shows an error message. ","lastModifiedDate":"2024-03-20"},{"lineNumber":470,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":471,"author":{"gitId":"JukeBoxK"},"content":" Use case ends.","lastModifiedDate":"2024-03-20"},{"lineNumber":472,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":473,"author":{"gitId":"JukeBoxK"},"content":"**UC06: Redoing an Undo Command**","lastModifiedDate":"2024-03-20"},{"lineNumber":474,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":475,"author":{"gitId":"JukeBoxK"},"content":"**MSS**","lastModifiedDate":"2024-03-20"},{"lineNumber":476,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":477,"author":{"gitId":"JukeBoxK"},"content":"1. User requests to redo an undo.","lastModifiedDate":"2024-03-20"},{"lineNumber":478,"author":{"gitId":"JukeBoxK"},"content":"2. OH resets to the state before the latest command.","lastModifiedDate":"2024-03-20"},{"lineNumber":479,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":480,"author":{"gitId":"JukeBoxK"},"content":" Use case ends.","lastModifiedDate":"2024-03-20"},{"lineNumber":481,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":482,"author":{"gitId":"JukeBoxK"},"content":"**Extensions**","lastModifiedDate":"2024-03-20"},{"lineNumber":483,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":484,"author":{"gitId":"JukeBoxK"},"content":"* 2a. No command has been run since opening the app.","lastModifiedDate":"2024-03-20"},{"lineNumber":485,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":486,"author":{"gitId":"JukeBoxK"},"content":" * 2a1. OH shows an error message.","lastModifiedDate":"2024-03-20"},{"lineNumber":487,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":488,"author":{"gitId":"JukeBoxK"},"content":" Use case ends.","lastModifiedDate":"2024-03-20"},{"lineNumber":489,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":490,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":491,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":492,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":493,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23"},{"lineNumber":494,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":495,"author":{"gitId":"-"},"content":"1. Should work on any _mainstream OS_ as long as it has Java `11` or above installed.","lastModifiedDate":"2020-05-23"},{"lineNumber":496,"author":{"gitId":"-"},"content":"2. Should be able to hold up to 1000 persons without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":497,"author":{"gitId":"radeon2525"},"content":"3. A user with above average typing speed for regular English text (i.e. not code, not system admin commands) should be","lastModifiedDate":"2024-03-07"},{"lineNumber":498,"author":{"gitId":"radeon2525"},"content":" able to accomplish most of the tasks faster using commands than using the mouse.","lastModifiedDate":"2024-03-07"},{"lineNumber":499,"author":{"gitId":"radeon2525"},"content":"4. Should be able to handle private contact details securely.","lastModifiedDate":"2024-03-07"},{"lineNumber":500,"author":{"gitId":"radeon2525"},"content":"5. Should be able to handle a large number of contacts without consuming a large amount of memory.","lastModifiedDate":"2024-03-07"},{"lineNumber":501,"author":{"gitId":"radeon2525"},"content":"6. Should be able to handle a large number of contacts without slowing down the app.","lastModifiedDate":"2024-03-07"},{"lineNumber":502,"author":{"gitId":"radeon2525"},"content":"7. Should be able to handle a large number of contacts without losing the data.","lastModifiedDate":"2024-03-07"},{"lineNumber":503,"author":{"gitId":"radeon2525"},"content":"8. Should be able to handle a large number of contacts without losing the data even in the event of a system crash.","lastModifiedDate":"2024-03-07"},{"lineNumber":504,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":505,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23"},{"lineNumber":506,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":507,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09"},{"lineNumber":508,"author":{"gitId":"-"},"content":"* **Private contact detail**: A contact detail that is not meant to be shared with others","lastModifiedDate":"2020-05-23"},{"lineNumber":509,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":510,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":511,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":512,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23"},{"lineNumber":513,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":514,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":515,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":516,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2020-05-23"},{"lineNumber":517,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":518,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":519,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":520,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":521,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":522,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":523,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":524,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":525,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23"},{"lineNumber":526,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":527,"author":{"gitId":"radeon2525"},"content":" 1. Double-click the jar file Expected: Shows the GUI with a set of sample contacts. The window size may not be","lastModifiedDate":"2024-03-07"},{"lineNumber":528,"author":{"gitId":"radeon2525"},"content":" optimum.","lastModifiedDate":"2024-03-07"},{"lineNumber":529,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":530,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23"},{"lineNumber":531,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":532,"author":{"gitId":"-"},"content":" 1. Resize the window to an optimum size. Move the window to a different location. Close the window.","lastModifiedDate":"2020-05-23"},{"lineNumber":533,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":534,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":535,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23"},{"lineNumber":536,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":537,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":538,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":539,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23"},{"lineNumber":540,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":541,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23"},{"lineNumber":542,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":543,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23"},{"lineNumber":544,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":545,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":546,"author":{"gitId":"radeon2525"},"content":" Expected: First contact is deleted from the list. Details of the deleted contact shown in the status message.","lastModifiedDate":"2024-03-07"},{"lineNumber":547,"author":{"gitId":"radeon2525"},"content":" Timestamp in the status bar is updated.","lastModifiedDate":"2024-03-07"},{"lineNumber":548,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":549,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":550,"author":{"gitId":"-"},"content":" Expected: No person is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2020-05-23"},{"lineNumber":551,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":552,"author":{"gitId":"-"},"content":" 1. Other incorrect delete commands to try: `delete`, `delete x`, `...` (where x is larger than the list size)\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":553,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":554,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":555,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":556,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":557,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":558,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":559,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":560,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":561,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23"},{"lineNumber":562,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":563,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"Derekljh":7,"radeon2525":122,"JukeBoxK":100,"miffi":10,"-":324}},{"path":"docs/UserGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: User Guide","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"JukeBoxK"},"content":"OfficeHarbor (OH) is a **desktop app for managing the contacts of a tech firm\u0027s teams, optimized for use via a Command Line Interface** (CLI) while still having the benefits of a Graphical User Interface (GUI). If you can type fast, OH can get your contact management tasks done faster than traditional GUI apps.","lastModifiedDate":"2024-02-29"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"{:toc}","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"## Quick start","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"1. Ensure you have Java `11` or above installed in your Computer.","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"JukeBoxK"},"content":"2. Download the latest `officeharbor.jar` from [here](https://github.com/AY2324S2-CS2103T-W13-2/tphone:releases).","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"JukeBoxK"},"content":"3. Copy the file to the folder you want to use as the _home folder_ for your OH.","lastModifiedDate":"2024-02-29"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"JukeBoxK"},"content":"4. (a) Double-click on the `officeharbor.jar` file to run the application.","lastModifiedDate":"2024-02-29"},{"lineNumber":22,"author":{"gitId":"JukeBoxK"},"content":" (b) (Or) Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar officeharbor.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2024-02-29"},{"lineNumber":23,"author":{"gitId":"-"},"content":" A GUI similar to the below should appear in a few seconds. Note how the app contains some sample data.\u003cbr\u003e","lastModifiedDate":"2023-01-01"},{"lineNumber":24,"author":{"gitId":"-"},"content":" ![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"JukeBoxK"},"content":"5. Type the command in the command box and press Enter to execute it. e.g. typing **`help`** and pressing Enter will open the help window.\u003cbr\u003e","lastModifiedDate":"2024-02-29"},{"lineNumber":27,"author":{"gitId":"-"},"content":" Some example commands you can try:","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * `list` : Lists all contacts.","lastModifiedDate":"2023-01-01"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"JukeBoxK"},"content":" * `add name:John Doe phone:98765432 email:johnd@example.com address:John street, block 123, #01-01` : Adds a contact named `John Doe` to OH.","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * `delete 3` : Deletes the 3rd contact shown in the current list.","lastModifiedDate":"2023-01-01"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * `clear` : Deletes all contacts.","lastModifiedDate":"2023-01-01"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * `exit` : Exits the app.","lastModifiedDate":"2023-01-01"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"JukeBoxK"},"content":"6. Refer to the [Features](#features) below for details of each command.","lastModifiedDate":"2024-02-29"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"block\" class\u003d\"alert alert-info\"\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"**:information_source: Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"JukeBoxK"},"content":"* Words enclosed between diamond brackets `\u003c\u003e`, are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2024-02-29"},{"lineNumber":50,"author":{"gitId":"JukeBoxK"},"content":" e.g. in `add name:\u003cname\u003e`, `\u003cname\u003e` is a parameter which can be used as `add name:John Doe`.","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"JukeBoxK"},"content":"* Space can be added between the prefix and the word.\u003cbr\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"JukeBoxK"},"content":" e.g. either `name: \u003cname\u003e phone: \u003cphone number\u003e` or `name:\u003cname\u003e phone:\u003cphone number\u003e` is acceptable.","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"JukeBoxK"},"content":"* In some commands like tag, `[tag/\u003ctag\u003e]...` means that you can have multiple optional prefixes at the end \u003cbr\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"JukeBoxK"},"content":" e.g. the command `tag 1 tag:friends tag:colleagues` would add 2 tags directly to the contact at index 1.","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"JukeBoxK"},"content":"* Parameters can be in any order for adding a contact.\u003cbr\u003e","lastModifiedDate":"2024-02-29"},{"lineNumber":59,"author":{"gitId":"JukeBoxK"},"content":" e.g. if the command specifies `name:\u003cname\u003e phone:\u003cphone number\u003e`, `phone:\u003cphone number\u003e name:\u003cname\u003e` is also acceptable.","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"* Extraneous parameters for commands that do not take in parameters (such as `help`, `list`, `exit` and `clear`) will be ignored.\u003cbr\u003e","lastModifiedDate":"2021-02-03"},{"lineNumber":62,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2021-02-03"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03"},{"lineNumber":64,"author":{"gitId":"-"},"content":"* If you are using a PDF version of this document, be careful when copying and pasting commands that span multiple lines as space characters surrounding line-breaks may be omitted when copied over to the application.","lastModifiedDate":"2023-06-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"### Viewing help : `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"JukeBoxK"},"content":"Shows a message explaining how to access the help page.","lastModifiedDate":"2024-02-29"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"Format: `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"### Adding a person: `add`","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"JukeBoxK"},"content":"Adds a contact with the input details to OH.","lastModifiedDate":"2024-02-29"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"JukeBoxK"},"content":"Format: `add name:\u003cname\u003e phone:\u003cphone number\u003e email:\u003cemail address\u003e address:\u003caddress\u003e`","lastModifiedDate":"2024-03-21"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"JukeBoxK"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e","lastModifiedDate":"2024-02-29"},{"lineNumber":83,"author":{"gitId":"JukeBoxK"},"content":"All components are necessary.","lastModifiedDate":"2024-02-29"},{"lineNumber":84,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"JukeBoxK"},"content":"* `add name:John Doe phone:98765432 email:johnd@example.com address:John street, block 123, #01-01`","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"JukeBoxK"},"content":"* `add name:Virat Kohli phone:98765432 email:virat@gmail.com address:Altamount Road, block 10, #05-02`","lastModifiedDate":"2024-03-21"},{"lineNumber":89,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":90,"author":{"gitId":"JukeBoxK"},"content":"Output:","lastModifiedDate":"2024-02-29"},{"lineNumber":91,"author":{"gitId":"JukeBoxK"},"content":"The message “A new contact `name` has been added to the list. Name: `\u003cname\u003e`, Phone: `\u003cphone number\u003e`, Email: `\u003cemail\u003e`, Address: `\u003caddress\u003e`.” will be shown. ","lastModifiedDate":"2024-02-29"},{"lineNumber":92,"author":{"gitId":"JukeBoxK"},"content":"A new contact entry with the given user will be displayed in the list.","lastModifiedDate":"2024-02-29"},{"lineNumber":93,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":94,"author":{"gitId":"JukeBoxK"},"content":"![add](images/user-guide/add_mock_output.png)","lastModifiedDate":"2024-03-21"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"### Listing all persons : `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"JukeBoxK"},"content":"Shows a list of all contacts in OH.","lastModifiedDate":"2024-02-29"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"Format: `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"JukeBoxK"},"content":"Output:","lastModifiedDate":"2024-02-29"},{"lineNumber":103,"author":{"gitId":"JukeBoxK"},"content":"A list of added contacts if any in the form of a scrollable pane will be shown. ","lastModifiedDate":"2024-02-29"},{"lineNumber":104,"author":{"gitId":"JukeBoxK"},"content":"The contacts are listed in the order in which they are added.","lastModifiedDate":"2024-02-29"},{"lineNumber":105,"author":{"gitId":"JukeBoxK"},"content":"The message \"Empty list\" is shown when there is nothing added.","lastModifiedDate":"2024-02-29"},{"lineNumber":106,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":107,"author":{"gitId":"JukeBoxK"},"content":"### Deleting a person : `delete`","lastModifiedDate":"2024-02-29"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"author":{"gitId":"JukeBoxK"},"content":"Deletes the specified contact from OH.","lastModifiedDate":"2024-02-29"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":111,"author":{"gitId":"JukeBoxK"},"content":"Format: `delete \u003cid\u003e`","lastModifiedDate":"2024-02-29"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"JukeBoxK"},"content":"* Deletes the person at the specified `\u003cid\u003e`.","lastModifiedDate":"2024-02-29"},{"lineNumber":114,"author":{"gitId":"JukeBoxK"},"content":"* The id refers to the index number shown in the contact list.","lastModifiedDate":"2024-02-29"},{"lineNumber":115,"author":{"gitId":"JukeBoxK"},"content":"* The id **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2024-02-29"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"JukeBoxK"},"content":"* `delete 2` deletes the 2nd person of the contact list from OH.","lastModifiedDate":"2024-02-29"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"JukeBoxK"},"content":"Output:","lastModifiedDate":"2024-02-29"},{"lineNumber":121,"author":{"gitId":"JukeBoxK"},"content":"The message \"Contact `name` has been deleted. Name: `name`, Phone: `phone number`, Email: `email`, Address: `address`.” will be shown.","lastModifiedDate":"2024-02-29"},{"lineNumber":122,"author":{"gitId":"JukeBoxK"},"content":"The entry with the given id will disappear from the list.","lastModifiedDate":"2024-02-29"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"JukeBoxK"},"content":"![delete](images/user-guide/delete_mock_output.png)","lastModifiedDate":"2024-03-21"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"JukeBoxK"},"content":"### Clearing all entries : `clear`","lastModifiedDate":"2024-02-29"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":128,"author":{"gitId":"JukeBoxK"},"content":"Clears all entries from OH.","lastModifiedDate":"2024-02-29"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":130,"author":{"gitId":"JukeBoxK"},"content":"Format: `clear`","lastModifiedDate":"2024-02-29"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":132,"author":{"gitId":"JukeBoxK"},"content":"Output:","lastModifiedDate":"2024-02-29"},{"lineNumber":133,"author":{"gitId":"JukeBoxK"},"content":"The message \"Address book has been cleared!\" will be shown.","lastModifiedDate":"2024-02-29"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"JukeBoxK"},"content":"### Tagging a Contact : `tag`","lastModifiedDate":"2024-02-29"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"JukeBoxK"},"content":"Tags the specified contact with the input tag name.","lastModifiedDate":"2024-02-29"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"JukeBoxK"},"content":"* Tags the person at the specified `\u003cid\u003e`.","lastModifiedDate":"2024-02-29"},{"lineNumber":140,"author":{"gitId":"JukeBoxK"},"content":"* The id refers to the index number shown in the displayed person list.","lastModifiedDate":"2024-02-29"},{"lineNumber":141,"author":{"gitId":"JukeBoxK"},"content":"* The id **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2024-02-29"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"JukeBoxK"},"content":"Format: `tag \u003cid\u003e tag:\u003ctag\u003e [tag:tag]...`","lastModifiedDate":"2024-03-21"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"JukeBoxK"},"content":"Example:","lastModifiedDate":"2024-02-29"},{"lineNumber":146,"author":{"gitId":"JukeBoxK"},"content":"`tag 2 friends`","lastModifiedDate":"2024-03-20"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"JukeBoxK"},"content":"Output:","lastModifiedDate":"2024-02-29"},{"lineNumber":149,"author":{"gitId":"JukeBoxK"},"content":"The message \"The following contact has been tagged with `\u003ctag name\u003e`: `contact info`.” will be shown, ","lastModifiedDate":"2024-02-29"},{"lineNumber":150,"author":{"gitId":"JukeBoxK"},"content":"where contact info is all the information of the contact.","lastModifiedDate":"2024-02-29"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"JukeBoxK"},"content":"![tag](images/user-guide/tag_mock_output.png)","lastModifiedDate":"2024-03-21"},{"lineNumber":153,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":154,"author":{"gitId":"JukeBoxK"},"content":"### Deleting a tag : `untag`","lastModifiedDate":"2024-03-20"},{"lineNumber":155,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":156,"author":{"gitId":"JukeBoxK"},"content":"Deletes the specified tag from the specified contact","lastModifiedDate":"2024-02-29"},{"lineNumber":157,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":158,"author":{"gitId":"JukeBoxK"},"content":"* Delete the specified tag of the person at the specified `\u003cid\u003e`.","lastModifiedDate":"2024-02-29"},{"lineNumber":159,"author":{"gitId":"JukeBoxK"},"content":"* The id refers to the index number shown in the displayed person list.","lastModifiedDate":"2024-02-29"},{"lineNumber":160,"author":{"gitId":"JukeBoxK"},"content":"* The id **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2024-02-29"},{"lineNumber":161,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":162,"author":{"gitId":"JukeBoxK"},"content":"Format: `untag \u003cid\u003e tag:\u003ctag\u003e [tag:tag]...`","lastModifiedDate":"2024-03-21"},{"lineNumber":163,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":164,"author":{"gitId":"JukeBoxK"},"content":"Output:","lastModifiedDate":"2024-02-29"},{"lineNumber":165,"author":{"gitId":"JukeBoxK"},"content":"The message \"The tag `\u003ctag\u003e` has been removed from contact: `contact info`.\" will be shown,","lastModifiedDate":"2024-03-20"},{"lineNumber":166,"author":{"gitId":"JukeBoxK"},"content":"where contact info is all the information of the contact. ","lastModifiedDate":"2024-02-29"},{"lineNumber":167,"author":{"gitId":"JukeBoxK"},"content":"The list entry of the user with \u003cid\u003e will not have the tag anymore.","lastModifiedDate":"2024-02-29"},{"lineNumber":168,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":169,"author":{"gitId":"JukeBoxK"},"content":"![delete-tag](images/user-guide/delete-tag_mock_output.png)","lastModifiedDate":"2024-03-21"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"JukeBoxK"},"content":"### Undoing a command : `undo`","lastModifiedDate":"2024-03-20"},{"lineNumber":172,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":173,"author":{"gitId":"JukeBoxK"},"content":"Resets the state of OH to before the execution of the latest command.","lastModifiedDate":"2024-03-20"},{"lineNumber":174,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":175,"author":{"gitId":"JukeBoxK"},"content":"Format: `undo`","lastModifiedDate":"2024-03-20"},{"lineNumber":176,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":177,"author":{"gitId":"JukeBoxK"},"content":"Output:","lastModifiedDate":"2024-03-20"},{"lineNumber":178,"author":{"gitId":"JukeBoxK"},"content":"The message \"Undo success!\" will be shown. ","lastModifiedDate":"2024-03-20"},{"lineNumber":179,"author":{"gitId":"JukeBoxK"},"content":"The list entry of the user will return to the state before the latest command. ","lastModifiedDate":"2024-03-20"},{"lineNumber":180,"author":{"gitId":"JukeBoxK"},"content":"If no command has been run at all, an error message \"No more commands to undo!\" will be shown instead.","lastModifiedDate":"2024-03-20"},{"lineNumber":181,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":182,"author":{"gitId":"JukeBoxK"},"content":"Example of undoing a delete command.","lastModifiedDate":"2024-03-20"},{"lineNumber":183,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":184,"author":{"gitId":"JukeBoxK"},"content":"Contact after a delete command:","lastModifiedDate":"2024-03-20"},{"lineNumber":185,"author":{"gitId":"JukeBoxK"},"content":"![delete_operation](images/user-guide/delete_operation-undo-mock.png)","lastModifiedDate":"2024-03-21"},{"lineNumber":186,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":187,"author":{"gitId":"JukeBoxK"},"content":"Contact after the delete command is undone:","lastModifiedDate":"2024-03-20"},{"lineNumber":188,"author":{"gitId":"JukeBoxK"},"content":"![undo](images/user-guide/undo_mock_output.png)","lastModifiedDate":"2024-03-21"},{"lineNumber":189,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":190,"author":{"gitId":"JukeBoxK"},"content":"### Redoing a command : `redo`","lastModifiedDate":"2024-03-20"},{"lineNumber":191,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":192,"author":{"gitId":"JukeBoxK"},"content":"Resets the state of OH to before the latest undo command.","lastModifiedDate":"2024-03-20"},{"lineNumber":193,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":194,"author":{"gitId":"JukeBoxK"},"content":"Format: `redo`","lastModifiedDate":"2024-03-20"},{"lineNumber":195,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":196,"author":{"gitId":"JukeBoxK"},"content":"Output:","lastModifiedDate":"2024-03-20"},{"lineNumber":197,"author":{"gitId":"JukeBoxK"},"content":"The message \"Redo success!\" will be shown.","lastModifiedDate":"2024-03-20"},{"lineNumber":198,"author":{"gitId":"JukeBoxK"},"content":"The list entry of the user will return to the state before the latest undo command.","lastModifiedDate":"2024-03-20"},{"lineNumber":199,"author":{"gitId":"JukeBoxK"},"content":"If no undo command has been run at all, an error message \"No more commands to redo!\" will be shown instead.","lastModifiedDate":"2024-03-20"},{"lineNumber":200,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":201,"author":{"gitId":"JukeBoxK"},"content":"Example of redoing the previous undo command:","lastModifiedDate":"2024-03-20"},{"lineNumber":202,"author":{"gitId":"JukeBoxK"},"content":"![redo](images/user-guide/redo_mock_output.png)","lastModifiedDate":"2024-03-21"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":204,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":206,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":208,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":210,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":212,"author":{"gitId":"miffi"},"content":"OfficeHarbor data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.","lastModifiedDate":"2024-02-24"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":214,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":216,"author":{"gitId":"JukeBoxK"},"content":"OfficeHarbor data are saved automatically as a JSON file `[JAR file location]/dataddress:officeharbor.json`. Advanced users are welcome to update data directly by editing that data file.","lastModifiedDate":"2024-03-21"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":218,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-warning\"\u003e:exclamation: **Caution:**","lastModifiedDate":"2021-02-04"},{"lineNumber":219,"author":{"gitId":"miffi"},"content":"If your changes to the data file makes its format invalid, OfficeHarbor will discard all data and start with an empty data file at the next run. Hence, it is recommended to take a backup of the file before editing it.\u003cbr\u003e","lastModifiedDate":"2024-02-24"},{"lineNumber":220,"author":{"gitId":"JukeBoxK"},"content":"Furthermore, certain edits can cause the OfficeHarbor to behave in unexpected ways (e.g., if a value entered is outside the acceptable range). Therefore, edit the data file only if you are confident that you can update it correctly.","lastModifiedDate":"2024-02-29"},{"lineNumber":221,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-02-04"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":223,"author":{"gitId":"JukeBoxK"},"content":"### Filtering tags `[coming in v1.3]`","lastModifiedDate":"2024-02-29"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":"_Details coming soon ..._","lastModifiedDate":"2021-02-04"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"miffi"},"content":"**A**: Install the app in the other computer and overwrite the empty data file it creates with the file that contains the data of your previous OfficeHarbor home folder.","lastModifiedDate":"2024-02-24"},{"lineNumber":233,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":234,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":"## Known issues","lastModifiedDate":"2023-09-08"},{"lineNumber":237,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":238,"author":{"gitId":"-"},"content":"1. **When using multiple screens**, if you move the application to a secondary screen, and later switch to using only the primary screen, the GUI will open off-screen. The remedy is to delete the `preferences.json` file created by the application before running the application again.","lastModifiedDate":"2023-09-08"},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":240,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":242,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"JukeBoxK"},"content":"| Action | Format, Examples |","lastModifiedDate":"2024-02-29"},{"lineNumber":245,"author":{"gitId":"JukeBoxK"},"content":"|----------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|","lastModifiedDate":"2024-03-21"},{"lineNumber":246,"author":{"gitId":"JukeBoxK"},"content":"| **Add** | `add name:\u003cname\u003e phone:\u003cphone number\u003e email:\u003cemail address\u003e address:\u003caddress\u003e` \u003cbr\u003e e.g., `add name:James Ho phone:22224444 email:jamesho@example.com address:123, Clementi Rd, 1234665` |","lastModifiedDate":"2024-03-21"},{"lineNumber":247,"author":{"gitId":"JukeBoxK"},"content":"| **Delete** | `delete \u003cid\u003e`\u003cbr\u003e e.g., `delete 3` |","lastModifiedDate":"2024-03-20"},{"lineNumber":248,"author":{"gitId":"JukeBoxK"},"content":"| **Clear** | `clear` |","lastModifiedDate":"2024-02-29"},{"lineNumber":249,"author":{"gitId":"JukeBoxK"},"content":"| **Tag** | `tag \u003cid\u003e tag:\u003ctag\u003e [tag:tag]...` \u003cbr\u003e e.g., `tag 2 tag:friends` |","lastModifiedDate":"2024-03-21"},{"lineNumber":250,"author":{"gitId":"JukeBoxK"},"content":"| **Delete Tag** | `untag \u003cid\u003e tag:\u003ctag\u003e [tag:tag]...` \u003cbr\u003e e.g., `untag 2 tag:friends` |","lastModifiedDate":"2024-03-21"},{"lineNumber":251,"author":{"gitId":"JukeBoxK"},"content":"| **List** | `list` |","lastModifiedDate":"2024-02-29"},{"lineNumber":252,"author":{"gitId":"JukeBoxK"},"content":"| **Undo** | `undo` |","lastModifiedDate":"2024-03-20"},{"lineNumber":253,"author":{"gitId":"JukeBoxK"},"content":"| **Redo** | `redo` |","lastModifiedDate":"2024-03-20"},{"lineNumber":254,"author":{"gitId":"JukeBoxK"},"content":"| **Help** | `help` |","lastModifiedDate":"2024-02-29"}],"authorContributionMap":{"JukeBoxK":126,"miffi":3,"-":125}},{"path":"docs/_sass/minima/_base.scss","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"html {","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":" font-size: $base-font-size;","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * Reset some basic elements","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"body, h1, h2, h3, h4, h5, h6,","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"p, blockquote, pre, hr,","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"dl, dd, ol, ul, figure {","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":" margin: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":" padding: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Basic styling","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"body {","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":" font: $base-font-weight #{$base-font-size}/#{$base-line-height} $base-font-family;","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":" color: $text-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":" background-color: $background-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":" -webkit-text-size-adjust: 100%;","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":" -webkit-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":" -moz-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":" -o-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":" font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":" font-kerning: normal;","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" display: flex;","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":" min-height: 100vh;","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":" flex-direction: column;","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":" overflow-wrap: break-word;","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Set `margin-bottom` to maintain vertical rhythm","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"h1, h2, h3, h4, h5, h6,","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"p, blockquote, pre,","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"ul, ol, dl, figure,","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"%vertical-rhythm {","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit / 2;","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"hr {","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" margin-top: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * `main` element","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"main {","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" display: block; /* Default value of `display` of `main` element is \u0027inline\u0027 in IE 11. */","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Images","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"img {","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" max-width: 100%;","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" vertical-align: middle;","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * Figures","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"figure \u003e img {","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"figcaption {","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" font-size: $small-font-size;","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Lists","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"ul, ol {","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" margin-left: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"li {","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":" \u003e ul,","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":" \u003e ol {","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":" margin-bottom: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Headings","lastModifiedDate":"2020-05-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":"h1, h2, h3, h4, h5, h6 {","lastModifiedDate":"2020-05-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":" font-weight: $base-font-weight;","lastModifiedDate":"2020-05-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":" * Links","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":"a {","lastModifiedDate":"2020-05-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":" color: $link-base-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":" text-decoration: none;","lastModifiedDate":"2020-05-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":" \u0026:visited {","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":" color: $link-visited-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":" \u0026:hover {","lastModifiedDate":"2020-05-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":" color: $text-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":" text-decoration: underline;","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":" .social-media-list \u0026:hover {","lastModifiedDate":"2020-05-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":" text-decoration: none;","lastModifiedDate":"2020-05-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":" .username {","lastModifiedDate":"2020-05-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":" text-decoration: underline;","lastModifiedDate":"2020-05-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":" * Blockquotes","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"blockquote {","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":" color: $brand-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":" border-left: 4px solid $brand-color-light;","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit / 2;","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":" @include relative-font-size(1.125);","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":" font-style: italic;","lastModifiedDate":"2020-05-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":" \u003e :last-child {","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":" margin-bottom: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":" i, em {","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":" font-style: normal;","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":" * Code formatting","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"pre,","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":"code {","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":" font-family: $code-font-family;","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":" font-size: 0.9375em;","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":" border: 1px solid $brand-color-light;","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":" border-radius: 3px;","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":" background-color: $code-background-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"code {","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":" padding: 1px 5px;","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":"pre {","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":" padding: 8px 12px;","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":" overflow-x: auto;","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":" \u003e code {","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":" border: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":" padding-right: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":" padding-left: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":".highlight {","lastModifiedDate":"2020-05-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":" border-radius: 3px;","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":" background: $code-background-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":" @extend %vertical-rhythm;","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":190,"author":{"gitId":"-"},"content":" .highlighter-rouge \u0026 {","lastModifiedDate":"2020-05-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":" background: $code-background-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":198,"author":{"gitId":"-"},"content":" * Wrapper","lastModifiedDate":"2020-05-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"author":{"gitId":"-"},"content":".wrapper {","lastModifiedDate":"2020-05-23"},{"lineNumber":201,"author":{"gitId":"-"},"content":" max-width: calc(#{$content-width} - (#{$spacing-unit}));","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":" margin-right: auto;","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":" margin-left: auto;","lastModifiedDate":"2020-05-23"},{"lineNumber":204,"author":{"gitId":"-"},"content":" padding-right: $spacing-unit / 2;","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit / 2;","lastModifiedDate":"2020-05-23"},{"lineNumber":206,"author":{"gitId":"-"},"content":" @extend %clearfix;","lastModifiedDate":"2020-05-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":208,"author":{"gitId":"-"},"content":" @media screen and (min-width: $on-large) {","lastModifiedDate":"2020-05-23"},{"lineNumber":209,"author":{"gitId":"-"},"content":" max-width: calc(#{$content-width} - (#{$spacing-unit} * 2));","lastModifiedDate":"2020-05-23"},{"lineNumber":210,"author":{"gitId":"-"},"content":" padding-right: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":212,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":213,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":217,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":218,"author":{"gitId":"-"},"content":" * Clearfix","lastModifiedDate":"2020-05-23"},{"lineNumber":219,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":220,"author":{"gitId":"-"},"content":"%clearfix:after {","lastModifiedDate":"2020-05-23"},{"lineNumber":221,"author":{"gitId":"-"},"content":" content: \"\";","lastModifiedDate":"2020-05-23"},{"lineNumber":222,"author":{"gitId":"-"},"content":" display: table;","lastModifiedDate":"2020-05-23"},{"lineNumber":223,"author":{"gitId":"-"},"content":" clear: both;","lastModifiedDate":"2020-05-23"},{"lineNumber":224,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":228,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":" * Icons","lastModifiedDate":"2020-05-23"},{"lineNumber":230,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":".orange {","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":" color: #f66a0a;","lastModifiedDate":"2020-05-23"},{"lineNumber":234,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":".grey {","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":" color: #828282;","lastModifiedDate":"2020-05-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":" * Tables","lastModifiedDate":"2020-05-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":"table {","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":" width: 100%;","lastModifiedDate":"2020-05-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":" text-align: $table-text-align;","lastModifiedDate":"2020-05-23"},{"lineNumber":247,"author":{"gitId":"-"},"content":" color: $table-text-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":248,"author":{"gitId":"-"},"content":" border-collapse: collapse;","lastModifiedDate":"2020-05-23"},{"lineNumber":249,"author":{"gitId":"-"},"content":" border: 1px solid $table-border-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":250,"author":{"gitId":"-"},"content":" tr {","lastModifiedDate":"2020-05-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":" \u0026:nth-child(even) {","lastModifiedDate":"2020-05-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":" background-color: $table-zebra-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":254,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":" th, td {","lastModifiedDate":"2020-05-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":" padding: ($spacing-unit / 3) ($spacing-unit / 2);","lastModifiedDate":"2020-05-23"},{"lineNumber":257,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":258,"author":{"gitId":"-"},"content":" th {","lastModifiedDate":"2020-05-23"},{"lineNumber":259,"author":{"gitId":"-"},"content":" background-color: $table-header-bg-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"-"},"content":" border: 1px solid $table-header-border;","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":262,"author":{"gitId":"-"},"content":" td {","lastModifiedDate":"2020-05-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":" border: 1px solid $table-border-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":264,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":266,"author":{"gitId":"-"},"content":" @include media-query($on-laptop) {","lastModifiedDate":"2020-05-23"},{"lineNumber":267,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2020-05-23"},{"lineNumber":268,"author":{"gitId":"-"},"content":" overflow-x: auto;","lastModifiedDate":"2020-05-23"},{"lineNumber":269,"author":{"gitId":"-"},"content":" -webkit-overflow-scrolling: touch;","lastModifiedDate":"2020-05-23"},{"lineNumber":270,"author":{"gitId":"-"},"content":" -ms-overflow-style: -ms-autohiding-scrollbar;","lastModifiedDate":"2020-05-23"},{"lineNumber":271,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":272,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-01-11"},{"lineNumber":274,"author":{"gitId":"-"},"content":"@media print {","lastModifiedDate":"2021-01-12"},{"lineNumber":275,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2021-01-11"},{"lineNumber":276,"author":{"gitId":"-"},"content":" * Prevents page break from cutting through content when printing","lastModifiedDate":"2021-01-12"},{"lineNumber":277,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2021-01-11"},{"lineNumber":278,"author":{"gitId":"-"},"content":" body {","lastModifiedDate":"2021-01-11"},{"lineNumber":279,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2021-01-11"},{"lineNumber":280,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-11"},{"lineNumber":281,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2021-01-12"},{"lineNumber":282,"author":{"gitId":"-"},"content":" * Replaces the top navigation menu with the project name when printing","lastModifiedDate":"2021-01-12"},{"lineNumber":283,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2021-01-12"},{"lineNumber":284,"author":{"gitId":"-"},"content":" .site-header .wrapper {","lastModifiedDate":"2021-01-12"},{"lineNumber":285,"author":{"gitId":"-"},"content":" display: none;","lastModifiedDate":"2021-01-12"},{"lineNumber":286,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-12"},{"lineNumber":287,"author":{"gitId":"-"},"content":" .site-header {","lastModifiedDate":"2021-01-12"},{"lineNumber":288,"author":{"gitId":"-"},"content":" text-align: center;","lastModifiedDate":"2021-01-12"},{"lineNumber":289,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-12"},{"lineNumber":290,"author":{"gitId":"-"},"content":" .site-header:before {","lastModifiedDate":"2021-01-12"},{"lineNumber":291,"author":{"gitId":"miffi"},"content":" content: \"OfficeHarbor\";","lastModifiedDate":"2024-02-24"},{"lineNumber":292,"author":{"gitId":"-"},"content":" font-size: 32px;","lastModifiedDate":"2021-01-12"},{"lineNumber":293,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-11"},{"lineNumber":294,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-01-12"},{"lineNumber":295,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-01-12"}],"authorContributionMap":{"miffi":1,"-":294}},{"path":"docs/diagrams/TagCommand.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"Derekljh"},"content":"@startuml","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"Derekljh"},"content":"!include Style.puml","lastModifiedDate":"2024-03-22"},{"lineNumber":3,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":4,"author":{"gitId":"Derekljh"},"content":"box Logic LOGIC_COLOR_T2","lastModifiedDate":"2024-03-22"},{"lineNumber":5,"author":{"gitId":"Derekljh"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2024-03-22"},{"lineNumber":6,"author":{"gitId":"Derekljh"},"content":"participant \":AddressBookParser\" as AddressBookParser LOGIC_COLOR","lastModifiedDate":"2024-03-22"},{"lineNumber":7,"author":{"gitId":"Derekljh"},"content":"participant \":TagCommandParser\" as TagCommandParser LOGIC_COLOR","lastModifiedDate":"2024-03-22"},{"lineNumber":8,"author":{"gitId":"Derekljh"},"content":"participant \":TagCommand\" as TagCommand LOGIC_COLOR","lastModifiedDate":"2024-03-22"},{"lineNumber":9,"author":{"gitId":"Derekljh"},"content":"participant \":CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"Derekljh"},"content":"end box","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"Derekljh"},"content":"box Model MODEL_COLOR_T2","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"Derekljh"},"content":"participant \":Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"Derekljh"},"content":"end box","lastModifiedDate":"2024-03-22"},{"lineNumber":15,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"Derekljh"},"content":"[-\u003e LogicManager : execute(\"tag 1 tag: example\")","lastModifiedDate":"2024-03-22"},{"lineNumber":17,"author":{"gitId":"Derekljh"},"content":"activate LogicManager","lastModifiedDate":"2024-03-22"},{"lineNumber":18,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"author":{"gitId":"Derekljh"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(\"tag 1 tag: example\")","lastModifiedDate":"2024-03-22"},{"lineNumber":20,"author":{"gitId":"Derekljh"},"content":"activate AddressBookParser","lastModifiedDate":"2024-03-22"},{"lineNumber":21,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":22,"author":{"gitId":"Derekljh"},"content":"create TagCommandParser","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"Derekljh"},"content":"AddressBookParser -\u003e TagCommandParser","lastModifiedDate":"2024-03-22"},{"lineNumber":24,"author":{"gitId":"Derekljh"},"content":"activate TagCommandParser","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":26,"author":{"gitId":"Derekljh"},"content":"TagCommandParser --\u003e AddressBookParser","lastModifiedDate":"2024-03-22"},{"lineNumber":27,"author":{"gitId":"Derekljh"},"content":"deactivate TagCommandParser","lastModifiedDate":"2024-03-22"},{"lineNumber":28,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":29,"author":{"gitId":"Derekljh"},"content":"AddressBookParser -\u003e TagCommandParser : parse(\"1, example\")","lastModifiedDate":"2024-03-22"},{"lineNumber":30,"author":{"gitId":"Derekljh"},"content":"activate TagCommandParser","lastModifiedDate":"2024-03-22"},{"lineNumber":31,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":32,"author":{"gitId":"Derekljh"},"content":"create TagCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":33,"author":{"gitId":"Derekljh"},"content":"TagCommandParser -\u003e TagCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":34,"author":{"gitId":"Derekljh"},"content":"activate TagCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":35,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":36,"author":{"gitId":"Derekljh"},"content":"TagCommand --\u003e TagCommandParser","lastModifiedDate":"2024-03-22"},{"lineNumber":37,"author":{"gitId":"Derekljh"},"content":"deactivate TagCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":38,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":39,"author":{"gitId":"Derekljh"},"content":"TagCommandParser --\u003e AddressBookParser","lastModifiedDate":"2024-03-22"},{"lineNumber":40,"author":{"gitId":"Derekljh"},"content":"destroy TagCommandParser","lastModifiedDate":"2024-03-22"},{"lineNumber":41,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":42,"author":{"gitId":"Derekljh"},"content":"AddressBookParser --\u003e LogicManager","lastModifiedDate":"2024-03-22"},{"lineNumber":43,"author":{"gitId":"Derekljh"},"content":"deactivate AddressBookParser","lastModifiedDate":"2024-03-22"},{"lineNumber":44,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":45,"author":{"gitId":"Derekljh"},"content":"LogicManager -\u003e TagCommand: execute(m)","lastModifiedDate":"2024-03-22"},{"lineNumber":46,"author":{"gitId":"Derekljh"},"content":"activate TagCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":47,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":48,"author":{"gitId":"Derekljh"},"content":"TagCommand -\u003e Model : setPerson(personToTag, taggedPerson)","lastModifiedDate":"2024-03-22"},{"lineNumber":49,"author":{"gitId":"Derekljh"},"content":"activate Model","lastModifiedDate":"2024-03-22"},{"lineNumber":50,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":51,"author":{"gitId":"Derekljh"},"content":"Model --\u003e TagCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":52,"author":{"gitId":"Derekljh"},"content":"deactivate Model","lastModifiedDate":"2024-03-22"},{"lineNumber":53,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":54,"author":{"gitId":"Derekljh"},"content":"create CommandResult","lastModifiedDate":"2024-03-22"},{"lineNumber":55,"author":{"gitId":"Derekljh"},"content":"TagCommand -\u003e CommandResult","lastModifiedDate":"2024-03-22"},{"lineNumber":56,"author":{"gitId":"Derekljh"},"content":"activate CommandResult","lastModifiedDate":"2024-03-22"},{"lineNumber":57,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":58,"author":{"gitId":"Derekljh"},"content":"CommandResult --\u003e TagCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":59,"author":{"gitId":"Derekljh"},"content":"deactivate CommandResult","lastModifiedDate":"2024-03-22"},{"lineNumber":60,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":61,"author":{"gitId":"Derekljh"},"content":"TagCommand --\u003e LogicManager","lastModifiedDate":"2024-03-22"},{"lineNumber":62,"author":{"gitId":"Derekljh"},"content":"deactivate TagCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":63,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":64,"author":{"gitId":"Derekljh"},"content":"\u003c-- LogicManager","lastModifiedDate":"2024-03-22"},{"lineNumber":65,"author":{"gitId":"Derekljh"},"content":"deactivate LogicManager","lastModifiedDate":"2024-03-22"},{"lineNumber":66,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":67,"author":{"gitId":"Derekljh"},"content":"@enduml","lastModifiedDate":"2024-03-22"}],"authorContributionMap":{"Derekljh":67}},{"path":"docs/index.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"miffi"},"content":"title: OfficeHarbor","lastModifiedDate":"2024-02-24"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"[![CI Status](https://github.com/se-edu/addressbook-level3/workflows/Java%20CI/badge.svg)](https://github.com/se-edu/addressbook-level3/actions)","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"[![codecov](https://codecov.io/gh/se-edu/addressbook-level3/branch/master/graph/badge.svg)](https://codecov.io/gh/se-edu/addressbook-level3)","lastModifiedDate":"2020-08-07"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"miffi"},"content":"**OfficeHarbor is a desktop application for managing a tech firm\u0027s teams.** While it has a GUI, most of the user interactions happen using a CLI (Command Line Interface).","lastModifiedDate":"2024-02-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"miffi"},"content":"* If you are interested in using OfficeHarbor, head over to the [_Quick Start_ section of the **User Guide**](UserGuide.html#quick-start).","lastModifiedDate":"2024-02-24"},{"lineNumber":14,"author":{"gitId":"miffi"},"content":"* If you are interested about developing OfficeHarbor, the [**Developer Guide**](DeveloperGuide.html) is a good place to start.","lastModifiedDate":"2024-02-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"**Acknowledgements**","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"* Libraries used: [JavaFX](https://openjfx.io/), [Jackson](https://github.com/FasterXML/jackson), [JUnit5](https://github.com/junit-team/junit5)","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"miffi":4,"-":15}},{"path":"src/main/java/seedu/address/commons/util/InvalidationListenerManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"radeon2525"},"content":"package seedu.address.commons.util;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"radeon2525"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"radeon2525"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"radeon2525"},"content":"import javafx.beans.InvalidationListener;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"radeon2525"},"content":"import javafx.beans.Observable;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"radeon2525"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"radeon2525"},"content":" * Manages a list of {@link InvalidationListener}.","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"radeon2525"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"radeon2525"},"content":"public class InvalidationListenerManager {","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"radeon2525"},"content":" public final ArrayList\u003cInvalidationListener\u003e listeners \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"radeon2525"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"radeon2525"},"content":" * Adds {@code listener} to the list of listeners.","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"radeon2525"},"content":" * If the same listener is added more that once, then it will be notified more than once.","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"radeon2525"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"radeon2525"},"content":" public void addListener(InvalidationListener listener) {","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"radeon2525"},"content":" requireNonNull(listener);","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"radeon2525"},"content":" listeners.add(listener);","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"radeon2525"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"radeon2525"},"content":" * Calls {@link InvalidationListener#invalidated(Observable)} on all added listeners.","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"radeon2525"},"content":" * Any modifications to the listeners list during the invocation of this method","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"radeon2525"},"content":" * will only take effect on the next invocation of this method.","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"radeon2525"},"content":" *","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"radeon2525"},"content":" * @param observable The {@code Observable} that became invalid.","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"radeon2525"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"radeon2525"},"content":" public void callListeners(Observable observable) {","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"radeon2525"},"content":" // Make a copy of listeners such that any modifications to the listeners list during","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"radeon2525"},"content":" // the invocation of this method will only take effect on the next invocation of this method.","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"radeon2525"},"content":" ArrayList\u003cInvalidationListener\u003e listenersCopy \u003d new ArrayList\u003c\u003e(listeners);","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"radeon2525"},"content":" for (InvalidationListener listener : listenersCopy) {","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"radeon2525"},"content":" listener.invalidated(observable);","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"radeon2525"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"radeon2525"},"content":" * Removes {@code listener} from the list of listeners.","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"radeon2525"},"content":" * If the given listener was not previously added, then this method call is a no-op.","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"radeon2525"},"content":" * If the given listener was added more than once, then only the first occurrence in the list will be removed.","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"radeon2525"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"radeon2525"},"content":" public void removeListener(InvalidationListener listener) {","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"radeon2525"},"content":" requireNonNull(listener);","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"radeon2525"},"content":" listeners.remove(listener);","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"radeon2525"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"radeon2525":50}},{"path":"src/main/java/seedu/address/logic/CommandHistory.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"radeon2525"},"content":"package seedu.address.logic;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"radeon2525"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"radeon2525"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"radeon2525"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"radeon2525"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"radeon2525"},"content":" * Stores the history of commands executed.","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"radeon2525"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"radeon2525"},"content":"public class CommandHistory {","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"radeon2525"},"content":" private final ObservableList\u003cString\u003e userInputHistory \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"radeon2525"},"content":" private final ObservableList\u003cString\u003e unmodifiableUserInputHistory \u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"radeon2525"},"content":" FXCollections.unmodifiableObservableList(userInputHistory);","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"radeon2525"},"content":" public CommandHistory() {}","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"radeon2525"},"content":" public CommandHistory(CommandHistory commandHistory) {","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"radeon2525"},"content":" userInputHistory.addAll(commandHistory.userInputHistory);","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"radeon2525"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"radeon2525"},"content":" * Appends {@code userInput} to the list of user input entered.","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"radeon2525"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"radeon2525"},"content":" public void add(String userInput) {","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"radeon2525"},"content":" requireNonNull(userInput);","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"radeon2525"},"content":" userInputHistory.add(userInput);","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"radeon2525"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"radeon2525"},"content":" * Returns an unmodifiable view of {@code userInputHistory}.","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"radeon2525"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"radeon2525"},"content":" public ObservableList\u003cString\u003e getHistory() {","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"radeon2525"},"content":" return unmodifiableUserInputHistory;","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"radeon2525"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"radeon2525"},"content":" public boolean equals(Object obj) {","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"radeon2525"},"content":" // short circuit if same object","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"radeon2525"},"content":" if (obj \u003d\u003d this) {","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"radeon2525"},"content":" return true;","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"radeon2525"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"radeon2525"},"content":" if (!(obj instanceof CommandHistory)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"radeon2525"},"content":" return false;","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"radeon2525"},"content":" // state check","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"radeon2525"},"content":" CommandHistory other \u003d (CommandHistory) obj;","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"radeon2525"},"content":" return userInputHistory.equals(other.userInputHistory);","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"radeon2525"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"radeon2525"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"radeon2525"},"content":" return userInputHistory.hashCode();","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"radeon2525"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"radeon2525":58}},{"path":"src/main/java/seedu/address/logic/LogicManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2016-09-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.AddressBookParser;","lastModifiedDate":"2017-07-07"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.storage.Storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * The main LogicManager of the app.","lastModifiedDate":"2016-09-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class LogicManager implements Logic {","lastModifiedDate":"2018-12-09"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_ERROR_FORMAT \u003d \"Could not save data due to the following error: %s\";","lastModifiedDate":"2023-06-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_PERMISSION_ERROR_FORMAT \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \"Could not save data to file %s due to insufficient permissions to write to the file or the folder.\";","lastModifiedDate":"2023-06-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(LogicManager.class);","lastModifiedDate":"2016-09-29"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final Model model;","lastModifiedDate":"2016-09-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final Storage storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final AddressBookParser addressBookParser;","lastModifiedDate":"2017-07-07"},{"lineNumber":35,"author":{"gitId":"radeon2525"},"content":" private final CommandHistory history;","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Constructs a {@code LogicManager} with the given {@code Model} and {@code Storage}.","lastModifiedDate":"2020-05-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public LogicManager(Model model, Storage storage) {","lastModifiedDate":"2018-12-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.model \u003d model;","lastModifiedDate":"2016-09-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.storage \u003d storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":" addressBookParser \u003d new AddressBookParser();","lastModifiedDate":"2018-01-25"},{"lineNumber":44,"author":{"gitId":"radeon2525"},"content":" history \u003d new CommandHistory();","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public CommandResult execute(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":49,"author":{"gitId":"-"},"content":" logger.info(\"----------------[USER COMMAND][\" + commandText + \"]\");","lastModifiedDate":"2016-09-29"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":" CommandResult commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":" Command command \u003d addressBookParser.parseCommand(commandText);","lastModifiedDate":"2017-07-07"},{"lineNumber":53,"author":{"gitId":"radeon2525"},"content":" commandResult \u003d command.execute(model, history);","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":55,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":56,"author":{"gitId":"-"},"content":" storage.saveAddressBook(model.getAddressBook());","lastModifiedDate":"2018-12-09"},{"lineNumber":57,"author":{"gitId":"-"},"content":" } catch (AccessDeniedException e) {","lastModifiedDate":"2023-06-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_PERMISSION_ERROR_FORMAT, e.getMessage()), e);","lastModifiedDate":"2023-06-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2018-12-09"},{"lineNumber":60,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_ERROR_FORMAT, ioe.getMessage()), ioe);","lastModifiedDate":"2023-06-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-03"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2018-12-03"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return model.getAddressBook();","lastModifiedDate":"2018-12-03"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-03"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return model.getFilteredPersonList();","lastModifiedDate":"2016-09-25"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-29"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":" return model.getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":" return model.getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" model.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"radeon2525":3,"-":87}},{"path":"src/main/java/seedu/address/logic/Messages.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2023-07-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-07-14"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-07-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2023-07-14"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Container for user visible messages.","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class Messages {","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2016-09-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_PERSON_DISPLAYED_INDEX \u003d \"The person index provided is invalid\";","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String MESSAGE_PERSONS_LISTED_OVERVIEW \u003d \"%1$d persons listed!\";","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2023-07-14"},{"lineNumber":21,"author":{"gitId":"miffi"},"content":" public static final String MESSAGE_MISSING_TAG \u003d","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"miffi"},"content":" \"Tags [%2$s] not found for %1$s\";","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-07-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2023-07-14"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2023-07-14"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":31,"author":{"gitId":"-"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-07-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Formats the {@code person} for display to the user.","lastModifiedDate":"2019-02-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static String format(Person person) {","lastModifiedDate":"2019-02-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" builder.append(person.getName())","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" .append(\"; Phone: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" .append(person.getPhone())","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" .append(\"; Email: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" .append(person.getEmail())","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" .append(\"; Address: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" .append(person.getAddress())","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" .append(\"; Tags: \");","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" person.getTags().forEach(builder::append);","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"miffi":2,"-":51}},{"path":"src/main/java/seedu/address/logic/commands/AddCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":11,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-01-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"add\";","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a person to the address book. \"","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2017-06-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2017-06-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2017-05-09"},{"lineNumber":27,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2017-05-09"},{"lineNumber":28,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"ADDRESS \"","lastModifiedDate":"2017-05-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2017-06-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":33,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2017-05-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"311, Clementi Ave 2, #02-25 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"friends \"","lastModifiedDate":"2017-05-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"owesMoney\";","lastModifiedDate":"2017-05-09"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New person added: %1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book\";","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private final Person toAdd;","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2018-01-10"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public AddCommand(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":46,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":47,"author":{"gitId":"-"},"content":" toAdd \u003d person;","lastModifiedDate":"2018-01-10"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"radeon2525"},"content":" public CommandResult execute(Model model, CommandHistory history) throws CommandException {","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (model.hasPerson(toAdd)) {","lastModifiedDate":"2018-08-07"},{"lineNumber":55,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":58,"author":{"gitId":"-"},"content":" model.addPerson(toAdd);","lastModifiedDate":"2016-09-25"},{"lineNumber":59,"author":{"gitId":"radeon2525"},"content":" model.commitAddressBook();","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"radeon2525"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, toAdd));","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-22"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" if (!(other instanceof AddCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" AddCommand otherAddCommand \u003d (AddCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2023-07-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"radeon2525":4,"-":80}},{"path":"src/main/java/seedu/address/logic/commands/ClearCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-22"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * Clears the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class ClearCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"clear\";","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Address book has been cleared!\";","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"radeon2525"},"content":" public CommandResult execute(Model model, CommandHistory history) {","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15"},{"lineNumber":21,"author":{"gitId":"-"},"content":" model.setAddressBook(new AddressBook());","lastModifiedDate":"2018-11-27"},{"lineNumber":22,"author":{"gitId":"radeon2525"},"content":" model.commitAddressBook();","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"radeon2525":3,"-":22}},{"path":"src/main/java/seedu/address/logic/commands/Command.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Represents a command with hidden internal logic and the ability to be executed.","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public abstract class Command {","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Executes the command and returns the result message.","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * @param model {@code Model} which the command should operate on.","lastModifiedDate":"2018-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * @return feedback message of the operation result for display","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2017-02-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"radeon2525"},"content":" public abstract CommandResult execute(Model model, CommandHistory history) throws CommandException;","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"radeon2525":2,"-":18}},{"path":"src/main/java/seedu/address/logic/commands/DeleteCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-09-01"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Deletes a person identified using it\u0027s displayed index from the address book.","lastModifiedDate":"2018-04-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"delete\";","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" + \": Deletes the person identified by the index number used in the displayed person list.\\n\"","lastModifiedDate":"2018-04-01"},{"lineNumber":24,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer)\\n\"","lastModifiedDate":"2016-09-29"},{"lineNumber":25,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DELETE_PERSON_SUCCESS \u003d \"Deleted Person: %1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private final Index targetIndex;","lastModifiedDate":"2017-06-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public DeleteCommand(Index targetIndex) {","lastModifiedDate":"2017-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2016-09-22"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"radeon2525"},"content":" public CommandResult execute(Model model, CommandHistory history) throws CommandException {","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":44,"author":{"gitId":"-"},"content":" Person personToDelete \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2018-04-19"},{"lineNumber":45,"author":{"gitId":"-"},"content":" model.deletePerson(personToDelete);","lastModifiedDate":"2016-09-25"},{"lineNumber":46,"author":{"gitId":"radeon2525"},"content":" model.commitAddressBook();","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_PERSON_SUCCESS, Messages.format(personToDelete)));","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" if (!(other instanceof DeleteCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":61,"author":{"gitId":"The-Dudeski"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"-"},"content":" DeleteCommand otherDeleteCommand \u003d (DeleteCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return targetIndex.equals(otherDeleteCommand.targetIndex);","lastModifiedDate":"2023-07-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2019-02-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"The-Dudeski":1,"radeon2525":3,"-":68}},{"path":"src/main/java/seedu/address/logic/commands/EditCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-12-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-01-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-01-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2016-12-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":21,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-26"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":32,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Edits the details of an existing person in the address book.","lastModifiedDate":"2016-12-26"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":35,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2016-12-26"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the person identified \"","lastModifiedDate":"2016-12-26"},{"lineNumber":40,"author":{"gitId":"-"},"content":" + \"by the index number used in the displayed person list. \"","lastModifiedDate":"2018-04-01"},{"lineNumber":41,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26"},{"lineNumber":42,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2017-06-06"},{"lineNumber":43,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06"},{"lineNumber":44,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":45,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":46,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"91234567 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2017-05-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Person: %1$s\";","lastModifiedDate":"2016-12-26"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2016-12-26"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book.\";","lastModifiedDate":"2016-12-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2017-05-25"},{"lineNumber":57,"author":{"gitId":"-"},"content":" private final EditPersonDescriptor editPersonDescriptor;","lastModifiedDate":"2016-12-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit","lastModifiedDate":"2017-05-25"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * @param editPersonDescriptor details to edit the person with","lastModifiedDate":"2016-12-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public EditCommand(Index index, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2017-05-25"},{"lineNumber":64,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25"},{"lineNumber":65,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2017-05-15"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25"},{"lineNumber":68,"author":{"gitId":"-"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2016-12-26"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26"},{"lineNumber":72,"author":{"gitId":"radeon2525"},"content":" public CommandResult execute(Model model, CommandHistory history) throws CommandException {","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19"},{"lineNumber":77,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2018-04-19"},{"lineNumber":81,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2018-04-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2018-08-07"},{"lineNumber":84,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":87,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":88,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":89,"author":{"gitId":"radeon2525"},"content":" model.commitAddressBook();","lastModifiedDate":"2024-03-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson)));","lastModifiedDate":"2019-02-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":93,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2016-12-26"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2016-12-26"},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":97,"author":{"gitId":"-"},"content":" private static Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2018-01-10"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2016-12-26"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":100,"author":{"gitId":"-"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(personToEdit.getName());","lastModifiedDate":"2017-06-21"},{"lineNumber":101,"author":{"gitId":"-"},"content":" Phone updatedPhone \u003d editPersonDescriptor.getPhone().orElse(personToEdit.getPhone());","lastModifiedDate":"2017-06-21"},{"lineNumber":102,"author":{"gitId":"-"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2017-06-21"},{"lineNumber":103,"author":{"gitId":"-"},"content":" Address updatedAddress \u003d editPersonDescriptor.getAddress().orElse(personToEdit.getAddress());","lastModifiedDate":"2017-06-21"},{"lineNumber":104,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e updatedTags \u003d editPersonDescriptor.getTags().orElse(personToEdit.getTags());","lastModifiedDate":"2017-06-21"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":106,"author":{"gitId":"-"},"content":" return new Person(updatedName, updatedPhone, updatedEmail, updatedAddress, updatedTags);","lastModifiedDate":"2017-03-14"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08"},{"lineNumber":110,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08"},{"lineNumber":111,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08"},{"lineNumber":112,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":121,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13"},{"lineNumber":122,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":125,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":134,"author":{"gitId":"-"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2016-12-26"},{"lineNumber":135,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26"},{"lineNumber":136,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":137,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26"},{"lineNumber":138,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21"},{"lineNumber":139,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":140,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21"},{"lineNumber":141,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-06-21"},{"lineNumber":142,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":144,"author":{"gitId":"-"},"content":" public EditPersonDescriptor() {}","lastModifiedDate":"2016-12-26"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":146,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":147,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11"},{"lineNumber":148,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":149,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":150,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26"},{"lineNumber":151,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15"},{"lineNumber":152,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15"},{"lineNumber":153,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15"},{"lineNumber":154,"author":{"gitId":"-"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2018-01-15"},{"lineNumber":155,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11"},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":158,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":159,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26"},{"lineNumber":160,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":161,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26"},{"lineNumber":162,"author":{"gitId":"-"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, address, tags);","lastModifiedDate":"2018-08-14"},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":165,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21"},{"lineNumber":166,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21"},{"lineNumber":167,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":169,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26"},{"lineNumber":170,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21"},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":173,"author":{"gitId":"-"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2017-06-21"},{"lineNumber":174,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":177,"author":{"gitId":"-"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26"},{"lineNumber":178,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2017-06-21"},{"lineNumber":179,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":181,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2017-06-21"},{"lineNumber":182,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-06-21"},{"lineNumber":183,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":185,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26"},{"lineNumber":186,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21"},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":189,"author":{"gitId":"-"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2017-06-21"},{"lineNumber":190,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-06-21"},{"lineNumber":191,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":193,"author":{"gitId":"-"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2016-12-26"},{"lineNumber":194,"author":{"gitId":"-"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2017-06-21"},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":197,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":198,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2018-01-11"},{"lineNumber":199,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":200,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":201,"author":{"gitId":"-"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-06-21"},{"lineNumber":202,"author":{"gitId":"-"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2018-01-11"},{"lineNumber":203,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":205,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":206,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11"},{"lineNumber":207,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11"},{"lineNumber":208,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11"},{"lineNumber":209,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":210,"author":{"gitId":"-"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":211,"author":{"gitId":"-"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2018-01-11"},{"lineNumber":212,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":214,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05"},{"lineNumber":215,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05"},{"lineNumber":216,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05"},{"lineNumber":217,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05"},{"lineNumber":218,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":220,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05"},{"lineNumber":221,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05"},{"lineNumber":222,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05"},{"lineNumber":223,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":225,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":226,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":227,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":228,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":229,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(address, otherEditPersonDescriptor.address)","lastModifiedDate":"2023-07-13"},{"lineNumber":230,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(tags, otherEditPersonDescriptor.tags);","lastModifiedDate":"2023-07-13"},{"lineNumber":231,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":234,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":244,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26"}],"authorContributionMap":{"radeon2525":3,"-":241}},{"path":"src/main/java/seedu/address/logic/commands/ExitCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":3,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-22"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * Terminates the program.","lastModifiedDate":"2016-09-22"},{"lineNumber":8,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2016-09-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"exit\";","lastModifiedDate":"2016-09-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final String MESSAGE_EXIT_ACKNOWLEDGEMENT \u003d \"Exiting Address Book as requested ...\";","lastModifiedDate":"2016-09-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-22"},{"lineNumber":16,"author":{"gitId":"radeon2525"},"content":" public CommandResult execute(Model model, CommandHistory history) {","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"-"},"content":" return new CommandResult(MESSAGE_EXIT_ACKNOWLEDGEMENT, false, true);","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":20,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22"}],"authorContributionMap":{"radeon2525":2,"-":18}},{"path":"src/main/java/seedu/address/logic/commands/FindCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":6,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Finds and lists all persons in address book whose name contains any of the argument keywords.","lastModifiedDate":"2016-09-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * Keyword matching is case insensitive.","lastModifiedDate":"2018-04-01"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class FindCommand extends Command {","lastModifiedDate":"2016-09-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"find\";","lastModifiedDate":"2016-09-22"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Finds all persons whose names contain any of \"","lastModifiedDate":"2016-09-22"},{"lineNumber":20,"author":{"gitId":"-"},"content":" + \"the specified keywords (case-insensitive) and displays them as a list with index numbers.\\n\"","lastModifiedDate":"2018-04-01"},{"lineNumber":21,"author":{"gitId":"-"},"content":" + \"Parameters: KEYWORD [MORE_KEYWORDS]...\\n\"","lastModifiedDate":"2016-09-22"},{"lineNumber":22,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" alice bob charlie\";","lastModifiedDate":"2016-09-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final NameContainsKeywordsPredicate predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public FindCommand(NameContainsKeywordsPredicate predicate) {","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-22"},{"lineNumber":31,"author":{"gitId":"radeon2525"},"content":" public CommandResult execute(Model model, CommandHistory history) {","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(predicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":" return new CommandResult(","lastModifiedDate":"2018-04-01"},{"lineNumber":35,"author":{"gitId":"-"},"content":" String.format(Messages.MESSAGE_PERSONS_LISTED_OVERVIEW, model.getFilteredPersonList().size()));","lastModifiedDate":"2018-04-01"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" if (!(other instanceof FindCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" FindCommand otherFindCommand \u003d (FindCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" return predicate.equals(otherFindCommand.predicate);","lastModifiedDate":"2023-07-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" .add(\"predicate\", predicate)","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22"}],"authorContributionMap":{"radeon2525":2,"-":57}},{"path":"src/main/java/seedu/address/logic/commands/HelpCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-31"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * Format full help instructions for every command for display.","lastModifiedDate":"2016-08-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class HelpCommand extends Command {","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"help\";","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Shows program usage instructions.\\n\"","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD;","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String SHOWING_HELP_MESSAGE \u003d \"Opened help window.\";","lastModifiedDate":"2016-08-31"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-31"},{"lineNumber":18,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"radeon2525"},"content":" public CommandResult execute(Model model, CommandHistory history) {","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":" return new CommandResult(SHOWING_HELP_MESSAGE, true, false);","lastModifiedDate":"2018-12-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"radeon2525":2,"-":20}},{"path":"src/main/java/seedu/address/logic/commands/ListCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * Lists all persons in the address book to the user.","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2016-09-21"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"list\";","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"JukeBoxK"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Listed all contacts\";","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"JukeBoxK"},"content":" public static final String MESSAGE_EMPTY \u003d \"The list is empty\";","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"radeon2525"},"content":" public CommandResult execute(Model model, CommandHistory history) {","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":23,"author":{"gitId":"JukeBoxK"},"content":" if (model.getFilteredPersonList().size() \u003d\u003d 0) {","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"JukeBoxK"},"content":" return new CommandResult(MESSAGE_EMPTY);","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"JukeBoxK"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2016-09-22"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"radeon2525":2,"JukeBoxK":5,"-":21}},{"path":"src/main/java/seedu/address/logic/commands/RedoCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"radeon2525"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"radeon2525"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"radeon2525"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"radeon2525"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"radeon2525"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"radeon2525"},"content":" * Reverts the {@code model}\u0027s address book to its previously undone state.","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"radeon2525"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"radeon2525"},"content":"public class RedoCommand extends Command {","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"radeon2525"},"content":" public static final String COMMAND_WORD \u003d \"redo\";","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"radeon2525"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Redo success!\";","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"radeon2525"},"content":" public static final String MESSAGE_FAILURE \u003d \"No more commands to redo!\";","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"radeon2525"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"radeon2525"},"content":" public CommandResult execute(Model model, CommandHistory history) throws CommandException {","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"radeon2525"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"radeon2525"},"content":" if (!model.canRedoAddressBook()) {","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"radeon2525"},"content":" throw new CommandException(MESSAGE_FAILURE);","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"radeon2525"},"content":" model.redoAddressBook();","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"radeon2525"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"radeon2525"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"radeon2525"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"radeon2525":31}},{"path":"src/main/java/seedu/address/logic/commands/TagCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"radeon2525"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"Derekljh"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"Derekljh"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"Derekljh"},"content":"import java.util.Collection;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"Derekljh"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"Derekljh"},"content":"import java.util.List;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"Derekljh"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"Derekljh"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"Derekljh"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"Derekljh"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"Derekljh"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"radeon2525"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"radeon2525"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"radeon2525"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"radeon2525"},"content":"/**","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"radeon2525"},"content":" * Tags a contact identified using its displayed index in the address book.","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"radeon2525"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"radeon2525"},"content":"public class TagCommand extends Command {","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"radeon2525"},"content":" public static final String COMMAND_WORD \u003d \"tag\";","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"radeon2525"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-11"},{"lineNumber":29,"author":{"gitId":"Derekljh"},"content":" + \": Tags the contact identified by the index number\"","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"Derekljh"},"content":" + \" used in the displayed contact list with the specified tag.\\n\"","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"Derekljh"},"content":" + \"Parameters: INDEX (must be a positive integer) tag: TAG\\n\"","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"Derekljh"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 tag: friends\";","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"radeon2525"},"content":" public static final String MESSAGE_TAG_CONTACT_SUCCESS \u003d \"Tagged Contact: %1$s with %2$s\";","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"Derekljh"},"content":" private final Index targetIndex;","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"Derekljh"},"content":" private final Set\u003cTag\u003e tags;","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"Derekljh"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"Derekljh"},"content":" * Creates a command to add a {@code tag} to the person at {@code index}.","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"Derekljh"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"Derekljh"},"content":" public TagCommand(Index index, Collection\u003cTag\u003e tags) {","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"Derekljh"},"content":" this.targetIndex \u003d index;","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"Derekljh"},"content":" this.tags \u003d new HashSet\u003c\u003e(tags);","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"radeon2525"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"radeon2525"},"content":" public CommandResult execute(Model model, CommandHistory history) throws CommandException {","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"Derekljh"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-13"},{"lineNumber":51,"author":{"gitId":"radeon2525"},"content":" requireNonNull(history);","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"Derekljh"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-03-13"},{"lineNumber":54,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":55,"author":{"gitId":"Derekljh"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"Derekljh"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-13"},{"lineNumber":57,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":58,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":59,"author":{"gitId":"Derekljh"},"content":" Person personToTag \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":61,"author":{"gitId":"Derekljh"},"content":" Person taggedPerson \u003d addTag(personToTag);","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"radeon2525"},"content":" model.setPerson(personToTag, taggedPerson);","lastModifiedDate":"2024-03-11"},{"lineNumber":63,"author":{"gitId":"Derekljh"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-13"},{"lineNumber":64,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"radeon2525"},"content":" // Construct the command result message with the tag information","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"radeon2525"},"content":" String tagInfo \u003d String.format(MESSAGE_TAG_CONTACT_SUCCESS,","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"radeon2525"},"content":" Messages.format(taggedPerson), showTags(tags));","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"radeon2525"},"content":" CommandResult result \u003d new CommandResult(tagInfo);","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"radeon2525"},"content":" // Add the executed command to the command history","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"radeon2525"},"content":" history.add(String.valueOf(this));","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"radeon2525"},"content":" model.commitAddressBook();","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"radeon2525"},"content":" return result;","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"radeon2525"},"content":" static String showTags(Collection\u003cTag\u003e tags) {","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"Derekljh"},"content":" return tags.stream().map((tag) -\u003e tag.tagName)","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"Derekljh"},"content":" .sorted() // making the output order deterministic","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"Derekljh"},"content":" .collect(Collectors.joining(\", \"));","lastModifiedDate":"2024-03-17"},{"lineNumber":82,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":83,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":84,"author":{"gitId":"Derekljh"},"content":" private Person addTag(Person personToTag) {","lastModifiedDate":"2024-03-16"},{"lineNumber":85,"author":{"gitId":"Derekljh"},"content":" HashSet\u003cTag\u003e personTags \u003d new HashSet\u003c\u003e(personToTag.getTags());","lastModifiedDate":"2024-03-16"},{"lineNumber":86,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":87,"author":{"gitId":"Derekljh"},"content":" personTags.addAll(tags);","lastModifiedDate":"2024-03-16"},{"lineNumber":88,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":89,"author":{"gitId":"Derekljh"},"content":" return new Person(","lastModifiedDate":"2024-03-16"},{"lineNumber":90,"author":{"gitId":"Derekljh"},"content":" personToTag.getName(),","lastModifiedDate":"2024-03-16"},{"lineNumber":91,"author":{"gitId":"Derekljh"},"content":" personToTag.getPhone(),","lastModifiedDate":"2024-03-16"},{"lineNumber":92,"author":{"gitId":"Derekljh"},"content":" personToTag.getEmail(),","lastModifiedDate":"2024-03-16"},{"lineNumber":93,"author":{"gitId":"Derekljh"},"content":" personToTag.getAddress(),","lastModifiedDate":"2024-03-16"},{"lineNumber":94,"author":{"gitId":"Derekljh"},"content":" personTags);","lastModifiedDate":"2024-03-16"},{"lineNumber":95,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":96,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":97,"author":{"gitId":"radeon2525"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":98,"author":{"gitId":"radeon2525"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-11"},{"lineNumber":99,"author":{"gitId":"Derekljh"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-16"},{"lineNumber":100,"author":{"gitId":"Derekljh"},"content":" return true;","lastModifiedDate":"2024-03-16"},{"lineNumber":101,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":102,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":103,"author":{"gitId":"Derekljh"},"content":" if (!(other instanceof TagCommand)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":104,"author":{"gitId":"Derekljh"},"content":" return false;","lastModifiedDate":"2024-03-16"},{"lineNumber":105,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":106,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":107,"author":{"gitId":"Derekljh"},"content":" TagCommand otherTagCommand \u003d (TagCommand) other;","lastModifiedDate":"2024-03-16"},{"lineNumber":108,"author":{"gitId":"Derekljh"},"content":" return targetIndex.equals(otherTagCommand.targetIndex)","lastModifiedDate":"2024-03-16"},{"lineNumber":109,"author":{"gitId":"Derekljh"},"content":" \u0026\u0026 tags.equals(otherTagCommand.tags);","lastModifiedDate":"2024-03-16"},{"lineNumber":110,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":111,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":112,"author":{"gitId":"Derekljh"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":113,"author":{"gitId":"Derekljh"},"content":" public String toString() {","lastModifiedDate":"2024-03-16"},{"lineNumber":114,"author":{"gitId":"Derekljh"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-16"},{"lineNumber":115,"author":{"gitId":"Derekljh"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2024-03-16"},{"lineNumber":116,"author":{"gitId":"Derekljh"},"content":" .add(\"tag\", tags)","lastModifiedDate":"2024-03-16"},{"lineNumber":117,"author":{"gitId":"Derekljh"},"content":" .toString();","lastModifiedDate":"2024-03-16"},{"lineNumber":118,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":119,"author":{"gitId":"radeon2525"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"Derekljh":72,"radeon2525":47}},{"path":"src/main/java/seedu/address/logic/commands/UndoCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"radeon2525"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"radeon2525"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"radeon2525"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"radeon2525"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"radeon2525"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"radeon2525"},"content":" * Reverts the {@code model}\u0027s address book to its previous state.","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"radeon2525"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"radeon2525"},"content":"public class UndoCommand extends Command {","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"radeon2525"},"content":" public static final String COMMAND_WORD \u003d \"undo\";","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"radeon2525"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Undo success!\";","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"radeon2525"},"content":" public static final String MESSAGE_FAILURE \u003d \"No more commands to undo!\";","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"radeon2525"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"radeon2525"},"content":" public CommandResult execute(Model model, CommandHistory history) throws CommandException {","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"radeon2525"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"radeon2525"},"content":" if (!model.canUndoAddressBook()) {","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"radeon2525"},"content":" throw new CommandException(MESSAGE_FAILURE);","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"radeon2525"},"content":" model.undoAddressBook();","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"radeon2525"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"radeon2525"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"radeon2525"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"radeon2525":31}},{"path":"src/main/java/seedu/address/logic/commands/UntagCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"miffi"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"miffi"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"miffi"},"content":"import java.util.Collection;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"miffi"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"miffi"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"miffi"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"miffi"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"miffi"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"miffi"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"miffi"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"miffi"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"miffi"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"miffi"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"miffi"},"content":" * Deletes a tag from a person with its displayed index.","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"miffi"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"miffi"},"content":"public class UntagCommand extends Command {","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"miffi"},"content":" public static final String COMMAND_WORD \u003d \"untag\";","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"miffi"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"miffi"},"content":" + \": Deletes the tag from contact identified by the index number used in the displayed contact list.\\n\"","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"Derekljh"},"content":" + \"Parameters: INDEX (must be a positive integer) tag: TAG... (can take multiple tags)\\n\"","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"Derekljh"},"content":" + \"Example: \" + COMMAND_WORD + \"1 tag: friends\";","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"miffi"},"content":" public static final String MESSAGE_DELETE_TAG_SUCCESS \u003d \"Deleted tag %2$s from %1$s\";","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"miffi"},"content":" private final Index index;","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"miffi"},"content":" private final Set\u003cTag\u003e tags;","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"miffi"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"miffi"},"content":" * Creates a command to delete a {@code tag} from the person at {@code index}.","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"miffi"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"miffi"},"content":" public UntagCommand(Index index, Collection\u003cTag\u003e tags) {","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"miffi"},"content":" this.index \u003d index;","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"miffi"},"content":" this.tags \u003d new HashSet\u003c\u003e(tags);","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"miffi"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"miffi"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"radeon2525"},"content":" public CommandResult execute(Model model, CommandHistory history) throws CommandException {","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"miffi"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"miffi"},"content":" var lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"miffi"},"content":" if (index.getZeroBased() \u003e lastShownList.size()) {","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"miffi"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"miffi"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"miffi"},"content":" var personToUntag \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"miffi"},"content":" var untaggedPerson \u003d untag(personToUntag);","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"miffi"},"content":" model.setPerson(personToUntag, untaggedPerson);","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"miffi"},"content":" model.updateFilteredPersonList(Model.PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"radeon2525"},"content":" model.commitAddressBook();","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"miffi"},"content":" return new CommandResult(String.format(","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"miffi"},"content":" MESSAGE_DELETE_TAG_SUCCESS,","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"miffi"},"content":" Messages.format(untaggedPerson),","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"miffi"},"content":" showTags(tags)));","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"miffi"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"miffi"},"content":" private Person untag(Person personToUntag) throws CommandException {","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"miffi"},"content":" var personTags \u003d new HashSet\u003cTag\u003e(personToUntag.getTags());","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"miffi"},"content":" validateAllTagsExist(personToUntag, personTags);","lastModifiedDate":"2024-03-16"},{"lineNumber":66,"author":{"gitId":"miffi"},"content":" personTags.removeAll(tags);","lastModifiedDate":"2024-03-16"},{"lineNumber":67,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":68,"author":{"gitId":"miffi"},"content":" return new Person(","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"miffi"},"content":" personToUntag.getName(),","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"miffi"},"content":" personToUntag.getPhone(),","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"miffi"},"content":" personToUntag.getEmail(),","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"miffi"},"content":" personToUntag.getAddress(),","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"miffi"},"content":" personTags);","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"miffi"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":75,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":76,"author":{"gitId":"miffi"},"content":" private void validateAllTagsExist(Person personToUntag, HashSet\u003cTag\u003e personTags) throws CommandException {","lastModifiedDate":"2024-03-16"},{"lineNumber":77,"author":{"gitId":"miffi"},"content":" var missingTagNames \u003d tags","lastModifiedDate":"2024-03-16"},{"lineNumber":78,"author":{"gitId":"miffi"},"content":" .stream()","lastModifiedDate":"2024-03-16"},{"lineNumber":79,"author":{"gitId":"miffi"},"content":" .filter((tag) -\u003e !personTags.contains(tag))","lastModifiedDate":"2024-03-16"},{"lineNumber":80,"author":{"gitId":"miffi"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2024-03-16"},{"lineNumber":81,"author":{"gitId":"miffi"},"content":" if (!missingTagNames.isEmpty()) {","lastModifiedDate":"2024-03-16"},{"lineNumber":82,"author":{"gitId":"miffi"},"content":" throw new CommandException(","lastModifiedDate":"2024-03-16"},{"lineNumber":83,"author":{"gitId":"miffi"},"content":" String.format(","lastModifiedDate":"2024-03-16"},{"lineNumber":84,"author":{"gitId":"miffi"},"content":" Messages.MESSAGE_MISSING_TAG,","lastModifiedDate":"2024-03-16"},{"lineNumber":85,"author":{"gitId":"miffi"},"content":" personToUntag.getName(),","lastModifiedDate":"2024-03-16"},{"lineNumber":86,"author":{"gitId":"miffi"},"content":" showTags(missingTagNames)));","lastModifiedDate":"2024-03-16"},{"lineNumber":87,"author":{"gitId":"miffi"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":88,"author":{"gitId":"miffi"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":89,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":90,"author":{"gitId":"miffi"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":91,"author":{"gitId":"miffi"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-16"},{"lineNumber":92,"author":{"gitId":"miffi"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-16"},{"lineNumber":93,"author":{"gitId":"miffi"},"content":" return true;","lastModifiedDate":"2024-03-16"},{"lineNumber":94,"author":{"gitId":"miffi"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":95,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":96,"author":{"gitId":"miffi"},"content":" if (other instanceof UntagCommand) {","lastModifiedDate":"2024-03-16"},{"lineNumber":97,"author":{"gitId":"miffi"},"content":" UntagCommand obj \u003d (UntagCommand) other;","lastModifiedDate":"2024-03-16"},{"lineNumber":98,"author":{"gitId":"miffi"},"content":" return index.equals(obj.index) \u0026\u0026 tags.equals(obj.tags);","lastModifiedDate":"2024-03-16"},{"lineNumber":99,"author":{"gitId":"miffi"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":100,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":101,"author":{"gitId":"miffi"},"content":" return false;","lastModifiedDate":"2024-03-16"},{"lineNumber":102,"author":{"gitId":"miffi"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":103,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":104,"author":{"gitId":"miffi"},"content":" private static String showTags(Collection\u003cTag\u003e tags) {","lastModifiedDate":"2024-03-16"},{"lineNumber":105,"author":{"gitId":"miffi"},"content":" return tags.stream().map((tag) -\u003e tag.tagName)","lastModifiedDate":"2024-03-16"},{"lineNumber":106,"author":{"gitId":"miffi"},"content":" .sorted() // making the output order deterministic","lastModifiedDate":"2024-03-16"},{"lineNumber":107,"author":{"gitId":"miffi"},"content":" .collect(Collectors.joining(\", \"));","lastModifiedDate":"2024-03-16"},{"lineNumber":108,"author":{"gitId":"miffi"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":109,"author":{"gitId":"miffi"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"Derekljh":2,"radeon2525":3,"miffi":104}},{"path":"src/main/java/seedu/address/logic/parser/AddressBookParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-07-29"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-07-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.commands.RedoCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"Derekljh"},"content":"import seedu.address.logic.commands.TagCommand;","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.commands.UndoCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"miffi"},"content":"import seedu.address.logic.commands.UntagCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":45,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // Note to developers: Change the log level in config.json to enable lower level (i.e., FINE, FINER and lower)","lastModifiedDate":"2023-07-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29"},{"lineNumber":56,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":69,"author":{"gitId":"Derekljh"},"content":" case TagCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-13"},{"lineNumber":70,"author":{"gitId":"Derekljh"},"content":" return new TagCommandParser().parse(arguments);","lastModifiedDate":"2024-03-13"},{"lineNumber":71,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":78,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":79,"author":{"gitId":"-"},"content":" return new ListCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24"},{"lineNumber":82,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":84,"author":{"gitId":"miffi"},"content":" case UntagCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-16"},{"lineNumber":85,"author":{"gitId":"miffi"},"content":" return new UntagCommandParser().parse(arguments);","lastModifiedDate":"2024-03-16"},{"lineNumber":86,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":87,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26"},{"lineNumber":88,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":90,"author":{"gitId":"radeon2525"},"content":" case UndoCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-18"},{"lineNumber":91,"author":{"gitId":"radeon2525"},"content":" return new UndoCommand();","lastModifiedDate":"2024-03-18"},{"lineNumber":92,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":93,"author":{"gitId":"radeon2525"},"content":" case RedoCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-18"},{"lineNumber":94,"author":{"gitId":"radeon2525"},"content":" return new RedoCommand();","lastModifiedDate":"2024-03-18"},{"lineNumber":95,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":96,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26"},{"lineNumber":97,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29"},{"lineNumber":98,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":102,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"Derekljh":4,"radeon2525":8,"miffi":4,"-":86}},{"path":"src/main/java/seedu/address/logic/parser/CliSyntax.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11"},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":" /* Prefix definitions */","lastModifiedDate":"2017-02-11"},{"lineNumber":9,"author":{"gitId":"The-Dudeski"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"name:\");","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"The-Dudeski"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"phone:\");","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"The-Dudeski"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"email:\");","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"The-Dudeski"},"content":" public static final Prefix PREFIX_ADDRESS \u003d new Prefix(\"address:\");","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"The-Dudeski"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"tag:\");","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":15,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"The-Dudeski":5,"-":10}},{"path":"src/main/java/seedu/address/logic/parser/TagCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Derekljh"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"Derekljh"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"Derekljh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"Derekljh"},"content":"import java.util.Collection;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"Derekljh"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"Derekljh"},"content":"import seedu.address.logic.commands.TagCommand;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"Derekljh"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"Derekljh"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"Derekljh"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"Derekljh"},"content":" * Parses input arguments and creates a new TagCommand object","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"Derekljh"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"Derekljh"},"content":"public class TagCommandParser implements Parser\u003cTagCommand\u003e {","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"Derekljh"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"Derekljh"},"content":" * Parses the given {@code String} of arguments in the context of the TagCommand","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"Derekljh"},"content":" * and returns an TagCommand object for execution.","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"Derekljh"},"content":" *","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"Derekljh"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"Derekljh"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"Derekljh"},"content":" public TagCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"Derekljh"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"Derekljh"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_TAG);","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"Derekljh"},"content":" Collection\u003cTag\u003e tags \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"Derekljh"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"Derekljh"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, TagCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"Derekljh"},"content":" Index index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"Derekljh"},"content":" return new TagCommand(index, tags);","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"Derekljh"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"Derekljh":38}},{"path":"src/main/java/seedu/address/logic/parser/UntagCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"miffi"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"miffi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"miffi"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"miffi"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"miffi"},"content":"import seedu.address.logic.commands.UntagCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"miffi"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"miffi"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"miffi"},"content":" * Parses input arguments and creates an UntagCommand.","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"miffi"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"miffi"},"content":"public class UntagCommandParser implements Parser\u003cUntagCommand\u003e {","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"miffi"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"miffi"},"content":" public UntagCommand parse(String userInput) throws ParseException {","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"miffi"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(userInput, PREFIX_TAG);","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"miffi"},"content":" var tags \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"miffi"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"miffi"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"miffi"},"content":" String.format(Messages.MESSAGE_INVALID_COMMAND_FORMAT, UntagCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"miffi"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"miffi"},"content":" Index index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"miffi"},"content":" return new UntagCommand(index, tags);","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"miffi"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"miffi"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"miffi":28}},{"path":"src/main/java/seedu/address/model/AddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"radeon2525"},"content":"import javafx.beans.InvalidationListener;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"radeon2525"},"content":"import javafx.beans.Observable;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"radeon2525"},"content":"import seedu.address.commons.util.InvalidationListenerManager;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.UniquePersonList;","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Wraps all data at the address-book level","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Duplicates are not allowed (by .isSamePerson comparison)","lastModifiedDate":"2018-04-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"radeon2525"},"content":"public class AddressBook implements ReadOnlyAddressBook, Observable {","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"radeon2525"},"content":" final InvalidationListenerManager invalidationListenerManager \u003d new InvalidationListenerManager();","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final UniquePersonList persons;","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" {","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" persons \u003d new UniquePersonList();","lastModifiedDate":"2016-08-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public AddressBook() {}","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Creates an AddressBook using the Persons in the {@code toBeCopied}","lastModifiedDate":"2018-03-29"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public AddressBook(ReadOnlyAddressBook toBeCopied) {","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" this();","lastModifiedDate":"2016-12-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" resetData(toBeCopied);","lastModifiedDate":"2016-12-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":40,"author":{"gitId":"-"},"content":" //// list overwrite operations","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Replaces the contents of the person list with {@code persons}.","lastModifiedDate":"2018-08-07"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * {@code persons} must not contain duplicate persons.","lastModifiedDate":"2018-08-07"},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void setPersons(List\u003cPerson\u003e persons) {","lastModifiedDate":"2018-08-07"},{"lineNumber":47,"author":{"gitId":"-"},"content":" this.persons.setPersons(persons);","lastModifiedDate":"2016-10-19"},{"lineNumber":48,"author":{"gitId":"radeon2525"},"content":" indicateModified();","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Resets the existing data of this {@code AddressBook} with {@code newData}.","lastModifiedDate":"2017-08-16"},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void resetData(ReadOnlyAddressBook newData) {","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":" requireNonNull(newData);","lastModifiedDate":"2017-05-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" setPersons(newData.getPersonList());","lastModifiedDate":"2018-03-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" //// person-level operations","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * Returns true if a person with the same identity as {@code person} exists in the address book.","lastModifiedDate":"2018-08-06"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06"},{"lineNumber":66,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return persons.contains(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-09-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * The person must not already exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void addPerson(Person p) {","lastModifiedDate":"2018-08-07"},{"lineNumber":75,"author":{"gitId":"-"},"content":" persons.add(p);","lastModifiedDate":"2018-03-29"},{"lineNumber":76,"author":{"gitId":"radeon2525"},"content":" indicateModified();","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * Replaces the given person {@code target} in the list with {@code editedPerson}.","lastModifiedDate":"2018-01-10"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":82,"author":{"gitId":"-"},"content":" * The person identity of {@code editedPerson} must not be the same as another existing person in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":83,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":85,"author":{"gitId":"-"},"content":" requireNonNull(editedPerson);","lastModifiedDate":"2018-01-10"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" persons.setPerson(target, editedPerson);","lastModifiedDate":"2018-03-29"},{"lineNumber":88,"author":{"gitId":"radeon2525"},"content":" indicateModified();","lastModifiedDate":"2024-03-20"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":91,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * Removes {@code key} from this {@code AddressBook}.","lastModifiedDate":"2017-08-16"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * {@code key} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":95,"author":{"gitId":"-"},"content":" public void removePerson(Person key) {","lastModifiedDate":"2018-08-07"},{"lineNumber":96,"author":{"gitId":"-"},"content":" persons.remove(key);","lastModifiedDate":"2018-02-28"},{"lineNumber":97,"author":{"gitId":"radeon2525"},"content":" indicateModified();","lastModifiedDate":"2024-03-20"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":" //// util methods","lastModifiedDate":"2016-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":" .add(\"persons\", persons)","lastModifiedDate":"2019-02-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":110,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":111,"author":{"gitId":"-"},"content":" return persons.asUnmodifiableObservableList();","lastModifiedDate":"2018-04-05"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-01"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-01"},{"lineNumber":114,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":115,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-21"},{"lineNumber":116,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":121,"author":{"gitId":"-"},"content":" if (!(other instanceof AddressBook)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":122,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":" AddressBook otherAddressBook \u003d (AddressBook) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":126,"author":{"gitId":"-"},"content":" return persons.equals(otherAddressBook.persons);","lastModifiedDate":"2023-07-13"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":129,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":130,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-21"},{"lineNumber":131,"author":{"gitId":"-"},"content":" return persons.hashCode();","lastModifiedDate":"2018-03-29"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":133,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":134,"author":{"gitId":"radeon2525"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":135,"author":{"gitId":"radeon2525"},"content":" * Notifies listeners that the address book has been modified.","lastModifiedDate":"2024-03-20"},{"lineNumber":136,"author":{"gitId":"radeon2525"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":137,"author":{"gitId":"radeon2525"},"content":" public void indicateModified() {","lastModifiedDate":"2024-03-20"},{"lineNumber":138,"author":{"gitId":"radeon2525"},"content":" invalidationListenerManager.callListeners(this);","lastModifiedDate":"2024-03-20"},{"lineNumber":139,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":140,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":141,"author":{"gitId":"radeon2525"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":142,"author":{"gitId":"radeon2525"},"content":" public void addListener(InvalidationListener listener) {","lastModifiedDate":"2024-03-20"},{"lineNumber":143,"author":{"gitId":"radeon2525"},"content":" invalidationListenerManager.addListener(listener);","lastModifiedDate":"2024-03-20"},{"lineNumber":144,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":145,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":146,"author":{"gitId":"radeon2525"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":147,"author":{"gitId":"radeon2525"},"content":" public void removeListener(InvalidationListener listener) {","lastModifiedDate":"2024-03-20"},{"lineNumber":148,"author":{"gitId":"radeon2525"},"content":" invalidationListenerManager.removeListener(listener);","lastModifiedDate":"2024-03-20"},{"lineNumber":149,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":150,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"radeon2525":27,"-":123}},{"path":"src/main/java/seedu/address/model/Model.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * The API of the Model component.","lastModifiedDate":"2016-09-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public interface Model {","lastModifiedDate":"2016-09-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":" /** {@code Predicate} that always evaluate to true */","lastModifiedDate":"2017-08-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":" Predicate\u003cPerson\u003e PREDICATE_SHOW_ALL_PERSONS \u003d unused -\u003e true;","lastModifiedDate":"2018-01-10"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Replaces user prefs data with the data in {@code userPrefs}.","lastModifiedDate":"2018-12-06"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":" void setUserPrefs(ReadOnlyUserPrefs userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Returns the user prefs.","lastModifiedDate":"2018-11-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" ReadOnlyUserPrefs getUserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" void setAddressBookFilePath(Path addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Replaces address book data with the data in {@code addressBook}.","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" void setAddressBook(ReadOnlyAddressBook addressBook);","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":52,"author":{"gitId":"-"},"content":" /** Returns the AddressBook */","lastModifiedDate":"2016-09-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2016-09-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Returns true if a person with the same identity as {@code person} exists in the address book.","lastModifiedDate":"2018-08-06"},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":58,"author":{"gitId":"-"},"content":" boolean hasPerson(Person person);","lastModifiedDate":"2018-08-06"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * Deletes the given person.","lastModifiedDate":"2018-08-07"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * The person must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":64,"author":{"gitId":"-"},"content":" void deletePerson(Person target);","lastModifiedDate":"2018-08-07"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":66,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":67,"author":{"gitId":"-"},"content":" * Adds the given person.","lastModifiedDate":"2018-08-07"},{"lineNumber":68,"author":{"gitId":"-"},"content":" * {@code person} must not already exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":69,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":70,"author":{"gitId":"-"},"content":" void addPerson(Person person);","lastModifiedDate":"2018-08-07"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Replaces the given person {@code target} with {@code editedPerson}.","lastModifiedDate":"2017-06-07"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":75,"author":{"gitId":"-"},"content":" * The person identity of {@code editedPerson} must not be the same as another existing person in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":76,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" void setPerson(Person target, Person editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" /** Returns an unmodifiable view of the filtered person list */","lastModifiedDate":"2017-09-01"},{"lineNumber":80,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":82,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-05"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * Updates the filter of the filtered person list to filter by the given {@code predicate}.","lastModifiedDate":"2017-08-05"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2017-08-05"},{"lineNumber":85,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05"},{"lineNumber":86,"author":{"gitId":"-"},"content":" void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate);","lastModifiedDate":"2018-01-10"},{"lineNumber":87,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":88,"author":{"gitId":"radeon2525"},"content":" boolean canUndoAddressBook();","lastModifiedDate":"2024-03-18"},{"lineNumber":89,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":90,"author":{"gitId":"radeon2525"},"content":" void undoAddressBook();","lastModifiedDate":"2024-03-18"},{"lineNumber":91,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":92,"author":{"gitId":"radeon2525"},"content":" boolean canRedoAddressBook();","lastModifiedDate":"2024-03-18"},{"lineNumber":93,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":94,"author":{"gitId":"radeon2525"},"content":" void redoAddressBook();","lastModifiedDate":"2024-03-18"},{"lineNumber":95,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":96,"author":{"gitId":"radeon2525"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":97,"author":{"gitId":"radeon2525"},"content":" * Saves the current address book state for undo/redo.","lastModifiedDate":"2024-03-18"},{"lineNumber":98,"author":{"gitId":"radeon2525"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":99,"author":{"gitId":"radeon2525"},"content":" void commitAddressBook();","lastModifiedDate":"2024-03-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"radeon2525":13,"-":87}},{"path":"src/main/java/seedu/address/model/ModelManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-08-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"radeon2525"},"content":"import javafx.beans.property.SimpleObjectProperty;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2016-08-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Represents the in-memory model of the address book data.","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class ModelManager implements Model {","lastModifiedDate":"2018-12-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ModelManager.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final UserPrefs userPrefs;","lastModifiedDate":"2018-12-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final FilteredList\u003cPerson\u003e filteredPersons;","lastModifiedDate":"2018-01-10"},{"lineNumber":25,"author":{"gitId":"radeon2525"},"content":" private final VersionedAddressBook versionedAddressBook;","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"radeon2525"},"content":" private final SimpleObjectProperty\u003cPerson\u003e selectedPerson \u003d new SimpleObjectProperty\u003c\u003e();","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Initializes a ModelManager with the given addressBook and userPrefs.","lastModifiedDate":"2016-12-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public ModelManager(ReadOnlyAddressBook addressBook, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":33,"author":{"gitId":"radeon2525"},"content":" super();","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"-"},"content":" requireAllNonNull(addressBook, userPrefs);","lastModifiedDate":"2017-05-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" logger.fine(\"Initializing with address book: \" + addressBook + \" and user prefs \" + userPrefs);","lastModifiedDate":"2016-12-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"radeon2525"},"content":" versionedAddressBook \u003d new VersionedAddressBook(addressBook);","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"radeon2525"},"content":" //this.addressBook \u003d new AddressBook(addressBook);","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":41,"author":{"gitId":"radeon2525"},"content":" filteredPersons \u003d new FilteredList\u003c\u003e(versionedAddressBook.getPersonList());","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"radeon2525"},"content":" //filteredPersons.addListener(this::ensureSelectedPersonIsValid);","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public ModelManager() {","lastModifiedDate":"2016-09-22"},{"lineNumber":46,"author":{"gitId":"-"},"content":" this(new AddressBook(), new UserPrefs());","lastModifiedDate":"2016-09-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d UserPrefs \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":53,"author":{"gitId":"-"},"content":" requireNonNull(userPrefs);","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" this.userPrefs.resetData(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return userPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return userPrefs.getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return userPrefs.getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d AddressBook \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook addressBook) {","lastModifiedDate":"2018-11-27"},{"lineNumber":88,"author":{"gitId":"radeon2525"},"content":" versionedAddressBook.resetData(addressBook);","lastModifiedDate":"2024-03-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2016-09-21"},{"lineNumber":93,"author":{"gitId":"radeon2525"},"content":" return versionedAddressBook;","lastModifiedDate":"2024-03-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":98,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":99,"author":{"gitId":"radeon2525"},"content":" return versionedAddressBook.hasPerson(person);","lastModifiedDate":"2024-03-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":103,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-15"},{"lineNumber":104,"author":{"gitId":"radeon2525"},"content":" versionedAddressBook.removePerson(target);","lastModifiedDate":"2024-03-18"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":109,"author":{"gitId":"radeon2525"},"content":" versionedAddressBook.addPerson(person);","lastModifiedDate":"2024-03-18"},{"lineNumber":110,"author":{"gitId":"-"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26"},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":115,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2017-06-07"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":117,"author":{"gitId":"radeon2525"},"content":" versionedAddressBook.setPerson(target, editedPerson);","lastModifiedDate":"2024-03-18"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Filtered Person List Accessors \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2016-10-12"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19"},{"lineNumber":123,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the list of {@code Person} backed by the internal list of","lastModifiedDate":"2018-01-10"},{"lineNumber":124,"author":{"gitId":"-"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2018-06-11"},{"lineNumber":125,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19"},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":127,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":128,"author":{"gitId":"-"},"content":" return filteredPersons;","lastModifiedDate":"2018-12-09"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":131,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":132,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10"},{"lineNumber":133,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05"},{"lineNumber":134,"author":{"gitId":"-"},"content":" filteredPersons.setPredicate(predicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":137,"author":{"gitId":"radeon2525"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Undo/Redo \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":138,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":139,"author":{"gitId":"radeon2525"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":140,"author":{"gitId":"radeon2525"},"content":" public boolean canUndoAddressBook() {","lastModifiedDate":"2024-03-18"},{"lineNumber":141,"author":{"gitId":"radeon2525"},"content":" return versionedAddressBook.canUndo();","lastModifiedDate":"2024-03-18"},{"lineNumber":142,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":143,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":144,"author":{"gitId":"radeon2525"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":145,"author":{"gitId":"radeon2525"},"content":" public void undoAddressBook() {","lastModifiedDate":"2024-03-18"},{"lineNumber":146,"author":{"gitId":"radeon2525"},"content":" versionedAddressBook.undo();","lastModifiedDate":"2024-03-18"},{"lineNumber":147,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":148,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":149,"author":{"gitId":"radeon2525"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":150,"author":{"gitId":"radeon2525"},"content":" public boolean canRedoAddressBook() {","lastModifiedDate":"2024-03-18"},{"lineNumber":151,"author":{"gitId":"radeon2525"},"content":" return versionedAddressBook.canRedo();","lastModifiedDate":"2024-03-18"},{"lineNumber":152,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":153,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":154,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":155,"author":{"gitId":"radeon2525"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":156,"author":{"gitId":"radeon2525"},"content":" public void redoAddressBook() {","lastModifiedDate":"2024-03-18"},{"lineNumber":157,"author":{"gitId":"radeon2525"},"content":" versionedAddressBook.redo();","lastModifiedDate":"2024-03-18"},{"lineNumber":158,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":159,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":160,"author":{"gitId":"radeon2525"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":161,"author":{"gitId":"radeon2525"},"content":" public void commitAddressBook() {","lastModifiedDate":"2024-03-18"},{"lineNumber":162,"author":{"gitId":"radeon2525"},"content":" versionedAddressBook.commit();","lastModifiedDate":"2024-03-18"},{"lineNumber":163,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":164,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":165,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-31"},{"lineNumber":166,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13"},{"lineNumber":167,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":168,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31"},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":171,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31"},{"lineNumber":172,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":173,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-31"},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":176,"author":{"gitId":"-"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":177,"author":{"gitId":"radeon2525"},"content":" return versionedAddressBook.equals(otherModelManager.versionedAddressBook)","lastModifiedDate":"2024-03-18"},{"lineNumber":178,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13"},{"lineNumber":179,"author":{"gitId":"-"},"content":" \u0026\u0026 filteredPersons.equals(otherModelManager.filteredPersons);","lastModifiedDate":"2023-07-13"},{"lineNumber":180,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":181,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"radeon2525":44,"-":137}},{"path":"src/main/java/seedu/address/model/VersionedAddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"radeon2525"},"content":"package seedu.address.model;","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"radeon2525"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"radeon2525"},"content":"import java.util.List;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"radeon2525"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"radeon2525"},"content":" * {@code AddressBook} that keeps track of its own history.","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"radeon2525"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"radeon2525"},"content":"public class VersionedAddressBook extends AddressBook {","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"radeon2525"},"content":" private final List\u003cReadOnlyAddressBook\u003e addressBookStateList;","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"radeon2525"},"content":" private int currentStatePointer;","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"radeon2525"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"radeon2525"},"content":" * {@code AddressBook} that keeps track of its own history.","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"radeon2525"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"radeon2525"},"content":" public VersionedAddressBook(ReadOnlyAddressBook initialState) {","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"radeon2525"},"content":" super(initialState);","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"radeon2525"},"content":" addressBookStateList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"radeon2525"},"content":" addressBookStateList.add(new AddressBook(initialState));","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"radeon2525"},"content":" currentStatePointer \u003d 0;","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"radeon2525"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"radeon2525"},"content":" * Saves a copy of the current {@code AddressBook} state at the end of the state list.","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"radeon2525"},"content":" * Undone states are removed from the state list.","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"radeon2525"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"radeon2525"},"content":" public void commit() {","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"radeon2525"},"content":" removeStatesAfterCurrentPointer();","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"radeon2525"},"content":" addressBookStateList.add(new AddressBook(this));","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"radeon2525"},"content":" currentStatePointer++;","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"radeon2525"},"content":" //indicateModified();","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"radeon2525"},"content":" private void removeStatesAfterCurrentPointer() {","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"radeon2525"},"content":" addressBookStateList.subList(currentStatePointer + 1, addressBookStateList.size()).clear();","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"radeon2525"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"radeon2525"},"content":" * Restores the address book to its previous state.","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"radeon2525"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"radeon2525"},"content":" public void undo() {","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"radeon2525"},"content":" if (!canUndo()) {","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"radeon2525"},"content":" throw new NoUndoableStateException();","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"radeon2525"},"content":" currentStatePointer--;","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"radeon2525"},"content":" resetData(addressBookStateList.get(currentStatePointer));","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"radeon2525"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"radeon2525"},"content":" * Restores the address book to its previously undone state.","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"radeon2525"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"radeon2525"},"content":" public void redo() {","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"radeon2525"},"content":" if (!canRedo()) {","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"radeon2525"},"content":" throw new NoRedoableStateException();","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"radeon2525"},"content":" currentStatePointer++;","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"radeon2525"},"content":" resetData(addressBookStateList.get(currentStatePointer));","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"radeon2525"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"radeon2525"},"content":" * Returns true if {@code undo()} has address book states to undo.","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"radeon2525"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"radeon2525"},"content":" public boolean canUndo() {","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"radeon2525"},"content":" return currentStatePointer \u003e 0;","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"radeon2525"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"radeon2525"},"content":" * Returns true if {@code redo()} has address book states to redo.","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"radeon2525"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"radeon2525"},"content":" public boolean canRedo() {","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"radeon2525"},"content":" return currentStatePointer \u003c addressBookStateList.size() - 1;","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"radeon2525"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"radeon2525"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"radeon2525"},"content":" // short circuit if same object","lastModifiedDate":"2024-03-18"},{"lineNumber":80,"author":{"gitId":"radeon2525"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-18"},{"lineNumber":81,"author":{"gitId":"radeon2525"},"content":" return true;","lastModifiedDate":"2024-03-18"},{"lineNumber":82,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":83,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":84,"author":{"gitId":"radeon2525"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-18"},{"lineNumber":85,"author":{"gitId":"radeon2525"},"content":" if (!(other instanceof VersionedAddressBook)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":86,"author":{"gitId":"radeon2525"},"content":" return false;","lastModifiedDate":"2024-03-18"},{"lineNumber":87,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":88,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":89,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook otherVersionedAddressBook \u003d (VersionedAddressBook) other;","lastModifiedDate":"2024-03-18"},{"lineNumber":90,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":91,"author":{"gitId":"radeon2525"},"content":" // state check","lastModifiedDate":"2024-03-18"},{"lineNumber":92,"author":{"gitId":"radeon2525"},"content":" return super.equals(otherVersionedAddressBook)","lastModifiedDate":"2024-03-18"},{"lineNumber":93,"author":{"gitId":"radeon2525"},"content":" \u0026\u0026 addressBookStateList.equals(otherVersionedAddressBook.addressBookStateList)","lastModifiedDate":"2024-03-18"},{"lineNumber":94,"author":{"gitId":"radeon2525"},"content":" \u0026\u0026 currentStatePointer \u003d\u003d otherVersionedAddressBook.currentStatePointer;","lastModifiedDate":"2024-03-18"},{"lineNumber":95,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":96,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":97,"author":{"gitId":"radeon2525"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":98,"author":{"gitId":"radeon2525"},"content":" * Thrown when trying to {@code undo()} but can\u0027t.","lastModifiedDate":"2024-03-18"},{"lineNumber":99,"author":{"gitId":"radeon2525"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":100,"author":{"gitId":"radeon2525"},"content":" public static class NoUndoableStateException extends RuntimeException {","lastModifiedDate":"2024-03-18"},{"lineNumber":101,"author":{"gitId":"radeon2525"},"content":" private NoUndoableStateException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":102,"author":{"gitId":"radeon2525"},"content":" super(\"Current state pointer at start of addressBookState list, unable to undo.\");","lastModifiedDate":"2024-03-18"},{"lineNumber":103,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":104,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":105,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":106,"author":{"gitId":"radeon2525"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":107,"author":{"gitId":"radeon2525"},"content":" * Thrown when trying to {@code redo()} but can\u0027t.","lastModifiedDate":"2024-03-18"},{"lineNumber":108,"author":{"gitId":"radeon2525"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":109,"author":{"gitId":"radeon2525"},"content":" public static class NoRedoableStateException extends RuntimeException {","lastModifiedDate":"2024-03-18"},{"lineNumber":110,"author":{"gitId":"radeon2525"},"content":" private NoRedoableStateException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":111,"author":{"gitId":"radeon2525"},"content":" super(\"Current state pointer at end of addressBookState list, unable to redo.\");","lastModifiedDate":"2024-03-18"},{"lineNumber":112,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":113,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":114,"author":{"gitId":"radeon2525"},"content":"}","lastModifiedDate":"2024-03-18"},{"lineNumber":115,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"radeon2525":115}},{"path":"src/main/java/seedu/address/ui/MainWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-06-16"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.event.ActionEvent;","lastModifiedDate":"2016-12-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-08-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.MenuItem;","lastModifiedDate":"2016-08-26"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.control.TextInputControl;","lastModifiedDate":"2016-12-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyCombination;","lastModifiedDate":"2016-08-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyEvent;","lastModifiedDate":"2016-12-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.scene.layout.StackPane;","lastModifiedDate":"2017-05-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2016-09-28"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2017-06-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.Logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * The Main Window. Provides the basic application layout containing","lastModifiedDate":"2016-08-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * a menu bar and space where other JavaFX elements can be placed.","lastModifiedDate":"2016-08-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class MainWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-11-29"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"MainWindow.fxml\";","lastModifiedDate":"2016-08-18"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(getClass());","lastModifiedDate":"2018-08-14"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Stage primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // Independent Ui parts residing in this Ui container","lastModifiedDate":"2016-08-18"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private PersonListPanel personListPanel;","lastModifiedDate":"2016-08-18"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private ResultDisplay resultDisplay;","lastModifiedDate":"2018-12-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private HelpWindow helpWindow;","lastModifiedDate":"2018-03-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private StackPane commandBoxPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":42,"author":{"gitId":"-"},"content":" private MenuItem helpMenuItem;","lastModifiedDate":"2016-08-18"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":" private StackPane personListPanelPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":48,"author":{"gitId":"-"},"content":" private StackPane resultDisplayPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":" private StackPane statusbarPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Creates a {@code MainWindow} with the given {@code Stage} and {@code Logic}.","lastModifiedDate":"2020-05-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public MainWindow(Stage primaryStage, Logic logic) {","lastModifiedDate":"2018-12-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" super(FXML, primaryStage);","lastModifiedDate":"2017-11-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // Set dependencies","lastModifiedDate":"2016-09-21"},{"lineNumber":60,"author":{"gitId":"-"},"content":" this.primaryStage \u003d primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":61,"author":{"gitId":"-"},"content":" this.logic \u003d logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":" // Configure the UI","lastModifiedDate":"2016-09-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":" setWindowDefaultSize(logic.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":66,"author":{"gitId":"-"},"content":" setAccelerators();","lastModifiedDate":"2016-09-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":68,"author":{"gitId":"-"},"content":" helpWindow \u003d new HelpWindow();","lastModifiedDate":"2018-03-15"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public Stage getPrimaryStage() {","lastModifiedDate":"2016-12-24"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return primaryStage;","lastModifiedDate":"2016-12-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":" private void setAccelerators() {","lastModifiedDate":"2016-09-21"},{"lineNumber":76,"author":{"gitId":"-"},"content":" setAccelerator(helpMenuItem, KeyCombination.valueOf(\"F1\"));","lastModifiedDate":"2016-12-18"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":79,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-18"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * Sets the accelerator of a MenuItem.","lastModifiedDate":"2016-12-18"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * @param keyCombination the KeyCombination value of the accelerator","lastModifiedDate":"2016-12-18"},{"lineNumber":82,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":83,"author":{"gitId":"-"},"content":" private void setAccelerator(MenuItem menuItem, KeyCombination keyCombination) {","lastModifiedDate":"2016-12-18"},{"lineNumber":84,"author":{"gitId":"-"},"content":" menuItem.setAccelerator(keyCombination);","lastModifiedDate":"2016-12-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-12-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * TODO: the code below can be removed once the bug reported here","lastModifiedDate":"2016-12-18"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * https://bugs.openjdk.java.net/browse/JDK-8131666","lastModifiedDate":"2016-12-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * is fixed in later version of SDK.","lastModifiedDate":"2016-12-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * According to the bug report, TextInputControl (TextField, TextArea) will","lastModifiedDate":"2016-12-18"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * consume function-key events. Because CommandBox contains a TextField, and","lastModifiedDate":"2016-12-18"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * ResultDisplay contains a TextArea, thus some accelerators (e.g F1) will","lastModifiedDate":"2016-12-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * not work when the focus is in them because the key event is consumed by","lastModifiedDate":"2016-12-18"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * the TextInputControl(s).","lastModifiedDate":"2016-12-18"},{"lineNumber":96,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * For now, we add following event filter to capture such key events and open","lastModifiedDate":"2016-12-18"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * help window purposely so to support accelerators even when focus is","lastModifiedDate":"2016-12-18"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * in CommandBox or ResultDisplay.","lastModifiedDate":"2016-12-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":101,"author":{"gitId":"-"},"content":" getRoot().addEventFilter(KeyEvent.KEY_PRESSED, event -\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":102,"author":{"gitId":"-"},"content":" if (event.getTarget() instanceof TextInputControl \u0026\u0026 keyCombination.match(event)) {","lastModifiedDate":"2016-12-18"},{"lineNumber":103,"author":{"gitId":"-"},"content":" menuItem.getOnAction().handle(new ActionEvent());","lastModifiedDate":"2016-12-18"},{"lineNumber":104,"author":{"gitId":"-"},"content":" event.consume();","lastModifiedDate":"2016-12-18"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":106,"author":{"gitId":"-"},"content":" });","lastModifiedDate":"2016-12-18"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":109,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":110,"author":{"gitId":"-"},"content":" * Fills up all the placeholders of this window.","lastModifiedDate":"2017-08-16"},{"lineNumber":111,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":112,"author":{"gitId":"-"},"content":" void fillInnerParts() {","lastModifiedDate":"2016-09-21"},{"lineNumber":113,"author":{"gitId":"-"},"content":" personListPanel \u003d new PersonListPanel(logic.getFilteredPersonList());","lastModifiedDate":"2019-01-25"},{"lineNumber":114,"author":{"gitId":"-"},"content":" personListPanelPlaceholder.getChildren().add(personListPanel.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":116,"author":{"gitId":"-"},"content":" resultDisplay \u003d new ResultDisplay();","lastModifiedDate":"2018-12-09"},{"lineNumber":117,"author":{"gitId":"-"},"content":" resultDisplayPlaceholder.getChildren().add(resultDisplay.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":" StatusBarFooter statusBarFooter \u003d new StatusBarFooter(logic.getAddressBookFilePath());","lastModifiedDate":"2019-01-25"},{"lineNumber":120,"author":{"gitId":"-"},"content":" statusbarPlaceholder.getChildren().add(statusBarFooter.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":" CommandBox commandBox \u003d new CommandBox(this::executeCommand);","lastModifiedDate":"2019-01-25"},{"lineNumber":123,"author":{"gitId":"-"},"content":" commandBoxPlaceholder.getChildren().add(commandBox.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":126,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":127,"author":{"gitId":"-"},"content":" * Sets the default size based on {@code guiSettings}.","lastModifiedDate":"2018-11-27"},{"lineNumber":128,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":129,"author":{"gitId":"-"},"content":" private void setWindowDefaultSize(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":130,"author":{"gitId":"-"},"content":" primaryStage.setHeight(guiSettings.getWindowHeight());","lastModifiedDate":"2018-11-27"},{"lineNumber":131,"author":{"gitId":"-"},"content":" primaryStage.setWidth(guiSettings.getWindowWidth());","lastModifiedDate":"2018-11-27"},{"lineNumber":132,"author":{"gitId":"-"},"content":" if (guiSettings.getWindowCoordinates() !\u003d null) {","lastModifiedDate":"2018-11-27"},{"lineNumber":133,"author":{"gitId":"-"},"content":" primaryStage.setX(guiSettings.getWindowCoordinates().getX());","lastModifiedDate":"2018-11-27"},{"lineNumber":134,"author":{"gitId":"-"},"content":" primaryStage.setY(guiSettings.getWindowCoordinates().getY());","lastModifiedDate":"2018-11-27"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":138,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":139,"author":{"gitId":"-"},"content":" * Opens the help window or focuses on it if it\u0027s already opened.","lastModifiedDate":"2018-03-15"},{"lineNumber":140,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":141,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":142,"author":{"gitId":"-"},"content":" public void handleHelp() {","lastModifiedDate":"2016-08-31"},{"lineNumber":143,"author":{"gitId":"-"},"content":" if (!helpWindow.isShowing()) {","lastModifiedDate":"2018-03-15"},{"lineNumber":144,"author":{"gitId":"-"},"content":" helpWindow.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":145,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-15"},{"lineNumber":146,"author":{"gitId":"-"},"content":" helpWindow.focus();","lastModifiedDate":"2018-03-15"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":150,"author":{"gitId":"-"},"content":" void show() {","lastModifiedDate":"2016-10-15"},{"lineNumber":151,"author":{"gitId":"-"},"content":" primaryStage.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":152,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":154,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":155,"author":{"gitId":"-"},"content":" * Closes the application.","lastModifiedDate":"2016-08-18"},{"lineNumber":156,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":157,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":158,"author":{"gitId":"-"},"content":" private void handleExit() {","lastModifiedDate":"2016-08-18"},{"lineNumber":159,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(primaryStage.getWidth(), primaryStage.getHeight(),","lastModifiedDate":"2018-12-08"},{"lineNumber":160,"author":{"gitId":"-"},"content":" (int) primaryStage.getX(), (int) primaryStage.getY());","lastModifiedDate":"2018-12-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":" logic.setGuiSettings(guiSettings);","lastModifiedDate":"2018-12-08"},{"lineNumber":162,"author":{"gitId":"-"},"content":" helpWindow.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":163,"author":{"gitId":"-"},"content":" primaryStage.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-25"},{"lineNumber":166,"author":{"gitId":"-"},"content":" public PersonListPanel getPersonListPanel() {","lastModifiedDate":"2016-08-25"},{"lineNumber":167,"author":{"gitId":"-"},"content":" return personListPanel;","lastModifiedDate":"2018-08-14"},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-25"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":170,"author":{"gitId":"The-Dudeski"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":171,"author":{"gitId":"The-Dudeski"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":172,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":173,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2018-12-09"},{"lineNumber":174,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09"},{"lineNumber":175,"author":{"gitId":"-"},"content":" * @see seedu.address.logic.Logic#execute(String)","lastModifiedDate":"2018-12-09"},{"lineNumber":176,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":177,"author":{"gitId":"-"},"content":" private CommandResult executeCommand(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2018-12-09"},{"lineNumber":178,"author":{"gitId":"The-Dudeski"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":179,"author":{"gitId":"The-Dudeski"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":180,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":181,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d logic.execute(commandText);","lastModifiedDate":"2018-12-09"},{"lineNumber":182,"author":{"gitId":"-"},"content":" logger.info(\"Result: \" + commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":183,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":185,"author":{"gitId":"-"},"content":" if (commandResult.isShowHelp()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":186,"author":{"gitId":"-"},"content":" handleHelp();","lastModifiedDate":"2018-12-09"},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":189,"author":{"gitId":"-"},"content":" if (commandResult.isExit()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":190,"author":{"gitId":"-"},"content":" handleExit();","lastModifiedDate":"2018-12-09"},{"lineNumber":191,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":193,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":194,"author":{"gitId":"-"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2018-12-09"},{"lineNumber":195,"author":{"gitId":"-"},"content":" logger.info(\"An error occurred while executing command: \" + commandText);","lastModifiedDate":"2023-06-13"},{"lineNumber":196,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(e.getMessage());","lastModifiedDate":"2018-12-09"},{"lineNumber":197,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2018-12-09"},{"lineNumber":198,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":199,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":200,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"The-Dudeski":4,"-":196}},{"path":"src/test/java/seedu/address/commons/util/InvalidationListenerManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"radeon2525"},"content":"package seedu.address.commons.util;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"radeon2525"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"radeon2525"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"radeon2525"},"content":"import javafx.beans.InvalidationListener;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"radeon2525"},"content":"import javafx.beans.property.SimpleObjectProperty;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"radeon2525"},"content":"public class InvalidationListenerManagerTest {","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"radeon2525"},"content":" private final SimpleObjectProperty\u003cObject\u003e dummyObservable \u003d new SimpleObjectProperty\u003c\u003e();","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"radeon2525"},"content":" private final InvalidationListenerManager invalidationListenerManager \u003d new InvalidationListenerManager();","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"radeon2525"},"content":" private int counter;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"radeon2525"},"content":" public void addListener_sameListenerOnce_listenerAdded() {","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"radeon2525"},"content":" invalidationListenerManager.addListener(observable -\u003e {","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"radeon2525"},"content":" assertEquals(dummyObservable, observable);","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"radeon2525"},"content":" counter++;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"radeon2525"},"content":" });","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"radeon2525"},"content":" invalidationListenerManager.callListeners(dummyObservable);","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"radeon2525"},"content":" assertEquals(1, counter);","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"radeon2525"},"content":" public void addListener_sameListenerTwice_listenerAddedTwice() {","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"radeon2525"},"content":" InvalidationListener listener \u003d observable -\u003e counter++;","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"radeon2525"},"content":" invalidationListenerManager.addListener(listener);","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"radeon2525"},"content":" invalidationListenerManager.addListener(listener);","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"radeon2525"},"content":" invalidationListenerManager.callListeners(dummyObservable);","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"radeon2525"},"content":" assertEquals(2, counter);","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"radeon2525"},"content":" public void addListener_listenersBeingCalled_listenerNotCalled() {","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"radeon2525"},"content":" InvalidationListener listener1 \u003d observable -\u003e {","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"radeon2525"},"content":" throw new AssertionError(\"should not be called\");","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"radeon2525"},"content":" };","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"radeon2525"},"content":" InvalidationListener listener2 \u003d observable -\u003e invalidationListenerManager.addListener(listener1);","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"radeon2525"},"content":" invalidationListenerManager.addListener(listener2);","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"radeon2525"},"content":" invalidationListenerManager.callListeners(dummyObservable);","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"radeon2525"},"content":" public void removeListener_singleListenerAdded_listenerRemoved() {","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"radeon2525"},"content":" InvalidationListener listener \u003d observable -\u003e counter++;","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"radeon2525"},"content":" invalidationListenerManager.addListener(listener);","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"radeon2525"},"content":" invalidationListenerManager.removeListener(listener);","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"radeon2525"},"content":" invalidationListenerManager.callListeners(dummyObservable);","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"radeon2525"},"content":" assertEquals(0, counter);","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"radeon2525"},"content":" public void removeListener_sameListenerAddedTwice_firstListenerRemoved() {","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"radeon2525"},"content":" InvalidationListener listener \u003d observable -\u003e counter++;","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"radeon2525"},"content":" invalidationListenerManager.addListener(listener);","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"radeon2525"},"content":" invalidationListenerManager.addListener(listener);","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"radeon2525"},"content":" invalidationListenerManager.removeListener(listener);","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"radeon2525"},"content":" invalidationListenerManager.callListeners(dummyObservable);","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"radeon2525"},"content":" assertEquals(1, counter);","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"radeon2525"},"content":" public void removeListener_listenersBeingCalled_listenerStillCalled() {","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"radeon2525"},"content":" InvalidationListener listener1 \u003d observable -\u003e counter++;","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"radeon2525"},"content":" InvalidationListener listener2 \u003d observable -\u003e invalidationListenerManager.removeListener(listener1);","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"radeon2525"},"content":" invalidationListenerManager.addListener(listener2);","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"radeon2525"},"content":" invalidationListenerManager.addListener(listener1);","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"radeon2525"},"content":" invalidationListenerManager.callListeners(dummyObservable);","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"radeon2525"},"content":" assertEquals(1, counter);","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"radeon2525"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"radeon2525":72}},{"path":"src/test/java/seedu/address/logic/CommandHistoryTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"radeon2525"},"content":"package seedu.address.logic;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"radeon2525"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"radeon2525"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"radeon2525"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"radeon2525"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"radeon2525"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"radeon2525"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"radeon2525"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"radeon2525"},"content":"public class CommandHistoryTest {","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"radeon2525"},"content":" private CommandHistory history;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"radeon2525"},"content":" @BeforeEach","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"radeon2525"},"content":" public void setUp() {","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"radeon2525"},"content":" history \u003d new CommandHistory();","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"radeon2525"},"content":" public void constructor_withCommandHistory_copiesCommandHistory() {","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"radeon2525"},"content":" final CommandHistory commandHistoryWithA \u003d new CommandHistory();","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"radeon2525"},"content":" commandHistoryWithA.add(\"a\");","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"radeon2525"},"content":" assertEquals(commandHistoryWithA, new CommandHistory(commandHistoryWithA));","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"radeon2525"},"content":" public void add() {","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"radeon2525"},"content":" final String validCommand \u003d \"clear\";","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"radeon2525"},"content":" final String invalidCommand \u003d \"adds Bob\";","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"radeon2525"},"content":" history.add(validCommand);","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"radeon2525"},"content":" history.add(invalidCommand);","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"radeon2525"},"content":" assertEquals(Arrays.asList(validCommand, invalidCommand), history.getHistory());","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"radeon2525"},"content":" public void equals() {","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"radeon2525"},"content":" final CommandHistory commandHistoryWithA \u003d new CommandHistory();","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"radeon2525"},"content":" commandHistoryWithA.add(\"a\");","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"radeon2525"},"content":" final CommandHistory anotherCommandHistoryWithA \u003d new CommandHistory();","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"radeon2525"},"content":" anotherCommandHistoryWithA.add(\"a\");","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"radeon2525"},"content":" final CommandHistory commandHistoryWithB \u003d new CommandHistory();","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"radeon2525"},"content":" commandHistoryWithB.add(\"b\");","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"radeon2525"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"radeon2525"},"content":" assertTrue(commandHistoryWithA.equals(commandHistoryWithA));","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"radeon2525"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"radeon2525"},"content":" assertTrue(commandHistoryWithA.equals(anotherCommandHistoryWithA));","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"radeon2525"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"radeon2525"},"content":" assertFalse(commandHistoryWithA.equals(null));","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"radeon2525"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"radeon2525"},"content":" assertFalse(commandHistoryWithA.equals(5.0f));","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"radeon2525"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"radeon2525"},"content":" assertFalse(commandHistoryWithA.equals(commandHistoryWithB));","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"radeon2525"},"content":" public void hashcode() {","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"radeon2525"},"content":" final CommandHistory commandHistoryWithA \u003d new CommandHistory();","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"radeon2525"},"content":" commandHistoryWithA.add(\"a\");","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"radeon2525"},"content":" final CommandHistory anotherCommandHistoryWithA \u003d new CommandHistory();","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"radeon2525"},"content":" anotherCommandHistoryWithA.add(\"a\");","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"radeon2525"},"content":" final CommandHistory commandHistoryWithB \u003d new CommandHistory();","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"radeon2525"},"content":" commandHistoryWithB.add(\"b\");","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"radeon2525"},"content":" // same values -\u003e returns same hashcode","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"radeon2525"},"content":" assertEquals(commandHistoryWithA.hashCode(), anotherCommandHistoryWithA.hashCode());","lastModifiedDate":"2024-03-19"},{"lineNumber":75,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"radeon2525"},"content":" // different values -\u003e returns different hashcode","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"radeon2525"},"content":" assertNotEquals(commandHistoryWithA.hashCode(), commandHistoryWithB.hashCode());","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":79,"author":{"gitId":"radeon2525"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"radeon2525":79}},{"path":"src/test/java/seedu/address/logic/LogicManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2018-12-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2017-01-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2016-09-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-31"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-12-09"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-12-09"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2018-12-09"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2018-12-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-12-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":"public class LogicManagerTest {","lastModifiedDate":"2016-09-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_IO_EXCEPTION \u003d new IOException(\"dummy IO exception\");","lastModifiedDate":"2023-06-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_AD_EXCEPTION \u003d new AccessDeniedException(\"dummy access denied exception\");","lastModifiedDate":"2023-06-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public Path temporaryFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-20"},{"lineNumber":44,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2018-12-09"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":46,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2019-04-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d","lastModifiedDate":"2019-04-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(temporaryFolder.resolve(\"addressBook.json\"));","lastModifiedDate":"2019-04-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2019-04-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2018-12-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-20"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void execute_invalidCommandFormat_throwsParseException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":57,"author":{"gitId":"-"},"content":" String invalidCommand \u003d \"uicfhmowqewca\";","lastModifiedDate":"2017-06-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertParseException(invalidCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-06-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-14"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void execute_commandExecutionError_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":63,"author":{"gitId":"-"},"content":" String deleteCommand \u003d \"delete 9\";","lastModifiedDate":"2017-06-14"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertCommandException(deleteCommand, MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2017-06-14"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void execute_validCommand_success() throws Exception {","lastModifiedDate":"2019-03-14"},{"lineNumber":69,"author":{"gitId":"-"},"content":" String listCommand \u003d ListCommand.COMMAND_WORD;","lastModifiedDate":"2017-06-19"},{"lineNumber":70,"author":{"gitId":"JukeBoxK"},"content":" assertCommandSuccess(listCommand, ListCommand.MESSAGE_EMPTY, model);","lastModifiedDate":"2024-03-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20"},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":78,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":82,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":85,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":86,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14"},{"lineNumber":87,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14"},{"lineNumber":88,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":93,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a ParseException is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":97,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":101,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a CommandException is thrown and that the result message is correct.","lastModifiedDate":"2017-06-14"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14"},{"lineNumber":105,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14"},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":109,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":110,"author":{"gitId":"-"},"content":" * Executes the command, confirms that the exception is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":111,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":112,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":113,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":114,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14"},{"lineNumber":115,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-05-31"},{"lineNumber":116,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":119,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":120,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":126,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":127,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31"},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14"},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19"},{"lineNumber":132,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":133,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13"},{"lineNumber":134,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13"},{"lineNumber":135,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13"},{"lineNumber":136,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13"},{"lineNumber":137,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":138,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13"},{"lineNumber":139,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":141,"author":{"gitId":"-"},"content":" // Inject LogicManager with an AddressBookStorage that throws the IOException e when saving","lastModifiedDate":"2023-06-13"},{"lineNumber":142,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(prefPath) {","lastModifiedDate":"2023-06-13"},{"lineNumber":143,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":144,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath)","lastModifiedDate":"2023-06-13"},{"lineNumber":145,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13"},{"lineNumber":146,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":148,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":150,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":151,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13"},{"lineNumber":152,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2023-06-13"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":154,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":156,"author":{"gitId":"-"},"content":" // Triggers the saveAddressBook method by executing an add command","lastModifiedDate":"2023-06-13"},{"lineNumber":157,"author":{"gitId":"-"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2023-06-13"},{"lineNumber":158,"author":{"gitId":"-"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY;","lastModifiedDate":"2023-06-13"},{"lineNumber":159,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2023-06-13"},{"lineNumber":160,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13"},{"lineNumber":161,"author":{"gitId":"-"},"content":" expectedModel.addPerson(expectedPerson);","lastModifiedDate":"2023-06-13"},{"lineNumber":162,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13"},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":164,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"radeon2525":1,"JukeBoxK":1,"-":162}},{"path":"src/test/java/seedu/address/logic/commands/AddCommandIntegrationTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-15"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":10,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-15"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-15"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-15"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-15"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code AddCommand}.","lastModifiedDate":"2017-06-15"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-15"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class AddCommandIntegrationTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-15"},{"lineNumber":23,"author":{"gitId":"radeon2525"},"content":" private CommandHistory commandHistory \u003d new CommandHistory();","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void execute_newPerson_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":33,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-15"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":35,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" expectedModel.addPerson(validPerson);","lastModifiedDate":"2017-06-15"},{"lineNumber":37,"author":{"gitId":"radeon2525"},"content":" expectedModel.commitAddressBook();","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":39,"author":{"gitId":"radeon2525"},"content":" assertCommandSuccess(new AddCommand(validPerson), model, commandHistory,","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"radeon2525"},"content":" String.format(AddCommand.MESSAGE_SUCCESS, validPerson), expectedModel);","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(0);","lastModifiedDate":"2018-01-10"},{"lineNumber":46,"author":{"gitId":"radeon2525"},"content":" assertCommandFailure(new AddCommand(personInList), model, commandHistory,","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"-"},"content":" AddCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"radeon2525":7,"-":43}},{"path":"src/test/java/seedu/address/logic/commands/AddCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-01-10"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-05-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":18,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-05-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2017-05-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class AddCommandTest {","lastModifiedDate":"2017-05-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"radeon2525"},"content":" private static final CommandHistory EMPTY_COMMAND_HISTORY \u003d new CommandHistory();","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"radeon2525"},"content":" private static final Person ALICE \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"radeon2525"},"content":" private CommandHistory commandHistory \u003d new CommandHistory();","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddCommand(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void execute_personAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":" ModelStubAcceptingPersonAdded modelStub \u003d new ModelStubAcceptingPersonAdded();","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"radeon2525"},"content":" CommandHistory commandHistory \u003d new CommandHistory();","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"radeon2525"},"content":" CommandResult commandResult \u003d new AddCommand(validPerson).execute(modelStub, commandHistory);","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"radeon2525"},"content":" assertEquals(String.format(AddCommand.MESSAGE_SUCCESS, validPerson), commandResult.getFeedbackToUser());","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(validPerson), modelStub.personsAdded);","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12"},{"lineNumber":54,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(validPerson);","lastModifiedDate":"2018-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":" ModelStub modelStub \u003d new ModelStubWithPerson(validPerson);","lastModifiedDate":"2018-08-07"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":57,"author":{"gitId":"radeon2525"},"content":" assertThrows(CommandException.class, AddCommand.MESSAGE_DUPLICATE_PERSON, () -\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"radeon2525"},"content":" addCommand.execute(modelStub, commandHistory));","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":61,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-22"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":64,"author":{"gitId":"-"},"content":" Person alice \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2017-06-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":" Person bob \u003d new PersonBuilder().withName(\"Bob\").build();","lastModifiedDate":"2017-06-22"},{"lineNumber":66,"author":{"gitId":"-"},"content":" AddCommand addAliceCommand \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22"},{"lineNumber":67,"author":{"gitId":"-"},"content":" AddCommand addBobCommand \u003d new AddCommand(bob);","lastModifiedDate":"2017-06-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":69,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommand));","lastModifiedDate":"2017-06-22"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":72,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":73,"author":{"gitId":"-"},"content":" AddCommand addAliceCommandCopy \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommandCopy));","lastModifiedDate":"2017-06-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":76,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(1));","lastModifiedDate":"2017-06-22"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":79,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(null));","lastModifiedDate":"2017-06-22"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":82,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(addBobCommand));","lastModifiedDate":"2017-06-22"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":86,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(ALICE);","lastModifiedDate":"2019-02-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" String expected \u003d AddCommand.class.getCanonicalName() + \"{toAdd\u003d\" + ALICE + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertEquals(expected, addCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":94,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":95,"author":{"gitId":"radeon2525"},"content":" public void execute_nullModel_throwsNullPointerException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":96,"author":{"gitId":"radeon2525"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2024-03-16"},{"lineNumber":97,"author":{"gitId":"radeon2525"},"content":" AddCommand addCommand \u003d new AddCommand(validPerson);","lastModifiedDate":"2024-03-16"},{"lineNumber":98,"author":{"gitId":"radeon2525"},"content":" assertThrows(NullPointerException.class, () -\u003e addCommand.execute(null, commandHistory));","lastModifiedDate":"2024-03-18"},{"lineNumber":99,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":100,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":101,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":102,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2017-05-12"},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":105,"author":{"gitId":"-"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2017-05-12"},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":108,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":112,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27"},{"lineNumber":113,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":117,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":118,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":122,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":123,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":127,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":128,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":131,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":132,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27"},{"lineNumber":133,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":136,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":137,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":138,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":141,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":142,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2018-11-27"},{"lineNumber":143,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":146,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":147,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-12"},{"lineNumber":148,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":151,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":152,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06"},{"lineNumber":153,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":156,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":157,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-08"},{"lineNumber":158,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":161,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":162,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":163,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":164,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":166,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":167,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":168,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":171,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":172,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10"},{"lineNumber":173,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":175,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":176,"author":{"gitId":"radeon2525"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":177,"author":{"gitId":"radeon2525"},"content":" public boolean canUndoAddressBook() {","lastModifiedDate":"2024-03-18"},{"lineNumber":178,"author":{"gitId":"radeon2525"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-18"},{"lineNumber":179,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":180,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":181,"author":{"gitId":"radeon2525"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":182,"author":{"gitId":"radeon2525"},"content":" public boolean canRedoAddressBook() {","lastModifiedDate":"2024-03-18"},{"lineNumber":183,"author":{"gitId":"radeon2525"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-18"},{"lineNumber":184,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":185,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":186,"author":{"gitId":"radeon2525"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":187,"author":{"gitId":"radeon2525"},"content":" public void undoAddressBook() {","lastModifiedDate":"2024-03-18"},{"lineNumber":188,"author":{"gitId":"radeon2525"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-18"},{"lineNumber":189,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":190,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":191,"author":{"gitId":"radeon2525"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":192,"author":{"gitId":"radeon2525"},"content":" public void redoAddressBook() {","lastModifiedDate":"2024-03-18"},{"lineNumber":193,"author":{"gitId":"radeon2525"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-18"},{"lineNumber":194,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":195,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":196,"author":{"gitId":"radeon2525"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":197,"author":{"gitId":"radeon2525"},"content":" public void commitAddressBook() {","lastModifiedDate":"2024-03-18"},{"lineNumber":198,"author":{"gitId":"radeon2525"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-18"},{"lineNumber":199,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":200,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":201,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":203,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":204,"author":{"gitId":"-"},"content":" * A Model stub that contains a single person.","lastModifiedDate":"2018-08-07"},{"lineNumber":205,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":206,"author":{"gitId":"-"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2018-08-07"},{"lineNumber":207,"author":{"gitId":"-"},"content":" private final Person person;","lastModifiedDate":"2018-08-07"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":209,"author":{"gitId":"-"},"content":" ModelStubWithPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":210,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":211,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2018-08-07"},{"lineNumber":212,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":214,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":215,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":216,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":217,"author":{"gitId":"-"},"content":" return this.person.isSamePerson(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":218,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":219,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":221,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":222,"author":{"gitId":"-"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2017-05-12"},{"lineNumber":223,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":224,"author":{"gitId":"-"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2017-05-12"},{"lineNumber":225,"author":{"gitId":"-"},"content":" final ArrayList\u003cPerson\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2017-05-12"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":227,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07"},{"lineNumber":228,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":229,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":230,"author":{"gitId":"-"},"content":" return personsAdded.stream().anyMatch(person::isSamePerson);","lastModifiedDate":"2018-08-07"},{"lineNumber":231,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":233,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":234,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-08"},{"lineNumber":235,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":236,"author":{"gitId":"-"},"content":" personsAdded.add(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":237,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":239,"author":{"gitId":"radeon2525"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":240,"author":{"gitId":"radeon2525"},"content":" public void commitAddressBook() {","lastModifiedDate":"2024-03-18"},{"lineNumber":241,"author":{"gitId":"radeon2525"},"content":" // called by {@code AddCommand#execute()}","lastModifiedDate":"2024-03-18"},{"lineNumber":242,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":243,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":244,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":245,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04"},{"lineNumber":246,"author":{"gitId":"-"},"content":" return new AddressBook();","lastModifiedDate":"2017-05-04"},{"lineNumber":247,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":248,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":250,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12"}],"authorContributionMap":{"radeon2525":51,"-":199}},{"path":"src/test/java/seedu/address/logic/commands/ClearCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":8,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2018-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class ClearCommandTest {","lastModifiedDate":"2017-06-08"},{"lineNumber":15,"author":{"gitId":"radeon2525"},"content":" private CommandHistory commandHistory \u003d new CommandHistory();","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public void execute_emptyAddressBook_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":19,"author":{"gitId":"-"},"content":" Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2018-08-08"},{"lineNumber":21,"author":{"gitId":"radeon2525"},"content":" expectedModel.commitAddressBook();","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":23,"author":{"gitId":"radeon2525"},"content":" assertCommandSuccess(new ClearCommand(), model, commandHistory, ClearCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void execute_nonEmptyAddressBook_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":" Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2018-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" expectedModel.setAddressBook(new AddressBook());","lastModifiedDate":"2018-11-27"},{"lineNumber":31,"author":{"gitId":"radeon2525"},"content":" expectedModel.commitAddressBook();","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":33,"author":{"gitId":"radeon2525"},"content":" assertCommandSuccess(new ClearCommand(), model, commandHistory, ClearCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-08"}],"authorContributionMap":{"radeon2525":6,"-":30}},{"path":"src/test/java/seedu/address/logic/commands/CommandTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-07-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31"},{"lineNumber":17,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-06-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-07-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-07-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_AMY \u003d \"11111111\";","lastModifiedDate":"2017-07-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_BOB \u003d \"22222222\";","lastModifiedDate":"2017-07-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_AMY \u003d \"Block 312, Amy Street 1\";","lastModifiedDate":"2017-07-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_BOB \u003d \"Block 123, Bobby Street 3\";","lastModifiedDate":"2017-07-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_HUSBAND \u003d \"husband\";","lastModifiedDate":"2017-07-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_FRIEND \u003d \"friend\";","lastModifiedDate":"2017-07-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + PREFIX_TAG + VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + PREFIX_TAG + VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final String INVALID_NAME_DESC \u003d \" \" + PREFIX_NAME + \"James\u0026\"; // \u0027\u0026\u0027 not allowed in names","lastModifiedDate":"2017-07-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String INVALID_PHONE_DESC \u003d \" \" + PREFIX_PHONE + \"911a\"; // \u0027a\u0027 not allowed in phones","lastModifiedDate":"2017-07-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final String INVALID_ADDRESS_DESC \u003d \" \" + PREFIX_ADDRESS; // empty string not allowed for addresses","lastModifiedDate":"2017-07-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final String INVALID_TAG_DESC \u003d \" \" + PREFIX_TAG + \"hubby*\"; // \u0027*\u0027 not allowed in tags","lastModifiedDate":"2017-07-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":64,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05"},{"lineNumber":65,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-07-05"},{"lineNumber":67,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05"},{"lineNumber":68,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05"},{"lineNumber":69,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2017-07-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":73,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":75,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09"},{"lineNumber":76,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25"},{"lineNumber":77,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":78,"author":{"gitId":"radeon2525"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandHistory history,","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"radeon2525"},"content":" CommandResult expectedCommandResult, Model expectedModel) {","lastModifiedDate":"2024-03-18"},{"lineNumber":80,"author":{"gitId":"radeon2525"},"content":" CommandHistory expectedCommandHistory \u003d new CommandHistory(history);","lastModifiedDate":"2024-03-18"},{"lineNumber":81,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":82,"author":{"gitId":"radeon2525"},"content":" CommandResult result \u003d command.execute(actualModel, history);","lastModifiedDate":"2024-03-18"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":85,"author":{"gitId":"radeon2525"},"content":" assertEquals(expectedCommandHistory, history);","lastModifiedDate":"2024-03-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":91,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":92,"author":{"gitId":"radeon2525"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandHistory, CommandResult, Model)}","lastModifiedDate":"2024-03-18"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09"},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":95,"author":{"gitId":"radeon2525"},"content":" public static void assertCommandSuccess(Command command, Model actualModel,","lastModifiedDate":"2024-03-18"},{"lineNumber":96,"author":{"gitId":"radeon2525"},"content":" CommandHistory history, String expectedMessage, Model expectedModel) {","lastModifiedDate":"2024-03-18"},{"lineNumber":97,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09"},{"lineNumber":98,"author":{"gitId":"radeon2525"},"content":" assertCommandSuccess(command, actualModel, history, expectedCommandResult, expectedModel);","lastModifiedDate":"2024-03-18"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":101,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":104,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25"},{"lineNumber":106,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":107,"author":{"gitId":"radeon2525"},"content":" public static void assertCommandFailure(Command command, Model actualModel,","lastModifiedDate":"2024-03-18"},{"lineNumber":108,"author":{"gitId":"radeon2525"},"content":" CommandHistory history, String expectedMessage) {","lastModifiedDate":"2024-03-18"},{"lineNumber":109,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05"},{"lineNumber":110,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05"},{"lineNumber":111,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":112,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10"},{"lineNumber":113,"author":{"gitId":"radeon2525"},"content":" CommandHistory expectedCommandHistory \u003d new CommandHistory(history);","lastModifiedDate":"2024-03-18"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":115,"author":{"gitId":"radeon2525"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel, history));","lastModifiedDate":"2024-03-18"},{"lineNumber":116,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":119,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20"},{"lineNumber":120,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show only the person at the given {@code targetIndex} in the","lastModifiedDate":"2018-01-31"},{"lineNumber":121,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31"},{"lineNumber":122,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20"},{"lineNumber":123,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31"},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31"},{"lineNumber":126,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31"},{"lineNumber":127,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20"},{"lineNumber":128,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":133,"author":{"gitId":"radeon2525"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":134,"author":{"gitId":"radeon2525"},"content":" * Deletes the first person in {@code model}\u0027s filtered list from {@code model}\u0027s address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":135,"author":{"gitId":"radeon2525"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":136,"author":{"gitId":"radeon2525"},"content":" public static void deleteFirstPerson(Model model) {","lastModifiedDate":"2024-03-19"},{"lineNumber":137,"author":{"gitId":"radeon2525"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(0);","lastModifiedDate":"2024-03-19"},{"lineNumber":138,"author":{"gitId":"radeon2525"},"content":" model.deletePerson(firstPerson);","lastModifiedDate":"2024-03-19"},{"lineNumber":139,"author":{"gitId":"radeon2525"},"content":" model.commitAddressBook();","lastModifiedDate":"2024-03-19"},{"lineNumber":140,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":141,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":142,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"radeon2525":23,"-":119}},{"path":"src/test/java/seedu/address/logic/commands/DeleteCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31"},{"lineNumber":8,"author":{"gitId":"radeon2525"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-06-05"},{"lineNumber":16,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":18,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"radeon2525"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2020-12-16"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * {@code DeleteCommand}.","lastModifiedDate":"2018-01-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class DeleteCommandTest {","lastModifiedDate":"2017-06-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":31,"author":{"gitId":"radeon2525"},"content":" private CommandHistory commandHistory \u003d new CommandHistory();","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-06-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(outOfBoundIndex);","lastModifiedDate":"2018-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":38,"author":{"gitId":"radeon2525"},"content":" assertCommandFailure(deleteCommand, model, commandHistory, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"radeon2525"},"content":" public void execute_invalidIndex_throwsCommandException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"radeon2525"},"content":" // Create a model with an empty person list","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"radeon2525"},"content":" Model model \u003d new ModelManager(new AddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"radeon2525"},"content":" CommandHistory history \u003d new CommandHistory();","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"radeon2525"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(Index.fromZeroBased(0));","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"radeon2525"},"content":" // Execute command and assert CommandException is thrown","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"radeon2525"},"content":" assertThrows(CommandException.class, () -\u003e deleteCommand.execute(model, history));","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void execute_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-06-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-06-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-06-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":61,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(outOfBoundIndex);","lastModifiedDate":"2018-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":63,"author":{"gitId":"radeon2525"},"content":" assertCommandFailure(deleteCommand, model, commandHistory, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" DeleteCommand deleteFirstCommand \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" DeleteCommand deleteSecondCommand \u003d new DeleteCommand(INDEX_SECOND_PERSON);","lastModifiedDate":"2018-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" DeleteCommand deleteFirstCommandCopy \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2017-06-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2017-06-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2017-06-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(targetIndex);","lastModifiedDate":"2019-02-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":" String expected \u003d DeleteCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertEquals(expected, deleteCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show no one.","lastModifiedDate":"2017-06-05"},{"lineNumber":98,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":99,"author":{"gitId":"-"},"content":" private void showNoPerson(Model model) {","lastModifiedDate":"2017-06-05"},{"lineNumber":100,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(p -\u003e false);","lastModifiedDate":"2017-06-12"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertTrue(model.getFilteredPersonList().isEmpty());","lastModifiedDate":"2018-02-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":104,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"radeon2525":15,"-":89}},{"path":"src/test/java/seedu/address/logic/commands/EditCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":14,"author":{"gitId":"radeon2525"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"radeon2525"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-04"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for EditCommand.","lastModifiedDate":"2020-12-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-04"},{"lineNumber":34,"author":{"gitId":"-"},"content":"public class EditCommandTest {","lastModifiedDate":"2017-05-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":37,"author":{"gitId":"radeon2525"},"content":" private CommandHistory commandHistory \u003d new CommandHistory();","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonUnfilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":42,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(firstPerson).build();","lastModifiedDate":"2017-06-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_SECOND_PERSON, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":45,"author":{"gitId":"radeon2525"},"content":" assertCommandFailure(editCommand, model, commandHistory, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonFilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // edit person in filtered list into a duplicate in address book","lastModifiedDate":"2017-05-18"},{"lineNumber":53,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(INDEX_SECOND_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":54,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder(personInList).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":57,"author":{"gitId":"radeon2525"},"content":" assertCommandFailure(editCommand, model, commandHistory, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":60,"author":{"gitId":"radeon2525"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"radeon2525"},"content":" * Updates {@code model}\u0027s filtered list to show only the person at the given {@code targetIndex} in the","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"radeon2525"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"radeon2525"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"radeon2525"},"content":" private void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"radeon2525"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"radeon2525"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"radeon2525"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"radeon2525"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"radeon2525"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":76,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-05-18"},{"lineNumber":77,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-22"},{"lineNumber":78,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":80,"author":{"gitId":"radeon2525"},"content":" assertCommandFailure(editCommand, model, commandHistory, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-18"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":83,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-18"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2017-05-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * but smaller than size of address book","lastModifiedDate":"2017-05-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":89,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":90,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-18"},{"lineNumber":91,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-05-18"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-05-18"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex,","lastModifiedDate":"2018-08-08"},{"lineNumber":95,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":97,"author":{"gitId":"radeon2525"},"content":" assertCommandFailure(editCommand, model, commandHistory, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-18"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":" final EditCommand standardCommand \u003d new EditCommand(INDEX_FIRST_PERSON, DESC_AMY);","lastModifiedDate":"2018-08-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":" EditPersonDescriptor copyDescriptor \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(INDEX_FIRST_PERSON, copyDescriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":109,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":112,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2017-05-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_SECOND_PERSON, DESC_AMY)));","lastModifiedDate":"2017-05-25"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":121,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_FIRST_PERSON, DESC_BOB)));","lastModifiedDate":"2017-05-25"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":125,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2019-02-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":" String expected \u003d EditCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", editPersonDescriptor\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":" + editPersonDescriptor + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08"}],"authorContributionMap":{"radeon2525":23,"-":112}},{"path":"src/test/java/seedu/address/logic/commands/ExitCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2018-12-09"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.ExitCommand.MESSAGE_EXIT_ACKNOWLEDGEMENT;","lastModifiedDate":"2017-06-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":8,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2018-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class ExitCommandTest {","lastModifiedDate":"2017-06-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2018-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2018-12-09"},{"lineNumber":15,"author":{"gitId":"radeon2525"},"content":" private CommandHistory commandHistory \u003d new CommandHistory();","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public void execute_exit_success() {","lastModifiedDate":"2017-06-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(MESSAGE_EXIT_ACKNOWLEDGEMENT, false, true);","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"radeon2525"},"content":" assertCommandSuccess(new ExitCommand(), model, commandHistory, expectedCommandResult, expectedModel);","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-08"}],"authorContributionMap":{"radeon2525":3,"-":19}},{"path":"src/test/java/seedu/address/logic/commands/FindCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_PERSONS_LISTED_OVERVIEW;","lastModifiedDate":"2023-07-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2018-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.CARL;","lastModifiedDate":"2017-07-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ELLE;","lastModifiedDate":"2017-07-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.FIONA;","lastModifiedDate":"2017-07-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code FindCommand}.","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class FindCommandTest {","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2018-08-08"},{"lineNumber":30,"author":{"gitId":"radeon2525"},"content":" private CommandHistory commandHistory \u003d new CommandHistory();","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicate \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"first\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate secondPredicate \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"second\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" FindCommand findFirstCommand \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" FindCommand findSecondCommand \u003d new FindCommand(secondPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" FindCommand findFirstCommandCopy \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommandCopy));","lastModifiedDate":"2017-06-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(1));","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(null));","lastModifiedDate":"2017-06-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(findSecondCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void execute_zeroKeywords_noPersonFound() {","lastModifiedDate":"2017-08-15"},{"lineNumber":61,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2017-06-12"},{"lineNumber":62,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\" \");","lastModifiedDate":"2018-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":65,"author":{"gitId":"radeon2525"},"content":" assertCommandSuccess(command, model, commandHistory, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void execute_multipleKeywords_multiplePersonsFound() {","lastModifiedDate":"2017-08-15"},{"lineNumber":71,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 3);","lastModifiedDate":"2017-06-12"},{"lineNumber":72,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\"Kurz Elle Kunz\");","lastModifiedDate":"2018-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":75,"author":{"gitId":"radeon2525"},"content":" assertCommandSuccess(command, model, commandHistory, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(CARL, ELLE, FIONA), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"keyword\"));","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" FindCommand findCommand \u003d new FindCommand(predicate);","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" String expected \u003d FindCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertEquals(expected, findCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-12"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * Parses {@code userInput} into a {@code NameContainsKeywordsPredicate}.","lastModifiedDate":"2018-08-08"},{"lineNumber":89,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":90,"author":{"gitId":"-"},"content":" private NameContainsKeywordsPredicate preparePredicate(String userInput) {","lastModifiedDate":"2018-08-08"},{"lineNumber":91,"author":{"gitId":"-"},"content":" return new NameContainsKeywordsPredicate(Arrays.asList(userInput.split(\"\\\\s+\")));","lastModifiedDate":"2018-08-08"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":93,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"radeon2525":4,"-":89}},{"path":"src/test/java/seedu/address/logic/commands/HelpCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.HelpCommand.SHOWING_HELP_MESSAGE;","lastModifiedDate":"2017-06-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":8,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2018-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class HelpCommandTest {","lastModifiedDate":"2017-06-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2018-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2018-08-08"},{"lineNumber":15,"author":{"gitId":"radeon2525"},"content":" private CommandHistory commandHistory \u003d new CommandHistory();","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public void execute_help_success() {","lastModifiedDate":"2017-06-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(SHOWING_HELP_MESSAGE, true, false);","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"radeon2525"},"content":" assertCommandSuccess(new HelpCommand(), model, commandHistory, expectedCommandResult, expectedModel);","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-08"}],"authorContributionMap":{"radeon2525":3,"-":19}},{"path":"src/test/java/seedu/address/logic/commands/ListCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2018-01-31"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":11,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for ListCommand.","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class ListCommandTest {","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private Model expectedModel;","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"radeon2525"},"content":" private CommandHistory commandHistory \u003d new CommandHistory();","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void execute_listIsNotFiltered_showsSameList() {","lastModifiedDate":"2017-08-15"},{"lineNumber":33,"author":{"gitId":"radeon2525"},"content":" assertCommandSuccess(new ListCommand(), model, commandHistory, ListCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void execute_listIsFiltered_showsEverything() {","lastModifiedDate":"2017-08-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":39,"author":{"gitId":"radeon2525"},"content":" assertCommandSuccess(new ListCommand(), model, commandHistory, ListCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"radeon2525":4,"-":37}},{"path":"src/test/java/seedu/address/logic/commands/RedoCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"radeon2525"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"radeon2525"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"radeon2525"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"radeon2525"},"content":"import static seedu.address.logic.commands.CommandTestUtil.deleteFirstPerson;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"radeon2525"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"radeon2525"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"radeon2525"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"radeon2525"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"radeon2525"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"radeon2525"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"radeon2525"},"content":"public class RedoCommandTest {","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"radeon2525"},"content":" private final Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"radeon2525"},"content":" private final Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"radeon2525"},"content":" private final CommandHistory commandHistory \u003d new CommandHistory();","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"radeon2525"},"content":" @BeforeEach","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"radeon2525"},"content":" public void setUp() {","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"radeon2525"},"content":" // set up of both models\u0027 undo/redo history","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"radeon2525"},"content":" deleteFirstPerson(model);","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"radeon2525"},"content":" deleteFirstPerson(model);","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"radeon2525"},"content":" model.undoAddressBook();","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"radeon2525"},"content":" model.undoAddressBook();","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"radeon2525"},"content":" deleteFirstPerson(expectedModel);","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"radeon2525"},"content":" deleteFirstPerson(expectedModel);","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"radeon2525"},"content":" expectedModel.undoAddressBook();","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"radeon2525"},"content":" expectedModel.undoAddressBook();","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"radeon2525"},"content":" public void execute() {","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"radeon2525"},"content":" // multiple redoable states in model","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"radeon2525"},"content":" expectedModel.redoAddressBook();","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"radeon2525"},"content":" assertCommandSuccess(new RedoCommand(), model, commandHistory, RedoCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"radeon2525"},"content":" // single redoable state in model","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"radeon2525"},"content":" expectedModel.redoAddressBook();","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"radeon2525"},"content":" assertCommandSuccess(new RedoCommand(), model, commandHistory, RedoCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"radeon2525"},"content":" // no redoable state in model","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"radeon2525"},"content":" assertCommandFailure(new RedoCommand(), model, commandHistory, RedoCommand.MESSAGE_FAILURE);","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"radeon2525"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"radeon2525":49}},{"path":"src/test/java/seedu/address/logic/commands/TagCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Derekljh"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"Derekljh"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"Derekljh"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"Derekljh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"Derekljh"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"Derekljh"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"Derekljh"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"Derekljh"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"radeon2525"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"Derekljh"},"content":"import java.util.Collection;","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"Derekljh"},"content":"import java.util.List;","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"Derekljh"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"Derekljh"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"Derekljh"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"Derekljh"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"Derekljh"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"Derekljh"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"Derekljh"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"Derekljh"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"Derekljh"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"Derekljh"},"content":" * Contains integration tests (interactions with the Model) and unit tests for TagCommand.","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"Derekljh"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"Derekljh"},"content":"class TagCommandTest {","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"Derekljh"},"content":" private static final Tag TAG_OWES_MONEY \u003d new Tag(\"owesMoney\");","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"Derekljh"},"content":" private static final Tag TAG_FRIENDS \u003d new Tag(\"friends\");","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"Derekljh"},"content":" private static final Collection\u003cTag\u003e TAGS \u003d List.of(TAG_OWES_MONEY, TAG_FRIENDS);","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"Derekljh"},"content":" private Model model;","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"Derekljh"},"content":" @BeforeEach","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"Derekljh"},"content":" public void init() {","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"Derekljh"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"Derekljh"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"Derekljh"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"Derekljh"},"content":" assertThrows(NullPointerException.class, () -\u003e new TagCommand(null, null));","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"Derekljh"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"Derekljh"},"content":" public void execute_indexOutOfBounds_failure() {","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"Derekljh"},"content":" Index index \u003d Index.fromOneBased(999);","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"Derekljh"},"content":" TagCommand command \u003d new TagCommand(index, TAGS);","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"Derekljh"},"content":" String expectedMessage \u003d Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"radeon2525"},"content":" assertCommandFailure(command, model, new CommandHistory(), expectedMessage);","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"radeon2525"},"content":" public void showTags_singleTag_returnsSingleTag() {","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"radeon2525"},"content":" // Create a collection containing a single tag","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"radeon2525"},"content":" Collection\u003cTag\u003e tags \u003d Arrays.asList(new Tag(\"friend\"));","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"radeon2525"},"content":" // Call the showTags method","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"radeon2525"},"content":" String result \u003d TagCommand.showTags(tags);","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"radeon2525"},"content":" // Verify that the result is the same as the single tag","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"radeon2525"},"content":" assertEquals(\"friend\", result);","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":68,"author":{"gitId":"Derekljh"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"Derekljh"},"content":" public void equals() {","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"Derekljh"},"content":" final TagCommand standardCommand \u003d new TagCommand(INDEX_FIRST_PERSON, TAGS);","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"Derekljh"},"content":" // same object -\u003e equal","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"Derekljh"},"content":" assertEquals(standardCommand, standardCommand);","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":75,"author":{"gitId":"Derekljh"},"content":" // same values -\u003e equal","lastModifiedDate":"2024-03-16"},{"lineNumber":76,"author":{"gitId":"Derekljh"},"content":" var commandWithSameValues \u003d new TagCommand(INDEX_FIRST_PERSON, TAGS);","lastModifiedDate":"2024-03-16"},{"lineNumber":77,"author":{"gitId":"Derekljh"},"content":" assertEquals(standardCommand, commandWithSameValues);","lastModifiedDate":"2024-03-16"},{"lineNumber":78,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":79,"author":{"gitId":"Derekljh"},"content":" // tags in different order -\u003e equal","lastModifiedDate":"2024-03-16"},{"lineNumber":80,"author":{"gitId":"Derekljh"},"content":" var tagsInDifferentOrder \u003d List.of(TAG_FRIENDS, TAG_OWES_MONEY);","lastModifiedDate":"2024-03-16"},{"lineNumber":81,"author":{"gitId":"Derekljh"},"content":" assertEquals(standardCommand, new TagCommand(INDEX_FIRST_PERSON, tagsInDifferentOrder));","lastModifiedDate":"2024-03-16"},{"lineNumber":82,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":83,"author":{"gitId":"Derekljh"},"content":" // null -\u003e not equal","lastModifiedDate":"2024-03-16"},{"lineNumber":84,"author":{"gitId":"Derekljh"},"content":" assertNotEquals(null, standardCommand);","lastModifiedDate":"2024-03-16"},{"lineNumber":85,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":86,"author":{"gitId":"Derekljh"},"content":" // different index -\u003e not equal","lastModifiedDate":"2024-03-16"},{"lineNumber":87,"author":{"gitId":"Derekljh"},"content":" assertNotEquals(standardCommand, new TagCommand(INDEX_SECOND_PERSON, TAGS));","lastModifiedDate":"2024-03-16"},{"lineNumber":88,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":89,"author":{"gitId":"Derekljh"},"content":" // different tags -\u003e not equal","lastModifiedDate":"2024-03-16"},{"lineNumber":90,"author":{"gitId":"Derekljh"},"content":" assertNotEquals(standardCommand, new TagCommand(INDEX_FIRST_PERSON, List.of(TAG_OWES_MONEY)));","lastModifiedDate":"2024-03-16"},{"lineNumber":91,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":92,"author":{"gitId":"Derekljh"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"Derekljh":76,"radeon2525":16}},{"path":"src/test/java/seedu/address/logic/commands/UndoCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"radeon2525"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"radeon2525"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"radeon2525"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"radeon2525"},"content":"import static seedu.address.logic.commands.CommandTestUtil.deleteFirstPerson;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"radeon2525"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"radeon2525"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"radeon2525"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"radeon2525"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"radeon2525"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"radeon2525"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"radeon2525"},"content":"public class UndoCommandTest {","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"radeon2525"},"content":" private final Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"radeon2525"},"content":" private final Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"radeon2525"},"content":" private final CommandHistory commandHistory \u003d new CommandHistory();","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"radeon2525"},"content":" @BeforeEach","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"radeon2525"},"content":" public void setUp() {","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"radeon2525"},"content":" // set up of models\u0027 undo/redo history","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"radeon2525"},"content":" deleteFirstPerson(model);","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"radeon2525"},"content":" deleteFirstPerson(model);","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"radeon2525"},"content":" deleteFirstPerson(expectedModel);","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"radeon2525"},"content":" deleteFirstPerson(expectedModel);","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"radeon2525"},"content":" public void execute() {","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"radeon2525"},"content":" // multiple undoable states in model","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"radeon2525"},"content":" expectedModel.undoAddressBook();","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"radeon2525"},"content":" assertCommandSuccess(new UndoCommand(), model, commandHistory, UndoCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"radeon2525"},"content":" // single undoable state in model","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"radeon2525"},"content":" expectedModel.undoAddressBook();","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"radeon2525"},"content":" assertCommandSuccess(new UndoCommand(), model, commandHistory, UndoCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"radeon2525"},"content":" // no undoable states in model","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"radeon2525"},"content":" assertCommandFailure(new UndoCommand(), model, commandHistory, UndoCommand.MESSAGE_FAILURE);","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"radeon2525"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"radeon2525":45}},{"path":"src/test/java/seedu/address/logic/commands/UntagCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"miffi"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"miffi"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"miffi"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"miffi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"miffi"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"miffi"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"miffi"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"miffi"},"content":"import java.util.Collection;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"miffi"},"content":"import java.util.List;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"miffi"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"miffi"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"miffi"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"miffi"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"miffi"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"miffi"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"miffi"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"miffi"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"miffi"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"miffi"},"content":" * Contains integration tests (interactions with the Model) and unit tests for UntagCommand.","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"miffi"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"miffi"},"content":"class UntagCommandTest {","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"miffi"},"content":" private static final Tag TAG_OWES_MONEY \u003d new Tag(\"owesMoney\");","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"miffi"},"content":" private static final Tag TAG_FRIENDS \u003d new Tag(\"friends\");","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"miffi"},"content":" private static final Collection\u003cTag\u003e TAGS \u003d List.of(TAG_OWES_MONEY, TAG_FRIENDS);","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"miffi"},"content":" private Model model;","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"miffi"},"content":" @BeforeEach","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"miffi"},"content":" public void init() {","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"miffi"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"miffi"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"miffi"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"miffi"},"content":" public void execute_tagMissing_failure() {","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"miffi"},"content":" var index \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"miffi"},"content":" var personName \u003d model.getFilteredPersonList().get(index.getZeroBased()).getName();","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"miffi"},"content":" var command \u003d new UntagCommand(index, TAGS);","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"miffi"},"content":" var expectedMessage \u003d String.format(","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"miffi"},"content":" Messages.MESSAGE_MISSING_TAG,","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"miffi"},"content":" personName,","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"miffi"},"content":" \"owesMoney\");","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"radeon2525"},"content":" assertCommandFailure(command, model, new CommandHistory(), expectedMessage);","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"miffi"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"miffi"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"miffi"},"content":" public void execute_indexOutOfBounds_failure() {","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"miffi"},"content":" var index \u003d Index.fromOneBased(999);","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"miffi"},"content":" var command \u003d new UntagCommand(index, TAGS);","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"miffi"},"content":" var expectedMessage \u003d Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"radeon2525"},"content":" assertCommandFailure(command, model, new CommandHistory(), expectedMessage);","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"miffi"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"miffi"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"miffi"},"content":" public void equals() {","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"miffi"},"content":" final UntagCommand standardCommand \u003d new UntagCommand(INDEX_FIRST_PERSON, TAGS);","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":66,"author":{"gitId":"miffi"},"content":" // same object -\u003e equal","lastModifiedDate":"2024-03-16"},{"lineNumber":67,"author":{"gitId":"miffi"},"content":" assertEquals(standardCommand, standardCommand);","lastModifiedDate":"2024-03-16"},{"lineNumber":68,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"miffi"},"content":" // same values -\u003e equal","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"miffi"},"content":" var commandWithSameValues \u003d new UntagCommand(INDEX_FIRST_PERSON, TAGS);","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"miffi"},"content":" assertEquals(standardCommand, commandWithSameValues);","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"miffi"},"content":" // tags in different order -\u003e equal","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"miffi"},"content":" var tagsInDifferentOrder \u003d List.of(TAG_FRIENDS, TAG_OWES_MONEY);","lastModifiedDate":"2024-03-16"},{"lineNumber":75,"author":{"gitId":"miffi"},"content":" assertEquals(standardCommand, new UntagCommand(INDEX_FIRST_PERSON, tagsInDifferentOrder));","lastModifiedDate":"2024-03-16"},{"lineNumber":76,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":77,"author":{"gitId":"miffi"},"content":" // null -\u003e not equal","lastModifiedDate":"2024-03-16"},{"lineNumber":78,"author":{"gitId":"miffi"},"content":" assertNotEquals(null, standardCommand);","lastModifiedDate":"2024-03-16"},{"lineNumber":79,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":80,"author":{"gitId":"miffi"},"content":" // different types -\u003e not equal","lastModifiedDate":"2024-03-16"},{"lineNumber":81,"author":{"gitId":"miffi"},"content":" assertNotEquals(standardCommand, new ClearCommand());","lastModifiedDate":"2024-03-16"},{"lineNumber":82,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":83,"author":{"gitId":"miffi"},"content":" // different index -\u003e not equal","lastModifiedDate":"2024-03-16"},{"lineNumber":84,"author":{"gitId":"miffi"},"content":" assertNotEquals(standardCommand, new UntagCommand(INDEX_SECOND_PERSON, TAGS));","lastModifiedDate":"2024-03-16"},{"lineNumber":85,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":86,"author":{"gitId":"miffi"},"content":" // different tags -\u003e not equal","lastModifiedDate":"2024-03-16"},{"lineNumber":87,"author":{"gitId":"miffi"},"content":" assertNotEquals(standardCommand, new UntagCommand(INDEX_FIRST_PERSON, List.of(TAG_OWES_MONEY)));","lastModifiedDate":"2024-03-16"},{"lineNumber":88,"author":{"gitId":"miffi"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":89,"author":{"gitId":"miffi"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"radeon2525":3,"miffi":86}},{"path":"src/test/java/seedu/address/logic/parser/AddressBookParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-06-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.commands.RedoCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"Derekljh"},"content":"import seedu.address.logic.commands.TagCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.commands.UndoCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"miffi"},"content":"import seedu.address.logic.commands.UntagCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-27"},{"lineNumber":33,"author":{"gitId":"Derekljh"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-06-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonUtil;","lastModifiedDate":"2017-06-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":42,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"radeon2525"},"content":" public void parseCommand_undoCommand_returnsUndoCommand() throws ParseException {","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"radeon2525"},"content":" Command command \u003d parser.parseCommand(\"undo\");","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"radeon2525"},"content":" assertTrue(command instanceof UndoCommand);","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"radeon2525"},"content":" public void parseCommand_redoCommand_returnsRedoCommand() throws ParseException {","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"radeon2525"},"content":" Command command \u003d parser.parseCommand(\"redo\");","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"radeon2525"},"content":" assertTrue(command instanceof RedoCommand);","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(PersonUtil.getAddCommand(person));","lastModifiedDate":"2017-06-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertEquals(new AddCommand(person), command);","lastModifiedDate":"2017-06-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" DeleteCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2017-06-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertEquals(new DeleteCommand(INDEX_FIRST_PERSON), command);","lastModifiedDate":"2017-06-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(person).build();","lastModifiedDate":"2017-06-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":" + INDEX_FIRST_PERSON.getOneBased() + \" \" + PersonUtil.getEditPersonDescriptorDetails(descriptor));","lastModifiedDate":"2018-03-26"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertEquals(new EditCommand(INDEX_FIRST_PERSON, descriptor), command);","lastModifiedDate":"2017-06-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2017-06-12"},{"lineNumber":92,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":" FindCommand.COMMAND_WORD + \" \" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2017-06-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertEquals(new FindCommand(new NameContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2017-06-12"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD) instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" 3\") instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":109,"author":{"gitId":"Derekljh"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":110,"author":{"gitId":"Derekljh"},"content":" public void parseCommand_tag() throws Exception {","lastModifiedDate":"2024-03-16"},{"lineNumber":111,"author":{"gitId":"Derekljh"},"content":" TagCommand expectedCommand \u003d new TagCommand(INDEX_FIRST_PERSON, List.of(new Tag(\"alpha\"), new Tag(\"beta\")));","lastModifiedDate":"2024-03-16"},{"lineNumber":112,"author":{"gitId":"Derekljh"},"content":" assertEquals(expectedCommand, parser.parseCommand(TagCommand.COMMAND_WORD","lastModifiedDate":"2024-03-16"},{"lineNumber":113,"author":{"gitId":"Derekljh"},"content":" + \" \"","lastModifiedDate":"2024-03-16"},{"lineNumber":114,"author":{"gitId":"Derekljh"},"content":" + INDEX_FIRST_PERSON.getOneBased()","lastModifiedDate":"2024-03-16"},{"lineNumber":115,"author":{"gitId":"The-Dudeski"},"content":" + \" tag:alpha tag:beta\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":116,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":117,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":118,"author":{"gitId":"miffi"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":119,"author":{"gitId":"miffi"},"content":" public void parseCommand_untag() throws Exception {","lastModifiedDate":"2024-03-16"},{"lineNumber":120,"author":{"gitId":"miffi"},"content":" var index \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-16"},{"lineNumber":121,"author":{"gitId":"miffi"},"content":" var expectedCommand \u003d new UntagCommand(index, List.of(new Tag(\"alpha\"), new Tag(\"beta\")));","lastModifiedDate":"2024-03-16"},{"lineNumber":122,"author":{"gitId":"miffi"},"content":" assertEquals(expectedCommand, parser.parseCommand(UntagCommand.COMMAND_WORD","lastModifiedDate":"2024-03-16"},{"lineNumber":123,"author":{"gitId":"miffi"},"content":" + \" \"","lastModifiedDate":"2024-03-16"},{"lineNumber":124,"author":{"gitId":"miffi"},"content":" + INDEX_FIRST_PERSON.getOneBased()","lastModifiedDate":"2024-03-16"},{"lineNumber":125,"author":{"gitId":"The-Dudeski"},"content":" + \" tag:alpha tag:beta\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":126,"author":{"gitId":"miffi"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":127,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":129,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":134,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":135,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":138,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"The-Dudeski":2,"Derekljh":10,"radeon2525":15,"miffi":10,"-":101}},{"path":"src/test/java/seedu/address/logic/parser/TagCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Derekljh"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"Derekljh"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"Derekljh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"Derekljh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"Derekljh"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"Derekljh"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"Derekljh"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"Derekljh"},"content":"import java.util.Collection;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"Derekljh"},"content":"import java.util.List;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"Derekljh"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"Derekljh"},"content":"import seedu.address.logic.commands.TagCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"Derekljh"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"Derekljh"},"content":"class TagCommandParserTest {","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"Derekljh"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"Derekljh"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, TagCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"Derekljh"},"content":" private static final Tag TAG1 \u003d new Tag(\"friend\");","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"Derekljh"},"content":" private static final Tag TAG2 \u003d new Tag(\"husband\");","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"Derekljh"},"content":" private static final Collection\u003cTag\u003e TAGS \u003d List.of(TAG1, TAG2);","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"Derekljh"},"content":" private final TagCommandParser parser \u003d new TagCommandParser();","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"Derekljh"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"Derekljh"},"content":" public void parse_validArgs_returnsTagCommand() {","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"Derekljh"},"content":" var index \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"Derekljh"},"content":" assertParseSuccess(parser, index.getOneBased() + TAG_DESC_FRIEND + TAG_DESC_HUSBAND,","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"Derekljh"},"content":" new TagCommand(index, TAGS));","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"Derekljh"},"content":" // order should not matter","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"Derekljh"},"content":" assertParseSuccess(parser, index.getOneBased() + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"Derekljh"},"content":" new TagCommand(index, TAGS));","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"Derekljh"},"content":" // one tag","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"Derekljh"},"content":" assertParseSuccess(parser, index.getOneBased() + TAG_DESC_HUSBAND,","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"Derekljh"},"content":" new TagCommand(index, List.of(TAG2)));","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"Derekljh"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"Derekljh"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"Derekljh"},"content":" // no tags given","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"Derekljh"},"content":" assertParseFailure(parser, \"1\",","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"Derekljh"},"content":" MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"Derekljh"},"content":" // no index given","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"Derekljh"},"content":" assertParseFailure(parser, \"t/friend\",","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"Derekljh"},"content":" MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"Derekljh"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"Derekljh":54}},{"path":"src/test/java/seedu/address/logic/parser/UntagCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"miffi"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"miffi"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"miffi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"miffi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"miffi"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"miffi"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"miffi"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"miffi"},"content":"import java.util.Collection;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"miffi"},"content":"import java.util.List;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"miffi"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"miffi"},"content":"import seedu.address.logic.commands.UntagCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"miffi"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"miffi"},"content":"class UntagCommandParserTest {","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"miffi"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"miffi"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, UntagCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"miffi"},"content":" private static final Tag TAG1 \u003d new Tag(\"friend\");","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"miffi"},"content":" private static final Tag TAG2 \u003d new Tag(\"husband\");","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"miffi"},"content":" private static final Collection\u003cTag\u003e TAGS \u003d List.of(TAG1, TAG2);","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"miffi"},"content":" private final UntagCommandParser parser \u003d new UntagCommandParser();","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"miffi"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"miffi"},"content":" public void parse_validArgs_returnsUntagCommand() {","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"miffi"},"content":" var index \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"miffi"},"content":" assertParseSuccess(parser, index.getOneBased() + TAG_DESC_FRIEND + TAG_DESC_HUSBAND,","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"miffi"},"content":" new UntagCommand(index, TAGS));","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"miffi"},"content":" // order should not matter","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"miffi"},"content":" assertParseSuccess(parser, index.getOneBased() + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"miffi"},"content":" new UntagCommand(index, TAGS));","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"miffi"},"content":" // one tag","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"miffi"},"content":" assertParseSuccess(parser, index.getOneBased() + TAG_DESC_HUSBAND,","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"miffi"},"content":" new UntagCommand(index, List.of(TAG2)));","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"miffi"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"miffi"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"miffi"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"miffi"},"content":" // no tags given","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"miffi"},"content":" assertParseFailure(parser, \"1\",","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"miffi"},"content":" MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"miffi"},"content":" // no index given","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"miffi"},"content":" assertParseFailure(parser, \"t/friend\",","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"miffi"},"content":" MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"miffi"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"miffi"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"miffi":54}},{"path":"src/test/java/seedu/address/model/AddressBookTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-12-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-04-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2017-07-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2016-12-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2016-12-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2016-12-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":19,"author":{"gitId":"radeon2525"},"content":"import javafx.beans.InvalidationListener;","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"radeon2525"},"content":"import javafx.beans.Observable;","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2016-12-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-12-24"},{"lineNumber":23,"author":{"gitId":"radeon2525"},"content":"import seedu.address.commons.util.InvalidationListenerManager;","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2018-08-07"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-04-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":28,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class AddressBookTest {","lastModifiedDate":"2016-12-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2016-12-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2016-12-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), addressBook.getPersonList());","lastModifiedDate":"2016-12-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void resetData_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.resetData(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":43,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"radeon2525"},"content":" public void removeListener_success() {","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"radeon2525"},"content":" AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"radeon2525"},"content":" InvalidationListenerManager manager \u003d addressBook.invalidationListenerManager;","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"radeon2525"},"content":" // Create a listener","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"radeon2525"},"content":" InvalidationListener listener \u003d new InvalidationListener() {","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"radeon2525"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"radeon2525"},"content":" public void invalidated(Observable observable) {","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"radeon2525"},"content":" // Do nothing","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"radeon2525"},"content":" };","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"radeon2525"},"content":" // Remove the listener","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"radeon2525"},"content":" addressBook.removeListener(listener);","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"radeon2525"},"content":" // Ensure the listener is removed","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"radeon2525"},"content":" assertFalse(manager.listeners.contains(listener));","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"radeon2525"},"content":" public void addListener_success() {","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"radeon2525"},"content":" AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"radeon2525"},"content":" InvalidationListenerManager manager \u003d addressBook.invalidationListenerManager;","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"radeon2525"},"content":" // Create a listener","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"radeon2525"},"content":" TestInvalidationListener listener \u003d new TestInvalidationListener();","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"radeon2525"},"content":" // Add the listener","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"radeon2525"},"content":" addressBook.addListener(listener);","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"radeon2525"},"content":" // Trigger an invalidation event","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"radeon2525"},"content":" addressBook.indicateModified();","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"radeon2525"},"content":" // Ensure the listener is notified","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"radeon2525"},"content":" assertTrue(listener.isInvalidated());","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"radeon2525"},"content":" // Define a test InvalidationListener implementation","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"radeon2525"},"content":" private static class TestInvalidationListener implements InvalidationListener {","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"radeon2525"},"content":" private boolean invalidated \u003d false;","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"radeon2525"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"radeon2525"},"content":" public void invalidated(Observable observable) {","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"radeon2525"},"content":" invalidated \u003d true;","lastModifiedDate":"2024-03-20"},{"lineNumber":88,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":89,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":90,"author":{"gitId":"radeon2525"},"content":" public boolean isInvalidated() {","lastModifiedDate":"2024-03-20"},{"lineNumber":91,"author":{"gitId":"radeon2525"},"content":" return invalidated;","lastModifiedDate":"2024-03-20"},{"lineNumber":92,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":93,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":94,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":96,"author":{"gitId":"-"},"content":" public void resetData_withValidReadOnlyAddressBook_replacesData() {","lastModifiedDate":"2016-12-24"},{"lineNumber":97,"author":{"gitId":"-"},"content":" AddressBook newData \u003d getTypicalAddressBook();","lastModifiedDate":"2017-07-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" addressBook.resetData(newData);","lastModifiedDate":"2016-12-24"},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertEquals(newData, addressBook);","lastModifiedDate":"2016-12-24"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":103,"author":{"gitId":"-"},"content":" public void resetData_withDuplicatePersons_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-07"},{"lineNumber":104,"author":{"gitId":"-"},"content":" // Two persons with the same identity fields","lastModifiedDate":"2018-04-19"},{"lineNumber":105,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2018-04-19"},{"lineNumber":106,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-04-19"},{"lineNumber":107,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e newPersons \u003d Arrays.asList(ALICE, editedAlice);","lastModifiedDate":"2018-04-19"},{"lineNumber":108,"author":{"gitId":"-"},"content":" AddressBookStub newData \u003d new AddressBookStub(newPersons);","lastModifiedDate":"2018-03-29"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e addressBook.resetData(newData));","lastModifiedDate":"2019-03-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":114,"author":{"gitId":"-"},"content":" public void hasPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-06"},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.hasPerson(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":118,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":119,"author":{"gitId":"-"},"content":" public void hasPerson_personNotInAddressBook_returnsFalse() {","lastModifiedDate":"2018-08-06"},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertFalse(addressBook.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":124,"author":{"gitId":"-"},"content":" public void hasPerson_personInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07"},{"lineNumber":125,"author":{"gitId":"-"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2018-08-06"},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertTrue(addressBook.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":129,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":130,"author":{"gitId":"-"},"content":" public void hasPerson_personWithSameIdentityFieldsInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07"},{"lineNumber":131,"author":{"gitId":"-"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2018-08-06"},{"lineNumber":132,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2018-08-06"},{"lineNumber":133,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-06"},{"lineNumber":134,"author":{"gitId":"-"},"content":" assertTrue(addressBook.hasPerson(editedAlice));","lastModifiedDate":"2018-08-06"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":137,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":138,"author":{"gitId":"-"},"content":" public void getPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":139,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e addressBook.getPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":142,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":" String expected \u003d AddressBook.class.getCanonicalName() + \"{persons\u003d\" + addressBook.getPersonList() + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":" assertEquals(expected, addressBook.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-24"},{"lineNumber":149,"author":{"gitId":"-"},"content":" * A stub ReadOnlyAddressBook whose persons list can violate interface constraints.","lastModifiedDate":"2018-03-29"},{"lineNumber":150,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-24"},{"lineNumber":151,"author":{"gitId":"-"},"content":" private static class AddressBookStub implements ReadOnlyAddressBook {","lastModifiedDate":"2016-12-24"},{"lineNumber":152,"author":{"gitId":"-"},"content":" private final ObservableList\u003cPerson\u003e persons \u003d FXCollections.observableArrayList();","lastModifiedDate":"2018-01-10"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":154,"author":{"gitId":"-"},"content":" AddressBookStub(Collection\u003cPerson\u003e persons) {","lastModifiedDate":"2018-03-29"},{"lineNumber":155,"author":{"gitId":"-"},"content":" this.persons.setAll(persons);","lastModifiedDate":"2016-12-24"},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":158,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-24"},{"lineNumber":159,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":160,"author":{"gitId":"-"},"content":" return persons;","lastModifiedDate":"2016-12-24"},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":162,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":164,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-24"}],"authorContributionMap":{"radeon2525":56,"-":108}},{"path":"src/test/java/seedu/address/model/ModelManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2017-05-31"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"radeon2525"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2017-07-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2017-07-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-31"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"radeon2525"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.testutil.AddressBookBuilder;","lastModifiedDate":"2017-05-31"},{"lineNumber":22,"author":{"gitId":"radeon2525"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"radeon2525"},"content":"import seedu.address.testutil.TypicalPersons;","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class ModelManagerTest {","lastModifiedDate":"2017-05-31"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private ModelManager modelManager \u003d new ModelManager();","lastModifiedDate":"2018-08-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2018-11-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertEquals(new UserPrefs(), modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertEquals(new GuiSettings(), modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertEquals(new AddressBook(), new AddressBook(modelManager.getAddressBook()));","lastModifiedDate":"2018-11-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void setUserPrefs_nullUserPrefs_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setUserPrefs(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"radeon2525"},"content":" public void setPerson_personInAddressBook_success() {","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"radeon2525"},"content":" // Create initial state","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"radeon2525"},"content":" ReadOnlyAddressBook initialAddressBook \u003d modelManager.getAddressBook();","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"radeon2525"},"content":" ReadOnlyUserPrefs initialUserPrefs \u003d modelManager.getUserPrefs();","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"radeon2525"},"content":" // Add a valid person to the address book","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"radeon2525"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"radeon2525"},"content":" modelManager.addPerson(validPerson);","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"radeon2525"},"content":" // Create an edited version of the person","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"radeon2525"},"content":" Person editedPerson \u003d new PersonBuilder(validPerson).withName(\"New Name\").build();","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"radeon2525"},"content":" // Set edited person in the model","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"radeon2525"},"content":" modelManager.setPerson(validPerson, editedPerson);","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"radeon2525"},"content":" // Check if the edited person is in the filteredPersons list","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"radeon2525"},"content":" assertEquals(editedPerson, modelManager.getFilteredPersonList().get(0));","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"radeon2525"},"content":" assertNotEquals(validPerson, modelManager.getFilteredPersonList().get(0));","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"radeon2525"},"content":" // Ensure that the address book\u0027s state was not changed","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"radeon2525"},"content":" assertEquals(initialAddressBook, modelManager.getAddressBook());","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"radeon2525"},"content":" // Ensure that the user prefs remain unchanged","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"radeon2525"},"content":" assertEquals(initialUserPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void setUserPrefs_validUserPrefs_copiesUserPrefs() {","lastModifiedDate":"2018-12-06"},{"lineNumber":70,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"address/book/file/path\"));","lastModifiedDate":"2018-11-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(new GuiSettings(1, 2, 3, 4));","lastModifiedDate":"2018-11-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" modelManager.setUserPrefs(userPrefs);","lastModifiedDate":"2018-11-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertEquals(userPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":76,"author":{"gitId":"-"},"content":" // Modifying userPrefs should not modify modelManager\u0027s userPrefs","lastModifiedDate":"2018-12-06"},{"lineNumber":77,"author":{"gitId":"-"},"content":" UserPrefs oldUserPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":78,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"new/address/book/file/path\"));","lastModifiedDate":"2018-12-06"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertEquals(oldUserPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-12-06"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void setGuiSettings_nullGuiSettings_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setGuiSettings(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void setGuiSettings_validGuiSettings_setsGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(1, 2, 3, 4);","lastModifiedDate":"2018-11-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":" modelManager.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertEquals(guiSettings, modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setAddressBookFilePath(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_validPath_setsAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":101,"author":{"gitId":"-"},"content":" Path path \u003d Paths.get(\"address/book/file/path\");","lastModifiedDate":"2018-11-27"},{"lineNumber":102,"author":{"gitId":"-"},"content":" modelManager.setAddressBookFilePath(path);","lastModifiedDate":"2018-11-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertEquals(path, modelManager.getAddressBookFilePath());","lastModifiedDate":"2018-11-27"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public void hasPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-06"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasPerson(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":112,"author":{"gitId":"-"},"content":" public void hasPerson_personNotInAddressBook_returnsFalse() {","lastModifiedDate":"2018-08-06"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertFalse(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":117,"author":{"gitId":"-"},"content":" public void hasPerson_personInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07"},{"lineNumber":118,"author":{"gitId":"-"},"content":" modelManager.addPerson(ALICE);","lastModifiedDate":"2018-08-06"},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertTrue(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":122,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":124,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e modelManager.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":128,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":129,"author":{"gitId":"radeon2525"},"content":" public void constructor_validArguments_success() {","lastModifiedDate":"2024-03-19"},{"lineNumber":130,"author":{"gitId":"radeon2525"},"content":" // Create a ReadOnlyAddressBook with typical persons","lastModifiedDate":"2024-03-19"},{"lineNumber":131,"author":{"gitId":"radeon2525"},"content":" ReadOnlyAddressBook addressBook \u003d TypicalPersons.getTypicalAddressBook();","lastModifiedDate":"2024-03-19"},{"lineNumber":132,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":133,"author":{"gitId":"radeon2525"},"content":" // Create a ReadOnlyUserPrefs with typical preferences","lastModifiedDate":"2024-03-19"},{"lineNumber":134,"author":{"gitId":"radeon2525"},"content":" ReadOnlyUserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2024-03-19"},{"lineNumber":135,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":136,"author":{"gitId":"radeon2525"},"content":" // Create a ModelManager instance using the constructor with arguments","lastModifiedDate":"2024-03-19"},{"lineNumber":137,"author":{"gitId":"radeon2525"},"content":" ModelManager modelManager \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2024-03-19"},{"lineNumber":138,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":139,"author":{"gitId":"radeon2525"},"content":" // Verify that the versionedAddressBook is correctly initialized with the data from the ReadOnlyAddressBook","lastModifiedDate":"2024-03-19"},{"lineNumber":140,"author":{"gitId":"radeon2525"},"content":" assertEquals(addressBook, modelManager.getAddressBook());","lastModifiedDate":"2024-03-19"},{"lineNumber":141,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":142,"author":{"gitId":"radeon2525"},"content":" // Verify that the userPrefs is correctly initialized with the data from the ReadOnlyUserPrefs","lastModifiedDate":"2024-03-19"},{"lineNumber":143,"author":{"gitId":"radeon2525"},"content":" assertEquals(userPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2024-03-19"},{"lineNumber":144,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":145,"author":{"gitId":"radeon2525"},"content":" assertTrue(modelManager.getFilteredPersonList().containsAll(addressBook.getPersonList()));","lastModifiedDate":"2024-03-19"},{"lineNumber":146,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":147,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":148,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":149,"author":{"gitId":"radeon2525"},"content":" public void setUserPrefs_validUserPrefs_success() {","lastModifiedDate":"2024-03-19"},{"lineNumber":150,"author":{"gitId":"radeon2525"},"content":" // Create initial user preferences","lastModifiedDate":"2024-03-19"},{"lineNumber":151,"author":{"gitId":"radeon2525"},"content":" UserPrefs initialUserPrefs \u003d new UserPrefs();","lastModifiedDate":"2024-03-19"},{"lineNumber":152,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":153,"author":{"gitId":"radeon2525"},"content":" // Create a new set of user preferences","lastModifiedDate":"2024-03-19"},{"lineNumber":154,"author":{"gitId":"radeon2525"},"content":" UserPrefs newUserPrefs \u003d new UserPrefs();","lastModifiedDate":"2024-03-19"},{"lineNumber":155,"author":{"gitId":"radeon2525"},"content":" GuiSettings defaultGuiSettings \u003d new GuiSettings(800, 600, 0, 0);","lastModifiedDate":"2024-03-19"},{"lineNumber":156,"author":{"gitId":"radeon2525"},"content":" newUserPrefs.setGuiSettings(defaultGuiSettings);","lastModifiedDate":"2024-03-19"},{"lineNumber":157,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":158,"author":{"gitId":"radeon2525"},"content":" // Create a ModelManager instance","lastModifiedDate":"2024-03-19"},{"lineNumber":159,"author":{"gitId":"radeon2525"},"content":" ModelManager modelManager \u003d new ModelManager();","lastModifiedDate":"2024-03-19"},{"lineNumber":160,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":161,"author":{"gitId":"radeon2525"},"content":" // Set the user preferences","lastModifiedDate":"2024-03-19"},{"lineNumber":162,"author":{"gitId":"radeon2525"},"content":" modelManager.setUserPrefs(newUserPrefs);","lastModifiedDate":"2024-03-19"},{"lineNumber":163,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":164,"author":{"gitId":"radeon2525"},"content":" // Verify that the user preferences in the ModelManager are updated","lastModifiedDate":"2024-03-19"},{"lineNumber":165,"author":{"gitId":"radeon2525"},"content":" ReadOnlyUserPrefs retrievedUserPrefs \u003d modelManager.getUserPrefs();","lastModifiedDate":"2024-03-19"},{"lineNumber":166,"author":{"gitId":"radeon2525"},"content":" assertEquals(newUserPrefs, retrievedUserPrefs);","lastModifiedDate":"2024-03-19"},{"lineNumber":167,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":168,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":169,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-31"},{"lineNumber":170,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":171,"author":{"gitId":"-"},"content":" AddressBook addressBook \u003d new AddressBookBuilder().withPerson(ALICE).withPerson(BENSON).build();","lastModifiedDate":"2017-07-19"},{"lineNumber":172,"author":{"gitId":"-"},"content":" AddressBook differentAddressBook \u003d new AddressBook();","lastModifiedDate":"2017-05-31"},{"lineNumber":173,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":175,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":176,"author":{"gitId":"-"},"content":" modelManager \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2018-08-06"},{"lineNumber":177,"author":{"gitId":"-"},"content":" ModelManager modelManagerCopy \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2017-05-31"},{"lineNumber":178,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManagerCopy));","lastModifiedDate":"2017-05-31"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":180,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":181,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManager));","lastModifiedDate":"2017-05-31"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":183,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":184,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(null));","lastModifiedDate":"2017-05-31"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":186,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":187,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(5));","lastModifiedDate":"2017-05-31"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":189,"author":{"gitId":"-"},"content":" // different addressBook -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":190,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(differentAddressBook, userPrefs)));","lastModifiedDate":"2017-05-31"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":192,"author":{"gitId":"-"},"content":" // different filteredList -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":193,"author":{"gitId":"-"},"content":" String[] keywords \u003d ALICE.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-19"},{"lineNumber":194,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(keywords)));","lastModifiedDate":"2017-06-12"},{"lineNumber":195,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, userPrefs)));","lastModifiedDate":"2017-05-31"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":197,"author":{"gitId":"-"},"content":" // resets modelManager to initial state for upcoming tests","lastModifiedDate":"2017-08-05"},{"lineNumber":198,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":200,"author":{"gitId":"-"},"content":" // different userPrefs -\u003e returns false","lastModifiedDate":"2018-11-27"},{"lineNumber":201,"author":{"gitId":"-"},"content":" UserPrefs differentUserPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":202,"author":{"gitId":"-"},"content":" differentUserPrefs.setAddressBookFilePath(Paths.get(\"differentFilePath\"));","lastModifiedDate":"2018-08-09"},{"lineNumber":203,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, differentUserPrefs)));","lastModifiedDate":"2018-11-27"},{"lineNumber":204,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":205,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-31"}],"authorContributionMap":{"radeon2525":73,"-":132}},{"path":"src/test/java/seedu/address/model/VersionedAddressBookTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"radeon2525"},"content":"package seedu.address.model;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"radeon2525"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"radeon2525"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"radeon2525"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"radeon2525"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"radeon2525"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"radeon2525"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"radeon2525"},"content":"import static seedu.address.testutil.TypicalPersons.CARL;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"radeon2525"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"radeon2525"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"radeon2525"},"content":"import java.util.List;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"radeon2525"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"radeon2525"},"content":"import seedu.address.testutil.AddressBookBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"radeon2525"},"content":"public class VersionedAddressBookTest {","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"radeon2525"},"content":" private final ReadOnlyAddressBook addressBookWithAmy \u003d new AddressBookBuilder().withPerson(AMY).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"radeon2525"},"content":" private final ReadOnlyAddressBook addressBookWithBob \u003d new AddressBookBuilder().withPerson(BOB).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"radeon2525"},"content":" private final ReadOnlyAddressBook addressBookWithCarl \u003d new AddressBookBuilder().withPerson(CARL).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"radeon2525"},"content":" private final ReadOnlyAddressBook emptyAddressBook \u003d new AddressBookBuilder().build();","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"radeon2525"},"content":" public void commit_singleAddressBook_noStatesRemovedCurrentStateSaved() {","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook \u003d prepareAddressBookList(emptyAddressBook);","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"radeon2525"},"content":" versionedAddressBook.commit();","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"radeon2525"},"content":" assertAddressBookListStatus(versionedAddressBook,","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"radeon2525"},"content":" Collections.singletonList(emptyAddressBook),","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"radeon2525"},"content":" emptyAddressBook,","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"radeon2525"},"content":" Collections.emptyList());","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"radeon2525"},"content":" public void equals_sameInstance_returnsTrue() {","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook \u003d new VersionedAddressBook(new AddressBook());","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"radeon2525"},"content":" assertTrue(versionedAddressBook.equals(versionedAddressBook));","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"radeon2525"},"content":" public void equals_differentClass_returnsFalse() {","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook \u003d new VersionedAddressBook(new AddressBook());","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"radeon2525"},"content":" assertFalse(versionedAddressBook.equals(new Object()));","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"radeon2525"},"content":" public void equals_null_returnsFalse() {","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook \u003d new VersionedAddressBook(new AddressBook());","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"radeon2525"},"content":" assertFalse(versionedAddressBook.equals(null));","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"radeon2525"},"content":" public void equals_differentState_returnsFalse() {","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook1 \u003d new VersionedAddressBook(new AddressBook());","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook2 \u003d new VersionedAddressBook(new AddressBook());","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"radeon2525"},"content":" versionedAddressBook2.commit();","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"radeon2525"},"content":" assertFalse(versionedAddressBook1.equals(versionedAddressBook2));","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"radeon2525"},"content":" public void equals_sameState_returnsTrue() {","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook1 \u003d new VersionedAddressBook(new AddressBook());","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook2 \u003d new VersionedAddressBook(new AddressBook());","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"radeon2525"},"content":" assertTrue(versionedAddressBook1.equals(versionedAddressBook2));","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"radeon2525"},"content":" public void commit_multipleAddressBookPointerAtEndOfStateList_noStatesRemovedCurrentStateSaved() {","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook \u003d prepareAddressBookList(","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"radeon2525"},"content":" emptyAddressBook, addressBookWithAmy, addressBookWithBob);","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":75,"author":{"gitId":"radeon2525"},"content":" versionedAddressBook.commit();","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"radeon2525"},"content":" assertAddressBookListStatus(versionedAddressBook,","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"radeon2525"},"content":" Arrays.asList(emptyAddressBook, addressBookWithAmy, addressBookWithBob),","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"radeon2525"},"content":" addressBookWithBob,","lastModifiedDate":"2024-03-19"},{"lineNumber":79,"author":{"gitId":"radeon2525"},"content":" Collections.emptyList());","lastModifiedDate":"2024-03-19"},{"lineNumber":80,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":81,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":82,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":83,"author":{"gitId":"radeon2525"},"content":" public void commit_multipleAddressBookPointerNotAtEndOfStateList_statesAfterPointerRemovedCurrentStateSaved() {","lastModifiedDate":"2024-03-19"},{"lineNumber":84,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook \u003d prepareAddressBookList(","lastModifiedDate":"2024-03-19"},{"lineNumber":85,"author":{"gitId":"radeon2525"},"content":" emptyAddressBook, addressBookWithAmy, addressBookWithBob);","lastModifiedDate":"2024-03-19"},{"lineNumber":86,"author":{"gitId":"radeon2525"},"content":" shiftCurrentStatePointerLeftwards(versionedAddressBook, 2);","lastModifiedDate":"2024-03-19"},{"lineNumber":87,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":88,"author":{"gitId":"radeon2525"},"content":" versionedAddressBook.commit();","lastModifiedDate":"2024-03-19"},{"lineNumber":89,"author":{"gitId":"radeon2525"},"content":" assertAddressBookListStatus(versionedAddressBook,","lastModifiedDate":"2024-03-19"},{"lineNumber":90,"author":{"gitId":"radeon2525"},"content":" Collections.singletonList(emptyAddressBook),","lastModifiedDate":"2024-03-19"},{"lineNumber":91,"author":{"gitId":"radeon2525"},"content":" emptyAddressBook,","lastModifiedDate":"2024-03-19"},{"lineNumber":92,"author":{"gitId":"radeon2525"},"content":" Collections.emptyList());","lastModifiedDate":"2024-03-19"},{"lineNumber":93,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":94,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":95,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":96,"author":{"gitId":"radeon2525"},"content":" public void canUndo_multipleAddressBookPointerAtEndOfStateList_returnsTrue() {","lastModifiedDate":"2024-03-19"},{"lineNumber":97,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook \u003d prepareAddressBookList(","lastModifiedDate":"2024-03-19"},{"lineNumber":98,"author":{"gitId":"radeon2525"},"content":" emptyAddressBook, addressBookWithAmy, addressBookWithBob);","lastModifiedDate":"2024-03-19"},{"lineNumber":99,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":100,"author":{"gitId":"radeon2525"},"content":" assertTrue(versionedAddressBook.canUndo());","lastModifiedDate":"2024-03-19"},{"lineNumber":101,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":102,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":103,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":104,"author":{"gitId":"radeon2525"},"content":" public void canUndo_multipleAddressBookPointerAtStartOfStateList_returnsTrue() {","lastModifiedDate":"2024-03-19"},{"lineNumber":105,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook \u003d prepareAddressBookList(","lastModifiedDate":"2024-03-19"},{"lineNumber":106,"author":{"gitId":"radeon2525"},"content":" emptyAddressBook, addressBookWithAmy, addressBookWithBob);","lastModifiedDate":"2024-03-19"},{"lineNumber":107,"author":{"gitId":"radeon2525"},"content":" shiftCurrentStatePointerLeftwards(versionedAddressBook, 1);","lastModifiedDate":"2024-03-19"},{"lineNumber":108,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":109,"author":{"gitId":"radeon2525"},"content":" assertTrue(versionedAddressBook.canUndo());","lastModifiedDate":"2024-03-19"},{"lineNumber":110,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":111,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":112,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":113,"author":{"gitId":"radeon2525"},"content":" public void canUndo_singleAddressBook_returnsFalse() {","lastModifiedDate":"2024-03-19"},{"lineNumber":114,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook \u003d prepareAddressBookList(emptyAddressBook);","lastModifiedDate":"2024-03-19"},{"lineNumber":115,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":116,"author":{"gitId":"radeon2525"},"content":" assertFalse(versionedAddressBook.canUndo());","lastModifiedDate":"2024-03-19"},{"lineNumber":117,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":118,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":119,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":120,"author":{"gitId":"radeon2525"},"content":" public void canUndo_multipleAddressBookPointerAtStartOfStateList_returnsFalse() {","lastModifiedDate":"2024-03-19"},{"lineNumber":121,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook \u003d prepareAddressBookList(","lastModifiedDate":"2024-03-19"},{"lineNumber":122,"author":{"gitId":"radeon2525"},"content":" emptyAddressBook, addressBookWithAmy, addressBookWithBob);","lastModifiedDate":"2024-03-19"},{"lineNumber":123,"author":{"gitId":"radeon2525"},"content":" shiftCurrentStatePointerLeftwards(versionedAddressBook, 2);","lastModifiedDate":"2024-03-19"},{"lineNumber":124,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":125,"author":{"gitId":"radeon2525"},"content":" assertFalse(versionedAddressBook.canUndo());","lastModifiedDate":"2024-03-19"},{"lineNumber":126,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":127,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":128,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":129,"author":{"gitId":"radeon2525"},"content":" public void canRedo_multipleAddressBookPointerNotAtEndOfStateList_returnsTrue() {","lastModifiedDate":"2024-03-19"},{"lineNumber":130,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook \u003d prepareAddressBookList(","lastModifiedDate":"2024-03-19"},{"lineNumber":131,"author":{"gitId":"radeon2525"},"content":" emptyAddressBook, addressBookWithAmy, addressBookWithBob);","lastModifiedDate":"2024-03-19"},{"lineNumber":132,"author":{"gitId":"radeon2525"},"content":" shiftCurrentStatePointerLeftwards(versionedAddressBook, 1);","lastModifiedDate":"2024-03-19"},{"lineNumber":133,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":134,"author":{"gitId":"radeon2525"},"content":" assertTrue(versionedAddressBook.canRedo());","lastModifiedDate":"2024-03-19"},{"lineNumber":135,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":136,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":137,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":138,"author":{"gitId":"radeon2525"},"content":" public void canRedo_multipleAddressBookPointerAtStartOfStateList_returnsTrue() {","lastModifiedDate":"2024-03-19"},{"lineNumber":139,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook \u003d prepareAddressBookList(","lastModifiedDate":"2024-03-19"},{"lineNumber":140,"author":{"gitId":"radeon2525"},"content":" emptyAddressBook, addressBookWithAmy, addressBookWithBob);","lastModifiedDate":"2024-03-19"},{"lineNumber":141,"author":{"gitId":"radeon2525"},"content":" shiftCurrentStatePointerLeftwards(versionedAddressBook, 2);","lastModifiedDate":"2024-03-19"},{"lineNumber":142,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":143,"author":{"gitId":"radeon2525"},"content":" assertTrue(versionedAddressBook.canRedo());","lastModifiedDate":"2024-03-19"},{"lineNumber":144,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":145,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":146,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":147,"author":{"gitId":"radeon2525"},"content":" public void canRedo_singleAddressBook_returnsFalse() {","lastModifiedDate":"2024-03-19"},{"lineNumber":148,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook \u003d prepareAddressBookList(emptyAddressBook);","lastModifiedDate":"2024-03-19"},{"lineNumber":149,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":150,"author":{"gitId":"radeon2525"},"content":" assertFalse(versionedAddressBook.canRedo());","lastModifiedDate":"2024-03-19"},{"lineNumber":151,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":152,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":153,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":154,"author":{"gitId":"radeon2525"},"content":" public void canRedo_multipleAddressBookPointerAtEndOfStateList_returnsFalse() {","lastModifiedDate":"2024-03-19"},{"lineNumber":155,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook \u003d prepareAddressBookList(","lastModifiedDate":"2024-03-19"},{"lineNumber":156,"author":{"gitId":"radeon2525"},"content":" emptyAddressBook, addressBookWithAmy, addressBookWithBob);","lastModifiedDate":"2024-03-19"},{"lineNumber":157,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":158,"author":{"gitId":"radeon2525"},"content":" assertFalse(versionedAddressBook.canRedo());","lastModifiedDate":"2024-03-19"},{"lineNumber":159,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":160,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":161,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":162,"author":{"gitId":"radeon2525"},"content":" public void undo_multipleAddressBookPointerAtEndOfStateList_success() {","lastModifiedDate":"2024-03-19"},{"lineNumber":163,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook \u003d prepareAddressBookList(","lastModifiedDate":"2024-03-19"},{"lineNumber":164,"author":{"gitId":"radeon2525"},"content":" emptyAddressBook, addressBookWithAmy, addressBookWithBob);","lastModifiedDate":"2024-03-19"},{"lineNumber":165,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":166,"author":{"gitId":"radeon2525"},"content":" versionedAddressBook.undo();","lastModifiedDate":"2024-03-19"},{"lineNumber":167,"author":{"gitId":"radeon2525"},"content":" assertAddressBookListStatus(versionedAddressBook,","lastModifiedDate":"2024-03-19"},{"lineNumber":168,"author":{"gitId":"radeon2525"},"content":" Collections.singletonList(emptyAddressBook),","lastModifiedDate":"2024-03-19"},{"lineNumber":169,"author":{"gitId":"radeon2525"},"content":" addressBookWithAmy,","lastModifiedDate":"2024-03-19"},{"lineNumber":170,"author":{"gitId":"radeon2525"},"content":" Collections.singletonList(addressBookWithBob));","lastModifiedDate":"2024-03-19"},{"lineNumber":171,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":172,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":173,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":174,"author":{"gitId":"radeon2525"},"content":" public void undo_multipleAddressBookPointerNotAtStartOfStateList_success() {","lastModifiedDate":"2024-03-19"},{"lineNumber":175,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook \u003d prepareAddressBookList(","lastModifiedDate":"2024-03-19"},{"lineNumber":176,"author":{"gitId":"radeon2525"},"content":" emptyAddressBook, addressBookWithAmy, addressBookWithBob);","lastModifiedDate":"2024-03-19"},{"lineNumber":177,"author":{"gitId":"radeon2525"},"content":" shiftCurrentStatePointerLeftwards(versionedAddressBook, 1);","lastModifiedDate":"2024-03-19"},{"lineNumber":178,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":179,"author":{"gitId":"radeon2525"},"content":" versionedAddressBook.undo();","lastModifiedDate":"2024-03-19"},{"lineNumber":180,"author":{"gitId":"radeon2525"},"content":" assertAddressBookListStatus(versionedAddressBook,","lastModifiedDate":"2024-03-19"},{"lineNumber":181,"author":{"gitId":"radeon2525"},"content":" Collections.emptyList(),","lastModifiedDate":"2024-03-19"},{"lineNumber":182,"author":{"gitId":"radeon2525"},"content":" emptyAddressBook,","lastModifiedDate":"2024-03-19"},{"lineNumber":183,"author":{"gitId":"radeon2525"},"content":" Arrays.asList(addressBookWithAmy, addressBookWithBob));","lastModifiedDate":"2024-03-19"},{"lineNumber":184,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":185,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":186,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":187,"author":{"gitId":"radeon2525"},"content":" public void undo_singleAddressBook_throwsNoUndoableStateException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":188,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook \u003d prepareAddressBookList(emptyAddressBook);","lastModifiedDate":"2024-03-19"},{"lineNumber":189,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":190,"author":{"gitId":"radeon2525"},"content":" assertThrows(VersionedAddressBook.NoUndoableStateException.class, versionedAddressBook::undo);","lastModifiedDate":"2024-03-19"},{"lineNumber":191,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":192,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":193,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":194,"author":{"gitId":"radeon2525"},"content":" public void undo_multipleAddressBookPointerAtStartOfStateList_throwsNoUndoableStateException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":195,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook \u003d prepareAddressBookList(","lastModifiedDate":"2024-03-19"},{"lineNumber":196,"author":{"gitId":"radeon2525"},"content":" emptyAddressBook, addressBookWithAmy, addressBookWithBob);","lastModifiedDate":"2024-03-19"},{"lineNumber":197,"author":{"gitId":"radeon2525"},"content":" shiftCurrentStatePointerLeftwards(versionedAddressBook, 2);","lastModifiedDate":"2024-03-19"},{"lineNumber":198,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":199,"author":{"gitId":"radeon2525"},"content":" assertThrows(VersionedAddressBook.NoUndoableStateException.class, versionedAddressBook::undo);","lastModifiedDate":"2024-03-19"},{"lineNumber":200,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":201,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":202,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":203,"author":{"gitId":"radeon2525"},"content":" public void redo_multipleAddressBookPointerNotAtEndOfStateList_success() {","lastModifiedDate":"2024-03-19"},{"lineNumber":204,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook \u003d prepareAddressBookList(","lastModifiedDate":"2024-03-19"},{"lineNumber":205,"author":{"gitId":"radeon2525"},"content":" emptyAddressBook, addressBookWithAmy, addressBookWithBob);","lastModifiedDate":"2024-03-19"},{"lineNumber":206,"author":{"gitId":"radeon2525"},"content":" shiftCurrentStatePointerLeftwards(versionedAddressBook, 1);","lastModifiedDate":"2024-03-19"},{"lineNumber":207,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":208,"author":{"gitId":"radeon2525"},"content":" versionedAddressBook.redo();","lastModifiedDate":"2024-03-19"},{"lineNumber":209,"author":{"gitId":"radeon2525"},"content":" assertAddressBookListStatus(versionedAddressBook,","lastModifiedDate":"2024-03-19"},{"lineNumber":210,"author":{"gitId":"radeon2525"},"content":" Arrays.asList(emptyAddressBook, addressBookWithAmy),","lastModifiedDate":"2024-03-19"},{"lineNumber":211,"author":{"gitId":"radeon2525"},"content":" addressBookWithBob,","lastModifiedDate":"2024-03-19"},{"lineNumber":212,"author":{"gitId":"radeon2525"},"content":" Collections.emptyList());","lastModifiedDate":"2024-03-19"},{"lineNumber":213,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":214,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":215,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":216,"author":{"gitId":"radeon2525"},"content":" public void redo_multipleAddressBookPointerAtStartOfStateList_success() {","lastModifiedDate":"2024-03-19"},{"lineNumber":217,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook \u003d prepareAddressBookList(","lastModifiedDate":"2024-03-19"},{"lineNumber":218,"author":{"gitId":"radeon2525"},"content":" emptyAddressBook, addressBookWithAmy, addressBookWithBob);","lastModifiedDate":"2024-03-19"},{"lineNumber":219,"author":{"gitId":"radeon2525"},"content":" shiftCurrentStatePointerLeftwards(versionedAddressBook, 2);","lastModifiedDate":"2024-03-19"},{"lineNumber":220,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":221,"author":{"gitId":"radeon2525"},"content":" versionedAddressBook.redo();","lastModifiedDate":"2024-03-19"},{"lineNumber":222,"author":{"gitId":"radeon2525"},"content":" assertAddressBookListStatus(versionedAddressBook,","lastModifiedDate":"2024-03-19"},{"lineNumber":223,"author":{"gitId":"radeon2525"},"content":" Collections.singletonList(emptyAddressBook),","lastModifiedDate":"2024-03-19"},{"lineNumber":224,"author":{"gitId":"radeon2525"},"content":" addressBookWithAmy,","lastModifiedDate":"2024-03-19"},{"lineNumber":225,"author":{"gitId":"radeon2525"},"content":" Collections.singletonList(addressBookWithBob));","lastModifiedDate":"2024-03-19"},{"lineNumber":226,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":227,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":228,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":229,"author":{"gitId":"radeon2525"},"content":" public void redo_singleAddressBook_throwsNoRedoableStateException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":230,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook \u003d prepareAddressBookList(emptyAddressBook);","lastModifiedDate":"2024-03-19"},{"lineNumber":231,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":232,"author":{"gitId":"radeon2525"},"content":" assertThrows(VersionedAddressBook.NoRedoableStateException.class, versionedAddressBook::redo);","lastModifiedDate":"2024-03-19"},{"lineNumber":233,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":234,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":235,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":236,"author":{"gitId":"radeon2525"},"content":" public void redo_multipleAddressBookPointerAtEndOfStateList_throwsNoRedoableStateException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":237,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook \u003d prepareAddressBookList(","lastModifiedDate":"2024-03-19"},{"lineNumber":238,"author":{"gitId":"radeon2525"},"content":" emptyAddressBook, addressBookWithAmy, addressBookWithBob);","lastModifiedDate":"2024-03-19"},{"lineNumber":239,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":240,"author":{"gitId":"radeon2525"},"content":" assertThrows(VersionedAddressBook.NoRedoableStateException.class, versionedAddressBook::redo);","lastModifiedDate":"2024-03-19"},{"lineNumber":241,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":242,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":243,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":244,"author":{"gitId":"radeon2525"},"content":" public void equals() {","lastModifiedDate":"2024-03-19"},{"lineNumber":245,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook \u003d prepareAddressBookList(addressBookWithAmy, addressBookWithBob);","lastModifiedDate":"2024-03-19"},{"lineNumber":246,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":247,"author":{"gitId":"radeon2525"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-19"},{"lineNumber":248,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook copy \u003d prepareAddressBookList(addressBookWithAmy, addressBookWithBob);","lastModifiedDate":"2024-03-19"},{"lineNumber":249,"author":{"gitId":"radeon2525"},"content":" assertTrue(versionedAddressBook.equals(copy));","lastModifiedDate":"2024-03-19"},{"lineNumber":250,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":251,"author":{"gitId":"radeon2525"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-19"},{"lineNumber":252,"author":{"gitId":"radeon2525"},"content":" assertTrue(versionedAddressBook.equals(versionedAddressBook));","lastModifiedDate":"2024-03-19"},{"lineNumber":253,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":254,"author":{"gitId":"radeon2525"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":255,"author":{"gitId":"radeon2525"},"content":" assertFalse(versionedAddressBook.equals(null));","lastModifiedDate":"2024-03-19"},{"lineNumber":256,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":257,"author":{"gitId":"radeon2525"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":258,"author":{"gitId":"radeon2525"},"content":" assertFalse(versionedAddressBook.equals(1));","lastModifiedDate":"2024-03-19"},{"lineNumber":259,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":260,"author":{"gitId":"radeon2525"},"content":" // different state list -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":261,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook differentAddressBookList \u003d prepareAddressBookList(addressBookWithBob, addressBookWithCarl);","lastModifiedDate":"2024-03-19"},{"lineNumber":262,"author":{"gitId":"radeon2525"},"content":" assertFalse(versionedAddressBook.equals(differentAddressBookList));","lastModifiedDate":"2024-03-19"},{"lineNumber":263,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":264,"author":{"gitId":"radeon2525"},"content":" // different current pointer index -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":265,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook differentCurrentStatePointer \u003d prepareAddressBookList(","lastModifiedDate":"2024-03-19"},{"lineNumber":266,"author":{"gitId":"radeon2525"},"content":" addressBookWithAmy, addressBookWithBob);","lastModifiedDate":"2024-03-19"},{"lineNumber":267,"author":{"gitId":"radeon2525"},"content":" shiftCurrentStatePointerLeftwards(versionedAddressBook, 1);","lastModifiedDate":"2024-03-19"},{"lineNumber":268,"author":{"gitId":"radeon2525"},"content":" assertFalse(versionedAddressBook.equals(differentCurrentStatePointer));","lastModifiedDate":"2024-03-19"},{"lineNumber":269,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":270,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":271,"author":{"gitId":"radeon2525"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":272,"author":{"gitId":"radeon2525"},"content":" * Asserts that {@code versionedAddressBook} is currently pointing at {@code expectedCurrentState},","lastModifiedDate":"2024-03-19"},{"lineNumber":273,"author":{"gitId":"radeon2525"},"content":" * states before {@code versionedAddressBook#currentStatePointer} is equal to {@code expectedStatesBeforePointer},","lastModifiedDate":"2024-03-19"},{"lineNumber":274,"author":{"gitId":"radeon2525"},"content":" * and states after {@code versionedAddressBook#currentStatePointer} is equal to {@code expectedStatesAfterPointer}.","lastModifiedDate":"2024-03-19"},{"lineNumber":275,"author":{"gitId":"radeon2525"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":276,"author":{"gitId":"radeon2525"},"content":" private void assertAddressBookListStatus(VersionedAddressBook versionedAddressBook,","lastModifiedDate":"2024-03-19"},{"lineNumber":277,"author":{"gitId":"radeon2525"},"content":" List\u003cReadOnlyAddressBook\u003e expectedStatesBeforePointer,","lastModifiedDate":"2024-03-19"},{"lineNumber":278,"author":{"gitId":"radeon2525"},"content":" ReadOnlyAddressBook expectedCurrentState,","lastModifiedDate":"2024-03-19"},{"lineNumber":279,"author":{"gitId":"radeon2525"},"content":" List\u003cReadOnlyAddressBook\u003e expectedStatesAfterPointer) {","lastModifiedDate":"2024-03-19"},{"lineNumber":280,"author":{"gitId":"radeon2525"},"content":" // check state currently pointing at is correct","lastModifiedDate":"2024-03-19"},{"lineNumber":281,"author":{"gitId":"radeon2525"},"content":" assertEquals(new AddressBook(versionedAddressBook), expectedCurrentState);","lastModifiedDate":"2024-03-19"},{"lineNumber":282,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":283,"author":{"gitId":"radeon2525"},"content":" // shift pointer to start of state list","lastModifiedDate":"2024-03-19"},{"lineNumber":284,"author":{"gitId":"radeon2525"},"content":" while (versionedAddressBook.canUndo()) {","lastModifiedDate":"2024-03-19"},{"lineNumber":285,"author":{"gitId":"radeon2525"},"content":" versionedAddressBook.undo();","lastModifiedDate":"2024-03-19"},{"lineNumber":286,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":287,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":288,"author":{"gitId":"radeon2525"},"content":" // check states before pointer are correct","lastModifiedDate":"2024-03-19"},{"lineNumber":289,"author":{"gitId":"radeon2525"},"content":" for (ReadOnlyAddressBook expectedAddressBook : expectedStatesBeforePointer) {","lastModifiedDate":"2024-03-19"},{"lineNumber":290,"author":{"gitId":"radeon2525"},"content":" assertEquals(expectedAddressBook, new AddressBook(versionedAddressBook));","lastModifiedDate":"2024-03-19"},{"lineNumber":291,"author":{"gitId":"radeon2525"},"content":" versionedAddressBook.redo();","lastModifiedDate":"2024-03-19"},{"lineNumber":292,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":293,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":294,"author":{"gitId":"radeon2525"},"content":" // check states after pointer are correct","lastModifiedDate":"2024-03-19"},{"lineNumber":295,"author":{"gitId":"radeon2525"},"content":" for (ReadOnlyAddressBook expectedAddressBook : expectedStatesAfterPointer) {","lastModifiedDate":"2024-03-19"},{"lineNumber":296,"author":{"gitId":"radeon2525"},"content":" versionedAddressBook.redo();","lastModifiedDate":"2024-03-19"},{"lineNumber":297,"author":{"gitId":"radeon2525"},"content":" assertEquals(expectedAddressBook, new AddressBook(versionedAddressBook));","lastModifiedDate":"2024-03-19"},{"lineNumber":298,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":299,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":300,"author":{"gitId":"radeon2525"},"content":" // check that there are no more states after pointer","lastModifiedDate":"2024-03-19"},{"lineNumber":301,"author":{"gitId":"radeon2525"},"content":" assertFalse(versionedAddressBook.canRedo());","lastModifiedDate":"2024-03-19"},{"lineNumber":302,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":303,"author":{"gitId":"radeon2525"},"content":" // revert pointer to original position","lastModifiedDate":"2024-03-19"},{"lineNumber":304,"author":{"gitId":"radeon2525"},"content":" expectedStatesAfterPointer.forEach(unused -\u003e versionedAddressBook.undo());","lastModifiedDate":"2024-03-19"},{"lineNumber":305,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":306,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":307,"author":{"gitId":"radeon2525"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":308,"author":{"gitId":"radeon2525"},"content":" * Creates and returns a {@code VersionedAddressBook} with the {@code addressBookStates} added into it, and the","lastModifiedDate":"2024-03-19"},{"lineNumber":309,"author":{"gitId":"radeon2525"},"content":" * {@code VersionedAddressBook#currentStatePointer} at the end of list.","lastModifiedDate":"2024-03-19"},{"lineNumber":310,"author":{"gitId":"radeon2525"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":311,"author":{"gitId":"radeon2525"},"content":" private VersionedAddressBook prepareAddressBookList(ReadOnlyAddressBook... addressBookStates) {","lastModifiedDate":"2024-03-19"},{"lineNumber":312,"author":{"gitId":"radeon2525"},"content":" assertFalse(addressBookStates.length \u003d\u003d 0);","lastModifiedDate":"2024-03-19"},{"lineNumber":313,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":314,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook \u003d new VersionedAddressBook(addressBookStates[0]);","lastModifiedDate":"2024-03-19"},{"lineNumber":315,"author":{"gitId":"radeon2525"},"content":" for (int i \u003d 1; i \u003c addressBookStates.length; i++) {","lastModifiedDate":"2024-03-19"},{"lineNumber":316,"author":{"gitId":"radeon2525"},"content":" versionedAddressBook.resetData(addressBookStates[i]);","lastModifiedDate":"2024-03-19"},{"lineNumber":317,"author":{"gitId":"radeon2525"},"content":" versionedAddressBook.commit();","lastModifiedDate":"2024-03-19"},{"lineNumber":318,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":319,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":320,"author":{"gitId":"radeon2525"},"content":" return versionedAddressBook;","lastModifiedDate":"2024-03-19"},{"lineNumber":321,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":322,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":323,"author":{"gitId":"radeon2525"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":324,"author":{"gitId":"radeon2525"},"content":" * Shifts the {@code versionedAddressBook#currentStatePointer} by {@code count} to the left of its list.","lastModifiedDate":"2024-03-19"},{"lineNumber":325,"author":{"gitId":"radeon2525"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":326,"author":{"gitId":"radeon2525"},"content":" private void shiftCurrentStatePointerLeftwards(VersionedAddressBook versionedAddressBook, int count) {","lastModifiedDate":"2024-03-19"},{"lineNumber":327,"author":{"gitId":"radeon2525"},"content":" for (int i \u003d 0; i \u003c count; i++) {","lastModifiedDate":"2024-03-19"},{"lineNumber":328,"author":{"gitId":"radeon2525"},"content":" versionedAddressBook.undo();","lastModifiedDate":"2024-03-19"},{"lineNumber":329,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":330,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":331,"author":{"gitId":"radeon2525"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"radeon2525":331}},{"path":"src/test/java/seedu/address/model/person/PersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2018-03-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-04-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-04-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-03-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class PersonTest {","lastModifiedDate":"2018-03-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public void asObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":23,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2018-03-26"},{"lineNumber":24,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e person.getTags().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public void isSamePerson() {","lastModifiedDate":"2018-04-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(ALICE));","lastModifiedDate":"2018-04-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(null));","lastModifiedDate":"2018-04-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // same name, all other attributes different -\u003e returns true","lastModifiedDate":"2020-12-18"},{"lineNumber":36,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2020-12-18"},{"lineNumber":37,"author":{"gitId":"-"},"content":" .withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2020-12-18"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2020-12-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":" // different name, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // name differs in case, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":45,"author":{"gitId":"-"},"content":" Person editedBob \u003d new PersonBuilder(BOB).withName(VALID_NAME_BOB.toLowerCase()).build();","lastModifiedDate":"2020-12-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // name has trailing spaces, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":49,"author":{"gitId":"-"},"content":" String nameWithTrailingSpaces \u003d VALID_NAME_BOB + \" \";","lastModifiedDate":"2020-12-18"},{"lineNumber":50,"author":{"gitId":"-"},"content":" editedBob \u003d new PersonBuilder(BOB).withName(nameWithTrailingSpaces).build();","lastModifiedDate":"2020-12-18"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":" Person aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2018-04-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2018-04-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(null));","lastModifiedDate":"2018-04-19"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2018-04-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2018-04-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":77,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":81,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":84,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":85,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-18"},{"lineNumber":88,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2018-04-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2018-04-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-18"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":" String expected \u003d Person.class.getCanonicalName() + \"{name\u003d\" + ALICE.getName() + \", phone\u003d\" + ALICE.getPhone()","lastModifiedDate":"2019-02-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":" + \", email\u003d\" + ALICE.getEmail() + \", address\u003d\" + ALICE.getAddress() + \", tags\u003d\" + ALICE.getTags() + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":99,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":100,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":101,"author":{"gitId":"radeon2525"},"content":" public void samePersonObject_returnsTrue() {","lastModifiedDate":"2024-03-16"},{"lineNumber":102,"author":{"gitId":"radeon2525"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2024-03-16"},{"lineNumber":103,"author":{"gitId":"radeon2525"},"content":" assertTrue(person.isSamePerson(person));","lastModifiedDate":"2024-03-16"},{"lineNumber":104,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":105,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":106,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":107,"author":{"gitId":"radeon2525"},"content":" public void nullPerson_returnsFalse() {","lastModifiedDate":"2024-03-16"},{"lineNumber":108,"author":{"gitId":"radeon2525"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2024-03-16"},{"lineNumber":109,"author":{"gitId":"radeon2525"},"content":" assertFalse(person.isSamePerson(null));","lastModifiedDate":"2024-03-16"},{"lineNumber":110,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":111,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":112,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":113,"author":{"gitId":"radeon2525"},"content":" public void differentPerson_returnsFalse() {","lastModifiedDate":"2024-03-16"},{"lineNumber":114,"author":{"gitId":"radeon2525"},"content":" Person person1 \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2024-03-16"},{"lineNumber":115,"author":{"gitId":"radeon2525"},"content":" Person person2 \u003d new PersonBuilder().withName(\"Bob\").build();","lastModifiedDate":"2024-03-16"},{"lineNumber":116,"author":{"gitId":"radeon2525"},"content":" assertFalse(person1.isSamePerson(person2));","lastModifiedDate":"2024-03-16"},{"lineNumber":117,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":118,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":119,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":120,"author":{"gitId":"radeon2525"},"content":" public void samePersonTagsDifferentOrder_returnsTrue() {","lastModifiedDate":"2024-03-16"},{"lineNumber":121,"author":{"gitId":"radeon2525"},"content":" Person person1 \u003d new PersonBuilder().withTags(\"friend\", \"colleague\").build();","lastModifiedDate":"2024-03-16"},{"lineNumber":122,"author":{"gitId":"radeon2525"},"content":" Person person2 \u003d new PersonBuilder().withTags(\"colleague\", \"friend\").build();","lastModifiedDate":"2024-03-16"},{"lineNumber":123,"author":{"gitId":"radeon2525"},"content":" assertTrue(person1.equals(person2));","lastModifiedDate":"2024-03-16"},{"lineNumber":124,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":125,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"radeon2525":26,"-":99}}] +[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"The-Dudeski"},"content":"[![CI Status](https://github.com/AY2324S2-CS2103T-W13-2/tp/actions/workflows/gradle.yml/badge.svg)](https://github.com/AY2324S2-CS2103T-W13-2/tp/actions/workflows/gradle.yml)","lastModifiedDate":"2024-03-09"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"The-Dudeski"},"content":"* This is **a project created by CS2103T students. It is a contact book **.\u003cbr\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":6,"author":{"gitId":"-"},"content":" Example usages:","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"The-Dudeski"},"content":" * It is meant to be used by secretaries in companies with different departments to be managed","lastModifiedDate":"2024-03-06"},{"lineNumber":8,"author":{"gitId":"The-Dudeski"},"content":" * The project will be developed over the course of AY23/24 Semester 2","lastModifiedDate":"2024-03-06"},{"lineNumber":9,"author":{"gitId":"The-Dudeski"},"content":"* The project is written Java","lastModifiedDate":"2024-03-06"},{"lineNumber":10,"author":{"gitId":"The-Dudeski"},"content":" * It is **written in OOP fashion**. ","lastModifiedDate":"2024-03-06"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * It comes with a **reasonable level of user and developer documentation**.","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"The-Dudeski"},"content":"* The application will contain contacts for the secretary to manage","lastModifiedDate":"2024-03-06"},{"lineNumber":13,"author":{"gitId":"The-Dudeski"},"content":" * This will include the option to view, add, delete and filter contacts","lastModifiedDate":"2024-03-06"},{"lineNumber":14,"author":{"gitId":"The-Dudeski"},"content":"* For the detailed documentation of this project, see the **[Contact Book Product Website]()**.","lastModifiedDate":"2024-03-06"},{"lineNumber":15,"author":{"gitId":"The-Dudeski"},"content":"* This project is derived from AddressBook-Level3 created by [SE-EDU initiative](https://se-education.org)","lastModifiedDate":"2024-03-06"}],"authorContributionMap":{"The-Dudeski":10,"-":5}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: About Us","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"We are a team based in the [School of Computing, National University of Singapore](http://www.comp.nus.edu.sg).","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"The-Dudeski"},"content":"You can reach us at the email `mashfi.i@u.nus.edu`","lastModifiedDate":"2024-03-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"The-Dudeski"},"content":"### Mashfi Ishtiaque","lastModifiedDate":"2024-03-04"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"The-Dudeski"},"content":"\u003cimg src\u003d\"/images/miffi.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"The-Dudeski"},"content":"[[homepage](https://decadent.rest)]","lastModifiedDate":"2024-03-09"},{"lineNumber":17,"author":{"gitId":"The-Dudeski"},"content":"[[github](https://github.com/miffi)]","lastModifiedDate":"2024-03-04"},{"lineNumber":18,"author":{"gitId":"The-Dudeski"},"content":"[[portfolio](team/miffi.md)]","lastModifiedDate":"2024-03-04"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"miffi"},"content":"* Role: Team Lead","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"miffi"},"content":"* Responsibilities:","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"miffi"},"content":" - UI","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"miffi"},"content":" - Tools","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"The-Dudeski"},"content":"### Leong Jia Hao, Derek","lastModifiedDate":"2024-03-04"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"The-Dudeski"},"content":"\u003cimg src\u003d\"/images/derekljh.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-09"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"The-Dudeski"},"content":"[[github](http://github.com/derekljh)]","lastModifiedDate":"2024-03-04"},{"lineNumber":30,"author":{"gitId":"The-Dudeski"},"content":"[[portfolio](team/derekljh.md)]","lastModifiedDate":"2024-03-04"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"miffi"},"content":"- Role: Developer","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"miffi"},"content":"* Responsibilities:","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"miffi"},"content":" * Tasks and Deadlines","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"miffi"},"content":" - Scheduling and tracking","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"miffi"},"content":" - Logic","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"The-Dudeski"},"content":"### Mahindroo Aashim","lastModifiedDate":"2024-03-04"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"The-Dudeski"},"content":"\u003cimg src\u003d\"/images/radeon2525.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"The-Dudeski"},"content":"[[github](http://github.com/radeon2525)] ","lastModifiedDate":"2024-03-09"},{"lineNumber":43,"author":{"gitId":"The-Dudeski"},"content":"[[portfolio](team/radeon2525.md)]","lastModifiedDate":"2024-03-09"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"miffi"},"content":"* Responsibilities:","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"miffi"},"content":" - Testing","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"miffi"},"content":" - Model","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"The-Dudeski"},"content":"### Kyaw Swar Myint","lastModifiedDate":"2024-03-04"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"The-Dudeski"},"content":"\u003cimg src\u003d\"/images/jukeboxk.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"The-Dudeski"},"content":"[[github](http://github.com/jukeboxk)]","lastModifiedDate":"2024-03-04"},{"lineNumber":55,"author":{"gitId":"The-Dudeski"},"content":"[[portfolio](team/jukeboxk.md)]","lastModifiedDate":"2024-03-09"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"miffi"},"content":"* Responsibilities:","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"miffi"},"content":" - Documentation","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"miffi"},"content":" - Main","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"miffi"},"content":" - Commons","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"author":{"gitId":"The-Dudeski"},"content":"### Dude Lorenz Leonardo Crescenzio","lastModifiedDate":"2024-03-04"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"author":{"gitId":"The-Dudeski"},"content":"\u003cimg src\u003d\"/images/the-dudeski.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-09"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"The-Dudeski"},"content":"[[github](http://github.com/the-dudeski)]","lastModifiedDate":"2024-03-04"},{"lineNumber":68,"author":{"gitId":"The-Dudeski"},"content":"[[portfolio](team/the-dudeski.md)]","lastModifiedDate":"2024-03-04"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"miffi"},"content":"* Responsibilities:","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"miffi"},"content":" - Integration","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"miffi"},"content":" - Storage","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"The-Dudeski":22,"miffi":19,"-":32}},{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: Developer Guide","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":6,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":" {:toc}","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":11,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":13,"author":{"gitId":"radeon2525"},"content":"* {list here sources of all reused/adapted ideas, code, documentation, and third-party libraries -- include links to the","lastModifiedDate":"2024-03-07"},{"lineNumber":14,"author":{"gitId":"radeon2525"},"content":" original source as well}","lastModifiedDate":"2024-03-07"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":16,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"radeon2525"},"content":":bulb: **Tip:** The `.puml` files used to create diagrams in this document `docs/diagrams` folder. Refer to the [","lastModifiedDate":"2024-03-07"},{"lineNumber":29,"author":{"gitId":"radeon2525"},"content":"_PlantUML Tutorial_ at se-edu/guides](https://se-education.org/guides/tutorials/plantUml.html) to learn how to create","lastModifiedDate":"2024-03-07"},{"lineNumber":30,"author":{"gitId":"radeon2525"},"content":"and edit diagrams.","lastModifiedDate":"2024-03-07"},{"lineNumber":31,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureDiagram.png\" width\u003d\"280\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":"The ***Architecture Diagram*** given above explains the high-level design of the App.","lastModifiedDate":"2021-07-31"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"Given below is a quick overview of main components and how they interact with each other.","lastModifiedDate":"2021-07-31"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":41,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"radeon2525"},"content":"**`Main`** (consisting of","lastModifiedDate":"2024-03-07"},{"lineNumber":44,"author":{"gitId":"radeon2525"},"content":"classes [`Main`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/Main.java)","lastModifiedDate":"2024-03-07"},{"lineNumber":45,"author":{"gitId":"radeon2525"},"content":"and [`MainApp`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/MainApp.java)) is","lastModifiedDate":"2024-03-07"},{"lineNumber":46,"author":{"gitId":"radeon2525"},"content":"in charge of the app launch and shut down.","lastModifiedDate":"2024-03-07"},{"lineNumber":47,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":48,"author":{"gitId":"-"},"content":"* At app launch, it initializes the other components in the correct sequence, and connects them up with each other.","lastModifiedDate":"2023-09-03"},{"lineNumber":49,"author":{"gitId":"-"},"content":"* At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2023-09-03"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"* [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"* [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"* [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"author":{"gitId":"radeon2525"},"content":"The *Sequence Diagram* below shows how the components interact with each other for the scenario where the user issues","lastModifiedDate":"2024-03-07"},{"lineNumber":63,"author":{"gitId":"radeon2525"},"content":"the command `delete 1`.","lastModifiedDate":"2024-03-07"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureSequenceDiagram.png\" width\u003d\"574\" /\u003e","lastModifiedDate":"2020-06-07"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":69,"author":{"gitId":"-"},"content":"* defines its *API* in an `interface` with the same name as the Component.","lastModifiedDate":"2021-07-31"},{"lineNumber":70,"author":{"gitId":"radeon2525"},"content":"* implements its functionality using a concrete `{Component Name}Manager` class (which follows the corresponding","lastModifiedDate":"2024-03-07"},{"lineNumber":71,"author":{"gitId":"radeon2525"},"content":" API `interface` mentioned in the previous point.","lastModifiedDate":"2024-03-07"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":73,"author":{"gitId":"radeon2525"},"content":"For example, the `Logic` component defines its API in the `Logic.java` interface and implements its functionality using","lastModifiedDate":"2024-03-07"},{"lineNumber":74,"author":{"gitId":"radeon2525"},"content":"the `LogicManager.java` class which follows the `Logic` interface. Other components interact with a given component","lastModifiedDate":"2024-03-07"},{"lineNumber":75,"author":{"gitId":"radeon2525"},"content":"through its interface rather than the concrete class (reason: to prevent outside component\u0027s being coupled to the","lastModifiedDate":"2024-03-07"},{"lineNumber":76,"author":{"gitId":"radeon2525"},"content":"implementation of a component), as illustrated in the (partial) class diagram below.","lastModifiedDate":"2024-03-07"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":78,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ComponentManagers.png\" width\u003d\"300\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":80,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"radeon2525"},"content":"The **API** of this component is specified","lastModifiedDate":"2024-03-07"},{"lineNumber":85,"author":{"gitId":"radeon2525"},"content":"in [`Ui.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/Ui.java)","lastModifiedDate":"2024-03-07"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"![Structure of the UI Component](images/UiClassDiagram.png)","lastModifiedDate":"2021-07-31"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"radeon2525"},"content":"The UI consists of a `MainWindow` that is made up of parts","lastModifiedDate":"2024-03-07"},{"lineNumber":90,"author":{"gitId":"radeon2525"},"content":"e.g.`CommandBox`, `ResultDisplay`, `PersonListPanel`, `StatusBarFooter` etc. All these, including the `MainWindow`,","lastModifiedDate":"2024-03-07"},{"lineNumber":91,"author":{"gitId":"radeon2525"},"content":"inherit from the abstract `UiPart` class which captures the commonalities between classes that represent parts of the","lastModifiedDate":"2024-03-07"},{"lineNumber":92,"author":{"gitId":"radeon2525"},"content":"visible GUI.","lastModifiedDate":"2024-03-07"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"radeon2525"},"content":"The `UI` component uses the JavaFx UI framework. The layout of these UI parts are defined in matching `.fxml` files that","lastModifiedDate":"2024-03-07"},{"lineNumber":95,"author":{"gitId":"radeon2525"},"content":"are in the `src/main/resources/view` folder. For example, the layout of","lastModifiedDate":"2024-03-07"},{"lineNumber":96,"author":{"gitId":"radeon2525"},"content":"the [`MainWindow`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/MainWindow.java)","lastModifiedDate":"2024-03-07"},{"lineNumber":97,"author":{"gitId":"radeon2525"},"content":"is specified","lastModifiedDate":"2024-03-07"},{"lineNumber":98,"author":{"gitId":"radeon2525"},"content":"in [`MainWindow.fxml`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/resources/view/MainWindow.fxml)","lastModifiedDate":"2024-03-07"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"* executes user commands using the `Logic` component.","lastModifiedDate":"2021-07-31"},{"lineNumber":103,"author":{"gitId":"-"},"content":"* listens for changes to `Model` data so that the UI can be updated with the modified data.","lastModifiedDate":"2021-07-31"},{"lineNumber":104,"author":{"gitId":"-"},"content":"* keeps a reference to the `Logic` component, because the `UI` relies on the `Logic` to execute commands.","lastModifiedDate":"2021-07-31"},{"lineNumber":105,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component, as it displays `Person` object residing in the `Model`.","lastModifiedDate":"2021-07-31"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"author":{"gitId":"radeon2525"},"content":"**API","lastModifiedDate":"2024-03-07"},{"lineNumber":110,"author":{"gitId":"radeon2525"},"content":"** : [`Logic.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/logic/Logic.java)","lastModifiedDate":"2024-03-07"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/LogicClassDiagram.png\" width\u003d\"550\"/\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"radeon2525"},"content":"The sequence diagram below illustrates the interactions within the `Logic` component, taking `execute(\"delete 1\")` API","lastModifiedDate":"2024-03-07"},{"lineNumber":117,"author":{"gitId":"radeon2525"},"content":"call as an example.","lastModifiedDate":"2024-03-07"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":"![Interactions Inside the Logic Component for the `delete 1` Command](images/DeleteSequenceDiagram.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** The lifeline for `DeleteCommandParser` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline continues till the end of diagram.","lastModifiedDate":"2024-02-09"},{"lineNumber":122,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"Derekljh"},"content":"Another sequence diagram below illustrates the interactions within the `Logic` component, taking","lastModifiedDate":"2024-03-21"},{"lineNumber":125,"author":{"gitId":"Derekljh"},"content":"`execute(\"tag 1 tag: example\")` API call as an example.","lastModifiedDate":"2024-03-21"},{"lineNumber":126,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":127,"author":{"gitId":"Derekljh"},"content":"![](C:\\Repos\\TeamProject\\docs\\images\\TagCommand.png)","lastModifiedDate":"2024-03-21"},{"lineNumber":128,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":129,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":131,"author":{"gitId":"radeon2525"},"content":"1. When `Logic` is called upon to execute a command, it is passed to an `AddressBookParser` object which in turn creates","lastModifiedDate":"2024-03-07"},{"lineNumber":132,"author":{"gitId":"radeon2525"},"content":" a parser that matches the command (e.g., `DeleteCommandParser`) and uses it to parse the command.","lastModifiedDate":"2024-03-07"},{"lineNumber":133,"author":{"gitId":"radeon2525"},"content":"1. This results in a `Command` object (more precisely, an object of one of its subclasses e.g., `DeleteCommand`) which","lastModifiedDate":"2024-03-07"},{"lineNumber":134,"author":{"gitId":"radeon2525"},"content":" is executed by the `LogicManager`.","lastModifiedDate":"2024-03-07"},{"lineNumber":135,"author":{"gitId":"-"},"content":"1. The command can communicate with the `Model` when it is executed (e.g. to delete a person).\u003cbr\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":136,"author":{"gitId":"radeon2525"},"content":" Note that although this is shown as a single step in the diagram above (for simplicity), in the code it can take","lastModifiedDate":"2024-03-07"},{"lineNumber":137,"author":{"gitId":"radeon2525"},"content":" several interactions (between the command object and the `Model`) to achieve.","lastModifiedDate":"2024-03-07"},{"lineNumber":138,"author":{"gitId":"-"},"content":"1. The result of the command execution is encapsulated as a `CommandResult` object which is returned back from `Logic`.","lastModifiedDate":"2023-09-03"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":140,"author":{"gitId":"-"},"content":"Here are the other classes in `Logic` (omitted from the class diagram above) that are used for parsing a user command:","lastModifiedDate":"2021-07-31"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":142,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ParserClasses.png\" width\u003d\"600\"/\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31"},{"lineNumber":145,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":146,"author":{"gitId":"radeon2525"},"content":"* When called upon to parse a user command, the `AddressBookParser` class creates an `XYZCommandParser` (`XYZ` is a","lastModifiedDate":"2024-03-07"},{"lineNumber":147,"author":{"gitId":"radeon2525"},"content":" placeholder for the specific command name e.g., `AddCommandParser`) which uses the other classes shown above to parse","lastModifiedDate":"2024-03-07"},{"lineNumber":148,"author":{"gitId":"radeon2525"},"content":" the user command and create a `XYZCommand` object (e.g., `AddCommand`) which the `AddressBookParser` returns back as","lastModifiedDate":"2024-03-07"},{"lineNumber":149,"author":{"gitId":"radeon2525"},"content":" a `Command` object.","lastModifiedDate":"2024-03-07"},{"lineNumber":150,"author":{"gitId":"radeon2525"},"content":"* All `XYZCommandParser` classes (e.g., `AddCommandParser`, `DeleteCommandParser`, ...) inherit from the `Parser`","lastModifiedDate":"2024-03-07"},{"lineNumber":151,"author":{"gitId":"radeon2525"},"content":" interface so that they can be treated similarly where possible e.g, during testing.","lastModifiedDate":"2024-03-07"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31"},{"lineNumber":154,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":155,"author":{"gitId":"radeon2525"},"content":"**API","lastModifiedDate":"2024-03-07"},{"lineNumber":156,"author":{"gitId":"radeon2525"},"content":"** : [`Model.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/model/Model.java)","lastModifiedDate":"2024-03-07"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":"* stores the address book data i.e., all `Person` objects (which are contained in a `UniquePersonList` object).","lastModifiedDate":"2021-07-31"},{"lineNumber":164,"author":{"gitId":"radeon2525"},"content":"* stores the currently \u0027selected\u0027 `Person` objects (e.g., results of a search query) as a separate _filtered_ list which","lastModifiedDate":"2024-03-07"},{"lineNumber":165,"author":{"gitId":"radeon2525"},"content":" is exposed to outsiders as an unmodifiable `ObservableList\u003cPerson\u003e` that can be \u0027observed\u0027 e.g. the UI can be bound to","lastModifiedDate":"2024-03-07"},{"lineNumber":166,"author":{"gitId":"radeon2525"},"content":" this list so that the UI automatically updates when the data in the list change.","lastModifiedDate":"2024-03-07"},{"lineNumber":167,"author":{"gitId":"radeon2525"},"content":"* stores a `UserPref` object that represents the user’s preferences. This is exposed to the outside as","lastModifiedDate":"2024-03-07"},{"lineNumber":168,"author":{"gitId":"radeon2525"},"content":" a `ReadOnlyUserPref` objects.","lastModifiedDate":"2024-03-07"},{"lineNumber":169,"author":{"gitId":"radeon2525"},"content":"* does not depend on any of the other three components (as the `Model` represents data entities of the domain, they","lastModifiedDate":"2024-03-07"},{"lineNumber":170,"author":{"gitId":"radeon2525"},"content":" should make sense on their own without depending on other components)","lastModifiedDate":"2024-03-07"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":172,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** An alternative (arguably, a more OOP) model is given below. It has a `Tag` list in the `AddressBook`, which `Person` references. This allows `AddressBook` to only require one `Tag` object per unique tag, instead of each `Person` needing their own `Tag` objects.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":174,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/BetterModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":180,"author":{"gitId":"radeon2525"},"content":"**API","lastModifiedDate":"2024-03-07"},{"lineNumber":181,"author":{"gitId":"radeon2525"},"content":"** : [`Storage.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/storage/Storage.java)","lastModifiedDate":"2024-03-07"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/StorageClassDiagram.png\" width\u003d\"550\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":185,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":186,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":187,"author":{"gitId":"radeon2525"},"content":"* can save both address book data and user preference data in JSON format, and read them back into corresponding","lastModifiedDate":"2024-03-07"},{"lineNumber":188,"author":{"gitId":"radeon2525"},"content":" objects.","lastModifiedDate":"2024-03-07"},{"lineNumber":189,"author":{"gitId":"radeon2525"},"content":"* inherits from both `AddressBookStorage` and `UserPrefStorage`, which means it can be treated as either one (if only","lastModifiedDate":"2024-03-07"},{"lineNumber":190,"author":{"gitId":"radeon2525"},"content":" the functionality of only one is needed).","lastModifiedDate":"2024-03-07"},{"lineNumber":191,"author":{"gitId":"radeon2525"},"content":"* depends on some classes in the `Model` component (because the `Storage` component\u0027s job is to save/retrieve objects","lastModifiedDate":"2024-03-07"},{"lineNumber":192,"author":{"gitId":"radeon2525"},"content":" that belong to the `Model`)","lastModifiedDate":"2024-03-07"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.addressbook.commons` package.","lastModifiedDate":"2020-05-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":198,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23"},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":204,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":206,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":208,"author":{"gitId":"radeon2525"},"content":"The proposed undo/redo mechanism is facilitated by `VersionedAddressBook`. It extends `AddressBook` with an undo/redo","lastModifiedDate":"2024-03-07"},{"lineNumber":209,"author":{"gitId":"radeon2525"},"content":"history, stored internally as an `addressBookStateList` and `currentStatePointer`. Additionally, it implements the","lastModifiedDate":"2024-03-07"},{"lineNumber":210,"author":{"gitId":"radeon2525"},"content":"following operations:","lastModifiedDate":"2024-03-07"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":212,"author":{"gitId":"radeon2525"},"content":"* `VersionedAddressBook#commit()`— Saves the current address book state in its history.","lastModifiedDate":"2024-03-07"},{"lineNumber":213,"author":{"gitId":"radeon2525"},"content":"* `VersionedAddressBook#undo()`— Restores the previous address book state from its history.","lastModifiedDate":"2024-03-07"},{"lineNumber":214,"author":{"gitId":"radeon2525"},"content":"* `VersionedAddressBook#redo()`— Restores a previously undone address book state from its history.","lastModifiedDate":"2024-03-07"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":216,"author":{"gitId":"radeon2525"},"content":"These operations are exposed in the `Model` interface as `Model#commitAddressBook()`, `Model#undoAddressBook()`","lastModifiedDate":"2024-03-07"},{"lineNumber":217,"author":{"gitId":"radeon2525"},"content":"and `Model#redoAddressBook()` respectively.","lastModifiedDate":"2024-03-07"},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":219,"author":{"gitId":"-"},"content":"Given below is an example usage scenario and how the undo/redo mechanism behaves at each step.","lastModifiedDate":"2020-05-23"},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":221,"author":{"gitId":"radeon2525"},"content":"Step 1. The user launches the application for the first time. The `VersionedAddressBook` will be initialized with the","lastModifiedDate":"2024-03-07"},{"lineNumber":222,"author":{"gitId":"radeon2525"},"content":"initial address book state, and the `currentStatePointer` pointing to that single address book state.","lastModifiedDate":"2024-03-07"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":224,"author":{"gitId":"-"},"content":"![UndoRedoState0](images/UndoRedoState0.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":226,"author":{"gitId":"radeon2525"},"content":"Step 2. The user executes `delete 5` command to delete the 5th person in the address book. The `delete` command","lastModifiedDate":"2024-03-07"},{"lineNumber":227,"author":{"gitId":"radeon2525"},"content":"calls `Model#commitAddressBook()`, causing the modified state of the address book after the `delete 5` command executes","lastModifiedDate":"2024-03-07"},{"lineNumber":228,"author":{"gitId":"radeon2525"},"content":"to be saved in the `addressBookStateList`, and the `currentStatePointer` is shifted to the newly inserted address book","lastModifiedDate":"2024-03-07"},{"lineNumber":229,"author":{"gitId":"radeon2525"},"content":"state.","lastModifiedDate":"2024-03-07"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"author":{"gitId":"-"},"content":"![UndoRedoState1](images/UndoRedoState1.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"radeon2525"},"content":"Step 3. The user executes `add n/David …​` to add a new person. The `add` command also","lastModifiedDate":"2024-03-07"},{"lineNumber":234,"author":{"gitId":"radeon2525"},"content":"calls `Model#commitAddressBook()`, causing another modified address book state to be saved into","lastModifiedDate":"2024-03-07"},{"lineNumber":235,"author":{"gitId":"radeon2525"},"content":"the `addressBookStateList`.","lastModifiedDate":"2024-03-07"},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":"![UndoRedoState2](images/UndoRedoState2.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If a command fails its execution, it will not call `Model#commitAddressBook()`, so the address book state will not be saved into the `addressBookStateList`.","lastModifiedDate":"2020-05-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"radeon2525"},"content":"Step 4. The user now decides that adding the person was a mistake, and decides to undo that action by executing","lastModifiedDate":"2024-03-07"},{"lineNumber":244,"author":{"gitId":"radeon2525"},"content":"the `undo` command. The `undo` command will call `Model#undoAddressBook()`, which will shift the `currentStatePointer`","lastModifiedDate":"2024-03-07"},{"lineNumber":245,"author":{"gitId":"radeon2525"},"content":"once to the left, pointing it to the previous address book state, and restores the address book to that state.","lastModifiedDate":"2024-03-07"},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":247,"author":{"gitId":"-"},"content":"![UndoRedoState3](images/UndoRedoState3.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":248,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":249,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If the `currentStatePointer` is at index 0, pointing to the initial AddressBook state, then there are no previous AddressBook states to restore. The `undo` command uses `Model#canUndoAddressBook()` to check if this is the case. If so, it will return an error to the user rather","lastModifiedDate":"2020-05-23"},{"lineNumber":250,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":254,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09"},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-Logic.png)","lastModifiedDate":"2024-02-09"},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":258,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** The lifeline for `UndoCommand` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.","lastModifiedDate":"2020-05-23"},{"lineNumber":259,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":262,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09"},{"lineNumber":263,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":264,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-Model.png)","lastModifiedDate":"2024-02-09"},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":266,"author":{"gitId":"radeon2525"},"content":"The `redo` command does the opposite — it calls `Model#redoAddressBook()`, which shifts the `currentStatePointer` once","lastModifiedDate":"2024-03-07"},{"lineNumber":267,"author":{"gitId":"radeon2525"},"content":"to the right, pointing to the previously undone state, and restores the address book to that state.","lastModifiedDate":"2024-03-07"},{"lineNumber":268,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":269,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If the `currentStatePointer` is at index `addressBookStateList.size() - 1`, pointing to the latest address book state, then there are no undone AddressBook states to restore. The `redo` command uses `Model#canRedoAddressBook()` to check if this is the case. If so, it will return an error to the user rather than attempting to perform the redo.","lastModifiedDate":"2020-05-23"},{"lineNumber":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":271,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":273,"author":{"gitId":"radeon2525"},"content":"Step 5. The user then decides to execute the command `list`. Commands that do not modify the address book, such","lastModifiedDate":"2024-03-07"},{"lineNumber":274,"author":{"gitId":"radeon2525"},"content":"as `list`, will usually not call `Model#commitAddressBook()`, `Model#undoAddressBook()` or `Model#redoAddressBook()`.","lastModifiedDate":"2024-03-07"},{"lineNumber":275,"author":{"gitId":"radeon2525"},"content":"Thus, the `addressBookStateList` remains unchanged.","lastModifiedDate":"2024-03-07"},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":277,"author":{"gitId":"-"},"content":"![UndoRedoState4](images/UndoRedoState4.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":278,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":279,"author":{"gitId":"radeon2525"},"content":"Step 6. The user executes `clear`, which calls `Model#commitAddressBook()`. Since the `currentStatePointer` is not","lastModifiedDate":"2024-03-07"},{"lineNumber":280,"author":{"gitId":"radeon2525"},"content":"pointing at the end of the `addressBookStateList`, all address book states after the `currentStatePointer` will be","lastModifiedDate":"2024-03-07"},{"lineNumber":281,"author":{"gitId":"radeon2525"},"content":"purged. Reason: It no longer makes sense to redo the `add n/David …​` command. This is the behavior that most modern","lastModifiedDate":"2024-03-07"},{"lineNumber":282,"author":{"gitId":"radeon2525"},"content":"desktop applications follow.","lastModifiedDate":"2024-03-07"},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":284,"author":{"gitId":"-"},"content":"![UndoRedoState5](images/UndoRedoState5.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":286,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":288,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/CommitActivityDiagram.png\" width\u003d\"250\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":290,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31"},{"lineNumber":291,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":292,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31"},{"lineNumber":293,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":294,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":295,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23"},{"lineNumber":296,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":298,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23"},{"lineNumber":299,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23"},{"lineNumber":300,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23"},{"lineNumber":301,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23"},{"lineNumber":302,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":303,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23"},{"lineNumber":304,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":305,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23"},{"lineNumber":306,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":307,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23"},{"lineNumber":308,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":309,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":310,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":311,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":312,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07"},{"lineNumber":313,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":314,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":315,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":316,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":317,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":318,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":319,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":320,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":321,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":322,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23"},{"lineNumber":323,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":324,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23"},{"lineNumber":325,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":326,"author":{"gitId":"Derekljh"},"content":"**Target user profile**: Secretary of a tech company","lastModifiedDate":"2024-03-06"},{"lineNumber":327,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":328,"author":{"gitId":"-"},"content":"* has a need to manage a significant number of contacts","lastModifiedDate":"2020-05-23"},{"lineNumber":329,"author":{"gitId":"-"},"content":"* prefer desktop apps over other types","lastModifiedDate":"2020-05-23"},{"lineNumber":330,"author":{"gitId":"-"},"content":"* can type fast","lastModifiedDate":"2020-05-23"},{"lineNumber":331,"author":{"gitId":"-"},"content":"* prefers typing to mouse interactions","lastModifiedDate":"2020-05-26"},{"lineNumber":332,"author":{"gitId":"-"},"content":"* is reasonably comfortable using CLI apps","lastModifiedDate":"2020-05-23"},{"lineNumber":333,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":334,"author":{"gitId":"Derekljh"},"content":"**Value proposition**: Categorise people according to their department/origin, making it easier to assign tasks or get all the emails.","lastModifiedDate":"2024-03-06"},{"lineNumber":335,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":336,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07"},{"lineNumber":337,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":338,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23"},{"lineNumber":339,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":340,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23"},{"lineNumber":341,"author":{"gitId":"JukeBoxK"},"content":"|----------|-----------|---------------------------------------|--------------------------------------------------------|","lastModifiedDate":"2024-03-21"},{"lineNumber":342,"author":{"gitId":"JukeBoxK"},"content":"| `* * *` | secretary | view the added contact list | see the details of the added contact |","lastModifiedDate":"2024-03-21"},{"lineNumber":343,"author":{"gitId":"JukeBoxK"},"content":"| `* * *` | secretary | add contacts to a list | record contact details |","lastModifiedDate":"2024-03-21"},{"lineNumber":344,"author":{"gitId":"JukeBoxK"},"content":"| `* * *` | secretary | remove contacts from a list | clean up old/unused records |","lastModifiedDate":"2024-03-21"},{"lineNumber":345,"author":{"gitId":"JukeBoxK"},"content":"| `* *` | secretary | tag individual contacts | organize the contact based on tags |","lastModifiedDate":"2024-03-21"},{"lineNumber":346,"author":{"gitId":"JukeBoxK"},"content":"| `* *` | secretary | delete a tag of an individual contact | make sure that the tag only is for the necessary users |","lastModifiedDate":"2024-03-21"},{"lineNumber":347,"author":{"gitId":"JukeBoxK"},"content":"| `*` | user | undo my command | save time on undoing the effects of a wrong command |","lastModifiedDate":"2024-03-21"},{"lineNumber":348,"author":{"gitId":"JukeBoxK"},"content":"| `*` | user | redo my undo | save time on undoing the effects of a wrong undo |","lastModifiedDate":"2024-03-21"},{"lineNumber":349,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":350,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":351,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07"},{"lineNumber":352,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":353,"author":{"gitId":"miffi"},"content":"(For all use cases below, the **System** is `OfficeHarbor` (OH) and the **Actor** is the `user`, unless specified otherwise)","lastModifiedDate":"2024-03-08"},{"lineNumber":354,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":355,"author":{"gitId":"JukeBoxK"},"content":"**UC01: View contacts**","lastModifiedDate":"2024-03-20"},{"lineNumber":356,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":357,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23"},{"lineNumber":358,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":359,"author":{"gitId":"JukeBoxK"},"content":"1. User requests to list people.","lastModifiedDate":"2024-03-20"},{"lineNumber":360,"author":{"gitId":"JukeBoxK"},"content":"2. OH shows a list of people.","lastModifiedDate":"2024-03-20"},{"lineNumber":361,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":362,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":363,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":364,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23"},{"lineNumber":365,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":366,"author":{"gitId":"-"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-03-20"},{"lineNumber":367,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":368,"author":{"gitId":"JukeBoxK"},"content":" * 2a1. No list is shown.","lastModifiedDate":"2024-03-20"},{"lineNumber":369,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":370,"author":{"gitId":"JukeBoxK"},"content":" Use case ends.","lastModifiedDate":"2024-03-20"},{"lineNumber":371,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":372,"author":{"gitId":"JukeBoxK"},"content":"**UC02: Add a contact**","lastModifiedDate":"2024-03-20"},{"lineNumber":373,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":374,"author":{"gitId":"radeon2525"},"content":"**MSS**","lastModifiedDate":"2024-03-07"},{"lineNumber":375,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":376,"author":{"gitId":"JukeBoxK"},"content":"1. User requests to add a person along with details.","lastModifiedDate":"2024-03-20"},{"lineNumber":377,"author":{"gitId":"JukeBoxK"},"content":"2. OH adds the person.","lastModifiedDate":"2024-03-20"},{"lineNumber":378,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":379,"author":{"gitId":"radeon2525"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":380,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":381,"author":{"gitId":"radeon2525"},"content":"**Extensions**","lastModifiedDate":"2024-03-07"},{"lineNumber":382,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":383,"author":{"gitId":"radeon2525"},"content":"* 1a. The given format is invalid.","lastModifiedDate":"2024-03-07"},{"lineNumber":384,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":385,"author":{"gitId":"radeon2525"},"content":" * 1a1. AddressBook shows an error message.","lastModifiedDate":"2024-03-07"},{"lineNumber":386,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":387,"author":{"gitId":"radeon2525"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-07"},{"lineNumber":388,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":389,"author":{"gitId":"JukeBoxK"},"content":"**UC03: Remove a contact**","lastModifiedDate":"2024-03-20"},{"lineNumber":390,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":391,"author":{"gitId":"JukeBoxK"},"content":"**MSS**","lastModifiedDate":"2024-03-20"},{"lineNumber":392,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":393,"author":{"gitId":"JukeBoxK"},"content":"1. User requests to list contacts (UC01).","lastModifiedDate":"2024-03-20"},{"lineNumber":394,"author":{"gitId":"JukeBoxK"},"content":"2. User requests to remove a specific contact in the list.","lastModifiedDate":"2024-03-20"},{"lineNumber":395,"author":{"gitId":"JukeBoxK"},"content":"3. OH removes the contact.","lastModifiedDate":"2024-03-20"},{"lineNumber":396,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":397,"author":{"gitId":"JukeBoxK"},"content":" Use case ends.","lastModifiedDate":"2024-03-20"},{"lineNumber":398,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":399,"author":{"gitId":"JukeBoxK"},"content":"**Extensions**","lastModifiedDate":"2024-03-20"},{"lineNumber":400,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":401,"author":{"gitId":"-"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2024-03-20"},{"lineNumber":402,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":403,"author":{"gitId":"JukeBoxK"},"content":" * 3a1. OH shows an error message.","lastModifiedDate":"2024-03-20"},{"lineNumber":404,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":405,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-20"},{"lineNumber":406,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":407,"author":{"gitId":"JukeBoxK"},"content":"**UC04: Tagging contacts**","lastModifiedDate":"2024-03-20"},{"lineNumber":408,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":409,"author":{"gitId":"JukeBoxK"},"content":"**MSS**","lastModifiedDate":"2024-03-20"},{"lineNumber":410,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":411,"author":{"gitId":"JukeBoxK"},"content":"1. User requests to list contacts (UC01).","lastModifiedDate":"2024-03-20"},{"lineNumber":412,"author":{"gitId":"JukeBoxK"},"content":"2. User requests to add a tag to a specific contact in the list.","lastModifiedDate":"2024-03-20"},{"lineNumber":413,"author":{"gitId":"JukeBoxK"},"content":"3. OH adds the tag to the contact.","lastModifiedDate":"2024-03-20"},{"lineNumber":414,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":415,"author":{"gitId":"JukeBoxK"},"content":" Use case ends.","lastModifiedDate":"2024-03-20"},{"lineNumber":416,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":417,"author":{"gitId":"JukeBoxK"},"content":"**Extensions**","lastModifiedDate":"2024-03-20"},{"lineNumber":418,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":419,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":420,"author":{"gitId":"JukeBoxK"},"content":"* 2a. The given index is invalid.","lastModifiedDate":"2024-03-20"},{"lineNumber":421,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":422,"author":{"gitId":"JukeBoxK"},"content":" * 2a1. OH shows an error message.","lastModifiedDate":"2024-03-20"},{"lineNumber":423,"author":{"gitId":"miffi"},"content":" ","lastModifiedDate":"2024-03-08"},{"lineNumber":424,"author":{"gitId":"JukeBoxK"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-20"},{"lineNumber":425,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":426,"author":{"gitId":"JukeBoxK"},"content":"* 2b. The given tag is empty or invalid.","lastModifiedDate":"2024-03-20"},{"lineNumber":427,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":428,"author":{"gitId":"JukeBoxK"},"content":" * 2b. OH shows an error message.","lastModifiedDate":"2024-03-20"},{"lineNumber":429,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":430,"author":{"gitId":"JukeBoxK"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-20"},{"lineNumber":431,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":432,"author":{"gitId":"JukeBoxK"},"content":"**UC05: Deleting a tag**","lastModifiedDate":"2024-03-20"},{"lineNumber":433,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":434,"author":{"gitId":"JukeBoxK"},"content":"**MSS**","lastModifiedDate":"2024-03-09"},{"lineNumber":435,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":436,"author":{"gitId":"JukeBoxK"},"content":"1. User requests to list contacts (UC01).","lastModifiedDate":"2024-03-20"},{"lineNumber":437,"author":{"gitId":"JukeBoxK"},"content":"2. User requests to delete a specific tag of a person from the list.","lastModifiedDate":"2024-03-20"},{"lineNumber":438,"author":{"gitId":"JukeBoxK"},"content":"3. OH deletes the specified tag of that person.","lastModifiedDate":"2024-03-20"},{"lineNumber":439,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":440,"author":{"gitId":"JukeBoxK"},"content":" Use case ends.","lastModifiedDate":"2024-03-09"},{"lineNumber":441,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":442,"author":{"gitId":"JukeBoxK"},"content":"**Extensions**","lastModifiedDate":"2024-03-09"},{"lineNumber":443,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":444,"author":{"gitId":"JukeBoxK"},"content":"* 2a. The given index is invalid.","lastModifiedDate":"2024-03-20"},{"lineNumber":445,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":446,"author":{"gitId":"JukeBoxK"},"content":" * 2a1. OH shows an error message.","lastModifiedDate":"2024-03-20"},{"lineNumber":447,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":448,"author":{"gitId":"JukeBoxK"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-20"},{"lineNumber":449,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":450,"author":{"gitId":"JukeBoxK"},"content":"* 2b. The specified tag does not exist.","lastModifiedDate":"2024-03-20"},{"lineNumber":451,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":452,"author":{"gitId":"JukeBoxK"},"content":" * 2b1. OH shows an error message.","lastModifiedDate":"2024-03-20"},{"lineNumber":453,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":454,"author":{"gitId":"JukeBoxK"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-09"},{"lineNumber":455,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":456,"author":{"gitId":"JukeBoxK"},"content":"**UC06: Undoing a Command**","lastModifiedDate":"2024-03-20"},{"lineNumber":457,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":458,"author":{"gitId":"JukeBoxK"},"content":"**MSS**","lastModifiedDate":"2024-03-20"},{"lineNumber":459,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":460,"author":{"gitId":"JukeBoxK"},"content":"1. User requests to undo a command.","lastModifiedDate":"2024-03-20"},{"lineNumber":461,"author":{"gitId":"JukeBoxK"},"content":"2. OH resets to the state before the latest command.","lastModifiedDate":"2024-03-20"},{"lineNumber":462,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":463,"author":{"gitId":"JukeBoxK"},"content":" Use case ends.","lastModifiedDate":"2024-03-20"},{"lineNumber":464,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":465,"author":{"gitId":"JukeBoxK"},"content":"**Extensions**","lastModifiedDate":"2024-03-20"},{"lineNumber":466,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":467,"author":{"gitId":"JukeBoxK"},"content":"* 2a. No command has been run since opening the app.","lastModifiedDate":"2024-03-20"},{"lineNumber":468,"author":{"gitId":"JukeBoxK"},"content":" ","lastModifiedDate":"2024-03-20"},{"lineNumber":469,"author":{"gitId":"JukeBoxK"},"content":" * 2a1. OH shows an error message. ","lastModifiedDate":"2024-03-20"},{"lineNumber":470,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":471,"author":{"gitId":"JukeBoxK"},"content":" Use case ends.","lastModifiedDate":"2024-03-20"},{"lineNumber":472,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":473,"author":{"gitId":"JukeBoxK"},"content":"**UC06: Redoing an Undo Command**","lastModifiedDate":"2024-03-20"},{"lineNumber":474,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":475,"author":{"gitId":"JukeBoxK"},"content":"**MSS**","lastModifiedDate":"2024-03-20"},{"lineNumber":476,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":477,"author":{"gitId":"JukeBoxK"},"content":"1. User requests to redo an undo.","lastModifiedDate":"2024-03-20"},{"lineNumber":478,"author":{"gitId":"JukeBoxK"},"content":"2. OH resets to the state before the latest command.","lastModifiedDate":"2024-03-20"},{"lineNumber":479,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":480,"author":{"gitId":"JukeBoxK"},"content":" Use case ends.","lastModifiedDate":"2024-03-20"},{"lineNumber":481,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":482,"author":{"gitId":"JukeBoxK"},"content":"**Extensions**","lastModifiedDate":"2024-03-20"},{"lineNumber":483,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":484,"author":{"gitId":"JukeBoxK"},"content":"* 2a. No command has been run since opening the app.","lastModifiedDate":"2024-03-20"},{"lineNumber":485,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":486,"author":{"gitId":"JukeBoxK"},"content":" * 2a1. OH shows an error message.","lastModifiedDate":"2024-03-20"},{"lineNumber":487,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":488,"author":{"gitId":"JukeBoxK"},"content":" Use case ends.","lastModifiedDate":"2024-03-20"},{"lineNumber":489,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":490,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":491,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":492,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":493,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23"},{"lineNumber":494,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":495,"author":{"gitId":"-"},"content":"1. Should work on any _mainstream OS_ as long as it has Java `11` or above installed.","lastModifiedDate":"2020-05-23"},{"lineNumber":496,"author":{"gitId":"-"},"content":"2. Should be able to hold up to 1000 persons without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":497,"author":{"gitId":"radeon2525"},"content":"3. A user with above average typing speed for regular English text (i.e. not code, not system admin commands) should be","lastModifiedDate":"2024-03-07"},{"lineNumber":498,"author":{"gitId":"radeon2525"},"content":" able to accomplish most of the tasks faster using commands than using the mouse.","lastModifiedDate":"2024-03-07"},{"lineNumber":499,"author":{"gitId":"radeon2525"},"content":"4. Should be able to handle private contact details securely.","lastModifiedDate":"2024-03-07"},{"lineNumber":500,"author":{"gitId":"radeon2525"},"content":"5. Should be able to handle a large number of contacts without consuming a large amount of memory.","lastModifiedDate":"2024-03-07"},{"lineNumber":501,"author":{"gitId":"radeon2525"},"content":"6. Should be able to handle a large number of contacts without slowing down the app.","lastModifiedDate":"2024-03-07"},{"lineNumber":502,"author":{"gitId":"radeon2525"},"content":"7. Should be able to handle a large number of contacts without losing the data.","lastModifiedDate":"2024-03-07"},{"lineNumber":503,"author":{"gitId":"radeon2525"},"content":"8. Should be able to handle a large number of contacts without losing the data even in the event of a system crash.","lastModifiedDate":"2024-03-07"},{"lineNumber":504,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":505,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23"},{"lineNumber":506,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":507,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09"},{"lineNumber":508,"author":{"gitId":"-"},"content":"* **Private contact detail**: A contact detail that is not meant to be shared with others","lastModifiedDate":"2020-05-23"},{"lineNumber":509,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":510,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":511,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":512,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23"},{"lineNumber":513,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":514,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":515,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":516,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2020-05-23"},{"lineNumber":517,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":518,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":519,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":520,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":521,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":522,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":523,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":524,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":525,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23"},{"lineNumber":526,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":527,"author":{"gitId":"radeon2525"},"content":" 1. Double-click the jar file Expected: Shows the GUI with a set of sample contacts. The window size may not be","lastModifiedDate":"2024-03-07"},{"lineNumber":528,"author":{"gitId":"radeon2525"},"content":" optimum.","lastModifiedDate":"2024-03-07"},{"lineNumber":529,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":530,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23"},{"lineNumber":531,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":532,"author":{"gitId":"-"},"content":" 1. Resize the window to an optimum size. Move the window to a different location. Close the window.","lastModifiedDate":"2020-05-23"},{"lineNumber":533,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":534,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":535,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23"},{"lineNumber":536,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":537,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":538,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":539,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23"},{"lineNumber":540,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":541,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23"},{"lineNumber":542,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":543,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23"},{"lineNumber":544,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":545,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":546,"author":{"gitId":"radeon2525"},"content":" Expected: First contact is deleted from the list. Details of the deleted contact shown in the status message.","lastModifiedDate":"2024-03-07"},{"lineNumber":547,"author":{"gitId":"radeon2525"},"content":" Timestamp in the status bar is updated.","lastModifiedDate":"2024-03-07"},{"lineNumber":548,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":549,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":550,"author":{"gitId":"-"},"content":" Expected: No person is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2020-05-23"},{"lineNumber":551,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":552,"author":{"gitId":"-"},"content":" 1. Other incorrect delete commands to try: `delete`, `delete x`, `...` (where x is larger than the list size)\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":553,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":554,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":555,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":556,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":557,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":558,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":559,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":560,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":561,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23"},{"lineNumber":562,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":563,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"Derekljh":7,"radeon2525":122,"JukeBoxK":100,"miffi":10,"-":324}},{"path":"docs/UserGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: User Guide","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"JukeBoxK"},"content":"OfficeHarbor (OH) is a **desktop app for managing the contacts of a tech firm\u0027s teams, optimized for use via a Command Line Interface** (CLI) while still having the benefits of a Graphical User Interface (GUI). If you can type fast, OH can get your contact management tasks done faster than traditional GUI apps.","lastModifiedDate":"2024-02-29"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"{:toc}","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"## Quick start","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"1. Ensure you have Java `11` or above installed in your Computer.","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"JukeBoxK"},"content":"2. Download the latest `officeharbor.jar` from [here](https://github.com/AY2324S2-CS2103T-W13-2/tphone:releases).","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"JukeBoxK"},"content":"3. Copy the file to the folder you want to use as the _home folder_ for your OH.","lastModifiedDate":"2024-02-29"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"JukeBoxK"},"content":"4. (a) Double-click on the `officeharbor.jar` file to run the application.","lastModifiedDate":"2024-02-29"},{"lineNumber":22,"author":{"gitId":"JukeBoxK"},"content":" (b) (Or) Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar officeharbor.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2024-02-29"},{"lineNumber":23,"author":{"gitId":"-"},"content":" A GUI similar to the below should appear in a few seconds. Note how the app contains some sample data.\u003cbr\u003e","lastModifiedDate":"2023-01-01"},{"lineNumber":24,"author":{"gitId":"-"},"content":" ![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"JukeBoxK"},"content":"5. Type the command in the command box and press Enter to execute it. e.g. typing **`help`** and pressing Enter will open the help window.\u003cbr\u003e","lastModifiedDate":"2024-02-29"},{"lineNumber":27,"author":{"gitId":"-"},"content":" Some example commands you can try:","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * `list` : Lists all contacts.","lastModifiedDate":"2023-01-01"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"JukeBoxK"},"content":" * `add name:John Doe phone:98765432 email:johnd@example.com address:John street, block 123, #01-01` : Adds a contact named `John Doe` to OH.","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * `delete 3` : Deletes the 3rd contact shown in the current list.","lastModifiedDate":"2023-01-01"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * `clear` : Deletes all contacts.","lastModifiedDate":"2023-01-01"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * `exit` : Exits the app.","lastModifiedDate":"2023-01-01"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"JukeBoxK"},"content":"6. Refer to the [Features](#features) below for details of each command.","lastModifiedDate":"2024-02-29"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"block\" class\u003d\"alert alert-info\"\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"**:information_source: Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"JukeBoxK"},"content":"* Words enclosed between diamond brackets `\u003c\u003e`, are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2024-02-29"},{"lineNumber":50,"author":{"gitId":"JukeBoxK"},"content":" e.g. in `add name:\u003cname\u003e`, `\u003cname\u003e` is a parameter which can be used as `add name:John Doe`.","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"JukeBoxK"},"content":"* Space can be added between the prefix and the word.\u003cbr\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"JukeBoxK"},"content":" e.g. either `name: \u003cname\u003e phone: \u003cphone number\u003e` or `name:\u003cname\u003e phone:\u003cphone number\u003e` is acceptable.","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"JukeBoxK"},"content":"* In some commands like tag, `[tag/\u003ctag\u003e]...` means that you can have multiple optional prefixes at the end \u003cbr\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"JukeBoxK"},"content":" e.g. the command `tag 1 tag:friends tag:colleagues` would add 2 tags directly to the contact at index 1.","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"JukeBoxK"},"content":"* Parameters can be in any order for adding a contact.\u003cbr\u003e","lastModifiedDate":"2024-02-29"},{"lineNumber":59,"author":{"gitId":"JukeBoxK"},"content":" e.g. if the command specifies `name:\u003cname\u003e phone:\u003cphone number\u003e`, `phone:\u003cphone number\u003e name:\u003cname\u003e` is also acceptable.","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"* Extraneous parameters for commands that do not take in parameters (such as `help`, `list`, `exit` and `clear`) will be ignored.\u003cbr\u003e","lastModifiedDate":"2021-02-03"},{"lineNumber":62,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2021-02-03"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03"},{"lineNumber":64,"author":{"gitId":"-"},"content":"* If you are using a PDF version of this document, be careful when copying and pasting commands that span multiple lines as space characters surrounding line-breaks may be omitted when copied over to the application.","lastModifiedDate":"2023-06-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"### Viewing help : `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"JukeBoxK"},"content":"Shows a message explaining how to access the help page.","lastModifiedDate":"2024-02-29"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"Format: `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"### Adding a person: `add`","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"JukeBoxK"},"content":"Adds a contact with the input details to OH.","lastModifiedDate":"2024-02-29"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"JukeBoxK"},"content":"Format: `add name:\u003cname\u003e phone:\u003cphone number\u003e email:\u003cemail address\u003e address:\u003caddress\u003e`","lastModifiedDate":"2024-03-21"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"JukeBoxK"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e","lastModifiedDate":"2024-02-29"},{"lineNumber":83,"author":{"gitId":"JukeBoxK"},"content":"All components are necessary.","lastModifiedDate":"2024-02-29"},{"lineNumber":84,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"JukeBoxK"},"content":"* `add name:John Doe phone:98765432 email:johnd@example.com address:John street, block 123, #01-01`","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"JukeBoxK"},"content":"* `add name:Virat Kohli phone:98765432 email:virat@gmail.com address:Altamount Road, block 10, #05-02`","lastModifiedDate":"2024-03-21"},{"lineNumber":89,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":90,"author":{"gitId":"JukeBoxK"},"content":"Output:","lastModifiedDate":"2024-02-29"},{"lineNumber":91,"author":{"gitId":"JukeBoxK"},"content":"The message “A new contact `name` has been added to the list. Name: `\u003cname\u003e`, Phone: `\u003cphone number\u003e`, Email: `\u003cemail\u003e`, Address: `\u003caddress\u003e`.” will be shown. ","lastModifiedDate":"2024-02-29"},{"lineNumber":92,"author":{"gitId":"JukeBoxK"},"content":"A new contact entry with the given user will be displayed in the list.","lastModifiedDate":"2024-02-29"},{"lineNumber":93,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":94,"author":{"gitId":"JukeBoxK"},"content":"![add](images/user-guide/add_mock_output.png)","lastModifiedDate":"2024-03-21"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"### Listing all persons : `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"JukeBoxK"},"content":"Shows a list of all contacts in OH.","lastModifiedDate":"2024-02-29"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"Format: `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"JukeBoxK"},"content":"Output:","lastModifiedDate":"2024-02-29"},{"lineNumber":103,"author":{"gitId":"JukeBoxK"},"content":"A list of added contacts if any in the form of a scrollable pane will be shown. ","lastModifiedDate":"2024-02-29"},{"lineNumber":104,"author":{"gitId":"JukeBoxK"},"content":"The contacts are listed in the order in which they are added.","lastModifiedDate":"2024-02-29"},{"lineNumber":105,"author":{"gitId":"JukeBoxK"},"content":"The message \"Empty list\" is shown when there is nothing added.","lastModifiedDate":"2024-02-29"},{"lineNumber":106,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":107,"author":{"gitId":"JukeBoxK"},"content":"### Deleting a person : `delete`","lastModifiedDate":"2024-02-29"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"author":{"gitId":"JukeBoxK"},"content":"Deletes the specified contact from OH.","lastModifiedDate":"2024-02-29"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":111,"author":{"gitId":"JukeBoxK"},"content":"Format: `delete \u003cid\u003e`","lastModifiedDate":"2024-02-29"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"JukeBoxK"},"content":"* Deletes the person at the specified `\u003cid\u003e`.","lastModifiedDate":"2024-02-29"},{"lineNumber":114,"author":{"gitId":"JukeBoxK"},"content":"* The id refers to the index number shown in the contact list.","lastModifiedDate":"2024-02-29"},{"lineNumber":115,"author":{"gitId":"JukeBoxK"},"content":"* The id **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2024-02-29"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"JukeBoxK"},"content":"* `delete 2` deletes the 2nd person of the contact list from OH.","lastModifiedDate":"2024-02-29"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"JukeBoxK"},"content":"Output:","lastModifiedDate":"2024-02-29"},{"lineNumber":121,"author":{"gitId":"JukeBoxK"},"content":"The message \"Contact `name` has been deleted. Name: `name`, Phone: `phone number`, Email: `email`, Address: `address`.” will be shown.","lastModifiedDate":"2024-02-29"},{"lineNumber":122,"author":{"gitId":"JukeBoxK"},"content":"The entry with the given id will disappear from the list.","lastModifiedDate":"2024-02-29"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"JukeBoxK"},"content":"![delete](images/user-guide/delete_mock_output.png)","lastModifiedDate":"2024-03-21"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"JukeBoxK"},"content":"### Clearing all entries : `clear`","lastModifiedDate":"2024-02-29"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":128,"author":{"gitId":"JukeBoxK"},"content":"Clears all entries from OH.","lastModifiedDate":"2024-02-29"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":130,"author":{"gitId":"JukeBoxK"},"content":"Format: `clear`","lastModifiedDate":"2024-02-29"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":132,"author":{"gitId":"JukeBoxK"},"content":"Output:","lastModifiedDate":"2024-02-29"},{"lineNumber":133,"author":{"gitId":"JukeBoxK"},"content":"The message \"Address book has been cleared!\" will be shown.","lastModifiedDate":"2024-02-29"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"JukeBoxK"},"content":"### Tagging a Contact : `tag`","lastModifiedDate":"2024-02-29"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"JukeBoxK"},"content":"Tags the specified contact with the input tag name.","lastModifiedDate":"2024-02-29"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"JukeBoxK"},"content":"* Tags the person at the specified `\u003cid\u003e`.","lastModifiedDate":"2024-02-29"},{"lineNumber":140,"author":{"gitId":"JukeBoxK"},"content":"* The id refers to the index number shown in the displayed person list.","lastModifiedDate":"2024-02-29"},{"lineNumber":141,"author":{"gitId":"JukeBoxK"},"content":"* The id **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2024-02-29"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"JukeBoxK"},"content":"Format: `tag \u003cid\u003e tag:\u003ctag\u003e [tag:tag]...`","lastModifiedDate":"2024-03-21"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"JukeBoxK"},"content":"Example:","lastModifiedDate":"2024-02-29"},{"lineNumber":146,"author":{"gitId":"JukeBoxK"},"content":"`tag 2 friends`","lastModifiedDate":"2024-03-20"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"JukeBoxK"},"content":"Output:","lastModifiedDate":"2024-02-29"},{"lineNumber":149,"author":{"gitId":"JukeBoxK"},"content":"The message \"The following contact has been tagged with `\u003ctag name\u003e`: `contact info`.” will be shown, ","lastModifiedDate":"2024-02-29"},{"lineNumber":150,"author":{"gitId":"JukeBoxK"},"content":"where contact info is all the information of the contact.","lastModifiedDate":"2024-02-29"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"JukeBoxK"},"content":"![tag](images/user-guide/tag_mock_output.png)","lastModifiedDate":"2024-03-21"},{"lineNumber":153,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":154,"author":{"gitId":"JukeBoxK"},"content":"### Deleting a tag : `untag`","lastModifiedDate":"2024-03-20"},{"lineNumber":155,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":156,"author":{"gitId":"JukeBoxK"},"content":"Deletes the specified tag from the specified contact","lastModifiedDate":"2024-02-29"},{"lineNumber":157,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":158,"author":{"gitId":"JukeBoxK"},"content":"* Delete the specified tag of the person at the specified `\u003cid\u003e`.","lastModifiedDate":"2024-02-29"},{"lineNumber":159,"author":{"gitId":"JukeBoxK"},"content":"* The id refers to the index number shown in the displayed person list.","lastModifiedDate":"2024-02-29"},{"lineNumber":160,"author":{"gitId":"JukeBoxK"},"content":"* The id **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2024-02-29"},{"lineNumber":161,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":162,"author":{"gitId":"JukeBoxK"},"content":"Format: `untag \u003cid\u003e tag:\u003ctag\u003e [tag:tag]...`","lastModifiedDate":"2024-03-21"},{"lineNumber":163,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":164,"author":{"gitId":"JukeBoxK"},"content":"Output:","lastModifiedDate":"2024-02-29"},{"lineNumber":165,"author":{"gitId":"JukeBoxK"},"content":"The message \"The tag `\u003ctag\u003e` has been removed from contact: `contact info`.\" will be shown,","lastModifiedDate":"2024-03-20"},{"lineNumber":166,"author":{"gitId":"JukeBoxK"},"content":"where contact info is all the information of the contact. ","lastModifiedDate":"2024-02-29"},{"lineNumber":167,"author":{"gitId":"JukeBoxK"},"content":"The list entry of the user with \u003cid\u003e will not have the tag anymore.","lastModifiedDate":"2024-02-29"},{"lineNumber":168,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":169,"author":{"gitId":"JukeBoxK"},"content":"![delete-tag](images/user-guide/delete-tag_mock_output.png)","lastModifiedDate":"2024-03-21"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"JukeBoxK"},"content":"### Undoing a command : `undo`","lastModifiedDate":"2024-03-20"},{"lineNumber":172,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":173,"author":{"gitId":"JukeBoxK"},"content":"Resets the state of OH to before the execution of the latest command.","lastModifiedDate":"2024-03-20"},{"lineNumber":174,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":175,"author":{"gitId":"JukeBoxK"},"content":"Format: `undo`","lastModifiedDate":"2024-03-20"},{"lineNumber":176,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":177,"author":{"gitId":"JukeBoxK"},"content":"Output:","lastModifiedDate":"2024-03-20"},{"lineNumber":178,"author":{"gitId":"JukeBoxK"},"content":"The message \"Undo success!\" will be shown. ","lastModifiedDate":"2024-03-20"},{"lineNumber":179,"author":{"gitId":"JukeBoxK"},"content":"The list entry of the user will return to the state before the latest command. ","lastModifiedDate":"2024-03-20"},{"lineNumber":180,"author":{"gitId":"JukeBoxK"},"content":"If no command has been run at all, an error message \"No more commands to undo!\" will be shown instead.","lastModifiedDate":"2024-03-20"},{"lineNumber":181,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":182,"author":{"gitId":"JukeBoxK"},"content":"Example of undoing a delete command.","lastModifiedDate":"2024-03-20"},{"lineNumber":183,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":184,"author":{"gitId":"JukeBoxK"},"content":"Contact after a delete command:","lastModifiedDate":"2024-03-20"},{"lineNumber":185,"author":{"gitId":"JukeBoxK"},"content":"![delete_operation](images/user-guide/delete_operation-undo-mock.png)","lastModifiedDate":"2024-03-21"},{"lineNumber":186,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":187,"author":{"gitId":"JukeBoxK"},"content":"Contact after the delete command is undone:","lastModifiedDate":"2024-03-20"},{"lineNumber":188,"author":{"gitId":"JukeBoxK"},"content":"![undo](images/user-guide/undo_mock_output.png)","lastModifiedDate":"2024-03-21"},{"lineNumber":189,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":190,"author":{"gitId":"JukeBoxK"},"content":"### Redoing a command : `redo`","lastModifiedDate":"2024-03-20"},{"lineNumber":191,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":192,"author":{"gitId":"JukeBoxK"},"content":"Resets the state of OH to before the latest undo command.","lastModifiedDate":"2024-03-20"},{"lineNumber":193,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":194,"author":{"gitId":"JukeBoxK"},"content":"Format: `redo`","lastModifiedDate":"2024-03-20"},{"lineNumber":195,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":196,"author":{"gitId":"JukeBoxK"},"content":"Output:","lastModifiedDate":"2024-03-20"},{"lineNumber":197,"author":{"gitId":"JukeBoxK"},"content":"The message \"Redo success!\" will be shown.","lastModifiedDate":"2024-03-20"},{"lineNumber":198,"author":{"gitId":"JukeBoxK"},"content":"The list entry of the user will return to the state before the latest undo command.","lastModifiedDate":"2024-03-20"},{"lineNumber":199,"author":{"gitId":"JukeBoxK"},"content":"If no undo command has been run at all, an error message \"No more commands to redo!\" will be shown instead.","lastModifiedDate":"2024-03-20"},{"lineNumber":200,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":201,"author":{"gitId":"JukeBoxK"},"content":"Example of redoing the previous undo command:","lastModifiedDate":"2024-03-20"},{"lineNumber":202,"author":{"gitId":"JukeBoxK"},"content":"![redo](images/user-guide/redo_mock_output.png)","lastModifiedDate":"2024-03-21"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":204,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":206,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":208,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":210,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":212,"author":{"gitId":"miffi"},"content":"OfficeHarbor data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.","lastModifiedDate":"2024-02-24"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":214,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":216,"author":{"gitId":"JukeBoxK"},"content":"OfficeHarbor data are saved automatically as a JSON file `[JAR file location]/dataddress:officeharbor.json`. Advanced users are welcome to update data directly by editing that data file.","lastModifiedDate":"2024-03-21"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":218,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-warning\"\u003e:exclamation: **Caution:**","lastModifiedDate":"2021-02-04"},{"lineNumber":219,"author":{"gitId":"miffi"},"content":"If your changes to the data file makes its format invalid, OfficeHarbor will discard all data and start with an empty data file at the next run. Hence, it is recommended to take a backup of the file before editing it.\u003cbr\u003e","lastModifiedDate":"2024-02-24"},{"lineNumber":220,"author":{"gitId":"JukeBoxK"},"content":"Furthermore, certain edits can cause the OfficeHarbor to behave in unexpected ways (e.g., if a value entered is outside the acceptable range). Therefore, edit the data file only if you are confident that you can update it correctly.","lastModifiedDate":"2024-02-29"},{"lineNumber":221,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-02-04"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":223,"author":{"gitId":"JukeBoxK"},"content":"### Filtering tags `[coming in v1.3]`","lastModifiedDate":"2024-02-29"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":"_Details coming soon ..._","lastModifiedDate":"2021-02-04"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"miffi"},"content":"**A**: Install the app in the other computer and overwrite the empty data file it creates with the file that contains the data of your previous OfficeHarbor home folder.","lastModifiedDate":"2024-02-24"},{"lineNumber":233,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":234,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":"## Known issues","lastModifiedDate":"2023-09-08"},{"lineNumber":237,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":238,"author":{"gitId":"-"},"content":"1. **When using multiple screens**, if you move the application to a secondary screen, and later switch to using only the primary screen, the GUI will open off-screen. The remedy is to delete the `preferences.json` file created by the application before running the application again.","lastModifiedDate":"2023-09-08"},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":240,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":242,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"JukeBoxK"},"content":"| Action | Format, Examples |","lastModifiedDate":"2024-02-29"},{"lineNumber":245,"author":{"gitId":"JukeBoxK"},"content":"|----------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|","lastModifiedDate":"2024-03-21"},{"lineNumber":246,"author":{"gitId":"JukeBoxK"},"content":"| **Add** | `add name:\u003cname\u003e phone:\u003cphone number\u003e email:\u003cemail address\u003e address:\u003caddress\u003e` \u003cbr\u003e e.g., `add name:James Ho phone:22224444 email:jamesho@example.com address:123, Clementi Rd, 1234665` |","lastModifiedDate":"2024-03-21"},{"lineNumber":247,"author":{"gitId":"JukeBoxK"},"content":"| **Delete** | `delete \u003cid\u003e`\u003cbr\u003e e.g., `delete 3` |","lastModifiedDate":"2024-03-20"},{"lineNumber":248,"author":{"gitId":"JukeBoxK"},"content":"| **Clear** | `clear` |","lastModifiedDate":"2024-02-29"},{"lineNumber":249,"author":{"gitId":"JukeBoxK"},"content":"| **Tag** | `tag \u003cid\u003e tag:\u003ctag\u003e [tag:tag]...` \u003cbr\u003e e.g., `tag 2 tag:friends` |","lastModifiedDate":"2024-03-21"},{"lineNumber":250,"author":{"gitId":"JukeBoxK"},"content":"| **Delete Tag** | `untag \u003cid\u003e tag:\u003ctag\u003e [tag:tag]...` \u003cbr\u003e e.g., `untag 2 tag:friends` |","lastModifiedDate":"2024-03-21"},{"lineNumber":251,"author":{"gitId":"JukeBoxK"},"content":"| **List** | `list` |","lastModifiedDate":"2024-02-29"},{"lineNumber":252,"author":{"gitId":"JukeBoxK"},"content":"| **Undo** | `undo` |","lastModifiedDate":"2024-03-20"},{"lineNumber":253,"author":{"gitId":"JukeBoxK"},"content":"| **Redo** | `redo` |","lastModifiedDate":"2024-03-20"},{"lineNumber":254,"author":{"gitId":"JukeBoxK"},"content":"| **Help** | `help` |","lastModifiedDate":"2024-02-29"}],"authorContributionMap":{"JukeBoxK":126,"miffi":3,"-":125}},{"path":"docs/_sass/minima/_base.scss","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"html {","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":" font-size: $base-font-size;","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * Reset some basic elements","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"body, h1, h2, h3, h4, h5, h6,","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"p, blockquote, pre, hr,","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"dl, dd, ol, ul, figure {","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":" margin: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":" padding: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Basic styling","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"body {","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":" font: $base-font-weight #{$base-font-size}/#{$base-line-height} $base-font-family;","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":" color: $text-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":" background-color: $background-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":" -webkit-text-size-adjust: 100%;","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":" -webkit-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":" -moz-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":" -o-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":" font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":" font-kerning: normal;","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" display: flex;","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":" min-height: 100vh;","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":" flex-direction: column;","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":" overflow-wrap: break-word;","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Set `margin-bottom` to maintain vertical rhythm","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"h1, h2, h3, h4, h5, h6,","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"p, blockquote, pre,","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"ul, ol, dl, figure,","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"%vertical-rhythm {","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit / 2;","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"hr {","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" margin-top: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * `main` element","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"main {","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" display: block; /* Default value of `display` of `main` element is \u0027inline\u0027 in IE 11. */","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Images","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"img {","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" max-width: 100%;","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" vertical-align: middle;","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * Figures","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"figure \u003e img {","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"figcaption {","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" font-size: $small-font-size;","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Lists","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"ul, ol {","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" margin-left: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"li {","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":" \u003e ul,","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":" \u003e ol {","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":" margin-bottom: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Headings","lastModifiedDate":"2020-05-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":"h1, h2, h3, h4, h5, h6 {","lastModifiedDate":"2020-05-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":" font-weight: $base-font-weight;","lastModifiedDate":"2020-05-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":" * Links","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":"a {","lastModifiedDate":"2020-05-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":" color: $link-base-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":" text-decoration: none;","lastModifiedDate":"2020-05-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":" \u0026:visited {","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":" color: $link-visited-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":" \u0026:hover {","lastModifiedDate":"2020-05-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":" color: $text-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":" text-decoration: underline;","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":" .social-media-list \u0026:hover {","lastModifiedDate":"2020-05-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":" text-decoration: none;","lastModifiedDate":"2020-05-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":" .username {","lastModifiedDate":"2020-05-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":" text-decoration: underline;","lastModifiedDate":"2020-05-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":" * Blockquotes","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"blockquote {","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":" color: $brand-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":" border-left: 4px solid $brand-color-light;","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit / 2;","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":" @include relative-font-size(1.125);","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":" font-style: italic;","lastModifiedDate":"2020-05-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":" \u003e :last-child {","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":" margin-bottom: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":" i, em {","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":" font-style: normal;","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":" * Code formatting","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"pre,","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":"code {","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":" font-family: $code-font-family;","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":" font-size: 0.9375em;","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":" border: 1px solid $brand-color-light;","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":" border-radius: 3px;","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":" background-color: $code-background-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"code {","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":" padding: 1px 5px;","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":"pre {","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":" padding: 8px 12px;","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":" overflow-x: auto;","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":" \u003e code {","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":" border: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":" padding-right: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":" padding-left: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":".highlight {","lastModifiedDate":"2020-05-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":" border-radius: 3px;","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":" background: $code-background-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":" @extend %vertical-rhythm;","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":190,"author":{"gitId":"-"},"content":" .highlighter-rouge \u0026 {","lastModifiedDate":"2020-05-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":" background: $code-background-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":198,"author":{"gitId":"-"},"content":" * Wrapper","lastModifiedDate":"2020-05-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"author":{"gitId":"-"},"content":".wrapper {","lastModifiedDate":"2020-05-23"},{"lineNumber":201,"author":{"gitId":"-"},"content":" max-width: calc(#{$content-width} - (#{$spacing-unit}));","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":" margin-right: auto;","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":" margin-left: auto;","lastModifiedDate":"2020-05-23"},{"lineNumber":204,"author":{"gitId":"-"},"content":" padding-right: $spacing-unit / 2;","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit / 2;","lastModifiedDate":"2020-05-23"},{"lineNumber":206,"author":{"gitId":"-"},"content":" @extend %clearfix;","lastModifiedDate":"2020-05-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":208,"author":{"gitId":"-"},"content":" @media screen and (min-width: $on-large) {","lastModifiedDate":"2020-05-23"},{"lineNumber":209,"author":{"gitId":"-"},"content":" max-width: calc(#{$content-width} - (#{$spacing-unit} * 2));","lastModifiedDate":"2020-05-23"},{"lineNumber":210,"author":{"gitId":"-"},"content":" padding-right: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":212,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":213,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":217,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":218,"author":{"gitId":"-"},"content":" * Clearfix","lastModifiedDate":"2020-05-23"},{"lineNumber":219,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":220,"author":{"gitId":"-"},"content":"%clearfix:after {","lastModifiedDate":"2020-05-23"},{"lineNumber":221,"author":{"gitId":"-"},"content":" content: \"\";","lastModifiedDate":"2020-05-23"},{"lineNumber":222,"author":{"gitId":"-"},"content":" display: table;","lastModifiedDate":"2020-05-23"},{"lineNumber":223,"author":{"gitId":"-"},"content":" clear: both;","lastModifiedDate":"2020-05-23"},{"lineNumber":224,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":228,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":" * Icons","lastModifiedDate":"2020-05-23"},{"lineNumber":230,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":".orange {","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":" color: #f66a0a;","lastModifiedDate":"2020-05-23"},{"lineNumber":234,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":".grey {","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":" color: #828282;","lastModifiedDate":"2020-05-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":" * Tables","lastModifiedDate":"2020-05-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":"table {","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":" width: 100%;","lastModifiedDate":"2020-05-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":" text-align: $table-text-align;","lastModifiedDate":"2020-05-23"},{"lineNumber":247,"author":{"gitId":"-"},"content":" color: $table-text-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":248,"author":{"gitId":"-"},"content":" border-collapse: collapse;","lastModifiedDate":"2020-05-23"},{"lineNumber":249,"author":{"gitId":"-"},"content":" border: 1px solid $table-border-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":250,"author":{"gitId":"-"},"content":" tr {","lastModifiedDate":"2020-05-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":" \u0026:nth-child(even) {","lastModifiedDate":"2020-05-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":" background-color: $table-zebra-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":254,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":" th, td {","lastModifiedDate":"2020-05-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":" padding: ($spacing-unit / 3) ($spacing-unit / 2);","lastModifiedDate":"2020-05-23"},{"lineNumber":257,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":258,"author":{"gitId":"-"},"content":" th {","lastModifiedDate":"2020-05-23"},{"lineNumber":259,"author":{"gitId":"-"},"content":" background-color: $table-header-bg-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"-"},"content":" border: 1px solid $table-header-border;","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":262,"author":{"gitId":"-"},"content":" td {","lastModifiedDate":"2020-05-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":" border: 1px solid $table-border-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":264,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":266,"author":{"gitId":"-"},"content":" @include media-query($on-laptop) {","lastModifiedDate":"2020-05-23"},{"lineNumber":267,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2020-05-23"},{"lineNumber":268,"author":{"gitId":"-"},"content":" overflow-x: auto;","lastModifiedDate":"2020-05-23"},{"lineNumber":269,"author":{"gitId":"-"},"content":" -webkit-overflow-scrolling: touch;","lastModifiedDate":"2020-05-23"},{"lineNumber":270,"author":{"gitId":"-"},"content":" -ms-overflow-style: -ms-autohiding-scrollbar;","lastModifiedDate":"2020-05-23"},{"lineNumber":271,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":272,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-01-11"},{"lineNumber":274,"author":{"gitId":"-"},"content":"@media print {","lastModifiedDate":"2021-01-12"},{"lineNumber":275,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2021-01-11"},{"lineNumber":276,"author":{"gitId":"-"},"content":" * Prevents page break from cutting through content when printing","lastModifiedDate":"2021-01-12"},{"lineNumber":277,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2021-01-11"},{"lineNumber":278,"author":{"gitId":"-"},"content":" body {","lastModifiedDate":"2021-01-11"},{"lineNumber":279,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2021-01-11"},{"lineNumber":280,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-11"},{"lineNumber":281,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2021-01-12"},{"lineNumber":282,"author":{"gitId":"-"},"content":" * Replaces the top navigation menu with the project name when printing","lastModifiedDate":"2021-01-12"},{"lineNumber":283,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2021-01-12"},{"lineNumber":284,"author":{"gitId":"-"},"content":" .site-header .wrapper {","lastModifiedDate":"2021-01-12"},{"lineNumber":285,"author":{"gitId":"-"},"content":" display: none;","lastModifiedDate":"2021-01-12"},{"lineNumber":286,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-12"},{"lineNumber":287,"author":{"gitId":"-"},"content":" .site-header {","lastModifiedDate":"2021-01-12"},{"lineNumber":288,"author":{"gitId":"-"},"content":" text-align: center;","lastModifiedDate":"2021-01-12"},{"lineNumber":289,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-12"},{"lineNumber":290,"author":{"gitId":"-"},"content":" .site-header:before {","lastModifiedDate":"2021-01-12"},{"lineNumber":291,"author":{"gitId":"miffi"},"content":" content: \"OfficeHarbor\";","lastModifiedDate":"2024-02-24"},{"lineNumber":292,"author":{"gitId":"-"},"content":" font-size: 32px;","lastModifiedDate":"2021-01-12"},{"lineNumber":293,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-11"},{"lineNumber":294,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-01-12"},{"lineNumber":295,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-01-12"}],"authorContributionMap":{"miffi":1,"-":294}},{"path":"docs/diagrams/TagCommand.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"Derekljh"},"content":"@startuml","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"Derekljh"},"content":"!include Style.puml","lastModifiedDate":"2024-03-22"},{"lineNumber":3,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":4,"author":{"gitId":"Derekljh"},"content":"box Logic LOGIC_COLOR_T2","lastModifiedDate":"2024-03-22"},{"lineNumber":5,"author":{"gitId":"Derekljh"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2024-03-22"},{"lineNumber":6,"author":{"gitId":"Derekljh"},"content":"participant \":AddressBookParser\" as AddressBookParser LOGIC_COLOR","lastModifiedDate":"2024-03-22"},{"lineNumber":7,"author":{"gitId":"Derekljh"},"content":"participant \":TagCommandParser\" as TagCommandParser LOGIC_COLOR","lastModifiedDate":"2024-03-22"},{"lineNumber":8,"author":{"gitId":"Derekljh"},"content":"participant \":TagCommand\" as TagCommand LOGIC_COLOR","lastModifiedDate":"2024-03-22"},{"lineNumber":9,"author":{"gitId":"Derekljh"},"content":"participant \":CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"Derekljh"},"content":"end box","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"Derekljh"},"content":"box Model MODEL_COLOR_T2","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"Derekljh"},"content":"participant \":Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"Derekljh"},"content":"end box","lastModifiedDate":"2024-03-22"},{"lineNumber":15,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"Derekljh"},"content":"[-\u003e LogicManager : execute(\"tag 1 tag: example\")","lastModifiedDate":"2024-03-22"},{"lineNumber":17,"author":{"gitId":"Derekljh"},"content":"activate LogicManager","lastModifiedDate":"2024-03-22"},{"lineNumber":18,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"author":{"gitId":"Derekljh"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(\"tag 1 tag: example\")","lastModifiedDate":"2024-03-22"},{"lineNumber":20,"author":{"gitId":"Derekljh"},"content":"activate AddressBookParser","lastModifiedDate":"2024-03-22"},{"lineNumber":21,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":22,"author":{"gitId":"Derekljh"},"content":"create TagCommandParser","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"Derekljh"},"content":"AddressBookParser -\u003e TagCommandParser","lastModifiedDate":"2024-03-22"},{"lineNumber":24,"author":{"gitId":"Derekljh"},"content":"activate TagCommandParser","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":26,"author":{"gitId":"Derekljh"},"content":"TagCommandParser --\u003e AddressBookParser","lastModifiedDate":"2024-03-22"},{"lineNumber":27,"author":{"gitId":"Derekljh"},"content":"deactivate TagCommandParser","lastModifiedDate":"2024-03-22"},{"lineNumber":28,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":29,"author":{"gitId":"Derekljh"},"content":"AddressBookParser -\u003e TagCommandParser : parse(\"1, example\")","lastModifiedDate":"2024-03-22"},{"lineNumber":30,"author":{"gitId":"Derekljh"},"content":"activate TagCommandParser","lastModifiedDate":"2024-03-22"},{"lineNumber":31,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":32,"author":{"gitId":"Derekljh"},"content":"create TagCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":33,"author":{"gitId":"Derekljh"},"content":"TagCommandParser -\u003e TagCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":34,"author":{"gitId":"Derekljh"},"content":"activate TagCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":35,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":36,"author":{"gitId":"Derekljh"},"content":"TagCommand --\u003e TagCommandParser","lastModifiedDate":"2024-03-22"},{"lineNumber":37,"author":{"gitId":"Derekljh"},"content":"deactivate TagCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":38,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":39,"author":{"gitId":"Derekljh"},"content":"TagCommandParser --\u003e AddressBookParser","lastModifiedDate":"2024-03-22"},{"lineNumber":40,"author":{"gitId":"Derekljh"},"content":"destroy TagCommandParser","lastModifiedDate":"2024-03-22"},{"lineNumber":41,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":42,"author":{"gitId":"Derekljh"},"content":"AddressBookParser --\u003e LogicManager","lastModifiedDate":"2024-03-22"},{"lineNumber":43,"author":{"gitId":"Derekljh"},"content":"deactivate AddressBookParser","lastModifiedDate":"2024-03-22"},{"lineNumber":44,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":45,"author":{"gitId":"Derekljh"},"content":"LogicManager -\u003e TagCommand: execute(m)","lastModifiedDate":"2024-03-22"},{"lineNumber":46,"author":{"gitId":"Derekljh"},"content":"activate TagCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":47,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":48,"author":{"gitId":"Derekljh"},"content":"TagCommand -\u003e Model : setPerson(personToTag, taggedPerson)","lastModifiedDate":"2024-03-22"},{"lineNumber":49,"author":{"gitId":"Derekljh"},"content":"activate Model","lastModifiedDate":"2024-03-22"},{"lineNumber":50,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":51,"author":{"gitId":"Derekljh"},"content":"Model --\u003e TagCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":52,"author":{"gitId":"Derekljh"},"content":"deactivate Model","lastModifiedDate":"2024-03-22"},{"lineNumber":53,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":54,"author":{"gitId":"Derekljh"},"content":"create CommandResult","lastModifiedDate":"2024-03-22"},{"lineNumber":55,"author":{"gitId":"Derekljh"},"content":"TagCommand -\u003e CommandResult","lastModifiedDate":"2024-03-22"},{"lineNumber":56,"author":{"gitId":"Derekljh"},"content":"activate CommandResult","lastModifiedDate":"2024-03-22"},{"lineNumber":57,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":58,"author":{"gitId":"Derekljh"},"content":"CommandResult --\u003e TagCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":59,"author":{"gitId":"Derekljh"},"content":"deactivate CommandResult","lastModifiedDate":"2024-03-22"},{"lineNumber":60,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":61,"author":{"gitId":"Derekljh"},"content":"TagCommand --\u003e LogicManager","lastModifiedDate":"2024-03-22"},{"lineNumber":62,"author":{"gitId":"Derekljh"},"content":"deactivate TagCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":63,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":64,"author":{"gitId":"Derekljh"},"content":"\u003c-- LogicManager","lastModifiedDate":"2024-03-22"},{"lineNumber":65,"author":{"gitId":"Derekljh"},"content":"deactivate LogicManager","lastModifiedDate":"2024-03-22"},{"lineNumber":66,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":67,"author":{"gitId":"Derekljh"},"content":"@enduml","lastModifiedDate":"2024-03-22"}],"authorContributionMap":{"Derekljh":67}},{"path":"docs/diagrams/redo_uml.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"radeon2525"},"content":"@startuml","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":3,"author":{"gitId":"radeon2525"},"content":"class RedoCommand {","lastModifiedDate":"2024-03-22"},{"lineNumber":4,"author":{"gitId":"radeon2525"},"content":" - COMMAND_WORD: String","lastModifiedDate":"2024-03-22"},{"lineNumber":5,"author":{"gitId":"radeon2525"},"content":" - MESSAGE_SUCCESS: String","lastModifiedDate":"2024-03-22"},{"lineNumber":6,"author":{"gitId":"radeon2525"},"content":" - MESSAGE_FAILURE: String","lastModifiedDate":"2024-03-22"},{"lineNumber":7,"author":{"gitId":"radeon2525"},"content":" + execute(model: Model, history: CommandHistory): CommandResult","lastModifiedDate":"2024-03-22"},{"lineNumber":8,"author":{"gitId":"radeon2525"},"content":"}","lastModifiedDate":"2024-03-22"},{"lineNumber":9,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"radeon2525"},"content":"Model -- RedoCommand : model","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"radeon2525"},"content":"CommandHistory -- RedoCommand : history","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"radeon2525"},"content":"CommandResult -- RedoCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":15,"author":{"gitId":"radeon2525"},"content":"RedoCommand --\u003e Model : updates","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"radeon2525"},"content":"RedoCommand --\u003e CommandHistory : updates","lastModifiedDate":"2024-03-22"},{"lineNumber":17,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":18,"author":{"gitId":"radeon2525"},"content":"@enduml","lastModifiedDate":"2024-03-22"}],"authorContributionMap":{"radeon2525":18}},{"path":"docs/diagrams/undo_uml.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"radeon2525"},"content":"@startuml","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":3,"author":{"gitId":"radeon2525"},"content":"class UndoCommand {","lastModifiedDate":"2024-03-22"},{"lineNumber":4,"author":{"gitId":"radeon2525"},"content":" - COMMAND_WORD: String","lastModifiedDate":"2024-03-22"},{"lineNumber":5,"author":{"gitId":"radeon2525"},"content":" - MESSAGE_SUCCESS: String","lastModifiedDate":"2024-03-22"},{"lineNumber":6,"author":{"gitId":"radeon2525"},"content":" - MESSAGE_FAILURE: String","lastModifiedDate":"2024-03-22"},{"lineNumber":7,"author":{"gitId":"radeon2525"},"content":" + execute(model: Model, history: CommandHistory): CommandResult","lastModifiedDate":"2024-03-22"},{"lineNumber":8,"author":{"gitId":"radeon2525"},"content":"}","lastModifiedDate":"2024-03-22"},{"lineNumber":9,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"radeon2525"},"content":"Model -- UndoCommand : model","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"radeon2525"},"content":"CommandHistory -- UndoCommand : history","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"radeon2525"},"content":"CommandResult -- UndoCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":15,"author":{"gitId":"radeon2525"},"content":"UndoCommand --\u003e Model : updates","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"radeon2525"},"content":"UndoCommand --\u003e CommandHistory : updates","lastModifiedDate":"2024-03-22"},{"lineNumber":17,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":18,"author":{"gitId":"radeon2525"},"content":"@enduml","lastModifiedDate":"2024-03-22"}],"authorContributionMap":{"radeon2525":18}},{"path":"docs/index.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"miffi"},"content":"title: OfficeHarbor","lastModifiedDate":"2024-02-24"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"[![CI Status](https://github.com/se-edu/addressbook-level3/workflows/Java%20CI/badge.svg)](https://github.com/se-edu/addressbook-level3/actions)","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"[![codecov](https://codecov.io/gh/se-edu/addressbook-level3/branch/master/graph/badge.svg)](https://codecov.io/gh/se-edu/addressbook-level3)","lastModifiedDate":"2020-08-07"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"miffi"},"content":"**OfficeHarbor is a desktop application for managing a tech firm\u0027s teams.** While it has a GUI, most of the user interactions happen using a CLI (Command Line Interface).","lastModifiedDate":"2024-02-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"miffi"},"content":"* If you are interested in using OfficeHarbor, head over to the [_Quick Start_ section of the **User Guide**](UserGuide.html#quick-start).","lastModifiedDate":"2024-02-24"},{"lineNumber":14,"author":{"gitId":"miffi"},"content":"* If you are interested about developing OfficeHarbor, the [**Developer Guide**](DeveloperGuide.html) is a good place to start.","lastModifiedDate":"2024-02-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"**Acknowledgements**","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"* Libraries used: [JavaFX](https://openjfx.io/), [Jackson](https://github.com/FasterXML/jackson), [JUnit5](https://github.com/junit-team/junit5)","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"miffi":4,"-":15}},{"path":"src/main/java/seedu/address/commons/util/InvalidationListenerManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"radeon2525"},"content":"package seedu.address.commons.util;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"radeon2525"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"radeon2525"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"radeon2525"},"content":"import javafx.beans.InvalidationListener;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"radeon2525"},"content":"import javafx.beans.Observable;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"radeon2525"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"radeon2525"},"content":" * Manages a list of {@link InvalidationListener}.","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"radeon2525"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"radeon2525"},"content":"public class InvalidationListenerManager {","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"radeon2525"},"content":" public final ArrayList\u003cInvalidationListener\u003e listeners \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"radeon2525"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"radeon2525"},"content":" * Adds {@code listener} to the list of listeners.","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"radeon2525"},"content":" * If the same listener is added more that once, then it will be notified more than once.","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"radeon2525"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"radeon2525"},"content":" public void addListener(InvalidationListener listener) {","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"radeon2525"},"content":" requireNonNull(listener);","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"radeon2525"},"content":" listeners.add(listener);","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"radeon2525"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"radeon2525"},"content":" * Calls {@link InvalidationListener#invalidated(Observable)} on all added listeners.","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"radeon2525"},"content":" * Any modifications to the listeners list during the invocation of this method","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"radeon2525"},"content":" * will only take effect on the next invocation of this method.","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"radeon2525"},"content":" *","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"radeon2525"},"content":" * @param observable The {@code Observable} that became invalid.","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"radeon2525"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"radeon2525"},"content":" public void callListeners(Observable observable) {","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"radeon2525"},"content":" // Make a copy of listeners such that any modifications to the listeners list during","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"radeon2525"},"content":" // the invocation of this method will only take effect on the next invocation of this method.","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"radeon2525"},"content":" ArrayList\u003cInvalidationListener\u003e listenersCopy \u003d new ArrayList\u003c\u003e(listeners);","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"radeon2525"},"content":" for (InvalidationListener listener : listenersCopy) {","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"radeon2525"},"content":" listener.invalidated(observable);","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"radeon2525"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"radeon2525"},"content":" * Removes {@code listener} from the list of listeners.","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"radeon2525"},"content":" * If the given listener was not previously added, then this method call is a no-op.","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"radeon2525"},"content":" * If the given listener was added more than once, then only the first occurrence in the list will be removed.","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"radeon2525"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"radeon2525"},"content":" public void removeListener(InvalidationListener listener) {","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"radeon2525"},"content":" requireNonNull(listener);","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"radeon2525"},"content":" listeners.remove(listener);","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"radeon2525"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"radeon2525":50}},{"path":"src/main/java/seedu/address/logic/CommandHistory.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"radeon2525"},"content":"package seedu.address.logic;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"radeon2525"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"radeon2525"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"radeon2525"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"radeon2525"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"radeon2525"},"content":" * Stores the history of commands executed.","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"radeon2525"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"radeon2525"},"content":"public class CommandHistory {","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"radeon2525"},"content":" private final ObservableList\u003cString\u003e userInputHistory \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"radeon2525"},"content":" private final ObservableList\u003cString\u003e unmodifiableUserInputHistory \u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"radeon2525"},"content":" FXCollections.unmodifiableObservableList(userInputHistory);","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"radeon2525"},"content":" public CommandHistory() {}","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"radeon2525"},"content":" public CommandHistory(CommandHistory commandHistory) {","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"radeon2525"},"content":" userInputHistory.addAll(commandHistory.userInputHistory);","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"radeon2525"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"radeon2525"},"content":" * Appends {@code userInput} to the list of user input entered.","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"radeon2525"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"radeon2525"},"content":" public void add(String userInput) {","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"radeon2525"},"content":" requireNonNull(userInput);","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"radeon2525"},"content":" userInputHistory.add(userInput);","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"radeon2525"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"radeon2525"},"content":" * Returns an unmodifiable view of {@code userInputHistory}.","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"radeon2525"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"radeon2525"},"content":" public ObservableList\u003cString\u003e getHistory() {","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"radeon2525"},"content":" return unmodifiableUserInputHistory;","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"radeon2525"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"radeon2525"},"content":" public boolean equals(Object obj) {","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"radeon2525"},"content":" // short circuit if same object","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"radeon2525"},"content":" if (obj \u003d\u003d this) {","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"radeon2525"},"content":" return true;","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"radeon2525"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"radeon2525"},"content":" if (!(obj instanceof CommandHistory)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"radeon2525"},"content":" return false;","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"radeon2525"},"content":" // state check","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"radeon2525"},"content":" CommandHistory other \u003d (CommandHistory) obj;","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"radeon2525"},"content":" return userInputHistory.equals(other.userInputHistory);","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"radeon2525"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"radeon2525"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"radeon2525"},"content":" return userInputHistory.hashCode();","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"radeon2525"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"radeon2525":58}},{"path":"src/main/java/seedu/address/logic/LogicManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2016-09-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.AddressBookParser;","lastModifiedDate":"2017-07-07"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.storage.Storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * The main LogicManager of the app.","lastModifiedDate":"2016-09-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class LogicManager implements Logic {","lastModifiedDate":"2018-12-09"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_ERROR_FORMAT \u003d \"Could not save data due to the following error: %s\";","lastModifiedDate":"2023-06-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_PERMISSION_ERROR_FORMAT \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \"Could not save data to file %s due to insufficient permissions to write to the file or the folder.\";","lastModifiedDate":"2023-06-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(LogicManager.class);","lastModifiedDate":"2016-09-29"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final Model model;","lastModifiedDate":"2016-09-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final Storage storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final AddressBookParser addressBookParser;","lastModifiedDate":"2017-07-07"},{"lineNumber":35,"author":{"gitId":"radeon2525"},"content":" private final CommandHistory history;","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Constructs a {@code LogicManager} with the given {@code Model} and {@code Storage}.","lastModifiedDate":"2020-05-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public LogicManager(Model model, Storage storage) {","lastModifiedDate":"2018-12-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.model \u003d model;","lastModifiedDate":"2016-09-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.storage \u003d storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":" addressBookParser \u003d new AddressBookParser();","lastModifiedDate":"2018-01-25"},{"lineNumber":44,"author":{"gitId":"radeon2525"},"content":" history \u003d new CommandHistory();","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public CommandResult execute(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":49,"author":{"gitId":"-"},"content":" logger.info(\"----------------[USER COMMAND][\" + commandText + \"]\");","lastModifiedDate":"2016-09-29"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":" CommandResult commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":" Command command \u003d addressBookParser.parseCommand(commandText);","lastModifiedDate":"2017-07-07"},{"lineNumber":53,"author":{"gitId":"radeon2525"},"content":" commandResult \u003d command.execute(model, history);","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":55,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":56,"author":{"gitId":"-"},"content":" storage.saveAddressBook(model.getAddressBook());","lastModifiedDate":"2018-12-09"},{"lineNumber":57,"author":{"gitId":"-"},"content":" } catch (AccessDeniedException e) {","lastModifiedDate":"2023-06-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_PERMISSION_ERROR_FORMAT, e.getMessage()), e);","lastModifiedDate":"2023-06-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2018-12-09"},{"lineNumber":60,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_ERROR_FORMAT, ioe.getMessage()), ioe);","lastModifiedDate":"2023-06-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-03"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2018-12-03"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return model.getAddressBook();","lastModifiedDate":"2018-12-03"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-03"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return model.getFilteredPersonList();","lastModifiedDate":"2016-09-25"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-29"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":" return model.getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":" return model.getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" model.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"radeon2525":3,"-":87}},{"path":"src/main/java/seedu/address/logic/Messages.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2023-07-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-07-14"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-07-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2023-07-14"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Container for user visible messages.","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class Messages {","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2016-09-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_PERSON_DISPLAYED_INDEX \u003d \"The person index provided is invalid\";","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String MESSAGE_PERSONS_LISTED_OVERVIEW \u003d \"%1$d persons listed!\";","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2023-07-14"},{"lineNumber":21,"author":{"gitId":"miffi"},"content":" public static final String MESSAGE_MISSING_TAG \u003d","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"miffi"},"content":" \"Tags [%2$s] not found for %1$s\";","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-07-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2023-07-14"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2023-07-14"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":31,"author":{"gitId":"-"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-07-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Formats the {@code person} for display to the user.","lastModifiedDate":"2019-02-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static String format(Person person) {","lastModifiedDate":"2019-02-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" builder.append(person.getName())","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" .append(\"; Phone: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" .append(person.getPhone())","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" .append(\"; Email: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" .append(person.getEmail())","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" .append(\"; Address: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" .append(person.getAddress())","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" .append(\"; Tags: \");","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" person.getTags().forEach(builder::append);","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"miffi":2,"-":51}},{"path":"src/main/java/seedu/address/logic/commands/AddCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":11,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-01-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"add\";","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a person to the address book. \"","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2017-06-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2017-06-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2017-05-09"},{"lineNumber":27,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2017-05-09"},{"lineNumber":28,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"ADDRESS \"","lastModifiedDate":"2017-05-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2017-06-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":33,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2017-05-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"311, Clementi Ave 2, #02-25 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"friends \"","lastModifiedDate":"2017-05-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"owesMoney\";","lastModifiedDate":"2017-05-09"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New person added: %1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book\";","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private final Person toAdd;","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2018-01-10"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public AddCommand(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":46,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":47,"author":{"gitId":"-"},"content":" toAdd \u003d person;","lastModifiedDate":"2018-01-10"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"radeon2525"},"content":" public CommandResult execute(Model model, CommandHistory history) throws CommandException {","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (model.hasPerson(toAdd)) {","lastModifiedDate":"2018-08-07"},{"lineNumber":55,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":58,"author":{"gitId":"-"},"content":" model.addPerson(toAdd);","lastModifiedDate":"2016-09-25"},{"lineNumber":59,"author":{"gitId":"radeon2525"},"content":" model.commitAddressBook();","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"radeon2525"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, toAdd));","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-22"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" if (!(other instanceof AddCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" AddCommand otherAddCommand \u003d (AddCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2023-07-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"radeon2525":4,"-":80}},{"path":"src/main/java/seedu/address/logic/commands/ClearCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-22"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * Clears the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class ClearCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"clear\";","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Address book has been cleared!\";","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"radeon2525"},"content":" public CommandResult execute(Model model, CommandHistory history) {","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15"},{"lineNumber":21,"author":{"gitId":"-"},"content":" model.setAddressBook(new AddressBook());","lastModifiedDate":"2018-11-27"},{"lineNumber":22,"author":{"gitId":"radeon2525"},"content":" model.commitAddressBook();","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"radeon2525":3,"-":22}},{"path":"src/main/java/seedu/address/logic/commands/Command.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Represents a command with hidden internal logic and the ability to be executed.","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public abstract class Command {","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Executes the command and returns the result message.","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * @param model {@code Model} which the command should operate on.","lastModifiedDate":"2018-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * @return feedback message of the operation result for display","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2017-02-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"radeon2525"},"content":" public abstract CommandResult execute(Model model, CommandHistory history) throws CommandException;","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"radeon2525":2,"-":18}},{"path":"src/main/java/seedu/address/logic/commands/DeleteCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-09-01"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Deletes a person identified using it\u0027s displayed index from the address book.","lastModifiedDate":"2018-04-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"delete\";","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" + \": Deletes the person identified by the index number used in the displayed person list.\\n\"","lastModifiedDate":"2018-04-01"},{"lineNumber":24,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer)\\n\"","lastModifiedDate":"2016-09-29"},{"lineNumber":25,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DELETE_PERSON_SUCCESS \u003d \"Deleted Person: %1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private final Index targetIndex;","lastModifiedDate":"2017-06-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public DeleteCommand(Index targetIndex) {","lastModifiedDate":"2017-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2016-09-22"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"radeon2525"},"content":" public CommandResult execute(Model model, CommandHistory history) throws CommandException {","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":44,"author":{"gitId":"-"},"content":" Person personToDelete \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2018-04-19"},{"lineNumber":45,"author":{"gitId":"-"},"content":" model.deletePerson(personToDelete);","lastModifiedDate":"2016-09-25"},{"lineNumber":46,"author":{"gitId":"radeon2525"},"content":" model.commitAddressBook();","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_PERSON_SUCCESS, Messages.format(personToDelete)));","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" if (!(other instanceof DeleteCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":61,"author":{"gitId":"The-Dudeski"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"-"},"content":" DeleteCommand otherDeleteCommand \u003d (DeleteCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return targetIndex.equals(otherDeleteCommand.targetIndex);","lastModifiedDate":"2023-07-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2019-02-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"The-Dudeski":1,"radeon2525":3,"-":68}},{"path":"src/main/java/seedu/address/logic/commands/EditCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-12-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-01-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-01-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2016-12-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":21,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-26"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":32,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Edits the details of an existing person in the address book.","lastModifiedDate":"2016-12-26"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":35,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2016-12-26"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the person identified \"","lastModifiedDate":"2016-12-26"},{"lineNumber":40,"author":{"gitId":"-"},"content":" + \"by the index number used in the displayed person list. \"","lastModifiedDate":"2018-04-01"},{"lineNumber":41,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26"},{"lineNumber":42,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2017-06-06"},{"lineNumber":43,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06"},{"lineNumber":44,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":45,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":46,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"91234567 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2017-05-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Person: %1$s\";","lastModifiedDate":"2016-12-26"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2016-12-26"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book.\";","lastModifiedDate":"2016-12-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2017-05-25"},{"lineNumber":57,"author":{"gitId":"-"},"content":" private final EditPersonDescriptor editPersonDescriptor;","lastModifiedDate":"2016-12-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit","lastModifiedDate":"2017-05-25"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * @param editPersonDescriptor details to edit the person with","lastModifiedDate":"2016-12-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public EditCommand(Index index, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2017-05-25"},{"lineNumber":64,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25"},{"lineNumber":65,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2017-05-15"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25"},{"lineNumber":68,"author":{"gitId":"-"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2016-12-26"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26"},{"lineNumber":72,"author":{"gitId":"radeon2525"},"content":" public CommandResult execute(Model model, CommandHistory history) throws CommandException {","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19"},{"lineNumber":77,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2018-04-19"},{"lineNumber":81,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2018-04-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2018-08-07"},{"lineNumber":84,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":87,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":88,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":89,"author":{"gitId":"radeon2525"},"content":" model.commitAddressBook();","lastModifiedDate":"2024-03-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson)));","lastModifiedDate":"2019-02-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":93,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2016-12-26"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2016-12-26"},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":97,"author":{"gitId":"-"},"content":" private static Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2018-01-10"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2016-12-26"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":100,"author":{"gitId":"-"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(personToEdit.getName());","lastModifiedDate":"2017-06-21"},{"lineNumber":101,"author":{"gitId":"-"},"content":" Phone updatedPhone \u003d editPersonDescriptor.getPhone().orElse(personToEdit.getPhone());","lastModifiedDate":"2017-06-21"},{"lineNumber":102,"author":{"gitId":"-"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2017-06-21"},{"lineNumber":103,"author":{"gitId":"-"},"content":" Address updatedAddress \u003d editPersonDescriptor.getAddress().orElse(personToEdit.getAddress());","lastModifiedDate":"2017-06-21"},{"lineNumber":104,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e updatedTags \u003d editPersonDescriptor.getTags().orElse(personToEdit.getTags());","lastModifiedDate":"2017-06-21"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":106,"author":{"gitId":"-"},"content":" return new Person(updatedName, updatedPhone, updatedEmail, updatedAddress, updatedTags);","lastModifiedDate":"2017-03-14"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08"},{"lineNumber":110,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08"},{"lineNumber":111,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08"},{"lineNumber":112,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":121,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13"},{"lineNumber":122,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":125,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":134,"author":{"gitId":"-"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2016-12-26"},{"lineNumber":135,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26"},{"lineNumber":136,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":137,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26"},{"lineNumber":138,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21"},{"lineNumber":139,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":140,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21"},{"lineNumber":141,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-06-21"},{"lineNumber":142,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":144,"author":{"gitId":"-"},"content":" public EditPersonDescriptor() {}","lastModifiedDate":"2016-12-26"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":146,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":147,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11"},{"lineNumber":148,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":149,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":150,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26"},{"lineNumber":151,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15"},{"lineNumber":152,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15"},{"lineNumber":153,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15"},{"lineNumber":154,"author":{"gitId":"-"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2018-01-15"},{"lineNumber":155,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11"},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":158,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":159,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26"},{"lineNumber":160,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":161,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26"},{"lineNumber":162,"author":{"gitId":"-"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, address, tags);","lastModifiedDate":"2018-08-14"},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":165,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21"},{"lineNumber":166,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21"},{"lineNumber":167,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":169,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26"},{"lineNumber":170,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21"},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":173,"author":{"gitId":"-"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2017-06-21"},{"lineNumber":174,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":177,"author":{"gitId":"-"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26"},{"lineNumber":178,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2017-06-21"},{"lineNumber":179,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":181,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2017-06-21"},{"lineNumber":182,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-06-21"},{"lineNumber":183,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":185,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26"},{"lineNumber":186,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21"},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":189,"author":{"gitId":"-"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2017-06-21"},{"lineNumber":190,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-06-21"},{"lineNumber":191,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":193,"author":{"gitId":"-"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2016-12-26"},{"lineNumber":194,"author":{"gitId":"-"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2017-06-21"},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":197,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":198,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2018-01-11"},{"lineNumber":199,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":200,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":201,"author":{"gitId":"-"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-06-21"},{"lineNumber":202,"author":{"gitId":"-"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2018-01-11"},{"lineNumber":203,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":205,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":206,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11"},{"lineNumber":207,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11"},{"lineNumber":208,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11"},{"lineNumber":209,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":210,"author":{"gitId":"-"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":211,"author":{"gitId":"-"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2018-01-11"},{"lineNumber":212,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":214,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05"},{"lineNumber":215,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05"},{"lineNumber":216,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05"},{"lineNumber":217,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05"},{"lineNumber":218,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":220,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05"},{"lineNumber":221,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05"},{"lineNumber":222,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05"},{"lineNumber":223,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":225,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":226,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":227,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":228,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":229,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(address, otherEditPersonDescriptor.address)","lastModifiedDate":"2023-07-13"},{"lineNumber":230,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(tags, otherEditPersonDescriptor.tags);","lastModifiedDate":"2023-07-13"},{"lineNumber":231,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":234,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":244,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26"}],"authorContributionMap":{"radeon2525":3,"-":241}},{"path":"src/main/java/seedu/address/logic/commands/ExitCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":3,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-22"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * Terminates the program.","lastModifiedDate":"2016-09-22"},{"lineNumber":8,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2016-09-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"exit\";","lastModifiedDate":"2016-09-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final String MESSAGE_EXIT_ACKNOWLEDGEMENT \u003d \"Exiting Address Book as requested ...\";","lastModifiedDate":"2016-09-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-22"},{"lineNumber":16,"author":{"gitId":"radeon2525"},"content":" public CommandResult execute(Model model, CommandHistory history) {","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"-"},"content":" return new CommandResult(MESSAGE_EXIT_ACKNOWLEDGEMENT, false, true);","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":20,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22"}],"authorContributionMap":{"radeon2525":2,"-":18}},{"path":"src/main/java/seedu/address/logic/commands/FindCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":6,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Finds and lists all persons in address book whose name contains any of the argument keywords.","lastModifiedDate":"2016-09-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * Keyword matching is case insensitive.","lastModifiedDate":"2018-04-01"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class FindCommand extends Command {","lastModifiedDate":"2016-09-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"find\";","lastModifiedDate":"2016-09-22"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Finds all persons whose names contain any of \"","lastModifiedDate":"2016-09-22"},{"lineNumber":20,"author":{"gitId":"-"},"content":" + \"the specified keywords (case-insensitive) and displays them as a list with index numbers.\\n\"","lastModifiedDate":"2018-04-01"},{"lineNumber":21,"author":{"gitId":"-"},"content":" + \"Parameters: KEYWORD [MORE_KEYWORDS]...\\n\"","lastModifiedDate":"2016-09-22"},{"lineNumber":22,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" alice bob charlie\";","lastModifiedDate":"2016-09-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final NameContainsKeywordsPredicate predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public FindCommand(NameContainsKeywordsPredicate predicate) {","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-22"},{"lineNumber":31,"author":{"gitId":"radeon2525"},"content":" public CommandResult execute(Model model, CommandHistory history) {","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(predicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":" return new CommandResult(","lastModifiedDate":"2018-04-01"},{"lineNumber":35,"author":{"gitId":"-"},"content":" String.format(Messages.MESSAGE_PERSONS_LISTED_OVERVIEW, model.getFilteredPersonList().size()));","lastModifiedDate":"2018-04-01"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" if (!(other instanceof FindCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" FindCommand otherFindCommand \u003d (FindCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" return predicate.equals(otherFindCommand.predicate);","lastModifiedDate":"2023-07-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" .add(\"predicate\", predicate)","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22"}],"authorContributionMap":{"radeon2525":2,"-":57}},{"path":"src/main/java/seedu/address/logic/commands/HelpCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-31"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * Format full help instructions for every command for display.","lastModifiedDate":"2016-08-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class HelpCommand extends Command {","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"help\";","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Shows program usage instructions.\\n\"","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD;","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String SHOWING_HELP_MESSAGE \u003d \"Opened help window.\";","lastModifiedDate":"2016-08-31"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-31"},{"lineNumber":18,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"radeon2525"},"content":" public CommandResult execute(Model model, CommandHistory history) {","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":" return new CommandResult(SHOWING_HELP_MESSAGE, true, false);","lastModifiedDate":"2018-12-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"radeon2525":2,"-":20}},{"path":"src/main/java/seedu/address/logic/commands/ListCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * Lists all persons in the address book to the user.","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2016-09-21"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"list\";","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"JukeBoxK"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Listed all contacts\";","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"JukeBoxK"},"content":" public static final String MESSAGE_EMPTY \u003d \"The list is empty\";","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"radeon2525"},"content":" public CommandResult execute(Model model, CommandHistory history) {","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":23,"author":{"gitId":"JukeBoxK"},"content":" if (model.getFilteredPersonList().size() \u003d\u003d 0) {","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"JukeBoxK"},"content":" return new CommandResult(MESSAGE_EMPTY);","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"JukeBoxK"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2016-09-22"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"radeon2525":2,"JukeBoxK":5,"-":21}},{"path":"src/main/java/seedu/address/logic/commands/RedoCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"radeon2525"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"radeon2525"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"radeon2525"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"radeon2525"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"radeon2525"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"radeon2525"},"content":" * Reverts the {@code model}\u0027s address book to its previously undone state.","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"radeon2525"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"radeon2525"},"content":"public class RedoCommand extends Command {","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"radeon2525"},"content":" public static final String COMMAND_WORD \u003d \"redo\";","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"radeon2525"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Redo success!\";","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"radeon2525"},"content":" public static final String MESSAGE_FAILURE \u003d \"No more commands to redo!\";","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"radeon2525"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"radeon2525"},"content":" public CommandResult execute(Model model, CommandHistory history) throws CommandException {","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"radeon2525"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"radeon2525"},"content":" if (!model.canRedoAddressBook()) {","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"radeon2525"},"content":" throw new CommandException(MESSAGE_FAILURE);","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"radeon2525"},"content":" model.redoAddressBook();","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"radeon2525"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"radeon2525"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"radeon2525"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"radeon2525":31}},{"path":"src/main/java/seedu/address/logic/commands/TagCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"radeon2525"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"Derekljh"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"Derekljh"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"Derekljh"},"content":"import java.util.Collection;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"Derekljh"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"Derekljh"},"content":"import java.util.List;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"Derekljh"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"Derekljh"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"Derekljh"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"Derekljh"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"Derekljh"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"radeon2525"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"radeon2525"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"radeon2525"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"radeon2525"},"content":"/**","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"radeon2525"},"content":" * Tags a contact identified using its displayed index in the address book.","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"radeon2525"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"radeon2525"},"content":"public class TagCommand extends Command {","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"radeon2525"},"content":" public static final String COMMAND_WORD \u003d \"tag\";","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"radeon2525"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-11"},{"lineNumber":29,"author":{"gitId":"Derekljh"},"content":" + \": Tags the contact identified by the index number\"","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"Derekljh"},"content":" + \" used in the displayed contact list with the specified tag.\\n\"","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"Derekljh"},"content":" + \"Parameters: INDEX (must be a positive integer) tag: TAG\\n\"","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"Derekljh"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 tag: friends\";","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"radeon2525"},"content":" public static final String MESSAGE_TAG_CONTACT_SUCCESS \u003d \"Tagged Contact: %1$s with %2$s\";","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"Derekljh"},"content":" private final Index targetIndex;","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"Derekljh"},"content":" private final Set\u003cTag\u003e tags;","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"Derekljh"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"Derekljh"},"content":" * Creates a command to add a {@code tag} to the person at {@code index}.","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"Derekljh"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"Derekljh"},"content":" public TagCommand(Index index, Collection\u003cTag\u003e tags) {","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"Derekljh"},"content":" this.targetIndex \u003d index;","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"Derekljh"},"content":" this.tags \u003d new HashSet\u003c\u003e(tags);","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"radeon2525"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"radeon2525"},"content":" public CommandResult execute(Model model, CommandHistory history) throws CommandException {","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"Derekljh"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-13"},{"lineNumber":51,"author":{"gitId":"radeon2525"},"content":" requireNonNull(history);","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"Derekljh"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-03-13"},{"lineNumber":54,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":55,"author":{"gitId":"Derekljh"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"Derekljh"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-13"},{"lineNumber":57,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":58,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":59,"author":{"gitId":"Derekljh"},"content":" Person personToTag \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":61,"author":{"gitId":"Derekljh"},"content":" Person taggedPerson \u003d addTag(personToTag);","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"radeon2525"},"content":" model.setPerson(personToTag, taggedPerson);","lastModifiedDate":"2024-03-11"},{"lineNumber":63,"author":{"gitId":"Derekljh"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-13"},{"lineNumber":64,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"radeon2525"},"content":" // Construct the command result message with the tag information","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"radeon2525"},"content":" String tagInfo \u003d String.format(MESSAGE_TAG_CONTACT_SUCCESS,","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"radeon2525"},"content":" Messages.format(taggedPerson), showTags(tags));","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"radeon2525"},"content":" CommandResult result \u003d new CommandResult(tagInfo);","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"radeon2525"},"content":" // Add the executed command to the command history","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"radeon2525"},"content":" history.add(String.valueOf(this));","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"radeon2525"},"content":" model.commitAddressBook();","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"radeon2525"},"content":" return result;","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"radeon2525"},"content":" static String showTags(Collection\u003cTag\u003e tags) {","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"Derekljh"},"content":" return tags.stream().map((tag) -\u003e tag.tagName)","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"Derekljh"},"content":" .sorted() // making the output order deterministic","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"Derekljh"},"content":" .collect(Collectors.joining(\", \"));","lastModifiedDate":"2024-03-17"},{"lineNumber":82,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":83,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":84,"author":{"gitId":"Derekljh"},"content":" private Person addTag(Person personToTag) {","lastModifiedDate":"2024-03-16"},{"lineNumber":85,"author":{"gitId":"Derekljh"},"content":" HashSet\u003cTag\u003e personTags \u003d new HashSet\u003c\u003e(personToTag.getTags());","lastModifiedDate":"2024-03-16"},{"lineNumber":86,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":87,"author":{"gitId":"Derekljh"},"content":" personTags.addAll(tags);","lastModifiedDate":"2024-03-16"},{"lineNumber":88,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":89,"author":{"gitId":"Derekljh"},"content":" return new Person(","lastModifiedDate":"2024-03-16"},{"lineNumber":90,"author":{"gitId":"Derekljh"},"content":" personToTag.getName(),","lastModifiedDate":"2024-03-16"},{"lineNumber":91,"author":{"gitId":"Derekljh"},"content":" personToTag.getPhone(),","lastModifiedDate":"2024-03-16"},{"lineNumber":92,"author":{"gitId":"Derekljh"},"content":" personToTag.getEmail(),","lastModifiedDate":"2024-03-16"},{"lineNumber":93,"author":{"gitId":"Derekljh"},"content":" personToTag.getAddress(),","lastModifiedDate":"2024-03-16"},{"lineNumber":94,"author":{"gitId":"Derekljh"},"content":" personTags);","lastModifiedDate":"2024-03-16"},{"lineNumber":95,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":96,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":97,"author":{"gitId":"radeon2525"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":98,"author":{"gitId":"radeon2525"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-11"},{"lineNumber":99,"author":{"gitId":"Derekljh"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-16"},{"lineNumber":100,"author":{"gitId":"Derekljh"},"content":" return true;","lastModifiedDate":"2024-03-16"},{"lineNumber":101,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":102,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":103,"author":{"gitId":"Derekljh"},"content":" if (!(other instanceof TagCommand)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":104,"author":{"gitId":"Derekljh"},"content":" return false;","lastModifiedDate":"2024-03-16"},{"lineNumber":105,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":106,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":107,"author":{"gitId":"Derekljh"},"content":" TagCommand otherTagCommand \u003d (TagCommand) other;","lastModifiedDate":"2024-03-16"},{"lineNumber":108,"author":{"gitId":"Derekljh"},"content":" return targetIndex.equals(otherTagCommand.targetIndex)","lastModifiedDate":"2024-03-16"},{"lineNumber":109,"author":{"gitId":"Derekljh"},"content":" \u0026\u0026 tags.equals(otherTagCommand.tags);","lastModifiedDate":"2024-03-16"},{"lineNumber":110,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":111,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":112,"author":{"gitId":"Derekljh"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":113,"author":{"gitId":"Derekljh"},"content":" public String toString() {","lastModifiedDate":"2024-03-16"},{"lineNumber":114,"author":{"gitId":"Derekljh"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-16"},{"lineNumber":115,"author":{"gitId":"Derekljh"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2024-03-16"},{"lineNumber":116,"author":{"gitId":"Derekljh"},"content":" .add(\"tag\", tags)","lastModifiedDate":"2024-03-16"},{"lineNumber":117,"author":{"gitId":"Derekljh"},"content":" .toString();","lastModifiedDate":"2024-03-16"},{"lineNumber":118,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":119,"author":{"gitId":"radeon2525"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"Derekljh":72,"radeon2525":47}},{"path":"src/main/java/seedu/address/logic/commands/UndoCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"radeon2525"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"radeon2525"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"radeon2525"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"radeon2525"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"radeon2525"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"radeon2525"},"content":" * Reverts the {@code model}\u0027s address book to its previous state.","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"radeon2525"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"radeon2525"},"content":"public class UndoCommand extends Command {","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"radeon2525"},"content":" public static final String COMMAND_WORD \u003d \"undo\";","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"radeon2525"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Undo success!\";","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"radeon2525"},"content":" public static final String MESSAGE_FAILURE \u003d \"No more commands to undo!\";","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"radeon2525"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"radeon2525"},"content":" public CommandResult execute(Model model, CommandHistory history) throws CommandException {","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"radeon2525"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"radeon2525"},"content":" if (!model.canUndoAddressBook()) {","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"radeon2525"},"content":" throw new CommandException(MESSAGE_FAILURE);","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"radeon2525"},"content":" model.undoAddressBook();","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"radeon2525"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"radeon2525"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"radeon2525"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"radeon2525":31}},{"path":"src/main/java/seedu/address/logic/commands/UntagCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"miffi"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"miffi"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"miffi"},"content":"import java.util.Collection;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"miffi"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"miffi"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"miffi"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"miffi"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"miffi"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"miffi"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"miffi"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"miffi"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"miffi"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"miffi"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"miffi"},"content":" * Deletes a tag from a person with its displayed index.","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"miffi"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"miffi"},"content":"public class UntagCommand extends Command {","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"miffi"},"content":" public static final String COMMAND_WORD \u003d \"untag\";","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"miffi"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"miffi"},"content":" + \": Deletes the tag from contact identified by the index number used in the displayed contact list.\\n\"","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"Derekljh"},"content":" + \"Parameters: INDEX (must be a positive integer) tag: TAG... (can take multiple tags)\\n\"","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"Derekljh"},"content":" + \"Example: \" + COMMAND_WORD + \"1 tag: friends\";","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"miffi"},"content":" public static final String MESSAGE_DELETE_TAG_SUCCESS \u003d \"Deleted tag %2$s from %1$s\";","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"miffi"},"content":" private final Index index;","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"miffi"},"content":" private final Set\u003cTag\u003e tags;","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"miffi"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"miffi"},"content":" * Creates a command to delete a {@code tag} from the person at {@code index}.","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"miffi"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"miffi"},"content":" public UntagCommand(Index index, Collection\u003cTag\u003e tags) {","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"miffi"},"content":" this.index \u003d index;","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"miffi"},"content":" this.tags \u003d new HashSet\u003c\u003e(tags);","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"miffi"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"miffi"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"radeon2525"},"content":" public CommandResult execute(Model model, CommandHistory history) throws CommandException {","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"miffi"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"miffi"},"content":" var lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"miffi"},"content":" if (index.getZeroBased() \u003e lastShownList.size()) {","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"miffi"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"miffi"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"miffi"},"content":" var personToUntag \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"miffi"},"content":" var untaggedPerson \u003d untag(personToUntag);","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"miffi"},"content":" model.setPerson(personToUntag, untaggedPerson);","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"miffi"},"content":" model.updateFilteredPersonList(Model.PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"radeon2525"},"content":" model.commitAddressBook();","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"miffi"},"content":" return new CommandResult(String.format(","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"miffi"},"content":" MESSAGE_DELETE_TAG_SUCCESS,","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"miffi"},"content":" Messages.format(untaggedPerson),","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"miffi"},"content":" showTags(tags)));","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"miffi"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"miffi"},"content":" private Person untag(Person personToUntag) throws CommandException {","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"miffi"},"content":" var personTags \u003d new HashSet\u003cTag\u003e(personToUntag.getTags());","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"miffi"},"content":" validateAllTagsExist(personToUntag, personTags);","lastModifiedDate":"2024-03-16"},{"lineNumber":66,"author":{"gitId":"miffi"},"content":" personTags.removeAll(tags);","lastModifiedDate":"2024-03-16"},{"lineNumber":67,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":68,"author":{"gitId":"miffi"},"content":" return new Person(","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"miffi"},"content":" personToUntag.getName(),","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"miffi"},"content":" personToUntag.getPhone(),","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"miffi"},"content":" personToUntag.getEmail(),","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"miffi"},"content":" personToUntag.getAddress(),","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"miffi"},"content":" personTags);","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"miffi"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":75,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":76,"author":{"gitId":"miffi"},"content":" private void validateAllTagsExist(Person personToUntag, HashSet\u003cTag\u003e personTags) throws CommandException {","lastModifiedDate":"2024-03-16"},{"lineNumber":77,"author":{"gitId":"miffi"},"content":" var missingTagNames \u003d tags","lastModifiedDate":"2024-03-16"},{"lineNumber":78,"author":{"gitId":"miffi"},"content":" .stream()","lastModifiedDate":"2024-03-16"},{"lineNumber":79,"author":{"gitId":"miffi"},"content":" .filter((tag) -\u003e !personTags.contains(tag))","lastModifiedDate":"2024-03-16"},{"lineNumber":80,"author":{"gitId":"miffi"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2024-03-16"},{"lineNumber":81,"author":{"gitId":"miffi"},"content":" if (!missingTagNames.isEmpty()) {","lastModifiedDate":"2024-03-16"},{"lineNumber":82,"author":{"gitId":"miffi"},"content":" throw new CommandException(","lastModifiedDate":"2024-03-16"},{"lineNumber":83,"author":{"gitId":"miffi"},"content":" String.format(","lastModifiedDate":"2024-03-16"},{"lineNumber":84,"author":{"gitId":"miffi"},"content":" Messages.MESSAGE_MISSING_TAG,","lastModifiedDate":"2024-03-16"},{"lineNumber":85,"author":{"gitId":"miffi"},"content":" personToUntag.getName(),","lastModifiedDate":"2024-03-16"},{"lineNumber":86,"author":{"gitId":"miffi"},"content":" showTags(missingTagNames)));","lastModifiedDate":"2024-03-16"},{"lineNumber":87,"author":{"gitId":"miffi"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":88,"author":{"gitId":"miffi"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":89,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":90,"author":{"gitId":"miffi"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":91,"author":{"gitId":"miffi"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-16"},{"lineNumber":92,"author":{"gitId":"miffi"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-16"},{"lineNumber":93,"author":{"gitId":"miffi"},"content":" return true;","lastModifiedDate":"2024-03-16"},{"lineNumber":94,"author":{"gitId":"miffi"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":95,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":96,"author":{"gitId":"miffi"},"content":" if (other instanceof UntagCommand) {","lastModifiedDate":"2024-03-16"},{"lineNumber":97,"author":{"gitId":"miffi"},"content":" UntagCommand obj \u003d (UntagCommand) other;","lastModifiedDate":"2024-03-16"},{"lineNumber":98,"author":{"gitId":"miffi"},"content":" return index.equals(obj.index) \u0026\u0026 tags.equals(obj.tags);","lastModifiedDate":"2024-03-16"},{"lineNumber":99,"author":{"gitId":"miffi"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":100,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":101,"author":{"gitId":"miffi"},"content":" return false;","lastModifiedDate":"2024-03-16"},{"lineNumber":102,"author":{"gitId":"miffi"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":103,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":104,"author":{"gitId":"miffi"},"content":" private static String showTags(Collection\u003cTag\u003e tags) {","lastModifiedDate":"2024-03-16"},{"lineNumber":105,"author":{"gitId":"miffi"},"content":" return tags.stream().map((tag) -\u003e tag.tagName)","lastModifiedDate":"2024-03-16"},{"lineNumber":106,"author":{"gitId":"miffi"},"content":" .sorted() // making the output order deterministic","lastModifiedDate":"2024-03-16"},{"lineNumber":107,"author":{"gitId":"miffi"},"content":" .collect(Collectors.joining(\", \"));","lastModifiedDate":"2024-03-16"},{"lineNumber":108,"author":{"gitId":"miffi"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":109,"author":{"gitId":"miffi"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"Derekljh":2,"radeon2525":3,"miffi":104}},{"path":"src/main/java/seedu/address/logic/parser/AddressBookParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-07-29"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-07-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.commands.RedoCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"Derekljh"},"content":"import seedu.address.logic.commands.TagCommand;","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.commands.UndoCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"miffi"},"content":"import seedu.address.logic.commands.UntagCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":45,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // Note to developers: Change the log level in config.json to enable lower level (i.e., FINE, FINER and lower)","lastModifiedDate":"2023-07-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29"},{"lineNumber":56,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":69,"author":{"gitId":"Derekljh"},"content":" case TagCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-13"},{"lineNumber":70,"author":{"gitId":"Derekljh"},"content":" return new TagCommandParser().parse(arguments);","lastModifiedDate":"2024-03-13"},{"lineNumber":71,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":78,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":79,"author":{"gitId":"-"},"content":" return new ListCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24"},{"lineNumber":82,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":84,"author":{"gitId":"miffi"},"content":" case UntagCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-16"},{"lineNumber":85,"author":{"gitId":"miffi"},"content":" return new UntagCommandParser().parse(arguments);","lastModifiedDate":"2024-03-16"},{"lineNumber":86,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":87,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26"},{"lineNumber":88,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":90,"author":{"gitId":"radeon2525"},"content":" case UndoCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-18"},{"lineNumber":91,"author":{"gitId":"radeon2525"},"content":" return new UndoCommand();","lastModifiedDate":"2024-03-18"},{"lineNumber":92,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":93,"author":{"gitId":"radeon2525"},"content":" case RedoCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-18"},{"lineNumber":94,"author":{"gitId":"radeon2525"},"content":" return new RedoCommand();","lastModifiedDate":"2024-03-18"},{"lineNumber":95,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":96,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26"},{"lineNumber":97,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29"},{"lineNumber":98,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":102,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"Derekljh":4,"radeon2525":8,"miffi":4,"-":86}},{"path":"src/main/java/seedu/address/logic/parser/CliSyntax.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11"},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":" /* Prefix definitions */","lastModifiedDate":"2017-02-11"},{"lineNumber":9,"author":{"gitId":"The-Dudeski"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"name:\");","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"The-Dudeski"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"phone:\");","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"The-Dudeski"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"email:\");","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"The-Dudeski"},"content":" public static final Prefix PREFIX_ADDRESS \u003d new Prefix(\"address:\");","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"The-Dudeski"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"tag:\");","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":15,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"The-Dudeski":5,"-":10}},{"path":"src/main/java/seedu/address/logic/parser/TagCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Derekljh"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"Derekljh"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"Derekljh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"Derekljh"},"content":"import java.util.Collection;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"Derekljh"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"Derekljh"},"content":"import seedu.address.logic.commands.TagCommand;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"Derekljh"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"Derekljh"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"Derekljh"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"Derekljh"},"content":" * Parses input arguments and creates a new TagCommand object","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"Derekljh"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"Derekljh"},"content":"public class TagCommandParser implements Parser\u003cTagCommand\u003e {","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"Derekljh"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"Derekljh"},"content":" * Parses the given {@code String} of arguments in the context of the TagCommand","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"Derekljh"},"content":" * and returns an TagCommand object for execution.","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"Derekljh"},"content":" *","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"Derekljh"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"Derekljh"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"Derekljh"},"content":" public TagCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"Derekljh"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"Derekljh"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_TAG);","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"Derekljh"},"content":" Collection\u003cTag\u003e tags \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"Derekljh"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"Derekljh"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, TagCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"Derekljh"},"content":" Index index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"Derekljh"},"content":" return new TagCommand(index, tags);","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"Derekljh"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"Derekljh":38}},{"path":"src/main/java/seedu/address/logic/parser/UntagCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"miffi"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"miffi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"miffi"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"miffi"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"miffi"},"content":"import seedu.address.logic.commands.UntagCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"miffi"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"miffi"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"miffi"},"content":" * Parses input arguments and creates an UntagCommand.","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"miffi"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"miffi"},"content":"public class UntagCommandParser implements Parser\u003cUntagCommand\u003e {","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"miffi"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"miffi"},"content":" public UntagCommand parse(String userInput) throws ParseException {","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"miffi"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(userInput, PREFIX_TAG);","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"miffi"},"content":" var tags \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"miffi"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"miffi"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"miffi"},"content":" String.format(Messages.MESSAGE_INVALID_COMMAND_FORMAT, UntagCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"miffi"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"miffi"},"content":" Index index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"miffi"},"content":" return new UntagCommand(index, tags);","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"miffi"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"miffi"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"miffi":28}},{"path":"src/main/java/seedu/address/model/AddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"radeon2525"},"content":"import javafx.beans.InvalidationListener;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"radeon2525"},"content":"import javafx.beans.Observable;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"radeon2525"},"content":"import seedu.address.commons.util.InvalidationListenerManager;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.UniquePersonList;","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Wraps all data at the address-book level","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Duplicates are not allowed (by .isSamePerson comparison)","lastModifiedDate":"2018-04-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"radeon2525"},"content":"public class AddressBook implements ReadOnlyAddressBook, Observable {","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"radeon2525"},"content":" final InvalidationListenerManager invalidationListenerManager \u003d new InvalidationListenerManager();","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final UniquePersonList persons;","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" {","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" persons \u003d new UniquePersonList();","lastModifiedDate":"2016-08-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public AddressBook() {}","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Creates an AddressBook using the Persons in the {@code toBeCopied}","lastModifiedDate":"2018-03-29"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public AddressBook(ReadOnlyAddressBook toBeCopied) {","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" this();","lastModifiedDate":"2016-12-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" resetData(toBeCopied);","lastModifiedDate":"2016-12-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":40,"author":{"gitId":"-"},"content":" //// list overwrite operations","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Replaces the contents of the person list with {@code persons}.","lastModifiedDate":"2018-08-07"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * {@code persons} must not contain duplicate persons.","lastModifiedDate":"2018-08-07"},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void setPersons(List\u003cPerson\u003e persons) {","lastModifiedDate":"2018-08-07"},{"lineNumber":47,"author":{"gitId":"-"},"content":" this.persons.setPersons(persons);","lastModifiedDate":"2016-10-19"},{"lineNumber":48,"author":{"gitId":"radeon2525"},"content":" indicateModified();","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Resets the existing data of this {@code AddressBook} with {@code newData}.","lastModifiedDate":"2017-08-16"},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void resetData(ReadOnlyAddressBook newData) {","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":" requireNonNull(newData);","lastModifiedDate":"2017-05-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" setPersons(newData.getPersonList());","lastModifiedDate":"2018-03-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" //// person-level operations","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * Returns true if a person with the same identity as {@code person} exists in the address book.","lastModifiedDate":"2018-08-06"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06"},{"lineNumber":66,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return persons.contains(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-09-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * The person must not already exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void addPerson(Person p) {","lastModifiedDate":"2018-08-07"},{"lineNumber":75,"author":{"gitId":"-"},"content":" persons.add(p);","lastModifiedDate":"2018-03-29"},{"lineNumber":76,"author":{"gitId":"radeon2525"},"content":" indicateModified();","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * Replaces the given person {@code target} in the list with {@code editedPerson}.","lastModifiedDate":"2018-01-10"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":82,"author":{"gitId":"-"},"content":" * The person identity of {@code editedPerson} must not be the same as another existing person in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":83,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":85,"author":{"gitId":"-"},"content":" requireNonNull(editedPerson);","lastModifiedDate":"2018-01-10"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" persons.setPerson(target, editedPerson);","lastModifiedDate":"2018-03-29"},{"lineNumber":88,"author":{"gitId":"radeon2525"},"content":" indicateModified();","lastModifiedDate":"2024-03-20"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":91,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * Removes {@code key} from this {@code AddressBook}.","lastModifiedDate":"2017-08-16"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * {@code key} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":95,"author":{"gitId":"-"},"content":" public void removePerson(Person key) {","lastModifiedDate":"2018-08-07"},{"lineNumber":96,"author":{"gitId":"-"},"content":" persons.remove(key);","lastModifiedDate":"2018-02-28"},{"lineNumber":97,"author":{"gitId":"radeon2525"},"content":" indicateModified();","lastModifiedDate":"2024-03-20"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":" //// util methods","lastModifiedDate":"2016-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":" .add(\"persons\", persons)","lastModifiedDate":"2019-02-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":110,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":111,"author":{"gitId":"-"},"content":" return persons.asUnmodifiableObservableList();","lastModifiedDate":"2018-04-05"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-01"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-01"},{"lineNumber":114,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":115,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-21"},{"lineNumber":116,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":121,"author":{"gitId":"-"},"content":" if (!(other instanceof AddressBook)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":122,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":" AddressBook otherAddressBook \u003d (AddressBook) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":126,"author":{"gitId":"-"},"content":" return persons.equals(otherAddressBook.persons);","lastModifiedDate":"2023-07-13"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":129,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":130,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-21"},{"lineNumber":131,"author":{"gitId":"-"},"content":" return persons.hashCode();","lastModifiedDate":"2018-03-29"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":133,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":134,"author":{"gitId":"radeon2525"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":135,"author":{"gitId":"radeon2525"},"content":" * Notifies listeners that the address book has been modified.","lastModifiedDate":"2024-03-20"},{"lineNumber":136,"author":{"gitId":"radeon2525"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":137,"author":{"gitId":"radeon2525"},"content":" public void indicateModified() {","lastModifiedDate":"2024-03-20"},{"lineNumber":138,"author":{"gitId":"radeon2525"},"content":" invalidationListenerManager.callListeners(this);","lastModifiedDate":"2024-03-20"},{"lineNumber":139,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":140,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":141,"author":{"gitId":"radeon2525"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":142,"author":{"gitId":"radeon2525"},"content":" public void addListener(InvalidationListener listener) {","lastModifiedDate":"2024-03-20"},{"lineNumber":143,"author":{"gitId":"radeon2525"},"content":" invalidationListenerManager.addListener(listener);","lastModifiedDate":"2024-03-20"},{"lineNumber":144,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":145,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":146,"author":{"gitId":"radeon2525"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":147,"author":{"gitId":"radeon2525"},"content":" public void removeListener(InvalidationListener listener) {","lastModifiedDate":"2024-03-20"},{"lineNumber":148,"author":{"gitId":"radeon2525"},"content":" invalidationListenerManager.removeListener(listener);","lastModifiedDate":"2024-03-20"},{"lineNumber":149,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":150,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"radeon2525":27,"-":123}},{"path":"src/main/java/seedu/address/model/Model.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * The API of the Model component.","lastModifiedDate":"2016-09-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public interface Model {","lastModifiedDate":"2016-09-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":" /** {@code Predicate} that always evaluate to true */","lastModifiedDate":"2017-08-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":" Predicate\u003cPerson\u003e PREDICATE_SHOW_ALL_PERSONS \u003d unused -\u003e true;","lastModifiedDate":"2018-01-10"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Replaces user prefs data with the data in {@code userPrefs}.","lastModifiedDate":"2018-12-06"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":" void setUserPrefs(ReadOnlyUserPrefs userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Returns the user prefs.","lastModifiedDate":"2018-11-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" ReadOnlyUserPrefs getUserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" void setAddressBookFilePath(Path addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Replaces address book data with the data in {@code addressBook}.","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" void setAddressBook(ReadOnlyAddressBook addressBook);","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":52,"author":{"gitId":"-"},"content":" /** Returns the AddressBook */","lastModifiedDate":"2016-09-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2016-09-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Returns true if a person with the same identity as {@code person} exists in the address book.","lastModifiedDate":"2018-08-06"},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":58,"author":{"gitId":"-"},"content":" boolean hasPerson(Person person);","lastModifiedDate":"2018-08-06"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * Deletes the given person.","lastModifiedDate":"2018-08-07"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * The person must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":64,"author":{"gitId":"-"},"content":" void deletePerson(Person target);","lastModifiedDate":"2018-08-07"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":66,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":67,"author":{"gitId":"-"},"content":" * Adds the given person.","lastModifiedDate":"2018-08-07"},{"lineNumber":68,"author":{"gitId":"-"},"content":" * {@code person} must not already exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":69,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":70,"author":{"gitId":"-"},"content":" void addPerson(Person person);","lastModifiedDate":"2018-08-07"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Replaces the given person {@code target} with {@code editedPerson}.","lastModifiedDate":"2017-06-07"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":75,"author":{"gitId":"-"},"content":" * The person identity of {@code editedPerson} must not be the same as another existing person in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":76,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" void setPerson(Person target, Person editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" /** Returns an unmodifiable view of the filtered person list */","lastModifiedDate":"2017-09-01"},{"lineNumber":80,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":82,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-05"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * Updates the filter of the filtered person list to filter by the given {@code predicate}.","lastModifiedDate":"2017-08-05"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2017-08-05"},{"lineNumber":85,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05"},{"lineNumber":86,"author":{"gitId":"-"},"content":" void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate);","lastModifiedDate":"2018-01-10"},{"lineNumber":87,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":88,"author":{"gitId":"radeon2525"},"content":" boolean canUndoAddressBook();","lastModifiedDate":"2024-03-18"},{"lineNumber":89,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":90,"author":{"gitId":"radeon2525"},"content":" void undoAddressBook();","lastModifiedDate":"2024-03-18"},{"lineNumber":91,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":92,"author":{"gitId":"radeon2525"},"content":" boolean canRedoAddressBook();","lastModifiedDate":"2024-03-18"},{"lineNumber":93,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":94,"author":{"gitId":"radeon2525"},"content":" void redoAddressBook();","lastModifiedDate":"2024-03-18"},{"lineNumber":95,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":96,"author":{"gitId":"radeon2525"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":97,"author":{"gitId":"radeon2525"},"content":" * Saves the current address book state for undo/redo.","lastModifiedDate":"2024-03-18"},{"lineNumber":98,"author":{"gitId":"radeon2525"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":99,"author":{"gitId":"radeon2525"},"content":" void commitAddressBook();","lastModifiedDate":"2024-03-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"radeon2525":13,"-":87}},{"path":"src/main/java/seedu/address/model/ModelManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-08-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"radeon2525"},"content":"import javafx.beans.property.SimpleObjectProperty;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2016-08-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Represents the in-memory model of the address book data.","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class ModelManager implements Model {","lastModifiedDate":"2018-12-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ModelManager.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final UserPrefs userPrefs;","lastModifiedDate":"2018-12-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final FilteredList\u003cPerson\u003e filteredPersons;","lastModifiedDate":"2018-01-10"},{"lineNumber":25,"author":{"gitId":"radeon2525"},"content":" private final VersionedAddressBook versionedAddressBook;","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"radeon2525"},"content":" private final SimpleObjectProperty\u003cPerson\u003e selectedPerson \u003d new SimpleObjectProperty\u003c\u003e();","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Initializes a ModelManager with the given addressBook and userPrefs.","lastModifiedDate":"2016-12-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public ModelManager(ReadOnlyAddressBook addressBook, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":33,"author":{"gitId":"radeon2525"},"content":" super();","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"-"},"content":" requireAllNonNull(addressBook, userPrefs);","lastModifiedDate":"2017-05-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" logger.fine(\"Initializing with address book: \" + addressBook + \" and user prefs \" + userPrefs);","lastModifiedDate":"2016-12-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"radeon2525"},"content":" versionedAddressBook \u003d new VersionedAddressBook(addressBook);","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"radeon2525"},"content":" //this.addressBook \u003d new AddressBook(addressBook);","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":41,"author":{"gitId":"radeon2525"},"content":" filteredPersons \u003d new FilteredList\u003c\u003e(versionedAddressBook.getPersonList());","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"radeon2525"},"content":" //filteredPersons.addListener(this::ensureSelectedPersonIsValid);","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public ModelManager() {","lastModifiedDate":"2016-09-22"},{"lineNumber":46,"author":{"gitId":"-"},"content":" this(new AddressBook(), new UserPrefs());","lastModifiedDate":"2016-09-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d UserPrefs \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":53,"author":{"gitId":"-"},"content":" requireNonNull(userPrefs);","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" this.userPrefs.resetData(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return userPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return userPrefs.getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return userPrefs.getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d AddressBook \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook addressBook) {","lastModifiedDate":"2018-11-27"},{"lineNumber":88,"author":{"gitId":"radeon2525"},"content":" versionedAddressBook.resetData(addressBook);","lastModifiedDate":"2024-03-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2016-09-21"},{"lineNumber":93,"author":{"gitId":"radeon2525"},"content":" return versionedAddressBook;","lastModifiedDate":"2024-03-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":98,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":99,"author":{"gitId":"radeon2525"},"content":" return versionedAddressBook.hasPerson(person);","lastModifiedDate":"2024-03-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":103,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-15"},{"lineNumber":104,"author":{"gitId":"radeon2525"},"content":" versionedAddressBook.removePerson(target);","lastModifiedDate":"2024-03-18"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":109,"author":{"gitId":"radeon2525"},"content":" versionedAddressBook.addPerson(person);","lastModifiedDate":"2024-03-18"},{"lineNumber":110,"author":{"gitId":"-"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26"},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":115,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2017-06-07"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":117,"author":{"gitId":"radeon2525"},"content":" versionedAddressBook.setPerson(target, editedPerson);","lastModifiedDate":"2024-03-18"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Filtered Person List Accessors \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2016-10-12"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19"},{"lineNumber":123,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the list of {@code Person} backed by the internal list of","lastModifiedDate":"2018-01-10"},{"lineNumber":124,"author":{"gitId":"-"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2018-06-11"},{"lineNumber":125,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19"},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":127,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":128,"author":{"gitId":"-"},"content":" return filteredPersons;","lastModifiedDate":"2018-12-09"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":131,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":132,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10"},{"lineNumber":133,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05"},{"lineNumber":134,"author":{"gitId":"-"},"content":" filteredPersons.setPredicate(predicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":137,"author":{"gitId":"radeon2525"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Undo/Redo \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":138,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":139,"author":{"gitId":"radeon2525"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":140,"author":{"gitId":"radeon2525"},"content":" public boolean canUndoAddressBook() {","lastModifiedDate":"2024-03-18"},{"lineNumber":141,"author":{"gitId":"radeon2525"},"content":" return versionedAddressBook.canUndo();","lastModifiedDate":"2024-03-18"},{"lineNumber":142,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":143,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":144,"author":{"gitId":"radeon2525"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":145,"author":{"gitId":"radeon2525"},"content":" public void undoAddressBook() {","lastModifiedDate":"2024-03-18"},{"lineNumber":146,"author":{"gitId":"radeon2525"},"content":" versionedAddressBook.undo();","lastModifiedDate":"2024-03-18"},{"lineNumber":147,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":148,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":149,"author":{"gitId":"radeon2525"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":150,"author":{"gitId":"radeon2525"},"content":" public boolean canRedoAddressBook() {","lastModifiedDate":"2024-03-18"},{"lineNumber":151,"author":{"gitId":"radeon2525"},"content":" return versionedAddressBook.canRedo();","lastModifiedDate":"2024-03-18"},{"lineNumber":152,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":153,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":154,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":155,"author":{"gitId":"radeon2525"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":156,"author":{"gitId":"radeon2525"},"content":" public void redoAddressBook() {","lastModifiedDate":"2024-03-18"},{"lineNumber":157,"author":{"gitId":"radeon2525"},"content":" versionedAddressBook.redo();","lastModifiedDate":"2024-03-18"},{"lineNumber":158,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":159,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":160,"author":{"gitId":"radeon2525"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":161,"author":{"gitId":"radeon2525"},"content":" public void commitAddressBook() {","lastModifiedDate":"2024-03-18"},{"lineNumber":162,"author":{"gitId":"radeon2525"},"content":" versionedAddressBook.commit();","lastModifiedDate":"2024-03-18"},{"lineNumber":163,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":164,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":165,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-31"},{"lineNumber":166,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13"},{"lineNumber":167,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":168,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31"},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":171,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31"},{"lineNumber":172,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":173,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-31"},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":176,"author":{"gitId":"-"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":177,"author":{"gitId":"radeon2525"},"content":" return versionedAddressBook.equals(otherModelManager.versionedAddressBook)","lastModifiedDate":"2024-03-18"},{"lineNumber":178,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13"},{"lineNumber":179,"author":{"gitId":"-"},"content":" \u0026\u0026 filteredPersons.equals(otherModelManager.filteredPersons);","lastModifiedDate":"2023-07-13"},{"lineNumber":180,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":181,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"radeon2525":44,"-":137}},{"path":"src/main/java/seedu/address/model/VersionedAddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"radeon2525"},"content":"package seedu.address.model;","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"radeon2525"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"radeon2525"},"content":"import java.util.List;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"radeon2525"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"radeon2525"},"content":" * {@code AddressBook} that keeps track of its own history.","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"radeon2525"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"radeon2525"},"content":"public class VersionedAddressBook extends AddressBook {","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"radeon2525"},"content":" private final List\u003cReadOnlyAddressBook\u003e addressBookStateList;","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"radeon2525"},"content":" private int currentStatePointer;","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"radeon2525"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"radeon2525"},"content":" * {@code AddressBook} that keeps track of its own history.","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"radeon2525"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"radeon2525"},"content":" public VersionedAddressBook(ReadOnlyAddressBook initialState) {","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"radeon2525"},"content":" super(initialState);","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"radeon2525"},"content":" addressBookStateList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"radeon2525"},"content":" addressBookStateList.add(new AddressBook(initialState));","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"radeon2525"},"content":" currentStatePointer \u003d 0;","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"radeon2525"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"radeon2525"},"content":" * Saves a copy of the current {@code AddressBook} state at the end of the state list.","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"radeon2525"},"content":" * Undone states are removed from the state list.","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"radeon2525"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"radeon2525"},"content":" public void commit() {","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"radeon2525"},"content":" removeStatesAfterCurrentPointer();","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"radeon2525"},"content":" addressBookStateList.add(new AddressBook(this));","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"radeon2525"},"content":" currentStatePointer++;","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"radeon2525"},"content":" //indicateModified();","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"radeon2525"},"content":" private void removeStatesAfterCurrentPointer() {","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"radeon2525"},"content":" addressBookStateList.subList(currentStatePointer + 1, addressBookStateList.size()).clear();","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"radeon2525"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"radeon2525"},"content":" * Restores the address book to its previous state.","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"radeon2525"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"radeon2525"},"content":" public void undo() {","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"radeon2525"},"content":" if (!canUndo()) {","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"radeon2525"},"content":" throw new NoUndoableStateException();","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"radeon2525"},"content":" currentStatePointer--;","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"radeon2525"},"content":" resetData(addressBookStateList.get(currentStatePointer));","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"radeon2525"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"radeon2525"},"content":" * Restores the address book to its previously undone state.","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"radeon2525"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"radeon2525"},"content":" public void redo() {","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"radeon2525"},"content":" if (!canRedo()) {","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"radeon2525"},"content":" throw new NoRedoableStateException();","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"radeon2525"},"content":" currentStatePointer++;","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"radeon2525"},"content":" resetData(addressBookStateList.get(currentStatePointer));","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"radeon2525"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"radeon2525"},"content":" * Returns true if {@code undo()} has address book states to undo.","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"radeon2525"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"radeon2525"},"content":" public boolean canUndo() {","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"radeon2525"},"content":" return currentStatePointer \u003e 0;","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"radeon2525"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"radeon2525"},"content":" * Returns true if {@code redo()} has address book states to redo.","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"radeon2525"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"radeon2525"},"content":" public boolean canRedo() {","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"radeon2525"},"content":" return currentStatePointer \u003c addressBookStateList.size() - 1;","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"radeon2525"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"radeon2525"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"radeon2525"},"content":" // short circuit if same object","lastModifiedDate":"2024-03-18"},{"lineNumber":80,"author":{"gitId":"radeon2525"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-18"},{"lineNumber":81,"author":{"gitId":"radeon2525"},"content":" return true;","lastModifiedDate":"2024-03-18"},{"lineNumber":82,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":83,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":84,"author":{"gitId":"radeon2525"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-18"},{"lineNumber":85,"author":{"gitId":"radeon2525"},"content":" if (!(other instanceof VersionedAddressBook)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":86,"author":{"gitId":"radeon2525"},"content":" return false;","lastModifiedDate":"2024-03-18"},{"lineNumber":87,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":88,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":89,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook otherVersionedAddressBook \u003d (VersionedAddressBook) other;","lastModifiedDate":"2024-03-18"},{"lineNumber":90,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":91,"author":{"gitId":"radeon2525"},"content":" // state check","lastModifiedDate":"2024-03-18"},{"lineNumber":92,"author":{"gitId":"radeon2525"},"content":" return super.equals(otherVersionedAddressBook)","lastModifiedDate":"2024-03-18"},{"lineNumber":93,"author":{"gitId":"radeon2525"},"content":" \u0026\u0026 addressBookStateList.equals(otherVersionedAddressBook.addressBookStateList)","lastModifiedDate":"2024-03-18"},{"lineNumber":94,"author":{"gitId":"radeon2525"},"content":" \u0026\u0026 currentStatePointer \u003d\u003d otherVersionedAddressBook.currentStatePointer;","lastModifiedDate":"2024-03-18"},{"lineNumber":95,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":96,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":97,"author":{"gitId":"radeon2525"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":98,"author":{"gitId":"radeon2525"},"content":" * Thrown when trying to {@code undo()} but can\u0027t.","lastModifiedDate":"2024-03-18"},{"lineNumber":99,"author":{"gitId":"radeon2525"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":100,"author":{"gitId":"radeon2525"},"content":" public static class NoUndoableStateException extends RuntimeException {","lastModifiedDate":"2024-03-18"},{"lineNumber":101,"author":{"gitId":"radeon2525"},"content":" private NoUndoableStateException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":102,"author":{"gitId":"radeon2525"},"content":" super(\"Current state pointer at start of addressBookState list, unable to undo.\");","lastModifiedDate":"2024-03-18"},{"lineNumber":103,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":104,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":105,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":106,"author":{"gitId":"radeon2525"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":107,"author":{"gitId":"radeon2525"},"content":" * Thrown when trying to {@code redo()} but can\u0027t.","lastModifiedDate":"2024-03-18"},{"lineNumber":108,"author":{"gitId":"radeon2525"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":109,"author":{"gitId":"radeon2525"},"content":" public static class NoRedoableStateException extends RuntimeException {","lastModifiedDate":"2024-03-18"},{"lineNumber":110,"author":{"gitId":"radeon2525"},"content":" private NoRedoableStateException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":111,"author":{"gitId":"radeon2525"},"content":" super(\"Current state pointer at end of addressBookState list, unable to redo.\");","lastModifiedDate":"2024-03-18"},{"lineNumber":112,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":113,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":114,"author":{"gitId":"radeon2525"},"content":"}","lastModifiedDate":"2024-03-18"},{"lineNumber":115,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"radeon2525":115}},{"path":"src/main/java/seedu/address/ui/MainWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-06-16"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.event.ActionEvent;","lastModifiedDate":"2016-12-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-08-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.MenuItem;","lastModifiedDate":"2016-08-26"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.control.TextInputControl;","lastModifiedDate":"2016-12-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyCombination;","lastModifiedDate":"2016-08-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyEvent;","lastModifiedDate":"2016-12-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.scene.layout.StackPane;","lastModifiedDate":"2017-05-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2016-09-28"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2017-06-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.Logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * The Main Window. Provides the basic application layout containing","lastModifiedDate":"2016-08-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * a menu bar and space where other JavaFX elements can be placed.","lastModifiedDate":"2016-08-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class MainWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-11-29"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"MainWindow.fxml\";","lastModifiedDate":"2016-08-18"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(getClass());","lastModifiedDate":"2018-08-14"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Stage primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // Independent Ui parts residing in this Ui container","lastModifiedDate":"2016-08-18"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private PersonListPanel personListPanel;","lastModifiedDate":"2016-08-18"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private ResultDisplay resultDisplay;","lastModifiedDate":"2018-12-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private HelpWindow helpWindow;","lastModifiedDate":"2018-03-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private StackPane commandBoxPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":42,"author":{"gitId":"-"},"content":" private MenuItem helpMenuItem;","lastModifiedDate":"2016-08-18"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":" private StackPane personListPanelPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":48,"author":{"gitId":"-"},"content":" private StackPane resultDisplayPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":" private StackPane statusbarPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Creates a {@code MainWindow} with the given {@code Stage} and {@code Logic}.","lastModifiedDate":"2020-05-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public MainWindow(Stage primaryStage, Logic logic) {","lastModifiedDate":"2018-12-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" super(FXML, primaryStage);","lastModifiedDate":"2017-11-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // Set dependencies","lastModifiedDate":"2016-09-21"},{"lineNumber":60,"author":{"gitId":"-"},"content":" this.primaryStage \u003d primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":61,"author":{"gitId":"-"},"content":" this.logic \u003d logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":" // Configure the UI","lastModifiedDate":"2016-09-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":" setWindowDefaultSize(logic.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":66,"author":{"gitId":"-"},"content":" setAccelerators();","lastModifiedDate":"2016-09-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":68,"author":{"gitId":"-"},"content":" helpWindow \u003d new HelpWindow();","lastModifiedDate":"2018-03-15"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public Stage getPrimaryStage() {","lastModifiedDate":"2016-12-24"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return primaryStage;","lastModifiedDate":"2016-12-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":" private void setAccelerators() {","lastModifiedDate":"2016-09-21"},{"lineNumber":76,"author":{"gitId":"-"},"content":" setAccelerator(helpMenuItem, KeyCombination.valueOf(\"F1\"));","lastModifiedDate":"2016-12-18"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":79,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-18"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * Sets the accelerator of a MenuItem.","lastModifiedDate":"2016-12-18"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * @param keyCombination the KeyCombination value of the accelerator","lastModifiedDate":"2016-12-18"},{"lineNumber":82,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":83,"author":{"gitId":"-"},"content":" private void setAccelerator(MenuItem menuItem, KeyCombination keyCombination) {","lastModifiedDate":"2016-12-18"},{"lineNumber":84,"author":{"gitId":"-"},"content":" menuItem.setAccelerator(keyCombination);","lastModifiedDate":"2016-12-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-12-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * TODO: the code below can be removed once the bug reported here","lastModifiedDate":"2016-12-18"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * https://bugs.openjdk.java.net/browse/JDK-8131666","lastModifiedDate":"2016-12-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * is fixed in later version of SDK.","lastModifiedDate":"2016-12-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * According to the bug report, TextInputControl (TextField, TextArea) will","lastModifiedDate":"2016-12-18"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * consume function-key events. Because CommandBox contains a TextField, and","lastModifiedDate":"2016-12-18"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * ResultDisplay contains a TextArea, thus some accelerators (e.g F1) will","lastModifiedDate":"2016-12-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * not work when the focus is in them because the key event is consumed by","lastModifiedDate":"2016-12-18"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * the TextInputControl(s).","lastModifiedDate":"2016-12-18"},{"lineNumber":96,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * For now, we add following event filter to capture such key events and open","lastModifiedDate":"2016-12-18"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * help window purposely so to support accelerators even when focus is","lastModifiedDate":"2016-12-18"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * in CommandBox or ResultDisplay.","lastModifiedDate":"2016-12-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":101,"author":{"gitId":"-"},"content":" getRoot().addEventFilter(KeyEvent.KEY_PRESSED, event -\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":102,"author":{"gitId":"-"},"content":" if (event.getTarget() instanceof TextInputControl \u0026\u0026 keyCombination.match(event)) {","lastModifiedDate":"2016-12-18"},{"lineNumber":103,"author":{"gitId":"-"},"content":" menuItem.getOnAction().handle(new ActionEvent());","lastModifiedDate":"2016-12-18"},{"lineNumber":104,"author":{"gitId":"-"},"content":" event.consume();","lastModifiedDate":"2016-12-18"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":106,"author":{"gitId":"-"},"content":" });","lastModifiedDate":"2016-12-18"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":109,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":110,"author":{"gitId":"-"},"content":" * Fills up all the placeholders of this window.","lastModifiedDate":"2017-08-16"},{"lineNumber":111,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":112,"author":{"gitId":"-"},"content":" void fillInnerParts() {","lastModifiedDate":"2016-09-21"},{"lineNumber":113,"author":{"gitId":"-"},"content":" personListPanel \u003d new PersonListPanel(logic.getFilteredPersonList());","lastModifiedDate":"2019-01-25"},{"lineNumber":114,"author":{"gitId":"-"},"content":" personListPanelPlaceholder.getChildren().add(personListPanel.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":116,"author":{"gitId":"-"},"content":" resultDisplay \u003d new ResultDisplay();","lastModifiedDate":"2018-12-09"},{"lineNumber":117,"author":{"gitId":"-"},"content":" resultDisplayPlaceholder.getChildren().add(resultDisplay.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":" StatusBarFooter statusBarFooter \u003d new StatusBarFooter(logic.getAddressBookFilePath());","lastModifiedDate":"2019-01-25"},{"lineNumber":120,"author":{"gitId":"-"},"content":" statusbarPlaceholder.getChildren().add(statusBarFooter.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":" CommandBox commandBox \u003d new CommandBox(this::executeCommand);","lastModifiedDate":"2019-01-25"},{"lineNumber":123,"author":{"gitId":"-"},"content":" commandBoxPlaceholder.getChildren().add(commandBox.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":126,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":127,"author":{"gitId":"-"},"content":" * Sets the default size based on {@code guiSettings}.","lastModifiedDate":"2018-11-27"},{"lineNumber":128,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":129,"author":{"gitId":"-"},"content":" private void setWindowDefaultSize(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":130,"author":{"gitId":"-"},"content":" primaryStage.setHeight(guiSettings.getWindowHeight());","lastModifiedDate":"2018-11-27"},{"lineNumber":131,"author":{"gitId":"-"},"content":" primaryStage.setWidth(guiSettings.getWindowWidth());","lastModifiedDate":"2018-11-27"},{"lineNumber":132,"author":{"gitId":"-"},"content":" if (guiSettings.getWindowCoordinates() !\u003d null) {","lastModifiedDate":"2018-11-27"},{"lineNumber":133,"author":{"gitId":"-"},"content":" primaryStage.setX(guiSettings.getWindowCoordinates().getX());","lastModifiedDate":"2018-11-27"},{"lineNumber":134,"author":{"gitId":"-"},"content":" primaryStage.setY(guiSettings.getWindowCoordinates().getY());","lastModifiedDate":"2018-11-27"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":138,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":139,"author":{"gitId":"-"},"content":" * Opens the help window or focuses on it if it\u0027s already opened.","lastModifiedDate":"2018-03-15"},{"lineNumber":140,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":141,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":142,"author":{"gitId":"-"},"content":" public void handleHelp() {","lastModifiedDate":"2016-08-31"},{"lineNumber":143,"author":{"gitId":"-"},"content":" if (!helpWindow.isShowing()) {","lastModifiedDate":"2018-03-15"},{"lineNumber":144,"author":{"gitId":"-"},"content":" helpWindow.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":145,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-15"},{"lineNumber":146,"author":{"gitId":"-"},"content":" helpWindow.focus();","lastModifiedDate":"2018-03-15"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":150,"author":{"gitId":"-"},"content":" void show() {","lastModifiedDate":"2016-10-15"},{"lineNumber":151,"author":{"gitId":"-"},"content":" primaryStage.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":152,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":154,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":155,"author":{"gitId":"-"},"content":" * Closes the application.","lastModifiedDate":"2016-08-18"},{"lineNumber":156,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":157,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":158,"author":{"gitId":"-"},"content":" private void handleExit() {","lastModifiedDate":"2016-08-18"},{"lineNumber":159,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(primaryStage.getWidth(), primaryStage.getHeight(),","lastModifiedDate":"2018-12-08"},{"lineNumber":160,"author":{"gitId":"-"},"content":" (int) primaryStage.getX(), (int) primaryStage.getY());","lastModifiedDate":"2018-12-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":" logic.setGuiSettings(guiSettings);","lastModifiedDate":"2018-12-08"},{"lineNumber":162,"author":{"gitId":"-"},"content":" helpWindow.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":163,"author":{"gitId":"-"},"content":" primaryStage.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-25"},{"lineNumber":166,"author":{"gitId":"-"},"content":" public PersonListPanel getPersonListPanel() {","lastModifiedDate":"2016-08-25"},{"lineNumber":167,"author":{"gitId":"-"},"content":" return personListPanel;","lastModifiedDate":"2018-08-14"},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-25"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":170,"author":{"gitId":"The-Dudeski"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":171,"author":{"gitId":"The-Dudeski"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":172,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":173,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2018-12-09"},{"lineNumber":174,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09"},{"lineNumber":175,"author":{"gitId":"-"},"content":" * @see seedu.address.logic.Logic#execute(String)","lastModifiedDate":"2018-12-09"},{"lineNumber":176,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":177,"author":{"gitId":"-"},"content":" private CommandResult executeCommand(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2018-12-09"},{"lineNumber":178,"author":{"gitId":"The-Dudeski"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":179,"author":{"gitId":"The-Dudeski"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":180,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":181,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d logic.execute(commandText);","lastModifiedDate":"2018-12-09"},{"lineNumber":182,"author":{"gitId":"-"},"content":" logger.info(\"Result: \" + commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":183,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":185,"author":{"gitId":"-"},"content":" if (commandResult.isShowHelp()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":186,"author":{"gitId":"-"},"content":" handleHelp();","lastModifiedDate":"2018-12-09"},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":189,"author":{"gitId":"-"},"content":" if (commandResult.isExit()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":190,"author":{"gitId":"-"},"content":" handleExit();","lastModifiedDate":"2018-12-09"},{"lineNumber":191,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":193,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":194,"author":{"gitId":"-"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2018-12-09"},{"lineNumber":195,"author":{"gitId":"-"},"content":" logger.info(\"An error occurred while executing command: \" + commandText);","lastModifiedDate":"2023-06-13"},{"lineNumber":196,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(e.getMessage());","lastModifiedDate":"2018-12-09"},{"lineNumber":197,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2018-12-09"},{"lineNumber":198,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":199,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":200,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"The-Dudeski":4,"-":196}},{"path":"src/test/java/seedu/address/commons/util/InvalidationListenerManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"radeon2525"},"content":"package seedu.address.commons.util;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"radeon2525"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"radeon2525"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"radeon2525"},"content":"import javafx.beans.InvalidationListener;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"radeon2525"},"content":"import javafx.beans.property.SimpleObjectProperty;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"radeon2525"},"content":"public class InvalidationListenerManagerTest {","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"radeon2525"},"content":" private final SimpleObjectProperty\u003cObject\u003e dummyObservable \u003d new SimpleObjectProperty\u003c\u003e();","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"radeon2525"},"content":" private final InvalidationListenerManager invalidationListenerManager \u003d new InvalidationListenerManager();","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"radeon2525"},"content":" private int counter;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"radeon2525"},"content":" public void addListener_sameListenerOnce_listenerAdded() {","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"radeon2525"},"content":" invalidationListenerManager.addListener(observable -\u003e {","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"radeon2525"},"content":" assertEquals(dummyObservable, observable);","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"radeon2525"},"content":" counter++;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"radeon2525"},"content":" });","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"radeon2525"},"content":" invalidationListenerManager.callListeners(dummyObservable);","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"radeon2525"},"content":" assertEquals(1, counter);","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"radeon2525"},"content":" public void addListener_sameListenerTwice_listenerAddedTwice() {","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"radeon2525"},"content":" InvalidationListener listener \u003d observable -\u003e counter++;","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"radeon2525"},"content":" invalidationListenerManager.addListener(listener);","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"radeon2525"},"content":" invalidationListenerManager.addListener(listener);","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"radeon2525"},"content":" invalidationListenerManager.callListeners(dummyObservable);","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"radeon2525"},"content":" assertEquals(2, counter);","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"radeon2525"},"content":" public void addListener_listenersBeingCalled_listenerNotCalled() {","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"radeon2525"},"content":" InvalidationListener listener1 \u003d observable -\u003e {","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"radeon2525"},"content":" throw new AssertionError(\"should not be called\");","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"radeon2525"},"content":" };","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"radeon2525"},"content":" InvalidationListener listener2 \u003d observable -\u003e invalidationListenerManager.addListener(listener1);","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"radeon2525"},"content":" invalidationListenerManager.addListener(listener2);","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"radeon2525"},"content":" invalidationListenerManager.callListeners(dummyObservable);","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"radeon2525"},"content":" public void removeListener_singleListenerAdded_listenerRemoved() {","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"radeon2525"},"content":" InvalidationListener listener \u003d observable -\u003e counter++;","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"radeon2525"},"content":" invalidationListenerManager.addListener(listener);","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"radeon2525"},"content":" invalidationListenerManager.removeListener(listener);","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"radeon2525"},"content":" invalidationListenerManager.callListeners(dummyObservable);","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"radeon2525"},"content":" assertEquals(0, counter);","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"radeon2525"},"content":" public void removeListener_sameListenerAddedTwice_firstListenerRemoved() {","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"radeon2525"},"content":" InvalidationListener listener \u003d observable -\u003e counter++;","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"radeon2525"},"content":" invalidationListenerManager.addListener(listener);","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"radeon2525"},"content":" invalidationListenerManager.addListener(listener);","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"radeon2525"},"content":" invalidationListenerManager.removeListener(listener);","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"radeon2525"},"content":" invalidationListenerManager.callListeners(dummyObservable);","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"radeon2525"},"content":" assertEquals(1, counter);","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"radeon2525"},"content":" public void removeListener_listenersBeingCalled_listenerStillCalled() {","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"radeon2525"},"content":" InvalidationListener listener1 \u003d observable -\u003e counter++;","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"radeon2525"},"content":" InvalidationListener listener2 \u003d observable -\u003e invalidationListenerManager.removeListener(listener1);","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"radeon2525"},"content":" invalidationListenerManager.addListener(listener2);","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"radeon2525"},"content":" invalidationListenerManager.addListener(listener1);","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"radeon2525"},"content":" invalidationListenerManager.callListeners(dummyObservable);","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"radeon2525"},"content":" assertEquals(1, counter);","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"radeon2525"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"radeon2525":72}},{"path":"src/test/java/seedu/address/logic/CommandHistoryTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"radeon2525"},"content":"package seedu.address.logic;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"radeon2525"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"radeon2525"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"radeon2525"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"radeon2525"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"radeon2525"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"radeon2525"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"radeon2525"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"radeon2525"},"content":"public class CommandHistoryTest {","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"radeon2525"},"content":" private CommandHistory history;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"radeon2525"},"content":" @BeforeEach","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"radeon2525"},"content":" public void setUp() {","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"radeon2525"},"content":" history \u003d new CommandHistory();","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"radeon2525"},"content":" public void constructor_withCommandHistory_copiesCommandHistory() {","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"radeon2525"},"content":" final CommandHistory commandHistoryWithA \u003d new CommandHistory();","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"radeon2525"},"content":" commandHistoryWithA.add(\"a\");","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"radeon2525"},"content":" assertEquals(commandHistoryWithA, new CommandHistory(commandHistoryWithA));","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"radeon2525"},"content":" public void add() {","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"radeon2525"},"content":" final String validCommand \u003d \"clear\";","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"radeon2525"},"content":" final String invalidCommand \u003d \"adds Bob\";","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"radeon2525"},"content":" history.add(validCommand);","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"radeon2525"},"content":" history.add(invalidCommand);","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"radeon2525"},"content":" assertEquals(Arrays.asList(validCommand, invalidCommand), history.getHistory());","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"radeon2525"},"content":" public void equals() {","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"radeon2525"},"content":" final CommandHistory commandHistoryWithA \u003d new CommandHistory();","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"radeon2525"},"content":" commandHistoryWithA.add(\"a\");","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"radeon2525"},"content":" final CommandHistory anotherCommandHistoryWithA \u003d new CommandHistory();","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"radeon2525"},"content":" anotherCommandHistoryWithA.add(\"a\");","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"radeon2525"},"content":" final CommandHistory commandHistoryWithB \u003d new CommandHistory();","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"radeon2525"},"content":" commandHistoryWithB.add(\"b\");","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"radeon2525"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"radeon2525"},"content":" assertTrue(commandHistoryWithA.equals(commandHistoryWithA));","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"radeon2525"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"radeon2525"},"content":" assertTrue(commandHistoryWithA.equals(anotherCommandHistoryWithA));","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"radeon2525"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"radeon2525"},"content":" assertFalse(commandHistoryWithA.equals(null));","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"radeon2525"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"radeon2525"},"content":" assertFalse(commandHistoryWithA.equals(5.0f));","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"radeon2525"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"radeon2525"},"content":" assertFalse(commandHistoryWithA.equals(commandHistoryWithB));","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"radeon2525"},"content":" public void hashcode() {","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"radeon2525"},"content":" final CommandHistory commandHistoryWithA \u003d new CommandHistory();","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"radeon2525"},"content":" commandHistoryWithA.add(\"a\");","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"radeon2525"},"content":" final CommandHistory anotherCommandHistoryWithA \u003d new CommandHistory();","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"radeon2525"},"content":" anotherCommandHistoryWithA.add(\"a\");","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"radeon2525"},"content":" final CommandHistory commandHistoryWithB \u003d new CommandHistory();","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"radeon2525"},"content":" commandHistoryWithB.add(\"b\");","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"radeon2525"},"content":" // same values -\u003e returns same hashcode","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"radeon2525"},"content":" assertEquals(commandHistoryWithA.hashCode(), anotherCommandHistoryWithA.hashCode());","lastModifiedDate":"2024-03-19"},{"lineNumber":75,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"radeon2525"},"content":" // different values -\u003e returns different hashcode","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"radeon2525"},"content":" assertNotEquals(commandHistoryWithA.hashCode(), commandHistoryWithB.hashCode());","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":79,"author":{"gitId":"radeon2525"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"radeon2525":79}},{"path":"src/test/java/seedu/address/logic/LogicManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2018-12-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2017-01-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2016-09-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-31"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-12-09"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-12-09"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2018-12-09"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2018-12-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-12-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":"public class LogicManagerTest {","lastModifiedDate":"2016-09-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_IO_EXCEPTION \u003d new IOException(\"dummy IO exception\");","lastModifiedDate":"2023-06-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_AD_EXCEPTION \u003d new AccessDeniedException(\"dummy access denied exception\");","lastModifiedDate":"2023-06-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public Path temporaryFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-20"},{"lineNumber":44,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2018-12-09"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":46,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2019-04-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d","lastModifiedDate":"2019-04-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(temporaryFolder.resolve(\"addressBook.json\"));","lastModifiedDate":"2019-04-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2019-04-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2018-12-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-20"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void execute_invalidCommandFormat_throwsParseException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":57,"author":{"gitId":"-"},"content":" String invalidCommand \u003d \"uicfhmowqewca\";","lastModifiedDate":"2017-06-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertParseException(invalidCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-06-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-14"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void execute_commandExecutionError_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":63,"author":{"gitId":"-"},"content":" String deleteCommand \u003d \"delete 9\";","lastModifiedDate":"2017-06-14"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertCommandException(deleteCommand, MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2017-06-14"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void execute_validCommand_success() throws Exception {","lastModifiedDate":"2019-03-14"},{"lineNumber":69,"author":{"gitId":"-"},"content":" String listCommand \u003d ListCommand.COMMAND_WORD;","lastModifiedDate":"2017-06-19"},{"lineNumber":70,"author":{"gitId":"JukeBoxK"},"content":" assertCommandSuccess(listCommand, ListCommand.MESSAGE_EMPTY, model);","lastModifiedDate":"2024-03-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20"},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":78,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":82,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":85,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":86,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14"},{"lineNumber":87,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14"},{"lineNumber":88,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":93,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a ParseException is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":97,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":101,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a CommandException is thrown and that the result message is correct.","lastModifiedDate":"2017-06-14"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14"},{"lineNumber":105,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14"},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":109,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":110,"author":{"gitId":"-"},"content":" * Executes the command, confirms that the exception is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":111,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":112,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":113,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":114,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14"},{"lineNumber":115,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-05-31"},{"lineNumber":116,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":119,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":120,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":126,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":127,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31"},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14"},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19"},{"lineNumber":132,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":133,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13"},{"lineNumber":134,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13"},{"lineNumber":135,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13"},{"lineNumber":136,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13"},{"lineNumber":137,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":138,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13"},{"lineNumber":139,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":141,"author":{"gitId":"-"},"content":" // Inject LogicManager with an AddressBookStorage that throws the IOException e when saving","lastModifiedDate":"2023-06-13"},{"lineNumber":142,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(prefPath) {","lastModifiedDate":"2023-06-13"},{"lineNumber":143,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":144,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath)","lastModifiedDate":"2023-06-13"},{"lineNumber":145,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13"},{"lineNumber":146,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":148,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":150,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":151,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13"},{"lineNumber":152,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2023-06-13"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":154,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":156,"author":{"gitId":"-"},"content":" // Triggers the saveAddressBook method by executing an add command","lastModifiedDate":"2023-06-13"},{"lineNumber":157,"author":{"gitId":"-"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2023-06-13"},{"lineNumber":158,"author":{"gitId":"-"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY;","lastModifiedDate":"2023-06-13"},{"lineNumber":159,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2023-06-13"},{"lineNumber":160,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13"},{"lineNumber":161,"author":{"gitId":"-"},"content":" expectedModel.addPerson(expectedPerson);","lastModifiedDate":"2023-06-13"},{"lineNumber":162,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13"},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":164,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"radeon2525":1,"JukeBoxK":1,"-":162}},{"path":"src/test/java/seedu/address/logic/commands/AddCommandIntegrationTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-15"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":10,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-15"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-15"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-15"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-15"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code AddCommand}.","lastModifiedDate":"2017-06-15"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-15"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class AddCommandIntegrationTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-15"},{"lineNumber":23,"author":{"gitId":"radeon2525"},"content":" private CommandHistory commandHistory \u003d new CommandHistory();","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void execute_newPerson_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":33,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-15"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":35,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" expectedModel.addPerson(validPerson);","lastModifiedDate":"2017-06-15"},{"lineNumber":37,"author":{"gitId":"radeon2525"},"content":" expectedModel.commitAddressBook();","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":39,"author":{"gitId":"radeon2525"},"content":" assertCommandSuccess(new AddCommand(validPerson), model, commandHistory,","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"radeon2525"},"content":" String.format(AddCommand.MESSAGE_SUCCESS, validPerson), expectedModel);","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(0);","lastModifiedDate":"2018-01-10"},{"lineNumber":46,"author":{"gitId":"radeon2525"},"content":" assertCommandFailure(new AddCommand(personInList), model, commandHistory,","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"-"},"content":" AddCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"radeon2525":7,"-":43}},{"path":"src/test/java/seedu/address/logic/commands/AddCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-01-10"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-05-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":18,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-05-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2017-05-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class AddCommandTest {","lastModifiedDate":"2017-05-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"radeon2525"},"content":" private static final CommandHistory EMPTY_COMMAND_HISTORY \u003d new CommandHistory();","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"radeon2525"},"content":" private static final Person ALICE \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"radeon2525"},"content":" private CommandHistory commandHistory \u003d new CommandHistory();","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddCommand(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void execute_personAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":" ModelStubAcceptingPersonAdded modelStub \u003d new ModelStubAcceptingPersonAdded();","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"radeon2525"},"content":" CommandHistory commandHistory \u003d new CommandHistory();","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"radeon2525"},"content":" CommandResult commandResult \u003d new AddCommand(validPerson).execute(modelStub, commandHistory);","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"radeon2525"},"content":" assertEquals(String.format(AddCommand.MESSAGE_SUCCESS, validPerson), commandResult.getFeedbackToUser());","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(validPerson), modelStub.personsAdded);","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12"},{"lineNumber":54,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(validPerson);","lastModifiedDate":"2018-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":" ModelStub modelStub \u003d new ModelStubWithPerson(validPerson);","lastModifiedDate":"2018-08-07"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":57,"author":{"gitId":"radeon2525"},"content":" assertThrows(CommandException.class, AddCommand.MESSAGE_DUPLICATE_PERSON, () -\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"radeon2525"},"content":" addCommand.execute(modelStub, commandHistory));","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":61,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-22"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":64,"author":{"gitId":"-"},"content":" Person alice \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2017-06-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":" Person bob \u003d new PersonBuilder().withName(\"Bob\").build();","lastModifiedDate":"2017-06-22"},{"lineNumber":66,"author":{"gitId":"-"},"content":" AddCommand addAliceCommand \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22"},{"lineNumber":67,"author":{"gitId":"-"},"content":" AddCommand addBobCommand \u003d new AddCommand(bob);","lastModifiedDate":"2017-06-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":69,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommand));","lastModifiedDate":"2017-06-22"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":72,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":73,"author":{"gitId":"-"},"content":" AddCommand addAliceCommandCopy \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommandCopy));","lastModifiedDate":"2017-06-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":76,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(1));","lastModifiedDate":"2017-06-22"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":79,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(null));","lastModifiedDate":"2017-06-22"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":82,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(addBobCommand));","lastModifiedDate":"2017-06-22"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":86,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(ALICE);","lastModifiedDate":"2019-02-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" String expected \u003d AddCommand.class.getCanonicalName() + \"{toAdd\u003d\" + ALICE + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertEquals(expected, addCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":94,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":95,"author":{"gitId":"radeon2525"},"content":" public void execute_nullModel_throwsNullPointerException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":96,"author":{"gitId":"radeon2525"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2024-03-16"},{"lineNumber":97,"author":{"gitId":"radeon2525"},"content":" AddCommand addCommand \u003d new AddCommand(validPerson);","lastModifiedDate":"2024-03-16"},{"lineNumber":98,"author":{"gitId":"radeon2525"},"content":" assertThrows(NullPointerException.class, () -\u003e addCommand.execute(null, commandHistory));","lastModifiedDate":"2024-03-18"},{"lineNumber":99,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":100,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":101,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":102,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2017-05-12"},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":105,"author":{"gitId":"-"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2017-05-12"},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":108,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":112,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27"},{"lineNumber":113,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":117,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":118,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":122,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":123,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":127,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":128,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":131,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":132,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27"},{"lineNumber":133,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":136,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":137,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":138,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":141,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":142,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2018-11-27"},{"lineNumber":143,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":146,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":147,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-12"},{"lineNumber":148,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":151,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":152,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06"},{"lineNumber":153,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":156,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":157,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-08"},{"lineNumber":158,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":161,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":162,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":163,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":164,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":166,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":167,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":168,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":171,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":172,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10"},{"lineNumber":173,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":175,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":176,"author":{"gitId":"radeon2525"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":177,"author":{"gitId":"radeon2525"},"content":" public boolean canUndoAddressBook() {","lastModifiedDate":"2024-03-18"},{"lineNumber":178,"author":{"gitId":"radeon2525"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-18"},{"lineNumber":179,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":180,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":181,"author":{"gitId":"radeon2525"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":182,"author":{"gitId":"radeon2525"},"content":" public boolean canRedoAddressBook() {","lastModifiedDate":"2024-03-18"},{"lineNumber":183,"author":{"gitId":"radeon2525"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-18"},{"lineNumber":184,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":185,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":186,"author":{"gitId":"radeon2525"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":187,"author":{"gitId":"radeon2525"},"content":" public void undoAddressBook() {","lastModifiedDate":"2024-03-18"},{"lineNumber":188,"author":{"gitId":"radeon2525"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-18"},{"lineNumber":189,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":190,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":191,"author":{"gitId":"radeon2525"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":192,"author":{"gitId":"radeon2525"},"content":" public void redoAddressBook() {","lastModifiedDate":"2024-03-18"},{"lineNumber":193,"author":{"gitId":"radeon2525"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-18"},{"lineNumber":194,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":195,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":196,"author":{"gitId":"radeon2525"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":197,"author":{"gitId":"radeon2525"},"content":" public void commitAddressBook() {","lastModifiedDate":"2024-03-18"},{"lineNumber":198,"author":{"gitId":"radeon2525"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-18"},{"lineNumber":199,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":200,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":201,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":203,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":204,"author":{"gitId":"-"},"content":" * A Model stub that contains a single person.","lastModifiedDate":"2018-08-07"},{"lineNumber":205,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":206,"author":{"gitId":"-"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2018-08-07"},{"lineNumber":207,"author":{"gitId":"-"},"content":" private final Person person;","lastModifiedDate":"2018-08-07"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":209,"author":{"gitId":"-"},"content":" ModelStubWithPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":210,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":211,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2018-08-07"},{"lineNumber":212,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":214,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":215,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":216,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":217,"author":{"gitId":"-"},"content":" return this.person.isSamePerson(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":218,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":219,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":221,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":222,"author":{"gitId":"-"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2017-05-12"},{"lineNumber":223,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":224,"author":{"gitId":"-"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2017-05-12"},{"lineNumber":225,"author":{"gitId":"-"},"content":" final ArrayList\u003cPerson\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2017-05-12"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":227,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07"},{"lineNumber":228,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":229,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":230,"author":{"gitId":"-"},"content":" return personsAdded.stream().anyMatch(person::isSamePerson);","lastModifiedDate":"2018-08-07"},{"lineNumber":231,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":233,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":234,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-08"},{"lineNumber":235,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":236,"author":{"gitId":"-"},"content":" personsAdded.add(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":237,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":239,"author":{"gitId":"radeon2525"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":240,"author":{"gitId":"radeon2525"},"content":" public void commitAddressBook() {","lastModifiedDate":"2024-03-18"},{"lineNumber":241,"author":{"gitId":"radeon2525"},"content":" // called by {@code AddCommand#execute()}","lastModifiedDate":"2024-03-18"},{"lineNumber":242,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":243,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":244,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":245,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04"},{"lineNumber":246,"author":{"gitId":"-"},"content":" return new AddressBook();","lastModifiedDate":"2017-05-04"},{"lineNumber":247,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":248,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":250,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12"}],"authorContributionMap":{"radeon2525":51,"-":199}},{"path":"src/test/java/seedu/address/logic/commands/ClearCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":8,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2018-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class ClearCommandTest {","lastModifiedDate":"2017-06-08"},{"lineNumber":15,"author":{"gitId":"radeon2525"},"content":" private CommandHistory commandHistory \u003d new CommandHistory();","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public void execute_emptyAddressBook_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":19,"author":{"gitId":"-"},"content":" Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2018-08-08"},{"lineNumber":21,"author":{"gitId":"radeon2525"},"content":" expectedModel.commitAddressBook();","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":23,"author":{"gitId":"radeon2525"},"content":" assertCommandSuccess(new ClearCommand(), model, commandHistory, ClearCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void execute_nonEmptyAddressBook_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":" Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2018-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" expectedModel.setAddressBook(new AddressBook());","lastModifiedDate":"2018-11-27"},{"lineNumber":31,"author":{"gitId":"radeon2525"},"content":" expectedModel.commitAddressBook();","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":33,"author":{"gitId":"radeon2525"},"content":" assertCommandSuccess(new ClearCommand(), model, commandHistory, ClearCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-08"}],"authorContributionMap":{"radeon2525":6,"-":30}},{"path":"src/test/java/seedu/address/logic/commands/CommandTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-07-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31"},{"lineNumber":17,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-06-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-07-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-07-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_AMY \u003d \"11111111\";","lastModifiedDate":"2017-07-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_BOB \u003d \"22222222\";","lastModifiedDate":"2017-07-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_AMY \u003d \"Block 312, Amy Street 1\";","lastModifiedDate":"2017-07-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_BOB \u003d \"Block 123, Bobby Street 3\";","lastModifiedDate":"2017-07-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_HUSBAND \u003d \"husband\";","lastModifiedDate":"2017-07-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_FRIEND \u003d \"friend\";","lastModifiedDate":"2017-07-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + PREFIX_TAG + VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + PREFIX_TAG + VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final String INVALID_NAME_DESC \u003d \" \" + PREFIX_NAME + \"James\u0026\"; // \u0027\u0026\u0027 not allowed in names","lastModifiedDate":"2017-07-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String INVALID_PHONE_DESC \u003d \" \" + PREFIX_PHONE + \"911a\"; // \u0027a\u0027 not allowed in phones","lastModifiedDate":"2017-07-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final String INVALID_ADDRESS_DESC \u003d \" \" + PREFIX_ADDRESS; // empty string not allowed for addresses","lastModifiedDate":"2017-07-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final String INVALID_TAG_DESC \u003d \" \" + PREFIX_TAG + \"hubby*\"; // \u0027*\u0027 not allowed in tags","lastModifiedDate":"2017-07-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":64,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05"},{"lineNumber":65,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-07-05"},{"lineNumber":67,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05"},{"lineNumber":68,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05"},{"lineNumber":69,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2017-07-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":73,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":75,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09"},{"lineNumber":76,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25"},{"lineNumber":77,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":78,"author":{"gitId":"radeon2525"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandHistory history,","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"radeon2525"},"content":" CommandResult expectedCommandResult, Model expectedModel) {","lastModifiedDate":"2024-03-18"},{"lineNumber":80,"author":{"gitId":"radeon2525"},"content":" CommandHistory expectedCommandHistory \u003d new CommandHistory(history);","lastModifiedDate":"2024-03-18"},{"lineNumber":81,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":82,"author":{"gitId":"radeon2525"},"content":" CommandResult result \u003d command.execute(actualModel, history);","lastModifiedDate":"2024-03-18"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":85,"author":{"gitId":"radeon2525"},"content":" assertEquals(expectedCommandHistory, history);","lastModifiedDate":"2024-03-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":91,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":92,"author":{"gitId":"radeon2525"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandHistory, CommandResult, Model)}","lastModifiedDate":"2024-03-18"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09"},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":95,"author":{"gitId":"radeon2525"},"content":" public static void assertCommandSuccess(Command command, Model actualModel,","lastModifiedDate":"2024-03-18"},{"lineNumber":96,"author":{"gitId":"radeon2525"},"content":" CommandHistory history, String expectedMessage, Model expectedModel) {","lastModifiedDate":"2024-03-18"},{"lineNumber":97,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09"},{"lineNumber":98,"author":{"gitId":"radeon2525"},"content":" assertCommandSuccess(command, actualModel, history, expectedCommandResult, expectedModel);","lastModifiedDate":"2024-03-18"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":101,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":104,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25"},{"lineNumber":106,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":107,"author":{"gitId":"radeon2525"},"content":" public static void assertCommandFailure(Command command, Model actualModel,","lastModifiedDate":"2024-03-18"},{"lineNumber":108,"author":{"gitId":"radeon2525"},"content":" CommandHistory history, String expectedMessage) {","lastModifiedDate":"2024-03-18"},{"lineNumber":109,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05"},{"lineNumber":110,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05"},{"lineNumber":111,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":112,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10"},{"lineNumber":113,"author":{"gitId":"radeon2525"},"content":" CommandHistory expectedCommandHistory \u003d new CommandHistory(history);","lastModifiedDate":"2024-03-18"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":115,"author":{"gitId":"radeon2525"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel, history));","lastModifiedDate":"2024-03-18"},{"lineNumber":116,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":119,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20"},{"lineNumber":120,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show only the person at the given {@code targetIndex} in the","lastModifiedDate":"2018-01-31"},{"lineNumber":121,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31"},{"lineNumber":122,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20"},{"lineNumber":123,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31"},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31"},{"lineNumber":126,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31"},{"lineNumber":127,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20"},{"lineNumber":128,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":133,"author":{"gitId":"radeon2525"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":134,"author":{"gitId":"radeon2525"},"content":" * Deletes the first person in {@code model}\u0027s filtered list from {@code model}\u0027s address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":135,"author":{"gitId":"radeon2525"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":136,"author":{"gitId":"radeon2525"},"content":" public static void deleteFirstPerson(Model model) {","lastModifiedDate":"2024-03-19"},{"lineNumber":137,"author":{"gitId":"radeon2525"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(0);","lastModifiedDate":"2024-03-19"},{"lineNumber":138,"author":{"gitId":"radeon2525"},"content":" model.deletePerson(firstPerson);","lastModifiedDate":"2024-03-19"},{"lineNumber":139,"author":{"gitId":"radeon2525"},"content":" model.commitAddressBook();","lastModifiedDate":"2024-03-19"},{"lineNumber":140,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":141,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":142,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"radeon2525":23,"-":119}},{"path":"src/test/java/seedu/address/logic/commands/DeleteCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31"},{"lineNumber":8,"author":{"gitId":"radeon2525"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-06-05"},{"lineNumber":16,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":18,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"radeon2525"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2020-12-16"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * {@code DeleteCommand}.","lastModifiedDate":"2018-01-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class DeleteCommandTest {","lastModifiedDate":"2017-06-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":31,"author":{"gitId":"radeon2525"},"content":" private CommandHistory commandHistory \u003d new CommandHistory();","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-06-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(outOfBoundIndex);","lastModifiedDate":"2018-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":38,"author":{"gitId":"radeon2525"},"content":" assertCommandFailure(deleteCommand, model, commandHistory, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"radeon2525"},"content":" public void execute_invalidIndex_throwsCommandException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"radeon2525"},"content":" // Create a model with an empty person list","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"radeon2525"},"content":" Model model \u003d new ModelManager(new AddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"radeon2525"},"content":" CommandHistory history \u003d new CommandHistory();","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"radeon2525"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(Index.fromZeroBased(0));","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"radeon2525"},"content":" // Execute command and assert CommandException is thrown","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"radeon2525"},"content":" assertThrows(CommandException.class, () -\u003e deleteCommand.execute(model, history));","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void execute_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-06-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-06-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-06-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":61,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(outOfBoundIndex);","lastModifiedDate":"2018-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":63,"author":{"gitId":"radeon2525"},"content":" assertCommandFailure(deleteCommand, model, commandHistory, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" DeleteCommand deleteFirstCommand \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" DeleteCommand deleteSecondCommand \u003d new DeleteCommand(INDEX_SECOND_PERSON);","lastModifiedDate":"2018-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" DeleteCommand deleteFirstCommandCopy \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2017-06-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2017-06-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2017-06-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(targetIndex);","lastModifiedDate":"2019-02-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":" String expected \u003d DeleteCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertEquals(expected, deleteCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show no one.","lastModifiedDate":"2017-06-05"},{"lineNumber":98,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":99,"author":{"gitId":"-"},"content":" private void showNoPerson(Model model) {","lastModifiedDate":"2017-06-05"},{"lineNumber":100,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(p -\u003e false);","lastModifiedDate":"2017-06-12"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertTrue(model.getFilteredPersonList().isEmpty());","lastModifiedDate":"2018-02-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":104,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"radeon2525":15,"-":89}},{"path":"src/test/java/seedu/address/logic/commands/EditCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":14,"author":{"gitId":"radeon2525"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"radeon2525"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-04"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for EditCommand.","lastModifiedDate":"2020-12-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-04"},{"lineNumber":34,"author":{"gitId":"-"},"content":"public class EditCommandTest {","lastModifiedDate":"2017-05-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":37,"author":{"gitId":"radeon2525"},"content":" private CommandHistory commandHistory \u003d new CommandHistory();","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonUnfilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":42,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(firstPerson).build();","lastModifiedDate":"2017-06-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_SECOND_PERSON, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":45,"author":{"gitId":"radeon2525"},"content":" assertCommandFailure(editCommand, model, commandHistory, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonFilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // edit person in filtered list into a duplicate in address book","lastModifiedDate":"2017-05-18"},{"lineNumber":53,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(INDEX_SECOND_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":54,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder(personInList).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":57,"author":{"gitId":"radeon2525"},"content":" assertCommandFailure(editCommand, model, commandHistory, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":60,"author":{"gitId":"radeon2525"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"radeon2525"},"content":" * Updates {@code model}\u0027s filtered list to show only the person at the given {@code targetIndex} in the","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"radeon2525"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"radeon2525"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"radeon2525"},"content":" private void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"radeon2525"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"radeon2525"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"radeon2525"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"radeon2525"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"radeon2525"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":76,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-05-18"},{"lineNumber":77,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-22"},{"lineNumber":78,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":80,"author":{"gitId":"radeon2525"},"content":" assertCommandFailure(editCommand, model, commandHistory, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-18"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":83,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-18"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2017-05-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * but smaller than size of address book","lastModifiedDate":"2017-05-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":89,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":90,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-18"},{"lineNumber":91,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-05-18"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-05-18"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex,","lastModifiedDate":"2018-08-08"},{"lineNumber":95,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":97,"author":{"gitId":"radeon2525"},"content":" assertCommandFailure(editCommand, model, commandHistory, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-18"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":" final EditCommand standardCommand \u003d new EditCommand(INDEX_FIRST_PERSON, DESC_AMY);","lastModifiedDate":"2018-08-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":" EditPersonDescriptor copyDescriptor \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(INDEX_FIRST_PERSON, copyDescriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":109,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":112,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2017-05-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_SECOND_PERSON, DESC_AMY)));","lastModifiedDate":"2017-05-25"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":121,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_FIRST_PERSON, DESC_BOB)));","lastModifiedDate":"2017-05-25"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":125,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2019-02-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":" String expected \u003d EditCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", editPersonDescriptor\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":" + editPersonDescriptor + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08"}],"authorContributionMap":{"radeon2525":23,"-":112}},{"path":"src/test/java/seedu/address/logic/commands/ExitCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2018-12-09"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.ExitCommand.MESSAGE_EXIT_ACKNOWLEDGEMENT;","lastModifiedDate":"2017-06-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":8,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2018-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class ExitCommandTest {","lastModifiedDate":"2017-06-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2018-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2018-12-09"},{"lineNumber":15,"author":{"gitId":"radeon2525"},"content":" private CommandHistory commandHistory \u003d new CommandHistory();","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public void execute_exit_success() {","lastModifiedDate":"2017-06-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(MESSAGE_EXIT_ACKNOWLEDGEMENT, false, true);","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"radeon2525"},"content":" assertCommandSuccess(new ExitCommand(), model, commandHistory, expectedCommandResult, expectedModel);","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-08"}],"authorContributionMap":{"radeon2525":3,"-":19}},{"path":"src/test/java/seedu/address/logic/commands/FindCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_PERSONS_LISTED_OVERVIEW;","lastModifiedDate":"2023-07-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2018-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.CARL;","lastModifiedDate":"2017-07-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ELLE;","lastModifiedDate":"2017-07-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.FIONA;","lastModifiedDate":"2017-07-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code FindCommand}.","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class FindCommandTest {","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2018-08-08"},{"lineNumber":30,"author":{"gitId":"radeon2525"},"content":" private CommandHistory commandHistory \u003d new CommandHistory();","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicate \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"first\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate secondPredicate \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"second\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" FindCommand findFirstCommand \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" FindCommand findSecondCommand \u003d new FindCommand(secondPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" FindCommand findFirstCommandCopy \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommandCopy));","lastModifiedDate":"2017-06-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(1));","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(null));","lastModifiedDate":"2017-06-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(findSecondCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void execute_zeroKeywords_noPersonFound() {","lastModifiedDate":"2017-08-15"},{"lineNumber":61,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2017-06-12"},{"lineNumber":62,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\" \");","lastModifiedDate":"2018-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":65,"author":{"gitId":"radeon2525"},"content":" assertCommandSuccess(command, model, commandHistory, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void execute_multipleKeywords_multiplePersonsFound() {","lastModifiedDate":"2017-08-15"},{"lineNumber":71,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 3);","lastModifiedDate":"2017-06-12"},{"lineNumber":72,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\"Kurz Elle Kunz\");","lastModifiedDate":"2018-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":75,"author":{"gitId":"radeon2525"},"content":" assertCommandSuccess(command, model, commandHistory, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(CARL, ELLE, FIONA), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"keyword\"));","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" FindCommand findCommand \u003d new FindCommand(predicate);","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" String expected \u003d FindCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertEquals(expected, findCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-12"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * Parses {@code userInput} into a {@code NameContainsKeywordsPredicate}.","lastModifiedDate":"2018-08-08"},{"lineNumber":89,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":90,"author":{"gitId":"-"},"content":" private NameContainsKeywordsPredicate preparePredicate(String userInput) {","lastModifiedDate":"2018-08-08"},{"lineNumber":91,"author":{"gitId":"-"},"content":" return new NameContainsKeywordsPredicate(Arrays.asList(userInput.split(\"\\\\s+\")));","lastModifiedDate":"2018-08-08"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":93,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"radeon2525":4,"-":89}},{"path":"src/test/java/seedu/address/logic/commands/HelpCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.HelpCommand.SHOWING_HELP_MESSAGE;","lastModifiedDate":"2017-06-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":8,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2018-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class HelpCommandTest {","lastModifiedDate":"2017-06-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2018-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2018-08-08"},{"lineNumber":15,"author":{"gitId":"radeon2525"},"content":" private CommandHistory commandHistory \u003d new CommandHistory();","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public void execute_help_success() {","lastModifiedDate":"2017-06-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(SHOWING_HELP_MESSAGE, true, false);","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"radeon2525"},"content":" assertCommandSuccess(new HelpCommand(), model, commandHistory, expectedCommandResult, expectedModel);","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-08"}],"authorContributionMap":{"radeon2525":3,"-":19}},{"path":"src/test/java/seedu/address/logic/commands/ListCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2018-01-31"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":11,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for ListCommand.","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class ListCommandTest {","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private Model expectedModel;","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"radeon2525"},"content":" private CommandHistory commandHistory \u003d new CommandHistory();","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void execute_listIsNotFiltered_showsSameList() {","lastModifiedDate":"2017-08-15"},{"lineNumber":33,"author":{"gitId":"radeon2525"},"content":" assertCommandSuccess(new ListCommand(), model, commandHistory, ListCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void execute_listIsFiltered_showsEverything() {","lastModifiedDate":"2017-08-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":39,"author":{"gitId":"radeon2525"},"content":" assertCommandSuccess(new ListCommand(), model, commandHistory, ListCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"radeon2525":4,"-":37}},{"path":"src/test/java/seedu/address/logic/commands/RedoCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"radeon2525"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"radeon2525"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"radeon2525"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"radeon2525"},"content":"import static seedu.address.logic.commands.CommandTestUtil.deleteFirstPerson;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"radeon2525"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"radeon2525"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"radeon2525"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"radeon2525"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"radeon2525"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"radeon2525"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"radeon2525"},"content":"public class RedoCommandTest {","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"radeon2525"},"content":" private final Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"radeon2525"},"content":" private final Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"radeon2525"},"content":" private final CommandHistory commandHistory \u003d new CommandHistory();","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"radeon2525"},"content":" @BeforeEach","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"radeon2525"},"content":" public void setUp() {","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"radeon2525"},"content":" // set up of both models\u0027 undo/redo history","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"radeon2525"},"content":" deleteFirstPerson(model);","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"radeon2525"},"content":" deleteFirstPerson(model);","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"radeon2525"},"content":" model.undoAddressBook();","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"radeon2525"},"content":" model.undoAddressBook();","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"radeon2525"},"content":" deleteFirstPerson(expectedModel);","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"radeon2525"},"content":" deleteFirstPerson(expectedModel);","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"radeon2525"},"content":" expectedModel.undoAddressBook();","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"radeon2525"},"content":" expectedModel.undoAddressBook();","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"radeon2525"},"content":" public void execute() {","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"radeon2525"},"content":" // multiple redoable states in model","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"radeon2525"},"content":" expectedModel.redoAddressBook();","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"radeon2525"},"content":" assertCommandSuccess(new RedoCommand(), model, commandHistory, RedoCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"radeon2525"},"content":" // single redoable state in model","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"radeon2525"},"content":" expectedModel.redoAddressBook();","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"radeon2525"},"content":" assertCommandSuccess(new RedoCommand(), model, commandHistory, RedoCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"radeon2525"},"content":" // no redoable state in model","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"radeon2525"},"content":" assertCommandFailure(new RedoCommand(), model, commandHistory, RedoCommand.MESSAGE_FAILURE);","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"radeon2525"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"radeon2525":49}},{"path":"src/test/java/seedu/address/logic/commands/TagCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Derekljh"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"Derekljh"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"Derekljh"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"Derekljh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"Derekljh"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"Derekljh"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"Derekljh"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"Derekljh"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"radeon2525"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"Derekljh"},"content":"import java.util.Collection;","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"Derekljh"},"content":"import java.util.List;","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"Derekljh"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"Derekljh"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"Derekljh"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"Derekljh"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"Derekljh"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"Derekljh"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"Derekljh"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"Derekljh"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"Derekljh"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"Derekljh"},"content":" * Contains integration tests (interactions with the Model) and unit tests for TagCommand.","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"Derekljh"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"Derekljh"},"content":"class TagCommandTest {","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"Derekljh"},"content":" private static final Tag TAG_OWES_MONEY \u003d new Tag(\"owesMoney\");","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"Derekljh"},"content":" private static final Tag TAG_FRIENDS \u003d new Tag(\"friends\");","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"Derekljh"},"content":" private static final Collection\u003cTag\u003e TAGS \u003d List.of(TAG_OWES_MONEY, TAG_FRIENDS);","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"Derekljh"},"content":" private Model model;","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"Derekljh"},"content":" @BeforeEach","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"Derekljh"},"content":" public void init() {","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"Derekljh"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"Derekljh"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"Derekljh"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"Derekljh"},"content":" assertThrows(NullPointerException.class, () -\u003e new TagCommand(null, null));","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"Derekljh"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"Derekljh"},"content":" public void execute_indexOutOfBounds_failure() {","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"Derekljh"},"content":" Index index \u003d Index.fromOneBased(999);","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"Derekljh"},"content":" TagCommand command \u003d new TagCommand(index, TAGS);","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"Derekljh"},"content":" String expectedMessage \u003d Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"radeon2525"},"content":" assertCommandFailure(command, model, new CommandHistory(), expectedMessage);","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"radeon2525"},"content":" public void showTags_singleTag_returnsSingleTag() {","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"radeon2525"},"content":" // Create a collection containing a single tag","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"radeon2525"},"content":" Collection\u003cTag\u003e tags \u003d Arrays.asList(new Tag(\"friend\"));","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"radeon2525"},"content":" // Call the showTags method","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"radeon2525"},"content":" String result \u003d TagCommand.showTags(tags);","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"radeon2525"},"content":" // Verify that the result is the same as the single tag","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"radeon2525"},"content":" assertEquals(\"friend\", result);","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":68,"author":{"gitId":"Derekljh"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"Derekljh"},"content":" public void equals() {","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"Derekljh"},"content":" final TagCommand standardCommand \u003d new TagCommand(INDEX_FIRST_PERSON, TAGS);","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"Derekljh"},"content":" // same object -\u003e equal","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"Derekljh"},"content":" assertEquals(standardCommand, standardCommand);","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":75,"author":{"gitId":"Derekljh"},"content":" // same values -\u003e equal","lastModifiedDate":"2024-03-16"},{"lineNumber":76,"author":{"gitId":"Derekljh"},"content":" var commandWithSameValues \u003d new TagCommand(INDEX_FIRST_PERSON, TAGS);","lastModifiedDate":"2024-03-16"},{"lineNumber":77,"author":{"gitId":"Derekljh"},"content":" assertEquals(standardCommand, commandWithSameValues);","lastModifiedDate":"2024-03-16"},{"lineNumber":78,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":79,"author":{"gitId":"Derekljh"},"content":" // tags in different order -\u003e equal","lastModifiedDate":"2024-03-16"},{"lineNumber":80,"author":{"gitId":"Derekljh"},"content":" var tagsInDifferentOrder \u003d List.of(TAG_FRIENDS, TAG_OWES_MONEY);","lastModifiedDate":"2024-03-16"},{"lineNumber":81,"author":{"gitId":"Derekljh"},"content":" assertEquals(standardCommand, new TagCommand(INDEX_FIRST_PERSON, tagsInDifferentOrder));","lastModifiedDate":"2024-03-16"},{"lineNumber":82,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":83,"author":{"gitId":"Derekljh"},"content":" // null -\u003e not equal","lastModifiedDate":"2024-03-16"},{"lineNumber":84,"author":{"gitId":"Derekljh"},"content":" assertNotEquals(null, standardCommand);","lastModifiedDate":"2024-03-16"},{"lineNumber":85,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":86,"author":{"gitId":"Derekljh"},"content":" // different index -\u003e not equal","lastModifiedDate":"2024-03-16"},{"lineNumber":87,"author":{"gitId":"Derekljh"},"content":" assertNotEquals(standardCommand, new TagCommand(INDEX_SECOND_PERSON, TAGS));","lastModifiedDate":"2024-03-16"},{"lineNumber":88,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":89,"author":{"gitId":"Derekljh"},"content":" // different tags -\u003e not equal","lastModifiedDate":"2024-03-16"},{"lineNumber":90,"author":{"gitId":"Derekljh"},"content":" assertNotEquals(standardCommand, new TagCommand(INDEX_FIRST_PERSON, List.of(TAG_OWES_MONEY)));","lastModifiedDate":"2024-03-16"},{"lineNumber":91,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":92,"author":{"gitId":"Derekljh"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"Derekljh":76,"radeon2525":16}},{"path":"src/test/java/seedu/address/logic/commands/UndoCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"radeon2525"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"radeon2525"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"radeon2525"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"radeon2525"},"content":"import static seedu.address.logic.commands.CommandTestUtil.deleteFirstPerson;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"radeon2525"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"radeon2525"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"radeon2525"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"radeon2525"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"radeon2525"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"radeon2525"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"radeon2525"},"content":"public class UndoCommandTest {","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"radeon2525"},"content":" private final Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"radeon2525"},"content":" private final Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"radeon2525"},"content":" private final CommandHistory commandHistory \u003d new CommandHistory();","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"radeon2525"},"content":" @BeforeEach","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"radeon2525"},"content":" public void setUp() {","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"radeon2525"},"content":" // set up of models\u0027 undo/redo history","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"radeon2525"},"content":" deleteFirstPerson(model);","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"radeon2525"},"content":" deleteFirstPerson(model);","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"radeon2525"},"content":" deleteFirstPerson(expectedModel);","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"radeon2525"},"content":" deleteFirstPerson(expectedModel);","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"radeon2525"},"content":" public void execute() {","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"radeon2525"},"content":" // multiple undoable states in model","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"radeon2525"},"content":" expectedModel.undoAddressBook();","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"radeon2525"},"content":" assertCommandSuccess(new UndoCommand(), model, commandHistory, UndoCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"radeon2525"},"content":" // single undoable state in model","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"radeon2525"},"content":" expectedModel.undoAddressBook();","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"radeon2525"},"content":" assertCommandSuccess(new UndoCommand(), model, commandHistory, UndoCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"radeon2525"},"content":" // no undoable states in model","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"radeon2525"},"content":" assertCommandFailure(new UndoCommand(), model, commandHistory, UndoCommand.MESSAGE_FAILURE);","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"radeon2525"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"radeon2525":45}},{"path":"src/test/java/seedu/address/logic/commands/UntagCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"miffi"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"miffi"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"miffi"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"miffi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"miffi"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"miffi"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"miffi"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"miffi"},"content":"import java.util.Collection;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"miffi"},"content":"import java.util.List;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"miffi"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"miffi"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"miffi"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"miffi"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"miffi"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"miffi"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"miffi"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"miffi"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"miffi"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"miffi"},"content":" * Contains integration tests (interactions with the Model) and unit tests for UntagCommand.","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"miffi"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"miffi"},"content":"class UntagCommandTest {","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"miffi"},"content":" private static final Tag TAG_OWES_MONEY \u003d new Tag(\"owesMoney\");","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"miffi"},"content":" private static final Tag TAG_FRIENDS \u003d new Tag(\"friends\");","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"miffi"},"content":" private static final Collection\u003cTag\u003e TAGS \u003d List.of(TAG_OWES_MONEY, TAG_FRIENDS);","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"miffi"},"content":" private Model model;","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"miffi"},"content":" @BeforeEach","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"miffi"},"content":" public void init() {","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"miffi"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"miffi"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"miffi"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"miffi"},"content":" public void execute_tagMissing_failure() {","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"miffi"},"content":" var index \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"miffi"},"content":" var personName \u003d model.getFilteredPersonList().get(index.getZeroBased()).getName();","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"miffi"},"content":" var command \u003d new UntagCommand(index, TAGS);","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"miffi"},"content":" var expectedMessage \u003d String.format(","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"miffi"},"content":" Messages.MESSAGE_MISSING_TAG,","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"miffi"},"content":" personName,","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"miffi"},"content":" \"owesMoney\");","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"radeon2525"},"content":" assertCommandFailure(command, model, new CommandHistory(), expectedMessage);","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"miffi"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"miffi"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"miffi"},"content":" public void execute_indexOutOfBounds_failure() {","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"miffi"},"content":" var index \u003d Index.fromOneBased(999);","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"miffi"},"content":" var command \u003d new UntagCommand(index, TAGS);","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"miffi"},"content":" var expectedMessage \u003d Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"radeon2525"},"content":" assertCommandFailure(command, model, new CommandHistory(), expectedMessage);","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"miffi"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"miffi"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"miffi"},"content":" public void equals() {","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"miffi"},"content":" final UntagCommand standardCommand \u003d new UntagCommand(INDEX_FIRST_PERSON, TAGS);","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":66,"author":{"gitId":"miffi"},"content":" // same object -\u003e equal","lastModifiedDate":"2024-03-16"},{"lineNumber":67,"author":{"gitId":"miffi"},"content":" assertEquals(standardCommand, standardCommand);","lastModifiedDate":"2024-03-16"},{"lineNumber":68,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"miffi"},"content":" // same values -\u003e equal","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"miffi"},"content":" var commandWithSameValues \u003d new UntagCommand(INDEX_FIRST_PERSON, TAGS);","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"miffi"},"content":" assertEquals(standardCommand, commandWithSameValues);","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"miffi"},"content":" // tags in different order -\u003e equal","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"miffi"},"content":" var tagsInDifferentOrder \u003d List.of(TAG_FRIENDS, TAG_OWES_MONEY);","lastModifiedDate":"2024-03-16"},{"lineNumber":75,"author":{"gitId":"miffi"},"content":" assertEquals(standardCommand, new UntagCommand(INDEX_FIRST_PERSON, tagsInDifferentOrder));","lastModifiedDate":"2024-03-16"},{"lineNumber":76,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":77,"author":{"gitId":"miffi"},"content":" // null -\u003e not equal","lastModifiedDate":"2024-03-16"},{"lineNumber":78,"author":{"gitId":"miffi"},"content":" assertNotEquals(null, standardCommand);","lastModifiedDate":"2024-03-16"},{"lineNumber":79,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":80,"author":{"gitId":"miffi"},"content":" // different types -\u003e not equal","lastModifiedDate":"2024-03-16"},{"lineNumber":81,"author":{"gitId":"miffi"},"content":" assertNotEquals(standardCommand, new ClearCommand());","lastModifiedDate":"2024-03-16"},{"lineNumber":82,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":83,"author":{"gitId":"miffi"},"content":" // different index -\u003e not equal","lastModifiedDate":"2024-03-16"},{"lineNumber":84,"author":{"gitId":"miffi"},"content":" assertNotEquals(standardCommand, new UntagCommand(INDEX_SECOND_PERSON, TAGS));","lastModifiedDate":"2024-03-16"},{"lineNumber":85,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":86,"author":{"gitId":"miffi"},"content":" // different tags -\u003e not equal","lastModifiedDate":"2024-03-16"},{"lineNumber":87,"author":{"gitId":"miffi"},"content":" assertNotEquals(standardCommand, new UntagCommand(INDEX_FIRST_PERSON, List.of(TAG_OWES_MONEY)));","lastModifiedDate":"2024-03-16"},{"lineNumber":88,"author":{"gitId":"miffi"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":89,"author":{"gitId":"miffi"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"radeon2525":3,"miffi":86}},{"path":"src/test/java/seedu/address/logic/parser/AddressBookParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-06-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.commands.RedoCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"Derekljh"},"content":"import seedu.address.logic.commands.TagCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.commands.UndoCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"miffi"},"content":"import seedu.address.logic.commands.UntagCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-27"},{"lineNumber":33,"author":{"gitId":"Derekljh"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-06-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonUtil;","lastModifiedDate":"2017-06-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":42,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"radeon2525"},"content":" public void parseCommand_undoCommand_returnsUndoCommand() throws ParseException {","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"radeon2525"},"content":" Command command \u003d parser.parseCommand(\"undo\");","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"radeon2525"},"content":" assertTrue(command instanceof UndoCommand);","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"radeon2525"},"content":" public void parseCommand_redoCommand_returnsRedoCommand() throws ParseException {","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"radeon2525"},"content":" Command command \u003d parser.parseCommand(\"redo\");","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"radeon2525"},"content":" assertTrue(command instanceof RedoCommand);","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(PersonUtil.getAddCommand(person));","lastModifiedDate":"2017-06-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertEquals(new AddCommand(person), command);","lastModifiedDate":"2017-06-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" DeleteCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2017-06-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertEquals(new DeleteCommand(INDEX_FIRST_PERSON), command);","lastModifiedDate":"2017-06-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(person).build();","lastModifiedDate":"2017-06-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":" + INDEX_FIRST_PERSON.getOneBased() + \" \" + PersonUtil.getEditPersonDescriptorDetails(descriptor));","lastModifiedDate":"2018-03-26"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertEquals(new EditCommand(INDEX_FIRST_PERSON, descriptor), command);","lastModifiedDate":"2017-06-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2017-06-12"},{"lineNumber":92,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":" FindCommand.COMMAND_WORD + \" \" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2017-06-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertEquals(new FindCommand(new NameContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2017-06-12"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD) instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" 3\") instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":109,"author":{"gitId":"Derekljh"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":110,"author":{"gitId":"Derekljh"},"content":" public void parseCommand_tag() throws Exception {","lastModifiedDate":"2024-03-16"},{"lineNumber":111,"author":{"gitId":"Derekljh"},"content":" TagCommand expectedCommand \u003d new TagCommand(INDEX_FIRST_PERSON, List.of(new Tag(\"alpha\"), new Tag(\"beta\")));","lastModifiedDate":"2024-03-16"},{"lineNumber":112,"author":{"gitId":"Derekljh"},"content":" assertEquals(expectedCommand, parser.parseCommand(TagCommand.COMMAND_WORD","lastModifiedDate":"2024-03-16"},{"lineNumber":113,"author":{"gitId":"Derekljh"},"content":" + \" \"","lastModifiedDate":"2024-03-16"},{"lineNumber":114,"author":{"gitId":"Derekljh"},"content":" + INDEX_FIRST_PERSON.getOneBased()","lastModifiedDate":"2024-03-16"},{"lineNumber":115,"author":{"gitId":"The-Dudeski"},"content":" + \" tag:alpha tag:beta\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":116,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":117,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":118,"author":{"gitId":"miffi"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":119,"author":{"gitId":"miffi"},"content":" public void parseCommand_untag() throws Exception {","lastModifiedDate":"2024-03-16"},{"lineNumber":120,"author":{"gitId":"miffi"},"content":" var index \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-16"},{"lineNumber":121,"author":{"gitId":"miffi"},"content":" var expectedCommand \u003d new UntagCommand(index, List.of(new Tag(\"alpha\"), new Tag(\"beta\")));","lastModifiedDate":"2024-03-16"},{"lineNumber":122,"author":{"gitId":"miffi"},"content":" assertEquals(expectedCommand, parser.parseCommand(UntagCommand.COMMAND_WORD","lastModifiedDate":"2024-03-16"},{"lineNumber":123,"author":{"gitId":"miffi"},"content":" + \" \"","lastModifiedDate":"2024-03-16"},{"lineNumber":124,"author":{"gitId":"miffi"},"content":" + INDEX_FIRST_PERSON.getOneBased()","lastModifiedDate":"2024-03-16"},{"lineNumber":125,"author":{"gitId":"The-Dudeski"},"content":" + \" tag:alpha tag:beta\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":126,"author":{"gitId":"miffi"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":127,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":129,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":134,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":135,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":138,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"The-Dudeski":2,"Derekljh":10,"radeon2525":15,"miffi":10,"-":101}},{"path":"src/test/java/seedu/address/logic/parser/TagCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Derekljh"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"Derekljh"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"Derekljh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"Derekljh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"Derekljh"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"Derekljh"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"Derekljh"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"Derekljh"},"content":"import java.util.Collection;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"Derekljh"},"content":"import java.util.List;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"Derekljh"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"Derekljh"},"content":"import seedu.address.logic.commands.TagCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"Derekljh"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"Derekljh"},"content":"class TagCommandParserTest {","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"Derekljh"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"Derekljh"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, TagCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"Derekljh"},"content":" private static final Tag TAG1 \u003d new Tag(\"friend\");","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"Derekljh"},"content":" private static final Tag TAG2 \u003d new Tag(\"husband\");","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"Derekljh"},"content":" private static final Collection\u003cTag\u003e TAGS \u003d List.of(TAG1, TAG2);","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"Derekljh"},"content":" private final TagCommandParser parser \u003d new TagCommandParser();","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"Derekljh"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"Derekljh"},"content":" public void parse_validArgs_returnsTagCommand() {","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"Derekljh"},"content":" var index \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"Derekljh"},"content":" assertParseSuccess(parser, index.getOneBased() + TAG_DESC_FRIEND + TAG_DESC_HUSBAND,","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"Derekljh"},"content":" new TagCommand(index, TAGS));","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"Derekljh"},"content":" // order should not matter","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"Derekljh"},"content":" assertParseSuccess(parser, index.getOneBased() + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"Derekljh"},"content":" new TagCommand(index, TAGS));","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"Derekljh"},"content":" // one tag","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"Derekljh"},"content":" assertParseSuccess(parser, index.getOneBased() + TAG_DESC_HUSBAND,","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"Derekljh"},"content":" new TagCommand(index, List.of(TAG2)));","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"Derekljh"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"Derekljh"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"Derekljh"},"content":" // no tags given","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"Derekljh"},"content":" assertParseFailure(parser, \"1\",","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"Derekljh"},"content":" MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"Derekljh"},"content":" // no index given","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"Derekljh"},"content":" assertParseFailure(parser, \"t/friend\",","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"Derekljh"},"content":" MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"Derekljh"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"Derekljh":54}},{"path":"src/test/java/seedu/address/logic/parser/UntagCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"miffi"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"miffi"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"miffi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"miffi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"miffi"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"miffi"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"miffi"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"miffi"},"content":"import java.util.Collection;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"miffi"},"content":"import java.util.List;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"miffi"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"miffi"},"content":"import seedu.address.logic.commands.UntagCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"miffi"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"miffi"},"content":"class UntagCommandParserTest {","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"miffi"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"miffi"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, UntagCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"miffi"},"content":" private static final Tag TAG1 \u003d new Tag(\"friend\");","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"miffi"},"content":" private static final Tag TAG2 \u003d new Tag(\"husband\");","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"miffi"},"content":" private static final Collection\u003cTag\u003e TAGS \u003d List.of(TAG1, TAG2);","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"miffi"},"content":" private final UntagCommandParser parser \u003d new UntagCommandParser();","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"miffi"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"miffi"},"content":" public void parse_validArgs_returnsUntagCommand() {","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"miffi"},"content":" var index \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"miffi"},"content":" assertParseSuccess(parser, index.getOneBased() + TAG_DESC_FRIEND + TAG_DESC_HUSBAND,","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"miffi"},"content":" new UntagCommand(index, TAGS));","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"miffi"},"content":" // order should not matter","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"miffi"},"content":" assertParseSuccess(parser, index.getOneBased() + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"miffi"},"content":" new UntagCommand(index, TAGS));","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"miffi"},"content":" // one tag","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"miffi"},"content":" assertParseSuccess(parser, index.getOneBased() + TAG_DESC_HUSBAND,","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"miffi"},"content":" new UntagCommand(index, List.of(TAG2)));","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"miffi"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"miffi"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"miffi"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"miffi"},"content":" // no tags given","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"miffi"},"content":" assertParseFailure(parser, \"1\",","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"miffi"},"content":" MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"miffi"},"content":" // no index given","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"miffi"},"content":" assertParseFailure(parser, \"t/friend\",","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"miffi"},"content":" MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"miffi"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"miffi"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"miffi":54}},{"path":"src/test/java/seedu/address/model/AddressBookTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-12-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-04-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2017-07-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2016-12-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2016-12-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2016-12-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":19,"author":{"gitId":"radeon2525"},"content":"import javafx.beans.InvalidationListener;","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"radeon2525"},"content":"import javafx.beans.Observable;","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2016-12-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-12-24"},{"lineNumber":23,"author":{"gitId":"radeon2525"},"content":"import seedu.address.commons.util.InvalidationListenerManager;","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2018-08-07"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-04-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":28,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class AddressBookTest {","lastModifiedDate":"2016-12-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2016-12-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2016-12-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), addressBook.getPersonList());","lastModifiedDate":"2016-12-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void resetData_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.resetData(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":43,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"radeon2525"},"content":" public void removeListener_success() {","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"radeon2525"},"content":" AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"radeon2525"},"content":" InvalidationListenerManager manager \u003d addressBook.invalidationListenerManager;","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"radeon2525"},"content":" // Create a listener","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"radeon2525"},"content":" InvalidationListener listener \u003d new InvalidationListener() {","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"radeon2525"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"radeon2525"},"content":" public void invalidated(Observable observable) {","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"radeon2525"},"content":" // Do nothing","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"radeon2525"},"content":" };","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"radeon2525"},"content":" // Remove the listener","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"radeon2525"},"content":" addressBook.removeListener(listener);","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"radeon2525"},"content":" // Ensure the listener is removed","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"radeon2525"},"content":" assertFalse(manager.listeners.contains(listener));","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"radeon2525"},"content":" public void addListener_success() {","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"radeon2525"},"content":" AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"radeon2525"},"content":" InvalidationListenerManager manager \u003d addressBook.invalidationListenerManager;","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"radeon2525"},"content":" // Create a listener","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"radeon2525"},"content":" TestInvalidationListener listener \u003d new TestInvalidationListener();","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"radeon2525"},"content":" // Add the listener","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"radeon2525"},"content":" addressBook.addListener(listener);","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"radeon2525"},"content":" // Trigger an invalidation event","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"radeon2525"},"content":" addressBook.indicateModified();","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"radeon2525"},"content":" // Ensure the listener is notified","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"radeon2525"},"content":" assertTrue(listener.isInvalidated());","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"radeon2525"},"content":" // Define a test InvalidationListener implementation","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"radeon2525"},"content":" private static class TestInvalidationListener implements InvalidationListener {","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"radeon2525"},"content":" private boolean invalidated \u003d false;","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"radeon2525"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"radeon2525"},"content":" public void invalidated(Observable observable) {","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"radeon2525"},"content":" invalidated \u003d true;","lastModifiedDate":"2024-03-20"},{"lineNumber":88,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":89,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":90,"author":{"gitId":"radeon2525"},"content":" public boolean isInvalidated() {","lastModifiedDate":"2024-03-20"},{"lineNumber":91,"author":{"gitId":"radeon2525"},"content":" return invalidated;","lastModifiedDate":"2024-03-20"},{"lineNumber":92,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":93,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":94,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":96,"author":{"gitId":"-"},"content":" public void resetData_withValidReadOnlyAddressBook_replacesData() {","lastModifiedDate":"2016-12-24"},{"lineNumber":97,"author":{"gitId":"-"},"content":" AddressBook newData \u003d getTypicalAddressBook();","lastModifiedDate":"2017-07-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" addressBook.resetData(newData);","lastModifiedDate":"2016-12-24"},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertEquals(newData, addressBook);","lastModifiedDate":"2016-12-24"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":103,"author":{"gitId":"-"},"content":" public void resetData_withDuplicatePersons_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-07"},{"lineNumber":104,"author":{"gitId":"-"},"content":" // Two persons with the same identity fields","lastModifiedDate":"2018-04-19"},{"lineNumber":105,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2018-04-19"},{"lineNumber":106,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-04-19"},{"lineNumber":107,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e newPersons \u003d Arrays.asList(ALICE, editedAlice);","lastModifiedDate":"2018-04-19"},{"lineNumber":108,"author":{"gitId":"-"},"content":" AddressBookStub newData \u003d new AddressBookStub(newPersons);","lastModifiedDate":"2018-03-29"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e addressBook.resetData(newData));","lastModifiedDate":"2019-03-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":114,"author":{"gitId":"-"},"content":" public void hasPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-06"},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.hasPerson(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":118,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":119,"author":{"gitId":"-"},"content":" public void hasPerson_personNotInAddressBook_returnsFalse() {","lastModifiedDate":"2018-08-06"},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertFalse(addressBook.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":124,"author":{"gitId":"-"},"content":" public void hasPerson_personInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07"},{"lineNumber":125,"author":{"gitId":"-"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2018-08-06"},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertTrue(addressBook.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":129,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":130,"author":{"gitId":"-"},"content":" public void hasPerson_personWithSameIdentityFieldsInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07"},{"lineNumber":131,"author":{"gitId":"-"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2018-08-06"},{"lineNumber":132,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2018-08-06"},{"lineNumber":133,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-06"},{"lineNumber":134,"author":{"gitId":"-"},"content":" assertTrue(addressBook.hasPerson(editedAlice));","lastModifiedDate":"2018-08-06"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":137,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":138,"author":{"gitId":"-"},"content":" public void getPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":139,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e addressBook.getPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":142,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":" String expected \u003d AddressBook.class.getCanonicalName() + \"{persons\u003d\" + addressBook.getPersonList() + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":" assertEquals(expected, addressBook.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-24"},{"lineNumber":149,"author":{"gitId":"-"},"content":" * A stub ReadOnlyAddressBook whose persons list can violate interface constraints.","lastModifiedDate":"2018-03-29"},{"lineNumber":150,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-24"},{"lineNumber":151,"author":{"gitId":"-"},"content":" private static class AddressBookStub implements ReadOnlyAddressBook {","lastModifiedDate":"2016-12-24"},{"lineNumber":152,"author":{"gitId":"-"},"content":" private final ObservableList\u003cPerson\u003e persons \u003d FXCollections.observableArrayList();","lastModifiedDate":"2018-01-10"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":154,"author":{"gitId":"-"},"content":" AddressBookStub(Collection\u003cPerson\u003e persons) {","lastModifiedDate":"2018-03-29"},{"lineNumber":155,"author":{"gitId":"-"},"content":" this.persons.setAll(persons);","lastModifiedDate":"2016-12-24"},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":158,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-24"},{"lineNumber":159,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":160,"author":{"gitId":"-"},"content":" return persons;","lastModifiedDate":"2016-12-24"},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":162,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":164,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-24"}],"authorContributionMap":{"radeon2525":56,"-":108}},{"path":"src/test/java/seedu/address/model/ModelManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2017-05-31"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"radeon2525"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2017-07-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2017-07-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-31"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"radeon2525"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.testutil.AddressBookBuilder;","lastModifiedDate":"2017-05-31"},{"lineNumber":22,"author":{"gitId":"radeon2525"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"radeon2525"},"content":"import seedu.address.testutil.TypicalPersons;","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class ModelManagerTest {","lastModifiedDate":"2017-05-31"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private ModelManager modelManager \u003d new ModelManager();","lastModifiedDate":"2018-08-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2018-11-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertEquals(new UserPrefs(), modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertEquals(new GuiSettings(), modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertEquals(new AddressBook(), new AddressBook(modelManager.getAddressBook()));","lastModifiedDate":"2018-11-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void setUserPrefs_nullUserPrefs_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setUserPrefs(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"radeon2525"},"content":" public void setPerson_personInAddressBook_success() {","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"radeon2525"},"content":" // Create initial state","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"radeon2525"},"content":" ReadOnlyAddressBook initialAddressBook \u003d modelManager.getAddressBook();","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"radeon2525"},"content":" ReadOnlyUserPrefs initialUserPrefs \u003d modelManager.getUserPrefs();","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"radeon2525"},"content":" // Add a valid person to the address book","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"radeon2525"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"radeon2525"},"content":" modelManager.addPerson(validPerson);","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"radeon2525"},"content":" // Create an edited version of the person","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"radeon2525"},"content":" Person editedPerson \u003d new PersonBuilder(validPerson).withName(\"New Name\").build();","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"radeon2525"},"content":" // Set edited person in the model","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"radeon2525"},"content":" modelManager.setPerson(validPerson, editedPerson);","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"radeon2525"},"content":" // Check if the edited person is in the filteredPersons list","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"radeon2525"},"content":" assertEquals(editedPerson, modelManager.getFilteredPersonList().get(0));","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"radeon2525"},"content":" assertNotEquals(validPerson, modelManager.getFilteredPersonList().get(0));","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"radeon2525"},"content":" // Ensure that the address book\u0027s state was not changed","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"radeon2525"},"content":" assertEquals(initialAddressBook, modelManager.getAddressBook());","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"radeon2525"},"content":" // Ensure that the user prefs remain unchanged","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"radeon2525"},"content":" assertEquals(initialUserPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void setUserPrefs_validUserPrefs_copiesUserPrefs() {","lastModifiedDate":"2018-12-06"},{"lineNumber":70,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"address/book/file/path\"));","lastModifiedDate":"2018-11-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(new GuiSettings(1, 2, 3, 4));","lastModifiedDate":"2018-11-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" modelManager.setUserPrefs(userPrefs);","lastModifiedDate":"2018-11-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertEquals(userPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":76,"author":{"gitId":"-"},"content":" // Modifying userPrefs should not modify modelManager\u0027s userPrefs","lastModifiedDate":"2018-12-06"},{"lineNumber":77,"author":{"gitId":"-"},"content":" UserPrefs oldUserPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":78,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"new/address/book/file/path\"));","lastModifiedDate":"2018-12-06"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertEquals(oldUserPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-12-06"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void setGuiSettings_nullGuiSettings_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setGuiSettings(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void setGuiSettings_validGuiSettings_setsGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(1, 2, 3, 4);","lastModifiedDate":"2018-11-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":" modelManager.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertEquals(guiSettings, modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setAddressBookFilePath(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_validPath_setsAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":101,"author":{"gitId":"-"},"content":" Path path \u003d Paths.get(\"address/book/file/path\");","lastModifiedDate":"2018-11-27"},{"lineNumber":102,"author":{"gitId":"-"},"content":" modelManager.setAddressBookFilePath(path);","lastModifiedDate":"2018-11-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertEquals(path, modelManager.getAddressBookFilePath());","lastModifiedDate":"2018-11-27"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public void hasPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-06"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasPerson(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":112,"author":{"gitId":"-"},"content":" public void hasPerson_personNotInAddressBook_returnsFalse() {","lastModifiedDate":"2018-08-06"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertFalse(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":117,"author":{"gitId":"-"},"content":" public void hasPerson_personInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07"},{"lineNumber":118,"author":{"gitId":"-"},"content":" modelManager.addPerson(ALICE);","lastModifiedDate":"2018-08-06"},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertTrue(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":122,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":124,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e modelManager.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":128,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":129,"author":{"gitId":"radeon2525"},"content":" public void constructor_validArguments_success() {","lastModifiedDate":"2024-03-19"},{"lineNumber":130,"author":{"gitId":"radeon2525"},"content":" // Create a ReadOnlyAddressBook with typical persons","lastModifiedDate":"2024-03-19"},{"lineNumber":131,"author":{"gitId":"radeon2525"},"content":" ReadOnlyAddressBook addressBook \u003d TypicalPersons.getTypicalAddressBook();","lastModifiedDate":"2024-03-19"},{"lineNumber":132,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":133,"author":{"gitId":"radeon2525"},"content":" // Create a ReadOnlyUserPrefs with typical preferences","lastModifiedDate":"2024-03-19"},{"lineNumber":134,"author":{"gitId":"radeon2525"},"content":" ReadOnlyUserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2024-03-19"},{"lineNumber":135,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":136,"author":{"gitId":"radeon2525"},"content":" // Create a ModelManager instance using the constructor with arguments","lastModifiedDate":"2024-03-19"},{"lineNumber":137,"author":{"gitId":"radeon2525"},"content":" ModelManager modelManager \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2024-03-19"},{"lineNumber":138,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":139,"author":{"gitId":"radeon2525"},"content":" // Verify that the versionedAddressBook is correctly initialized with the data from the ReadOnlyAddressBook","lastModifiedDate":"2024-03-19"},{"lineNumber":140,"author":{"gitId":"radeon2525"},"content":" assertEquals(addressBook, modelManager.getAddressBook());","lastModifiedDate":"2024-03-19"},{"lineNumber":141,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":142,"author":{"gitId":"radeon2525"},"content":" // Verify that the userPrefs is correctly initialized with the data from the ReadOnlyUserPrefs","lastModifiedDate":"2024-03-19"},{"lineNumber":143,"author":{"gitId":"radeon2525"},"content":" assertEquals(userPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2024-03-19"},{"lineNumber":144,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":145,"author":{"gitId":"radeon2525"},"content":" assertTrue(modelManager.getFilteredPersonList().containsAll(addressBook.getPersonList()));","lastModifiedDate":"2024-03-19"},{"lineNumber":146,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":147,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":148,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":149,"author":{"gitId":"radeon2525"},"content":" public void setUserPrefs_validUserPrefs_success() {","lastModifiedDate":"2024-03-19"},{"lineNumber":150,"author":{"gitId":"radeon2525"},"content":" // Create initial user preferences","lastModifiedDate":"2024-03-19"},{"lineNumber":151,"author":{"gitId":"radeon2525"},"content":" UserPrefs initialUserPrefs \u003d new UserPrefs();","lastModifiedDate":"2024-03-19"},{"lineNumber":152,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":153,"author":{"gitId":"radeon2525"},"content":" // Create a new set of user preferences","lastModifiedDate":"2024-03-19"},{"lineNumber":154,"author":{"gitId":"radeon2525"},"content":" UserPrefs newUserPrefs \u003d new UserPrefs();","lastModifiedDate":"2024-03-19"},{"lineNumber":155,"author":{"gitId":"radeon2525"},"content":" GuiSettings defaultGuiSettings \u003d new GuiSettings(800, 600, 0, 0);","lastModifiedDate":"2024-03-19"},{"lineNumber":156,"author":{"gitId":"radeon2525"},"content":" newUserPrefs.setGuiSettings(defaultGuiSettings);","lastModifiedDate":"2024-03-19"},{"lineNumber":157,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":158,"author":{"gitId":"radeon2525"},"content":" // Create a ModelManager instance","lastModifiedDate":"2024-03-19"},{"lineNumber":159,"author":{"gitId":"radeon2525"},"content":" ModelManager modelManager \u003d new ModelManager();","lastModifiedDate":"2024-03-19"},{"lineNumber":160,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":161,"author":{"gitId":"radeon2525"},"content":" // Set the user preferences","lastModifiedDate":"2024-03-19"},{"lineNumber":162,"author":{"gitId":"radeon2525"},"content":" modelManager.setUserPrefs(newUserPrefs);","lastModifiedDate":"2024-03-19"},{"lineNumber":163,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":164,"author":{"gitId":"radeon2525"},"content":" // Verify that the user preferences in the ModelManager are updated","lastModifiedDate":"2024-03-19"},{"lineNumber":165,"author":{"gitId":"radeon2525"},"content":" ReadOnlyUserPrefs retrievedUserPrefs \u003d modelManager.getUserPrefs();","lastModifiedDate":"2024-03-19"},{"lineNumber":166,"author":{"gitId":"radeon2525"},"content":" assertEquals(newUserPrefs, retrievedUserPrefs);","lastModifiedDate":"2024-03-19"},{"lineNumber":167,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":168,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":169,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-31"},{"lineNumber":170,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":171,"author":{"gitId":"-"},"content":" AddressBook addressBook \u003d new AddressBookBuilder().withPerson(ALICE).withPerson(BENSON).build();","lastModifiedDate":"2017-07-19"},{"lineNumber":172,"author":{"gitId":"-"},"content":" AddressBook differentAddressBook \u003d new AddressBook();","lastModifiedDate":"2017-05-31"},{"lineNumber":173,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":175,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":176,"author":{"gitId":"-"},"content":" modelManager \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2018-08-06"},{"lineNumber":177,"author":{"gitId":"-"},"content":" ModelManager modelManagerCopy \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2017-05-31"},{"lineNumber":178,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManagerCopy));","lastModifiedDate":"2017-05-31"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":180,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":181,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManager));","lastModifiedDate":"2017-05-31"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":183,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":184,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(null));","lastModifiedDate":"2017-05-31"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":186,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":187,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(5));","lastModifiedDate":"2017-05-31"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":189,"author":{"gitId":"-"},"content":" // different addressBook -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":190,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(differentAddressBook, userPrefs)));","lastModifiedDate":"2017-05-31"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":192,"author":{"gitId":"-"},"content":" // different filteredList -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":193,"author":{"gitId":"-"},"content":" String[] keywords \u003d ALICE.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-19"},{"lineNumber":194,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(keywords)));","lastModifiedDate":"2017-06-12"},{"lineNumber":195,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, userPrefs)));","lastModifiedDate":"2017-05-31"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":197,"author":{"gitId":"-"},"content":" // resets modelManager to initial state for upcoming tests","lastModifiedDate":"2017-08-05"},{"lineNumber":198,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":200,"author":{"gitId":"-"},"content":" // different userPrefs -\u003e returns false","lastModifiedDate":"2018-11-27"},{"lineNumber":201,"author":{"gitId":"-"},"content":" UserPrefs differentUserPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":202,"author":{"gitId":"-"},"content":" differentUserPrefs.setAddressBookFilePath(Paths.get(\"differentFilePath\"));","lastModifiedDate":"2018-08-09"},{"lineNumber":203,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, differentUserPrefs)));","lastModifiedDate":"2018-11-27"},{"lineNumber":204,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":205,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-31"}],"authorContributionMap":{"radeon2525":73,"-":132}},{"path":"src/test/java/seedu/address/model/VersionedAddressBookTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"radeon2525"},"content":"package seedu.address.model;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"radeon2525"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"radeon2525"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"radeon2525"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"radeon2525"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"radeon2525"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"radeon2525"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"radeon2525"},"content":"import static seedu.address.testutil.TypicalPersons.CARL;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"radeon2525"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"radeon2525"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"radeon2525"},"content":"import java.util.List;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"radeon2525"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"radeon2525"},"content":"import seedu.address.testutil.AddressBookBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"radeon2525"},"content":"public class VersionedAddressBookTest {","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"radeon2525"},"content":" private final ReadOnlyAddressBook addressBookWithAmy \u003d new AddressBookBuilder().withPerson(AMY).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"radeon2525"},"content":" private final ReadOnlyAddressBook addressBookWithBob \u003d new AddressBookBuilder().withPerson(BOB).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"radeon2525"},"content":" private final ReadOnlyAddressBook addressBookWithCarl \u003d new AddressBookBuilder().withPerson(CARL).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"radeon2525"},"content":" private final ReadOnlyAddressBook emptyAddressBook \u003d new AddressBookBuilder().build();","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"radeon2525"},"content":" public void commit_singleAddressBook_noStatesRemovedCurrentStateSaved() {","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook \u003d prepareAddressBookList(emptyAddressBook);","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"radeon2525"},"content":" versionedAddressBook.commit();","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"radeon2525"},"content":" assertAddressBookListStatus(versionedAddressBook,","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"radeon2525"},"content":" Collections.singletonList(emptyAddressBook),","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"radeon2525"},"content":" emptyAddressBook,","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"radeon2525"},"content":" Collections.emptyList());","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"radeon2525"},"content":" public void equals_sameInstance_returnsTrue() {","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook \u003d new VersionedAddressBook(new AddressBook());","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"radeon2525"},"content":" assertTrue(versionedAddressBook.equals(versionedAddressBook));","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"radeon2525"},"content":" public void equals_differentClass_returnsFalse() {","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook \u003d new VersionedAddressBook(new AddressBook());","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"radeon2525"},"content":" assertFalse(versionedAddressBook.equals(new Object()));","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"radeon2525"},"content":" public void equals_null_returnsFalse() {","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook \u003d new VersionedAddressBook(new AddressBook());","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"radeon2525"},"content":" assertFalse(versionedAddressBook.equals(null));","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"radeon2525"},"content":" public void equals_differentState_returnsFalse() {","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook1 \u003d new VersionedAddressBook(new AddressBook());","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook2 \u003d new VersionedAddressBook(new AddressBook());","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"radeon2525"},"content":" versionedAddressBook2.commit();","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"radeon2525"},"content":" assertFalse(versionedAddressBook1.equals(versionedAddressBook2));","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"radeon2525"},"content":" public void equals_sameState_returnsTrue() {","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook1 \u003d new VersionedAddressBook(new AddressBook());","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook2 \u003d new VersionedAddressBook(new AddressBook());","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"radeon2525"},"content":" assertTrue(versionedAddressBook1.equals(versionedAddressBook2));","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"radeon2525"},"content":" public void commit_multipleAddressBookPointerAtEndOfStateList_noStatesRemovedCurrentStateSaved() {","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook \u003d prepareAddressBookList(","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"radeon2525"},"content":" emptyAddressBook, addressBookWithAmy, addressBookWithBob);","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":75,"author":{"gitId":"radeon2525"},"content":" versionedAddressBook.commit();","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"radeon2525"},"content":" assertAddressBookListStatus(versionedAddressBook,","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"radeon2525"},"content":" Arrays.asList(emptyAddressBook, addressBookWithAmy, addressBookWithBob),","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"radeon2525"},"content":" addressBookWithBob,","lastModifiedDate":"2024-03-19"},{"lineNumber":79,"author":{"gitId":"radeon2525"},"content":" Collections.emptyList());","lastModifiedDate":"2024-03-19"},{"lineNumber":80,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":81,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":82,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":83,"author":{"gitId":"radeon2525"},"content":" public void commit_multipleAddressBookPointerNotAtEndOfStateList_statesAfterPointerRemovedCurrentStateSaved() {","lastModifiedDate":"2024-03-19"},{"lineNumber":84,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook \u003d prepareAddressBookList(","lastModifiedDate":"2024-03-19"},{"lineNumber":85,"author":{"gitId":"radeon2525"},"content":" emptyAddressBook, addressBookWithAmy, addressBookWithBob);","lastModifiedDate":"2024-03-19"},{"lineNumber":86,"author":{"gitId":"radeon2525"},"content":" shiftCurrentStatePointerLeftwards(versionedAddressBook, 2);","lastModifiedDate":"2024-03-19"},{"lineNumber":87,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":88,"author":{"gitId":"radeon2525"},"content":" versionedAddressBook.commit();","lastModifiedDate":"2024-03-19"},{"lineNumber":89,"author":{"gitId":"radeon2525"},"content":" assertAddressBookListStatus(versionedAddressBook,","lastModifiedDate":"2024-03-19"},{"lineNumber":90,"author":{"gitId":"radeon2525"},"content":" Collections.singletonList(emptyAddressBook),","lastModifiedDate":"2024-03-19"},{"lineNumber":91,"author":{"gitId":"radeon2525"},"content":" emptyAddressBook,","lastModifiedDate":"2024-03-19"},{"lineNumber":92,"author":{"gitId":"radeon2525"},"content":" Collections.emptyList());","lastModifiedDate":"2024-03-19"},{"lineNumber":93,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":94,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":95,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":96,"author":{"gitId":"radeon2525"},"content":" public void canUndo_multipleAddressBookPointerAtEndOfStateList_returnsTrue() {","lastModifiedDate":"2024-03-19"},{"lineNumber":97,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook \u003d prepareAddressBookList(","lastModifiedDate":"2024-03-19"},{"lineNumber":98,"author":{"gitId":"radeon2525"},"content":" emptyAddressBook, addressBookWithAmy, addressBookWithBob);","lastModifiedDate":"2024-03-19"},{"lineNumber":99,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":100,"author":{"gitId":"radeon2525"},"content":" assertTrue(versionedAddressBook.canUndo());","lastModifiedDate":"2024-03-19"},{"lineNumber":101,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":102,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":103,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":104,"author":{"gitId":"radeon2525"},"content":" public void canUndo_multipleAddressBookPointerAtStartOfStateList_returnsTrue() {","lastModifiedDate":"2024-03-19"},{"lineNumber":105,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook \u003d prepareAddressBookList(","lastModifiedDate":"2024-03-19"},{"lineNumber":106,"author":{"gitId":"radeon2525"},"content":" emptyAddressBook, addressBookWithAmy, addressBookWithBob);","lastModifiedDate":"2024-03-19"},{"lineNumber":107,"author":{"gitId":"radeon2525"},"content":" shiftCurrentStatePointerLeftwards(versionedAddressBook, 1);","lastModifiedDate":"2024-03-19"},{"lineNumber":108,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":109,"author":{"gitId":"radeon2525"},"content":" assertTrue(versionedAddressBook.canUndo());","lastModifiedDate":"2024-03-19"},{"lineNumber":110,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":111,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":112,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":113,"author":{"gitId":"radeon2525"},"content":" public void canUndo_singleAddressBook_returnsFalse() {","lastModifiedDate":"2024-03-19"},{"lineNumber":114,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook \u003d prepareAddressBookList(emptyAddressBook);","lastModifiedDate":"2024-03-19"},{"lineNumber":115,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":116,"author":{"gitId":"radeon2525"},"content":" assertFalse(versionedAddressBook.canUndo());","lastModifiedDate":"2024-03-19"},{"lineNumber":117,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":118,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":119,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":120,"author":{"gitId":"radeon2525"},"content":" public void canUndo_multipleAddressBookPointerAtStartOfStateList_returnsFalse() {","lastModifiedDate":"2024-03-19"},{"lineNumber":121,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook \u003d prepareAddressBookList(","lastModifiedDate":"2024-03-19"},{"lineNumber":122,"author":{"gitId":"radeon2525"},"content":" emptyAddressBook, addressBookWithAmy, addressBookWithBob);","lastModifiedDate":"2024-03-19"},{"lineNumber":123,"author":{"gitId":"radeon2525"},"content":" shiftCurrentStatePointerLeftwards(versionedAddressBook, 2);","lastModifiedDate":"2024-03-19"},{"lineNumber":124,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":125,"author":{"gitId":"radeon2525"},"content":" assertFalse(versionedAddressBook.canUndo());","lastModifiedDate":"2024-03-19"},{"lineNumber":126,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":127,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":128,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":129,"author":{"gitId":"radeon2525"},"content":" public void canRedo_multipleAddressBookPointerNotAtEndOfStateList_returnsTrue() {","lastModifiedDate":"2024-03-19"},{"lineNumber":130,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook \u003d prepareAddressBookList(","lastModifiedDate":"2024-03-19"},{"lineNumber":131,"author":{"gitId":"radeon2525"},"content":" emptyAddressBook, addressBookWithAmy, addressBookWithBob);","lastModifiedDate":"2024-03-19"},{"lineNumber":132,"author":{"gitId":"radeon2525"},"content":" shiftCurrentStatePointerLeftwards(versionedAddressBook, 1);","lastModifiedDate":"2024-03-19"},{"lineNumber":133,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":134,"author":{"gitId":"radeon2525"},"content":" assertTrue(versionedAddressBook.canRedo());","lastModifiedDate":"2024-03-19"},{"lineNumber":135,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":136,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":137,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":138,"author":{"gitId":"radeon2525"},"content":" public void canRedo_multipleAddressBookPointerAtStartOfStateList_returnsTrue() {","lastModifiedDate":"2024-03-19"},{"lineNumber":139,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook \u003d prepareAddressBookList(","lastModifiedDate":"2024-03-19"},{"lineNumber":140,"author":{"gitId":"radeon2525"},"content":" emptyAddressBook, addressBookWithAmy, addressBookWithBob);","lastModifiedDate":"2024-03-19"},{"lineNumber":141,"author":{"gitId":"radeon2525"},"content":" shiftCurrentStatePointerLeftwards(versionedAddressBook, 2);","lastModifiedDate":"2024-03-19"},{"lineNumber":142,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":143,"author":{"gitId":"radeon2525"},"content":" assertTrue(versionedAddressBook.canRedo());","lastModifiedDate":"2024-03-19"},{"lineNumber":144,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":145,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":146,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":147,"author":{"gitId":"radeon2525"},"content":" public void canRedo_singleAddressBook_returnsFalse() {","lastModifiedDate":"2024-03-19"},{"lineNumber":148,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook \u003d prepareAddressBookList(emptyAddressBook);","lastModifiedDate":"2024-03-19"},{"lineNumber":149,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":150,"author":{"gitId":"radeon2525"},"content":" assertFalse(versionedAddressBook.canRedo());","lastModifiedDate":"2024-03-19"},{"lineNumber":151,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":152,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":153,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":154,"author":{"gitId":"radeon2525"},"content":" public void canRedo_multipleAddressBookPointerAtEndOfStateList_returnsFalse() {","lastModifiedDate":"2024-03-19"},{"lineNumber":155,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook \u003d prepareAddressBookList(","lastModifiedDate":"2024-03-19"},{"lineNumber":156,"author":{"gitId":"radeon2525"},"content":" emptyAddressBook, addressBookWithAmy, addressBookWithBob);","lastModifiedDate":"2024-03-19"},{"lineNumber":157,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":158,"author":{"gitId":"radeon2525"},"content":" assertFalse(versionedAddressBook.canRedo());","lastModifiedDate":"2024-03-19"},{"lineNumber":159,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":160,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":161,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":162,"author":{"gitId":"radeon2525"},"content":" public void undo_multipleAddressBookPointerAtEndOfStateList_success() {","lastModifiedDate":"2024-03-19"},{"lineNumber":163,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook \u003d prepareAddressBookList(","lastModifiedDate":"2024-03-19"},{"lineNumber":164,"author":{"gitId":"radeon2525"},"content":" emptyAddressBook, addressBookWithAmy, addressBookWithBob);","lastModifiedDate":"2024-03-19"},{"lineNumber":165,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":166,"author":{"gitId":"radeon2525"},"content":" versionedAddressBook.undo();","lastModifiedDate":"2024-03-19"},{"lineNumber":167,"author":{"gitId":"radeon2525"},"content":" assertAddressBookListStatus(versionedAddressBook,","lastModifiedDate":"2024-03-19"},{"lineNumber":168,"author":{"gitId":"radeon2525"},"content":" Collections.singletonList(emptyAddressBook),","lastModifiedDate":"2024-03-19"},{"lineNumber":169,"author":{"gitId":"radeon2525"},"content":" addressBookWithAmy,","lastModifiedDate":"2024-03-19"},{"lineNumber":170,"author":{"gitId":"radeon2525"},"content":" Collections.singletonList(addressBookWithBob));","lastModifiedDate":"2024-03-19"},{"lineNumber":171,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":172,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":173,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":174,"author":{"gitId":"radeon2525"},"content":" public void undo_multipleAddressBookPointerNotAtStartOfStateList_success() {","lastModifiedDate":"2024-03-19"},{"lineNumber":175,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook \u003d prepareAddressBookList(","lastModifiedDate":"2024-03-19"},{"lineNumber":176,"author":{"gitId":"radeon2525"},"content":" emptyAddressBook, addressBookWithAmy, addressBookWithBob);","lastModifiedDate":"2024-03-19"},{"lineNumber":177,"author":{"gitId":"radeon2525"},"content":" shiftCurrentStatePointerLeftwards(versionedAddressBook, 1);","lastModifiedDate":"2024-03-19"},{"lineNumber":178,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":179,"author":{"gitId":"radeon2525"},"content":" versionedAddressBook.undo();","lastModifiedDate":"2024-03-19"},{"lineNumber":180,"author":{"gitId":"radeon2525"},"content":" assertAddressBookListStatus(versionedAddressBook,","lastModifiedDate":"2024-03-19"},{"lineNumber":181,"author":{"gitId":"radeon2525"},"content":" Collections.emptyList(),","lastModifiedDate":"2024-03-19"},{"lineNumber":182,"author":{"gitId":"radeon2525"},"content":" emptyAddressBook,","lastModifiedDate":"2024-03-19"},{"lineNumber":183,"author":{"gitId":"radeon2525"},"content":" Arrays.asList(addressBookWithAmy, addressBookWithBob));","lastModifiedDate":"2024-03-19"},{"lineNumber":184,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":185,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":186,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":187,"author":{"gitId":"radeon2525"},"content":" public void undo_singleAddressBook_throwsNoUndoableStateException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":188,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook \u003d prepareAddressBookList(emptyAddressBook);","lastModifiedDate":"2024-03-19"},{"lineNumber":189,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":190,"author":{"gitId":"radeon2525"},"content":" assertThrows(VersionedAddressBook.NoUndoableStateException.class, versionedAddressBook::undo);","lastModifiedDate":"2024-03-19"},{"lineNumber":191,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":192,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":193,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":194,"author":{"gitId":"radeon2525"},"content":" public void undo_multipleAddressBookPointerAtStartOfStateList_throwsNoUndoableStateException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":195,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook \u003d prepareAddressBookList(","lastModifiedDate":"2024-03-19"},{"lineNumber":196,"author":{"gitId":"radeon2525"},"content":" emptyAddressBook, addressBookWithAmy, addressBookWithBob);","lastModifiedDate":"2024-03-19"},{"lineNumber":197,"author":{"gitId":"radeon2525"},"content":" shiftCurrentStatePointerLeftwards(versionedAddressBook, 2);","lastModifiedDate":"2024-03-19"},{"lineNumber":198,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":199,"author":{"gitId":"radeon2525"},"content":" assertThrows(VersionedAddressBook.NoUndoableStateException.class, versionedAddressBook::undo);","lastModifiedDate":"2024-03-19"},{"lineNumber":200,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":201,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":202,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":203,"author":{"gitId":"radeon2525"},"content":" public void redo_multipleAddressBookPointerNotAtEndOfStateList_success() {","lastModifiedDate":"2024-03-19"},{"lineNumber":204,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook \u003d prepareAddressBookList(","lastModifiedDate":"2024-03-19"},{"lineNumber":205,"author":{"gitId":"radeon2525"},"content":" emptyAddressBook, addressBookWithAmy, addressBookWithBob);","lastModifiedDate":"2024-03-19"},{"lineNumber":206,"author":{"gitId":"radeon2525"},"content":" shiftCurrentStatePointerLeftwards(versionedAddressBook, 1);","lastModifiedDate":"2024-03-19"},{"lineNumber":207,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":208,"author":{"gitId":"radeon2525"},"content":" versionedAddressBook.redo();","lastModifiedDate":"2024-03-19"},{"lineNumber":209,"author":{"gitId":"radeon2525"},"content":" assertAddressBookListStatus(versionedAddressBook,","lastModifiedDate":"2024-03-19"},{"lineNumber":210,"author":{"gitId":"radeon2525"},"content":" Arrays.asList(emptyAddressBook, addressBookWithAmy),","lastModifiedDate":"2024-03-19"},{"lineNumber":211,"author":{"gitId":"radeon2525"},"content":" addressBookWithBob,","lastModifiedDate":"2024-03-19"},{"lineNumber":212,"author":{"gitId":"radeon2525"},"content":" Collections.emptyList());","lastModifiedDate":"2024-03-19"},{"lineNumber":213,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":214,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":215,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":216,"author":{"gitId":"radeon2525"},"content":" public void redo_multipleAddressBookPointerAtStartOfStateList_success() {","lastModifiedDate":"2024-03-19"},{"lineNumber":217,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook \u003d prepareAddressBookList(","lastModifiedDate":"2024-03-19"},{"lineNumber":218,"author":{"gitId":"radeon2525"},"content":" emptyAddressBook, addressBookWithAmy, addressBookWithBob);","lastModifiedDate":"2024-03-19"},{"lineNumber":219,"author":{"gitId":"radeon2525"},"content":" shiftCurrentStatePointerLeftwards(versionedAddressBook, 2);","lastModifiedDate":"2024-03-19"},{"lineNumber":220,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":221,"author":{"gitId":"radeon2525"},"content":" versionedAddressBook.redo();","lastModifiedDate":"2024-03-19"},{"lineNumber":222,"author":{"gitId":"radeon2525"},"content":" assertAddressBookListStatus(versionedAddressBook,","lastModifiedDate":"2024-03-19"},{"lineNumber":223,"author":{"gitId":"radeon2525"},"content":" Collections.singletonList(emptyAddressBook),","lastModifiedDate":"2024-03-19"},{"lineNumber":224,"author":{"gitId":"radeon2525"},"content":" addressBookWithAmy,","lastModifiedDate":"2024-03-19"},{"lineNumber":225,"author":{"gitId":"radeon2525"},"content":" Collections.singletonList(addressBookWithBob));","lastModifiedDate":"2024-03-19"},{"lineNumber":226,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":227,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":228,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":229,"author":{"gitId":"radeon2525"},"content":" public void redo_singleAddressBook_throwsNoRedoableStateException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":230,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook \u003d prepareAddressBookList(emptyAddressBook);","lastModifiedDate":"2024-03-19"},{"lineNumber":231,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":232,"author":{"gitId":"radeon2525"},"content":" assertThrows(VersionedAddressBook.NoRedoableStateException.class, versionedAddressBook::redo);","lastModifiedDate":"2024-03-19"},{"lineNumber":233,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":234,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":235,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":236,"author":{"gitId":"radeon2525"},"content":" public void redo_multipleAddressBookPointerAtEndOfStateList_throwsNoRedoableStateException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":237,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook \u003d prepareAddressBookList(","lastModifiedDate":"2024-03-19"},{"lineNumber":238,"author":{"gitId":"radeon2525"},"content":" emptyAddressBook, addressBookWithAmy, addressBookWithBob);","lastModifiedDate":"2024-03-19"},{"lineNumber":239,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":240,"author":{"gitId":"radeon2525"},"content":" assertThrows(VersionedAddressBook.NoRedoableStateException.class, versionedAddressBook::redo);","lastModifiedDate":"2024-03-19"},{"lineNumber":241,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":242,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":243,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":244,"author":{"gitId":"radeon2525"},"content":" public void equals() {","lastModifiedDate":"2024-03-19"},{"lineNumber":245,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook \u003d prepareAddressBookList(addressBookWithAmy, addressBookWithBob);","lastModifiedDate":"2024-03-19"},{"lineNumber":246,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":247,"author":{"gitId":"radeon2525"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-19"},{"lineNumber":248,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook copy \u003d prepareAddressBookList(addressBookWithAmy, addressBookWithBob);","lastModifiedDate":"2024-03-19"},{"lineNumber":249,"author":{"gitId":"radeon2525"},"content":" assertTrue(versionedAddressBook.equals(copy));","lastModifiedDate":"2024-03-19"},{"lineNumber":250,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":251,"author":{"gitId":"radeon2525"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-19"},{"lineNumber":252,"author":{"gitId":"radeon2525"},"content":" assertTrue(versionedAddressBook.equals(versionedAddressBook));","lastModifiedDate":"2024-03-19"},{"lineNumber":253,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":254,"author":{"gitId":"radeon2525"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":255,"author":{"gitId":"radeon2525"},"content":" assertFalse(versionedAddressBook.equals(null));","lastModifiedDate":"2024-03-19"},{"lineNumber":256,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":257,"author":{"gitId":"radeon2525"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":258,"author":{"gitId":"radeon2525"},"content":" assertFalse(versionedAddressBook.equals(1));","lastModifiedDate":"2024-03-19"},{"lineNumber":259,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":260,"author":{"gitId":"radeon2525"},"content":" // different state list -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":261,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook differentAddressBookList \u003d prepareAddressBookList(addressBookWithBob, addressBookWithCarl);","lastModifiedDate":"2024-03-19"},{"lineNumber":262,"author":{"gitId":"radeon2525"},"content":" assertFalse(versionedAddressBook.equals(differentAddressBookList));","lastModifiedDate":"2024-03-19"},{"lineNumber":263,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":264,"author":{"gitId":"radeon2525"},"content":" // different current pointer index -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":265,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook differentCurrentStatePointer \u003d prepareAddressBookList(","lastModifiedDate":"2024-03-19"},{"lineNumber":266,"author":{"gitId":"radeon2525"},"content":" addressBookWithAmy, addressBookWithBob);","lastModifiedDate":"2024-03-19"},{"lineNumber":267,"author":{"gitId":"radeon2525"},"content":" shiftCurrentStatePointerLeftwards(versionedAddressBook, 1);","lastModifiedDate":"2024-03-19"},{"lineNumber":268,"author":{"gitId":"radeon2525"},"content":" assertFalse(versionedAddressBook.equals(differentCurrentStatePointer));","lastModifiedDate":"2024-03-19"},{"lineNumber":269,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":270,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":271,"author":{"gitId":"radeon2525"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":272,"author":{"gitId":"radeon2525"},"content":" * Asserts that {@code versionedAddressBook} is currently pointing at {@code expectedCurrentState},","lastModifiedDate":"2024-03-19"},{"lineNumber":273,"author":{"gitId":"radeon2525"},"content":" * states before {@code versionedAddressBook#currentStatePointer} is equal to {@code expectedStatesBeforePointer},","lastModifiedDate":"2024-03-19"},{"lineNumber":274,"author":{"gitId":"radeon2525"},"content":" * and states after {@code versionedAddressBook#currentStatePointer} is equal to {@code expectedStatesAfterPointer}.","lastModifiedDate":"2024-03-19"},{"lineNumber":275,"author":{"gitId":"radeon2525"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":276,"author":{"gitId":"radeon2525"},"content":" private void assertAddressBookListStatus(VersionedAddressBook versionedAddressBook,","lastModifiedDate":"2024-03-19"},{"lineNumber":277,"author":{"gitId":"radeon2525"},"content":" List\u003cReadOnlyAddressBook\u003e expectedStatesBeforePointer,","lastModifiedDate":"2024-03-19"},{"lineNumber":278,"author":{"gitId":"radeon2525"},"content":" ReadOnlyAddressBook expectedCurrentState,","lastModifiedDate":"2024-03-19"},{"lineNumber":279,"author":{"gitId":"radeon2525"},"content":" List\u003cReadOnlyAddressBook\u003e expectedStatesAfterPointer) {","lastModifiedDate":"2024-03-19"},{"lineNumber":280,"author":{"gitId":"radeon2525"},"content":" // check state currently pointing at is correct","lastModifiedDate":"2024-03-19"},{"lineNumber":281,"author":{"gitId":"radeon2525"},"content":" assertEquals(new AddressBook(versionedAddressBook), expectedCurrentState);","lastModifiedDate":"2024-03-19"},{"lineNumber":282,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":283,"author":{"gitId":"radeon2525"},"content":" // shift pointer to start of state list","lastModifiedDate":"2024-03-19"},{"lineNumber":284,"author":{"gitId":"radeon2525"},"content":" while (versionedAddressBook.canUndo()) {","lastModifiedDate":"2024-03-19"},{"lineNumber":285,"author":{"gitId":"radeon2525"},"content":" versionedAddressBook.undo();","lastModifiedDate":"2024-03-19"},{"lineNumber":286,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":287,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":288,"author":{"gitId":"radeon2525"},"content":" // check states before pointer are correct","lastModifiedDate":"2024-03-19"},{"lineNumber":289,"author":{"gitId":"radeon2525"},"content":" for (ReadOnlyAddressBook expectedAddressBook : expectedStatesBeforePointer) {","lastModifiedDate":"2024-03-19"},{"lineNumber":290,"author":{"gitId":"radeon2525"},"content":" assertEquals(expectedAddressBook, new AddressBook(versionedAddressBook));","lastModifiedDate":"2024-03-19"},{"lineNumber":291,"author":{"gitId":"radeon2525"},"content":" versionedAddressBook.redo();","lastModifiedDate":"2024-03-19"},{"lineNumber":292,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":293,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":294,"author":{"gitId":"radeon2525"},"content":" // check states after pointer are correct","lastModifiedDate":"2024-03-19"},{"lineNumber":295,"author":{"gitId":"radeon2525"},"content":" for (ReadOnlyAddressBook expectedAddressBook : expectedStatesAfterPointer) {","lastModifiedDate":"2024-03-19"},{"lineNumber":296,"author":{"gitId":"radeon2525"},"content":" versionedAddressBook.redo();","lastModifiedDate":"2024-03-19"},{"lineNumber":297,"author":{"gitId":"radeon2525"},"content":" assertEquals(expectedAddressBook, new AddressBook(versionedAddressBook));","lastModifiedDate":"2024-03-19"},{"lineNumber":298,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":299,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":300,"author":{"gitId":"radeon2525"},"content":" // check that there are no more states after pointer","lastModifiedDate":"2024-03-19"},{"lineNumber":301,"author":{"gitId":"radeon2525"},"content":" assertFalse(versionedAddressBook.canRedo());","lastModifiedDate":"2024-03-19"},{"lineNumber":302,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":303,"author":{"gitId":"radeon2525"},"content":" // revert pointer to original position","lastModifiedDate":"2024-03-19"},{"lineNumber":304,"author":{"gitId":"radeon2525"},"content":" expectedStatesAfterPointer.forEach(unused -\u003e versionedAddressBook.undo());","lastModifiedDate":"2024-03-19"},{"lineNumber":305,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":306,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":307,"author":{"gitId":"radeon2525"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":308,"author":{"gitId":"radeon2525"},"content":" * Creates and returns a {@code VersionedAddressBook} with the {@code addressBookStates} added into it, and the","lastModifiedDate":"2024-03-19"},{"lineNumber":309,"author":{"gitId":"radeon2525"},"content":" * {@code VersionedAddressBook#currentStatePointer} at the end of list.","lastModifiedDate":"2024-03-19"},{"lineNumber":310,"author":{"gitId":"radeon2525"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":311,"author":{"gitId":"radeon2525"},"content":" private VersionedAddressBook prepareAddressBookList(ReadOnlyAddressBook... addressBookStates) {","lastModifiedDate":"2024-03-19"},{"lineNumber":312,"author":{"gitId":"radeon2525"},"content":" assertFalse(addressBookStates.length \u003d\u003d 0);","lastModifiedDate":"2024-03-19"},{"lineNumber":313,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":314,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook \u003d new VersionedAddressBook(addressBookStates[0]);","lastModifiedDate":"2024-03-19"},{"lineNumber":315,"author":{"gitId":"radeon2525"},"content":" for (int i \u003d 1; i \u003c addressBookStates.length; i++) {","lastModifiedDate":"2024-03-19"},{"lineNumber":316,"author":{"gitId":"radeon2525"},"content":" versionedAddressBook.resetData(addressBookStates[i]);","lastModifiedDate":"2024-03-19"},{"lineNumber":317,"author":{"gitId":"radeon2525"},"content":" versionedAddressBook.commit();","lastModifiedDate":"2024-03-19"},{"lineNumber":318,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":319,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":320,"author":{"gitId":"radeon2525"},"content":" return versionedAddressBook;","lastModifiedDate":"2024-03-19"},{"lineNumber":321,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":322,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":323,"author":{"gitId":"radeon2525"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":324,"author":{"gitId":"radeon2525"},"content":" * Shifts the {@code versionedAddressBook#currentStatePointer} by {@code count} to the left of its list.","lastModifiedDate":"2024-03-19"},{"lineNumber":325,"author":{"gitId":"radeon2525"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":326,"author":{"gitId":"radeon2525"},"content":" private void shiftCurrentStatePointerLeftwards(VersionedAddressBook versionedAddressBook, int count) {","lastModifiedDate":"2024-03-19"},{"lineNumber":327,"author":{"gitId":"radeon2525"},"content":" for (int i \u003d 0; i \u003c count; i++) {","lastModifiedDate":"2024-03-19"},{"lineNumber":328,"author":{"gitId":"radeon2525"},"content":" versionedAddressBook.undo();","lastModifiedDate":"2024-03-19"},{"lineNumber":329,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":330,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":331,"author":{"gitId":"radeon2525"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"radeon2525":331}},{"path":"src/test/java/seedu/address/model/person/PersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2018-03-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-04-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-04-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-03-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class PersonTest {","lastModifiedDate":"2018-03-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public void asObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":23,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2018-03-26"},{"lineNumber":24,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e person.getTags().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public void isSamePerson() {","lastModifiedDate":"2018-04-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(ALICE));","lastModifiedDate":"2018-04-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(null));","lastModifiedDate":"2018-04-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // same name, all other attributes different -\u003e returns true","lastModifiedDate":"2020-12-18"},{"lineNumber":36,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2020-12-18"},{"lineNumber":37,"author":{"gitId":"-"},"content":" .withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2020-12-18"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2020-12-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":" // different name, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // name differs in case, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":45,"author":{"gitId":"-"},"content":" Person editedBob \u003d new PersonBuilder(BOB).withName(VALID_NAME_BOB.toLowerCase()).build();","lastModifiedDate":"2020-12-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // name has trailing spaces, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":49,"author":{"gitId":"-"},"content":" String nameWithTrailingSpaces \u003d VALID_NAME_BOB + \" \";","lastModifiedDate":"2020-12-18"},{"lineNumber":50,"author":{"gitId":"-"},"content":" editedBob \u003d new PersonBuilder(BOB).withName(nameWithTrailingSpaces).build();","lastModifiedDate":"2020-12-18"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":" Person aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2018-04-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2018-04-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(null));","lastModifiedDate":"2018-04-19"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2018-04-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2018-04-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":77,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":81,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":84,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":85,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-18"},{"lineNumber":88,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2018-04-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2018-04-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-18"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":" String expected \u003d Person.class.getCanonicalName() + \"{name\u003d\" + ALICE.getName() + \", phone\u003d\" + ALICE.getPhone()","lastModifiedDate":"2019-02-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":" + \", email\u003d\" + ALICE.getEmail() + \", address\u003d\" + ALICE.getAddress() + \", tags\u003d\" + ALICE.getTags() + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":99,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":100,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":101,"author":{"gitId":"radeon2525"},"content":" public void samePersonObject_returnsTrue() {","lastModifiedDate":"2024-03-16"},{"lineNumber":102,"author":{"gitId":"radeon2525"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2024-03-16"},{"lineNumber":103,"author":{"gitId":"radeon2525"},"content":" assertTrue(person.isSamePerson(person));","lastModifiedDate":"2024-03-16"},{"lineNumber":104,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":105,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":106,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":107,"author":{"gitId":"radeon2525"},"content":" public void nullPerson_returnsFalse() {","lastModifiedDate":"2024-03-16"},{"lineNumber":108,"author":{"gitId":"radeon2525"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2024-03-16"},{"lineNumber":109,"author":{"gitId":"radeon2525"},"content":" assertFalse(person.isSamePerson(null));","lastModifiedDate":"2024-03-16"},{"lineNumber":110,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":111,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":112,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":113,"author":{"gitId":"radeon2525"},"content":" public void differentPerson_returnsFalse() {","lastModifiedDate":"2024-03-16"},{"lineNumber":114,"author":{"gitId":"radeon2525"},"content":" Person person1 \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2024-03-16"},{"lineNumber":115,"author":{"gitId":"radeon2525"},"content":" Person person2 \u003d new PersonBuilder().withName(\"Bob\").build();","lastModifiedDate":"2024-03-16"},{"lineNumber":116,"author":{"gitId":"radeon2525"},"content":" assertFalse(person1.isSamePerson(person2));","lastModifiedDate":"2024-03-16"},{"lineNumber":117,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":118,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":119,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":120,"author":{"gitId":"radeon2525"},"content":" public void samePersonTagsDifferentOrder_returnsTrue() {","lastModifiedDate":"2024-03-16"},{"lineNumber":121,"author":{"gitId":"radeon2525"},"content":" Person person1 \u003d new PersonBuilder().withTags(\"friend\", \"colleague\").build();","lastModifiedDate":"2024-03-16"},{"lineNumber":122,"author":{"gitId":"radeon2525"},"content":" Person person2 \u003d new PersonBuilder().withTags(\"colleague\", \"friend\").build();","lastModifiedDate":"2024-03-16"},{"lineNumber":123,"author":{"gitId":"radeon2525"},"content":" assertTrue(person1.equals(person2));","lastModifiedDate":"2024-03-16"},{"lineNumber":124,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":125,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"radeon2525":26,"-":99}}] diff --git a/AY2324S2-CS2103T-W13-2_tp_master/commits.json b/AY2324S2-CS2103T-W13-2_tp_master/commits.json index 7e26141d..8e1f74e3 100644 --- a/AY2324S2-CS2103T-W13-2_tp_master/commits.json +++ b/AY2324S2-CS2103T-W13-2_tp_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"The-Dudeski":[{"date":"2024-03-04","commitResults":[{"hash":"a56a13fd995ea7e199c68df3922a2a36a019ec02","isMergeCommit":false,"messageTitle":"Modified AboutUs.md to include developer info","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":19,"deletions":19}}}]},{"date":"2024-03-06","commitResults":[{"hash":"8a49b8be4746cb0850f3136e007708a05b149dc0","isMergeCommit":false,"messageTitle":"Updated README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":9}}}]},{"date":"2024-03-09","commitResults":[{"hash":"d3fd72d8f330d663c40d08ec44e2684d0688459e","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"Co-authored-by: Miffi \u003cmiffi@decadent.rest\u003e","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"8e75f55f351bfa16d8b002024382562835a69376","isMergeCommit":false,"messageTitle":"Changed AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":9}}},{"hash":"aa778530123e214a3b3e90ac49a8984e9761664b","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-W13-2:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ee43d4aab9b3af38c1559e3000151ca39f3064b4","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/The-Dudeski/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"66bf7ef0512eb4cbf2799d568d1011d3f3497853","isMergeCommit":true,"messageTitle":"Merge pull request #12 from The-Dudeski/master","messageBody":"Changed README.md and AboutUs.md","fileTypesAndContributionMap":{}},{"hash":"6e126a335fabee3861ca195d3800701611c1111a","isMergeCommit":false,"messageTitle":"Added Viewing Contacts to DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":17,"deletions":1}}}]},{"date":"2024-03-20","commitResults":[{"hash":"198ec65b2f000fc26f2d1bef4feaf29532fb18b5","isMergeCommit":false,"messageTitle":"Changed prefixes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":6}}}]},{"date":"2024-03-21","commitResults":[{"hash":"16a25385ab7352f82b4bd0b15ca1df65a2f1c088","isMergeCommit":false,"messageTitle":"Changed test cases for Tag and Untag","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}},{"hash":"96447e0a0b456755ef556480ab0f904c79a09a37","isMergeCommit":false,"messageTitle":"Fixed indentation errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]}],"Derekljh":[{"date":"2024-03-06","commitResults":[{"hash":"a1fb0994ba5fa66848396b45e6ea1a3678a3d049","isMergeCommit":false,"messageTitle":"Add Use Case - Remove Contact","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}},{"hash":"8d1468e4a804f923e145696a6b392191a9f8a1f9","isMergeCommit":false,"messageTitle":"Add user stories","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":8}}},{"hash":"212dc9656abe0b5b84abc5652bafac7799153be3","isMergeCommit":false,"messageTitle":"Add product scope","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}}]},{"date":"2024-03-09","commitResults":[{"hash":"7b5d46cb7b352523035e7a393a0821f78a2824c2","isMergeCommit":true,"messageTitle":"Merge pull request #26 from miffi/use-case-tag","messageBody":"Add a use case for tagging","fileTypesAndContributionMap":{}}]},{"date":"2024-03-13","commitResults":[{"hash":"5ce658ccac48cda8189cd687065ced696cb953c7","isMergeCommit":false,"messageTitle":"Fix TagCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":76,"deletions":13}}},{"hash":"0321684551408f097089cc1af41cb99e1234c9fa","isMergeCommit":false,"messageTitle":"Fix TagCommand with exceptions","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":11}}}]},{"date":"2024-03-16","commitResults":[{"hash":"23870f423807e4e72cb67d7e0493d2687e9dcd37","isMergeCommit":false,"messageTitle":"Fix code to pass CI","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":78,"deletions":63}}},{"hash":"80e9f70e94b5686bae7a627c0a2586f1e6b56455","isMergeCommit":false,"messageTitle":"Fix code to pass CI","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":21,"deletions":9}}},{"hash":"b678bedf646556788e90c5610fe08f42e67c6d1b","isMergeCommit":false,"messageTitle":"Fix code to pass CI","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":3}}},{"hash":"f6e0074a9c5b14a41ae6fb9b81b3cc8976b72db9","isMergeCommit":false,"messageTitle":"Fix code to pass CI","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":5}}},{"hash":"620f3ce30d8c9cc783db8fd103ead75dd027b642","isMergeCommit":false,"messageTitle":"Amend Tagging function","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":28,"deletions":22}}},{"hash":"8862dc8d737be31ca5e8b398a73d38b008d10084","isMergeCommit":false,"messageTitle":"Add Tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":13},"test-code":{"insertions":166,"deletions":0}}},{"hash":"11f8429b0ac517d1b7f53ba779674d29e2520683","isMergeCommit":false,"messageTitle":"Add Tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":14},"test-code":{"insertions":164,"deletions":0}}},{"hash":"1baea652a9fadb72be5642b4b39abb07ebca1d32","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/Tagging-contacts\u0027 into Tagging-contacts","messageBody":"# Conflicts:\n#\tsrc/test/java/seedu/address/logic/commands/TagCommandTest.java\n#\tsrc/test/java/seedu/address/logic/parser/AddressBookParserTest.java\n#\tsrc/test/java/seedu/address/logic/parser/TagCommandParserTest.java\n","fileTypesAndContributionMap":{}}]},{"date":"2024-03-17","commitResults":[{"hash":"28eb7538933400177dc0c0c04f0d7b9029d4f0a9","isMergeCommit":false,"messageTitle":"Amend code for CI","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"84fb795913373f29fe99bebf800ed9494f6fa685","isMergeCommit":false,"messageTitle":"Amend code for tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":1,"deletions":2}}},{"hash":"93b3b7b820417b6326cdca1cbf064d360b98cf52","isMergeCommit":false,"messageTitle":"Amend code for tests v2","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":1},"test-code":{"insertions":2,"deletions":1}}}]},{"date":"2024-03-18","commitResults":[{"hash":"6e46c5e71fa8620e81b1d9fbd24e05062a9a1463","isMergeCommit":false,"messageTitle":"Amend code for tests v3","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}},{"hash":"25a5f5e52a5558551e63d6b053d52ccc41c576fd","isMergeCommit":false,"messageTitle":"Amend code for tests v4","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-19","commitResults":[{"hash":"b13f80087067eac080ac8d83bae9c4b3996d7c16","isMergeCommit":false,"messageTitle":"Amend code for CI","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-21","commitResults":[{"hash":"424a123e27985e842f98836d1b78e419fede3951","isMergeCommit":false,"messageTitle":"Change error messages","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4}}},{"hash":"a12a4f105180855611e64f15cb5c71ffdbcb7ce6","isMergeCommit":true,"messageTitle":"Merge pull request #55 from Derekljh/master","messageBody":"Change error messages","fileTypesAndContributionMap":{}},{"hash":"819d2775c570858b6160a080ac7fa6cff665754e","isMergeCommit":false,"messageTitle":"Add UML diagram for TagCommand","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":0}}},{"hash":"d4159e3cea42864ef1d4675147a25df6bf2f683f","isMergeCommit":true,"messageTitle":"Merge pull request #59 from Derekljh/master","messageBody":"Add UML diagram for TagCommand","fileTypesAndContributionMap":{}}]},{"date":"2024-03-22","commitResults":[{"hash":"4448bd7d972a51befaa602e10c44d4589de6ba53","isMergeCommit":false,"messageTitle":"Move puml file for TagCommand under Diagram folder and add to git revision","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":67,"deletions":0}}},{"hash":"38bf1de89fced7d4c648289f3dc44b5a46621a09","isMergeCommit":false,"messageTitle":"Fix for CI","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"09ed52ade1e477dd7742b253a03e8d536ff22448","isMergeCommit":true,"messageTitle":"Merge pull request #60 from Derekljh/master","messageBody":"Move puml file for TagCommand under Diagram folder and add to git rev…","fileTypesAndContributionMap":{}}]}],"radeon2525":[{"date":"2024-03-07","commitResults":[{"hash":"c26e91116edc3b8c920a84a5f1b343e14c6c87a7","isMergeCommit":false,"messageTitle":"Added non functional requirements","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":138,"deletions":74}}},{"hash":"a804a00762f779d62d05e6459d9d1aecd1af82c0","isMergeCommit":false,"messageTitle":"Add use case-add contacts","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":19,"deletions":1}}}]},{"date":"2024-03-09","commitResults":[{"hash":"11fdeedeb47cb3cf3fe23d1617d451ade9096aed","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-contacts","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"812cbde3bffc72892e26ff97e41b2cdd1d785d0a","isMergeCommit":true,"messageTitle":"Merge pull request #24 from radeon2525/add-contacts","messageBody":"Add use case-add contacts","fileTypesAndContributionMap":{}}]},{"date":"2024-03-11","commitResults":[{"hash":"fa39c44099ab9fe131e2f269152c852ebda35feb","isMergeCommit":false,"messageTitle":"Add TagCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":58,"deletions":0},"test-code":{"insertions":5,"deletions":0}}}]},{"date":"2024-03-16","commitResults":[{"hash":"f4d8a6c8c2485572c39d944c128f3998a18ab7d0","isMergeCommit":false,"messageTitle":"Add test cases for AddCommand and LogicManager","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1},"test-code":{"insertions":40,"deletions":1}}},{"hash":"55783b650b8ad6a292172724d7badc50bd48743c","isMergeCommit":false,"messageTitle":"Fix style issues","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":3}}},{"hash":"c04b00c60e48bd4cd84b605114e831d4d4e06192","isMergeCommit":false,"messageTitle":"FIx unused import statement","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":2}}}]},{"date":"2024-03-18","commitResults":[{"hash":"68933d1ab2212d4f62d166ec877b936d920cee05","isMergeCommit":true,"messageTitle":"Merge pull request #40 from radeon2525/add-contacts-1.2","messageBody":"Add test cases for AddCommand and LogicManager","fileTypesAndContributionMap":{}},{"hash":"ac4c9b909115aa9a4281827909beaa6b9ae4c916","isMergeCommit":false,"messageTitle":"Add undo and redo functionality","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":422,"deletions":29},"test-code":{"insertions":83,"deletions":32}}},{"hash":"983cb8e8fdabef88080208c6364d4be83e1511af","isMergeCommit":false,"messageTitle":"Fix style issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":230,"deletions":233}}},{"hash":"e9476ac55707935d9570ee974be6ef7c21249e92","isMergeCommit":false,"messageTitle":"Fix InvalidationListenerManager style","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":48,"deletions":48}}},{"hash":"5dca2e8725da1c28505eb6d36976d54bde04a13b","isMergeCommit":false,"messageTitle":"Add newline","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":2}}},{"hash":"90ec28516205a7bc34e319595d029c62bf6333b4","isMergeCommit":false,"messageTitle":"Style fixes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"aebc14aa8c3ccbb0d43be5b2aa7ceda5bca31bad","isMergeCommit":false,"messageTitle":"Fix style errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":14}}},{"hash":"dc7983f931203fdaf1b780c854adf86d626c028a","isMergeCommit":false,"messageTitle":"Add import statements in AddressBookParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":0}}},{"hash":"25bdcac4f211c5e3fb39c9e098657218fb757102","isMergeCommit":false,"messageTitle":"Fix import statement ordering","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}},{"hash":"899d0fb03035dd0133b8c746aee8c1703705c71b","isMergeCommit":false,"messageTitle":"Fix lexicographic ordering","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"088cff83b530d37ce817429ef562d613438f6e66","isMergeCommit":false,"messageTitle":"Change execute method","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":11,"deletions":11}}},{"hash":"dd267c44a0ddb442d142ec95c116885e99d88d48","isMergeCommit":false,"messageTitle":"Remove unused statement","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"cc867e6fb49349bd59f10485756a7e3ff36063df","isMergeCommit":false,"messageTitle":"Change AddCommandTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":260,"deletions":26}}},{"hash":"ac7ac9d5cecff50c669d158aeb96f181d702f158","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into undo-redo","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"4ac5daa7c5581d21b3cef7024df90d4a7ec50689","isMergeCommit":false,"messageTitle":"Fix testcase","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"1ae34ce0eee259b67c9ca5e0fd09582eb2c1f64e","isMergeCommit":true,"messageTitle":"Merge branch \u0027undo-redo\u0027 of https://github.com/radeon2525/tp into undo-redo","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"11c7fec6e5f00242e20eb702a0a6c37b225741b7","isMergeCommit":false,"messageTitle":"Fix testcase","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":1}}},{"hash":"ea0bca007fbb05f8f9025b2ee40205808be8685e","isMergeCommit":false,"messageTitle":"Fix style issues","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":14,"deletions":248}}},{"hash":"c1d343aa34141dc0351a15b999f8cbab498ae4a2","isMergeCommit":false,"messageTitle":"Fix bugs","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":102,"deletions":105}}}]},{"date":"2024-03-19","commitResults":[{"hash":"f3a672825d7fd5428c9dc8bc1324759514a37900","isMergeCommit":false,"messageTitle":"Fix style issues","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":11,"deletions":21}}},{"hash":"2d1e4739829d86b2dc8682e3365a0d4cd3e15ee9","isMergeCommit":false,"messageTitle":"Fix styling","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":3}}},{"hash":"b6890cc0986cfb6f9066c35f7174aeeb7995799b","isMergeCommit":false,"messageTitle":"Fix styling","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":49}}},{"hash":"ca336496439723ecf3b60706776edfca565156d4","isMergeCommit":false,"messageTitle":"Fix styling","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":50}}},{"hash":"ec38dcb8cff1fad9c2e0049629193240b1530423","isMergeCommit":false,"messageTitle":"Remove redundant methods","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":30}}},{"hash":"32a0b0a1ccb6863c0875578fe8f3cb2f40a0d379","isMergeCommit":false,"messageTitle":"Fix","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"aae418a367e0e6ed1694073ab92f4ebca30131d8","isMergeCommit":false,"messageTitle":"Add CommandHistoryTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":79,"deletions":0}}},{"hash":"15d8644709215cb75afe2ddac2be30f26d140419","isMergeCommit":false,"messageTitle":"Fix","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}},{"hash":"c9cb32ebb2f4051074ef74828fda9bc2230880fe","isMergeCommit":false,"messageTitle":"Add InvalidationListenerManagerTest","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":37,"deletions":0},"test-code":{"insertions":72,"deletions":0}}},{"hash":"f9c2030eb89e2c3f0c2c63beeb72849b82f6e49e","isMergeCommit":false,"messageTitle":"Fix style issues","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":72,"deletions":72}}},{"hash":"b78b4324d994951f106f711c3ca52182eb9c428f","isMergeCommit":false,"messageTitle":"Add VersionedAddressBookTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":298,"deletions":0}}},{"hash":"cb7b917887fe25972992ce5d134e8fd2c5535329","isMergeCommit":false,"messageTitle":"Change ModelManagerTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":0}}},{"hash":"a985704ac3138e392efc025dbcd69b6bb70b7a39","isMergeCommit":false,"messageTitle":"Add tests for Undo and Redo","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":103,"deletions":0}}},{"hash":"a0470da22626b42bb8d682e764de26921bbdebb6","isMergeCommit":false,"messageTitle":"Add tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":43,"deletions":0}}},{"hash":"1e95263915ba8eb6fd35407b8dc4377a6aa6f2da","isMergeCommit":false,"messageTitle":"Fix","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":1}}},{"hash":"9ab1f0b5c5292810b7dc200971510c5ac69a982c","isMergeCommit":false,"messageTitle":"Remove redundant method","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":31}}},{"hash":"9b22ee25b6d4472c5f37223d4da33cdd7340d148","isMergeCommit":false,"messageTitle":"Add testcase","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":8},"test-code":{"insertions":13,"deletions":8}}},{"hash":"c815e5fe278e85845ef6748391face3effbf9af3","isMergeCommit":false,"messageTitle":"Fix","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":11,"deletions":1}}},{"hash":"78b4f6553c7b75e47d315c1f7683de76644e241d","isMergeCommit":false,"messageTitle":"Fix","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"19ba4a69a6c02f1942a74a8b01b04549b66ca106","isMergeCommit":false,"messageTitle":"fix","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}},{"hash":"7a60849c79d5798c1310e6e16453dc9b237868df","isMergeCommit":false,"messageTitle":"Fix","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":94,"deletions":1}}},{"hash":"997ec6b0e532b83a80f180a5674506ec073b3438","isMergeCommit":false,"messageTitle":"Fix","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":12,"deletions":12}}},{"hash":"b33bde607f5658aa8e6cbe66e23727a1af98eccf","isMergeCommit":false,"messageTitle":"Fix","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":13,"deletions":11}}},{"hash":"ef64296a734d40f51839ab384e9e81a43b3e7f9a","isMergeCommit":false,"messageTitle":"fix","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":2}}},{"hash":"41b41cdba3eb64fe4e30621942ee10d5c5112a88","isMergeCommit":false,"messageTitle":"fix","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":0}}}]},{"date":"2024-03-20","commitResults":[{"hash":"dc871e7befcf475f221fbd33b44f7fa229f63323","isMergeCommit":false,"messageTitle":"Fixed indicateModified method","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":25,"deletions":12}}},{"hash":"87d0913c9d38635dff5f3d1c1a9b9fbaea14aa53","isMergeCommit":false,"messageTitle":"Fix","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"fc45214f00eb253f59e8352cb164dd6203392790","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into undo-redo","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"23f834e96cf11422d1c104f00e06a34a10c5962f","isMergeCommit":false,"messageTitle":"Fix Tagging","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":18,"deletions":7},"test-code":{"insertions":6,"deletions":26}}},{"hash":"6d5c7d665d48f5ace5b1cc10faaa883314f8da34","isMergeCommit":false,"messageTitle":"fix","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"abea10f995c101f39689a5cd37f801981e0804af","isMergeCommit":false,"messageTitle":"fix","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":4}}},{"hash":"e4458c5c336c1752393da22b1fad6e8a69bad0c7","isMergeCommit":false,"messageTitle":"fix","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"139548a0eef87061f5aab0b87e5db8c9b266fdaa","isMergeCommit":false,"messageTitle":"Add tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3},"test-code":{"insertions":69,"deletions":0}}},{"hash":"e0b5b6b5126fc1046a7f21c5cd9812bd629eb1ee","isMergeCommit":false,"messageTitle":"fix","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"5148f5536ab841e27a35462d03a1ba99e4be7211","isMergeCommit":false,"messageTitle":"fix","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":2}}},{"hash":"e377c0a3c5d7391735e9410cd9978094903f451b","isMergeCommit":false,"messageTitle":"fix","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}},{"hash":"0d6ba9adca101603ab673db46c79e2773fc9daa0","isMergeCommit":true,"messageTitle":"Merge pull request #48 from radeon2525/undo-redo","messageBody":"Add undo and redo functionality","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"d985b4372addafaa126e6c6bf3abffab38c038b3","isMergeCommit":false,"messageTitle":"Fix for tag and untag","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":0}}},{"hash":"e015b64ee886665a795d0ed839fd6ce141ab5273","isMergeCommit":false,"messageTitle":"fix","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":18}}},{"hash":"ffb79e262a0c5546ed782f0d443b6b17ee623209","isMergeCommit":false,"messageTitle":"fix","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":3}}},{"hash":"0f2044b809eb507c77ac89afce201c26474ebeb0","isMergeCommit":true,"messageTitle":"Merge pull request #57 from radeon2525/master","messageBody":"Fix for tag and untag","fileTypesAndContributionMap":{}}]}],"miffi":[{"date":"2024-02-24","commitResults":[{"hash":"c2e81d65d4cccdb3ed49d85508e1a72a4fbc4b86","isMergeCommit":false,"messageTitle":"Rename doc references of AB-3 to OfficeHarbor","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":20,"deletions":20}}},{"hash":"28789c919dd4b31b65c7aa8ed09a2dd87cc21ded","isMergeCommit":true,"messageTitle":"Merge pull request #1 from miffi/rename-codebase","messageBody":"Rename doc references of AB-3 to OfficeHarbor","fileTypesAndContributionMap":{}}]},{"date":"2024-03-06","commitResults":[{"hash":"c0eb71a6449f317ce92e27565041be7ecf07b425","isMergeCommit":true,"messageTitle":"Merge pull request #8 from JukeBoxK/master","messageBody":"Update the User Guide","fileTypesAndContributionMap":{}}]},{"date":"2024-03-08","commitResults":[{"hash":"fe86fdfaa26d0b484af8726b10eaf57b64081c85","isMergeCommit":false,"messageTitle":"Add a use case for tagging","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":26,"deletions":1}}}]},{"date":"2024-03-09","commitResults":[{"hash":"9d6866fd753f58ab68dbebbd56f6a30f5dce2138","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into NFR","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"7fced1ccd306a516e5f2c3c36442e091fa817627","isMergeCommit":true,"messageTitle":"Merge pull request #23 from radeon2525/NFR","messageBody":"Add non functional requirements","fileTypesAndContributionMap":{}},{"hash":"4680017e1aa3b75029a6c86dab32e7ddfdf9b86f","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into port-user-stories-and-product-scope","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"27c9c32db685a05811b8a234035b1626f6802cb9","isMergeCommit":true,"messageTitle":"Merge pull request #17 from Derekljh/port-user-stories-and-product-scope","messageBody":"Port user stories and product scope","fileTypesAndContributionMap":{}},{"hash":"513d35b037cedeec1c09cb8d55edd7e340b7e061","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-UseCase-DeleteTag","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"474f28efd015b6aac0e21a6bae33ca003cd276f6","isMergeCommit":true,"messageTitle":"Merge pull request #27 from JukeBoxK/branch-UseCase-DeleteTag","messageBody":"Add use case for deleting tag","fileTypesAndContributionMap":{}},{"hash":"ad73271145db2cdbd29bf544525f429f638b1a4c","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into Use-Case-Remove-Contacts","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ff8243bdf16a4e9aac2ec018720a4576a3118d3a","isMergeCommit":true,"messageTitle":"Merge pull request #15 from Derekljh/Use-Case-Remove-Contacts","messageBody":"Add Use Case - Remove Contact","fileTypesAndContributionMap":{}}]},{"date":"2024-03-16","commitResults":[{"hash":"b215c54550100887b54dc08b9b56bfeb7f859cdf","isMergeCommit":false,"messageTitle":"Add untag command","messageBody":"As a counterpart to the tagging command, this command untags a user from\nsome tags.\n\nThis implementation can do multiple tags at the same time to amke\nremoving tags faster. It throws an error on non matching tags, but that\ncan be changed if that is not desirable e.g. if batch operations are\nintroduced.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":142,"deletions":1},"test-code":{"insertions":157,"deletions":0}}},{"hash":"a1f6f8b401b3fa7ac2676095c3a41c91cc3292ca","isMergeCommit":false,"messageTitle":"Add developer roles","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":19,"deletions":6}}},{"hash":"096fd31e707c2b98991a57a67bfa189c75c7d84c","isMergeCommit":false,"messageTitle":"Increase code coverage","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":40,"deletions":22}}},{"hash":"da091a46ec09cad7956e6ce803268cc4f25f63c4","isMergeCommit":false,"messageTitle":"Fix code style","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":8,"deletions":8}}}]},{"date":"2024-03-19","commitResults":[{"hash":"d1b84a19e8f8a224e8eb1680dbda266bbbf08a20","isMergeCommit":true,"messageTitle":"Merge pull request #41 from miffi/dev-roles","messageBody":"Add developer roles","fileTypesAndContributionMap":{}},{"hash":"d3ff94c66ed01f3c6106fa9187423072fcaf9bd7","isMergeCommit":true,"messageTitle":"Merge pull request #38 from miffi/untag","messageBody":"Add untag command","fileTypesAndContributionMap":{}},{"hash":"3cd570236a2ab168ab19599b8bd4d1f336bfefcb","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into Tagging-contacts","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f96276d5001fb9e420c53c05513394b25e3cadb1","isMergeCommit":true,"messageTitle":"Merge pull request #32 from Derekljh/Tagging-contacts","messageBody":"Tagging contacts","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"3b0e4fb887d9c100f56ef56d5d29f78ad9275040","isMergeCommit":true,"messageTitle":"Merge pull request #50 from The-Dudeski/master","messageBody":"Changed prefixes","fileTypesAndContributionMap":{}}]}],"JukeBoxK":[{"date":"2024-02-29","commitResults":[{"hash":"221ddb4c24fb3fc650d1590e6cce283eba688a4c","isMergeCommit":false,"messageTitle":"Update the User Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":85,"deletions":70}}}]},{"date":"2024-03-09","commitResults":[{"hash":"16a942fb1739dad3348aed1eef2aa0159241f012","isMergeCommit":false,"messageTitle":"Add use case for deleting tag","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":29,"deletions":0}}},{"hash":"dd455d80900288969d93008522db5a6792c7d13d","isMergeCommit":true,"messageTitle":"Merge pull request #28 from The-Dudeski/master","messageBody":"Added Viewing Contacts Use Case","fileTypesAndContributionMap":{}}]},{"date":"2024-03-13","commitResults":[{"hash":"2f3b74d0d3f32f5d70225deb77e43f7d545bf840","isMergeCommit":false,"messageTitle":"Change output message for list command","messageBody":"The list command displays \"Listed all persons\" for all outputs.\n\nIt is not specific enough for the output list.\n\nLet\u0027s add the message \"The list is empty\" for empty lists instead.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":2}}},{"hash":"e91a02e930ae0e6dab18b814658156079044839a","isMergeCommit":false,"messageTitle":"Address style issue in code of List Command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"8ded7e9e5e257d69a1215871ce9d8da53b9c73ad","isMergeCommit":false,"messageTitle":"Address test issue with list command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-16","commitResults":[{"hash":"26f0cd21efa86b584f203a7e7398c277cf975d30","isMergeCommit":true,"messageTitle":"Merge pull request #30 from JukeBoxK/branch-ViewContact","messageBody":"Change output message for list command","fileTypesAndContributionMap":{}}]},{"date":"2024-03-20","commitResults":[{"hash":"4ef08bef397742ca3df0b80c18ee749969123bf3","isMergeCommit":false,"messageTitle":"Reorder the UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":50,"deletions":51}}},{"hash":"dc3578499f9528423add90db06b45aaff1c3574e","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-Documentation","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"14a7395d4140fc84a6ff748885c65cbed99070bb","isMergeCommit":false,"messageTitle":"Add information about undo/redo into the documentation","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":107,"deletions":46}}},{"hash":"094ec3dccc788b4d4002d50f65d566c5a6c903e4","isMergeCommit":false,"messageTitle":"Add EOF for UserGuide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"929e3ca8d816f44a0facef8b0a3dc9fb8529f18b","isMergeCommit":false,"messageTitle":"Change the tag and untag to the correct format","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":9}}},{"hash":"148df76c69a0de2d17197cc86375ad942a261314","isMergeCommit":true,"messageTitle":"Merge pull request #52 from JukeBoxK/branch-Documentation","messageBody":"Add information about undo/redo into the documentation","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"4bfcbc43aa7ba418cba4ba8e14371036a12ae014","isMergeCommit":false,"messageTitle":"Change the documentation to fit the new prefix","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":43,"deletions":36}}},{"hash":"d190c0d8f49f5a8fd7e553d9c48d69cf22d78fdd","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-W13-2/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a8f85b68a1d7ce17493248c3b807c2add459e793","isMergeCommit":false,"messageTitle":"Fix issue of no screenshot in user guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":7}}},{"hash":"4ff517f09f52f091e6bf09bc7dcec5092117a980","isMergeCommit":true,"messageTitle":"Merge pull request #58 from JukeBoxK/branch-Documentation","messageBody":"Branch documentation","tags":["v1.2"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"The-Dudeski":{"docs":32,"functional-code":10,"test-code":2},"Derekljh":{"docs":74,"functional-code":116,"test-code":140},"radeon2525":{"docs":122,"functional-code":453,"test-code":905},"miffi":{"docs":36,"functional-code":138,"test-code":150,"other":1},"JukeBoxK":{"docs":226,"functional-code":5,"test-code":1}},"authorContributionVariance":{"The-Dudeski":109.058304,"Derekljh":11964.134,"radeon2525":167316.94,"miffi":5417.955,"JukeBoxK":3336.386},"authorDisplayNameMap":{"The-Dudeski":"CS2103T-W13-2 DUDE..NZIO","Derekljh":"CS2103T-W13-2 LEON..EREK","radeon2525":"CS2103T-W13-2 MAHI..SHIM","miffi":"CS2103T-W13-2 AHMA..AQUE","JukeBoxK":"CS2103T-W13-2 KYAW..YINT"}} +{"authorDailyContributionsMap":{"The-Dudeski":[{"date":"2024-03-04","commitResults":[{"hash":"a56a13fd995ea7e199c68df3922a2a36a019ec02","isMergeCommit":false,"messageTitle":"Modified AboutUs.md to include developer info","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":19,"deletions":19}}}]},{"date":"2024-03-06","commitResults":[{"hash":"8a49b8be4746cb0850f3136e007708a05b149dc0","isMergeCommit":false,"messageTitle":"Updated README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":9}}}]},{"date":"2024-03-09","commitResults":[{"hash":"d3fd72d8f330d663c40d08ec44e2684d0688459e","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"Co-authored-by: Miffi \u003cmiffi@decadent.rest\u003e","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"8e75f55f351bfa16d8b002024382562835a69376","isMergeCommit":false,"messageTitle":"Changed AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":9}}},{"hash":"aa778530123e214a3b3e90ac49a8984e9761664b","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-W13-2:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ee43d4aab9b3af38c1559e3000151ca39f3064b4","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/The-Dudeski/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"66bf7ef0512eb4cbf2799d568d1011d3f3497853","isMergeCommit":true,"messageTitle":"Merge pull request #12 from The-Dudeski/master","messageBody":"Changed README.md and AboutUs.md","fileTypesAndContributionMap":{}},{"hash":"6e126a335fabee3861ca195d3800701611c1111a","isMergeCommit":false,"messageTitle":"Added Viewing Contacts to DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":17,"deletions":1}}}]},{"date":"2024-03-20","commitResults":[{"hash":"198ec65b2f000fc26f2d1bef4feaf29532fb18b5","isMergeCommit":false,"messageTitle":"Changed prefixes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":6}}}]},{"date":"2024-03-21","commitResults":[{"hash":"16a25385ab7352f82b4bd0b15ca1df65a2f1c088","isMergeCommit":false,"messageTitle":"Changed test cases for Tag and Untag","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}},{"hash":"96447e0a0b456755ef556480ab0f904c79a09a37","isMergeCommit":false,"messageTitle":"Fixed indentation errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]}],"Derekljh":[{"date":"2024-03-06","commitResults":[{"hash":"a1fb0994ba5fa66848396b45e6ea1a3678a3d049","isMergeCommit":false,"messageTitle":"Add Use Case - Remove Contact","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}},{"hash":"8d1468e4a804f923e145696a6b392191a9f8a1f9","isMergeCommit":false,"messageTitle":"Add user stories","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":8}}},{"hash":"212dc9656abe0b5b84abc5652bafac7799153be3","isMergeCommit":false,"messageTitle":"Add product scope","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}}]},{"date":"2024-03-09","commitResults":[{"hash":"7b5d46cb7b352523035e7a393a0821f78a2824c2","isMergeCommit":true,"messageTitle":"Merge pull request #26 from miffi/use-case-tag","messageBody":"Add a use case for tagging","fileTypesAndContributionMap":{}}]},{"date":"2024-03-13","commitResults":[{"hash":"5ce658ccac48cda8189cd687065ced696cb953c7","isMergeCommit":false,"messageTitle":"Fix TagCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":76,"deletions":13}}},{"hash":"0321684551408f097089cc1af41cb99e1234c9fa","isMergeCommit":false,"messageTitle":"Fix TagCommand with exceptions","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":11}}}]},{"date":"2024-03-16","commitResults":[{"hash":"23870f423807e4e72cb67d7e0493d2687e9dcd37","isMergeCommit":false,"messageTitle":"Fix code to pass CI","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":78,"deletions":63}}},{"hash":"80e9f70e94b5686bae7a627c0a2586f1e6b56455","isMergeCommit":false,"messageTitle":"Fix code to pass CI","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":21,"deletions":9}}},{"hash":"b678bedf646556788e90c5610fe08f42e67c6d1b","isMergeCommit":false,"messageTitle":"Fix code to pass CI","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":3}}},{"hash":"f6e0074a9c5b14a41ae6fb9b81b3cc8976b72db9","isMergeCommit":false,"messageTitle":"Fix code to pass CI","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":5}}},{"hash":"620f3ce30d8c9cc783db8fd103ead75dd027b642","isMergeCommit":false,"messageTitle":"Amend Tagging function","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":28,"deletions":22}}},{"hash":"8862dc8d737be31ca5e8b398a73d38b008d10084","isMergeCommit":false,"messageTitle":"Add Tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":13},"test-code":{"insertions":166,"deletions":0}}},{"hash":"11f8429b0ac517d1b7f53ba779674d29e2520683","isMergeCommit":false,"messageTitle":"Add Tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":14},"test-code":{"insertions":164,"deletions":0}}},{"hash":"1baea652a9fadb72be5642b4b39abb07ebca1d32","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/Tagging-contacts\u0027 into Tagging-contacts","messageBody":"# Conflicts:\n#\tsrc/test/java/seedu/address/logic/commands/TagCommandTest.java\n#\tsrc/test/java/seedu/address/logic/parser/AddressBookParserTest.java\n#\tsrc/test/java/seedu/address/logic/parser/TagCommandParserTest.java\n","fileTypesAndContributionMap":{}}]},{"date":"2024-03-17","commitResults":[{"hash":"28eb7538933400177dc0c0c04f0d7b9029d4f0a9","isMergeCommit":false,"messageTitle":"Amend code for CI","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"84fb795913373f29fe99bebf800ed9494f6fa685","isMergeCommit":false,"messageTitle":"Amend code for tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":1,"deletions":2}}},{"hash":"93b3b7b820417b6326cdca1cbf064d360b98cf52","isMergeCommit":false,"messageTitle":"Amend code for tests v2","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":1},"test-code":{"insertions":2,"deletions":1}}}]},{"date":"2024-03-18","commitResults":[{"hash":"6e46c5e71fa8620e81b1d9fbd24e05062a9a1463","isMergeCommit":false,"messageTitle":"Amend code for tests v3","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}},{"hash":"25a5f5e52a5558551e63d6b053d52ccc41c576fd","isMergeCommit":false,"messageTitle":"Amend code for tests v4","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-19","commitResults":[{"hash":"b13f80087067eac080ac8d83bae9c4b3996d7c16","isMergeCommit":false,"messageTitle":"Amend code for CI","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-21","commitResults":[{"hash":"424a123e27985e842f98836d1b78e419fede3951","isMergeCommit":false,"messageTitle":"Change error messages","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4}}},{"hash":"a12a4f105180855611e64f15cb5c71ffdbcb7ce6","isMergeCommit":true,"messageTitle":"Merge pull request #55 from Derekljh/master","messageBody":"Change error messages","fileTypesAndContributionMap":{}},{"hash":"819d2775c570858b6160a080ac7fa6cff665754e","isMergeCommit":false,"messageTitle":"Add UML diagram for TagCommand","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":0}}},{"hash":"d4159e3cea42864ef1d4675147a25df6bf2f683f","isMergeCommit":true,"messageTitle":"Merge pull request #59 from Derekljh/master","messageBody":"Add UML diagram for TagCommand","fileTypesAndContributionMap":{}}]},{"date":"2024-03-22","commitResults":[{"hash":"4448bd7d972a51befaa602e10c44d4589de6ba53","isMergeCommit":false,"messageTitle":"Move puml file for TagCommand under Diagram folder and add to git revision","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":67,"deletions":0}}},{"hash":"38bf1de89fced7d4c648289f3dc44b5a46621a09","isMergeCommit":false,"messageTitle":"Fix for CI","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"09ed52ade1e477dd7742b253a03e8d536ff22448","isMergeCommit":true,"messageTitle":"Merge pull request #60 from Derekljh/master","messageBody":"Move puml file for TagCommand under Diagram folder and add to git rev…","fileTypesAndContributionMap":{}}]}],"radeon2525":[{"date":"2024-03-07","commitResults":[{"hash":"c26e91116edc3b8c920a84a5f1b343e14c6c87a7","isMergeCommit":false,"messageTitle":"Added non functional requirements","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":138,"deletions":74}}},{"hash":"a804a00762f779d62d05e6459d9d1aecd1af82c0","isMergeCommit":false,"messageTitle":"Add use case-add contacts","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":19,"deletions":1}}}]},{"date":"2024-03-09","commitResults":[{"hash":"11fdeedeb47cb3cf3fe23d1617d451ade9096aed","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-contacts","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"812cbde3bffc72892e26ff97e41b2cdd1d785d0a","isMergeCommit":true,"messageTitle":"Merge pull request #24 from radeon2525/add-contacts","messageBody":"Add use case-add contacts","fileTypesAndContributionMap":{}}]},{"date":"2024-03-11","commitResults":[{"hash":"fa39c44099ab9fe131e2f269152c852ebda35feb","isMergeCommit":false,"messageTitle":"Add TagCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":58,"deletions":0},"test-code":{"insertions":5,"deletions":0}}}]},{"date":"2024-03-16","commitResults":[{"hash":"f4d8a6c8c2485572c39d944c128f3998a18ab7d0","isMergeCommit":false,"messageTitle":"Add test cases for AddCommand and LogicManager","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1},"test-code":{"insertions":40,"deletions":1}}},{"hash":"55783b650b8ad6a292172724d7badc50bd48743c","isMergeCommit":false,"messageTitle":"Fix style issues","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":3}}},{"hash":"c04b00c60e48bd4cd84b605114e831d4d4e06192","isMergeCommit":false,"messageTitle":"FIx unused import statement","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":2}}}]},{"date":"2024-03-18","commitResults":[{"hash":"68933d1ab2212d4f62d166ec877b936d920cee05","isMergeCommit":true,"messageTitle":"Merge pull request #40 from radeon2525/add-contacts-1.2","messageBody":"Add test cases for AddCommand and LogicManager","fileTypesAndContributionMap":{}},{"hash":"ac4c9b909115aa9a4281827909beaa6b9ae4c916","isMergeCommit":false,"messageTitle":"Add undo and redo functionality","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":422,"deletions":29},"test-code":{"insertions":83,"deletions":32}}},{"hash":"983cb8e8fdabef88080208c6364d4be83e1511af","isMergeCommit":false,"messageTitle":"Fix style issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":230,"deletions":233}}},{"hash":"e9476ac55707935d9570ee974be6ef7c21249e92","isMergeCommit":false,"messageTitle":"Fix InvalidationListenerManager style","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":48,"deletions":48}}},{"hash":"5dca2e8725da1c28505eb6d36976d54bde04a13b","isMergeCommit":false,"messageTitle":"Add newline","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":2}}},{"hash":"90ec28516205a7bc34e319595d029c62bf6333b4","isMergeCommit":false,"messageTitle":"Style fixes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"aebc14aa8c3ccbb0d43be5b2aa7ceda5bca31bad","isMergeCommit":false,"messageTitle":"Fix style errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":14}}},{"hash":"dc7983f931203fdaf1b780c854adf86d626c028a","isMergeCommit":false,"messageTitle":"Add import statements in AddressBookParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":0}}},{"hash":"25bdcac4f211c5e3fb39c9e098657218fb757102","isMergeCommit":false,"messageTitle":"Fix import statement ordering","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}},{"hash":"899d0fb03035dd0133b8c746aee8c1703705c71b","isMergeCommit":false,"messageTitle":"Fix lexicographic ordering","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"088cff83b530d37ce817429ef562d613438f6e66","isMergeCommit":false,"messageTitle":"Change execute method","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":11,"deletions":11}}},{"hash":"dd267c44a0ddb442d142ec95c116885e99d88d48","isMergeCommit":false,"messageTitle":"Remove unused statement","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"cc867e6fb49349bd59f10485756a7e3ff36063df","isMergeCommit":false,"messageTitle":"Change AddCommandTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":260,"deletions":26}}},{"hash":"ac7ac9d5cecff50c669d158aeb96f181d702f158","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into undo-redo","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"4ac5daa7c5581d21b3cef7024df90d4a7ec50689","isMergeCommit":false,"messageTitle":"Fix testcase","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"1ae34ce0eee259b67c9ca5e0fd09582eb2c1f64e","isMergeCommit":true,"messageTitle":"Merge branch \u0027undo-redo\u0027 of https://github.com/radeon2525/tp into undo-redo","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"11c7fec6e5f00242e20eb702a0a6c37b225741b7","isMergeCommit":false,"messageTitle":"Fix testcase","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":1}}},{"hash":"ea0bca007fbb05f8f9025b2ee40205808be8685e","isMergeCommit":false,"messageTitle":"Fix style issues","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":14,"deletions":248}}},{"hash":"c1d343aa34141dc0351a15b999f8cbab498ae4a2","isMergeCommit":false,"messageTitle":"Fix bugs","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":102,"deletions":105}}}]},{"date":"2024-03-19","commitResults":[{"hash":"f3a672825d7fd5428c9dc8bc1324759514a37900","isMergeCommit":false,"messageTitle":"Fix style issues","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":11,"deletions":21}}},{"hash":"2d1e4739829d86b2dc8682e3365a0d4cd3e15ee9","isMergeCommit":false,"messageTitle":"Fix styling","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":3}}},{"hash":"b6890cc0986cfb6f9066c35f7174aeeb7995799b","isMergeCommit":false,"messageTitle":"Fix styling","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":49}}},{"hash":"ca336496439723ecf3b60706776edfca565156d4","isMergeCommit":false,"messageTitle":"Fix styling","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":50}}},{"hash":"ec38dcb8cff1fad9c2e0049629193240b1530423","isMergeCommit":false,"messageTitle":"Remove redundant methods","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":30}}},{"hash":"32a0b0a1ccb6863c0875578fe8f3cb2f40a0d379","isMergeCommit":false,"messageTitle":"Fix","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"aae418a367e0e6ed1694073ab92f4ebca30131d8","isMergeCommit":false,"messageTitle":"Add CommandHistoryTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":79,"deletions":0}}},{"hash":"15d8644709215cb75afe2ddac2be30f26d140419","isMergeCommit":false,"messageTitle":"Fix","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}},{"hash":"c9cb32ebb2f4051074ef74828fda9bc2230880fe","isMergeCommit":false,"messageTitle":"Add InvalidationListenerManagerTest","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":37,"deletions":0},"test-code":{"insertions":72,"deletions":0}}},{"hash":"f9c2030eb89e2c3f0c2c63beeb72849b82f6e49e","isMergeCommit":false,"messageTitle":"Fix style issues","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":72,"deletions":72}}},{"hash":"b78b4324d994951f106f711c3ca52182eb9c428f","isMergeCommit":false,"messageTitle":"Add VersionedAddressBookTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":298,"deletions":0}}},{"hash":"cb7b917887fe25972992ce5d134e8fd2c5535329","isMergeCommit":false,"messageTitle":"Change ModelManagerTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":0}}},{"hash":"a985704ac3138e392efc025dbcd69b6bb70b7a39","isMergeCommit":false,"messageTitle":"Add tests for Undo and Redo","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":103,"deletions":0}}},{"hash":"a0470da22626b42bb8d682e764de26921bbdebb6","isMergeCommit":false,"messageTitle":"Add tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":43,"deletions":0}}},{"hash":"1e95263915ba8eb6fd35407b8dc4377a6aa6f2da","isMergeCommit":false,"messageTitle":"Fix","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":1}}},{"hash":"9ab1f0b5c5292810b7dc200971510c5ac69a982c","isMergeCommit":false,"messageTitle":"Remove redundant method","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":31}}},{"hash":"9b22ee25b6d4472c5f37223d4da33cdd7340d148","isMergeCommit":false,"messageTitle":"Add testcase","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":8},"test-code":{"insertions":13,"deletions":8}}},{"hash":"c815e5fe278e85845ef6748391face3effbf9af3","isMergeCommit":false,"messageTitle":"Fix","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":11,"deletions":1}}},{"hash":"78b4f6553c7b75e47d315c1f7683de76644e241d","isMergeCommit":false,"messageTitle":"Fix","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"19ba4a69a6c02f1942a74a8b01b04549b66ca106","isMergeCommit":false,"messageTitle":"fix","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}},{"hash":"7a60849c79d5798c1310e6e16453dc9b237868df","isMergeCommit":false,"messageTitle":"Fix","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":94,"deletions":1}}},{"hash":"997ec6b0e532b83a80f180a5674506ec073b3438","isMergeCommit":false,"messageTitle":"Fix","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":12,"deletions":12}}},{"hash":"b33bde607f5658aa8e6cbe66e23727a1af98eccf","isMergeCommit":false,"messageTitle":"Fix","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":13,"deletions":11}}},{"hash":"ef64296a734d40f51839ab384e9e81a43b3e7f9a","isMergeCommit":false,"messageTitle":"fix","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":2}}},{"hash":"41b41cdba3eb64fe4e30621942ee10d5c5112a88","isMergeCommit":false,"messageTitle":"fix","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":0}}}]},{"date":"2024-03-20","commitResults":[{"hash":"dc871e7befcf475f221fbd33b44f7fa229f63323","isMergeCommit":false,"messageTitle":"Fixed indicateModified method","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":25,"deletions":12}}},{"hash":"87d0913c9d38635dff5f3d1c1a9b9fbaea14aa53","isMergeCommit":false,"messageTitle":"Fix","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"fc45214f00eb253f59e8352cb164dd6203392790","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into undo-redo","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"23f834e96cf11422d1c104f00e06a34a10c5962f","isMergeCommit":false,"messageTitle":"Fix Tagging","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":18,"deletions":7},"test-code":{"insertions":6,"deletions":26}}},{"hash":"6d5c7d665d48f5ace5b1cc10faaa883314f8da34","isMergeCommit":false,"messageTitle":"fix","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"abea10f995c101f39689a5cd37f801981e0804af","isMergeCommit":false,"messageTitle":"fix","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":4}}},{"hash":"e4458c5c336c1752393da22b1fad6e8a69bad0c7","isMergeCommit":false,"messageTitle":"fix","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"139548a0eef87061f5aab0b87e5db8c9b266fdaa","isMergeCommit":false,"messageTitle":"Add tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3},"test-code":{"insertions":69,"deletions":0}}},{"hash":"e0b5b6b5126fc1046a7f21c5cd9812bd629eb1ee","isMergeCommit":false,"messageTitle":"fix","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"5148f5536ab841e27a35462d03a1ba99e4be7211","isMergeCommit":false,"messageTitle":"fix","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":2}}},{"hash":"e377c0a3c5d7391735e9410cd9978094903f451b","isMergeCommit":false,"messageTitle":"fix","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}},{"hash":"0d6ba9adca101603ab673db46c79e2773fc9daa0","isMergeCommit":true,"messageTitle":"Merge pull request #48 from radeon2525/undo-redo","messageBody":"Add undo and redo functionality","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"d985b4372addafaa126e6c6bf3abffab38c038b3","isMergeCommit":false,"messageTitle":"Fix for tag and untag","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":0}}},{"hash":"e015b64ee886665a795d0ed839fd6ce141ab5273","isMergeCommit":false,"messageTitle":"fix","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":18}}},{"hash":"ffb79e262a0c5546ed782f0d443b6b17ee623209","isMergeCommit":false,"messageTitle":"fix","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":3}}},{"hash":"0f2044b809eb507c77ac89afce201c26474ebeb0","isMergeCommit":true,"messageTitle":"Merge pull request #57 from radeon2525/master","messageBody":"Fix for tag and untag","fileTypesAndContributionMap":{}}]},{"date":"2024-03-22","commitResults":[{"hash":"e8a163c0a62206a9ce4f9b73769c18b4da406264","isMergeCommit":false,"messageTitle":"Add puml files for undo and redo","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":36,"deletions":0}}},{"hash":"e9fc989eac058d8de63d81f7ba332e453deb9b38","isMergeCommit":false,"messageTitle":"style fix","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":36,"deletions":36}}},{"hash":"4f531a68833ccd4ed5cf279c987df7febce78643","isMergeCommit":true,"messageTitle":"Merge pull request #61 from radeon2525/master","messageBody":"Add puml files for undo and redo","fileTypesAndContributionMap":{}}]}],"miffi":[{"date":"2024-02-24","commitResults":[{"hash":"c2e81d65d4cccdb3ed49d85508e1a72a4fbc4b86","isMergeCommit":false,"messageTitle":"Rename doc references of AB-3 to OfficeHarbor","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":20,"deletions":20}}},{"hash":"28789c919dd4b31b65c7aa8ed09a2dd87cc21ded","isMergeCommit":true,"messageTitle":"Merge pull request #1 from miffi/rename-codebase","messageBody":"Rename doc references of AB-3 to OfficeHarbor","fileTypesAndContributionMap":{}}]},{"date":"2024-03-06","commitResults":[{"hash":"c0eb71a6449f317ce92e27565041be7ecf07b425","isMergeCommit":true,"messageTitle":"Merge pull request #8 from JukeBoxK/master","messageBody":"Update the User Guide","fileTypesAndContributionMap":{}}]},{"date":"2024-03-08","commitResults":[{"hash":"fe86fdfaa26d0b484af8726b10eaf57b64081c85","isMergeCommit":false,"messageTitle":"Add a use case for tagging","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":26,"deletions":1}}}]},{"date":"2024-03-09","commitResults":[{"hash":"9d6866fd753f58ab68dbebbd56f6a30f5dce2138","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into NFR","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"7fced1ccd306a516e5f2c3c36442e091fa817627","isMergeCommit":true,"messageTitle":"Merge pull request #23 from radeon2525/NFR","messageBody":"Add non functional requirements","fileTypesAndContributionMap":{}},{"hash":"4680017e1aa3b75029a6c86dab32e7ddfdf9b86f","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into port-user-stories-and-product-scope","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"27c9c32db685a05811b8a234035b1626f6802cb9","isMergeCommit":true,"messageTitle":"Merge pull request #17 from Derekljh/port-user-stories-and-product-scope","messageBody":"Port user stories and product scope","fileTypesAndContributionMap":{}},{"hash":"513d35b037cedeec1c09cb8d55edd7e340b7e061","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-UseCase-DeleteTag","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"474f28efd015b6aac0e21a6bae33ca003cd276f6","isMergeCommit":true,"messageTitle":"Merge pull request #27 from JukeBoxK/branch-UseCase-DeleteTag","messageBody":"Add use case for deleting tag","fileTypesAndContributionMap":{}},{"hash":"ad73271145db2cdbd29bf544525f429f638b1a4c","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into Use-Case-Remove-Contacts","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ff8243bdf16a4e9aac2ec018720a4576a3118d3a","isMergeCommit":true,"messageTitle":"Merge pull request #15 from Derekljh/Use-Case-Remove-Contacts","messageBody":"Add Use Case - Remove Contact","fileTypesAndContributionMap":{}}]},{"date":"2024-03-16","commitResults":[{"hash":"b215c54550100887b54dc08b9b56bfeb7f859cdf","isMergeCommit":false,"messageTitle":"Add untag command","messageBody":"As a counterpart to the tagging command, this command untags a user from\nsome tags.\n\nThis implementation can do multiple tags at the same time to amke\nremoving tags faster. It throws an error on non matching tags, but that\ncan be changed if that is not desirable e.g. if batch operations are\nintroduced.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":142,"deletions":1},"test-code":{"insertions":157,"deletions":0}}},{"hash":"a1f6f8b401b3fa7ac2676095c3a41c91cc3292ca","isMergeCommit":false,"messageTitle":"Add developer roles","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":19,"deletions":6}}},{"hash":"096fd31e707c2b98991a57a67bfa189c75c7d84c","isMergeCommit":false,"messageTitle":"Increase code coverage","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":40,"deletions":22}}},{"hash":"da091a46ec09cad7956e6ce803268cc4f25f63c4","isMergeCommit":false,"messageTitle":"Fix code style","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":8,"deletions":8}}}]},{"date":"2024-03-19","commitResults":[{"hash":"d1b84a19e8f8a224e8eb1680dbda266bbbf08a20","isMergeCommit":true,"messageTitle":"Merge pull request #41 from miffi/dev-roles","messageBody":"Add developer roles","fileTypesAndContributionMap":{}},{"hash":"d3ff94c66ed01f3c6106fa9187423072fcaf9bd7","isMergeCommit":true,"messageTitle":"Merge pull request #38 from miffi/untag","messageBody":"Add untag command","fileTypesAndContributionMap":{}},{"hash":"3cd570236a2ab168ab19599b8bd4d1f336bfefcb","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into Tagging-contacts","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f96276d5001fb9e420c53c05513394b25e3cadb1","isMergeCommit":true,"messageTitle":"Merge pull request #32 from Derekljh/Tagging-contacts","messageBody":"Tagging contacts","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"3b0e4fb887d9c100f56ef56d5d29f78ad9275040","isMergeCommit":true,"messageTitle":"Merge pull request #50 from The-Dudeski/master","messageBody":"Changed prefixes","fileTypesAndContributionMap":{}}]}],"JukeBoxK":[{"date":"2024-02-29","commitResults":[{"hash":"221ddb4c24fb3fc650d1590e6cce283eba688a4c","isMergeCommit":false,"messageTitle":"Update the User Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":85,"deletions":70}}}]},{"date":"2024-03-09","commitResults":[{"hash":"16a942fb1739dad3348aed1eef2aa0159241f012","isMergeCommit":false,"messageTitle":"Add use case for deleting tag","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":29,"deletions":0}}},{"hash":"dd455d80900288969d93008522db5a6792c7d13d","isMergeCommit":true,"messageTitle":"Merge pull request #28 from The-Dudeski/master","messageBody":"Added Viewing Contacts Use Case","fileTypesAndContributionMap":{}}]},{"date":"2024-03-13","commitResults":[{"hash":"2f3b74d0d3f32f5d70225deb77e43f7d545bf840","isMergeCommit":false,"messageTitle":"Change output message for list command","messageBody":"The list command displays \"Listed all persons\" for all outputs.\n\nIt is not specific enough for the output list.\n\nLet\u0027s add the message \"The list is empty\" for empty lists instead.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":2}}},{"hash":"e91a02e930ae0e6dab18b814658156079044839a","isMergeCommit":false,"messageTitle":"Address style issue in code of List Command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"8ded7e9e5e257d69a1215871ce9d8da53b9c73ad","isMergeCommit":false,"messageTitle":"Address test issue with list command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-16","commitResults":[{"hash":"26f0cd21efa86b584f203a7e7398c277cf975d30","isMergeCommit":true,"messageTitle":"Merge pull request #30 from JukeBoxK/branch-ViewContact","messageBody":"Change output message for list command","fileTypesAndContributionMap":{}}]},{"date":"2024-03-20","commitResults":[{"hash":"4ef08bef397742ca3df0b80c18ee749969123bf3","isMergeCommit":false,"messageTitle":"Reorder the UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":50,"deletions":51}}},{"hash":"dc3578499f9528423add90db06b45aaff1c3574e","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-Documentation","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"14a7395d4140fc84a6ff748885c65cbed99070bb","isMergeCommit":false,"messageTitle":"Add information about undo/redo into the documentation","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":107,"deletions":46}}},{"hash":"094ec3dccc788b4d4002d50f65d566c5a6c903e4","isMergeCommit":false,"messageTitle":"Add EOF for UserGuide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"929e3ca8d816f44a0facef8b0a3dc9fb8529f18b","isMergeCommit":false,"messageTitle":"Change the tag and untag to the correct format","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":9}}},{"hash":"148df76c69a0de2d17197cc86375ad942a261314","isMergeCommit":true,"messageTitle":"Merge pull request #52 from JukeBoxK/branch-Documentation","messageBody":"Add information about undo/redo into the documentation","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"4bfcbc43aa7ba418cba4ba8e14371036a12ae014","isMergeCommit":false,"messageTitle":"Change the documentation to fit the new prefix","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":43,"deletions":36}}},{"hash":"d190c0d8f49f5a8fd7e553d9c48d69cf22d78fdd","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-W13-2/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a8f85b68a1d7ce17493248c3b807c2add459e793","isMergeCommit":false,"messageTitle":"Fix issue of no screenshot in user guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":7}}},{"hash":"4ff517f09f52f091e6bf09bc7dcec5092117a980","isMergeCommit":true,"messageTitle":"Merge pull request #58 from JukeBoxK/branch-Documentation","messageBody":"Branch documentation","tags":["v1.2"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"The-Dudeski":{"docs":32,"functional-code":10,"test-code":2},"Derekljh":{"docs":74,"functional-code":116,"test-code":140},"radeon2525":{"docs":158,"functional-code":453,"test-code":905},"miffi":{"docs":36,"functional-code":138,"test-code":150,"other":1},"JukeBoxK":{"docs":226,"functional-code":5,"test-code":1}},"authorContributionVariance":{"The-Dudeski":109.058304,"Derekljh":11964.134,"radeon2525":166756.02,"miffi":5417.955,"JukeBoxK":3336.386},"authorDisplayNameMap":{"The-Dudeski":"CS2103T-W13-2 DUDE..NZIO","Derekljh":"CS2103T-W13-2 LEON..EREK","radeon2525":"CS2103T-W13-2 MAHI..SHIM","miffi":"CS2103T-W13-2 AHMA..AQUE","JukeBoxK":"CS2103T-W13-2 KYAW..YINT"}} diff --git a/archive.zip b/archive.zip index 98a28af9..5782e9b4 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 796e2de9..8da31338 100644 --- a/reposense-logs/reposense.log.0 +++ b/reposense-logs/reposense.log.0 @@ -1,56 +1,56 @@ -Mar 22, 2024 10:04:47 AM reposense.system.LogsManager addFileHandler +Mar 22, 2024 2:19:07 PM reposense.system.LogsManager addFileHandler INFO: Log temp folder has been successfully created -Mar 22, 2024 10:04:47 AM reposense.parser.CsvParser validateHeader +Mar 22, 2024 2:19:07 PM reposense.parser.CsvParser validateHeader INFO: Parsed header of CSV file, repo-config.csv, and recognized columns: Ignore Standalone Config, Repository's Location, Branch, Shallow Cloning, File formats, Ignore Glob List, Ignore Authors List, Find Previous Authors, Ignore Commits List -Mar 22, 2024 10:04:47 AM reposense.parser.CsvParser validateHeader +Mar 22, 2024 2:19:08 PM reposense.parser.CsvParser validateHeader INFO: Parsed header of CSV file, author-config.csv, and recognized columns: Author's Emails, Repository's Location, Author's GitHub ID, Branch, Author's Display Name, Ignore Glob List, Author's Git Author Name -Mar 22, 2024 10:04:47 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Mar 22, 2024 2:19:08 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias guohuang found. The alias will belong to the last author - guohuang88 -Mar 22, 2024 10:04:47 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Mar 22, 2024 2:19:08 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias amanzainal found. The alias will belong to the last author - amanzainal -Mar 22, 2024 10:04:47 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Mar 22, 2024 2:19:08 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias shuyuan found. The alias will belong to the last author - legionlegion -Mar 22, 2024 10:04:47 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Mar 22, 2024 2:19:08 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias chen wenlong found. The alias will belong to the last author - c-wenlong -Mar 22, 2024 10:04:47 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Mar 22, 2024 2:19:08 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias alphajae11 found. The alias will belong to the last author - alphajae11 -Mar 22, 2024 10:04:47 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Mar 22, 2024 2:19:08 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias pughal found. The alias will belong to the last author - Pughal77 -Mar 22, 2024 10:04:47 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Mar 22, 2024 2:19:08 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias rah found. The alias will belong to the last author - rahhulleee -Mar 22, 2024 10:04:47 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Mar 22, 2024 2:19:08 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jayne1010 found. The alias will belong to the last author - Jayne1010 -Mar 22, 2024 10:04:47 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Mar 22, 2024 2:19:08 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias miffi found. The alias will belong to the last author - miffi -Mar 22, 2024 10:04:47 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Mar 22, 2024 2:19:08 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias windofbitter found. The alias will belong to the last author - Windofbitter -Mar 22, 2024 10:04:47 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Mar 22, 2024 2:19:08 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias liu jiayao found. The alias will belong to the last author - ljy0422 -Mar 22, 2024 10:04:47 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Mar 22, 2024 2:19:08 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias guohuang found. The alias will belong to the last author - guohuang88 -Mar 22, 2024 10:04:47 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Mar 22, 2024 2:19:08 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias amanzainal found. The alias will belong to the last author - amanzainal -Mar 22, 2024 10:04:47 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Mar 22, 2024 2:19:08 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias shuyuan found. The alias will belong to the last author - legionlegion -Mar 22, 2024 10:04:47 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Mar 22, 2024 2:19:08 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias alphajae11 found. The alias will belong to the last author - alphajae11 -Mar 22, 2024 10:04:47 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Mar 22, 2024 2:19:08 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias pughal found. The alias will belong to the last author - Pughal77 -Mar 22, 2024 10:04:47 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Mar 22, 2024 2:19:08 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias liu jiayao found. The alias will belong to the last author - ljy0422 -Mar 22, 2024 10:04:47 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Mar 22, 2024 2:19:08 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias chen wenlong found. The alias will belong to the last author - c-wenlong -Mar 22, 2024 10:04:47 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Mar 22, 2024 2:19:08 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias windofbitter found. The alias will belong to the last author - Windofbitter -Mar 22, 2024 10:04:47 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Mar 22, 2024 2:19:08 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias rah found. The alias will belong to the last author - rahhulleee -Mar 22, 2024 10:04:47 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Mar 22, 2024 2:19:08 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jayne1010 found. The alias will belong to the last author - Jayne1010 -Mar 22, 2024 10:04:47 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Mar 22, 2024 2:19:08 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias miffi found. The alias will belong to the last author - miffi -Mar 22, 2024 10:04:47 AM reposense.parser.CsvParser validateHeader +Mar 22, 2024 2:19:08 PM reposense.parser.CsvParser validateHeader INFO: Parsed header of CSV file, group-config.csv, and recognized columns: Globs, Repository's Location, Group Name -Mar 22, 2024 10:04:47 AM reposense.git.GitConfig getGlobalGitLfsConfig +Mar 22, 2024 2:19:08 PM reposense.git.GitConfig getGlobalGitLfsConfig WARNING: Could not get global git lfs config java.lang.RuntimeException: reposense.system.CommandRunnerProcessException: Error returned from command git config --global --list on path . : fatal: unable to read config file '/home/runner/.gitconfig': No such file or directory @@ -66,1663 +66,1663 @@ fatal: unable to read config file '/home/runner/.gitconfig': No such file or dir at reposense.system.CommandRunner.runCommand(CommandRunner.java:21) ... 3 more -Mar 22, 2024 10:04:47 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T16-1/tp.git... -Mar 22, 2024 10:04:47 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F13-3/tp.git... -Mar 22, 2024 10:04:47 AM reposense.report.RepoCloner spawnCloneProcess +Mar 22, 2024 2:19:08 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103-F15-2/tp.git... -Mar 22, 2024 10:04:47 AM reposense.report.RepoCloner spawnCloneProcess +Mar 22, 2024 2:19:08 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F13-3/tp.git... +Mar 22, 2024 2:19:08 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W10-4/tp.git... -Mar 22, 2024 10:04:47 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:08 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T16-1/tp.git... +Mar 22, 2024 2:19:08 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F13-3/tp.git to complete... +Mar 22, 2024 2:19:08 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T16-1/tp.git to complete... -Mar 22, 2024 10:04:47 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:08 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W10-4/tp.git to complete... -Mar 22, 2024 10:04:47 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F13-3/tp.git to complete... -Mar 22, 2024 10:04:48 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:08 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103-F15-2/tp.git to complete... -Mar 22, 2024 10:04:48 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:10 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103-F15-2/tp.git completed! -Mar 22, 2024 10:04:48 AM reposense.report.RepoCloner spawnCloneProcess +Mar 22, 2024 2:19:10 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F10-3/tp.git... -Mar 22, 2024 10:04:48 AM reposense.report.ReportGenerator analyzeRepos +Mar 22, 2024 2:19:10 PM reposense.report.ReportGenerator analyzeRepos INFO: [1/92] Analyzing https://github.com/AY2324S2-CS2103-F15-2/tp.git (master)... -Mar 22, 2024 10:04:49 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:10 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F10-3/tp.git to complete... -Mar 22, 2024 10:04:49 AM reposense.report.ReportGenerator updateRepoConfig +Mar 22, 2024 2:19:10 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103-F15-2/tp.git (master) does not contain a standalone config file. -Mar 22, 2024 10:04:49 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 22, 2024 2:19:10 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-F15-2/tp.git (master)... -Mar 22, 2024 10:04:49 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:10 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-T16-1/tp.git completed! -Mar 22, 2024 10:04:49 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-F13-3/tp.git completed! -Mar 22, 2024 10:04:49 AM reposense.report.ReportGenerator analyzeRepos -INFO: [2/92] Analyzing https://github.com/AY2324S2-CS2103T-T16-1/tp.git (master)... -Mar 22, 2024 10:04:49 AM reposense.report.ReportGenerator analyzeRepos -INFO: [3/92] Analyzing https://github.com/AY2324S2-CS2103T-F13-3/tp.git (master)... -Mar 22, 2024 10:04:49 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F10-2/tp.git... -Mar 22, 2024 10:04:49 AM reposense.report.RepoCloner spawnCloneProcess +Mar 22, 2024 2:19:10 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W13-4/tp.git... -Mar 22, 2024 10:04:49 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:10 PM reposense.report.ReportGenerator analyzeRepos +INFO: [2/92] Analyzing https://github.com/AY2324S2-CS2103T-T16-1/tp.git (master)... +Mar 22, 2024 2:19:10 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W13-4/tp.git to complete... -Mar 22, 2024 10:04:49 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:10 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-F13-3/tp.git completed! +Mar 22, 2024 2:19:10 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F10-2/tp.git... +Mar 22, 2024 2:19:10 PM reposense.report.ReportGenerator analyzeRepos +INFO: [3/92] Analyzing https://github.com/AY2324S2-CS2103T-F13-3/tp.git (master)... +Mar 22, 2024 2:19:10 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F10-2/tp.git to complete... -Mar 22, 2024 10:04:49 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-F13-3/tp.git (master) does not contain a standalone config file. -Mar 22, 2024 10:04:49 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F13-3/tp.git (master)... -Mar 22, 2024 10:04:49 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-T16-1/tp.git (master) does not contain a standalone config file. -Mar 22, 2024 10:04:49 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T16-1/tp.git (master)... -Mar 22, 2024 10:04:49 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:10 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-W10-4/tp.git completed! -Mar 22, 2024 10:04:50 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103-F15-3/tp.git... -Mar 22, 2024 10:04:50 AM reposense.report.ReportGenerator analyzeRepos +Mar 22, 2024 2:19:10 PM reposense.report.ReportGenerator analyzeRepos INFO: [4/92] Analyzing https://github.com/AY2324S2-CS2103T-W10-4/tp.git (master)... -Mar 22, 2024 10:04:50 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:10 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103-F15-3/tp.git... +Mar 22, 2024 2:19:10 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-T16-1/tp.git (master) does not contain a standalone config file. +Mar 22, 2024 2:19:10 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103-F15-3/tp.git to complete... -Mar 22, 2024 10:04:50 AM reposense.report.ReportGenerator updateRepoConfig +Mar 22, 2024 2:19:10 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T16-1/tp.git (master)... +Mar 22, 2024 2:19:10 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-F13-3/tp.git (master) does not contain a standalone config file. +Mar 22, 2024 2:19:10 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F13-3/tp.git (master)... +Mar 22, 2024 2:19:10 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-W10-4/tp.git (master) does not contain a standalone config file. -Mar 22, 2024 10:04:50 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 22, 2024 2:19:10 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W10-4/tp.git (master)... -Mar 22, 2024 10:04:51 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-F10-3/tp.git completed! -Mar 22, 2024 10:04:51 AM reposense.report.RepoCloner spawnCloneProcess +Mar 22, 2024 2:19:12 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103-F15-3/tp.git completed! +Mar 22, 2024 2:19:12 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103-F15-1/tp.git... -Mar 22, 2024 10:04:51 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:12 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103-F15-1/tp.git to complete... -Mar 22, 2024 10:04:51 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:12 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-W13-4/tp.git completed! -Mar 22, 2024 10:04:51 AM reposense.report.RepoCloner spawnCloneProcess +Mar 22, 2024 2:19:12 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T16-2/tp.git... -Mar 22, 2024 10:04:51 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T16-2/tp.git to complete... -Mar 22, 2024 10:04:51 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103-F15-3/tp.git completed! -Mar 22, 2024 10:04:51 AM reposense.report.RepoCloner spawnCloneProcess +Mar 22, 2024 2:19:12 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-F10-3/tp.git completed! +Mar 22, 2024 2:19:12 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T10-1/tp.git... -Mar 22, 2024 10:04:51 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:12 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T16-2/tp.git to complete... +Mar 22, 2024 2:19:12 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T10-1/tp.git to complete... -Mar 22, 2024 10:04:52 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:12 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-F10-2/tp.git completed! -Mar 22, 2024 10:04:52 AM reposense.report.RepoCloner spawnCloneProcess +Mar 22, 2024 2:19:12 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F13-2/tp.git... -Mar 22, 2024 10:04:52 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F13-2/tp.git to complete... -Mar 22, 2024 10:04:52 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 22, 2024 2:19:12 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-F15-2/tp.git (master)... -Mar 22, 2024 10:04:52 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-T16-2/tp.git completed! -Mar 22, 2024 10:04:53 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F13-4/tp.git... -Mar 22, 2024 10:04:53 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F13-4/tp.git to complete... -Mar 22, 2024 10:04:53 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 22, 2024 2:19:13 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F13-2/tp.git to complete... +Mar 22, 2024 2:19:13 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-F15-2/tp.git (master)... -Mar 22, 2024 10:04:53 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:13 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103-F15-2/tp.git (master) completed! +Mar 22, 2024 2:19:13 PM reposense.report.ReportGenerator analyzeRepos +INFO: [5/92] Analyzing https://github.com/AY2324S2-CS2103-F15-3/tp.git (master)... +Mar 22, 2024 2:19:13 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103-F15-3/tp.git (master) does not contain a standalone config file. +Mar 22, 2024 2:19:13 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-F15-3/tp.git (master)... +Mar 22, 2024 2:19:14 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103-F15-1/tp.git completed! -Mar 22, 2024 10:04:53 AM reposense.report.RepoCloner spawnCloneProcess +Mar 22, 2024 2:19:14 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F13-4/tp.git... +Mar 22, 2024 2:19:14 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F13-4/tp.git to complete... +Mar 22, 2024 2:19:14 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-T16-2/tp.git completed! +Mar 22, 2024 2:19:14 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W10-3/tp.git... -Mar 22, 2024 10:04:53 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:14 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W10-3/tp.git to complete... -Mar 22, 2024 10:04:53 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103-F15-2/tp.git (master) completed! -Mar 22, 2024 10:04:53 AM reposense.report.ReportGenerator analyzeRepos -INFO: [5/92] Analyzing https://github.com/AY2324S2-CS2103T-F10-3/tp.git (master)... -Mar 22, 2024 10:04:53 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-F10-3/tp.git (master) does not contain a standalone config file. -Mar 22, 2024 10:04:53 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F10-3/tp.git (master)... -Mar 22, 2024 10:04:54 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:14 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W10-4/tp.git (master)... +Mar 22, 2024 2:19:15 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-F13-2/tp.git completed! -Mar 22, 2024 10:04:54 AM reposense.report.RepoCloner spawnCloneProcess +Mar 22, 2024 2:19:15 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T13-2/tp.git... -Mar 22, 2024 10:04:54 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:15 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T13-2/tp.git to complete... -Mar 22, 2024 10:04:55 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-F13-4/tp.git completed! -Mar 22, 2024 10:04:55 AM reposense.report.RepoCloner spawnCloneProcess +Mar 22, 2024 2:19:15 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W10-4/tp.git (master)... +Mar 22, 2024 2:19:15 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-W10-4/tp.git (master) completed! +Mar 22, 2024 2:19:15 PM reposense.report.ReportGenerator analyzeRepos +INFO: [6/92] Analyzing https://github.com/AY2324S2-CS2103T-W13-4/tp.git (master)... +Mar 22, 2024 2:19:15 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-W13-4/tp.git (master) does not contain a standalone config file. +Mar 22, 2024 2:19:15 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W13-4/tp.git (master)... +Mar 22, 2024 2:19:16 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-T10-1/tp.git completed! +Mar 22, 2024 2:19:16 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T13-1/tp.git... -Mar 22, 2024 10:04:55 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:16 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T13-1/tp.git to complete... -Mar 22, 2024 10:04:55 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-W10-3/tp.git completed! -Mar 22, 2024 10:04:55 AM reposense.report.RepoCloner spawnCloneProcess +Mar 22, 2024 2:19:16 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-F13-4/tp.git completed! +Mar 22, 2024 2:19:16 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T10-2/tp.git... -Mar 22, 2024 10:04:55 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:16 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T10-2/tp.git to complete... -Mar 22, 2024 10:04:55 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-T10-1/tp.git completed! -Mar 22, 2024 10:04:55 AM reposense.report.RepoCloner spawnCloneProcess +Mar 22, 2024 2:19:16 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-W10-3/tp.git completed! +Mar 22, 2024 2:19:16 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F13-1/tp.git... -Mar 22, 2024 10:04:55 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:16 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F13-1/tp.git to complete... -Mar 22, 2024 10:04:56 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W10-4/tp.git (master)... -Mar 22, 2024 10:04:56 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:17 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-T13-2/tp.git completed! -Mar 22, 2024 10:04:56 AM reposense.report.RepoCloner spawnCloneProcess +Mar 22, 2024 2:19:17 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103-F15-4/tp.git... -Mar 22, 2024 10:04:56 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-T13-1/tp.git completed! -Mar 22, 2024 10:04:57 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:17 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103-F15-4/tp.git to complete... -Mar 22, 2024 10:04:57 AM reposense.report.RepoCloner spawnCloneProcess +Mar 22, 2024 2:19:17 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-F15-3/tp.git (master)... +Mar 22, 2024 2:19:18 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-F15-3/tp.git (master)... +Mar 22, 2024 2:19:18 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103-F15-3/tp.git (master) completed! +Mar 22, 2024 2:19:18 PM reposense.report.ReportGenerator analyzeRepos +INFO: [7/92] Analyzing https://github.com/AY2324S2-CS2103T-F10-3/tp.git (master)... +Mar 22, 2024 2:19:18 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-T13-1/tp.git completed! +Mar 22, 2024 2:19:18 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W13-3/tp.git... -Mar 22, 2024 10:04:57 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:18 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W13-3/tp.git to complete... -Mar 22, 2024 10:04:57 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W10-4/tp.git (master)... -Mar 22, 2024 10:04:57 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:18 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-F10-3/tp.git (master) does not contain a standalone config file. +Mar 22, 2024 2:19:18 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F10-3/tp.git (master)... +Mar 22, 2024 2:19:18 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-T10-2/tp.git completed! -Mar 22, 2024 10:04:57 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-W10-4/tp.git (master) completed! -Mar 22, 2024 10:04:57 AM reposense.report.RepoCloner spawnCloneProcess +Mar 22, 2024 2:19:18 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W13-2/tp.git... -Mar 22, 2024 10:04:57 AM reposense.report.ReportGenerator analyzeRepos -INFO: [6/92] Analyzing https://github.com/AY2324S2-CS2103T-W13-4/tp.git (master)... -Mar 22, 2024 10:04:57 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:18 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W13-2/tp.git to complete... -Mar 22, 2024 10:04:57 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-W13-4/tp.git (master) does not contain a standalone config file. -Mar 22, 2024 10:04:57 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W13-4/tp.git (master)... -Mar 22, 2024 10:04:57 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:18 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-F13-1/tp.git completed! -Mar 22, 2024 10:04:57 AM reposense.report.RepoCloner spawnCloneProcess +Mar 22, 2024 2:19:18 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T16-4/tp.git... -Mar 22, 2024 10:04:58 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:18 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T16-4/tp.git to complete... -Mar 22, 2024 10:04:58 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-W13-3/tp.git completed! -Mar 22, 2024 10:04:58 AM reposense.report.RepoCloner spawnCloneProcess +Mar 22, 2024 2:19:19 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F13-3/tp.git (master)... +Mar 22, 2024 2:19:19 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F13-3/tp.git (master)... +Mar 22, 2024 2:19:19 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103-F15-4/tp.git completed! +Mar 22, 2024 2:19:19 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W10-1/tp.git... -Mar 22, 2024 10:04:59 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:19 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-F13-3/tp.git (master) completed! +Mar 22, 2024 2:19:19 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W10-1/tp.git to complete... -Mar 22, 2024 10:04:59 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-W13-2/tp.git completed! -Mar 22, 2024 10:04:59 AM reposense.report.RepoCloner spawnCloneProcess +Mar 22, 2024 2:19:19 PM reposense.report.ReportGenerator analyzeRepos +INFO: [8/92] Analyzing https://github.com/AY2324S2-CS2103T-F10-2/tp.git (master)... +Mar 22, 2024 2:19:19 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-F10-2/tp.git (master) does not contain a standalone config file. +Mar 22, 2024 2:19:19 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F10-2/tp.git (master)... +Mar 22, 2024 2:19:20 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T16-1/tp.git (master)... +Mar 22, 2024 2:19:20 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-W13-3/tp.git completed! +Mar 22, 2024 2:19:20 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T13-3/tp.git... -Mar 22, 2024 10:04:59 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103-F15-4/tp.git completed! -Mar 22, 2024 10:04:59 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:20 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T13-3/tp.git to complete... -Mar 22, 2024 10:04:59 AM reposense.report.RepoCloner spawnCloneProcess +Mar 22, 2024 2:19:20 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-W13-2/tp.git completed! +Mar 22, 2024 2:19:20 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W13-4/tp.git (master)... +Mar 22, 2024 2:19:20 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T16-1/tp.git (master)... +Mar 22, 2024 2:19:20 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T13-4/tp.git... -Mar 22, 2024 10:04:59 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:20 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T16-1/tp.git (master) completed! +Mar 22, 2024 2:19:20 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T13-4/tp.git to complete... -Mar 22, 2024 10:04:59 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:20 PM reposense.report.ReportGenerator analyzeRepos +INFO: [9/92] Analyzing https://github.com/AY2324S2-CS2103-F15-1/tp.git (master)... +Mar 22, 2024 2:19:20 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103-F15-1/tp.git (master) does not contain a standalone config file. +Mar 22, 2024 2:19:20 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-F15-1/tp.git (master)... +Mar 22, 2024 2:19:20 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W13-4/tp.git (master)... +Mar 22, 2024 2:19:21 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-W13-4/tp.git (master) completed! +Mar 22, 2024 2:19:21 PM reposense.report.ReportGenerator analyzeRepos +INFO: [10/92] Analyzing https://github.com/AY2324S2-CS2103T-T16-2/tp.git (master)... +Mar 22, 2024 2:19:21 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-T16-4/tp.git completed! -Mar 22, 2024 10:04:59 AM reposense.report.RepoCloner spawnCloneProcess +Mar 22, 2024 2:19:21 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-T16-2/tp.git (master) does not contain a standalone config file. +Mar 22, 2024 2:19:21 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T16-2/tp.git (master)... +Mar 22, 2024 2:19:21 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W10-2/tp.git... -Mar 22, 2024 10:04:59 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:21 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W10-2/tp.git to complete... -Mar 22, 2024 10:05:00 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F10-3/tp.git (master)... -Mar 22, 2024 10:05:00 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F10-3/tp.git (master)... -Mar 22, 2024 10:05:00 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-T13-4/tp.git completed! -Mar 22, 2024 10:05:00 AM reposense.report.RepoCloner spawnCloneProcess +Mar 22, 2024 2:19:21 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-W10-1/tp.git completed! +Mar 22, 2024 2:19:21 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F10-1/tp.git... -Mar 22, 2024 10:05:00 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:21 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F10-1/tp.git to complete... -Mar 22, 2024 10:05:00 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-F10-3/tp.git (master) completed! -Mar 22, 2024 10:05:01 AM reposense.report.ReportGenerator analyzeRepos -INFO: [7/92] Analyzing https://github.com/AY2324S2-CS2103-F15-3/tp.git (master)... -Mar 22, 2024 10:05:01 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103-F15-3/tp.git (master) does not contain a standalone config file. -Mar 22, 2024 10:05:01 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-F15-3/tp.git (master)... -Mar 22, 2024 10:05:01 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-T13-3/tp.git completed! -Mar 22, 2024 10:05:01 AM reposense.report.RepoCloner spawnCloneProcess +Mar 22, 2024 2:19:22 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-T13-4/tp.git completed! +Mar 22, 2024 2:19:22 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F10-4/tp.git... -Mar 22, 2024 10:05:01 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-W10-1/tp.git completed! -Mar 22, 2024 10:05:01 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:22 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F10-4/tp.git to complete... -Mar 22, 2024 10:05:01 AM reposense.report.RepoCloner spawnCloneProcess +Mar 22, 2024 2:19:22 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-T13-3/tp.git completed! +Mar 22, 2024 2:19:22 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T16-3/tp.git... -Mar 22, 2024 10:05:01 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:22 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T16-3/tp.git to complete... -Mar 22, 2024 10:05:01 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:22 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-W10-2/tp.git completed! -Mar 22, 2024 10:05:01 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F13-3/tp.git (master)... -Mar 22, 2024 10:05:01 AM reposense.report.RepoCloner spawnCloneProcess +Mar 22, 2024 2:19:22 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103-F09-3/tp.git... -Mar 22, 2024 10:05:01 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:22 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103-F09-3/tp.git to complete... -Mar 22, 2024 10:05:02 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:23 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F10-3/tp.git (master)... +Mar 22, 2024 2:19:23 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F10-3/tp.git (master)... +Mar 22, 2024 2:19:23 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-F10-3/tp.git (master) completed! +Mar 22, 2024 2:19:23 PM reposense.report.ReportGenerator analyzeRepos +INFO: [11/92] Analyzing https://github.com/AY2324S2-CS2103T-F13-2/tp.git (master)... +Mar 22, 2024 2:19:23 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-F13-2/tp.git (master) does not contain a standalone config file. +Mar 22, 2024 2:19:23 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F13-2/tp.git (master)... +Mar 22, 2024 2:19:23 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-F10-1/tp.git completed! -Mar 22, 2024 10:05:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F13-3/tp.git (master)... -Mar 22, 2024 10:05:02 AM reposense.report.RepoCloner spawnCloneProcess +Mar 22, 2024 2:19:23 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T10-3/tp.git... -Mar 22, 2024 10:05:02 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:23 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T16-2/tp.git (master)... +Mar 22, 2024 2:19:23 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T10-3/tp.git to complete... -Mar 22, 2024 10:05:02 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-F13-3/tp.git (master) completed! -Mar 22, 2024 10:05:02 AM reposense.report.ReportGenerator analyzeRepos -INFO: [8/92] Analyzing https://github.com/AY2324S2-CS2103T-F10-2/tp.git (master)... -Mar 22, 2024 10:05:02 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:23 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F10-2/tp.git (master)... +Mar 22, 2024 2:19:23 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T16-2/tp.git (master)... +Mar 22, 2024 2:19:23 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T16-2/tp.git (master) completed! +Mar 22, 2024 2:19:23 PM reposense.report.ReportGenerator analyzeRepos +INFO: [12/92] Analyzing https://github.com/AY2324S2-CS2103T-T10-1/tp.git (master)... +Mar 22, 2024 2:19:24 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F10-2/tp.git (master)... +Mar 22, 2024 2:19:24 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-F10-2/tp.git (master) completed! +Mar 22, 2024 2:19:24 PM reposense.report.ReportGenerator analyzeRepos +INFO: [13/92] Analyzing https://github.com/AY2324S2-CS2103T-F13-4/tp.git (master)... +Mar 22, 2024 2:19:24 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-T10-1/tp.git (master) does not contain a standalone config file. +Mar 22, 2024 2:19:24 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T10-1/tp.git (master)... +Mar 22, 2024 2:19:24 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-F10-4/tp.git completed! -Mar 22, 2024 10:05:02 AM reposense.report.RepoCloner spawnCloneProcess +Mar 22, 2024 2:19:24 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103-F09-1/tp.git... -Mar 22, 2024 10:05:02 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-F10-2/tp.git (master) does not contain a standalone config file. -Mar 22, 2024 10:05:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F10-2/tp.git (master)... -Mar 22, 2024 10:05:02 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:24 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103-F09-1/tp.git to complete... -Mar 22, 2024 10:05:03 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-T16-3/tp.git completed! -Mar 22, 2024 10:05:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T16-1/tp.git (master)... -Mar 22, 2024 10:05:03 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:24 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-F13-4/tp.git (master) does not contain a standalone config file. +Mar 22, 2024 2:19:24 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F13-4/tp.git (master)... +Mar 22, 2024 2:19:24 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103-F09-3/tp.git completed! -Mar 22, 2024 10:05:03 AM reposense.report.RepoCloner spawnCloneProcess +Mar 22, 2024 2:19:24 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-T16-3/tp.git completed! +Mar 22, 2024 2:19:24 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103-F09-4/tp.git... -Mar 22, 2024 10:05:03 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:24 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103-F09-4/tp.git to complete... -Mar 22, 2024 10:05:03 AM reposense.report.RepoCloner spawnCloneProcess +Mar 22, 2024 2:19:24 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103-F09-2/tp.git... -Mar 22, 2024 10:05:03 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:24 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103-F09-2/tp.git to complete... -Mar 22, 2024 10:05:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T16-1/tp.git (master)... -Mar 22, 2024 10:05:03 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T16-1/tp.git (master) completed! -Mar 22, 2024 10:05:04 AM reposense.report.ReportGenerator analyzeRepos -INFO: [9/92] Analyzing https://github.com/AY2324S2-CS2103T-T16-2/tp.git (master)... -Mar 22, 2024 10:05:04 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:25 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-T10-3/tp.git completed! -Mar 22, 2024 10:05:04 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-T16-2/tp.git (master) does not contain a standalone config file. -Mar 22, 2024 10:05:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T16-2/tp.git (master)... -Mar 22, 2024 10:05:04 AM reposense.report.RepoCloner spawnCloneProcess +Mar 22, 2024 2:19:25 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T09-4/tp.git... -Mar 22, 2024 10:05:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W13-4/tp.git (master)... -Mar 22, 2024 10:05:04 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:25 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T09-4/tp.git to complete... -Mar 22, 2024 10:05:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W13-4/tp.git (master)... -Mar 22, 2024 10:05:04 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-W13-4/tp.git (master) completed! -Mar 22, 2024 10:05:04 AM reposense.report.ReportGenerator analyzeRepos -INFO: [10/92] Analyzing https://github.com/AY2324S2-CS2103-F15-1/tp.git (master)... -Mar 22, 2024 10:05:04 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103-F09-1/tp.git completed! -Mar 22, 2024 10:05:04 AM reposense.report.RepoCloner spawnCloneProcess +Mar 22, 2024 2:19:26 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103-F09-4/tp.git completed! +Mar 22, 2024 2:19:26 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103-F08-4/tp.git... -Mar 22, 2024 10:05:04 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:26 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103-F08-4/tp.git to complete... -Mar 22, 2024 10:05:04 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103-F09-4/tp.git completed! -Mar 22, 2024 10:05:05 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103-F15-1/tp.git (master) does not contain a standalone config file. -Mar 22, 2024 10:05:05 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-F15-1/tp.git (master)... -Mar 22, 2024 10:05:05 AM reposense.report.RepoCloner spawnCloneProcess +Mar 22, 2024 2:19:26 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103-F09-1/tp.git completed! +Mar 22, 2024 2:19:26 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T09-3/tp.git... -Mar 22, 2024 10:05:05 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:26 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T09-3/tp.git to complete... -Mar 22, 2024 10:05:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-F15-3/tp.git (master)... -Mar 22, 2024 10:05:05 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:26 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F13-2/tp.git (master)... +Mar 22, 2024 2:19:27 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F13-2/tp.git (master)... +Mar 22, 2024 2:19:27 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-F13-2/tp.git (master) completed! +Mar 22, 2024 2:19:27 PM reposense.report.ReportGenerator analyzeRepos +INFO: [14/92] Analyzing https://github.com/AY2324S2-CS2103T-W10-3/tp.git (master)... +Mar 22, 2024 2:19:27 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-W10-3/tp.git (master) does not contain a standalone config file. +Mar 22, 2024 2:19:27 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W10-3/tp.git (master)... +Mar 22, 2024 2:19:27 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103-F09-2/tp.git completed! -Mar 22, 2024 10:05:05 AM reposense.report.RepoCloner spawnCloneProcess +Mar 22, 2024 2:19:27 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T12-4/tp.git... -Mar 22, 2024 10:05:05 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:27 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T12-4/tp.git to complete... -Mar 22, 2024 10:05:06 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-F15-3/tp.git (master)... -Mar 22, 2024 10:05:06 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103-F15-3/tp.git (master) completed! -Mar 22, 2024 10:05:06 AM reposense.report.ReportGenerator analyzeRepos -INFO: [11/92] Analyzing https://github.com/AY2324S2-CS2103T-F13-2/tp.git (master)... -Mar 22, 2024 10:05:06 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-F13-2/tp.git (master) does not contain a standalone config file. -Mar 22, 2024 10:05:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F13-2/tp.git (master)... -Mar 22, 2024 10:05:06 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:28 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F13-4/tp.git (master)... +Mar 22, 2024 2:19:28 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-T09-4/tp.git completed! -Mar 22, 2024 10:05:06 AM reposense.report.RepoCloner spawnCloneProcess +Mar 22, 2024 2:19:28 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103-F08-2/tp.git... -Mar 22, 2024 10:05:06 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:28 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103-F08-2/tp.git to complete... -Mar 22, 2024 10:05:07 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-T12-4/tp.git completed! -Mar 22, 2024 10:05:07 AM reposense.report.RepoCloner spawnCloneProcess +Mar 22, 2024 2:19:28 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F13-4/tp.git (master)... +Mar 22, 2024 2:19:28 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-F13-4/tp.git (master) completed! +Mar 22, 2024 2:19:28 PM reposense.report.ReportGenerator analyzeRepos +INFO: [15/92] Analyzing https://github.com/AY2324S2-CS2103T-T13-2/tp.git (master)... +Mar 22, 2024 2:19:28 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103-F08-4/tp.git completed! +Mar 22, 2024 2:19:28 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W11-1/tp.git... -Mar 22, 2024 10:05:07 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:28 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-T13-2/tp.git (master) does not contain a standalone config file. +Mar 22, 2024 2:19:28 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T13-2/tp.git (master)... +Mar 22, 2024 2:19:28 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W11-1/tp.git to complete... -Mar 22, 2024 10:05:07 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103-F08-4/tp.git completed! -Mar 22, 2024 10:05:07 AM reposense.report.RepoCloner spawnCloneProcess +Mar 22, 2024 2:19:28 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T10-1/tp.git (master)... +Mar 22, 2024 2:19:29 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T10-1/tp.git (master)... +Mar 22, 2024 2:19:29 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T10-1/tp.git (master) completed! +Mar 22, 2024 2:19:29 PM reposense.report.ReportGenerator analyzeRepos +INFO: [16/92] Analyzing https://github.com/AY2324S2-CS2103T-T13-1/tp.git (master)... +Mar 22, 2024 2:19:29 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-T12-4/tp.git completed! +Mar 22, 2024 2:19:29 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W11-3/tp.git... -Mar 22, 2024 10:05:07 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:29 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W11-3/tp.git to complete... -Mar 22, 2024 10:05:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T16-2/tp.git (master)... -Mar 22, 2024 10:05:08 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T16-2/tp.git (master)... -Mar 22, 2024 10:05:08 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T16-2/tp.git (master) completed! -Mar 22, 2024 10:05:08 AM reposense.report.ReportGenerator analyzeRepos -INFO: [12/92] Analyzing https://github.com/AY2324S2-CS2103T-F13-4/tp.git (master)... -Mar 22, 2024 10:05:08 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F10-2/tp.git (master)... -Mar 22, 2024 10:05:08 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-F13-4/tp.git (master) does not contain a standalone config file. -Mar 22, 2024 10:05:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F13-4/tp.git (master)... -Mar 22, 2024 10:05:08 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103-F08-2/tp.git completed! -Mar 22, 2024 10:05:08 AM reposense.report.RepoCloner spawnCloneProcess +Mar 22, 2024 2:19:29 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-T13-1/tp.git (master) does not contain a standalone config file. +Mar 22, 2024 2:19:29 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T13-1/tp.git (master)... +Mar 22, 2024 2:19:30 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-F15-1/tp.git (master)... +Mar 22, 2024 2:19:30 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-T09-3/tp.git completed! +Mar 22, 2024 2:19:30 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W09-3/tp.git... -Mar 22, 2024 10:05:08 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:30 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W09-3/tp.git to complete... -Mar 22, 2024 10:05:08 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F10-2/tp.git (master)... -Mar 22, 2024 10:05:09 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-F10-2/tp.git (master) completed! -Mar 22, 2024 10:05:09 AM reposense.report.ReportGenerator analyzeRepos -INFO: [13/92] Analyzing https://github.com/AY2324S2-CS2103T-W10-3/tp.git (master)... -Mar 22, 2024 10:05:09 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-W10-3/tp.git (master) does not contain a standalone config file. -Mar 22, 2024 10:05:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W10-3/tp.git (master)... -Mar 22, 2024 10:05:09 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-W11-1/tp.git completed! -Mar 22, 2024 10:05:09 AM reposense.report.RepoCloner spawnCloneProcess +Mar 22, 2024 2:19:30 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103-F08-2/tp.git completed! +Mar 22, 2024 2:19:30 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F14-1/tp.git... -Mar 22, 2024 10:05:09 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:30 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-F15-1/tp.git (master)... +Mar 22, 2024 2:19:30 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F14-1/tp.git to complete... -Mar 22, 2024 10:05:09 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-T09-3/tp.git completed! -Mar 22, 2024 10:05:09 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-W11-3/tp.git completed! -Mar 22, 2024 10:05:09 AM reposense.report.RepoCloner spawnCloneProcess +Mar 22, 2024 2:19:30 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103-F15-1/tp.git (master) completed! +Mar 22, 2024 2:19:30 PM reposense.report.ReportGenerator analyzeRepos +INFO: [17/92] Analyzing https://github.com/AY2324S2-CS2103T-T10-2/tp.git (master)... +Mar 22, 2024 2:19:30 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-T10-2/tp.git (master) does not contain a standalone config file. +Mar 22, 2024 2:19:30 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T10-2/tp.git (master)... +Mar 22, 2024 2:19:30 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-W11-1/tp.git completed! +Mar 22, 2024 2:19:30 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T12-2/tp.git... -Mar 22, 2024 10:05:09 AM reposense.report.RepoCloner spawnCloneProcess +Mar 22, 2024 2:19:30 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T12-2/tp.git to complete... +Mar 22, 2024 2:19:30 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W10-3/tp.git (master)... +Mar 22, 2024 2:19:31 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W10-3/tp.git (master)... +Mar 22, 2024 2:19:31 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-W10-3/tp.git (master) completed! +Mar 22, 2024 2:19:31 PM reposense.report.ReportGenerator analyzeRepos +INFO: [18/92] Analyzing https://github.com/AY2324S2-CS2103T-F13-1/tp.git (master)... +Mar 22, 2024 2:19:31 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-F13-1/tp.git (master) does not contain a standalone config file. +Mar 22, 2024 2:19:31 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F13-1/tp.git (master)... +Mar 22, 2024 2:19:31 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-W11-3/tp.git completed! +Mar 22, 2024 2:19:31 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F14-3/tp.git... -Mar 22, 2024 10:05:09 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:31 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F14-3/tp.git to complete... -Mar 22, 2024 10:05:09 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T12-2/tp.git to complete... -Mar 22, 2024 10:05:10 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:32 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-W09-3/tp.git completed! -Mar 22, 2024 10:05:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F13-2/tp.git (master)... -Mar 22, 2024 10:05:10 AM reposense.report.RepoCloner spawnCloneProcess +Mar 22, 2024 2:19:32 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W09-1/tp.git... -Mar 22, 2024 10:05:10 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:32 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W09-1/tp.git to complete... -Mar 22, 2024 10:05:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F13-2/tp.git (master)... -Mar 22, 2024 10:05:11 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-F13-2/tp.git (master) completed! -Mar 22, 2024 10:05:11 AM reposense.report.ReportGenerator analyzeRepos -INFO: [14/92] Analyzing https://github.com/AY2324S2-CS2103T-T10-1/tp.git (master)... -Mar 22, 2024 10:05:11 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-T10-1/tp.git (master) does not contain a standalone config file. -Mar 22, 2024 10:05:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T10-1/tp.git (master)... -Mar 22, 2024 10:05:11 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:32 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-F14-1/tp.git completed! -Mar 22, 2024 10:05:11 AM reposense.report.RepoCloner spawnCloneProcess +Mar 22, 2024 2:19:32 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T17-4/tp.git... -Mar 22, 2024 10:05:11 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:32 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T17-4/tp.git to complete... -Mar 22, 2024 10:05:12 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-F14-3/tp.git completed! -Mar 22, 2024 10:05:12 AM reposense.report.RepoCloner spawnCloneProcess +Mar 22, 2024 2:19:33 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-T12-2/tp.git completed! +Mar 22, 2024 2:19:33 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T11-2/tp.git... -Mar 22, 2024 10:05:12 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:33 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T11-2/tp.git to complete... -Mar 22, 2024 10:05:12 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-T12-2/tp.git completed! -Mar 22, 2024 10:05:12 AM reposense.report.RepoCloner spawnCloneProcess +Mar 22, 2024 2:19:33 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T13-2/tp.git (master)... +Mar 22, 2024 2:19:33 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T13-2/tp.git (master)... +Mar 22, 2024 2:19:33 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T13-2/tp.git (master) completed! +Mar 22, 2024 2:19:33 PM reposense.report.ReportGenerator analyzeRepos +INFO: [19/92] Analyzing https://github.com/AY2324S2-CS2103-F15-4/tp.git (master)... +Mar 22, 2024 2:19:33 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103-F15-4/tp.git (master) does not contain a standalone config file. +Mar 22, 2024 2:19:33 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-F15-4/tp.git (master)... +Mar 22, 2024 2:19:34 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-W09-1/tp.git completed! +Mar 22, 2024 2:19:34 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T11-4/tp.git... -Mar 22, 2024 10:05:12 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:34 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T11-4/tp.git to complete... -Mar 22, 2024 10:05:12 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-W09-1/tp.git completed! -Mar 22, 2024 10:05:12 AM reposense.report.RepoCloner spawnCloneProcess +Mar 22, 2024 2:19:34 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T13-1/tp.git (master)... +Mar 22, 2024 2:19:34 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-T17-4/tp.git completed! +Mar 22, 2024 2:19:34 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T17-2/tp.git... -Mar 22, 2024 10:05:12 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:34 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T13-1/tp.git (master)... +Mar 22, 2024 2:19:34 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T17-2/tp.git to complete... -Mar 22, 2024 10:05:12 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F13-4/tp.git (master)... -Mar 22, 2024 10:05:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F13-4/tp.git (master)... -Mar 22, 2024 10:05:13 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-F13-4/tp.git (master) completed! -Mar 22, 2024 10:05:13 AM reposense.report.ReportGenerator analyzeRepos -INFO: [15/92] Analyzing https://github.com/AY2324S2-CS2103T-T13-2/tp.git (master)... -Mar 22, 2024 10:05:13 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-T17-4/tp.git completed! -Mar 22, 2024 10:05:13 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T08-3/tp.git... -Mar 22, 2024 10:05:13 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-T11-4/tp.git completed! -Mar 22, 2024 10:05:13 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:34 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T13-1/tp.git (master) completed! +Mar 22, 2024 2:19:34 PM reposense.report.ReportGenerator analyzeRepos +INFO: [20/92] Analyzing https://github.com/AY2324S2-CS2103T-W13-3/tp.git (master)... +Mar 22, 2024 2:19:34 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-W13-3/tp.git (master) does not contain a standalone config file. +Mar 22, 2024 2:19:34 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W13-3/tp.git (master)... +Mar 22, 2024 2:19:35 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-T11-2/tp.git completed! -Mar 22, 2024 10:05:13 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T08-1/tp.git... -Mar 22, 2024 10:05:13 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-T13-2/tp.git (master) does not contain a standalone config file. -Mar 22, 2024 10:05:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T13-2/tp.git (master)... -Mar 22, 2024 10:05:13 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:35 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T08-3/tp.git... +Mar 22, 2024 2:19:35 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T08-3/tp.git to complete... -Mar 22, 2024 10:05:13 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:35 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T10-2/tp.git (master)... +Mar 22, 2024 2:19:35 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T10-2/tp.git (master)... +Mar 22, 2024 2:19:35 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T10-2/tp.git (master) completed! +Mar 22, 2024 2:19:35 PM reposense.report.ReportGenerator analyzeRepos +INFO: [21/92] Analyzing https://github.com/AY2324S2-CS2103T-W13-2/tp.git (master)... +Mar 22, 2024 2:19:35 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-F14-3/tp.git completed! +Mar 22, 2024 2:19:35 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T08-1/tp.git... +Mar 22, 2024 2:19:35 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-W13-2/tp.git (master) does not contain a standalone config file. +Mar 22, 2024 2:19:35 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W13-2/tp.git (master)... +Mar 22, 2024 2:19:35 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T08-1/tp.git to complete... -Mar 22, 2024 10:05:13 AM reposense.report.RepoCloner spawnCloneProcess +Mar 22, 2024 2:19:36 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-F15-4/tp.git (master)... +Mar 22, 2024 2:19:36 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-T11-4/tp.git completed! +Mar 22, 2024 2:19:36 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F12-4/tp.git... -Mar 22, 2024 10:05:13 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:36 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F12-4/tp.git to complete... -Mar 22, 2024 10:05:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W10-3/tp.git (master)... -Mar 22, 2024 10:05:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W10-3/tp.git (master)... -Mar 22, 2024 10:05:14 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-W10-3/tp.git (master) completed! -Mar 22, 2024 10:05:14 AM reposense.report.ReportGenerator analyzeRepos -INFO: [16/92] Analyzing https://github.com/AY2324S2-CS2103T-T13-1/tp.git (master)... -Mar 22, 2024 10:05:14 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:36 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-F15-4/tp.git (master)... +Mar 22, 2024 2:19:36 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103-F15-4/tp.git (master) completed! +Mar 22, 2024 2:19:36 PM reposense.report.ReportGenerator analyzeRepos +INFO: [22/92] Analyzing https://github.com/AY2324S2-CS2103T-T16-4/tp.git (master)... +Mar 22, 2024 2:19:36 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-T16-4/tp.git (master) does not contain a standalone config file. +Mar 22, 2024 2:19:36 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T16-4/tp.git (master)... +Mar 22, 2024 2:19:36 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-T08-3/tp.git completed! +Mar 22, 2024 2:19:36 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-T17-2/tp.git completed! -Mar 22, 2024 10:05:14 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-T13-1/tp.git (master) does not contain a standalone config file. -Mar 22, 2024 10:05:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T13-1/tp.git (master)... -Mar 22, 2024 10:05:14 AM reposense.report.RepoCloner spawnCloneProcess +Mar 22, 2024 2:19:36 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T14-1/tp.git... -Mar 22, 2024 10:05:14 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T14-1/tp.git to complete... -Mar 22, 2024 10:05:15 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-F12-4/tp.git completed! -Mar 22, 2024 10:05:15 AM reposense.report.RepoCloner spawnCloneProcess +Mar 22, 2024 2:19:36 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F12-2/tp.git... -Mar 22, 2024 10:05:15 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-T08-1/tp.git completed! -Mar 22, 2024 10:05:15 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:36 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F12-2/tp.git to complete... -Mar 22, 2024 10:05:15 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W08-4/tp.git... -Mar 22, 2024 10:05:15 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:36 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T14-1/tp.git to complete... +Mar 22, 2024 2:19:37 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-T08-1/tp.git completed! +Mar 22, 2024 2:19:37 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W08-4/tp.git... +Mar 22, 2024 2:19:37 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W08-4/tp.git to complete... -Mar 22, 2024 10:05:15 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-T08-3/tp.git completed! -Mar 22, 2024 10:05:15 AM reposense.report.RepoCloner spawnCloneProcess +Mar 22, 2024 2:19:37 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F13-1/tp.git (master)... +Mar 22, 2024 2:19:37 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W13-3/tp.git (master)... +Mar 22, 2024 2:19:37 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F13-1/tp.git (master)... +Mar 22, 2024 2:19:37 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W13-3/tp.git (master)... +Mar 22, 2024 2:19:37 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-W13-3/tp.git (master) completed! +Mar 22, 2024 2:19:37 PM reposense.report.ReportGenerator analyzeRepos +INFO: [23/92] Analyzing https://github.com/AY2324S2-CS2103T-W10-1/tp.git (master)... +Mar 22, 2024 2:19:37 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-F13-1/tp.git (master) completed! +Mar 22, 2024 2:19:37 PM reposense.report.ReportGenerator analyzeRepos +INFO: [24/92] Analyzing https://github.com/AY2324S2-CS2103T-T13-4/tp.git (master)... +Mar 22, 2024 2:19:37 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-W10-1/tp.git (master) does not contain a standalone config file. +Mar 22, 2024 2:19:37 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W10-1/tp.git (master)... +Mar 22, 2024 2:19:37 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-T13-4/tp.git (master) does not contain a standalone config file. +Mar 22, 2024 2:19:37 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T13-4/tp.git (master)... +Mar 22, 2024 2:19:37 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W13-2/tp.git (master)... +Mar 22, 2024 2:19:38 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W13-2/tp.git (master)... +Mar 22, 2024 2:19:38 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-W13-2/tp.git (master) completed! +Mar 22, 2024 2:19:38 PM reposense.report.ReportGenerator analyzeRepos +INFO: [25/92] Analyzing https://github.com/AY2324S2-CS2103T-T13-3/tp.git (master)... +Mar 22, 2024 2:19:38 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-T13-3/tp.git (master) does not contain a standalone config file. +Mar 22, 2024 2:19:38 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T13-3/tp.git (master)... +Mar 22, 2024 2:19:38 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-F12-2/tp.git completed! +Mar 22, 2024 2:19:38 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T16-4/tp.git (master)... +Mar 22, 2024 2:19:38 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W12-2/tp.git... -Mar 22, 2024 10:05:15 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:38 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W12-2/tp.git to complete... -Mar 22, 2024 10:05:16 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-F15-1/tp.git (master)... -Mar 22, 2024 10:05:16 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-F15-1/tp.git (master)... -Mar 22, 2024 10:05:16 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-T14-1/tp.git completed! -Mar 22, 2024 10:05:16 AM reposense.report.RepoCloner spawnCloneProcess +Mar 22, 2024 2:19:39 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-F12-4/tp.git completed! +Mar 22, 2024 2:19:39 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W08-3/tp.git... -Mar 22, 2024 10:05:16 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103-F15-1/tp.git (master) completed! -Mar 22, 2024 10:05:16 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:39 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T16-4/tp.git (master)... +Mar 22, 2024 2:19:39 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T16-4/tp.git (master) completed! +Mar 22, 2024 2:19:39 PM reposense.report.ReportGenerator analyzeRepos +INFO: [26/92] Analyzing https://github.com/AY2324S2-CS2103T-W10-2/tp.git (master)... +Mar 22, 2024 2:19:39 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W08-3/tp.git to complete... -Mar 22, 2024 10:05:16 AM reposense.report.ReportGenerator analyzeRepos -INFO: [17/92] Analyzing https://github.com/AY2324S2-CS2103T-T10-2/tp.git (master)... -Mar 22, 2024 10:05:17 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-T10-2/tp.git (master) does not contain a standalone config file. -Mar 22, 2024 10:05:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T10-2/tp.git (master)... -Mar 22, 2024 10:05:17 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:39 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-W08-4/tp.git completed! -Mar 22, 2024 10:05:17 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-F12-2/tp.git completed! -Mar 22, 2024 10:05:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T10-1/tp.git (master)... -Mar 22, 2024 10:05:17 AM reposense.report.RepoCloner spawnCloneProcess +Mar 22, 2024 2:19:39 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W12-1/tp.git... -Mar 22, 2024 10:05:17 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:39 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-W10-2/tp.git (master) does not contain a standalone config file. +Mar 22, 2024 2:19:39 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W10-2/tp.git (master)... +Mar 22, 2024 2:19:39 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W12-1/tp.git to complete... -Mar 22, 2024 10:05:17 AM reposense.report.RepoCloner spawnCloneProcess +Mar 22, 2024 2:19:39 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-T14-1/tp.git completed! +Mar 22, 2024 2:19:39 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F11-4/tp.git... -Mar 22, 2024 10:05:17 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:39 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F11-4/tp.git to complete... -Mar 22, 2024 10:05:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T10-1/tp.git (master)... -Mar 22, 2024 10:05:17 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:40 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T13-4/tp.git (master)... +Mar 22, 2024 2:19:40 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T13-4/tp.git (master)... +Mar 22, 2024 2:19:40 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T13-4/tp.git (master) completed! +Mar 22, 2024 2:19:40 PM reposense.report.ReportGenerator analyzeRepos +INFO: [27/92] Analyzing https://github.com/AY2324S2-CS2103T-F10-1/tp.git (master)... +Mar 22, 2024 2:19:40 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-F10-1/tp.git (master) does not contain a standalone config file. +Mar 22, 2024 2:19:40 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F10-1/tp.git (master)... +Mar 22, 2024 2:19:41 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-W12-2/tp.git completed! -Mar 22, 2024 10:05:17 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T10-1/tp.git (master) completed! -Mar 22, 2024 10:05:17 AM reposense.report.RepoCloner spawnCloneProcess +Mar 22, 2024 2:19:41 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F14-4/tp.git... -Mar 22, 2024 10:05:17 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:41 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F14-4/tp.git to complete... -Mar 22, 2024 10:05:17 AM reposense.report.ReportGenerator analyzeRepos -INFO: [18/92] Analyzing https://github.com/AY2324S2-CS2103T-F13-1/tp.git (master)... -Mar 22, 2024 10:05:17 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-F13-1/tp.git (master) does not contain a standalone config file. -Mar 22, 2024 10:05:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F13-1/tp.git (master)... -Mar 22, 2024 10:05:19 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T13-2/tp.git (master)... -Mar 22, 2024 10:05:19 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:41 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-W08-3/tp.git completed! -Mar 22, 2024 10:05:19 AM reposense.report.RepoCloner spawnCloneProcess +Mar 22, 2024 2:19:41 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-W12-1/tp.git completed! +Mar 22, 2024 2:19:41 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W08-2/tp.git... -Mar 22, 2024 10:05:19 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T13-2/tp.git (master)... -Mar 22, 2024 10:05:19 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W08-2/tp.git to complete... -Mar 22, 2024 10:05:19 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T13-2/tp.git (master) completed! -Mar 22, 2024 10:05:19 AM reposense.report.ReportGenerator analyzeRepos -INFO: [19/92] Analyzing https://github.com/AY2324S2-CS2103T-W13-3/tp.git (master)... -Mar 22, 2024 10:05:19 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-F14-4/tp.git completed! -Mar 22, 2024 10:05:19 AM reposense.report.RepoCloner spawnCloneProcess +Mar 22, 2024 2:19:41 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F11-3/tp.git... -Mar 22, 2024 10:05:19 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-W13-3/tp.git (master) does not contain a standalone config file. -Mar 22, 2024 10:05:19 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W13-3/tp.git (master)... -Mar 22, 2024 10:05:19 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:41 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F11-3/tp.git to complete... -Mar 22, 2024 10:05:20 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-W12-1/tp.git completed! -Mar 22, 2024 10:05:20 AM reposense.report.RepoCloner spawnCloneProcess +Mar 22, 2024 2:19:41 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W08-2/tp.git to complete... +Mar 22, 2024 2:19:41 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-F11-4/tp.git completed! +Mar 22, 2024 2:19:41 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T15-2/tp.git... -Mar 22, 2024 10:05:20 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:41 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T15-2/tp.git to complete... -Mar 22, 2024 10:05:20 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-F11-4/tp.git completed! -Mar 22, 2024 10:05:20 AM reposense.report.RepoCloner spawnCloneProcess +Mar 22, 2024 2:19:42 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T13-3/tp.git (master)... +Mar 22, 2024 2:19:42 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T13-3/tp.git (master)... +Mar 22, 2024 2:19:42 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T13-3/tp.git (master) completed! +Mar 22, 2024 2:19:42 PM reposense.report.ReportGenerator analyzeRepos +INFO: [28/92] Analyzing https://github.com/AY2324S2-CS2103T-F10-4/tp.git (master)... +Mar 22, 2024 2:19:42 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-F10-4/tp.git (master) does not contain a standalone config file. +Mar 22, 2024 2:19:42 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F10-4/tp.git (master)... +Mar 22, 2024 2:19:42 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F10-1/tp.git (master)... +Mar 22, 2024 2:19:42 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F10-1/tp.git (master)... +Mar 22, 2024 2:19:43 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-F10-1/tp.git (master) completed! +Mar 22, 2024 2:19:43 PM reposense.report.ReportGenerator analyzeRepos +INFO: [29/92] Analyzing https://github.com/AY2324S2-CS2103-F09-3/tp.git (master)... +Mar 22, 2024 2:19:43 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103-F09-3/tp.git (master) does not contain a standalone config file. +Mar 22, 2024 2:19:43 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-F09-3/tp.git (master)... +Mar 22, 2024 2:19:43 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-W08-2/tp.git completed! +Mar 22, 2024 2:19:43 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103-T14-1/tp.git... -Mar 22, 2024 10:05:20 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:43 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103-T14-1/tp.git to complete... -Mar 22, 2024 10:05:21 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T13-1/tp.git (master)... -Mar 22, 2024 10:05:21 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-W08-2/tp.git completed! -Mar 22, 2024 10:05:21 AM reposense.report.RepoCloner spawnCloneProcess +Mar 22, 2024 2:19:43 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-F14-4/tp.git completed! +Mar 22, 2024 2:19:43 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F11-2/tp.git... -Mar 22, 2024 10:05:21 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:43 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F11-2/tp.git to complete... -Mar 22, 2024 10:05:21 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T13-1/tp.git (master)... -Mar 22, 2024 10:05:21 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T13-1/tp.git (master) completed! -Mar 22, 2024 10:05:21 AM reposense.report.ReportGenerator analyzeRepos -INFO: [20/92] Analyzing https://github.com/AY2324S2-CS2103T-W13-2/tp.git (master)... -Mar 22, 2024 10:05:21 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-W13-2/tp.git (master) does not contain a standalone config file. -Mar 22, 2024 10:05:21 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W13-2/tp.git (master)... -Mar 22, 2024 10:05:21 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-F11-3/tp.git completed! -Mar 22, 2024 10:05:21 AM reposense.report.RepoCloner spawnCloneProcess +Mar 22, 2024 2:19:43 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-T15-2/tp.git completed! +Mar 22, 2024 2:19:43 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F11-1/tp.git... -Mar 22, 2024 10:05:21 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:43 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F11-1/tp.git to complete... -Mar 22, 2024 10:05:22 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-T15-2/tp.git completed! -Mar 22, 2024 10:05:22 AM reposense.report.RepoCloner spawnCloneProcess +Mar 22, 2024 2:19:43 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-F11-3/tp.git completed! +Mar 22, 2024 2:19:43 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T15-3/tp.git... -Mar 22, 2024 10:05:22 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:44 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T15-3/tp.git to complete... -Mar 22, 2024 10:05:22 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T10-2/tp.git (master)... -Mar 22, 2024 10:05:22 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103-T14-1/tp.git completed! -Mar 22, 2024 10:05:22 AM reposense.report.RepoCloner spawnCloneProcess +Mar 22, 2024 2:19:44 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W10-2/tp.git (master)... +Mar 22, 2024 2:19:44 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W10-2/tp.git (master)... +Mar 22, 2024 2:19:44 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-W10-2/tp.git (master) completed! +Mar 22, 2024 2:19:44 PM reposense.report.ReportGenerator analyzeRepos +INFO: [30/92] Analyzing https://github.com/AY2324S2-CS2103T-T16-3/tp.git (master)... +Mar 22, 2024 2:19:44 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-T16-3/tp.git (master) does not contain a standalone config file. +Mar 22, 2024 2:19:44 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T16-3/tp.git (master)... +Mar 22, 2024 2:19:45 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W10-1/tp.git (master)... +Mar 22, 2024 2:19:45 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-F09-3/tp.git (master)... +Mar 22, 2024 2:19:45 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-F11-2/tp.git completed! +Mar 22, 2024 2:19:45 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T15-1/tp.git... -Mar 22, 2024 10:05:22 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:45 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F10-4/tp.git (master)... +Mar 22, 2024 2:19:46 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T15-1/tp.git to complete... -Mar 22, 2024 10:05:23 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T10-2/tp.git (master)... -Mar 22, 2024 10:05:23 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T10-2/tp.git (master) completed! -Mar 22, 2024 10:05:23 AM reposense.report.ReportGenerator analyzeRepos -INFO: [21/92] Analyzing https://github.com/AY2324S2-CS2103-F15-4/tp.git (master)... -Mar 22, 2024 10:05:23 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-F11-2/tp.git completed! -Mar 22, 2024 10:05:23 AM reposense.report.RepoCloner spawnCloneProcess +Mar 22, 2024 2:19:46 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W10-1/tp.git (master)... +Mar 22, 2024 2:19:46 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-F11-1/tp.git completed! +Mar 22, 2024 2:19:46 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F10-4/tp.git (master)... +Mar 22, 2024 2:19:46 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-W10-1/tp.git (master) completed! +Mar 22, 2024 2:19:46 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T09-1/tp.git... -Mar 22, 2024 10:05:23 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103-F15-4/tp.git (master) does not contain a standalone config file. -Mar 22, 2024 10:05:23 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-F15-4/tp.git (master)... -Mar 22, 2024 10:05:23 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:46 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-F10-4/tp.git (master) completed! +Mar 22, 2024 2:19:46 PM reposense.report.ReportGenerator analyzeRepos +INFO: [31/92] Analyzing https://github.com/AY2324S2-CS2103T-T10-3/tp.git (master)... +Mar 22, 2024 2:19:46 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-F09-3/tp.git (master)... +Mar 22, 2024 2:19:46 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T09-1/tp.git to complete... -Mar 22, 2024 10:05:23 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W13-3/tp.git (master)... -Mar 22, 2024 10:05:23 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W13-3/tp.git (master)... -Mar 22, 2024 10:05:23 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-W13-3/tp.git (master) completed! -Mar 22, 2024 10:05:23 AM reposense.report.ReportGenerator analyzeRepos -INFO: [22/92] Analyzing https://github.com/AY2324S2-CS2103T-T16-4/tp.git (master)... -Mar 22, 2024 10:05:23 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-F11-1/tp.git completed! -Mar 22, 2024 10:05:24 AM reposense.report.RepoCloner spawnCloneProcess +Mar 22, 2024 2:19:46 PM reposense.report.ReportGenerator analyzeRepos +INFO: [32/92] Analyzing https://github.com/AY2324S2-CS2103-F09-4/tp.git (master)... +Mar 22, 2024 2:19:46 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103-F09-3/tp.git (master) completed! +Mar 22, 2024 2:19:46 PM reposense.report.ReportGenerator analyzeRepos +INFO: [33/92] Analyzing https://github.com/AY2324S2-CS2103-F09-1/tp.git (master)... +Mar 22, 2024 2:19:46 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103-F09-4/tp.git (master) does not contain a standalone config file. +Mar 22, 2024 2:19:46 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-F09-4/tp.git (master)... +Mar 22, 2024 2:19:46 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-T10-3/tp.git (master) does not contain a standalone config file. +Mar 22, 2024 2:19:46 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T10-3/tp.git (master)... +Mar 22, 2024 2:19:46 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103-F09-1/tp.git (master) does not contain a standalone config file. +Mar 22, 2024 2:19:46 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-F09-1/tp.git (master)... +Mar 22, 2024 2:19:46 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-T15-3/tp.git completed! +Mar 22, 2024 2:19:46 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W12-4/tp.git... -Mar 22, 2024 10:05:24 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-T16-4/tp.git (master) does not contain a standalone config file. -Mar 22, 2024 10:05:24 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T16-4/tp.git (master)... -Mar 22, 2024 10:05:24 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:46 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W12-4/tp.git to complete... -Mar 22, 2024 10:05:24 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-T15-3/tp.git completed! -Mar 22, 2024 10:05:24 AM reposense.report.RepoCloner spawnCloneProcess +Mar 22, 2024 2:19:46 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103-T14-1/tp.git completed! +Mar 22, 2024 2:19:46 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W12-3/tp.git... -Mar 22, 2024 10:05:24 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:46 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W12-3/tp.git to complete... -Mar 22, 2024 10:05:24 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:47 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-T15-1/tp.git completed! -Mar 22, 2024 10:05:24 AM reposense.report.RepoCloner spawnCloneProcess +Mar 22, 2024 2:19:47 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T09-2/tp.git... -Mar 22, 2024 10:05:24 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:47 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T09-2/tp.git to complete... -Mar 22, 2024 10:05:24 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:48 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-T09-1/tp.git completed! -Mar 22, 2024 10:05:25 AM reposense.report.RepoCloner spawnCloneProcess +Mar 22, 2024 2:19:48 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T15-4/tp.git... -Mar 22, 2024 10:05:25 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:48 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T15-4/tp.git to complete... -Mar 22, 2024 10:05:25 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W13-2/tp.git (master)... -Mar 22, 2024 10:05:25 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:48 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T16-3/tp.git (master)... +Mar 22, 2024 2:19:48 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T16-3/tp.git (master)... +Mar 22, 2024 2:19:48 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T16-3/tp.git (master) completed! +Mar 22, 2024 2:19:48 PM reposense.report.ReportGenerator analyzeRepos +INFO: [34/92] Analyzing https://github.com/AY2324S2-CS2103-F09-2/tp.git (master)... +Mar 22, 2024 2:19:48 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-W12-4/tp.git completed! -Mar 22, 2024 10:05:25 AM reposense.report.RepoCloner spawnCloneProcess +Mar 22, 2024 2:19:48 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103-F08-3/tp.git... -Mar 22, 2024 10:05:25 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:48 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103-F08-3/tp.git to complete... -Mar 22, 2024 10:05:25 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-T09-2/tp.git completed! -Mar 22, 2024 10:05:25 AM reposense.report.RepoCloner spawnCloneProcess +Mar 22, 2024 2:19:48 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T10-3/tp.git (master)... +Mar 22, 2024 2:19:48 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103-F09-2/tp.git (master) does not contain a standalone config file. +Mar 22, 2024 2:19:48 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-F09-2/tp.git (master)... +Mar 22, 2024 2:19:48 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T10-3/tp.git (master)... +Mar 22, 2024 2:19:48 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T10-3/tp.git (master) completed! +Mar 22, 2024 2:19:48 PM reposense.report.ReportGenerator analyzeRepos +INFO: [35/92] Analyzing https://github.com/AY2324S2-CS2103T-T09-4/tp.git (master)... +Mar 22, 2024 2:19:49 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-T09-4/tp.git (master) does not contain a standalone config file. +Mar 22, 2024 2:19:49 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T09-4/tp.git (master)... +Mar 22, 2024 2:19:49 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-W12-3/tp.git completed! +Mar 22, 2024 2:19:49 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103-F08-1/tp.git... -Mar 22, 2024 10:05:25 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:49 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103-F08-1/tp.git to complete... -Mar 22, 2024 10:05:26 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W13-2/tp.git (master)... -Mar 22, 2024 10:05:26 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-W13-2/tp.git (master) completed! -Mar 22, 2024 10:05:26 AM reposense.report.ReportGenerator analyzeRepos -INFO: [23/92] Analyzing https://github.com/AY2324S2-CS2103T-T13-4/tp.git (master)... -Mar 22, 2024 10:05:26 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F13-1/tp.git (master)... -Mar 22, 2024 10:05:26 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-T15-4/tp.git completed! -Mar 22, 2024 10:05:26 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-T13-4/tp.git (master) does not contain a standalone config file. -Mar 22, 2024 10:05:26 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T13-4/tp.git (master)... -Mar 22, 2024 10:05:26 AM reposense.report.RepoCloner spawnCloneProcess +Mar 22, 2024 2:19:49 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-F09-1/tp.git (master)... +Mar 22, 2024 2:19:49 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-T09-2/tp.git completed! +Mar 22, 2024 2:19:49 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W08-1/tp.git... -Mar 22, 2024 10:05:26 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-F15-4/tp.git (master)... -Mar 22, 2024 10:05:26 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:49 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W08-1/tp.git to complete... -Mar 22, 2024 10:05:26 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F13-1/tp.git (master)... -Mar 22, 2024 10:05:26 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-W12-3/tp.git completed! -Mar 22, 2024 10:05:26 AM reposense.report.RepoCloner spawnCloneProcess +Mar 22, 2024 2:19:49 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-F09-1/tp.git (master)... +Mar 22, 2024 2:19:49 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-T15-4/tp.git completed! +Mar 22, 2024 2:19:49 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103-F09-1/tp.git (master) completed! +Mar 22, 2024 2:19:49 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T12-1/tp.git... -Mar 22, 2024 10:05:26 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-F13-1/tp.git (master) completed! -Mar 22, 2024 10:05:26 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:49 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T12-1/tp.git to complete... -Mar 22, 2024 10:05:26 AM reposense.report.ReportGenerator analyzeRepos -INFO: [24/92] Analyzing https://github.com/AY2324S2-CS2103T-T13-3/tp.git (master)... -Mar 22, 2024 10:05:26 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-F15-4/tp.git (master)... -Mar 22, 2024 10:05:26 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103-F15-4/tp.git (master) completed! -Mar 22, 2024 10:05:26 AM reposense.report.ReportGenerator analyzeRepos -INFO: [25/92] Analyzing https://github.com/AY2324S2-CS2103T-W10-1/tp.git (master)... -Mar 22, 2024 10:05:26 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-T13-3/tp.git (master) does not contain a standalone config file. -Mar 22, 2024 10:05:26 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T13-3/tp.git (master)... -Mar 22, 2024 10:05:27 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-W10-1/tp.git (master) does not contain a standalone config file. -Mar 22, 2024 10:05:27 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W10-1/tp.git (master)... -Mar 22, 2024 10:05:27 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:49 PM reposense.report.ReportGenerator analyzeRepos +INFO: [36/92] Analyzing https://github.com/AY2324S2-CS2103-F08-4/tp.git (master)... +Mar 22, 2024 2:19:49 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103-F08-4/tp.git (master) does not contain a standalone config file. +Mar 22, 2024 2:19:49 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-F08-4/tp.git (master)... +Mar 22, 2024 2:19:50 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103-F08-3/tp.git completed! -Mar 22, 2024 10:05:27 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T16-4/tp.git (master)... -Mar 22, 2024 10:05:27 AM reposense.report.RepoCloner spawnCloneProcess +Mar 22, 2024 2:19:50 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W11-2/tp.git... -Mar 22, 2024 10:05:27 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:50 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W11-2/tp.git to complete... -Mar 22, 2024 10:05:27 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:50 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-F09-4/tp.git (master)... +Mar 22, 2024 2:19:50 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-F09-4/tp.git (master)... +Mar 22, 2024 2:19:50 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103-F09-4/tp.git (master) completed! +Mar 22, 2024 2:19:50 PM reposense.report.ReportGenerator analyzeRepos +INFO: [37/92] Analyzing https://github.com/AY2324S2-CS2103T-T12-4/tp.git (master)... +Mar 22, 2024 2:19:51 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-T12-4/tp.git (master) does not contain a standalone config file. +Mar 22, 2024 2:19:51 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T12-4/tp.git (master)... +Mar 22, 2024 2:19:51 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103-F08-1/tp.git completed! -Mar 22, 2024 10:05:27 AM reposense.report.RepoCloner spawnCloneProcess +Mar 22, 2024 2:19:51 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W09-2/tp.git... -Mar 22, 2024 10:05:27 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:51 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W09-2/tp.git to complete... -Mar 22, 2024 10:05:27 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T16-4/tp.git (master)... -Mar 22, 2024 10:05:27 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T16-4/tp.git (master) completed! -Mar 22, 2024 10:05:27 AM reposense.report.ReportGenerator analyzeRepos -INFO: [26/92] Analyzing https://github.com/AY2324S2-CS2103T-W10-2/tp.git (master)... -Mar 22, 2024 10:05:27 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:51 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-W08-1/tp.git completed! -Mar 22, 2024 10:05:27 AM reposense.report.RepoCloner spawnCloneProcess +Mar 22, 2024 2:19:51 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W09-4/tp.git... -Mar 22, 2024 10:05:27 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-W10-2/tp.git (master) does not contain a standalone config file. -Mar 22, 2024 10:05:27 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W10-2/tp.git (master)... -Mar 22, 2024 10:05:28 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:51 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W09-4/tp.git to complete... -Mar 22, 2024 10:05:28 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:51 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-F08-4/tp.git (master)... +Mar 22, 2024 2:19:51 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-F08-4/tp.git (master)... +Mar 22, 2024 2:19:51 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103-F08-4/tp.git (master) completed! +Mar 22, 2024 2:19:51 PM reposense.report.ReportGenerator analyzeRepos +INFO: [38/92] Analyzing https://github.com/AY2324S2-CS2103T-T09-3/tp.git (master)... +Mar 22, 2024 2:19:52 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-T12-1/tp.git completed! -Mar 22, 2024 10:05:28 AM reposense.report.RepoCloner spawnCloneProcess +Mar 22, 2024 2:19:52 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T12-3/tp.git... -Mar 22, 2024 10:05:28 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:52 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T12-3/tp.git to complete... -Mar 22, 2024 10:05:29 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-W09-2/tp.git completed! -Mar 22, 2024 10:05:29 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F14-2/tp.git... -Mar 22, 2024 10:05:29 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:52 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-T09-3/tp.git (master) does not contain a standalone config file. +Mar 22, 2024 2:19:52 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T09-3/tp.git (master)... +Mar 22, 2024 2:19:52 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-W11-2/tp.git completed! -Mar 22, 2024 10:05:29 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:52 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F14-2/tp.git... +Mar 22, 2024 2:19:52 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F14-2/tp.git to complete... -Mar 22, 2024 10:05:29 AM reposense.report.RepoCloner spawnCloneProcess +Mar 22, 2024 2:19:53 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-W09-2/tp.git completed! +Mar 22, 2024 2:19:53 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T11-3/tp.git... -Mar 22, 2024 10:05:29 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:53 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T11-3/tp.git to complete... -Mar 22, 2024 10:05:29 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:54 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-W09-4/tp.git completed! -Mar 22, 2024 10:05:29 AM reposense.report.RepoCloner spawnCloneProcess +Mar 22, 2024 2:19:54 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F12-1/tp.git... -Mar 22, 2024 10:05:30 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:54 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F12-1/tp.git to complete... -Mar 22, 2024 10:05:30 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T13-4/tp.git (master)... -Mar 22, 2024 10:05:31 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T13-4/tp.git (master)... -Mar 22, 2024 10:05:31 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T13-4/tp.git (master) completed! -Mar 22, 2024 10:05:31 AM reposense.report.ReportGenerator analyzeRepos -INFO: [27/92] Analyzing https://github.com/AY2324S2-CS2103T-F10-1/tp.git (master)... -Mar 22, 2024 10:05:31 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-F10-1/tp.git (master) does not contain a standalone config file. -Mar 22, 2024 10:05:31 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F10-1/tp.git (master)... -Mar 22, 2024 10:05:32 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:54 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-F14-2/tp.git completed! -Mar 22, 2024 10:05:32 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-T11-3/tp.git completed! -Mar 22, 2024 10:05:32 AM reposense.report.RepoCloner spawnCloneProcess +Mar 22, 2024 2:19:55 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T17-3/tp.git... -Mar 22, 2024 10:05:32 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T14-2/tp.git... -Mar 22, 2024 10:05:32 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:55 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T17-3/tp.git to complete... -Mar 22, 2024 10:05:32 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:55 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-F09-2/tp.git (master)... +Mar 22, 2024 2:19:55 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-F09-2/tp.git (master)... +Mar 22, 2024 2:19:55 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103-F09-2/tp.git (master) completed! +Mar 22, 2024 2:19:55 PM reposense.report.ReportGenerator analyzeRepos +INFO: [39/92] Analyzing https://github.com/AY2324S2-CS2103-F08-2/tp.git (master)... +Mar 22, 2024 2:19:55 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-T11-3/tp.git completed! +Mar 22, 2024 2:19:55 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T14-2/tp.git... +Mar 22, 2024 2:19:55 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T14-2/tp.git to complete... -Mar 22, 2024 10:05:32 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-T12-3/tp.git completed! -Mar 22, 2024 10:05:32 AM reposense.report.RepoCloner spawnCloneProcess +Mar 22, 2024 2:19:56 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-F12-1/tp.git completed! +Mar 22, 2024 2:19:56 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103-F08-2/tp.git (master) does not contain a standalone config file. +Mar 22, 2024 2:19:56 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-F08-2/tp.git (master)... +Mar 22, 2024 2:19:56 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T08-2/tp.git... -Mar 22, 2024 10:05:32 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:56 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T08-2/tp.git to complete... -Mar 22, 2024 10:05:32 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-F12-1/tp.git completed! -Mar 22, 2024 10:05:32 AM reposense.report.RepoCloner spawnCloneProcess +Mar 22, 2024 2:19:56 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-T12-3/tp.git completed! +Mar 22, 2024 2:19:56 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T09-4/tp.git (master)... +Mar 22, 2024 2:19:56 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T17-1/tp.git... -Mar 22, 2024 10:05:32 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T13-3/tp.git (master)... -Mar 22, 2024 10:05:32 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:56 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T17-1/tp.git to complete... -Mar 22, 2024 10:05:32 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T13-3/tp.git (master)... -Mar 22, 2024 10:05:32 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T13-3/tp.git (master) completed! -Mar 22, 2024 10:05:32 AM reposense.report.ReportGenerator analyzeRepos -INFO: [28/92] Analyzing https://github.com/AY2324S2-CS2103T-F10-4/tp.git (master)... -Mar 22, 2024 10:05:33 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-F10-4/tp.git (master) does not contain a standalone config file. -Mar 22, 2024 10:05:33 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F10-4/tp.git (master)... -Mar 22, 2024 10:05:33 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:56 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T12-4/tp.git (master)... +Mar 22, 2024 2:19:56 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T09-4/tp.git (master)... +Mar 22, 2024 2:19:56 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T09-4/tp.git (master) completed! +Mar 22, 2024 2:19:56 PM reposense.report.ReportGenerator analyzeRepos +INFO: [40/92] Analyzing https://github.com/AY2324S2-CS2103T-W11-1/tp.git (master)... +Mar 22, 2024 2:19:56 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-W11-1/tp.git (master) does not contain a standalone config file. +Mar 22, 2024 2:19:56 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W11-1/tp.git (master)... +Mar 22, 2024 2:19:56 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T12-4/tp.git (master)... +Mar 22, 2024 2:19:56 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-T17-3/tp.git completed! -Mar 22, 2024 10:05:33 AM reposense.report.RepoCloner spawnCloneProcess +Mar 22, 2024 2:19:56 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W13-1/tp.git... -Mar 22, 2024 10:05:33 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:56 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T12-4/tp.git (master) completed! +Mar 22, 2024 2:19:56 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W13-1/tp.git to complete... -Mar 22, 2024 10:05:33 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:56 PM reposense.report.ReportGenerator analyzeRepos +INFO: [41/92] Analyzing https://github.com/AY2324S2-CS2103T-W11-3/tp.git (master)... +Mar 22, 2024 2:19:56 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-W11-3/tp.git (master) does not contain a standalone config file. +Mar 22, 2024 2:19:56 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W11-3/tp.git (master)... +Mar 22, 2024 2:19:57 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-T08-2/tp.git completed! -Mar 22, 2024 10:05:33 AM reposense.report.RepoCloner spawnCloneProcess +Mar 22, 2024 2:19:57 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F12-3/tp.git... -Mar 22, 2024 10:05:34 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F12-3/tp.git to complete... -Mar 22, 2024 10:05:34 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:58 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-T17-1/tp.git completed! -Mar 22, 2024 10:05:34 AM reposense.report.RepoCloner spawnCloneProcess +Mar 22, 2024 2:19:58 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T11-1/tp.git... -Mar 22, 2024 10:05:34 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:58 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F12-3/tp.git to complete... +Mar 22, 2024 2:19:58 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T11-1/tp.git to complete... -Mar 22, 2024 10:05:34 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:58 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-T14-2/tp.git completed! -Mar 22, 2024 10:05:34 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F10-1/tp.git (master)... -Mar 22, 2024 10:05:34 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F10-1/tp.git (master)... -Mar 22, 2024 10:05:34 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-F10-1/tp.git (master) completed! -Mar 22, 2024 10:05:34 AM reposense.report.ReportGenerator analyzeRepos -INFO: [29/92] Analyzing https://github.com/AY2324S2-CS2103T-T16-3/tp.git (master)... -Mar 22, 2024 10:05:34 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:58 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-W13-1/tp.git completed! -Mar 22, 2024 10:05:34 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-T16-3/tp.git (master) does not contain a standalone config file. -Mar 22, 2024 10:05:34 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T16-3/tp.git (master)... -Mar 22, 2024 10:05:35 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:59 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-F12-3/tp.git completed! -Mar 22, 2024 10:05:35 AM reposense.report.RepoCloner waitForCloneProcess +Mar 22, 2024 2:19:59 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-T11-1/tp.git completed! -Mar 22, 2024 10:05:35 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W10-2/tp.git (master)... -Mar 22, 2024 10:05:35 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W10-2/tp.git (master)... -Mar 22, 2024 10:05:35 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-W10-2/tp.git (master) completed! -Mar 22, 2024 10:05:35 AM reposense.report.ReportGenerator analyzeRepos -INFO: [30/92] Analyzing https://github.com/AY2324S2-CS2103-F09-3/tp.git (master)... -Mar 22, 2024 10:05:35 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103-F09-3/tp.git (master) does not contain a standalone config file. -Mar 22, 2024 10:05:35 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-F09-3/tp.git (master)... -Mar 22, 2024 10:05:35 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F10-4/tp.git (master)... -Mar 22, 2024 10:05:36 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F10-4/tp.git (master)... -Mar 22, 2024 10:05:36 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-F10-4/tp.git (master) completed! -Mar 22, 2024 10:05:36 AM reposense.report.ReportGenerator analyzeRepos -INFO: [31/92] Analyzing https://github.com/AY2324S2-CS2103T-T10-3/tp.git (master)... -Mar 22, 2024 10:05:36 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-T10-3/tp.git (master) does not contain a standalone config file. -Mar 22, 2024 10:05:36 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T10-3/tp.git (master)... -Mar 22, 2024 10:05:36 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W10-1/tp.git (master)... -Mar 22, 2024 10:05:36 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W10-1/tp.git (master)... -Mar 22, 2024 10:05:36 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T16-3/tp.git (master)... -Mar 22, 2024 10:05:36 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-W10-1/tp.git (master) completed! -Mar 22, 2024 10:05:36 AM reposense.report.ReportGenerator analyzeRepos -INFO: [32/92] Analyzing https://github.com/AY2324S2-CS2103-F09-1/tp.git (master)... -Mar 22, 2024 10:05:36 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T16-3/tp.git (master)... -Mar 22, 2024 10:05:36 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103-F09-1/tp.git (master) does not contain a standalone config file. -Mar 22, 2024 10:05:36 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-F09-1/tp.git (master)... -Mar 22, 2024 10:05:36 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T16-3/tp.git (master) completed! -Mar 22, 2024 10:05:36 AM reposense.report.ReportGenerator analyzeRepos -INFO: [33/92] Analyzing https://github.com/AY2324S2-CS2103-F09-4/tp.git (master)... -Mar 22, 2024 10:05:36 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103-F09-4/tp.git (master) does not contain a standalone config file. -Mar 22, 2024 10:05:36 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-F09-4/tp.git (master)... -Mar 22, 2024 10:05:37 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-F09-3/tp.git (master)... -Mar 22, 2024 10:05:37 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T10-3/tp.git (master)... -Mar 22, 2024 10:05:37 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-F09-3/tp.git (master)... -Mar 22, 2024 10:05:37 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103-F09-3/tp.git (master) completed! -Mar 22, 2024 10:05:37 AM reposense.report.ReportGenerator analyzeRepos -INFO: [34/92] Analyzing https://github.com/AY2324S2-CS2103-F09-2/tp.git (master)... -Mar 22, 2024 10:05:37 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T10-3/tp.git (master)... -Mar 22, 2024 10:05:37 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T10-3/tp.git (master) completed! -Mar 22, 2024 10:05:37 AM reposense.report.ReportGenerator analyzeRepos -INFO: [35/92] Analyzing https://github.com/AY2324S2-CS2103T-T09-4/tp.git (master)... -Mar 22, 2024 10:05:37 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103-F09-2/tp.git (master) does not contain a standalone config file. -Mar 22, 2024 10:05:37 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-F09-2/tp.git (master)... -Mar 22, 2024 10:05:37 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-T09-4/tp.git (master) does not contain a standalone config file. -Mar 22, 2024 10:05:37 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T09-4/tp.git (master)... -Mar 22, 2024 10:05:38 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-F09-1/tp.git (master)... -Mar 22, 2024 10:05:38 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-F09-1/tp.git (master)... -Mar 22, 2024 10:05:38 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103-F09-1/tp.git (master) completed! -Mar 22, 2024 10:05:38 AM reposense.report.ReportGenerator analyzeRepos -INFO: [36/92] Analyzing https://github.com/AY2324S2-CS2103T-T12-4/tp.git (master)... -Mar 22, 2024 10:05:38 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-T12-4/tp.git (master) does not contain a standalone config file. -Mar 22, 2024 10:05:38 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T12-4/tp.git (master)... -Mar 22, 2024 10:05:39 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-F09-4/tp.git (master)... -Mar 22, 2024 10:05:39 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-F09-4/tp.git (master)... -Mar 22, 2024 10:05:39 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103-F09-4/tp.git (master) completed! -Mar 22, 2024 10:05:39 AM reposense.report.ReportGenerator analyzeRepos -INFO: [37/92] Analyzing https://github.com/AY2324S2-CS2103-F08-4/tp.git (master)... -Mar 22, 2024 10:05:39 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103-F08-4/tp.git (master) does not contain a standalone config file. -Mar 22, 2024 10:05:39 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-F08-4/tp.git (master)... -Mar 22, 2024 10:05:40 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-F08-4/tp.git (master)... -Mar 22, 2024 10:05:40 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-F09-2/tp.git (master)... -Mar 22, 2024 10:05:40 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-F08-4/tp.git (master)... -Mar 22, 2024 10:05:40 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103-F08-4/tp.git (master) completed! -Mar 22, 2024 10:05:40 AM reposense.report.ReportGenerator analyzeRepos -INFO: [38/92] Analyzing https://github.com/AY2324S2-CS2103-F08-2/tp.git (master)... -Mar 22, 2024 10:05:40 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103-F08-2/tp.git (master) does not contain a standalone config file. -Mar 22, 2024 10:05:40 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-F08-2/tp.git (master)... -Mar 22, 2024 10:05:40 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T09-4/tp.git (master)... -Mar 22, 2024 10:05:40 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-F09-2/tp.git (master)... -Mar 22, 2024 10:05:40 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103-F09-2/tp.git (master) completed! -Mar 22, 2024 10:05:40 AM reposense.report.ReportGenerator analyzeRepos -INFO: [39/92] Analyzing https://github.com/AY2324S2-CS2103T-W11-1/tp.git (master)... -Mar 22, 2024 10:05:40 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-W11-1/tp.git (master) does not contain a standalone config file. -Mar 22, 2024 10:05:40 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W11-1/tp.git (master)... -Mar 22, 2024 10:05:40 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T09-4/tp.git (master)... -Mar 22, 2024 10:05:41 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T09-4/tp.git (master) completed! -Mar 22, 2024 10:05:41 AM reposense.report.ReportGenerator analyzeRepos -INFO: [40/92] Analyzing https://github.com/AY2324S2-CS2103T-T09-3/tp.git (master)... -Mar 22, 2024 10:05:41 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T12-4/tp.git (master)... -Mar 22, 2024 10:05:41 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-T09-3/tp.git (master) does not contain a standalone config file. -Mar 22, 2024 10:05:41 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T09-3/tp.git (master)... -Mar 22, 2024 10:05:41 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T12-4/tp.git (master)... -Mar 22, 2024 10:05:41 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T12-4/tp.git (master) completed! -Mar 22, 2024 10:05:41 AM reposense.report.ReportGenerator analyzeRepos -INFO: [41/92] Analyzing https://github.com/AY2324S2-CS2103T-W11-3/tp.git (master)... -Mar 22, 2024 10:05:41 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-W11-3/tp.git (master) does not contain a standalone config file. -Mar 22, 2024 10:05:41 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W11-3/tp.git (master)... -Mar 22, 2024 10:05:43 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 22, 2024 2:20:00 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-F08-2/tp.git (master)... -Mar 22, 2024 10:05:43 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 22, 2024 2:20:00 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W11-3/tp.git (master)... +Mar 22, 2024 2:20:00 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W11-1/tp.git (master)... -Mar 22, 2024 10:05:43 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 22, 2024 2:20:00 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-F08-2/tp.git (master)... -Mar 22, 2024 10:05:43 AM reposense.report.ReportGenerator analyzeRepo +Mar 22, 2024 2:20:00 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W11-3/tp.git (master)... +Mar 22, 2024 2:20:00 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-W11-3/tp.git (master) completed! +Mar 22, 2024 2:20:00 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103-F08-2/tp.git (master) completed! -Mar 22, 2024 10:05:43 AM reposense.report.ReportGenerator analyzeRepos +Mar 22, 2024 2:20:00 PM reposense.report.ReportGenerator analyzeRepos INFO: [42/92] Analyzing https://github.com/AY2324S2-CS2103T-W09-3/tp.git (master)... -Mar 22, 2024 10:05:43 AM reposense.report.ReportGenerator updateRepoConfig +Mar 22, 2024 2:20:00 PM reposense.report.ReportGenerator analyzeRepos +INFO: [43/92] Analyzing https://github.com/AY2324S2-CS2103T-F14-1/tp.git (master)... +Mar 22, 2024 2:20:00 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-W09-3/tp.git (master) does not contain a standalone config file. -Mar 22, 2024 10:05:43 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 22, 2024 2:20:00 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W09-3/tp.git (master)... -Mar 22, 2024 10:05:43 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W11-1/tp.git (master)... -Mar 22, 2024 10:05:43 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-W11-1/tp.git (master) completed! -Mar 22, 2024 10:05:43 AM reposense.report.ReportGenerator analyzeRepos -INFO: [43/92] Analyzing https://github.com/AY2324S2-CS2103T-F14-1/tp.git (master)... -Mar 22, 2024 10:05:43 AM reposense.report.ReportGenerator updateRepoConfig +Mar 22, 2024 2:20:00 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-F14-1/tp.git (master) does not contain a standalone config file. -Mar 22, 2024 10:05:43 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 22, 2024 2:20:00 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F14-1/tp.git (master)... -Mar 22, 2024 10:05:44 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W11-3/tp.git (master)... -Mar 22, 2024 10:05:44 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W11-3/tp.git (master)... -Mar 22, 2024 10:05:44 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-W11-3/tp.git (master) completed! -Mar 22, 2024 10:05:44 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 22, 2024 2:20:00 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W11-1/tp.git (master)... +Mar 22, 2024 2:20:00 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-W11-1/tp.git (master) completed! +Mar 22, 2024 2:20:00 PM reposense.report.ReportGenerator analyzeRepos +INFO: [44/92] Analyzing https://github.com/AY2324S2-CS2103T-T12-2/tp.git (master)... +Mar 22, 2024 2:20:00 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-T12-2/tp.git (master) does not contain a standalone config file. +Mar 22, 2024 2:20:00 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T12-2/tp.git (master)... +Mar 22, 2024 2:20:01 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T09-3/tp.git (master)... +Mar 22, 2024 2:20:01 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W09-3/tp.git (master)... -Mar 22, 2024 10:05:44 AM reposense.report.ReportGenerator analyzeRepos -INFO: [44/92] Analyzing https://github.com/AY2324S2-CS2103T-F14-3/tp.git (master)... -Mar 22, 2024 10:05:44 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 22, 2024 2:20:01 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W09-3/tp.git (master)... -Mar 22, 2024 10:05:44 AM reposense.report.ReportGenerator analyzeRepo +Mar 22, 2024 2:20:01 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-W09-3/tp.git (master) completed! -Mar 22, 2024 10:05:44 AM reposense.report.ReportGenerator analyzeRepos -INFO: [45/92] Analyzing https://github.com/AY2324S2-CS2103T-T12-2/tp.git (master)... -Mar 22, 2024 10:05:44 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-F14-3/tp.git (master) does not contain a standalone config file. -Mar 22, 2024 10:05:44 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F14-3/tp.git (master)... -Mar 22, 2024 10:05:44 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-T12-2/tp.git (master) does not contain a standalone config file. -Mar 22, 2024 10:05:44 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T12-2/tp.git (master)... -Mar 22, 2024 10:05:45 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F14-1/tp.git (master)... -Mar 22, 2024 10:05:45 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T12-2/tp.git (master)... -Mar 22, 2024 10:05:45 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F14-1/tp.git (master)... -Mar 22, 2024 10:05:45 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T12-2/tp.git (master)... -Mar 22, 2024 10:05:45 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T12-2/tp.git (master) completed! -Mar 22, 2024 10:05:45 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-F14-1/tp.git (master) completed! -Mar 22, 2024 10:05:45 AM reposense.report.ReportGenerator analyzeRepos -INFO: [46/92] Analyzing https://github.com/AY2324S2-CS2103T-W09-1/tp.git (master)... -Mar 22, 2024 10:05:45 AM reposense.report.ReportGenerator analyzeRepos -INFO: [47/92] Analyzing https://github.com/AY2324S2-CS2103T-T17-4/tp.git (master)... -Mar 22, 2024 10:05:45 AM reposense.report.ReportGenerator updateRepoConfig +Mar 22, 2024 2:20:01 PM reposense.report.ReportGenerator analyzeRepos +INFO: [45/92] Analyzing https://github.com/AY2324S2-CS2103T-W09-1/tp.git (master)... +Mar 22, 2024 2:20:01 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-W09-1/tp.git (master) does not contain a standalone config file. -Mar 22, 2024 10:05:45 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 22, 2024 2:20:01 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W09-1/tp.git (master)... -Mar 22, 2024 10:05:45 AM reposense.report.ReportGenerator updateRepoConfig +Mar 22, 2024 2:20:01 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T09-3/tp.git (master)... +Mar 22, 2024 2:20:01 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T09-3/tp.git (master) completed! +Mar 22, 2024 2:20:01 PM reposense.report.ReportGenerator analyzeRepos +INFO: [46/92] Analyzing https://github.com/AY2324S2-CS2103T-T17-4/tp.git (master)... +Mar 22, 2024 2:20:01 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T12-2/tp.git (master)... +Mar 22, 2024 2:20:01 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-T17-4/tp.git (master) does not contain a standalone config file. -Mar 22, 2024 10:05:45 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 22, 2024 2:20:01 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T17-4/tp.git (master)... -Mar 22, 2024 10:05:46 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F14-3/tp.git (master)... -Mar 22, 2024 10:05:47 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F14-3/tp.git (master)... -Mar 22, 2024 10:05:47 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-F14-3/tp.git (master) completed! -Mar 22, 2024 10:05:47 AM reposense.report.ReportGenerator analyzeRepos -INFO: [48/92] Analyzing https://github.com/AY2324S2-CS2103T-T11-4/tp.git (master)... -Mar 22, 2024 10:05:47 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 22, 2024 2:20:01 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T12-2/tp.git (master)... +Mar 22, 2024 2:20:01 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T12-2/tp.git (master) completed! +Mar 22, 2024 2:20:01 PM reposense.report.ReportGenerator analyzeRepos +INFO: [47/92] Analyzing https://github.com/AY2324S2-CS2103T-T11-2/tp.git (master)... +Mar 22, 2024 2:20:01 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-T11-2/tp.git (master) does not contain a standalone config file. +Mar 22, 2024 2:20:01 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T11-2/tp.git (master)... +Mar 22, 2024 2:20:02 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F14-1/tp.git (master)... +Mar 22, 2024 2:20:02 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F14-1/tp.git (master)... +Mar 22, 2024 2:20:02 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-F14-1/tp.git (master) completed! +Mar 22, 2024 2:20:02 PM reposense.report.ReportGenerator analyzeRepos +INFO: [48/92] Analyzing https://github.com/AY2324S2-CS2103T-F14-3/tp.git (master)... +Mar 22, 2024 2:20:02 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-F14-3/tp.git (master) does not contain a standalone config file. +Mar 22, 2024 2:20:02 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F14-3/tp.git (master)... +Mar 22, 2024 2:20:02 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W09-1/tp.git (master)... -Mar 22, 2024 10:05:47 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T09-3/tp.git (master)... -Mar 22, 2024 10:05:47 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-T11-4/tp.git (master) does not contain a standalone config file. -Mar 22, 2024 10:05:47 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T11-4/tp.git (master)... -Mar 22, 2024 10:05:47 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 22, 2024 2:20:02 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T11-2/tp.git (master)... +Mar 22, 2024 2:20:02 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W09-1/tp.git (master)... -Mar 22, 2024 10:05:47 AM reposense.report.ReportGenerator analyzeRepo +Mar 22, 2024 2:20:02 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T11-2/tp.git (master)... +Mar 22, 2024 2:20:02 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-W09-1/tp.git (master) completed! -Mar 22, 2024 10:05:47 AM reposense.report.ReportGenerator analyzeRepos -INFO: [49/92] Analyzing https://github.com/AY2324S2-CS2103T-T11-2/tp.git (master)... -Mar 22, 2024 10:05:47 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-T11-2/tp.git (master) does not contain a standalone config file. -Mar 22, 2024 10:05:47 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T11-2/tp.git (master)... -Mar 22, 2024 10:05:47 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T09-3/tp.git (master)... -Mar 22, 2024 10:05:47 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T09-3/tp.git (master) completed! -Mar 22, 2024 10:05:47 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 22, 2024 2:20:02 PM reposense.report.ReportGenerator analyzeRepos +INFO: [49/92] Analyzing https://github.com/AY2324S2-CS2103T-T11-4/tp.git (master)... +Mar 22, 2024 2:20:02 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T11-2/tp.git (master) completed! +Mar 22, 2024 2:20:02 PM reposense.report.ReportGenerator analyzeRepos +INFO: [50/92] Analyzing https://github.com/AY2324S2-CS2103T-T08-3/tp.git (master)... +Mar 22, 2024 2:20:03 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-T11-4/tp.git (master) does not contain a standalone config file. +Mar 22, 2024 2:20:03 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T11-4/tp.git (master)... +Mar 22, 2024 2:20:03 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-T08-3/tp.git (master) does not contain a standalone config file. +Mar 22, 2024 2:20:03 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T08-3/tp.git (master)... +Mar 22, 2024 2:20:03 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T17-4/tp.git (master)... -Mar 22, 2024 10:05:47 AM reposense.report.ReportGenerator analyzeRepos -INFO: [50/92] Analyzing https://github.com/AY2324S2-CS2103T-T17-2/tp.git (master)... -Mar 22, 2024 10:05:48 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-T17-2/tp.git (master) does not contain a standalone config file. -Mar 22, 2024 10:05:48 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T17-2/tp.git (master)... -Mar 22, 2024 10:05:48 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 22, 2024 2:20:03 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T17-4/tp.git (master)... -Mar 22, 2024 10:05:48 AM reposense.report.ReportGenerator analyzeRepo +Mar 22, 2024 2:20:03 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-T17-4/tp.git (master) completed! -Mar 22, 2024 10:05:48 AM reposense.report.ReportGenerator analyzeRepos -INFO: [51/92] Analyzing https://github.com/AY2324S2-CS2103T-F12-4/tp.git (master)... -Mar 22, 2024 10:05:48 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-F12-4/tp.git (master) does not contain a standalone config file. -Mar 22, 2024 10:05:48 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F12-4/tp.git (master)... -Mar 22, 2024 10:05:48 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T11-2/tp.git (master)... -Mar 22, 2024 10:05:48 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T11-2/tp.git (master)... -Mar 22, 2024 10:05:48 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T11-2/tp.git (master) completed! -Mar 22, 2024 10:05:48 AM reposense.report.ReportGenerator analyzeRepos +Mar 22, 2024 2:20:03 PM reposense.report.ReportGenerator analyzeRepos +INFO: [51/92] Analyzing https://github.com/AY2324S2-CS2103T-T17-2/tp.git (master)... +Mar 22, 2024 2:20:03 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-T17-2/tp.git (master) does not contain a standalone config file. +Mar 22, 2024 2:20:03 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T17-2/tp.git (master)... +Mar 22, 2024 2:20:04 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T08-3/tp.git (master)... +Mar 22, 2024 2:20:04 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T08-3/tp.git (master)... +Mar 22, 2024 2:20:04 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T08-3/tp.git (master) completed! +Mar 22, 2024 2:20:04 PM reposense.report.ReportGenerator analyzeRepos INFO: [52/92] Analyzing https://github.com/AY2324S2-CS2103T-T08-1/tp.git (master)... -Mar 22, 2024 10:05:48 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 22, 2024 2:20:04 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T11-4/tp.git (master)... -Mar 22, 2024 10:05:48 AM reposense.report.ReportGenerator updateRepoConfig +Mar 22, 2024 2:20:04 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-T08-1/tp.git (master) does not contain a standalone config file. -Mar 22, 2024 10:05:48 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 22, 2024 2:20:04 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T08-1/tp.git (master)... -Mar 22, 2024 10:05:49 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 22, 2024 2:20:04 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T11-4/tp.git (master)... -Mar 22, 2024 10:05:49 AM reposense.report.ReportGenerator analyzeRepo +Mar 22, 2024 2:20:04 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-T11-4/tp.git (master) completed! -Mar 22, 2024 10:05:49 AM reposense.report.ReportGenerator analyzeRepos -INFO: [53/92] Analyzing https://github.com/AY2324S2-CS2103T-T08-3/tp.git (master)... -Mar 22, 2024 10:05:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 22, 2024 2:20:04 PM reposense.report.ReportGenerator analyzeRepos +INFO: [53/92] Analyzing https://github.com/AY2324S2-CS2103T-F12-2/tp.git (master)... +Mar 22, 2024 2:20:04 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-F12-2/tp.git (master) does not contain a standalone config file. +Mar 22, 2024 2:20:04 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F12-2/tp.git (master)... +Mar 22, 2024 2:20:04 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F14-3/tp.git (master)... +Mar 22, 2024 2:20:04 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F14-3/tp.git (master)... +Mar 22, 2024 2:20:04 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-F14-3/tp.git (master) completed! +Mar 22, 2024 2:20:04 PM reposense.report.ReportGenerator analyzeRepos +INFO: [54/92] Analyzing https://github.com/AY2324S2-CS2103T-F12-4/tp.git (master)... +Mar 22, 2024 2:20:05 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-F12-4/tp.git (master) does not contain a standalone config file. +Mar 22, 2024 2:20:05 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F12-4/tp.git (master)... +Mar 22, 2024 2:20:05 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F12-4/tp.git (master)... -Mar 22, 2024 10:05:49 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-T08-3/tp.git (master) does not contain a standalone config file. -Mar 22, 2024 10:05:49 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T08-3/tp.git (master)... -Mar 22, 2024 10:05:49 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 22, 2024 2:20:05 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F12-2/tp.git (master)... +Mar 22, 2024 2:20:05 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F12-4/tp.git (master)... -Mar 22, 2024 10:05:49 AM reposense.report.ReportGenerator analyzeRepo +Mar 22, 2024 2:20:05 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-F12-4/tp.git (master) completed! -Mar 22, 2024 10:05:49 AM reposense.report.ReportGenerator analyzeRepos -INFO: [54/92] Analyzing https://github.com/AY2324S2-CS2103T-T14-1/tp.git (master)... -Mar 22, 2024 10:05:49 AM reposense.report.ReportGenerator updateRepoConfig +Mar 22, 2024 2:20:05 PM reposense.report.ReportGenerator analyzeRepos +INFO: [55/92] Analyzing https://github.com/AY2324S2-CS2103T-W08-4/tp.git (master)... +Mar 22, 2024 2:20:05 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F12-2/tp.git (master)... +Mar 22, 2024 2:20:05 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-F12-2/tp.git (master) completed! +Mar 22, 2024 2:20:05 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T17-2/tp.git (master)... +Mar 22, 2024 2:20:06 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-W08-4/tp.git (master) does not contain a standalone config file. +Mar 22, 2024 2:20:06 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W08-4/tp.git (master)... +Mar 22, 2024 2:20:06 PM reposense.report.ReportGenerator analyzeRepos +INFO: [56/92] Analyzing https://github.com/AY2324S2-CS2103T-T14-1/tp.git (master)... +Mar 22, 2024 2:20:06 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-T14-1/tp.git (master) does not contain a standalone config file. -Mar 22, 2024 10:05:49 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 22, 2024 2:20:06 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T14-1/tp.git (master)... -Mar 22, 2024 10:05:50 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T08-3/tp.git (master)... -Mar 22, 2024 10:05:50 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T17-2/tp.git (master)... -Mar 22, 2024 10:05:50 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T08-3/tp.git (master)... -Mar 22, 2024 10:05:50 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T08-3/tp.git (master) completed! -Mar 22, 2024 10:05:50 AM reposense.report.ReportGenerator analyzeRepos -INFO: [55/92] Analyzing https://github.com/AY2324S2-CS2103T-W08-4/tp.git (master)... -Mar 22, 2024 10:05:50 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 22, 2024 2:20:06 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T17-2/tp.git (master)... -Mar 22, 2024 10:05:50 AM reposense.report.ReportGenerator analyzeRepo +Mar 22, 2024 2:20:06 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-T17-2/tp.git (master) completed! -Mar 22, 2024 10:05:50 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-W08-4/tp.git (master) does not contain a standalone config file. -Mar 22, 2024 10:05:50 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W08-4/tp.git (master)... -Mar 22, 2024 10:05:50 AM reposense.report.ReportGenerator analyzeRepos -INFO: [56/92] Analyzing https://github.com/AY2324S2-CS2103T-F12-2/tp.git (master)... -Mar 22, 2024 10:05:50 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-F12-2/tp.git (master) does not contain a standalone config file. -Mar 22, 2024 10:05:50 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F12-2/tp.git (master)... -Mar 22, 2024 10:05:51 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 22, 2024 2:20:06 PM reposense.report.ReportGenerator analyzeRepos +INFO: [57/92] Analyzing https://github.com/AY2324S2-CS2103T-W12-2/tp.git (master)... +Mar 22, 2024 2:20:06 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-W12-2/tp.git (master) does not contain a standalone config file. +Mar 22, 2024 2:20:06 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W12-2/tp.git (master)... +Mar 22, 2024 2:20:06 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T08-1/tp.git (master)... -Mar 22, 2024 10:05:51 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T14-1/tp.git (master)... -Mar 22, 2024 10:05:51 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 22, 2024 2:20:06 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T08-1/tp.git (master)... -Mar 22, 2024 10:05:51 AM reposense.report.ReportGenerator analyzeRepo +Mar 22, 2024 2:20:06 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-T08-1/tp.git (master) completed! -Mar 22, 2024 10:05:51 AM reposense.report.ReportGenerator analyzeRepos -INFO: [57/92] Analyzing https://github.com/AY2324S2-CS2103T-W12-2/tp.git (master)... -Mar 22, 2024 10:05:51 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T14-1/tp.git (master)... -Mar 22, 2024 10:05:51 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T14-1/tp.git (master) completed! -Mar 22, 2024 10:05:51 AM reposense.report.ReportGenerator analyzeRepos +Mar 22, 2024 2:20:06 PM reposense.report.ReportGenerator analyzeRepos INFO: [58/92] Analyzing https://github.com/AY2324S2-CS2103T-W08-3/tp.git (master)... -Mar 22, 2024 10:05:51 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-W12-2/tp.git (master) does not contain a standalone config file. -Mar 22, 2024 10:05:51 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W12-2/tp.git (master)... -Mar 22, 2024 10:05:51 AM reposense.report.ReportGenerator updateRepoConfig +Mar 22, 2024 2:20:06 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-W08-3/tp.git (master) does not contain a standalone config file. -Mar 22, 2024 10:05:51 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 22, 2024 2:20:06 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W08-3/tp.git (master)... -Mar 22, 2024 10:05:52 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F12-2/tp.git (master)... -Mar 22, 2024 10:05:52 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 22, 2024 2:20:07 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W08-4/tp.git (master)... -Mar 22, 2024 10:05:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F12-2/tp.git (master)... -Mar 22, 2024 10:05:52 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-F12-2/tp.git (master) completed! -Mar 22, 2024 10:05:52 AM reposense.report.ReportGenerator analyzeRepos -INFO: [59/92] Analyzing https://github.com/AY2324S2-CS2103T-F14-4/tp.git (master)... -Mar 22, 2024 10:05:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 22, 2024 2:20:07 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W08-4/tp.git (master)... -Mar 22, 2024 10:05:52 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-F14-4/tp.git (master) does not contain a standalone config file. -Mar 22, 2024 10:05:52 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F14-4/tp.git (master)... -Mar 22, 2024 10:05:52 AM reposense.report.ReportGenerator analyzeRepo +Mar 22, 2024 2:20:07 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-W08-4/tp.git (master) completed! -Mar 22, 2024 10:05:52 AM reposense.report.ReportGenerator analyzeRepos -INFO: [60/92] Analyzing https://github.com/AY2324S2-CS2103T-W12-1/tp.git (master)... -Mar 22, 2024 10:05:52 AM reposense.report.ReportGenerator updateRepoConfig +Mar 22, 2024 2:20:07 PM reposense.report.ReportGenerator analyzeRepos +INFO: [59/92] Analyzing https://github.com/AY2324S2-CS2103T-W12-1/tp.git (master)... +Mar 22, 2024 2:20:07 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-W12-1/tp.git (master) does not contain a standalone config file. -Mar 22, 2024 10:05:52 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 22, 2024 2:20:07 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W12-1/tp.git (master)... -Mar 22, 2024 10:05:53 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F14-4/tp.git (master)... -Mar 22, 2024 10:05:53 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F14-4/tp.git (master)... -Mar 22, 2024 10:05:53 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-F14-4/tp.git (master) completed! -Mar 22, 2024 10:05:53 AM reposense.report.ReportGenerator analyzeRepos -INFO: [61/92] Analyzing https://github.com/AY2324S2-CS2103T-F11-4/tp.git (master)... -Mar 22, 2024 10:05:54 AM reposense.report.ReportGenerator updateRepoConfig +Mar 22, 2024 2:20:08 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T14-1/tp.git (master)... +Mar 22, 2024 2:20:08 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T14-1/tp.git (master)... +Mar 22, 2024 2:20:08 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T14-1/tp.git (master) completed! +Mar 22, 2024 2:20:08 PM reposense.report.ReportGenerator analyzeRepos +INFO: [60/92] Analyzing https://github.com/AY2324S2-CS2103T-F11-4/tp.git (master)... +Mar 22, 2024 2:20:08 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-F11-4/tp.git (master) does not contain a standalone config file. -Mar 22, 2024 10:05:54 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 22, 2024 2:20:08 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F11-4/tp.git (master)... -Mar 22, 2024 10:05:54 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W12-1/tp.git (master)... -Mar 22, 2024 10:05:54 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W12-1/tp.git (master)... -Mar 22, 2024 10:05:54 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-W12-1/tp.git (master) completed! -Mar 22, 2024 10:05:54 AM reposense.report.ReportGenerator analyzeRepos -INFO: [62/92] Analyzing https://github.com/AY2324S2-CS2103T-W08-2/tp.git (master)... -Mar 22, 2024 10:05:54 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 22, 2024 2:20:08 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W12-2/tp.git (master)... -Mar 22, 2024 10:05:54 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-W08-2/tp.git (master) does not contain a standalone config file. -Mar 22, 2024 10:05:54 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W08-2/tp.git (master)... -Mar 22, 2024 10:05:54 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 22, 2024 2:20:09 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W12-2/tp.git (master)... -Mar 22, 2024 10:05:54 AM reposense.report.ReportGenerator analyzeRepo +Mar 22, 2024 2:20:09 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-W12-2/tp.git (master) completed! -Mar 22, 2024 10:05:55 AM reposense.report.ReportGenerator analyzeRepos -INFO: [63/92] Analyzing https://github.com/AY2324S2-CS2103T-F11-3/tp.git (master)... -Mar 22, 2024 10:05:55 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-F11-3/tp.git (master) does not contain a standalone config file. -Mar 22, 2024 10:05:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F11-3/tp.git (master)... -Mar 22, 2024 10:05:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 22, 2024 2:20:09 PM reposense.report.ReportGenerator analyzeRepos +INFO: [61/92] Analyzing https://github.com/AY2324S2-CS2103T-W08-2/tp.git (master)... +Mar 22, 2024 2:20:09 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-W08-2/tp.git (master) does not contain a standalone config file. +Mar 22, 2024 2:20:09 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W08-2/tp.git (master)... +Mar 22, 2024 2:20:09 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F11-4/tp.git (master)... -Mar 22, 2024 10:05:55 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 22, 2024 2:20:09 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W12-1/tp.git (master)... +Mar 22, 2024 2:20:09 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F11-4/tp.git (master)... -Mar 22, 2024 10:05:55 AM reposense.report.ReportGenerator analyzeRepo +Mar 22, 2024 2:20:09 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-F11-4/tp.git (master) completed! -Mar 22, 2024 10:05:55 AM reposense.report.ReportGenerator analyzeRepos -INFO: [64/92] Analyzing https://github.com/AY2324S2-CS2103T-T15-2/tp.git (master)... -Mar 22, 2024 10:05:55 AM reposense.report.ReportGenerator updateRepoConfig +Mar 22, 2024 2:20:09 PM reposense.report.ReportGenerator analyzeRepos +INFO: [62/92] Analyzing https://github.com/AY2324S2-CS2103T-F14-4/tp.git (master)... +Mar 22, 2024 2:20:09 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W12-1/tp.git (master)... +Mar 22, 2024 2:20:09 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-F14-4/tp.git (master) does not contain a standalone config file. +Mar 22, 2024 2:20:09 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F14-4/tp.git (master)... +Mar 22, 2024 2:20:09 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-W12-1/tp.git (master) completed! +Mar 22, 2024 2:20:09 PM reposense.report.ReportGenerator analyzeRepos +INFO: [63/92] Analyzing https://github.com/AY2324S2-CS2103T-T15-2/tp.git (master)... +Mar 22, 2024 2:20:09 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-T15-2/tp.git (master) does not contain a standalone config file. -Mar 22, 2024 10:05:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 22, 2024 2:20:09 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T15-2/tp.git (master)... -Mar 22, 2024 10:05:56 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 22, 2024 2:20:10 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W08-3/tp.git (master)... -Mar 22, 2024 10:05:56 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 22, 2024 2:20:11 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W08-3/tp.git (master)... -Mar 22, 2024 10:05:56 AM reposense.report.ReportGenerator analyzeRepo +Mar 22, 2024 2:20:11 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-W08-3/tp.git (master) completed! -Mar 22, 2024 10:05:56 AM reposense.report.ReportGenerator analyzeRepos -INFO: [65/92] Analyzing https://github.com/AY2324S2-CS2103-T14-1/tp.git (master)... -Mar 22, 2024 10:05:56 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103-T14-1/tp.git (master) does not contain a standalone config file. -Mar 22, 2024 10:05:56 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-T14-1/tp.git (master)... -Mar 22, 2024 10:05:57 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F11-3/tp.git (master)... -Mar 22, 2024 10:05:57 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 22, 2024 2:20:11 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F14-4/tp.git (master)... +Mar 22, 2024 2:20:11 PM reposense.report.ReportGenerator analyzeRepos +INFO: [64/92] Analyzing https://github.com/AY2324S2-CS2103T-F11-3/tp.git (master)... +Mar 22, 2024 2:20:11 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-F11-3/tp.git (master) does not contain a standalone config file. +Mar 22, 2024 2:20:11 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F11-3/tp.git (master)... +Mar 22, 2024 2:20:11 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F14-4/tp.git (master)... +Mar 22, 2024 2:20:11 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-F14-4/tp.git (master) completed! +Mar 22, 2024 2:20:11 PM reposense.report.ReportGenerator analyzeRepos +INFO: [65/92] Analyzing https://github.com/AY2324S2-CS2103T-F11-2/tp.git (master)... +Mar 22, 2024 2:20:11 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-F11-2/tp.git (master) does not contain a standalone config file. +Mar 22, 2024 2:20:11 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F11-2/tp.git (master)... +Mar 22, 2024 2:20:11 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T15-2/tp.git (master)... -Mar 22, 2024 10:05:57 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F11-3/tp.git (master)... -Mar 22, 2024 10:05:57 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-F11-3/tp.git (master) completed! -Mar 22, 2024 10:05:57 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 22, 2024 2:20:11 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T15-2/tp.git (master)... -Mar 22, 2024 10:05:57 AM reposense.report.ReportGenerator analyzeRepos -INFO: [66/92] Analyzing https://github.com/AY2324S2-CS2103T-F11-2/tp.git (master)... -Mar 22, 2024 10:05:57 AM reposense.report.ReportGenerator analyzeRepo +Mar 22, 2024 2:20:11 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-T15-2/tp.git (master) completed! -Mar 22, 2024 10:05:57 AM reposense.report.ReportGenerator analyzeRepos -INFO: [67/92] Analyzing https://github.com/AY2324S2-CS2103T-F11-1/tp.git (master)... -Mar 22, 2024 10:05:57 AM reposense.report.ReportGenerator updateRepoConfig +Mar 22, 2024 2:20:11 PM reposense.report.ReportGenerator analyzeRepos +INFO: [66/92] Analyzing https://github.com/AY2324S2-CS2103T-F11-1/tp.git (master)... +Mar 22, 2024 2:20:11 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-F11-1/tp.git (master) does not contain a standalone config file. -Mar 22, 2024 10:05:57 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 22, 2024 2:20:11 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F11-1/tp.git (master)... -Mar 22, 2024 10:05:57 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-F11-2/tp.git (master) does not contain a standalone config file. -Mar 22, 2024 10:05:57 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F11-2/tp.git (master)... -Mar 22, 2024 10:05:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 22, 2024 2:20:13 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F11-1/tp.git (master)... -Mar 22, 2024 10:05:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 22, 2024 2:20:13 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F11-1/tp.git (master)... -Mar 22, 2024 10:05:59 AM reposense.report.ReportGenerator analyzeRepo +Mar 22, 2024 2:20:13 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-F11-1/tp.git (master) completed! -Mar 22, 2024 10:05:59 AM reposense.report.ReportGenerator analyzeRepos -INFO: [68/92] Analyzing https://github.com/AY2324S2-CS2103T-T15-3/tp.git (master)... -Mar 22, 2024 10:05:59 AM reposense.report.ReportGenerator updateRepoConfig +Mar 22, 2024 2:20:13 PM reposense.report.ReportGenerator analyzeRepos +INFO: [67/92] Analyzing https://github.com/AY2324S2-CS2103T-T15-3/tp.git (master)... +Mar 22, 2024 2:20:13 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-T15-3/tp.git (master) does not contain a standalone config file. -Mar 22, 2024 10:05:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 22, 2024 2:20:13 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T15-3/tp.git (master)... -Mar 22, 2024 10:05:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 22, 2024 2:20:13 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F11-3/tp.git (master)... +Mar 22, 2024 2:20:13 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F11-2/tp.git (master)... -Mar 22, 2024 10:05:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W08-2/tp.git (master)... -Mar 22, 2024 10:06:00 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 22, 2024 2:20:13 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F11-3/tp.git (master)... +Mar 22, 2024 2:20:13 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-F11-3/tp.git (master) completed! +Mar 22, 2024 2:20:13 PM reposense.report.ReportGenerator analyzeRepos +INFO: [68/92] Analyzing https://github.com/AY2324S2-CS2103-T14-1/tp.git (master)... +Mar 22, 2024 2:20:13 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F11-2/tp.git (master)... -Mar 22, 2024 10:06:00 AM reposense.report.ReportGenerator analyzeRepo +Mar 22, 2024 2:20:13 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-F11-2/tp.git (master) completed! -Mar 22, 2024 10:06:00 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W08-2/tp.git (master)... -Mar 22, 2024 10:06:00 AM reposense.report.ReportGenerator analyzeRepos +Mar 22, 2024 2:20:13 PM reposense.report.ReportGenerator analyzeRepos INFO: [69/92] Analyzing https://github.com/AY2324S2-CS2103T-T15-1/tp.git (master)... -Mar 22, 2024 10:06:00 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-W08-2/tp.git (master) completed! -Mar 22, 2024 10:06:00 AM reposense.report.ReportGenerator updateRepoConfig +Mar 22, 2024 2:20:13 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103-T14-1/tp.git (master) does not contain a standalone config file. +Mar 22, 2024 2:20:13 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-T14-1/tp.git (master)... +Mar 22, 2024 2:20:13 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-T15-1/tp.git (master) does not contain a standalone config file. -Mar 22, 2024 10:06:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 22, 2024 2:20:13 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T15-1/tp.git (master)... -Mar 22, 2024 10:06:00 AM reposense.report.ReportGenerator analyzeRepos +Mar 22, 2024 2:20:14 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W08-2/tp.git (master)... +Mar 22, 2024 2:20:14 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W08-2/tp.git (master)... +Mar 22, 2024 2:20:14 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-W08-2/tp.git (master) completed! +Mar 22, 2024 2:20:14 PM reposense.report.ReportGenerator analyzeRepos INFO: [70/92] Analyzing https://github.com/AY2324S2-CS2103T-T09-1/tp.git (master)... -Mar 22, 2024 10:06:00 AM reposense.report.ReportGenerator updateRepoConfig +Mar 22, 2024 2:20:14 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T15-3/tp.git (master)... +Mar 22, 2024 2:20:14 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-T09-1/tp.git (master) does not contain a standalone config file. -Mar 22, 2024 10:06:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 22, 2024 2:20:14 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T09-1/tp.git (master)... -Mar 22, 2024 10:06:00 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T15-3/tp.git (master)... -Mar 22, 2024 10:06:00 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 22, 2024 2:20:14 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T15-3/tp.git (master)... -Mar 22, 2024 10:06:00 AM reposense.report.ReportGenerator analyzeRepo +Mar 22, 2024 2:20:14 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-T15-3/tp.git (master) completed! -Mar 22, 2024 10:06:00 AM reposense.report.ReportGenerator analyzeRepos +Mar 22, 2024 2:20:14 PM reposense.report.ReportGenerator analyzeRepos INFO: [71/92] Analyzing https://github.com/AY2324S2-CS2103T-W12-4/tp.git (master)... -Mar 22, 2024 10:06:00 AM reposense.report.ReportGenerator updateRepoConfig +Mar 22, 2024 2:20:14 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-W12-4/tp.git (master) does not contain a standalone config file. -Mar 22, 2024 10:06:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 22, 2024 2:20:14 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W12-4/tp.git (master)... -Mar 22, 2024 10:06:01 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-T14-1/tp.git (master)... -Mar 22, 2024 10:06:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-T14-1/tp.git (master)... -Mar 22, 2024 10:06:02 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103-T14-1/tp.git (master) completed! -Mar 22, 2024 10:06:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 22, 2024 2:20:15 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W12-4/tp.git (master)... -Mar 22, 2024 10:06:02 AM reposense.report.ReportGenerator analyzeRepos -INFO: [72/92] Analyzing https://github.com/AY2324S2-CS2103T-T09-2/tp.git (master)... -Mar 22, 2024 10:06:02 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-T09-2/tp.git (master) does not contain a standalone config file. -Mar 22, 2024 10:06:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T09-2/tp.git (master)... -Mar 22, 2024 10:06:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 22, 2024 2:20:15 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W12-4/tp.git (master)... -Mar 22, 2024 10:06:02 AM reposense.report.ReportGenerator analyzeRepo +Mar 22, 2024 2:20:15 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-W12-4/tp.git (master) completed! -Mar 22, 2024 10:06:02 AM reposense.report.ReportGenerator analyzeRepos -INFO: [73/92] Analyzing https://github.com/AY2324S2-CS2103T-T15-4/tp.git (master)... -Mar 22, 2024 10:06:02 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-T15-4/tp.git (master) does not contain a standalone config file. -Mar 22, 2024 10:06:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T15-4/tp.git (master)... -Mar 22, 2024 10:06:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 22, 2024 2:20:15 PM reposense.report.ReportGenerator analyzeRepos +INFO: [72/92] Analyzing https://github.com/AY2324S2-CS2103T-W12-3/tp.git (master)... +Mar 22, 2024 2:20:15 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T15-1/tp.git (master)... -Mar 22, 2024 10:06:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T15-1/tp.git (master)... -Mar 22, 2024 10:06:02 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T15-1/tp.git (master) completed! -Mar 22, 2024 10:06:02 AM reposense.report.ReportGenerator analyzeRepos -INFO: [74/92] Analyzing https://github.com/AY2324S2-CS2103T-W12-3/tp.git (master)... -Mar 22, 2024 10:06:02 AM reposense.report.ReportGenerator updateRepoConfig +Mar 22, 2024 2:20:15 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-W12-3/tp.git (master) does not contain a standalone config file. -Mar 22, 2024 10:06:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 22, 2024 2:20:15 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W12-3/tp.git (master)... -Mar 22, 2024 10:06:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 22, 2024 2:20:16 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T15-1/tp.git (master)... +Mar 22, 2024 2:20:16 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T15-1/tp.git (master) completed! +Mar 22, 2024 2:20:16 PM reposense.report.ReportGenerator analyzeRepos +INFO: [73/92] Analyzing https://github.com/AY2324S2-CS2103T-T09-2/tp.git (master)... +Mar 22, 2024 2:20:16 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-T09-2/tp.git (master) does not contain a standalone config file. +Mar 22, 2024 2:20:16 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T09-2/tp.git (master)... +Mar 22, 2024 2:20:18 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W12-3/tp.git (master)... +Mar 22, 2024 2:20:18 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-T14-1/tp.git (master)... +Mar 22, 2024 2:20:18 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W12-3/tp.git (master)... +Mar 22, 2024 2:20:18 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-W12-3/tp.git (master) completed! +Mar 22, 2024 2:20:18 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T09-1/tp.git (master)... -Mar 22, 2024 10:06:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 22, 2024 2:20:18 PM reposense.report.ReportGenerator analyzeRepos +INFO: [74/92] Analyzing https://github.com/AY2324S2-CS2103T-T15-4/tp.git (master)... +Mar 22, 2024 2:20:18 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-T15-4/tp.git (master) does not contain a standalone config file. +Mar 22, 2024 2:20:18 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T15-4/tp.git (master)... +Mar 22, 2024 2:20:18 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-T14-1/tp.git (master)... +Mar 22, 2024 2:20:18 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T09-2/tp.git (master)... +Mar 22, 2024 2:20:18 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T09-1/tp.git (master)... -Mar 22, 2024 10:06:05 AM reposense.report.ReportGenerator analyzeRepo +Mar 22, 2024 2:20:18 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103-T14-1/tp.git (master) completed! +Mar 22, 2024 2:20:18 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-T09-1/tp.git (master) completed! -Mar 22, 2024 10:06:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T09-2/tp.git (master)... -Mar 22, 2024 10:06:05 AM reposense.report.ReportGenerator analyzeRepos +Mar 22, 2024 2:20:18 PM reposense.report.ReportGenerator analyzeRepos INFO: [75/92] Analyzing https://github.com/AY2324S2-CS2103-F08-3/tp.git (master)... -Mar 22, 2024 10:06:05 AM reposense.report.ReportGenerator updateRepoConfig +Mar 22, 2024 2:20:18 PM reposense.report.ReportGenerator analyzeRepos +INFO: [76/92] Analyzing https://github.com/AY2324S2-CS2103-F08-1/tp.git (master)... +Mar 22, 2024 2:20:18 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103-F08-3/tp.git (master) does not contain a standalone config file. -Mar 22, 2024 10:06:05 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 22, 2024 2:20:18 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-F08-3/tp.git (master)... -Mar 22, 2024 10:06:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T09-2/tp.git (master)... -Mar 22, 2024 10:06:05 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T09-2/tp.git (master) completed! -Mar 22, 2024 10:06:05 AM reposense.report.ReportGenerator analyzeRepos -INFO: [76/92] Analyzing https://github.com/AY2324S2-CS2103-F08-1/tp.git (master)... -Mar 22, 2024 10:06:05 AM reposense.report.ReportGenerator updateRepoConfig +Mar 22, 2024 2:20:18 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103-F08-1/tp.git (master) does not contain a standalone config file. -Mar 22, 2024 10:06:05 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 22, 2024 2:20:18 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-F08-1/tp.git (master)... -Mar 22, 2024 10:06:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W12-3/tp.git (master)... -Mar 22, 2024 10:06:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T15-4/tp.git (master)... -Mar 22, 2024 10:06:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W12-3/tp.git (master)... -Mar 22, 2024 10:06:05 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-W12-3/tp.git (master) completed! -Mar 22, 2024 10:06:05 AM reposense.report.ReportGenerator analyzeRepos +Mar 22, 2024 2:20:18 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T09-2/tp.git (master)... +Mar 22, 2024 2:20:19 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T09-2/tp.git (master) completed! +Mar 22, 2024 2:20:19 PM reposense.report.ReportGenerator analyzeRepos INFO: [77/92] Analyzing https://github.com/AY2324S2-CS2103T-W08-1/tp.git (master)... -Mar 22, 2024 10:06:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T15-4/tp.git (master)... -Mar 22, 2024 10:06:06 AM reposense.report.ReportGenerator updateRepoConfig +Mar 22, 2024 2:20:19 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-W08-1/tp.git (master) does not contain a standalone config file. -Mar 22, 2024 10:06:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 22, 2024 2:20:19 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W08-1/tp.git (master)... -Mar 22, 2024 10:06:06 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T15-4/tp.git (master) completed! -Mar 22, 2024 10:06:06 AM reposense.report.ReportGenerator analyzeRepos -INFO: [78/92] Analyzing https://github.com/AY2324S2-CS2103T-T12-1/tp.git (master)... -Mar 22, 2024 10:06:06 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-T12-1/tp.git (master) does not contain a standalone config file. -Mar 22, 2024 10:06:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T12-1/tp.git (master)... -Mar 22, 2024 10:06:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 22, 2024 2:20:20 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-F08-1/tp.git (master)... -Mar 22, 2024 10:06:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 22, 2024 2:20:20 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-F08-1/tp.git (master)... -Mar 22, 2024 10:06:07 AM reposense.report.ReportGenerator analyzeRepo +Mar 22, 2024 2:20:20 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103-F08-1/tp.git (master) completed! -Mar 22, 2024 10:06:07 AM reposense.report.ReportGenerator analyzeRepos -INFO: [79/92] Analyzing https://github.com/AY2324S2-CS2103T-W09-2/tp.git (master)... -Mar 22, 2024 10:06:07 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-W09-2/tp.git (master) does not contain a standalone config file. -Mar 22, 2024 10:06:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W09-2/tp.git (master)... -Mar 22, 2024 10:06:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 22, 2024 2:20:20 PM reposense.report.ReportGenerator analyzeRepos +INFO: [78/92] Analyzing https://github.com/AY2324S2-CS2103T-T12-1/tp.git (master)... +Mar 22, 2024 2:20:20 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-T12-1/tp.git (master) does not contain a standalone config file. +Mar 22, 2024 2:20:20 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T12-1/tp.git (master)... +Mar 22, 2024 2:20:20 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W08-1/tp.git (master)... -Mar 22, 2024 10:06:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 22, 2024 2:20:21 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W08-1/tp.git (master)... -Mar 22, 2024 10:06:08 AM reposense.report.ReportGenerator analyzeRepo +Mar 22, 2024 2:20:21 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-W08-1/tp.git (master) completed! -Mar 22, 2024 10:06:08 AM reposense.report.ReportGenerator analyzeRepos -INFO: [80/92] Analyzing https://github.com/AY2324S2-CS2103T-W11-2/tp.git (master)... -Mar 22, 2024 10:06:08 AM reposense.report.ReportGenerator updateRepoConfig +Mar 22, 2024 2:20:21 PM reposense.report.ReportGenerator analyzeRepos +INFO: [79/92] Analyzing https://github.com/AY2324S2-CS2103T-W11-2/tp.git (master)... +Mar 22, 2024 2:20:21 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-W11-2/tp.git (master) does not contain a standalone config file. -Mar 22, 2024 10:06:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 22, 2024 2:20:21 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W11-2/tp.git (master)... -Mar 22, 2024 10:06:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T12-1/tp.git (master)... -Mar 22, 2024 10:06:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T12-1/tp.git (master)... -Mar 22, 2024 10:06:09 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T12-1/tp.git (master) completed! -Mar 22, 2024 10:06:09 AM reposense.report.ReportGenerator analyzeRepos -INFO: [81/92] Analyzing https://github.com/AY2324S2-CS2103T-W09-4/tp.git (master)... -Mar 22, 2024 10:06:09 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-W09-4/tp.git (master) does not contain a standalone config file. -Mar 22, 2024 10:06:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W09-4/tp.git (master)... -Mar 22, 2024 10:06:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 22, 2024 2:20:21 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T15-4/tp.git (master)... +Mar 22, 2024 2:20:21 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T15-4/tp.git (master)... +Mar 22, 2024 2:20:21 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T15-4/tp.git (master) completed! +Mar 22, 2024 2:20:21 PM reposense.report.ReportGenerator analyzeRepos +INFO: [80/92] Analyzing https://github.com/AY2324S2-CS2103T-W09-2/tp.git (master)... +Mar 22, 2024 2:20:22 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-W09-2/tp.git (master) does not contain a standalone config file. +Mar 22, 2024 2:20:22 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W09-2/tp.git (master)... +Mar 22, 2024 2:20:22 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W11-2/tp.git (master)... -Mar 22, 2024 10:06:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 22, 2024 2:20:22 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W11-2/tp.git (master)... -Mar 22, 2024 10:06:09 AM reposense.report.ReportGenerator analyzeRepo +Mar 22, 2024 2:20:22 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-W11-2/tp.git (master) completed! -Mar 22, 2024 10:06:09 AM reposense.report.ReportGenerator analyzeRepos +Mar 22, 2024 2:20:22 PM reposense.report.ReportGenerator analyzeRepos +INFO: [81/92] Analyzing https://github.com/AY2324S2-CS2103T-W09-4/tp.git (master)... +Mar 22, 2024 2:20:22 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-W09-4/tp.git (master) does not contain a standalone config file. +Mar 22, 2024 2:20:22 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W09-4/tp.git (master)... +Mar 22, 2024 2:20:23 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T12-1/tp.git (master)... +Mar 22, 2024 2:20:23 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-F08-3/tp.git (master)... +Mar 22, 2024 2:20:23 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T12-1/tp.git (master)... +Mar 22, 2024 2:20:23 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T12-1/tp.git (master) completed! +Mar 22, 2024 2:20:23 PM reposense.report.ReportGenerator analyzeRepos INFO: [82/92] Analyzing https://github.com/AY2324S2-CS2103T-F14-2/tp.git (master)... -Mar 22, 2024 10:06:09 AM reposense.report.ReportGenerator updateRepoConfig +Mar 22, 2024 2:20:23 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-F14-2/tp.git (master) does not contain a standalone config file. -Mar 22, 2024 10:06:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 22, 2024 2:20:23 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F14-2/tp.git (master)... -Mar 22, 2024 10:06:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W09-2/tp.git (master)... -Mar 22, 2024 10:06:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W09-2/tp.git (master)... -Mar 22, 2024 10:06:10 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-W09-2/tp.git (master) completed! -Mar 22, 2024 10:06:10 AM reposense.report.ReportGenerator analyzeRepos +Mar 22, 2024 2:20:23 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-F08-3/tp.git (master)... +Mar 22, 2024 2:20:23 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103-F08-3/tp.git (master) completed! +Mar 22, 2024 2:20:23 PM reposense.report.ReportGenerator analyzeRepos INFO: [83/92] Analyzing https://github.com/AY2324S2-CS2103T-T11-3/tp.git (master)... -Mar 22, 2024 10:06:10 AM reposense.report.ReportGenerator updateRepoConfig +Mar 22, 2024 2:20:24 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-T11-3/tp.git (master) does not contain a standalone config file. -Mar 22, 2024 10:06:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 22, 2024 2:20:24 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T11-3/tp.git (master)... -Mar 22, 2024 10:06:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-F08-3/tp.git (master)... -Mar 22, 2024 10:06:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-F08-3/tp.git (master)... -Mar 22, 2024 10:06:10 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103-F08-3/tp.git (master) completed! -Mar 22, 2024 10:06:10 AM reposense.report.ReportGenerator analyzeRepos -INFO: [84/92] Analyzing https://github.com/AY2324S2-CS2103T-T12-3/tp.git (master)... -Mar 22, 2024 10:06:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 22, 2024 2:20:24 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W09-4/tp.git (master)... -Mar 22, 2024 10:06:11 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-T12-3/tp.git (master) does not contain a standalone config file. -Mar 22, 2024 10:06:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T12-3/tp.git (master)... -Mar 22, 2024 10:06:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T11-3/tp.git (master)... -Mar 22, 2024 10:06:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 22, 2024 2:20:24 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W09-2/tp.git (master)... +Mar 22, 2024 2:20:24 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W09-4/tp.git (master)... -Mar 22, 2024 10:06:11 AM reposense.report.ReportGenerator analyzeRepo +Mar 22, 2024 2:20:24 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-W09-4/tp.git (master) completed! -Mar 22, 2024 10:06:11 AM reposense.report.ReportGenerator analyzeRepos -INFO: [85/92] Analyzing https://github.com/AY2324S2-CS2103T-F12-1/tp.git (master)... -Mar 22, 2024 10:06:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T11-3/tp.git (master)... -Mar 22, 2024 10:06:11 AM reposense.report.ReportGenerator updateRepoConfig +Mar 22, 2024 2:20:24 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W09-2/tp.git (master)... +Mar 22, 2024 2:20:24 PM reposense.report.ReportGenerator analyzeRepos +INFO: [84/92] Analyzing https://github.com/AY2324S2-CS2103T-F12-1/tp.git (master)... +Mar 22, 2024 2:20:24 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-W09-2/tp.git (master) completed! +Mar 22, 2024 2:20:24 PM reposense.report.ReportGenerator analyzeRepos +INFO: [85/92] Analyzing https://github.com/AY2324S2-CS2103T-T12-3/tp.git (master)... +Mar 22, 2024 2:20:24 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-F12-1/tp.git (master) does not contain a standalone config file. -Mar 22, 2024 10:06:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 22, 2024 2:20:24 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F12-1/tp.git (master)... -Mar 22, 2024 10:06:11 AM reposense.report.ReportGenerator analyzeRepo +Mar 22, 2024 2:20:24 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-T12-3/tp.git (master) does not contain a standalone config file. +Mar 22, 2024 2:20:24 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T12-3/tp.git (master)... +Mar 22, 2024 2:20:24 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T11-3/tp.git (master)... +Mar 22, 2024 2:20:24 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T11-3/tp.git (master)... +Mar 22, 2024 2:20:24 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-T11-3/tp.git (master) completed! -Mar 22, 2024 10:06:11 AM reposense.report.ReportGenerator analyzeRepos +Mar 22, 2024 2:20:24 PM reposense.report.ReportGenerator analyzeRepos INFO: [86/92] Analyzing https://github.com/AY2324S2-CS2103T-T17-3/tp.git (master)... -Mar 22, 2024 10:06:11 AM reposense.report.ReportGenerator updateRepoConfig +Mar 22, 2024 2:20:25 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-T17-3/tp.git (master) does not contain a standalone config file. -Mar 22, 2024 10:06:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 22, 2024 2:20:25 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T17-3/tp.git (master)... -Mar 22, 2024 10:06:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 22, 2024 2:20:25 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F14-2/tp.git (master)... -Mar 22, 2024 10:06:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 22, 2024 2:20:25 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F14-2/tp.git (master)... -Mar 22, 2024 10:06:11 AM reposense.report.ReportGenerator analyzeRepo +Mar 22, 2024 2:20:25 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-F14-2/tp.git (master) completed! -Mar 22, 2024 10:06:11 AM reposense.report.ReportGenerator analyzeRepos +Mar 22, 2024 2:20:25 PM reposense.report.ReportGenerator analyzeRepos INFO: [87/92] Analyzing https://github.com/AY2324S2-CS2103T-T08-2/tp.git (master)... -Mar 22, 2024 10:06:11 AM reposense.report.ReportGenerator updateRepoConfig +Mar 22, 2024 2:20:25 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-T08-2/tp.git (master) does not contain a standalone config file. -Mar 22, 2024 10:06:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 22, 2024 2:20:25 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T08-2/tp.git (master)... -Mar 22, 2024 10:06:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T08-2/tp.git (master)... -Mar 22, 2024 10:06:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T08-2/tp.git (master)... -Mar 22, 2024 10:06:13 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T08-2/tp.git (master) completed! -Mar 22, 2024 10:06:13 AM reposense.report.ReportGenerator analyzeRepos -INFO: [88/92] Analyzing https://github.com/AY2324S2-CS2103T-T17-1/tp.git (master)... -Mar 22, 2024 10:06:13 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-T17-1/tp.git (master) does not contain a standalone config file. -Mar 22, 2024 10:06:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T17-1/tp.git (master)... -Mar 22, 2024 10:06:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 22, 2024 2:20:26 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T12-3/tp.git (master)... -Mar 22, 2024 10:06:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 22, 2024 2:20:26 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T17-3/tp.git (master)... -Mar 22, 2024 10:06:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 22, 2024 2:20:27 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T08-2/tp.git (master)... +Mar 22, 2024 2:20:27 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T17-3/tp.git (master)... +Mar 22, 2024 2:20:27 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T12-3/tp.git (master)... -Mar 22, 2024 10:06:13 AM reposense.report.ReportGenerator analyzeRepo +Mar 22, 2024 2:20:27 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-T12-3/tp.git (master) completed! -Mar 22, 2024 10:06:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T17-3/tp.git (master)... -Mar 22, 2024 10:06:13 AM reposense.report.ReportGenerator analyzeRepos -INFO: [89/92] Analyzing https://github.com/AY2324S2-CS2103T-T14-2/tp.git (master)... -Mar 22, 2024 10:06:13 AM reposense.report.ReportGenerator analyzeRepo +Mar 22, 2024 2:20:27 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-T17-3/tp.git (master) completed! -Mar 22, 2024 10:06:14 AM reposense.report.ReportGenerator analyzeRepos +Mar 22, 2024 2:20:27 PM reposense.report.ReportGenerator analyzeRepos +INFO: [88/92] Analyzing https://github.com/AY2324S2-CS2103T-T17-1/tp.git (master)... +Mar 22, 2024 2:20:27 PM reposense.report.ReportGenerator analyzeRepos +INFO: [89/92] Analyzing https://github.com/AY2324S2-CS2103T-T14-2/tp.git (master)... +Mar 22, 2024 2:20:27 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T08-2/tp.git (master)... +Mar 22, 2024 2:20:27 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T08-2/tp.git (master) completed! +Mar 22, 2024 2:20:27 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-T17-1/tp.git (master) does not contain a standalone config file. +Mar 22, 2024 2:20:27 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T17-1/tp.git (master)... +Mar 22, 2024 2:20:27 PM reposense.report.ReportGenerator analyzeRepos INFO: [90/92] Analyzing https://github.com/AY2324S2-CS2103T-W13-1/tp.git (master)... -Mar 22, 2024 10:06:14 AM reposense.report.ReportGenerator updateRepoConfig +Mar 22, 2024 2:20:27 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-T14-2/tp.git (master) does not contain a standalone config file. -Mar 22, 2024 10:06:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 22, 2024 2:20:27 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T14-2/tp.git (master)... -Mar 22, 2024 10:06:14 AM reposense.report.ReportGenerator updateRepoConfig +Mar 22, 2024 2:20:27 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-W13-1/tp.git (master) does not contain a standalone config file. -Mar 22, 2024 10:06:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 22, 2024 2:20:27 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W13-1/tp.git (master)... -Mar 22, 2024 10:06:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 22, 2024 2:20:28 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F12-1/tp.git (master)... +Mar 22, 2024 2:20:28 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F12-1/tp.git (master)... +Mar 22, 2024 2:20:28 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-F12-1/tp.git (master) completed! +Mar 22, 2024 2:20:28 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W13-1/tp.git (master)... -Mar 22, 2024 10:06:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T17-1/tp.git (master)... -Mar 22, 2024 10:06:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W13-1/tp.git (master)... -Mar 22, 2024 10:06:15 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-W13-1/tp.git (master) completed! -Mar 22, 2024 10:06:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T17-1/tp.git (master)... -Mar 22, 2024 10:06:15 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T17-1/tp.git (master) completed! -Mar 22, 2024 10:06:15 AM reposense.report.ReportGenerator analyzeRepos +Mar 22, 2024 2:20:28 PM reposense.report.ReportGenerator analyzeRepos INFO: [91/92] Analyzing https://github.com/AY2324S2-CS2103T-F12-3/tp.git (master)... -Mar 22, 2024 10:06:15 AM reposense.report.ReportGenerator analyzeRepos -INFO: [92/92] Analyzing https://github.com/AY2324S2-CS2103T-T11-1/tp.git (master)... -Mar 22, 2024 10:06:15 AM reposense.report.ReportGenerator updateRepoConfig +Mar 22, 2024 2:20:28 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-F12-3/tp.git (master) does not contain a standalone config file. -Mar 22, 2024 10:06:15 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 22, 2024 2:20:28 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F12-3/tp.git (master)... -Mar 22, 2024 10:06:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F12-1/tp.git (master)... -Mar 22, 2024 10:06:15 AM reposense.report.ReportGenerator updateRepoConfig +Mar 22, 2024 2:20:28 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W13-1/tp.git (master)... +Mar 22, 2024 2:20:28 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-W13-1/tp.git (master) completed! +Mar 22, 2024 2:20:28 PM reposense.report.ReportGenerator analyzeRepos +INFO: [92/92] Analyzing https://github.com/AY2324S2-CS2103T-T11-1/tp.git (master)... +Mar 22, 2024 2:20:28 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-T11-1/tp.git (master) does not contain a standalone config file. -Mar 22, 2024 10:06:15 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 22, 2024 2:20:28 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T11-1/tp.git (master)... -Mar 22, 2024 10:06:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F12-1/tp.git (master)... -Mar 22, 2024 10:06:15 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-F12-1/tp.git (master) completed! -Mar 22, 2024 10:06:16 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 22, 2024 2:20:28 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T17-1/tp.git (master)... +Mar 22, 2024 2:20:28 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T17-1/tp.git (master)... +Mar 22, 2024 2:20:28 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T17-1/tp.git (master) completed! +Mar 22, 2024 2:20:29 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T14-2/tp.git (master)... -Mar 22, 2024 10:06:16 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 22, 2024 2:20:29 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T14-2/tp.git (master)... -Mar 22, 2024 10:06:16 AM reposense.report.ReportGenerator analyzeRepo +Mar 22, 2024 2:20:29 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-T14-2/tp.git (master) completed! -Mar 22, 2024 10:06:16 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 22, 2024 2:20:29 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T11-1/tp.git (master)... -Mar 22, 2024 10:06:16 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 22, 2024 2:20:29 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T11-1/tp.git (master)... -Mar 22, 2024 10:06:16 AM reposense.report.ReportGenerator analyzeRepo +Mar 22, 2024 2:20:29 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-T11-1/tp.git (master) completed! -Mar 22, 2024 10:06:18 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 22, 2024 2:20:31 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F12-3/tp.git (master)... -Mar 22, 2024 10:06:18 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 22, 2024 2:20:31 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F12-3/tp.git (master)... -Mar 22, 2024 10:06:18 AM reposense.report.ReportGenerator analyzeRepo +Mar 22, 2024 2:20:31 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-F12-3/tp.git (master) completed! -Mar 22, 2024 10:06:18 AM reposense.report.ReportGenerator generateReposReport +Mar 22, 2024 2:20:31 PM reposense.report.ReportGenerator generateReposReport INFO: The report is generated at /home/runner/work/tp-dashboard/tp-dashboard/reposense-report -Mar 22, 2024 10:06:20 AM reposense.RepoSense main -INFO: Elapsed processing time: 1 minute(s) 32.95 second(s) +Mar 22, 2024 2:20:32 PM reposense.RepoSense main +INFO: Elapsed processing time: 1 minute(s) 25.22 second(s) diff --git a/summary.json b/summary.json index 8e609813..4ec55c18 100644 --- a/summary.json +++ b/summary.json @@ -1 +1 @@ -{"repoSenseVersion":"cc0651f0e3","reportGeneratedTime":"Fri Mar 22 18:04:47 2024 UTC+08:00","reportGenerationTime":" 1 minute(s) 31.21 second(s)","zoneId":"UTC+08:00","reportTitle":"CS2103 tP Code Dashboard","repos":[{"location":{"location":"https://github.com/AY2324S2-CS2103-T14-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103-T14-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103-T14-1/tp[master]","outputFolderName":"AY2324S2-CS2103-T14-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103-F15-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103-F15-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103-F15-2/tp[master]","outputFolderName":"AY2324S2-CS2103-F15-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103-F15-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103-F15-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103-F15-3/tp[master]","outputFolderName":"AY2324S2-CS2103-F15-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103-F09-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103-F09-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103-F09-4/tp[master]","outputFolderName":"AY2324S2-CS2103-F09-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103-F15-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103-F15-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103-F15-4/tp[master]","outputFolderName":"AY2324S2-CS2103-F15-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103-F15-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103-F15-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103-F15-1/tp[master]","outputFolderName":"AY2324S2-CS2103-F15-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103-F08-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103-F08-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103-F08-3/tp[master]","outputFolderName":"AY2324S2-CS2103-F08-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103-F09-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103-F09-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103-F09-2/tp[master]","outputFolderName":"AY2324S2-CS2103-F09-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103-F09-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103-F09-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103-F09-1/tp[master]","outputFolderName":"AY2324S2-CS2103-F09-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103-F08-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103-F08-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103-F08-2/tp[master]","outputFolderName":"AY2324S2-CS2103-F08-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103-F08-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103-F08-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103-F08-1/tp[master]","outputFolderName":"AY2324S2-CS2103-F08-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103-F09-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103-F09-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103-F09-3/tp[master]","outputFolderName":"AY2324S2-CS2103-F09-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103-F08-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103-F08-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103-F08-4/tp[master]","outputFolderName":"AY2324S2-CS2103-F08-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W08-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W08-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W08-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-W08-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T13-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T13-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T13-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-T13-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T11-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T11-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T11-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-T11-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T17-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T17-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T17-4/tp[master]","outputFolderName":"AY2324S2-CS2103T-T17-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W12-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W12-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W12-4/tp[master]","outputFolderName":"AY2324S2-CS2103T-W12-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T12-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T12-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T12-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-T12-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T10-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T10-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T10-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-T10-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F10-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F10-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F10-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-F10-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W13-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W13-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W13-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-W13-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T09-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T09-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T09-4/tp[master]","outputFolderName":"AY2324S2-CS2103T-T09-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T14-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T14-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T14-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-T14-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T16-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T16-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T16-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-T16-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T10-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T10-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T10-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-T10-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T17-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T17-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T17-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-T17-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F13-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F13-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F13-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-F13-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F14-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F14-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F14-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-F14-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T11-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T11-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T11-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-T11-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F11-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F11-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F11-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-F11-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T08-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T08-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T08-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-T08-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W12-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W12-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W12-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-W12-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W08-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W08-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W08-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-W08-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W10-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W10-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W10-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-W10-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F12-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F12-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F12-4/tp[master]","outputFolderName":"AY2324S2-CS2103T-F12-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W11-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W11-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W11-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-W11-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W08-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W08-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W08-4/tp[master]","outputFolderName":"AY2324S2-CS2103T-W08-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T09-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T09-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T09-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-T09-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W11-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W11-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W11-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-W11-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W11-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W11-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W11-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-W11-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T12-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T12-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T12-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-T12-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F11-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F11-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F11-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-F11-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T11-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T11-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T11-4/tp[master]","outputFolderName":"AY2324S2-CS2103T-T11-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T10-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T10-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T10-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-T10-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F14-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F14-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F14-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-F14-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T08-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T08-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T08-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-T08-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W09-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W09-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W09-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-W09-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T11-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T11-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T11-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-T11-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W10-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W10-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W10-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-W10-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F10-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F10-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F10-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-F10-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T13-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T13-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T13-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-T13-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T13-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T13-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T13-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-T13-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F13-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F13-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F13-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-F13-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T12-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T12-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T12-4/tp[master]","outputFolderName":"AY2324S2-CS2103T-T12-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T08-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T08-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T08-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-T08-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T12-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T12-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T12-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-T12-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T09-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T09-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T09-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-T09-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W12-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W12-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W12-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-W12-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F10-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F10-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F10-4/tp[master]","outputFolderName":"AY2324S2-CS2103T-F10-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F13-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F13-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F13-4/tp[master]","outputFolderName":"AY2324S2-CS2103T-F13-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T15-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T15-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T15-4/tp[master]","outputFolderName":"AY2324S2-CS2103T-T15-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T13-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T13-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T13-4/tp[master]","outputFolderName":"AY2324S2-CS2103T-T13-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F11-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F11-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F11-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-F11-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W09-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W09-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W09-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-W09-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F12-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F12-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F12-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-F12-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T17-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T17-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T17-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-T17-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T15-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T15-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T15-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-T15-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T16-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T16-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T16-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-T16-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W13-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W13-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W13-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-W13-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W10-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W10-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W10-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-W10-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T15-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T15-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T15-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-T15-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W12-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W12-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W12-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-W12-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T09-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T09-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T09-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-T09-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T17-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T17-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T17-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-T17-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W13-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W13-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W13-4/tp[master]","outputFolderName":"AY2324S2-CS2103T-W13-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W08-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W08-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W08-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-W08-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F11-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F11-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F11-4/tp[master]","outputFolderName":"AY2324S2-CS2103T-F11-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T16-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T16-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T16-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-T16-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F10-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F10-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F10-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-F10-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W09-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W09-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W09-4/tp[master]","outputFolderName":"AY2324S2-CS2103T-W09-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T15-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T15-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T15-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-T15-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W09-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W09-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W09-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-W09-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F14-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F14-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F14-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-F14-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W13-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W13-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W13-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-W13-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F13-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F13-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F13-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-F13-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W10-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W10-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W10-4/tp[master]","outputFolderName":"AY2324S2-CS2103T-W10-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F12-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F12-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F12-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-F12-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F12-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F12-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F12-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-F12-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F14-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F14-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F14-4/tp[master]","outputFolderName":"AY2324S2-CS2103T-F14-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T16-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T16-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T16-4/tp[master]","outputFolderName":"AY2324S2-CS2103T-T16-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T14-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T14-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T14-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-T14-1_tp_master"}],"errorSet":[],"sinceDate":"2024-02-23","untilDate":"2024-03-22","isSinceDateProvided":true,"isUntilDateProvided":false,"supportedDomainUrlMap":{"NOT_RECOGNIZED":{"BRANCH":"","REPO_URL":"UNSUPPORTED","BASE_URL":"UNSUPPORTED","HISTORY_PATH":"","COMMIT_PATH":"","BLAME_PATH":""},"github":{"BRANCH":"tree/$BRANCH","REPO_URL":"https://github.com/$ORGANIZATION/$REPO_NAME/","BASE_URL":"https://github.com/","HISTORY_PATH":"commits/$BRANCH/$FILE_PATH","COMMIT_PATH":"commit/$COMMIT_HASH","BLAME_PATH":"blame/$BRANCH/$FILE_PATH"}}} +{"repoSenseVersion":"cc0651f0e3","reportGeneratedTime":"Fri Mar 22 22:19:08 2024 UTC+08:00","reportGenerationTime":" 1 minute(s) 23.54 second(s)","zoneId":"UTC+08:00","reportTitle":"CS2103 tP Code Dashboard","repos":[{"location":{"location":"https://github.com/AY2324S2-CS2103-T14-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103-T14-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103-T14-1/tp[master]","outputFolderName":"AY2324S2-CS2103-T14-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103-F15-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103-F15-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103-F15-2/tp[master]","outputFolderName":"AY2324S2-CS2103-F15-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103-F15-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103-F15-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103-F15-3/tp[master]","outputFolderName":"AY2324S2-CS2103-F15-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103-F09-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103-F09-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103-F09-4/tp[master]","outputFolderName":"AY2324S2-CS2103-F09-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103-F15-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103-F15-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103-F15-4/tp[master]","outputFolderName":"AY2324S2-CS2103-F15-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103-F15-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103-F15-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103-F15-1/tp[master]","outputFolderName":"AY2324S2-CS2103-F15-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103-F08-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103-F08-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103-F08-3/tp[master]","outputFolderName":"AY2324S2-CS2103-F08-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103-F09-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103-F09-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103-F09-2/tp[master]","outputFolderName":"AY2324S2-CS2103-F09-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103-F09-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103-F09-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103-F09-1/tp[master]","outputFolderName":"AY2324S2-CS2103-F09-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103-F08-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103-F08-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103-F08-2/tp[master]","outputFolderName":"AY2324S2-CS2103-F08-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103-F08-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103-F08-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103-F08-1/tp[master]","outputFolderName":"AY2324S2-CS2103-F08-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103-F09-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103-F09-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103-F09-3/tp[master]","outputFolderName":"AY2324S2-CS2103-F09-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103-F08-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103-F08-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103-F08-4/tp[master]","outputFolderName":"AY2324S2-CS2103-F08-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W08-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W08-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W08-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-W08-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T13-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T13-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T13-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-T13-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T11-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T11-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T11-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-T11-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T17-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T17-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T17-4/tp[master]","outputFolderName":"AY2324S2-CS2103T-T17-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W12-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W12-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W12-4/tp[master]","outputFolderName":"AY2324S2-CS2103T-W12-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T12-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T12-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T12-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-T12-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T10-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T10-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T10-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-T10-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F10-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F10-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F10-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-F10-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W13-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W13-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W13-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-W13-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T09-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T09-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T09-4/tp[master]","outputFolderName":"AY2324S2-CS2103T-T09-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T14-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T14-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T14-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-T14-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T16-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T16-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T16-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-T16-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T10-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T10-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T10-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-T10-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T17-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T17-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T17-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-T17-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F13-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F13-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F13-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-F13-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F14-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F14-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F14-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-F14-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T11-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T11-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T11-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-T11-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F11-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F11-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F11-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-F11-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T08-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T08-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T08-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-T08-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W12-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W12-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W12-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-W12-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W08-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W08-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W08-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-W08-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W10-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W10-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W10-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-W10-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F12-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F12-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F12-4/tp[master]","outputFolderName":"AY2324S2-CS2103T-F12-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W11-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W11-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W11-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-W11-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W08-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W08-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W08-4/tp[master]","outputFolderName":"AY2324S2-CS2103T-W08-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T09-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T09-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T09-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-T09-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W11-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W11-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W11-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-W11-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W11-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W11-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W11-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-W11-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T12-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T12-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T12-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-T12-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F11-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F11-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F11-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-F11-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T11-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T11-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T11-4/tp[master]","outputFolderName":"AY2324S2-CS2103T-T11-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T10-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T10-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T10-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-T10-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F14-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F14-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F14-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-F14-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T08-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T08-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T08-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-T08-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W09-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W09-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W09-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-W09-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T11-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T11-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T11-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-T11-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W10-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W10-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W10-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-W10-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F10-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F10-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F10-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-F10-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T13-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T13-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T13-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-T13-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T13-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T13-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T13-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-T13-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F13-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F13-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F13-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-F13-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T12-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T12-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T12-4/tp[master]","outputFolderName":"AY2324S2-CS2103T-T12-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T08-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T08-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T08-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-T08-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T12-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T12-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T12-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-T12-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T09-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T09-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T09-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-T09-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W12-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W12-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W12-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-W12-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F10-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F10-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F10-4/tp[master]","outputFolderName":"AY2324S2-CS2103T-F10-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F13-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F13-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F13-4/tp[master]","outputFolderName":"AY2324S2-CS2103T-F13-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T15-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T15-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T15-4/tp[master]","outputFolderName":"AY2324S2-CS2103T-T15-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T13-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T13-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T13-4/tp[master]","outputFolderName":"AY2324S2-CS2103T-T13-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F11-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F11-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F11-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-F11-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W09-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W09-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W09-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-W09-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F12-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F12-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F12-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-F12-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T17-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T17-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T17-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-T17-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T15-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T15-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T15-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-T15-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T16-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T16-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T16-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-T16-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W13-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W13-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W13-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-W13-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W10-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W10-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W10-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-W10-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T15-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T15-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T15-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-T15-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W12-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W12-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W12-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-W12-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T09-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T09-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T09-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-T09-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T17-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T17-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T17-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-T17-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W13-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W13-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W13-4/tp[master]","outputFolderName":"AY2324S2-CS2103T-W13-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W08-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W08-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W08-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-W08-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F11-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F11-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F11-4/tp[master]","outputFolderName":"AY2324S2-CS2103T-F11-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T16-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T16-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T16-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-T16-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F10-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F10-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F10-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-F10-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W09-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W09-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W09-4/tp[master]","outputFolderName":"AY2324S2-CS2103T-W09-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T15-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T15-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T15-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-T15-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W09-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W09-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W09-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-W09-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F14-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F14-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F14-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-F14-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W13-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W13-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W13-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-W13-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F13-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F13-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F13-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-F13-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W10-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W10-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W10-4/tp[master]","outputFolderName":"AY2324S2-CS2103T-W10-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F12-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F12-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F12-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-F12-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F12-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F12-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F12-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-F12-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F14-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F14-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F14-4/tp[master]","outputFolderName":"AY2324S2-CS2103T-F14-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T16-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T16-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T16-4/tp[master]","outputFolderName":"AY2324S2-CS2103T-T16-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T14-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T14-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T14-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-T14-1_tp_master"}],"errorSet":[],"sinceDate":"2024-02-23","untilDate":"2024-03-22","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"}}}